diff --git a/.github/workflows/build-changelog.yml b/.github/workflows/build-changelog.yml index b359fc427da..30196c5c1ff 100644 --- a/.github/workflows/build-changelog.yml +++ b/.github/workflows/build-changelog.yml @@ -2,7 +2,7 @@ name: Build changelog on: push: tags: - - "*" + - "08.2023" jobs: release: @@ -31,8 +31,6 @@ jobs: } ] }' - fromTag: "07.2023" - toTag: "08.2023" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/_config.yml b/_config.yml index 228fa9bd3b6..3b0ff19e08b 100644 --- a/_config.yml +++ b/_config.yml @@ -172,7 +172,6 @@ defaults: role: "all" versions: - '201811.0': '201811.0' '201903.0': '201903.0' '201907.0': '201907.0' '202001.0': '202001.0' diff --git a/_data/sidebars/scos_dev_sidebar.yml b/_data/sidebars/scos_dev_sidebar.yml index d42b1770421..53751917956 100644 --- a/_data/sidebars/scos_dev_sidebar.yml +++ b/_data/sidebars/scos_dev_sidebar.yml @@ -11,7 +11,6 @@ entries: - title: System requirements url: /docs/scos/dev/system-requirements/system-requirements.html include_versions: - - "202108.0" - "202204.0" - "202212.0" - "202307.0" @@ -83,18 +82,15 @@ entries: - title: Feature walkthroughs url: /docs/scos/dev/feature-walkthroughs/feature-walkthroughs.html include_versions: - - "202108.0" - "202204.0" nested: - title: Agent Assist url: /docs/scos/dev/feature-walkthroughs/agent-assist-feature-walkthrough.html include_versions: - - "202108.0" - "202204.0" - title: Alternative Products url: /docs/scos/dev/feature-walkthroughs/alternative-products-feature-walkthrough.html include_versions: - - "202108.0" - "202204.0" - title: Approval Process url: /docs/scos/dev/feature-walkthroughs/approval-process-feature-walkthrough.html @@ -999,14 +995,14 @@ entries: - "201907.0" - "202108.0" - "202204.0" - - title: Dynamic data API + - title: Data Exchange API include_versions: - "202307.0" nested: - - title: How to send a request in Dynamic Data API - url: /docs/scos/dev/glue-api-guides/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.html - - title: How to configure Dynamic Data API endpoints. - url: /docs/scos/dev/glue-api-guides/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.html + - title: How to send a request in Data Exchange API + url: /docs/scos/dev/glue-api-guides/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.html + - title: How to configure Data Exchange API endpoints. + url: /docs/scos/dev/glue-api-guides/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.html - title: Feature integration guides url: /docs/scos/dev/feature-integration-guides/feature-integration-guides.html include_versions: @@ -1378,8 +1374,8 @@ entries: url: /docs/scos/dev/feature-integration-guides/glue-api/decoupled-glue-infrastructure/glue-api-documentation-generation.html include_versions: - "202204.0" - - title: Dynamic Data API integration - url: /docs/scos/dev/feature-integration-guides/glue-api/dynamic-data-api/dynamic-data-api-integration.html + - title: Data Exchange API integration + url: /docs/scos/dev/feature-integration-guides/glue-api/dynamic-data-api/data-exchange-api-integration.html include_versions: - "202307.0" - title: Agent Assist @@ -3385,26 +3381,28 @@ entries: - "202212.0" - "202307.0" nested: - - title: "Oryx: Compositions" - url: /docs/scos/dev/front-end-development/oryx/oryx-compositions.html - title: Set up url: /docs/scos/dev/front-end-development/oryx/set-up-oryx.html - title: Boilerplate url: /docs/scos/dev/front-end-development/oryx/oryx-boilerplate.html - title: Feature sets url: /docs/scos/dev/front-end-development/oryx/oryx-feature-sets.html + - title: Presets + url: /docs/scos/dev/front-end-development/oryx/oryx-presets.html - title: Packages url: /docs/scos/dev/front-end-development/oryx/oryx-packages.html + - title: Versioning + url: /docs/scos/dev/front-end-development/oryx/oryx-versioning.html + - title: "Pages" + url: /docs/scos/dev/front-end-development/oryx/building-pages/oryx-pages.html + - title: "Compositions" + url: /docs/scos/dev/front-end-development/oryx/building-pages/oryx-compositions.html - title: Routing - url: /docs/scos/dev/front-end-development/oryx/oryx-routing.html + url: /docs/scos/dev/front-end-development/oryx/building-pages/oryx-routing.html - title: Server-side rendering url: /docs/scos/dev/front-end-development/oryx/oryx-server-side-rendering.html - - title: Versioning - url: /docs/scos/dev/front-end-development/oryx/oryx-versioning.html - - title: Presets - url: /docs/scos/dev/front-end-development/oryx/oryx-presets.html - title: Localization - url: /docs/scos/dev/front-end-development/oryx/oryx-localization.html + url: /docs/scos/dev/front-end-development/oryx/oryx-localization.html - title: Supported browsers url: /docs/scos/dev/front-end-development/oryx/oryx-supported-browsers.html - title: Dependency injection @@ -3452,7 +3450,7 @@ entries: - title: Design tokens url: /docs/scos/dev/front-end-development/oryx/styling/oryx-design-tokens.html - title: Icon system - url: /docs/scos/dev/front-end-development/oryx/styling/oryx-icon-system.html + url: /docs/scos/dev/front-end-development/oryx/styling/oryx-icon-system.html - title: Typography url: /docs/scos/dev/front-end-development/oryx/styling/oryx-typography.html @@ -4029,20 +4027,20 @@ entries: - title: ARM architecture (M1 chip) url: /docs/scos/dev/technical-enhancement-integration-guides/switch-to-arm-architecture-m1-chip.html - title: Zed API - url: /docs/scos/dev/sdk/zed-api/zed-api.html + url: /docs/scos/dev/zed-api/zed-api.html nested: - title: Project implementation - Zed API - url: /docs/scos/dev/sdk/zed-api/zed-api-project-implementation.html + url: /docs/scos/dev/zed-api/zed-api-project-implementation.html - title: Zed API configuration - url: /docs/scos/dev/sdk/zed-api/zed-api-configuration.html + url: /docs/scos/dev/zed-api/zed-api-configuration.html - title: CRUD functionality - Zed API - url: /docs/scos/dev/sdk/zed-api/zed-api-crud-functionality.html + url: /docs/scos/dev/zed-api/zed-api-crud-functionality.html - title: Processor stack - Zed API - url: /docs/scos/dev/sdk/zed-api/zed-api-processor-stack.html + url: /docs/scos/dev/zed-api/zed-api-processor-stack.html - title: Zed API resources - url: /docs/scos/dev/sdk/zed-api/zed-api-resources.html + url: /docs/scos/dev/zed-api/zed-api-resources.html - title: Zed API (BETA) - url: /docs/scos/dev/sdk/zed-api/zed-api-beta.html + url: /docs/scos/dev/sdk/zed-api/zed-api-beta.html - title: Code generator url: /docs/scos/dev/sdk/code-generator.html include_versions: @@ -4842,7 +4840,7 @@ entries: - title: Plugin registration with restrictions url: /docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/plugin-registration-with-restrintions.html - title: Security checker - url: /docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.html + url: /docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.html - title: Single plugin argument url: /docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/single-plugin-argument.html - title: Performance guidelines diff --git a/_data/sidebars/scos_user_sidebar.yml b/_data/sidebars/scos_user_sidebar.yml index 7e884b36828..1974bf91f9d 100644 --- a/_data/sidebars/scos_user_sidebar.yml +++ b/_data/sidebars/scos_user_sidebar.yml @@ -38,11 +38,6 @@ entries: url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202211.0/release-notes-202211.0.html - title: Release notes 202204.0 url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202204.0/release-notes-202204.0.html - - title: Release notes 202108.0 - url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202108.0/release-notes-202108.0.html - nested: - - title: Security release notes 202108.0 - url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202108.0/security-release-notes-202108.0.html - title: Release notes 202009.0 url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202009.0/release-notes-202009.0.html nested: @@ -79,11 +74,6 @@ entries: url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-201903.0/security-release-notes-201903.0.html - title: Release notes 2018.12.0 url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.12.0.html - - title: Release notes 2018.11.0 - url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/release-notes-2018.11.0.html - nested: - - title: Security release notes 2018.11.0 - url: /docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.html - title: Docs release notes url: /docs/scos/user/intro-to-spryker/docs-release-notes.html - title: What's new diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-availability-notification-feature.md index 8e926be9ce5..8206a663a61 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-availability-notification-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} This document describes how to install Dynamic Store + the Availability Notification feature. diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cart-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cart-feature.md index 8b6c57e9dfd..fbc3c493f16 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cart-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cart-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} This document describes how to install Dynamic Store + the Cart feature. diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cms-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cms-feature.md index 027285bd23c..f7ef4a331e4 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cms-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-cms-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-customer-account-management-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-customer-account-management-feature.md index 10c761c832c..ab010f5a665 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-customer-account-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-customer-account-management-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-prices-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-prices-feature.md index 62bc94cd394..dedcbc24946 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-prices-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-prices-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-product-feature.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-product-feature.md index 363c75550dc..6eacf8dbdbf 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-product-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore-the-product-feature.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md index 6566eb033e4..b448a98cd62 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-portal-core-dynamic-multistore.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-portal-core-dynamic-multistore.md index 15add0e9e1d..9684277a940 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-portal-core-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-portal-core-dynamic-multistore.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-availability-feature.md b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-availability-feature.md new file mode 100644 index 00000000000..cdefec864a4 --- /dev/null +++ b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-availability-feature.md @@ -0,0 +1,122 @@ + + +This document describes how to integrate the Product Offer Service Points Availability feature into a Spryker project. + +## Install feature core + +Follow the steps below to install the Product Offer Service Points Availability feature. + +### Prerequisites + +To start feature integration, integrate the required features: + +| NAME | VERSION | INTEGRATION GUIDE | +|----------------------------------|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Product Offer Service Points | {{page.version}} | [Install the Product Offer Service Points feature](/docs/pbc/all/offer-management/{{page.version}}/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-feature.html) | +| Marketplace Inventory Management | {{page.version}} | [Marketplace Inventory Management feature integration](/docs/pbc/all/warehouse-management-system/{{page.version}}/marketplace/install-features/install-the-marketplace-inventory-management-feature.html) | + +### 1) Install the required modules using Composer + +```bash +composer require spryker-feature/product-offer-service-points-availability: "{{page.version}}" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|-----------------------------------------------|-------------------------------------------------------------------| +| ProductOfferServicePointAvailability | vendor/spryker/product-offer-service-point-availability | +| ProductOfferServicePointAvailabilityExtension | vendor/spryker/product-offer-service-point-availability-extension | + +{% endinfo_block %} + + +### 2) Set up transfer objects + +Generate transfer changes: + +```bash +console transfer:generate +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following changes have been applied in transfer objects: + +| TRANSFER | TYPE | EVENT | PATH | +|--------------------------------------------------|-------|---------|----------------------------------------------------------------------------------------| +| ProductOfferCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferCriteriaTransfer | +| ProductAvailabilityCriteria | class | created | src/Generated/Shared/Transfer/ProductAvailabilityCriteriaTransfer | +| ServicePoint | class | created | src/Generated/Shared/Transfer/ServicePointTransfer | +| SellableItemRequest | class | created | src/Generated/Shared/Transfer/SellableItemRequestTransfer | +| ProductOfferConditions | class | created | src/Generated/Shared/Transfer/ProductOfferConditionsTransfer | +| SellableItemsResponse | class | created | src/Generated/Shared/Transfer/SellableItemsResponseTransfer | +| SellableItemResponse | class | created | src/Generated/Shared/Transfer/SellableItemResponseTransfer | +| SellableItemsRequest | class | created | src/Generated/Shared/Transfer/SellableItemsRequestTransfer | +| ProductOfferCollection | class | created | src/Generated/Shared/Transfer/ProductOfferCollectionTransfer | +| ProductOfferServiceCollection | class | created | src/Generated/Shared/Transfer/ProductOfferServiceCollectionTransfer | +| ProductOfferServiceCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferServiceCriteriaTransfer | +| ProductOfferServiceConditions | class | created | src/Generated/Shared/Transfer/ProductOfferServiceConditionsTransfer | +| ProductOffer | class | created | src/Generated/Shared/Transfer/ProductOfferTransfer | +| ProductOfferServices | class | created | src/Generated/Shared/Transfer/ProductOfferServicesTransfer | +| Service | class | created | src/Generated/Shared/Transfer/ServiceTransfer | +| ProductOfferServicePointAvailabilityRequestItem | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityRequestItemTransfer | +| ProductOfferServicePointAvailabilityConditions | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityConditionsTransfer | +| ProductOfferServicePointAvailabilityCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityCriteriaTransfer | +| ProductOfferServicePointAvailabilityResponseItem | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityResponseItemTransfer | +| ProductOfferServicePointAvailabilityCollection | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityCollectionTransfer | +| ProductOfferStorage | class | created | src/Generated/Shared/Transfer/ProductOfferStorageTransfer | +| ServiceStorage | class | created | src/Generated/Shared/Transfer/ServiceStorageTransfer | +| ServiceTypeStorage | class | created | src/Generated/Shared/Transfer/ServiceTypeStorageTransfer | +| ProductOfferAvailabilityStorage | class | created | src/Generated/Shared/Transfer/ProductOfferAvailabilityStorageTransfer | +| ProductOfferStorageCollection | class | created | src/Generated/Shared/Transfer/ProductOfferStorageCollectionTransfer | +| ProductOfferStorageCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferStorageCriteriaTransfer | +| ServicePointStorage | class | created | src/Generated/Shared/Transfer/ServicePointStorageTransfer | + +{% endinfo_block %} + +## Set up behavior + +Register the availability plugin: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|---------------------------------------------------------|-------------------------------------------------|---------------|-------------------------------------------------------------------------------------| +| ProductOfferServicePointBatchAvailabilityStrategyPlugin | Validates service point for the product offer. | None | Spryker\Zed\ProductOfferServicePointAvailability\Communication\Plugin\Availability\ProductOfferServicePointBatchAvailabilityStrategyPlugin | + +**src/Pyz/Zed/Availability/AvailabilityDependencyProvider.php** + +```php + + */ + protected function getBatchAvailabilityStrategyPlugins(): array + { + return [ + new ProductOfferServicePointBatchAvailabilityStrategyPlugin(), // Needs to be before ProductConcreteBatchAvailabilityStrategyPlugin + ]; + } +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that the availability plugin works correctly: + +1. Add a product offer with the service point to your cart. + +2. Go to `spy_product_offer_service` and delete the connection between the product offer and the service point. + +3. Try to create an order. You should see the error message that the product isn't available at the moment. + +{% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-feature.md b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-feature.md index 4ad88040c89..7997f5020f2 100644 --- a/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-feature.md +++ b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-service-points-feature.md @@ -110,6 +110,7 @@ Make sure that the following changes have been applied in transfer objects: | IterableProductOfferServicesConditions | class | created | src/Generated/Shared/Transfer/IterableProductOfferServicesConditionsTransfer | | ProductOfferServiceStorage | class | created | src/Generated/Shared/Transfer/ProductOfferServiceStorageTransfer | | ProductOfferServiceStorageCollection | class | created | src/Generated/Shared/Transfer/ProductOfferServiceStorageCollectionTransfer | +| ServiceStorageCollection | class | created | src/Generated/Shared/Transfer/ServiceStorageCollectionTransfer | | ServicePointStorageCollection | class | created | src/Generated/Shared/Transfer/ServicePointStorageCollectionTransfer | | ServicePointStorageCriteria | class | created | src/Generated/Shared/Transfer/ServicePointStorageCriteriaTransfer | | ServicePointStorageConditions | class | created | src/Generated/Shared/Transfer/ServicePointStorageConditionsTransfer | diff --git a/_includes/pbc/all/install-features/202400.0/install-the-product-offer-shipments-availability-feature.md b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-shipments-availability-feature.md new file mode 100644 index 00000000000..22afae9b3da --- /dev/null +++ b/_includes/pbc/all/install-features/202400.0/install-the-product-offer-shipments-availability-feature.md @@ -0,0 +1,147 @@ + + +This document describes how to integrate the Product Offer Shipments Availability feature into a Spryker project. + +## Install feature core + +Follow the steps below to install the Product Offer Shipments Availability feature. + +### Prerequisites + +To start feature integration, integrate the required features: + +| NAME | VERSION | INTEGRATION GUIDE | +|-------------------------------------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Product Offer Service Points Availability | {{page.version}} | [Install the Product Offer Service Points Availability feature](/docs/pbc/all/service-points/{{page.version}}/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-availability-feature.html) | +| Shipment | {{page.version}} | [Shipment feature integration](/docs/pbc/all/carrier-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-shipment-feature.html) | + +### 1) Install the required modules using Composer + +```bash +composer require spryker-feature/product-offer-shipment-availability: "{{page.version}}" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|-----------------------------------------------|----------------------------------------------------| +| ProductOfferShipmentAvailability | vendor/spryker/product-offer-shipment-availability | + +{% endinfo_block %} + + +### 2) Set up transfer objects + +Generate transfer changes: + +```bash +console transfer:generate +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following changes have been applied in transfer objects: + +| TRANSFER | TYPE | EVENT | PATH | +|--------------------------------------------------------|-------|---------|----------------------------------------------------------------------------------------| +| ProductOfferCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferCriteriaTransfer | +| ProductAvailabilityCriteria | class | created | src/Generated/Shared/Transfer/ProductAvailabilityCriteriaTransfer | +| ShipmentType | class | created | src/Generated/Shared/Transfer/ShipmentTypeTransfer | +| SellableItemRequest | class | created | src/Generated/Shared/Transfer/SellableItemRequestTransfer | +| ProductOfferConditions | class | created | src/Generated/Shared/Transfer/ProductOfferConditionsTransfer | +| SellableItemsResponse | class | created | src/Generated/Shared/Transfer/SellableItemsResponseTransfer | +| SellableItemResponse | class | created | src/Generated/Shared/Transfer/SellableItemResponseTransfer | +| SellableItemsRequest | class | created | src/Generated/Shared/Transfer/SellableItemsRequestTransfer | +| ProductOfferCollection | class | created | src/Generated/Shared/Transfer/ProductOfferCollectionTransfer | +| ProductOffer | class | created | src/Generated/Shared/Transfer/ProductOfferTransfer | +| ProductOfferShipmentTypeCollection | class | created | src/Generated/Shared/Transfer/ProductOfferShipmentTypeCollectionTransfer | +| ProductOfferShipmentTypeCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferShipmentTypeCriteriaTransfer | +| ProductOfferShipmentTypeConditions | class | created | src/Generated/Shared/Transfer/ProductOfferShipmentTypeConditionsTransfer | +| ProductOfferShipmentType | class | created | src/Generated/Shared/Transfer/ProductOfferShipmentTypeTransfer | +| ProductOfferServicePointAvailabilityConditions | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityConditionsTransfer | +| ProductOfferServicePointAvailabilityCollection | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityCollectionTransfer | +| ProductOfferServicePointAvailabilityCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityCriteriaTransfer | +| ProductOfferServicePointAvailabilityResponseItem | class | created | src/Generated/Shared/Transfer/ProductOfferServicePointAvailabilityResponseItemTransfer | +| ProductOfferStorage | class | created | src/Generated/Shared/Transfer/ProductOfferStorageTransfer | +| ShipmentTypeStorage | class | created | src/Generated/Shared/Transfer/ShipmentTypeStorageTransfer | +| ShipmentTypeStorageConditions | class | created | src/Generated/Shared/Transfer/ShipmentTypeStorageConditionsTransfer | +| ShipmentTypeStorageCriteria | class | created | src/Generated/Shared/Transfer/ShipmentTypeStorageCriteriaTransfer | +| ShipmentTypeStorageCollection | class | created | src/Generated/Shared/Transfer/ShipmentTypeStorageCollectionTransfer | + +{% endinfo_block %} + +## Set up behavior + +Register the availability plugin: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|---------------------------------------------------------|------------------------------------------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| ProductOfferShipmentTypeBatchAvailabilityStrategyPlugin | Validates shipment type for the product offer. | None | Spryker\Zed\ProductOfferShipmentTypeAvailability\Communication\Plugin\Availability\ProductOfferShipmentTypeBatchAvailabilityStrategyPlugin | + +**src/Pyz/Zed/Availability/AvailabilityDependencyProvider.php** + +```php + + */ + protected function getBatchAvailabilityStrategyPlugins(): array + { + return [ + new ProductOfferShipmentTypeBatchAvailabilityStrategyPlugin(), // Needs to be before ProductConcreteBatchAvailabilityStrategyPlugin + ]; + } +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that availability plugin works correctly: + +1. Add a product offer with the shipment type to your cart. + +2. Go to `spy_product_offer_shipment_type` and delete the connection between the product offer and the service point. + +3. Try to create an order. You should see the error message that the product isn't available at the moment. + +{% endinfo_block %} + +2. Register the availability filter plugin: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|---------------------------------------------------------------|-------------------------------------------------------------------|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ShipmentTypeProductOfferServicePointAvailabilityFilterPlugin | Filters product offer service point availability by shipmen type. | None | Spryker\Client\ProductOfferShipmentTypeAvailability\Plugin\ProductOfferServicePointAvailability\ShipmentTypeProductOfferServicePointAvailabilityFilterPlugin | + +**src/Pyz/Client/ProductOfferServicePointAvailability/ProductOfferServicePointAvailabilityDependencyProvider.php** + +```php + + */ + protected function getProductOfferServicePointAvailabilityFilterPlugins(): array + { + return [ + new ShipmentTypeProductOfferServicePointAvailabilityFilterPlugin(), + ]; + } +} +``` diff --git a/_includes/pbc/all/install-glue-api/202307.0/install-the-dynamic-multistore-glue-api.md b/_includes/pbc/all/install-glue-api/202307.0/install-the-dynamic-multistore-glue-api.md index 8ff29fc0cd0..e4b1688783a 100644 --- a/_includes/pbc/all/install-glue-api/202307.0/install-the-dynamic-multistore-glue-api.md +++ b/_includes/pbc/all/install-glue-api/202307.0/install-the-dynamic-multistore-glue-api.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-country-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-country-module.md index 73788e83757..ad0d94d7f44 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-country-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-country-module.md @@ -4,7 +4,7 @@ This document describes how to upgrade the Country module. {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-currency-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-currency-module.md index b8e3d7f4830..95fb446989e 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-currency-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-currency-module.md @@ -4,7 +4,7 @@ This document describes how to upgrade the Currency module. {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-locale-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-locale-module.md index e5f5bed08ae..c4e63996119 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-locale-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-locale-module.md @@ -1,6 +1,6 @@ {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/docs/marketplace/dev/data-export/202108.0/data-export-merchant-orders-csv-files-format.md b/docs/marketplace/dev/data-export/202108.0/data-export-merchant-orders-csv-files-format.md deleted file mode 100644 index 3ffd4d9799d..00000000000 --- a/docs/marketplace/dev/data-export/202108.0/data-export-merchant-orders-csv-files-format.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Data export Merchant Orders CSV files format -last_updated: May 27, 2021 -description: This document contains content of merchant-orders, merchant order-items, and merchant-order-expenses. -template: import-file-template ---- - -This document contains content of the following files you get when [exporting data on orders](/docs/scos/dev/data-export/{{page.version}}/data-export.html) generated in Spryker: - -* merchant-orders -* merchant-order-items -* merchant-order-expenses - -## Merchant orders - -These are the parameters included in the `merchant_orders.csv` file: - -| DEFAULT SEQUENCE | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| 1 | merchant_order_reference | ✓ | String | Unique | Merchant order reference identifier. | -| 2 | marketplace_order_reference | ✓ | String | Unique | Marketplace order reference identifier. | -| 3 | customer_reference | | String | | Customer reference identifier. | -| 4 | merchant_order_created_at | | Date Time | | Merchant order creation date. | -| 5 | merchant_order_updated_at | | Date Time | | Last update date of the merchant order. | -| 6 | merchant_order_store | | String | | Name of the store where the order to this merchant was placed. | -| 7 | email | | String | | Email of the customer. | -| 8 | salutation | | String | | Salutation used with the customer. | -| 9 | first_name | | String | | Customer’s first name. | -| 10 | last_name | | String | | Customer’s last name. | -| 11 | order_note | | String | | Note added to the order. | -| 12 | currency_iso_code | | String | | Indicates the currency used in the order. | -| 13 | price_mode | | Enum (NET_MODE, GROSS_MODE) | | Indicates if the order was calculated in a net or gross price mode. | -| 14 | locale_name | | String | | Sales order’s locale used during the checkout. The sales order has a relation to the locale used during the checkout so that the same locale can be used for communication. | -| 15 | billing_address_salutation | | | | Customer salutation used with the billing address. | -| 16 | billing_address_first_name | ✓ | String | | Customer’s first name used in the billing address. | -| 17 | billing_address_last_name | ✓ | String | | Customer’s last name used in the billing address. | -| 18 | billing_address_middle_name | | String | | Customer’s middle name used in the billing address. | -| 19 | billing_address_email | | String | | Email used with the billing address. | -| 20 | billing_address_cell_phone | | String | | Cell phone used with the billing address. | -| 21 | billing_address_phone | | String | | Phone used with the billing address. | -| 22 | billing_address_address1 | | String | | First line of the billing address. The billing address is the address to which the invoice or bill is registered. | -| 23 | billing_address_address2 | | String | | Second line of the billing address. | -| 24 | billing_address_address3 | | String | | Third line of the billing address. | -| 25 | billing_address_city | ✓ | String | | City of the billing address. | -| 26 | billing_address_zip_code | ✓ | String | | Zip code of the billing address. | -| 27 | billing_address_po_box | | String | | P.O. Box of the billing address. | -| 28 | billing_address_company | | String | | Company used in the billing address. | -| 29 | billing_address_description | | String | | Description used with the billing address. | -| 30 | billing_address_comment | | String | | Comment used with the billing address. | -| 31 | billing_address_country | ✓ | String | | Country of the billing address. | -| 32 | billing_address_region | | String | | Region of the billing address. | -| 33 | merchant_order_totals_canceled_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Cancelled total of the order totals for this merchant. | -| 34 | merchant_order_totals_discount_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Discount total of the order totals for this merchant. | -| 35 | merchant_order_totals_grand_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Grand total of the order totals for this merchant. | -| 36 | merchant_order_totals_order_expense_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Order expense total of the order totals for this merchant. | -| 37 | merchant_order_totals_refund_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Refund total of the order totals for this merchant. | -| 38 | merchant_order_totals_subtotal | | Number | Original value is multiplied by 100 before it is stored in this field. | Subtotal of the order totals for this merchant. | -| 39 | merchant_order_totals_tax_total | | Number | Original value is multiplied by 100 before it is stored in this field. | Tax total of the order totals for this merchant. | -| 40 | merchant_order_comments | | Object | Comments are presented in a JSON array format: order_comments {% raw %}{{username, message, created_at, updated_at},...}{% endraw %} | Comments added by the customer to the sales order for this merchant. Username may be a different name from the customer’s first, middle, or last name—for example, a nickname. | - -Check out the [merchant-orders.csv sample file](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Development+Guide/Data+Export/merchant-orders.csv). - -## Merchant order items - -These are the header fields included in the `merchant_order_items.csv` file: - -| DEFAULT SEQUENCE | CSV COLUMN HEADER NAME | REQUIRED | TYPE | OTHER REQUIREMENTS / COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| 1 | merchant_order_reference | ✓ | String | Unique | Merchant order reference identifier | -| 2 | marketplace_order_reference | ✓ | String | Unique | Marketplace order reference identifier. | -| 3 | product_name | | String | | Product name of the merchant order item. | -| 4 | merchant_order_item_reference | | String | Unique | Merchant order item reference | -| 5 | product_sku | ✓ | String | | Product SKU of the ordered item. | -| 6 | canceled_amount | | Number | Default = 0 | Canceled amount of the ordered item. | -| 7 | order_item_note | | String | | Note to the ordered item. | -| 8 | discount_amount_aggregation | | Number | Default = 0 | Discount amount aggregation of the merchant order item. | -| 9 | discount_amount_full_aggregation | | Number | Default = 0 | Discount amount full aggregation of the merchant order item. | -| 10 | expense_price_aggregation | | Number | Default = 0 | Expense price aggregation of the merchant order item. | -| 11 | gross_price | | Number | Original value is multiplied by 100 before it is stored in this field. | Gross price of the ordered item. | -| 12 | net_price | | Number | Original value is multiplied by 100 before it is stored in this field. | Net price of the ordered item. | -| 13 | price | | Number | Original value is multiplied by 100 before it is stored in this field. | Price of the ordered item. | -| 14 | price_to_pay_aggregation | | Number | Original value is multiplied by 100 before it is stored in this field. | Price to pay aggregation of the ordered item. | -| 15 | product_option_price_aggregation | | Number | Original value is multiplied by 100 before it is stored in this field. | Product option price aggregation of the ordered item. | -| 16 | quantity | ✓ | Number | Default = 1 | Quantity of items in this order item. | -| 17 | refundable_amount | | Number | Original value is multiplied by 100 before it is stored in this field. | Refundable amount of the ordered item. | -| 18 | subtotal_aggregation | | Number | Original value is multiplied by 100 before it is stored in this field. | Subtotal aggregation of the ordered item. | -| 19 | tax_amount | | Number | Original value is multiplied by 100 before it is stored in this field. | Tax amount of the ordered item. | -| 20 | tax_amount_after_cancellation | | Number | Original value is multiplied by 100 before it is stored in this field. | Tax amount after the cancellation of the ordered item. | -| 21 | tax_amount_full_aggregation | | Number | Original value is multiplied by 100 before it is stored in this field. | Tax amount full aggregation of the ordered item. | -| 22 | tax_rate | | Number | | Tax rate of the ordered item. | -| 23 | tax_rate_average_aggregation | | Number | | Tax rate average aggregation of the ordered item. | -| 24 | merchant_order_item_created_at | | Date Time | | Merchant order item creation date. | -| 25 | merchant_order_item_updated_at | | Date Time | | Merchant order item update date. | -| 26 | merchant_order_item_state | ✓ | String | | State of this merchant order item according to the merchant state machine. Project-specific states defined in Spryker project state-machine are XXX. | -| 27 | merchant_order_item_state_description | | String | | State description of this merchant order item. | -| 28 | merchant_order_item_process | | String | | Process of this merchant order item. | -| 29 | merchant_order_item_bundle_id | | String | | Bundle product information identifier of the merchant order item. | -| 30 | merchant_order_item_bundle_note | | String | | Note to the ordered item bundle product from this merchant. | -| 31 | merchant_order_item_bundle_gross_price | ✓ | Number | | Gross price of the ordered item bundle product from this merchant. | -| 32 | merchant_order_item_bundle_image | | String | | Image of the order item bundle product from this merchant. | -| 33 | merchant_order_item_bundle_product_name | ✓ | String | | Bundle product name of the merchant order item. | -| 34 | merchant_order_item_bundle_net_price | | Number | | Net price of the ordered item bundle from this merchant. | -| 35 | merchant_order_item_bundle_price | | Number | | Price of the ordered item bundle from this merchant. | -| 36 | merchant_order_item_bundle_product_sku | ✓ | String | | SKU of the product bundle in the merchant order item. | -| 37 | order_shipment_id | | Number | | Order shipment identifier. | -| 38 | shipment_carrier_name | | String | | Name of the shipment carrier. | -| 39 | shipment_delivery_time | | String | | Delivery time of the shipment. | -| 40 | shipment_method_name | | String | | Name of the shipment method. | -| 41 | shipment_requested_delivery_date | | Date | | Requested delivery date of the shipment. | -| 42 | shipping_address_salutation | | String | | Customer salutation used with shipping address. | -| 43 | shipping_address_first_name | | | | Customer’s first name used in the shipping address. | -| 44 | shipping_address_last_name | | String | | Customer’s last name used in the shipping address. | -| 45 | shipping_address_middle_name | | String | | Customer’s middle name used in the shipping address. | -| 46 | shipping_address_email | | String | | Email used with shipping address. | -| 47 | shipping_address_cell_phone | | String | | Cell phone used with shipping address. | -| 48 | shipping_address_phone | | String | | Phone used with the shipping address. | -| 49 | shipping_address_address1 | | String | | Address first line of the shipping address. The shipping address is the address to where the order is shipped. | -| 50 | shipping_address_address2 | | String | | Address second line of the shipping address. | -| 51 | shipping_address_address3 | | String | | Address third line of the shipping address. | -| 52 | shipping_address_city | | String | | City of the shipping address. | -| 53 | shipping_address_zip_code | ✓ | String | | Zip code of the shipping address. | -| 54 | shipping_address_po_box | | String | | P.O. Box of the shipping address. | -| 55 | shipping_address_company | | String | | Company used in the shipping address. | -| 56 | shipping_address_description | | String | | Description used with the shipping address. | -| 57 | shipping_address_comment | | String | | Comment used with the shipping address. | -| 58 | shipping_address_country | ✓ | String | | Country of the shipping address. | -| 59 | shipping_address_region | | String | | Region of the shipping address. | - -Check out the [merchant-order-items.csv sample file](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Development+Guide/Data+Export/merchant-order-items.csv). - -## Merchant order expenses - -These are the header fields included in the `merchant_order_expenses.csv` file. - -| DEFAULT SEQUENCE | CSV COLUMN HEADER NAME | REQUIRED | TYPE | OTHER REQUIREMENTS / COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| 1 | merchant_order_reference | ✓ | String | Unique | Merchant order reference identification | -| 2 | marketplace_order_reference | ✓ | String | Unique | Marketplace order reference identification. | -| 3 | shipment_id | | Number | | Merchant order shipment identification. | -| 4 | canceled_amount | | Number | Default = 0 | Merchant order expense canceled amount. | -| 5 | discount_amount_aggregation | | Number | Default = 0 | Merchant order expense discount amount aggregation. | -| 6 | gross_price | ✓ | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order gross price of the expense. | -| 7 | name | | String | Original value is multiplied by 100 before it is stored in this field. | Merchant order name of the expense. | -| 8 | net_price | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order net price of the expense. | -| 9 | price | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order price of the expense. | -| 10 | price_to_pay_aggregation | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order expense price to pay aggregation. | -| 11 | refundable_amount | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order refundable amount of the expense. | -| 12 | tax_amount | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order tax amount of the expense. | -| 13 | tax_amount_after_cancellation | | Number | Original value is multiplied by 100 before it is stored in this field. | Merchant order expense tax amount after cancellation. | -| 14 | tax_rate | | Number | | Merchant order tax rate of the expense. | -| 15 | type | | String | | Merchant order type of expense. | -| 16 | expense_created_at | ✓ | Date Time | | Merchant order timestamp of this sales expense creation. | -| 17 | expense_updated_at | ✓ | Date Time | | Last update date of the merchant order sales expense. | - -Check out the [merchant-order-expenses.csv sample file](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Development+Guide/Data+Export/merchant-order-expenses.csv). diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-combined-merchant-product-offer.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-combined-merchant-product-offer.csv.md deleted file mode 100644 index 6e05078e861..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-combined-merchant-product-offer.csv.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: "File details: combined_merchant_product_offer.csv" -last_updated: Jun 07, 2021 -description: This document describes the combined_merchant_product_offer.csv file to configure product offers in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `combined_merchant_product_offer.csv` file to configure [Merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) information in your Spryker shop. - -To import the file, run: - -```bash -data:import --config data/import/common/combined_merchant_product_offer_import_config_{store}.yml -``` - -{% info_block infoBox "Info" %} - -To learn more about bulk importing with the help of the configuration file, see [Importing data with a configuration file](/docs/scos/dev/data-import/{{page.version}}/importing-data-with-a-configuration-file.html). - -{% endinfo_block %} - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ---------- | ------------ | ------ | ------------ | ----------------- | ------------- | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| merchant_product_offer.concrete_sku | ✓ | String | | Unique | SKU of the concrete product the offer is being created for. | -| merchant_product_offer.merchant_reference | ✓ | String | | Unique | Identifier of the merchant owing the product offer in the system. | -| merchant_product_offer.merchant_sku | | String | | Unique | Identifier of the [merchant](/docs/marketplace/user/features/{{site.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) in the system. | -| merchant_product_offer.is_active | | Integer | | 1—is active
0—is not active | Defines whether the offer is active or not. | -| merchant_product_offer.approval_status | ✓ | String | | Can be: | Defines the [status of the offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html#offer-approval-status) in the system. | -| merchant_product_offer_store.store_name | | String | | | Name of the store where the offer belongs. | -| product_offer_stock.stock_name | | String | | Stock name is defined as described in the [merchant warehouse](/docs/marketplace/user/features/{{site.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management). | Name of the stock. | -| product_offer_stock.quantity | | Integer | | | Number of product offers that are in stock. | -| product_offer_stock.is_never_out_of_stock | | Integer | | 1—option is enabled
0—option is disabled. | Allows the offer to be never out of stock. | -| price_product_offer.price_type | | String | | Can be DEFAULT or ORIGINAL. | Price type of the product offer. | -| price_product_offer.store | | String | | Value previously defined in the *stores.php* project configuration. | Store where the merchant product offer belongs. | -| price_product_offer.currency | | String | | Defined in the [ISO code](https://en.wikipedia.org/wiki/ISO_4217). | Currency of the price. | -| price_product_offer.value_net | | Integer | | Empty price values will be imported as zeros. | Net price in cents. | -| price_product_offer.value_gross | | Integer | | Empty price values will be imported as zeros. | Gross price in cents. | -| price_product_offer.price_data.volume_prices | | Array | | | Price data which can be used to define alternative prices, that is, volume prices, overwriting the given net or gross price values. | -| product_offer_validity.valid_from | | Datetime | | | Date and time from which the offer is active. | -| product_offer_validity.valid_to | | Datetime | | | Date and time till which the offer is active. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- `stores.php` configuration file of the demo shop PHP project - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ------------------------ | ------------------------- | -| [template_combined_merchant_product_offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_combined_merchant_product_offer.csv) | Import file template with headers only. | -| [combined_merchant_product_offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/combined_merchant_product_offer.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-category.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-category.csv.md deleted file mode 100644 index 427ebe81f86..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-category.csv.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "File details: merchant_category.csv" -last_updated: Jun 07, 2021 -description: This document describes the merchant_profile_address.csv file to configure merchant profile addresses in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_category.csv` file to configure [merchant categories](/docs/marketplace/user/features/{{site.version}}/merchant-category-feature-overview.html) in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-category -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| -------------- | ----------- | ------- | ------------- | -------------------- | ------------------------------- | -| category_key | ✓ | String | | | Category key to assign the merchant to. | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ---------------------------------- | --------------------------- | -| [template_merchant_category.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_category.csv) | Import file template with headers only. | -| [merchant_category.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_category.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-oms-process.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-oms-process.csv.md deleted file mode 100644 index 4b21c9410e9..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-oms-process.csv.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "File details: merchant_oms_process.csv" -last_updated: Jun 07, 2021 -description: This document describes the merchant_oms_process.csv file to configure Merchant state machines in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_oms_process.csv` file to configure [Merchant state machines](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html#merchant-state-machine) in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-oms-process -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| --------------- | ---------- | ------- | ------------ | -------------- | ----------------------- | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| merchant_oms_process_name | ✓ | String | | | Name of the merchant state machine. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ------------------------ | ------------------------ | -| [template_merchant_oms_process.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_oms_process.csv) | Import file template with headers only. | -| [merchant_oms_process.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_oms_process.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-date-schedule.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-date-schedule.csv.md deleted file mode 100644 index bc9c8d8e03a..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-date-schedule.csv.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "File details: merchant_open_hours_date_schedule.csv" -last_updated: Jun 07, 2021 -description: This document describes the merchant_open_hours_date_schedule.csv file to configure Merchant opening hours information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_open_hours_date_schedule.csv` file to configure [special merchant opening hours](/docs/marketplace/user/features/{{site.version}}/merchant-opening-hours-feature-overview.html) in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-opening-hours-date-schedule -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ------------- | ---------- | ------ | ----------- | ------------------- | ------------------------------------ | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| date | ✓ | Date | | Date is in format: yyyy-mm-dd | Date of the described schedule. | -| time_from | | Datetime | | Time is in format hh:mm:ss | Time from. | -| time_to | | Datetime | | Time is in format hh:mm:ss | Time to. | -| note | | String | | | Additional notes or comments to the schedule. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| -------------------------- | -------------------------- | -| [template_merchant_open_hours_date_schedule.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_open_hours_date_schedule.csv) | Import file template with headers only. | -| [merchant_open_hours_date_schedule.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_open_hours_date_schedule.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-week-day-schedule.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-week-day-schedule.csv.md deleted file mode 100644 index 184dc8e48ed..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-open-hours-week-day-schedule.csv.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "File details: merchant_open_hours_week_day_schedule.csv" -last_updated: Jun 07, 2021 -description: This document describes the merchant_open_hours_week_day_schedule.csv file to configure merchant opening hours information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_open_hours_week_day_schedule.csv` file to configure [default merchant opening hours](/docs/marketplace/user/features/{{site.version}}/merchant-opening-hours-feature-overview.html) information in your Spryker shop. - -To import the file, run: - -``` -data:import merchant-opening-hours-weekday-schedule -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| -------------- | ----------- | ------ | -------------- | ---------------------------- | ----------------------------- | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| week_day_key | ✓ | Weekday | | Weekday name is in format: WEEKDAY_NAME | Weekday name. | -| time_from | | Datetime | | Time is in format. hh:mm:ss | Time from. | -| time_to | | Datetime | | Time is in format. hh:mm:ss | Time to. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ---------------------------- | ---------------------------- | -| [template_merchant_open_hours_week_day_schedule.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_open_hours_week_day_schedule.csv) | Import file template with headers only. | -| [merchant_open_hours_week_day_schedule.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_open_hours_week_day_schedule.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-order-status.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-order-status.csv.md deleted file mode 100644 index 471b804a703..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-order-status.csv.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "File details: merchant-order-status.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant-order-status.csv file to update merchant order states in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - - -This document describes the `merchant-order-status.csv` file to configure the update of the merchant order states in your Spryker Marketplace shop. - -To import the file, run: - -```bash -order-oms:status-import merchant-order-status -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| merchant_reference | | String | | Unique | Identifier of the merchant in the system. | -| merchant_order_reference | | String | | Unique | Identifier of the merchant order in the system. | -| order_item_reference | ✓ | String | | Unique | Identifier of the item in the order. | -| merchant_order_item_event_oms | ✓ | String | | OMS events depend on the [merchant state machine](/docs/marketplace/user/features/{{site.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html#merchant-state-machine) configured. | Desired order-item state. Only this parameter is updated in the database. | - -## Import file dependencies - -The file has no dependencies. - -## Additional Information - -When the merchant order item status is updated by importing the CSV file, the corresponding events in a merchant state machine are triggered, and the state gets updated. As a merchant order may contain several order items, the CSV file can have several rows of items for the same order. -`Merchant_order_item_reference` can repeat and have different states in the file. For example, in one case, it is `packed` and then `shipped`. That lets you update the item through different merchant state machine statuses (for instance, `packed` and `shipped`) and avoid errors. If the merchant order item doesn't follow the existing sequence (the statuses flow in the merchant state machine), the state won't be updated, and you will get an error in the uploading process' report. - -## Import template file and content example - -Find the template and an example of the `merchant-order-status.csv` file below: - -| FILE | DESCRIPTION | -|-|-| -| [template_merchant-order-status.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant-order-status.csv) | Import file template with headers only. | -| [merchant-order-status.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant-order-status.csv) | Exemplary import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer-store.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer-store.csv.md deleted file mode 100644 index 3786393fbe9..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer-store.csv.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "File details: merchant_product_offer_store.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_product_offer_store.csv file to configure merchant product offer store information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_product_offer_store.csv` file to configure [merchant product offer stores](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html#product-offer-stores) in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-product-offer-store -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ----------- | ----------- | ------- | ------------ | --------------------- | ------------ | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| store_name | ✓ | String | | Value previously defined in the *stores.php* project configuration. | Store where the merchant product offer belongs. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant-product-offer.csv.html) -- `stores.php` configuration file of the demo shop PHP project - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ------------------------------ | ---------------------- | -| [template_merchant_product_offer_store.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_product_offer_store.csv) | Import file template with headers only. | -| [merchant_product_offer_store.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_product_offer_store.csv) | Exemple of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer.csv.md deleted file mode 100644 index def9fa7d0b2..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-offer.csv.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "File details: merchant_product_offer.csv" -last_updated: Feb 26, 2021 -description: This document describes the `merchant_product_offer.csv` file to configure merchant product offer information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_product_offer.csv` file to configure [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) information in your Spryker shop. - -To import the file, run - -```bash -data:import merchant-product-offer -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ------------------ | ------------ | ------- | -------------- | -------------------- | ----------------------- | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| concrete_sku | ✓ | String | | Unique | SKU of the concrete product the offer is being created for. | -| merchant_reference | ✓ | String | | Unique | Identifier of the [merchant](/docs/marketplace/user/features/{{site.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) in the system. | -| merchant_sku | | String | | Unique | SKU of the merchant. | -| is_active | ✓ | Integer | | 1—is active
0—is not active | Defines whether the offer is active or not. | -| approval_status | ✓ | String | | Can be: | Defines the [status of the offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html#product-offer-status) in the system. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- [product_concrete.csv](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/import-and-export-data/products-data-import/file-details-product-concrete.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| -------------------------- | ------------------ | -| [template_merchant_product_offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_product_offer.csv) | Import file template with headers only. | -| [merchant_product_offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_product_offer.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-option-group.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-option-group.csv.md deleted file mode 100644 index 4111a26d7e0..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product-option-group.csv.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "File details: merchant_product_option_group.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_product_option_group file to create product options for merchants. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_product_option_group` file to create [merchant product option groups](/docs/marketplace/user/features/{{page.version}}/marketplace-product-options-feature-overview.html). - -To import the file, run: - -```bash -data:import merchant-product-option-group -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ---------- | ---------- | ------- | ------------- | ------------------ | ------------- | -| product_option_group_key | ✓ | String | It should be either one word, or several words separated with underscore. | Unique | Glossary key for a product option group. | -| merchant_reference | ✓ | String | | | Unique identifier of the merchant the product option group belongs to. | -| approval_status | | String | waiting_for_approval | Possible values: | [Approval status](/docs/marketplace/user/features/{{page.version}}/marketplace-product-options-feature-overview.html#marketplace-product-options-approval-statuses) of the product option group. | -| merchant_sku | | String | | External merchant SKU in the merchant's ERP. | - -## Import file dependencies - -The file does not have any dependencies. - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ------------------------------- | ----------------------- | -| [template_merchant_product_option_group.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/dev+guides/Data+import/File+details%3A+merchant_product_option_group.csv/template_merchant_product_option_group.csv) | Import file template with headers only. | -| [merchant_product_option_group.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/dev+guides/Data+import/File+details%3A+merchant_product_option_group.csv/merchant_product_option_group.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product.csv.md deleted file mode 100644 index 241740df0ec..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-product.csv.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "File details: merchant_product.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_product.csv file to configure marketplace products in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_product.csv` file to configure [marketplace product](/docs/marketplace/user/features/{{page.version}}/marketplace-product-feature-overview.html) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-product -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| -------------- | ----------- | ------- | ------------- | ------------------- | ---------------------- | -| sku | ✓ | String | | Unique | SKU of the product. | -| merchant_reference | ✓ | String | | Unique | Unique identifier of the merchant in the system. | -| is_shared | | Integer | | 1—is shared
0—is not shared | Defines whether the product is shared between the merchants. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- [product_concrete.csv](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/import-and-export-data/products-data-import/file-details-product-concrete.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ----------------------------- | ---------------------- | -| [template_merchant_product.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_product.csv) | Import file template with headers only. | -| [merchant_product.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_product.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile-address.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile-address.csv.md deleted file mode 100644 index ecf88d50282..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile-address.csv.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "File details: merchant_profile_address.csv" -last_updated: Jun 07, 2021 -description: This document describes the merchant_profile_address.csv file to configure merchant profile addresses in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_profile_address.csv` file to configure [merchant profile addresses](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-profile) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-profile-address -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ----------- | ---------- | ----- | ------------- | ----------- | ---- | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| country_iso2_code | | String | | | Currency ISO code. For more details check [ISO 4217 CURRENCY CODES](https://www.iso.org/iso-4217-currency-codes.html). | -| country_iso3_code | | String | | | Currency [ISO 3 code](https://www.iban.com/country-codes). | -| address1 | | String | | | Address information of the merchant. | -| address2 | | String | | | | -| address3 | | String | | | | -| city | | String | | | City where the merchant is located. | -| zip_code | | String | | | Zip code of the merchant. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant_profile.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant-profile.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| --------------------- | --------------------- | -| [template_merchant_profile_address.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_profile_address.csv) | Import file template with headers only. | -| [merchant_profile_address.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_profile_address.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile.csv.md deleted file mode 100644 index 0016637058d..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-profile.csv.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "File details: merchant_profile.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_profile.csv file to configure merchant information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_profile.csv` file to configure [merchant profile](/docs/marketplace/user/features/{{site.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-profile) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-profile -``` - -## Import file parameters -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| contact_person_role | | String | | | Role the contact person performs. | -| contact_person_title | | String | | | A formal salutation for your contact person (for example,Mr, Ms, Mrs, Dr). | -| contact_person_first_name | | String | | | First name of the contact person. | -| contact_person_last_name | | String | | | Last name of the contact person. | -| contact_person_phone | | String | | | Phone number of the contact person. | -| banner_url | | String | | | Link to the merchant's banner | -| logo_url | | String | | | Logo URL for the merchant profile. | -| public_email | | String | | | Business / public email address for the merchant. | -| public_phone | | String | | | Merchant's public phone number. | -| description_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `description_glossary_key.en_US` | Description for the merchant. | -| banner_url_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `banner_url_glossary_key.en_US` | Link to the merchant's banner. | -| delivery_time_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `delivery_time_glossary_key.en_US` | Average delivery time defined by the merchant. | -| terms_conditions_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `terms_conditions_glossary_key.en_US` | Terms and conditions for the merchant are defined here. | -| cancellation_policy_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `cancellation_policy_glossary_key.en_US` | Cancellation policy is defined per merchant here. | -| imprint_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `imprint_glossary_key.en_US` | Imprint information per merchant is specified here. | -| data_privacy_glossary_key.{ANY_LOCALE_NAME} | | String | | Example value: `data_privacy_glossary_key.en_US` | Data privacy statement is defined here. | -| fax_number | | String | | | Merchant's fax number. | -| longitude | | String | | | This field identifies merchant’s location. | -| latitude | | String | | | This field identifies merchant’s location. | - -## Import file dependencies -The file has the following dependencies: -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- [glossary.csv](/docs/scos/dev/data-import/{{site.version}}/data-import-categories/commerce-setup/file-details-glossary.csv.html) - -## Import template file and content example -Find the template and an example of the file below: - -|FILE|DESCRIPTION| -|-|-| -| [template_merchant_profile.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_profile.csv) | Import file template with headers only. | -| [merchant_profile.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_profile.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-stock.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-stock.csv.md deleted file mode 100644 index 341987e3c4f..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-stock.csv.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "File details: merchant_stock.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_stock.csv file to configure merchant stock information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_stock.csv` file to configure [merchant stock](/docs/marketplace/user/features/{{site.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-stock -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ------------- | -------- | ------ | ------------- | --------------------------------- | ----------------- | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| stock_name | ✓ | String | | Stock name is defined as described in [merchant warehouse](/docs/marketplace/user/features/{{site.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management). | Name of the stock. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- [warehouse.csv](/docs/scos/dev/data-import/{{site.version}}/data-import-categories/commerce-setup/file-details-warehouse.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| --------------------- | --------------------- | -| [template_merchant_stock.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_stock.csv) | Import file template with headers only. | -| [merchant_stock.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_stock.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-store.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-store.csv.md deleted file mode 100644 index 3966c80d213..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-store.csv.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "File details: merchant_store.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant_store.csv file to configure merchant store information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant_store.csv` file to configure merchant's stores in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-store -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| -------------- | ----------- | ----- | -------------- | ------------------------ | ----------------------- | -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| store_name | ✓ | String | | Value previously defined in the *stores.php* project configuration. | Store where the merchant product offer belongs. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) -- `stores.php` configuration file of the demo shop PHP project, where stores are defined initially - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| --------------------------- | ---------------------- | -| [template_merchant_store.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_store.csv) | Import file template with headers only. | -| [merchant_store.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_store.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-user.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant-user.csv.md deleted file mode 100644 index 901304c1c0c..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant-user.csv.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "File details: merchant_user.csv" -last_updated: Mar 01, 2021 -description: This document describes the merchant_user.csv file to configure merchant information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant-user.csv` file to configure [merchant user](/docs/marketplace/user/features/{{site.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant-user -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| username | ✓ | String | | Unique | Username of the merchant user. It is an email address that is used for logging into the Merchant Portal as a merchant user. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html). - -## Import template file and content example - -Find the template and an example of the file below: - -|FILE|DESCRIPTION| -|-|-| -| [template_merchant_user.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant_user.csv) | Import file template with headers only. | -| [merchant_user.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant_user.csv) | Example of the import file with Demo Shop data content. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-merchant.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-merchant.csv.md deleted file mode 100644 index f8edd0ac86a..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-merchant.csv.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "File details: merchant.csv" -last_updated: Feb 26, 2021 -description: This document describes the merchant.csv file to configure merchant information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `merchant.csv` file to configure [merchant](/docs/marketplace/user/features/{{site.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) information in your Spryker shop. - -To import the file, run: - -```bash -data:import merchant -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -|-|-|-|-|-|-| -| merchant_reference | ✓ | String | | Unique | Identifier of the merchant in the system. | -| merchant_name | ✓ | String | | | The name of the merchant. | -| registration_number | ✓ | Integer | | | Number assigned to the merchant at the point of registration. | -| status | ✓ | String | | Possible values: | The status of the merchant. | -| email | ✓ | String | | | Email address of the merchant. | -| is_active | ✓ | Integer | | 1—is active
0—is not active | Defines whether the merchant is active or not. | -| url.de_DE | ✓ | String | | Defined per locale. | Merchant page URL in the storefront for DE store. | - -## Import file dependencies -The file has the following dependencies: - -- [merchant_profile.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant-profile.csv.html). - -## Import template file and content example - -Find the template and an example of the file below: - -|FILE|DESCRIPTION| -|-|-| -| [template_merchant.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_merchant.csv) | Import file template with headers only. | -| [merchant.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/merchant.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-price-product-offer.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-price-product-offer.csv.md deleted file mode 100644 index 0f5fc3f873d..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-price-product-offer.csv.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "File details: price-product-offer.csv" -last_updated: Feb 26, 2021 -description: This document describes the price-product-offer.csv file to configure merchant product offer price information in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `price-product-offer.csv` file to configure [Merchant product offer price](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) information in your Spryker shop. - -To import the file, run: - -```bash -data:import price-product-offer -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ----------- | ---------- | ------- | ------------- | ----------------- | ------------- | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| price_type | ✓ | String | | Can be DEFAULT or ORIGINAL | Price type. | -| store | ✓ | String | | Value previously defined in the *stores.php* project configuration. | Store the price is defined for. | -| currency | ✓ | String | | Defined in the [ISO code](https://en.wikipedia.org/wiki/ISO_4217). | Currency of the price. | -| value_net | | Integer | | Empty price values are imported as zeros. | Net price in cents. | -| value_gross | | Integer | | Empty price values are imported as zeros. | Gross price in cents. | -| price_data.volume_prices | | Array | | | Price data which can be used to define alternative prices, that is, volume prices, overwriting the given net or gross price values. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant-product-offer.csv.html) -- [product_price.csv](/docs/scos/dev/data-import/{{site.version}}/data-import-categories/catalog-setup/pricing/file-details-product-price.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE |DESCRIPTION | -| ------------------------- | ----------------------- | -| [template_price-product-offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_price_product_offer.csv) | Import file template with headers only. | -| [price-product-offer.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/price_product_offer.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-stock.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-stock.csv.md deleted file mode 100644 index afbe9baa202..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-stock.csv.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "File details: product_offer_stock.csv" -last_updated: Feb 26, 2021 -description: This document describes the product_offer_stock.csv file to configure merchant product offer stock in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `product_offer_stock.csv` file to configure [Merchant product offer stock](/docs/marketplace/user/features/{{page.version}}/marketplace-inventory-management-feature-overview.html#marketplace-stock-management) information in your Spryker shop. - -To import the file, run: - -```bash -data:import product-offer-stock -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ------------- | ---------- | ------- | ------------- | ---------------------------- | ----------------------- | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| stock_name | ✓ | String | | Stock name is defined as described in the [merchant warehouse](/docs/marketplace/user/features/{{site.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management). | Name of the stock. | -| quantity | ✓ | Integer | | | The number of product offers that are in stock. | -| is_never_out_of_stock | | Integer | | 1—option is enabled
0—option is disabled. | Allows the offer to be never out of stock. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer.csv.html) -- [warehouse.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ---------------------------- | ------------------- | -| [template_product_offer_stock.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_product_offer_stock.csv) | Import file template with headers only. | -| [product_offer_stock.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/product_offer_stock.csv) | Exemple of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-validity.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-validity.csv.md deleted file mode 100644 index 790c674153a..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-product-offer-validity.csv.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "File details: product_offer_validity.csv" -last_updated: Feb 26, 2021 -description: This document describes the product_offer_validity.csv file to configure product offer validity dates in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document describes the `product_offer_validity.csv` file to configure product offer validity dates in your Spryker shop. - -To import the file, run: - -```bash -data:import product-offer-validity -``` - -## Import file parameters - -The file should have the following parameters: - -| PARAMETER | REQUIRED | TYPE | DEFAULT VALUE | REQUIREMENTS OR COMMENTS | DESCRIPTION | -| ---------- | ---------- | ------- | ------------- | ------------------ | ------------- | -| product_offer_reference | ✓ | String | | Unique | Identifier of the [merchant product offer](/docs/marketplace/user/features/{{site.version}}/marketplace-product-offer-feature-overview.html) in the system. | -| valid_from | | Datetime | | | Date and time from which the offer is active. | -| valid_to | | Datetime | | | Date and time till which the offer is active. | - -## Import file dependencies - -The file has the following dependencies: - -- [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant-product-offer.csv.html) - -## Import template file and content example - -Find the template and an example of the file below: - -| FILE | DESCRIPTION | -| ------------------------------- | ----------------------- | -| [template_product_offer_validity.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/template_product_offer_validity.csv) | Import file template with headers only. | -| [product_offer_validity.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Marketplace+setup/product_offer_validity.csv) | Example of the import file with Demo Shop data. | diff --git a/docs/marketplace/dev/data-import/202108.0/file-details-product-price.csv.md b/docs/marketplace/dev/data-import/202108.0/file-details-product-price.csv.md deleted file mode 100644 index d400ba06eb7..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/file-details-product-price.csv.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "File details: product_price.csv" -last_updated: Sep 7, 2021 -description: This document describes the product_price.csv file to configure product prices in your Spryker shop. -template: import-file-template -related: - - title: Execution order of data importers in Demo Shop - link: docs/scos/dev/data-import/page.version/demo-shop-data-import/execution-order-of-data-importers-in-demo-shop.html ---- - -This document contains content of the **product_price.csv** file to configure [prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html) of the products/services in your Spryker Demo Shop. - -To import the file, run: - -```bash -data:import product-price -``` - -## Import file parameters - -These are the header fields to be included in the CSV file: - -| FIELD NAME | MANDATORY | TYPE | OTHER REQUIREMENTS/COMMENTS | DESCRIPTION | -| ------------------ | ------------- | ----- | ------------- | ------------------- | -| abstract_sku | Yes (if `concrete_sku`is empty) | String | Either this field or `concrete_sku` needs to be filled. | SKU of the abstract product to which the price should apply. | -| concrete_sku | Yes (if `abstract_sku`is empty) | String | Either this field or `abstract_sku` needs to be filled. | SKU of the concrete product to which the price should apply. | -| price_type | No | String | N/A* | Defines the price type. | -| store | Yes | String | N/A | Store to which this price should apply. | -| currency | No | String | N/A | Defines in which currency the price is. | -| value_net | No | Integer | N/A | Sets the net price. | -| value_gross | No | Integer | N/A | Sets the gross price. | -| price_data.volume_prices | No | String | N/A | Price data which can be used to define alternative prices, that is, volume prices, overwriting the given net or gross price values. | - -*N/A: Not applicable. - -## Dependencies - -This file has the following dependencies: - -- [product_abstract.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/products/file-details-product-abstract.csv.html) -- [product_concrete.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/products/file-details-product-concrete.csv.html) -- `stores.php` configuration file of the Demo Shop PHP project - -## Import template file and content example - -A template and an example of the `product_price.csv` file can be downloaded here: - -| FILE | DESCRIPTION | -| --- | --- | -| [product_price.csv template](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Catalog+Setup/Pricing/Template+product_price.csv) | Product Price CSV template file (empty content, contains headers only). | -| [product_price.csv](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Back-End/Data+Manipulation/Data+Ingestion/Data+Import/Data+Import+Categories/Catalog+Setup/Pricing/product_price.csv) | Product Price CSV file containing a Demo Shop data sample. | diff --git a/docs/marketplace/dev/data-import/202108.0/marketplace-setup.md b/docs/marketplace/dev/data-import/202108.0/marketplace-setup.md deleted file mode 100644 index 0a63fe90465..00000000000 --- a/docs/marketplace/dev/data-import/202108.0/marketplace-setup.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Marketplace setup" -last_updated: May 28, 2021 -description: The Marketplace setup category holds data required to set up the Marketplace environment. -template: import-file-template ---- - -The Marketplace setup category contains data required to set up the Marketplace environment. - -The following table provides details about Marketplace setup data importers, their purpose, CSV files, dependencies, and other details. Each data importer contains links to CSV files to import the corresponding data, including specifications of mandatory and unique fields, dependencies, detailed explanations, recommendations, templates, and content examples. - -| DATA IMPORTER | PURPOSE | CONSOLE COMMAND | FILES | DEPENDENCIES | -|-|-|-|-|-| -| Merchants | Imports basic merchant information. | `data:import merchant` | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | [merchant_profile.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile.csv.html) | -| Merchant profile | Imports merchant profile information. | `data:import merchant-profile` | [merchant_profile.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile.csv.html) | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -| Merchant profile addresses | Imports merchant addresses. | `data:import merchant-profile-address` | [merchant_profile_address.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile-address.csv.html) | [merchant_profile.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile.csv.html) | -| Merchant opening hours | Imports [default opening hours](/docs/marketplace/user/features/{{page.version}}/merchant-opening-hours-feature-overview.html) schedule. | `data:import merchant-opening-hours-weekday-schedule ` | [merchant_open_hours_week_day_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-week-day-schedule.csv.html) | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -| | Imports [special opening hours](/docs/marketplace/user/features/{{page.version}}/merchant-opening-hours-feature-overview.html) schedule including holidays. | `data:import merchant-opening-hours-date-schedule` | [merchant_open_hours_date_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-date-schedule.csv.html) | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -| Merchant category | Imports merchant categories. | `data:import merchant-category` | [merchant_category.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-category.csv.html) | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -| Merchant users | Imports merchant users of the merchant. | `data:import merchant-user` | [merchant_user.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-user.csv.html) | [merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -| Merchant stores | Imports merchant stores. | `data:import merchant-store` | [merchant_store.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-store.csv.html) | | -| Merchant stock | Imports merchant stock details. | `data:import merchant-stock` | [merchant_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-stock.csv.html) | | -| Merchant OMS processes | Imports Merchant OMS processes. | `data:import merchant-oms-process` | [merchant_oms_process.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-oms-process.csv.html) | | -| Merchant product offer | Imports basic merchant product offer information. | `data:import merchant-product-offer` | [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer.csv.html) | | -| Merchant product offer price | Imports product offer prices. | `data:import price-product-offer` | [price-product-offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-price-product-offer.csv.html) | | -| Merchant product offer stock | Imports merchant product stock. | `data:import product-offer-stock` | [product_offer_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-stock.csv.html) | | -| Merchant product offer stores | Imports merchant product offer stores. | `data:import merchant-product-offer-store` | [merchant_product_offer_store.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer-store.csv.html) | | -| Validity of the merchant product offers | Imports the validity of the merchant product offers. | `data:import product-offer-validity` | [product_offer_validity.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-validity.csv.html) | [merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer.csv.html) | -| Merchant product offers | Imports full product offer information via a single file. | `data:import --config data/import/common/combined_merchant_product_offer_import_config_{store}.yml` | [combined_merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-combined-merchant-product-offer.csv.html) | | -| Merchant products | Imports marketplace products. | `data:import merchant-product` | [merchant_product.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product.csv.html) | | -| Merchant order | Updates the status of the merchant order item. | `order-oms:status-import merchant-order-status` |[merchant-order-status.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-order-status.csv.html)| | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/acl-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/acl-feature-integration.md deleted file mode 100644 index c07f9db087d..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/acl-feature-integration.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -title: ACL feature integration -last_updated: Sep 7, 2021 -description: This integration guide provides steps on how to integrate the ACL feature into a Spryker project. -template: feature-integration-guide-template ---- - -This integration guide provides steps on how to integrate the ACL feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the ACL feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | -------- | ------------------ | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Spryker Core Back Office | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-back-office-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/acl:"{{page.version}}" --update-with-dependencies -``` -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------- | ------------------------------------ | -| Acl | vendor/spryker/acl | -| AclDataImport | vendor/spryker/acl-data-import | -| AclEntity | vendor/spryker/acl-entity | -| AclEntityDataImport | vendor/spryker/acl-entity-data-import | -| AclEntityExtension (optional) | vendor/spryker/acl-entity-extension | -| AclExtension (optional) | vendor/spryker/acl-extension | - -{% endinfo_block %} - -### 2) Set up the database schema - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -| ----------------------------- | ----- | ------- | -| spy_acl_role | table | created | -| spy_acl_rule | table | created | -| spy_acl_group | table | created | -| spy_acl_user_has_group | table | created | -| spy_acl_groups_has_roles | table | created | -| spy_acl_entity_segment | table | created | -| spy_acl_entity_rule | table | created | - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ----------------- | ----- | ------ | -------------------------- | -| Group | object | Created | src/Generated/Shared/Transfer/GroupTransfer | -| AclEntityRule | object | Created | src/Generated/Shared/Transfer/AclEntityRuleTransfer | -| AclEntitySegment | object | Created | src/Generated/Shared/Transfer/AclEntitySegmentTransfer | -| AclEntitySegmentRequest | object | Created | src/Generated/Shared/Transfer/AclEntitySegmentRequestTransfer | -| AclEntityRuleRequest | object | Created | src/Generated/Shared/Transfer/AclEntityRuleRequestTransfer | -| AclEntityRuleCollection | object | Created | src/Generated/Shared/Transfer/AclEntityRuleCollectionTransfer | -| AclEntitySegmentResponse | object | Created | src/Generated/Shared/Transfer/AclEntitySegmentResponseTransfer | -| AclEntitySegmentCriteria | object | Created | src/Generated/Shared/Transfer/AclEntitySegmentCriteriaTransfer | -| AclEntityRuleCriteria | object | Created | src/Generated/Shared/Transfer/AclEntityRuleCriteriaTransfer | -| AclEntityRuleResponse | object | Created | src/Generated/Shared/Transfer/AclEntityRuleResponseTransfer | -| AclEntityMetadata | object | Created | src/Generated/Shared/Transfer/AclEntityMetadataTransfer | -| AclEntityParentMetadata | object | Created | src/Generated/Shared/Transfer/AclEntityParentMetadataTransfer | -| AclEntityParentConnectionMetadata | object | Created | src/Generated/Shared/Transfer/AclEntityParentConnectionMetadataTransfer | -| AclEntityMetadataCollection | object | Created | src/Generated/Shared/Transfer/AclEntityMetadataCollectionTransfer | -| AclEntityMetadataConfig | object | Created | src/Generated/Shared/Transfer/AclEntityMetadataConfigTransfer | -| AclRoleCriteria | object | Created | src/Generated/Shared/Transfer/AclRoleCriteriaTransfer | -| GroupCriteria | object | Created | src/Generated/Shared/Transfer/GroupCriteriaTransfer | -| Groups | object | Created | src/Generated/Shared/Transfer/GroupsTransfer | -| Role | object | Created | src/Generated/Shared/Transfer/RoleTransfer | -| Roles | object | Created | src/Generated/Shared/Transfer/RolesTransfer | -| Rule | object | Created | src/Generated/Shared/Transfer/RuleTransfer | -| Rules | object | Created | src/Generated/Shared/Transfer/Transfer | -| User | object | Created | src/Generated/Shared/Transfer/UserTransfer | -| NavigationItem | object | Created | src/Generated/Shared/Transfer/NavigationItemTransfer | -| NavigationItemCollection | object | Created | src/Generated/Shared/Transfer/NavigationItemCollectionTransfer | - -{% endinfo_block %} - -### 4) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| AccessControlEventDispatcherPlugin | Adds a listener to the `\Symfony\Component\HttpKernel\KernelEvents::REQUEST` which checks if the user is allowed to access the current resource. | | Spryker\Zed\Acl\Communication\Plugin\EventDispatcher | -| AclNavigationItemCollectionFilterPlugin | Checks if the navigation item can be accessed by the current user. | | Spryker\Zed\Acl\Communication\Plugin\Navigation | -| AclInstallerPlugin | Fills the DB with required ACL data. | | Spryker\Zed\Acl\Communication\Plugin | -| GroupPlugin | Provides Acl Groups for User. | | Spryker\Zed\Acl\Communication\Plugin | -| AclEntityAclRolePostSavePlugin | Saves `RoleTransfer.aclEntityRules` to database. | | Spryker\Zed\AclEntity\Communication\Plugin\Acl | -| AclRulesAclRolesExpanderPlugin | Expands `Roles` transfer object with ACL rules. | | Spryker\Zed\AclEntity\Communication\Plugin\Acl | -| AclEntityApplicationPlugin | Enables ACL for the whole Application. | | Spryker\Zed\AclEntity\Communication\Plugin\Application | - -**src/Pyz/Zed/EventDispatcher/EventDispatcherDependencyProvider.php** - -```php - - */ - protected function getEventDispatcherPlugins(): array - { - return [ - new AccessControlEventDispatcherPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ZedNavigation/ZedNavigationDependencyProvider.php** - -```php - - */ - protected function getNavigationItemCollectionFilterPlugins(): array - { - return [ - new AclNavigationItemCollectionFilterPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Installer/InstallerDependencyProvider.php** - -```php - - */ - public function getInstallerPlugins() - { - return [ - new AclInstallerPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/User/UserDependencyProvider.php** - -```php -set(static::PLUGIN_GROUP, function (Container $container) { - return new GroupPlugin(); - }); - - return $container; - } -} -``` - -**src/Pyz/Zed/Acl/AclDependencyProvider.php** - -```php - - */ - protected function getAclRolesExpanderPlugins(): array - { - return [ - new AclRulesAclRolesExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\AclExtension\Dependency\Plugin\AclRolePostSavePluginInterface> - */ - protected function getAclRolePostSavePlugins(): array - { - return [ - new AclEntityAclRolePostSavePlugin(), - ]; - } -} -``` - -Use the following example if you want to enable ACL Entity for the whole Application, for example,for the Merchant Portal: - -**src/Pyz/Zed/MerchantPortalApplication/MerchantPortalApplicationDependencyProvider.php** - -```php - - */ - protected function getMerchantPortalApplicationPlugins(): array - { - return [ - new AclEntityApplicationPlugin(), - ]; - } -} -``` - -### 5) Install the database data for ACL - -Run the following command: - -```bash -console setup:init-db -``` - -{% info_block warningBox "Verification" %} - -Make sure that the request doesn't succeed for users without permission. - -Make sure that the user can see only the allowed menu links. - -Make sure that `spy_acl_role`, `spy_acl_group`, and `spy_acl_user_has_group` tables contain default data. - -Make sure that you can edit user's ACL groups on User edit page in Back Office. - -Make sure that `AclEntityRule` is created in `spy_acl_entity_rule` when the `RoleTransfer` is saved and contains `AclEntityRules`. - -Make sure that `RolesTransfer` contains needed `AclEntityRules`. - -Ensure the user who is not supposed to have access to an entity or endpoint does not have it. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/combined-product-offer-import-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/combined-product-offer-import-feature-integration.md deleted file mode 100644 index e8210440213..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/combined-product-offer-import-feature-integration.md +++ /dev/null @@ -1,1928 +0,0 @@ ---- -title: Combined Product Offer Import integration -last_updated: Oct 12, 2021 -description: This document describes the process how to integrate combined product offer import functionality. -draft: true -template: feature-integration-guide-template -redirect_from: /docs/marketplace/dev/feature-integration-guides/{{page.version}}/combined-product-offer-import-integration.html ---- - -### Prerequisites - -To start integration, integrate the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | -| Marketplace Product Offer Prices | {{page.version}} | [Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | -| Marketplace Inventory Management | {{page.version}} | [Marketplace Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-feature-integration.html) | - - -{% info_block infoBox "Info" %} - -The project level implementation is applied on top of the existing features. -There is no need to install core features. - -{% endinfo_block %} - -### 1) Create the project level implementation - -#### Merchant product offer - -Adjust the following files: - -
-src/Pyz/Zed/MerchantProductOfferDataImport/Business/MerchantProductOfferDataImportBusinessFactory.php - -```php -getConditionalCsvDataImporterFromConfig( - $this->getConfig()->getCombinedMerchantProductOfferDataImporterConfiguration() - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker - ->addStep($this->createCombinedMerchantReferenceToIdMerchantStep()) - ->addStep($this->createCombinedConcreteSkuValidationStep()) - ->addStep($this->createCombinedMerchantSkuValidationStep()) - ->addStep($this->createCombinedApprovalStatusValidationStep()) - ->addStep($this->createCombinedMerchantProductOfferWriterStep()); - - $dataImporter - ->setDataSetCondition($this->createCombinedMerchantProductOfferMandatoryColumnCondition()) - ->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface - */ - public function getCombinedMerchantProductOfferStoreDataImporter(): DataImporterInterface - { - $dataImporter = $this->getConditionalCsvDataImporterFromConfig( - $this->getConfig()->getCombinedMerchantProductOfferStoreDataImporterConfiguration() - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker - ->addStep($this->createProductOfferReferenceToIdProductOfferStep()) - ->addStep($this->createCombinedStoreNameToIdStoreStep()) - ->addStep($this->createMerchantProductOfferStoreWriterStep()); - - $dataImporter - ->setDataSetCondition($this->createCombinedMerchantProductOfferStoreMandatoryColumnCondition()) - ->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function getConditionalCsvDataImporterFromConfig( - DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - ): DataImporterConditional { - $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration()); - - return $this->createDataImporterConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader); - } - - /** - * @param string $importType - * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function createDataImporterConditional( - string $importType, - DataReaderInterface $reader - ): DataImporterConditional { - return new DataImporterConditional($importType, $reader, $this->getGracefulRunnerFacade()); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedMerchantReferenceToIdMerchantStep(): DataImportStepInterface - { - return new CombinedMerchantReferenceToIdMerchantStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedConcreteSkuValidationStep(): DataImportStepInterface - { - return new CombinedConcreteSkuValidationStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedMerchantSkuValidationStep(): DataImportStepInterface - { - return new CombinedMerchantSkuValidationStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedMerchantProductOfferWriterStep(): DataImportStepInterface - { - return new CombinedMerchantProductOfferWriterStep($this->getEventFacade()); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedStoreNameToIdStoreStep(): DataImportStepInterface - { - return new CombinedStoreNameToIdStoreStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedApprovalStatusValidationStep(): DataImportStepInterface - { - return new CombinedApprovalStatusValidationStep(); - } - - /** - * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface - */ - public function createCombinedMerchantProductOfferStoreMandatoryColumnCondition(): DataSetConditionInterface - { - return new CombinedMerchantProductOfferStoreMandatoryColumnCondition(); - } - - /** - * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface - */ - public function createCombinedMerchantProductOfferMandatoryColumnCondition(): DataSetConditionInterface - { - return new CombinedMerchantProductOfferMandatoryColumnCondition(); - } -} -``` -
- -**src/Pyz/Zed/MerchantProductOfferDataImport/Business/MerchantProductOfferDataImportFacade.php** - -```php -getFactory() - ->getCombinedMerchantProductOfferDataImporter() - ->import($dataImporterConfigurationTransfer); - } - - /** - * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer|null $dataImporterConfigurationTransfer - * - * @return \Generated\Shared\Transfer\DataImporterReportTransfer - */ - public function importCombinedMerchantProductOfferStoreData( - ?DataImporterConfigurationTransfer $dataImporterConfigurationTransfer = null - ): DataImporterReportTransfer { - return $this->getFactory() - ->getCombinedMerchantProductOfferStoreDataImporter() - ->import($dataImporterConfigurationTransfer); - } -} -``` - -**src/Pyz/Zed/MerchantProductOfferDataImport/Business/MerchantProductOfferDataImportFacadeInterface.php** - -```php - - */ - protected function getMandatoryColumns(): array - { - return [ - CombinedMerchantProductOfferDataSetInterface::MERCHANT_SKU, - CombinedMerchantProductOfferDataSetInterface::MERCHANT_REFERENCE, - CombinedMerchantProductOfferDataSetInterface::IS_ACTIVE, - CombinedMerchantProductOfferDataSetInterface::CONCRETE_SKU, - CombinedMerchantProductOfferDataSetInterface::APPROVAL_STATUS, - ]; - } -} - -``` - -**src/Pyz/Zed/MerchantProductOfferDataImport/Business/Model/Condition/CombinedMerchantProductOfferStoreMandatoryColumnCondition.php** - -```php - - */ - protected function getMandatoryColumns(): array - { - return [ - CombinedMerchantProductOfferDataSetInterface::STORE_NAME, - ]; - } -} - -``` - -**src/Pyz/Zed/MerchantProductOfferDataImport/Business/Model/DataSet/CombinedMerchantProductOfferDataSetInterface.php** - -```php -getFacade()->importCombinedMerchantProductOfferData($dataImporterConfigurationTransfer); - } -} -``` - - -**src/Pyz/Zed/MerchantProductOfferDataImport/Communication/Plugin/CombinedMerchantProductOfferStoreDataImportPlugin.php** - -```php -getFacade()->importCombinedMerchantProductOfferStoreData($dataImporterConfigurationTransfer); - } -} -``` - -**src/Pyz/Zed/MerchantProductOfferDataImport/MerchantProductOfferDataImportConfig.php** - -```php -buildImporterConfiguration( - $this->getCombinedMerchantProductOfferFilePath(), - static::IMPORT_TYPE_COMBINED_MERCHANT_PRODUCT_OFFER - ); - } - - /** - * @return \Generated\Shared\Transfer\DataImporterConfigurationTransfer - */ - public function getCombinedMerchantProductOfferStoreDataImporterConfiguration(): DataImporterConfigurationTransfer - { - return $this->buildImporterConfiguration( - $this->getCombinedMerchantProductOfferFilePath(), - static::IMPORT_TYPE_COMBINED_MERCHANT_PRODUCT_OFFER_STORE - ); - } - - /** - * @return string - */ - public function getCombinedMerchantProductOfferFilePath(): string - { - $moduleDataImportDirectory = $this->getDataImportRootPath() . 'common' . DIRECTORY_SEPARATOR . 'common' . DIRECTORY_SEPARATOR; - - return $moduleDataImportDirectory . 'combined_merchant_product_offer.csv'; - } -} -``` - -**src/Pyz/Zed/MerchantProductOfferDataImport/MerchantProductOfferDataImportDependencyProvider.php** - -```php - - - */ - protected function getMandatoryColumns(): array - { - return [ - CombinedPriceProductOfferDataSetInterface::PRICE_TYPE, - CombinedPriceProductOfferDataSetInterface::STORE, - CombinedPriceProductOfferDataSetInterface::CURRENCY, - CombinedPriceProductOfferDataSetInterface::VALUE_NET, - CombinedPriceProductOfferDataSetInterface::VALUE_GROSS, - ]; - } -} -``` - -**src/Pyz/Zed/PriceProductOfferDataImport/Business/Model/DataSet/CombinedPriceProductOfferDataSetInterface.php** - -```php - -src/Pyz/Zed/PriceProductOfferDataImport/Business/PriceProductOfferDataImportBusinessFactory.php - -```php -getConditionalCsvDataImporterFromConfig( - $this->getConfig()->getCombinedPriceProductOfferDataImporterConfiguration() - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker - ->addStep($this->createCombinedProductOfferReferenceToProductOfferDataStep()) - ->addStep($this->createCombinedProductOfferToIdProductStep()) - ->addStep($this->createCombinedPriceTypeToIdPriceTypeStep()) - ->addStep($this->createCombinedPriceProductWriterStep()) - ->addStep($this->createCombinedStoreToIdStoreStep()) - ->addStep($this->createCombinedCurrencyToIdCurrencyStep()) - ->addStep($this->createCombinedPreparePriceDataStep()) - ->addStep($this->createCombinedPriceProductStoreWriterStep()) - ->addStep($this->createPriceProductOfferWriterStep()); - - $dataImporter - ->setDataSetCondition($this->createCombinedPriceProductOfferMandatoryColumnCondition()) - ->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function getConditionalCsvDataImporterFromConfig( - DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - ): DataImporterConditional { - $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration()); - - return $this->createDataImporterConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader); - } - - /** - * @param string $importType - * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function createDataImporterConditional( - string $importType, - DataReaderInterface $reader - ): DataImporterConditional { - return new DataImporterConditional($importType, $reader, $this->getGracefulRunnerFacade()); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferReferenceToProductOfferDataStep(): DataImportStepInterface - { - return new CombinedProductOfferReferenceToProductOfferDataStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferToIdProductStep(): DataImportStepInterface - { - return new CombinedProductOfferToIdProductStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedPriceTypeToIdPriceTypeStep(): DataImportStepInterface - { - return new CombinedPriceTypeToIdPriceTypeStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedPriceProductWriterStep(): DataImportStepInterface - { - return new CombinedPriceProductWriterStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedStoreToIdStoreStep(): DataImportStepInterface - { - return new CombinedStoreToIdStoreStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedCurrencyToIdCurrencyStep(): DataImportStepInterface - { - return new CombinedCurrencyToIdCurrencyStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedPriceProductStoreWriterStep(): DataImportStepInterface - { - return new CombinedPriceProductStoreWriterStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedPreparePriceDataStep(): DataImportStepInterface - { - return new CombinedPreparePriceDataStep($this->getPriceProductFacade(), $this->getUtilEncodingService()); - } - - /** - * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface - */ - public function createCombinedPriceProductOfferMandatoryColumnCondition(): DataSetConditionInterface - { - return new CombinedPriceProductOfferMandatoryColumnCondition(); - } -} -``` - - -**src/Pyz/Zed/PriceProductOfferDataImport/Business/PriceProductOfferDataImportFacade.php** - -```php -getFactory() - ->getCombinedPriceProductOfferDataImport() - ->import($dataImporterConfigurationTransfer); - } -} -``` - - -**src/Pyz/Zed/PriceProductOfferDataImport/Business/PriceProductOfferDataImportFacadeInterface.php** - -```php -getFacade()->importCombinedPriceProductOfferData($dataImporterConfigurationTransfer); - } -} -``` - -**src/Pyz/Zed/PriceProductOfferDataImport/PriceProductOfferDataImportConfig.php** - -```php -getDataImportRootPath() . 'common' . DIRECTORY_SEPARATOR . 'common' . DIRECTORY_SEPARATOR; - - return $this->buildImporterConfiguration( - $moduleDataImportDirectory . 'combined_merchant_product_offer.csv', - static::IMPORT_TYPE_COMBINED_PRICE_PRODUCT_OFFER - ); - } -} -``` - -**src/Pyz/Zed/PriceProductOfferDataImport/PriceProductOfferDataImportDependencyProvider.php** - -```php - - */ - protected function getMandatoryColumns(): array - { - return [ - CombinedProductOfferStockDataSetInterface::STOCK_NAME, - CombinedProductOfferStockDataSetInterface::QUANTITY, - CombinedProductOfferStockDataSetInterface::IS_NEVER_OUT_OF_STOCK, - ]; - } -} -``` - - -**src/Pyz/Zed/ProductOfferStockDataImport/Business/Model/DataSet/CombinedProductOfferStockDataSetInterface.php** - -```php - -src/Pyz/Zed/ProductOfferStockDataImport/Business/ProductOfferStockDataImportBusinessFactory.php - -```php -getConditionalCsvDataImporterFromConfig( - $this->getConfig()->getCombinedProductOfferStockDataImporterConfiguration() - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker - ->addStep($this->createCombinedProductOfferReferenceToIdProductOfferStep()) - ->addStep($this->createCombinedStockNameToIdStockStep()) - ->addStep($this->createCombinedProductOfferStockWriterStep()); - - $dataImporter - ->setDataSetCondition($this->createCombinedProductOfferStockMandatoryColumnCondition()) - ->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function getConditionalCsvDataImporterFromConfig( - DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - ): DataImporterConditional { - $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration()); - - return $this->createDataImporterConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader); - } - - /** - * @param string $importType - * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function createDataImporterConditional( - string $importType, - DataReaderInterface $reader - ): DataImporterConditional { - return new DataImporterConditional($importType, $reader, $this->getGracefulRunnerFacade()); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferReferenceToIdProductOfferStep(): DataImportStepInterface - { - return new CombinedProductOfferReferenceToIdProductOfferStep( - $this->getProductOfferFacade() - ); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedStockNameToIdStockStep(): DataImportStepInterface - { - return new CombinedStockNameToIdStockStep(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferStockWriterStep(): DataImportStepInterface - { - return new CombinedProductOfferStockWriterStep(); - } - - /** - * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface - */ - public function createCombinedProductOfferStockMandatoryColumnCondition(): DataSetConditionInterface - { - return new CombinedProductOfferStockMandatoryColumnCondition(); - } -} -``` - - -**src/Pyz/Zed/ProductOfferStockDataImport/Business/ProductOfferStockDataImportFacade.php** - -```php -getFactory() - ->getCombinedProductOfferStockDataImporter() - ->import($dataImporterConfigurationTransfer); - } -} -``` - -**src/Pyz/Zed/ProductOfferStockDataImport/Business/ProductOfferStockDataImportFacadeInterface.php** - -```php -getFacade()->importCombinedProductOfferStock($dataImporterConfigurationTransfer); - } -} -``` - - -**src/Pyz/Zed/ProductOfferStockDataImport/ProductOfferStockDataImportConfig.php** - -```php -getDataImportRootPath() . 'common' . DIRECTORY_SEPARATOR . 'common' . DIRECTORY_SEPARATOR; - - return $this->buildImporterConfiguration( - $moduleDataImportDirectory . 'combined_merchant_product_offer.csv', - static::IMPORT_TYPE_COMBINED_PRODUCT_OFFER_STOCK - ); - } -} -``` - -**src/Pyz/Zed/ProductOfferStockDataImport/ProductOfferStockDataImportDependencyProvider.php** - -```php - - */ - protected function getMandatoryColumns(): array - { - return [ - CombinedProductOfferValidityDataSetInterface::VALID_FROM, - CombinedProductOfferValidityDataSetInterface::VALID_TO, - ]; - } -} -``` - -**src/Pyz/Zed/ProductOfferValidityDataImport/Business/Model/DataSet/CombinedProductOfferValidityDataSetInterface.php** - -```php - -src/Pyz/Zed/ProductOfferValidityDataImport/Business/ProductOfferValidityDataImportBusinessFactory.php - -```php -getConditionalCsvDataImporterFromConfig( - $this->getConfig()->getCombinedProductOfferValidityDataImporterConfiguration() - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker - ->addStep($this->createCombinedProductOfferReferenceToIdProductOfferStep()) - ->addStep($this->createCombinedProductOfferValidityWriterStep()); - - $dataImporter - ->setDataSetCondition($this->createCombinedProductOfferValidityMandatoryColumnCondition()) - ->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function getConditionalCsvDataImporterFromConfig( - DataImporterConfigurationTransfer $dataImporterConfigurationTransfer - ): DataImporterConditional { - $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration()); - - return $this->createDataImporterConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader); - } - - /** - * @param string $importType - * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader - * - * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional - */ - public function createDataImporterConditional( - string $importType, - DataReaderInterface $reader - ): DataImporterConditional { - return new DataImporterConditional($importType, $reader, $this->getGracefulRunnerFacade()); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferReferenceToIdProductOfferStep(): DataImportStepInterface - { - return new CombinedProductOfferReferenceToIdProductOfferStep( - $this->getProductOfferFacade() - ); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ - public function createCombinedProductOfferValidityWriterStep(): DataImportStepInterface - { - return new CombinedProductOfferValidityWriterStep(); - } - - /** - * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface - */ - public function createCombinedProductOfferValidityMandatoryColumnCondition(): DataSetConditionInterface - { - return new CombinedProductOfferValidityMandatoryColumnCondition(); - } -} -``` - - - -**src/Pyz/Zed/ProductOfferValidityDataImport/Business/ProductOfferValidityDataImportFacade.php** - -```php -getFactory() - ->getCombinedProductOfferValidityDataImporter() - ->import($dataImporterConfigurationTransfer); - } -} -``` - - -**src/Pyz/Zed/ProductOfferValidityDataImport/Business/ProductOfferValidityDataImportFacadeInterface.php** - -```php -getFacade()->importCombinedProductOfferValidity($dataImporterConfigurationTransfer); - } -} -``` - -**src/Pyz/Zed/ProductOfferValidityDataImport/ProductOfferValidityDataImportConfig.php** - -```php -getDataImportRootPath() . 'common' . DIRECTORY_SEPARATOR . 'common' . DIRECTORY_SEPARATOR; - - return $this->buildImporterConfiguration( - $moduleDataImportDirectory . 'combined_merchant_product_offer.csv', - static::IMPORT_TYPE_COMBINED_PRODUCT_OFFER_VALIDITY - ); - } -} -``` - -**src/Pyz/Zed/ProductOfferValidityDataImport/ProductOfferValidityDataImportDependencyProvider.php** - -```php -dataSetCondition = $dataSetCondition; - - return $this; - } -} - -``` - -### 2) Import data - -To import data: - -1. Prepare combined product offer data according to your requirements using the demo data: - -**data/import/common/DE/combined_merchant_product_offer.csv** - -``` -product_offer_reference,merchant_product_offer.concrete_sku,merchant_product_offer.merchant_reference,merchant_product_offer.merchant_sku,merchant_product_offer.is_active,merchant_product_offer.approval_status,merchant_product_offer_store.store_name,product_offer_stock.stock_name,product_offer_stock.quantity,product_offer_stock.is_never_out_of_stock,price_product_offer.price_type,price_product_offer.store,price_product_offer.currency,price_product_offer.value_net,price_product_offer.value_gross,price_product_offer.price_data.volume_prices,product_offer_validity.valid_from,product_offer_validity.valid_to -offer1000,093_24495843,MER000006,SE1000-01,1,approved,DE,Budget Cameras MER000005 Warehouse 1,100,1,DEFAULT,DE,EUR,50,70,,, -offer1000,,,,,,,,,,ORIGINAL,DE,EUR,150,170,,, -offer1000,,,,,,,,,,DEFAULT,AT,EUR,51,71,,, -offer1000,,,,,,,,,,ORIGINAL,AT,EUR,151,171,,, -offer1000,,,,,,AT,,,,,,,,,,, -offer1001,090_24495844,MER000006,SE1001-01,1,approved,DE,Sony Experts MER000006 Warehouse 1,50,0,DEFAULT,DE,EUR,160,180,"[{""quantity"":5,""net_price"":6050,""gross_price"":7065}, {""quantity"":10,""net_price"":5045,""gross_price"":6058}, {""quantity"":20,""net_price"":4040,""gross_price"":5052}]",2021-01-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer1001,,,,,,,,,,DEFAULT,DE,CHF,260,280,,, -``` - - -**data/import/common/US/combined_merchant_product_offer.csv** - -``` -product_offer_reference,merchant_product_offer.concrete_sku,merchant_product_offer.merchant_reference,merchant_product_offer.merchant_sku,merchant_product_offer.is_active,merchant_product_offer.approval_status,merchant_product_offer_store.store_name,product_offer_stock.stock_name,product_offer_stock.quantity,product_offer_stock.is_never_out_of_stock,price_product_offer.price_type,price_product_offer.store,price_product_offer.currency,price_product_offer.value_net,price_product_offer.value_gross,price_product_offer.price_data.volume_prices,product_offer_validity.valid_from,product_offer_validity.valid_to -offer1000,093_24495843,MER000006,SE1000-01,1,approved,DE,Budget Cameras MER000005 Warehouse 1,100,1,DEFAULT,DE,EUR,50,70,,, -offer1000,,,,,,,,,,ORIGINAL,DE,EUR,150,170,,, -offer1000,,,,,,,,,,DEFAULT,AT,EUR,51,71,,, -offer1000,,,,,,,,,,ORIGINAL,AT,EUR,151,171,,, -offer1000,,,,,,AT,,,,,,,,,,, -offer1001,090_24495844,MER000006,SE1001-01,1,approved,DE,Sony Experts MER000006 Warehouse 1,50,0,DEFAULT,DE,EUR,160,180,"[{""quantity"":5,""net_price"":6050,""gross_price"":7065}, {""quantity"":10,""net_price"":5045,""gross_price"":6058}, {""quantity"":20,""net_price"":4040,""gross_price"":5052}]",2021-01-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer1001,,,,,,,,,,DEFAULT,DE,CHF,260,280,,, -``` - - -2. Create combined data importer configuration. - -**data/import/common/combined_merchant_product_offer_import_config_EU.yml** - -``` -# Example of demo shop 'combined merchant product offer' data import. -version: 0 - -actions: - - data_entity: combined-merchant-product-offer - source: data/import/common/DE/combined_merchant_product_offer.csv - - data_entity: combined-merchant-product-offer-store - source: data/import/common/DE/combined_merchant_product_offer.csv - - data_entity: combined-product-offer-validity - source: data/import/common/DE/combined_merchant_product_offer.csv - - data_entity: combined-product-offer-stock - source: data/import/common/DE/combined_merchant_product_offer.csv - - data_entity: combined-price-product-offer - source: data/import/common/DE/combined_merchant_product_offer.csv -``` - - -**data/import/common/combined_merchant_product_offer_import_config_US.yml** - -``` -# Example of demo shop 'combined merchant product offer' data import. -version: 0 - -actions: - - data_entity: combined-merchant-product-offer - source: data/import/common/US/combined_merchant_product_offer.csv - - data_entity: combined-merchant-product-offer-store - source: data/import/common/US/combined_merchant_product_offer.csv - - data_entity: combined-product-offer-validity - source: data/import/common/US/combined_merchant_product_offer.csv - - data_entity: combined-product-offer-stock - source: data/import/common/US/combined_merchant_product_offer.csv - - data_entity: combined-price-product-offer - source: data/import/common/US/combined_merchant_product_offer.csv -``` - - -3. Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| CombinedMerchantProductOfferDataImportPlugin | Imports merchant profile data into the database. | | Pyz\Zed\MerchantProductOfferDataImport\Communication\Plugin | -| CombinedMerchantProductOfferStoreDataImportPlugin | Imports merchant profile address data into the database. | | Pyz\Zed\MerchantProductOfferDataImport\Communication\Plugin | -| CombinedPriceProductOfferDataImportPlugin | Imports merchant profile address data into the database. | | Pyz\Zed\PriceProductOfferDataImport\Communication\Plugin | -| CombinedProductOfferValidityDataImportPlugin | Imports merchant profile address data into the database. | | Pyz\Zed\ProductOfferStockDataImport\Communication | -| CombinedProductOfferStockDataImportPlugin | Imports merchant profile address data into the database. | | Pyz\Zed\ProductOfferValidityDataImport\Communication\Plugin | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php -src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php - - */ - protected function getResourceRoutePlugins(): array - { - return [ - new ProductOfferAvailabilitiesResourceRoutePlugin(), - ]; - } - - /** - * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection - * - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface - */ - protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - MerchantProductOffersRestApiConfig::RESOURCE_PRODUCT_OFFERS, - new ProductOfferAvailabilitiesByProductOfferReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - - - -{% info_block warningBox "Verification" %} - -Make sure that the `ProductOfferAvailabilitiesResourceRoutePlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/product-offers/{% raw %}{{productOfferReference}}{% endraw %}/product-offer-availabilities`. - -Make sure that `ProductOfferAvailabilitiesByProductOfferReferenceResourceRelationshipPlugin` is set up by sending the request `GET https://glue.mysprykershop.com{% raw %}{{url}}{% endraw %}/product-offers/{% raw %}{{productOfferReference}}{% endraw %}?include=product-offer-availabilities`. The response should include the `product-offer-availabilities` resource along with `product-offers`. - -{% endinfo_block %} - - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|---|---|---| -| Marketplace Inventory Management + Wishlist Glue API | | [Glue API: Marketplace Inventory Management + Wishlist feature integration ](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-inventory-management-wishlist-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-inventory-management-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-inventory-management-wishlist-feature-integration.md deleted file mode 100644 index 74a431f4be4..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-inventory-management-wishlist-feature-integration.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: "Glue API: Marketplace Inventory Management + Wishlist feature integration" -description: This document describes how to integrate the Marketplace Inventory Management + Wishlist Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Inventory Management + Wishlist Glue API feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Inventory Management + Wishlist Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Marketplace Wishlist | {{page.version}} |[Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | -| Marketplace Inventory Management API | {{page.version}} | [Glue API: Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-inventory-management-feature-integration.html) | - -### 1) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| AvailabilityWishlistItemExpanderPlugin | Expands the `WishlistItem` transfer object with product concrete availability. | | Spryker\Zed\Availability\Communication\Plugin\Wishlist | -| SellableWishlistItemExpanderPlugin | Expands the `WishlistItem` transfer object with sellable status. | | Spryker\Zed\Availability\Communication\Plugin\Wishlist | -| ProductAvailabilityRestWishlistItemsAttributesMapperPlugin | Maps availability data to the `RestWishlistItemsAttributes` transfer object. | | Spryker\Glue\ProductAvailabilitiesRestApi\Plugin\Wishlist | - -**src/Pyz/Zed/Wishlist/WishlistDependencyProvider.php** - -```php - - */ - protected function getWishlistItemExpanderPlugins(): array - { - return [ - new AvailabilityWishlistItemExpanderPlugin(), - new SellableWishlistItemExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Glue/WishlistsRestApi/WishlistsRestApiDependencyProvider.php** - -```php - - */ - protected function getRestWishlistItemsAttributesMapperPlugins(): array - { - return [ - new ProductAvailabilityRestWishlistItemsAttributesMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `AvailabilityWishlistItemExpanderPlugin` and `ProductAvailabilityRestWishlistItemsAttributesMapperPlugin` are set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items`. You should get the `quantity` value within the `attributes` in the response. - -Make sure that `SellableWishlistItemExpanderPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items`. You should get `availability` value within the `attributes` in the response. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-merchant-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-merchant-feature-integration.md deleted file mode 100644 index b235ba64b6a..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-merchant-feature-integration.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: "Glue API: Marketplace Merchant feature integration" -last_updated: Aug 27, 2021 -description: This document describes the process how to integrate the Marketplace Merchant Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Merchant Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Merchant Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Glue API: Spryker Core Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: -```bash -composer require spryker/merchants-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantsRestApi | vendor/spryker/merchants-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| RestMerchantsAttributesTransfer | class | Created | src/Generated/Shared/Transfer/RestMerchantsAttributesTransfer | -| RestMerchantAddressesAttributesTransfer | class | Created | src/Generated/Shared/Transfer/RestMerchantAddressesAttributesTransfer | -| RestMerchantAddressTransfer | class | Created | src/Generated/Shared/Transfer/RestMerchantAddressTransfer | -| RestLegalInformationTransfer | class | Created | src/Generated/Shared/Transfer/RestLegalInformationTransfer | -| RestOrdersAttributesTransfer.merchantReferences | property | Created | src/Generated/Shared/Transfer/RestOrdersAttributesTransfer | -| RestOrderDetailsAttributesTransfer.merchantReferences | property | Created | src/Generated/Shared/Transfer/RestOrderDetailsAttributesTransfer | -| RestOrderItemsAttributesTransfer.merchantReference | property | Created | src/Generated/Shared/Transfer/RestOrderItemsAttributesTransfer | -| MerchantStorageProfileTransfer.description | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.bannerUrl | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.deliveryTime | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.termsConditions | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.cancellationPolicy | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.imprint | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | -| MerchantStorageProfileTransfer.dataPrivacy | property | Created | src/Generated/Shared/Transfer/MerchantStorageProfileTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantsResourceRoutePlugin | Registers the `merchants` resource. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | -| MerchantAddressesResourceRoutePlugin | Registers the `merchant-addresses` resource. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | -| MerchantAddressByMerchantReferenceResourceRelationshipPlugin | Adds the `merchant-addresses` resource as a relationship of the `merchants` resource. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | -| MerchantByMerchantReferenceResourceRelationshipPlugin | Adds `merchants` resource as a relationship by merchant reference provided in the attributes. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | -| MerchantRestUrlResolverAttributesTransferProviderPlugin | Adds functionality for merchant url resolving to UrlRestApi. | | Spryker\Glue\MerchantsRestApi\Plugin\UrlsRestApi | -| MerchantsByOrderResourceRelationshipPlugin | Adds `merchants` resources as relationship by order merchant references. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | - -**src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** - -```php - - */ - protected function getResourceRoutePlugins(): array - { - return [ - new MerchantsResourceRoutePlugin(), - new MerchantAddressesResourceRoutePlugin(), - ]; - } - - /** - * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection - * - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface - */ - protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - MerchantsRestApiConfig::RESOURCE_MERCHANTS, - new MerchantAddressByMerchantReferenceResourceRelationshipPlugin() - ); - - $resourceRelationshipCollection->addRelationship( - OrdersRestApiConfig::RESOURCE_ORDERS, - new MerchantsByOrderResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -**src/Pyz/Glue/UrlsRestApi/UrlsRestApiDependencyProvider.php** - -```php - - */ - protected function getRestUrlResolverAttributesTransferProviderPlugins(): array - { - return [ - new MerchantRestUrlResolverAttributesTransferProviderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `MerchantsResourceRoutePlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/merchants/{% raw %}{{merchantReference}}{% endraw %}`, `https://glue.mysprykershop.com/merchants`. - -Make sure that the pagination is working by sending the request `GET https://glue.mysprykershop.com/merchants?offset=1&limit=1`. - -Make sure that the `MerchantAddressesResourceRoutePlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/merchants/{% raw %}{{merchantReference}}{% endraw %}/merchant-addresses`. - -Make sure that the `MerchantAddressByMerchantReferenceResourceRelationshipPlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/merchants/{% raw %}{{merchantReference}}{% endraw %}?include=merchant-addresses`. The response should include the `merchant-addresses` resource along with the merchants. - -Make sure that after sending the request `GET https://glue.mysprykershop.com/url-resolver?url={% raw %}{{merchantUrl}{% endraw %}`, the merchant entity type and ID is returned in response. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-cart-feature-integration.md deleted file mode 100644 index 64443a51ae0..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-cart-feature-integration.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Glue API: Marketplace Product + Cart feature integration" -description: This integration guide provides steps on how to integrate the Marketplace Product + Cart Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product + Cart Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer + Cart Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ----------- | ------- | ------------------| -| Cart API | {{page.version}} | [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) | -| Marketplace Product API | {{page.version}} | [Glue API: Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-feature-integration.html) | - - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductCartItemExpanderPlugin | Expands view data for abstract product with merchant data. | | Spryker\Glue\MerchantProductsRestApi\Plugin\CartsRestApi | - -**src/Pyz/Glue/CartsRestApi/CartsRestApiDependencyProvider.php** - -```php - - */ - protected function getCartItemExpanderPlugins(): array - { - return [ - new MerchantProductCartItemExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can add a merchant product to the cart using a `POST` request to `http://glue.de.demo-spryker.com/guest-cart-items or http://glue.de.demo-spryker.com/carts/{% raw %}{{idCart}}{% endraw %}/items`. - -Make sure that when you do a `GET` request for the carts with marketplace products, their merchants are returned as well. `http://glue.de.demo-spryker.com/guest-carts/{idCart}?include=guest-cart-items,merchants` or `http://glue.de.demo-spryker.com/carts/{% raw %}{{idCart}}{% endraw %}?include=items,merchants`. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-feature-integration.md deleted file mode 100644 index 71f095391c4..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-feature-integration.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: "Glue API: Marketplace Product feature integration" -last_updated: Aug 31, 2021 -description: This document describes how to integrate the Marketplace Product Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Glue API: Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html) | -| Marketplace Product | {{page.version}} | [Marketplace Product Feature Integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-feature-integration.html)| - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-products-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProductsRestApi | vendor/spryker/merchant-products-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT| PATH | -|-|-|-|-| -| AbstractProductsRestAttributes.merchantReference | property | Created | src/Generated/Shared/Transfer/AbstractProductsRestAttributesTransfer | -| RestCartItemsAttributes.merchantReference | property | Created | src/Generated/Shared/Transfer/RestCartItemsAttributesTransfer | -| CartItemRequest.merchantReference | property | Created | src/Generated/Shared/Transfer/CartItemRequestTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantByMerchantReferenceResourceRelationshipPlugin | Adds merchants resources as relationship by merchant references in the attributes. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | - -**src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** - -```php -addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - $resourceRelationshipCollection->addRelationship( - CartsRestApiConfig::RESOURCE_CART_ITEMS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - $resourceRelationshipCollection->addRelationship( - CartsRestApiConfig::RESOURCE_GUEST_CARTS_ITEMS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you do a `GET` request to retrieve abstract products that belong to a specific merchant, it returns products' data together with their merchants `http://glue.de.demo-spryker.com/abstract-products/{% raw %}{{abstractProductSku}}{% endraw %}?include=merchants`. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| -------------- | -------------------------------- | ----------------- | -| Marketplace Product + Cart API | | [Glue API: Marketplace Product + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-cart-feature-integration.html) | \ No newline at end of file diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-cart-feature-integration.md deleted file mode 100644 index 634fdc2c8d1..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-cart-feature-integration.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer + Cart feature integration" -last_updated: Aug 31, 2021 -description: This integration guide provides steps on how to integrate the Marketplace Product Offer + Cart Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer + Cart Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer + Cart Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------------- | ------- | ------------------| -| Cart API | {{page.version}} | [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) | -| Marketplace Product Offer API | {{page.version}} | [Glue API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) | -| Marketplace Inventory Management | {{page.version}} | [Marketplace Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| - | - | - | - | -| MerchantProductOfferCartItemMapperPlugin | Maps the merchant product offer reference and merchant reference, coming from the Glue add to cart request, to persistent cart-specific transfer. | Spryker\Zed\MerchantProductOffersRestApi\Communication\Plugin\CartsRestApi | -| MerchantProductOfferCartItemExpanderPlugin | Expands the merchant product offer information with a merchant reference. | | Spryker\Glue\MerchantProductOffersRestApi\Plugin\CartsRestApi | -| MerchantProductOfferRestCartItemsAttributesMapperPlugin | Maps merchant product offer reference and merchant reference to items attributes. | | Spryker\Glue\MerchantProductOffersRestApi\Plugin\CartsRestApi | - -**src/Pyz/Glue/CartsRestApi/CartsRestApiDependencyProvider.php** - -```php - - */ - protected function getRestCartItemsAttributesMapperPlugins(): array - { - return [ - new MerchantProductOfferRestCartItemsAttributesMapperPlugin(), - ]; - } - - /** - * @return array<\Spryker\Glue\CartsRestApiExtension\Dependency\Plugin\CartItemExpanderPluginInterface> - */ - protected function getCartItemExpanderPlugins(): array - { - return [ - new MerchantProductOfferCartItemExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/CartsRestApi/CartsRestApiDependencyProvider.php** - -```php - - */ - protected function getCartItemMapperPlugins(): array - { - return [ - new MerchantProductOfferCartItemMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `MerchantProductOfferCartItemExpanderPlugin` and `MerchantProductOfferCartItemMapperPlugin` are set up by sending the request `POST https://glue.mysprykershop.com/carts/{% raw %}{{cartUuid}}{% endraw %}/items` with the following body and make sure the product has been added to the cart with the offer: - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "091_25873091", - "quantity": "1", - "productOfferReference": "offer3" - } - } -} -``` - -Make sure that `MerchantProductOfferRestCartItemsAttributesMapperPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/carts/{% raw %}{{cartUuid}}{% endraw %}?include=items` to the cart that has an item with a product offer. You should be able to see `productOfferReference` and `merchantReference` attributes among the attributes of the items resource. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-feature-integration.md deleted file mode 100644 index 07112028d97..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-feature-integration.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer feature integration" -last_updated: Sep 9, 2021 -description: This document describes the process how to integrate the Marketplace Product Offer Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Product Offer | {{page.version}} |[Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: -```bash -composer require spryker/merchant-product-offers-rest-api:"^1.1.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProductOffersRestApi | spryker/merchant-product-offers-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| RestProductOffersAttributes | class | Created | src/Generated/Shared/Transfer/RestProductOffersAttributesTransfer | -| PersistentCartChange | class | Created | src/Generated/Shared/Transfer/PersistentCartChangeTransfer | -| RestItemsAttributes.productOfferReference | property | Created | src/Generated/Shared/Transfer/RestItemsAttributesTransfer | -| RestItemsAttributes.merchantReference | property | Created | src/Generated/Shared/Transfer/RestItemsAttributesTransfer | -| CartItemRequest.productOfferReference | property | Created | src/Generated/Shared/Transfer/CartItemRequestTransfer | -| CartItemRequest.merchantReference | property | Created | src/Generated/Shared/Transfer/CartItemRequestTransfer | -| RestCartItemsAttributes.productOfferReference | property | Created | src/Generated/Shared/Transfer/RestCartItemsAttributesTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOffersResourceRoutePlugin | Registers the `product-offers` resource. | | Spryker\Glue\MerchantProductOffersRestApi\Plugin\GlueApplication | -| ConcreteProductsProductOffersResourceRoutePlugin | Registers the `product-offers` resource with `concrete-products`. | | Spryker\Glue\MerchantProductOffersRestApi\Plugin\GlueApplication | -| ProductOffersByProductConcreteSkuResourceRelationshipPlugin | Registers the `product-offers` resource as a relationship to `concrete-products`. | | Spryker\Glue\MerchantProductOffersRestApi\Plugin\GlueApplication | -| MerchantByMerchantReferenceResourceRelationshipPlugin | Adds `merchants` resources as relationship by merchant references in the attributes. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | - -**src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** - -```php - - */ - protected function getResourceRoutePlugins(): array - { - return [ - new ProductOffersResourceRoutePlugin(), - new ConcreteProductsProductOffersResourceRoutePlugin(), - ]; - } - - /** - * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection - * - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface - */ - protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS, - new ProductOffersByProductConcreteSkuResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - MerchantProductOffersRestApiConfig::RESOURCE_PRODUCT_OFFERS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `ProductOffersResourceRoutePlugin` is set up by sending the request `GET https://glue.mysprykershop.com/product-offers/{% raw %}{{offerReference}}{% endraw %}`. - -Make sure that `ConcreteProductsProductOffersResourceRoutePlugin` is set up by sending the request `GET https://glue.mysprykershop.com/concrete-products/{% raw %}{{sku}}{% endraw %}/product-offers`. - -Make sure that `ProductOffersByProductConcreteSkuResourceRelationshipPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/concrete-products/{% raw %}{{sku}}{% endraw %}?include=product-offers`. You should get `concrete-products` with all product’s `product-offers` as relationships. - -Make sure that `MerchantByMerchantReferenceResourceRelationshipPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/product-offers/{% raw %}{{sku}}{% endraw %}?include=merchants`. The response should include the `merchants` resource along with `product-offers`. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| -------------- | -------------------------------- | ----------------- | -| Marketplace Product Offer + Prices API | | [Glue API: Marketplace Product Offer + Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) | -| Marketplace Product Offer + Volume Prices API | | [Glue API: Marketplace Product Offer + Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-volume-prices-feature-integration.html) | -| Marketplace Product Offer + Wishlist API | | [Glue API: Marketplace Product Offer + Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-wishlist-feature-integration.html) | -| Marketplace Product Offer + Cart API | | [Glue API: Marketplace Product Offer + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-cart-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-feature-integration.md deleted file mode 100644 index 5c59e09a891..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-feature-integration.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer Prices feature integration" -last_updated: Nov 10, 2020 -description: This document describes the process how to integrate the Marketplace Product Offer Prices Glue API feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202200.0/glue/marketplace-product-offer-prices-feature-integration.html ---- - -This document describes how to integrate the Marketplace Product Offer Prices Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer Prices Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Product Offer Prices | {{page.version}} | [Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/product-offer-prices-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| ProductOfferPricesRestApi | spryker/product-offer-prices-rest-api | - -{% endinfo_block %} - -### 2) Set up database schema and transfer objects - -Update the database and generate transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `src/Orm/Zed/ProductStorage/Persistence/Base/SpyProductConcreteStorage.php` class contains the `syncPublishedMessageForMappings` public function. - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| RestProductOfferPriceAttributes | class | Created | src/Generated/Shared/Transfer/RestProductOffersAttributesTransfer | - -{% endinfo_block %} - -### 3) Enable Product Offer Prices resources and relationships - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOfferPricesResourceRoutePlugin | Registers the `product-offer-prices` resource. | | Spryker\Glue\ProductOfferPricesRestApi\Plugin\GlueApplication | -| ProductOfferPriceByProductOfferReferenceResourceRelationshipPlugin | Registers the `product-offer-prices` resource as a relationship to `product-offers`. | | Spryker\Glue\ProductOfferPricesRestApi\Plugin\GlueApplication | - - -
src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php - - */ - protected function getResourceRoutePlugins(): array - { - return [ - new ProductOfferPricesResourceRoutePlugin(), - ]; - } - - /** - * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection - * - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface - */ - protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - MerchantProductOffersRestApiConfig::RESOURCE_PRODUCT_OFFERS, - new ProductOfferPriceByProductOfferReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that the `ProductOfferPricesResourceRoutePlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/product-offers/{% raw %}{{offerReference}}{% endraw %}/product-offer-prices`. - -Make sure that the `ProductOfferPriceByProductOfferReferenceResourceRelationshipPlugin` plugin is set up by sending the request `GET https://glue.mysprykershop.com/product-offers/{% raw %}{{offerReference}}{% endraw %}?include=product-offer-prices`. You should get `product-offers` with all product offer’s `product-offer-prices` as relationships. - -{% endinfo_block %} - - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|---|---|---| -| Marketplace Product Offer Prices + Wishlist Glue API | ✓ | [Glue API: Marketplace Product Offer Prices + Wishlist feature integration ](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-wishlist-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-wishlist-feature-integration.md deleted file mode 100644 index f8d282e2542..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-prices-wishlist-feature-integration.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer Prices + Wishlist feature integration" -description: This document describes how to integrate the Marketplace Product Offer Prices + Wishlist Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer Prices + Wishlist Glue API feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer Prices + Wishlist Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Marketplace Wishlist | {{page.version}} |[Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | -| Marketplace Product Offer Prices API | {{page.version}} |[Glue API: Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) | - - -### 1) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| PriceProductOfferWishlistItemExpanderPlugin | Expands the `WishlistItem` transfer object with product offer prices. | | Spryker\Zed\PriceProductOffer\Communication\Plugin\Wishlist | -| PriceProductOfferVolumeExtractorPlugin | Extracts volume prices from the price product offer collection. | | Spryker\Zed\PriceProductOfferVolume\Communication\Plugin\PriceProductOffer | - -**src/Pyz/Zed/Wishlist/WishlistDependencyProvider.php** - -```php - - */ - protected function getWishlistItemExpanderPlugins(): array - { - return [ - new PriceProductOfferWishlistItemExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/PriceProductOffer/PriceProductOfferDependencyProvider.php** - -```php - - */ - protected function getPriceProductOfferExtractorPlugins(): array - { - return [ - new PriceProductOfferVolumeExtractorPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `PriceProductOfferWishlistItemExpanderPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items`. You should get the price product collection within the `attributes` in the response. - -Make sure that `PriceProductOfferVolumeExtractorPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items,selected-product-offers,product-offer-prices`. You should get the product offer volume prices within the `prices` in the response. - -{% endinfo_block %} \ No newline at end of file diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-volume-prices-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-volume-prices-feature-integration.md deleted file mode 100644 index 7f02638afee..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-volume-prices-feature-integration.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer Volume Prices feature integration" -last_updated: Dec 04, 2020 -description: This document describes how to integrate the Offers Volume Prices Glue API feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-volume-prices.html - - /docs/marketplace/dev/feature-integration-guides/202204.0/glue/marketplace-product-offer-volume-prices.html ---- - -This document describes how to integrate the Offers Volume Prices Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Offer Volume Prices Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-| - | -| Marketplace Product Offer Prices | {{page.version}} | [Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | -| Marketplace Product Offer Volume Prices | {{page.version}} | Marketplace Product Offer Volume Prices feature integration | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/price-product-offer-volumes-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| PriceProductOfferVolumesRestApi | spryker/price-product-offer-volumes-rest-api | - -{% endinfo_block %} - -### 2) Set up database and transfer objects - -Update the database and generate transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| RestProductOfferPriceAttributes.volumePrices | property | Created | src/Generated/Shared/Transfer/RestProductOffersAttributesTransfer | - -{% endinfo_block %} - -### 3) Enable Product Offer Prices resources and relationships - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| RestProductOfferPricesAttributesMapperPlugin | Extends `RestProductOfferPricesAttributesTransfer` with volume price data. | | Spryker\Glue\PriceProductOfferVolumesRestApi\Plugin | - -**src/Pyz/Glue/ProductOfferPricesRestApi/ProductOfferPricesRestApiDependencyProvider.php** - -```php - - */ - protected function getRestProductOfferPricesAttributesMapperPlugins(): array - { - return [ - new RestProductOfferPricesAttributesMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `ProductOfferPricesRestApiDependencyProvider` plugin is set up by having product offer volumes over sending the request `GET https://glue.mysprykershop.com//concrete-products/{% raw %}{{concreteProductId}}{% endraw %}?include=product-offers,product-offer-prices`. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-wishlist-feature-integration.md deleted file mode 100644 index 565dd1d1222..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-product-offer-wishlist-feature-integration.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: "Glue API: Marketplace Product Offer + Wishlist feature integration" -last_updated: Sep 13, 2021 -description: This document describes how to integrate the Marketplace Product Offer + Wishlist Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer + Wishlist Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer + Wishlist Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Wishlist | {{page.version}} |[Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | -| Marketplace Product Offer API | {{page.version}} | [Glue API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-product-offer-wishlist-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProductOfferWishlistRestApi | spryker/merchant-product-offer-wishlist-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| WishlistItemRequest.productOfferReference | property | Created | src/Generated/Shared/Transfer/WishlistItemRequestTransfer | -| RestWishlistItemsAttributes.productOfferReference | property | Created | src/Generated/Shared/Transfer/RestWishlistItemsAttributesTransfer | -| RestWishlistItemsAttributes.merchantReference | property | Created | src/Generated/Shared/Transfer/RestWishlistItemsAttributesTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| MerchantProductOfferAddItemPreCheckPlugin | Returns `WishlistPreAddItemCheckResponse.isSuccess=false` if no product offers found by the `WishlistItem.productOfferReference` transfer property. | | Spryker\Zed\MerchantProductOfferWishlist\Communication\Plugin\Wishlist | -| ProductOfferRestWishlistItemsAttributesMapperPlugin | Populates `RestWishlistItemsAttributes.id` with the following pattern: `{WishlistItem.sku}_{WishlistItemTransfer.productOfferReference}`. | | Spryker\Glue\MerchantProductOfferWishlistRestApi\Plugin\Wishlist | -| ProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin | Checks if requested the wishlist item exists in the wishlist item collection. | | Spryker\Zed\MerchantProductOfferWishlistRestApi\Communication\Plugin | -| EmptyProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin | Checks if the requested wishlist item exists in the wishlist item collection. | | Spryker\Zed\MerchantProductOfferWishlistRestApi\Communication\Plugin | -| MerchantByMerchantReferenceResourceRelationshipPlugin | Adds `merchants` resources as relationship by merchant references in the attributes. | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | - -
src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php -addRelationship( - WishlistsRestApiConfig::RESOURCE_WISHLIST_ITEMS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -
- -
src/Pyz/Zed/Wishlist/WishlistDependencyProvider.php - -```php - - */ - protected function getAddItemPreCheckPlugins(): array - { - return [ - new MerchantProductOfferAddItemPreCheckPlugin(), - ]; - } - -} -``` -
- -
src/Pyz/Glue/WishlistsRestApi/WishlistsRestApiDependencyProvider.php - -```php - - */ - protected function getRestWishlistItemsAttributesMapperPlugins(): array - { - return [ - new ProductOfferRestWishlistItemsAttributesMapperPlugin(), - ]; - } -} -``` -
- -
src/Pyz/Zed/WishlistsRestApi/WishlistsRestApiDependencyProvider.php - -```php - - */ - protected function getRestWishlistItemsAttributesDeleteStrategyPlugins(): array - { - return [ - new ProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin(), - new EmptyProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin(), - ]; - } -} -``` -
- -{% info_block warningBox "Verification" %} - -Make sure that `ProductOfferRestWishlistItemsAttributesMapperPlugin` is set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items`. You should get `attributes` in the response. - -Make sure that `MerchantProductOfferAddItemPreCheckPlugin` is set up by sending the request `POST https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}/wishlist-items`. You should have the wishlist item added only when the product has the specified offer reference. - -Make sure that `ProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin` and `EmptyProductOfferRestWishlistItemsAttributesDeleteStrategyPlugin` are set up by sending the request `DELETE https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}/wishlist-items/{% raw %}{{wishlistItemId}}{% endraw %}`. You should get the product offer wishlist item deleted. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-return-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-return-management-feature-integration.md deleted file mode 100644 index d84349c05aa..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/marketplace-return-management-feature-integration.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: "Glue API: Marketplace Return Management feature integration" -last_updated: Apr 8, 2021 -description: This document describes the process how to integrate the Marketplace Return Management API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Return Management API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Return Management Glue API feature core. - -### Prerequisites - - -Install the required features: - - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ------ | --------| -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Marketplace Return Management | {{page.version}} | [Marketplace Return Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-return-management-feature-integration.html) | - -### 1) Install the required modules using Сomposer - - -Install the required modules: - -```bash -composer require spryker/merchant-sales-returns-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------- | ------------------- | -|MerchantSalesReturnsRestApi | spryker/merchant-sales-returns-rest-api | - -{% endinfo_block %} - - -### 2) Set up transfer objects - - -Generate transfers: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - - -Ensure the following transfers have been created: - -| TRANSFER | TYPE | EVENT | PATH | -| --------- | ------- | ----- | ------------- | -| RestReturnsAttributes.merchantReference | attribute | created |src/Generated/Shared/Transfer/RestReturnsAttributesTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------ | ----------- | ----- | ------------ | -| MerchantByMerchantReferenceResourceRelationshipPlugin | Adds `merchants` resources as relationship by merchant references in the attributes | | Spryker\Glue\MerchantsRestApi\Plugin\GlueApplication | - -
-src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php -addRelationship( - SalesReturnsRestApiConfig::RESOURCE_RETURNS, - new MerchantByMerchantReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } - -} -``` - -
- -{% info_block warningBox "Verification" %} - - -Make sure that the `MerchantByMerchantReferenceResourceRelationshipPlugin` -plugin is set up by: -1. Sending the request `GET https://glue.mysprykershop.com/returns/{% raw %}{{returnId}}{% endraw %}include=merchants`. - -Verify that the returned data includes `merchant` resource attributes. - -2. Sending the request `GET https://glue.mysprykershop.com/returns`. - -Verify that the returned data includes the `merchantReference`. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-category-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-category-feature-integration.md deleted file mode 100644 index 22aa8583b9f..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-category-feature-integration.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: "Glue API: Merchant Category feature integration" -last_updated: Mar 04, 2021 -description: This document describes the process how to integrate the Merchant Category Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Category Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Category Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ---------------- | ------ | ------------------ | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant Category | {{page.version}} | [Marketplace Merchant Category feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-category-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-categories-rest-api:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------------- | ----------------- | -| MerchantCategoriesRestApi | vendor/spryker/merchant-categories-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| -------------- | ---- | ----- | ------------------ | -| RestMerchantsAttributes | object | Created | src/Generated/Shared/Transfer/RestMerchantsAttributes | - -{% endinfo_block %} - -### 3) Enable resources and relationships - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --------------- | -------------- | ------------- | ----------------- | -| MerchantCategoryMerchantRestAttributesMapperPlugin | Maps active categories from `MerchantStorageTransfer` to `RestMerchantsAttributesTransfer`. | | Spryker\Glue\MerchantCategoriesRestApi\Plugin\MerchantsRestApi | - -**src/Pyz/Glue/MerchantsRestApi/MerchantsRestApiDependencyProvider.php** - -```php - - */ - public function getMerchantRestAttributesMapperPlugins(): array - { - return [ - new MerchantCategoryMerchantRestAttributesMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you send the request `GET https://glue.mysprykershop.com/merchants`, you can see the category keys and names for merchants assigned to categories. - -Make sure that when you send the request `GET https://glue.mysprykershop.com/merchants?category-keys[]={% raw %}{{some-category-key}}{% endraw %}`, you can see only merchants that belong to the particular category in the response. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-opening-hours-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-opening-hours-feature-integration.md deleted file mode 100644 index 257350be0d4..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/merchant-opening-hours-feature-integration.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: "Glue API: Merchant Opening Hours feature integration" -last_updated: Dec 04, 2020 -description: This document describes how to integrate the Merchant Opening Hours Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Opening Hours Glue API feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Opening Hours Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ----------- | ------ | --------------| -| Merchant Opening Hours | {{page.version}} | [Merchant Opening Hours feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-opening-hours-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-opening-hours-rest-api:"^1.0.0" -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------ | ----------------- | -| MerchantOpeningHoursRestApi | spryker/merchant-opening-hours-rest-api | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| -------------- | ---- | ------ | ------------------ | -| RestMerchantOpeningHoursAttributes | class | Created | src/Generated/Shared/Transfer/RestMerchantOpeningHoursAttributesTransfer | - -{% endinfo_block %} - -### 3) Enable merchant product offers resources and relationships - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ----------------- | -------------- | --------------- | ---------------- | -| MerchantOpeningHoursResourceRoutePlugin | Registers the `merchant-opening-hours` resource. | | Spryker\Glue\MerchantOpeningHoursRestApi\Plugin\GlueApplication | -| MerchantOpeningHoursByMerchantReferenceResourceRelationshipPlugin | Registers the `merchant-opening-hours` resource as a relationship to the merchants resource. | | Spryker\Glue\MerchantOpeningHoursRestApi\Plugin\GlueApplication | - -**src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** - -```php - - */ - protected function getResourceRoutePlugins(): array - { - return [ - new MerchantOpeningHoursResourceRoutePlugin(), - ]; - } - - /** - * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection - * - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface - */ - protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - MerchantsRestApiConfig::RESOURCE_MERCHANTS, - new MerchantOpeningHoursByMerchantReferenceResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `MerchantOpeningHoursByMerchantReferenceResourceRelationshipPlugin` is set up by sending the request `GET https://glue.mysprykershop.comm/merchants/{% raw %}{{merchant-reference}}{% endraw %}?include=merchant-opening-hours`. You should get merchants with all merchant opening hours as relationships. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/prices-marketplace-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/glue/prices-marketplace-wishlist-feature-integration.md deleted file mode 100644 index 53b8f434fc4..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/glue/prices-marketplace-wishlist-feature-integration.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: "Glue API: Prices + Marketplace Wishlist feature integration" -description: This document describes how to integrate the Prices + Marketplace Wishlist Glue API feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Prices + Marketplace Wishlist Glue API feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Prices + Marketplace Wishlist Glue API feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Marketplace Wishlist | {{page.version}} |[Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | -| Product Prices API | {{page.version}} |[Glue API: Product Prices feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-price-feature-integration.html) | - - -### 1) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| PriceProductWishlistItemExpanderPlugin | Expands the `WishlistItem` transfer object with prices. | | Spryker\Zed\PriceProduct\Communication\Plugin\Wishlist | -| ProductPriceRestWishlistItemsAttributesMapperPlugin | Maps prices to the `RestWishlistItemsAttributes` transfer object. | | Spryker\Glue\ProductPricesRestApi\Plugin\Wishlist | - -**src/Pyz/Zed/Wishlist/WishlistDependencyProvider.php** - -```php - - */ - protected function getWishlistItemExpanderPlugins(): array - { - return [ - new PriceProductWishlistItemExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Glue/WishlistsRestApi/WishlistsRestApiDependencyProvider.php** - -```php - - */ - protected function getRestWishlistItemsAttributesMapperPlugins(): array - { - return [ - new ProductPriceRestWishlistItemsAttributesMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `PriceProductWishlistItemExpanderPlugin` and `ProductPriceRestWishlistItemsAttributesMapperPlugin` are set up by sending the request `GET https://glue.mysprykershop.com/wishlists/{% raw %}{{wishlistId}}{% endraw %}?include=wishlist-items`. You should get the price product collection within the `attributes` in the response. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-cart-feature-integration.md deleted file mode 100644 index 8bd3aca361f..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-cart-feature-integration.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Marketplace Cart feature integration -last_updated: Jan 05, 2021 -description: This document describes the process how to integrate the Marketplace Cart integration feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Cart feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Cart feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ----------- | ------- | ------------------| -| Cart | {{page.version}} | [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) | -| Order Threshold | {{page.version}} | [Order Threshold feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) | -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-cart:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------- | --------------------- | -| CartNoteMerchantSalesOrderGui | vendor/spryker/cart-note-merchant-sales-order-gui | - -{% endinfo_block %} - -### 2) Set up configuration - -Add the following configuration: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -| ------------- | ------------- | --------- | -| MerchantSalesOrderMerchantUserGuiConfig::getMerchantSalesOrderDetailExternalBlocksUrls() | Introduces a list of urls for order details page configuration. | src/Pyz/Zed/MerchantSalesOrderMerchantUserGui/MerchantSalesOrderMerchantUserGuiConfig.php | - -```php - - */ - public function getMerchantSalesOrderDetailExternalBlocksUrls(): array - { - return [ - 'cart_note' => '/cart-note-merchant-sales-order-gui/merchant-sales-order/list', - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Ensure that the cart notes are displayed on the order view page when looking at merchant orders in the Back Office. - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Marketplace Cart feature frontend. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | -| -------------------- | ----------- | -| Order Threshold | {{page.version}} | -| Cart | {{page.version}} | -| Merchant Portal Core | {{page.version}} | -| Marketplace Order Management | {{page.version}} | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/cart-note-merchant-portal-gui:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------------- | ------------------------------------- | -| CartNoteMerchantPortalGui | spryker/cart-note-merchant-portal-gui | - -{% endinfo_block %} - -### 2) Set up behavior - -Add the following configuration to the project: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| -------------------- | ------------------ | ----------- | ------------------ | -| CartNoteMerchantOrderItemTableExpanderPlugin | Adds CartNote column to Sales tables in MerchantPortal | Marketplace Sales Merchant Portal integrated | Spryker\Zed\CartNoteMerchantPortalGui\Communication\Plugin | - -**src/Pyz/Zed/SalesMerchantPortalGui/SalesMerchantPortalGuiDependencyProvider.php** - -```php - - */ - protected function getMerchantOrderItemTableExpanderPlugins(): array - { - return [ - new CartNoteMerchantOrderItemTableExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `CartNoteMerchantOrderItemTableExpanderPlugin` plugin is set up by opening `http://zed.mysprykershop.com/sales-merchant-portal-gui/orders`. Click on any order and check that the *Cart Note* column is present. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-dummy-payment-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-dummy-payment-feature-integration.md deleted file mode 100644 index 2bb5869a9d7..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-dummy-payment-feature-integration.md +++ /dev/null @@ -1,292 +0,0 @@ ---- -title: Marketplace Dummy Payment -last_updated: Oct 05, 2021 -description: This document describes the process how to integrate the Marketplace Dummy Payment into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Dummy Payment into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Dummy Payment feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| - | - | - | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Payments | {{page.version}} | [Payments feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/payments-feature-integration.html) | -| Checkout | {{page.version}} | [Checkout feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) - - -### 1) Install required modules using Сomposer - -Install the required modules: - -```bash -composer require spryker/dummy-marketplace-payment:^0.2.2 --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| DummyMarketplacePayment | vendor/spryker/dummy-marketplace-payment | - -{% endinfo_block %} - -### 2) Set up configuration - -Add the following configuration: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -| ------------- | ------------ | ------------ | -| config_default-docker.php | Default docker specific configuration of entire application | config/Shared/config_default-docker.php | -| config_default.php | Default configuration of entire application | config/Shared/config_default.php | - -**config/Shared/config_default-docker.php** - -```php -use Spryker\Shared\DummyMarketplacePayment\DummyMarketplacePaymentConfig; - - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - 'MarketplacePayment01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - DummyMarketplacePaymentConfig::PAYMENT_METHOD_DUMMY_MARKETPLACE_PAYMENT_INVOICE => 'MarketplacePayment01', -]; -``` - -**config/Shared/config_default.php** - -```php -use Spryker\Shared\DummyMarketplacePayment\DummyMarketplacePaymentConfig; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - 'MarketplacePayment01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - DummyMarketplacePaymentConfig::PAYMENT_METHOD_DUMMY_MARKETPLACE_PAYMENT_INVOICE => 'MarketplacePayment01', -]; -``` - -### 3) Set up transfer objects - -Run the following command: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following transfer objects are generated: - -| TRANSFER | TYPE | EVENT | PATH | -| --------- | ------- | ----- | ------------- | -| DummyMarketplacePayment | class | created | src/Generated/Shared/Transfer/DummyMarketplacePayment | -| Payment.dummyMarketplacePaymentInvoice | property | created | src/Generated/Shared/Transfer/Payment | -| Order.dummyMarketplacePaymentInvoice | property | created | src/Generated/Shared/Transfer/Order | - -{% endinfo_block %} - -### 4) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| --------- | ------- | ----- | ------------- | -| MerchantProductItemPaymentMethodFilterPlugin | If not all order items contain of product reference, then filters dummy marketplace payment methods out. | | Spryker\Zed\DummyMarketplacePayment\Communication\Plugin\Payment\MerchantProductItemPaymentMethodFilterPlugin | - -**src/Pyz/Zed/Payment/PaymentDependencyProvider.php** - -```php - - */ - protected function getPaymentMethodFilterPlugins(): array - { - return [ - new MerchantProductItemPaymentMethodFilterPlugin(), - ]; - } -} -``` - -### 5) Import data - -1. Extend and import payment method data: - -**data/import/payment_method.csv** - -``` -payment_method_key,payment_method_name,payment_provider_key,payment_provider_name,is_active -dummyMarketplacePaymentInvoice,Invoice,DummyMarketplacePayment,Dummy Marketplace Payment,1 -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| payment_method_key | ✓ | string | dummyMarketplacePaymentInvoice | Payment method key. | -| payment_method_name | ✓ | string | Invoice | Payment method name. | -| payment_provider_key | ✓ | string | DummyMarketplacePayment | Payment provider key. | -| payment_provider_name | ✓ | string | Dummy Marketplace Payment | Payment provider name. | -| is_active | | boolean | 1 | Is payment method active. | - -2. Extend and import payment store data: - -**data/import/payment_method_store.csv** - -``` -payment_method_key,store -dummyMarketplacePaymentInvoice,DE -dummyMarketplacePaymentInvoice,AT -dummyMarketplacePaymentInvoice,US -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| payment_method_key | ✓ | string | dummyMarketplacePaymentInvoice | Payment method key. | -| store | ✓ | string | DE | Store identifier. | - -3. Import data: - -```bash -console data:import payment-method -console data:import payment-method-store -``` - -{% info_block warningBox "Verification" %} - -Make sure that the new payment method is added to the `spy_payment_method` and `spy_payment_method_store` tables in the database. - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Dummy Payment feature frontend. - -### 1) Add translations - -Append glossary according to your configuration: - -**data/import/glossary.csv** - -```yaml -DummyMarketplacePaymentInvoice,Invoice,en_US -DummyMarketplacePaymentInvoice,Auf Rechnung,de_DE -dummyMarketplacePaymentInvoice.invoice,Pay with invoice:,en_US -dummyMarketplacePaymentInvoice.invoice,Auf Rechnung bezahlen:,de_DE -checkout.payment.provider.DummyMarketplacePayment,Dummy Marketplace Payment,en_US -checkout.payment.provider.DummyMarketplacePayment,Beispiel Marktplatz Zahlungsmethode,de_DE -``` - -Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data is added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 2) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| --------- | ------- | ----- | ------------- | -| DummyMarketplacePaymentHandlerPlugin | Expands Payment transfer with payment provider and payment selection. | | Spryker\Yves\DummyMarketplacePayment\Plugin\StepEngine\DummyMarketplacePaymentHandlerPlugin | -| DummyMarketplacePaymentInvoiceSubFormPlugin | Creates sub form for Invoice payment method. | | Spryker\Yves\DummyMarketplacePayment\Plugin\StepEngine\SubForm\DummyMarketplacePaymentInvoiceSubFormPlugin | - -**src/Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php** - -```php -extendPaymentMethodHandler($container); - $container = $this->extendSubFormPluginCollection($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendPaymentMethodHandler(Container $container): Container - { - $container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $paymentMethodHandler) { - $paymentMethodHandler->add( - new DummyMarketplacePaymentHandlerPlugin(), - DummyMarketplacePaymentConfig::PAYMENT_METHOD_DUMMY_MARKETPLACE_PAYMENT_INVOICE - ); - - return $paymentMethodHandler; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendSubFormPluginCollection(Container $container): Container - { - $container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $paymentSubFormPluginCollection) { - $paymentSubFormPluginCollection->add(new DummyMarketplacePaymentInvoiceSubFormPlugin()); - - return $paymentSubFormPluginCollection; - }); - - return $container; - } -} -``` - -{% info_block warningBox "Verification" %} - -Add a merchant product to a shopping cart, go to checkout and make sure that Dummy Payment Invoice payment method is available. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-feature-integration.md deleted file mode 100644 index d3551de8772..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-feature-integration.md +++ /dev/null @@ -1,740 +0,0 @@ ---- -title: Marketplace Inventory Management feature integration -last_updated: Sep 07, 2021 -description: This document describes the process how to integrate the Marketplace Inventory Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Inventory Management feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Inventory Management feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Glue API: Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html) | -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | -| Inventory Management | {{page.version}} | [Inventory Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/inventory-management-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-inventory-management:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantStock | vendor/spryker/merchant-stock | -| MerchantStockDataImport | vendor/spryker/merchant-stock-data-import | -| MerchantStockGui | vendor/spryker/merchant-stock-gui | -| ProductOfferStock | vendor/spryker/product-offer-stock | -| ProductOfferStockDataImport | vendor/spryker/product-offer-stock-data-import | -| ProductOfferStockGui | vendor/spryker/product-offer-stock-gui | -| ProductOfferStockGuiExtension | vendor/spryker/product-offer-stock-gui-extension | -| ProductOfferAvailability | vendor/spryker/product-offer-availability | -| ProductOfferAvailabilityStorage | vendor/spryker/product-offer-availability-storage | - -{% endinfo_block %} - - -### 2) Set up the database schema - -Adjust the schema definition so entity changes trigger events: - -**src/Pyz/Zed/ProductOfferStock/Persistence/Propel/Schema/spy_product_offer_stock.schema.xml** - -```xml - - - - - - - -
-
-``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -|-|-|-| -| spy_merchant_stock | table | created | -| spy_product_offer_stock | table | created | -| spy_product_offer_availability_storage | table | created | - -{% endinfo_block %} - -### 3) Set up transfer objects - -Generate transfers: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| MerchantStock | class | Created | src/Generated/Shared/Transfer/MerchantStockTransfer | -| MerchantStockCriteria | class | Created | src/Generated/Shared/Transfer/MerchantStockCriteriaTransfer | -| ProductAvailabilityCriteria | class | Created | src/Generated/Shared/Transfer/ProductAvailabilityCriteriaTransfer | -| ProductConcreteAvailability | class | Created | src/Generated/Shared/Transfer/ProductConcreteAvailabilityTransfer | -| ProductOfferAvailabilityRequest | class | Created | src/Generated/Shared/Transfer/ProductOfferAvailabilityRequestTransfer | -| ProductOfferAvailabilityStorage | class | Created | src/Generated/Shared/Transfer/ProductOfferAvailabilityStorageTransfer | -| ProductOfferStock | class | Created | src/Generated/Shared/Transfer/ProductOfferStockTransfer | -| ProductOfferStockRequest | class | Created | src/Generated/Shared/Transfer/ProductOfferStockRequestTransfer | -| ReservationRequest | class | Created | src/Generated/Shared/Transfer/ReservationRequestTransfer | -| SpyMerchantStockEntity | class | Created | src/Generated/Shared/Transfer/SpyMerchantStockEntityTransfer | -| SpyMerchantUserEntity | class | Created | src/Generated/Shared/Transfer/SpyMerchantUserEntityTransfer | -| SpyProductOfferAvailabilityStorageEntity | class | Created | src/Generated/Shared/Transfer/SpyProductOfferAvailabilityStorageEntityTransfer | -| SpyProductOfferStockEntity | class | Created | src/Generated/Shared/Transfer/SpyProductOfferStockEntityTransfer | - -{% endinfo_block %} - -### 4) Add Zed translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 5) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantStockMerchantExpanderPlugin | Expands MerchantTransfer with related stocks. | | Spryker\Zed\MerchantStock\Communication\Plugin\Merchant | -| MerchantStockMerchantPostCreatePlugin | Creates default stock for the merchant. | | Spryker\Zed\MerchantStock\Communication\Plugin\Merchant | -| MerchantStockMerchantFormExpanderPlugin | Expands MerchantForm with form field for merchant warehouses. | | Spryker\Zed\MerchantStockGui\Communication\Plugin\MerchantGui | -| ProductOfferStockProductOfferExpanderPlugin | Expands ProductOfferTransfer with Product Offer Stock. | | Spryker\Zed\ProductOfferStock\Communication\Plugin\ProductOffer | -| ProductOfferStockProductOfferPostCreatePlugin | Persists product offer stock on product offer create. | | Spryker\Zed\ProductOfferStock\Communication\Plugin\ProductOffer | -| ProductOfferStockProductOfferPostUpdatePlugin | Persists product offer stock on product offer updated. | | Spryker\Zed\ProductOfferStock\Communication\Plugin\ProductOffer | -| ProductOfferAvailabilityStrategyPlugin | Reads product offer availability. | | Spryker\Zed\ProductOfferAvailability\Communication\Plugin\Availability | -| ProductOfferStockProductOfferViewSectionPlugin | Shows stock section at product offer view page in Zed. | | Spryker\Zed\ProductOfferStockGui\Communication\Plugin\ProductOffer | - -**src/Pyz/Zed/Merchant/MerchantDependencyProvider.php** - -```php - - */ - protected function getMerchantPostCreatePlugins(): array - { - return [ - new MerchantStockMerchantPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantExtension\Dependency\Plugin\MerchantExpanderPluginInterface> - */ - protected function getMerchantExpanderPlugins(): array - { - return [ - new MerchantStockMerchantExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you retrieve merchant using `MerchantFacade::get()` the response transfer contains merchant stocks. - -Make sure that when you create a merchant in Zed UI, its stock also gets created in the `spy_merchant_stock` table. - -{% endinfo_block %} - -**src/Pyz/Zed/MerchantGui/MerchantGuiDependencyProvider.php** - -```php - - */ - protected function getMerchantFormExpanderPlugins(): array - { - return [ - new MerchantStockMerchantFormExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you edit some merchant on `http://zed.de.demo-spryker.com/merchant-gui/list-merchant`, you can see the `Warehouses` field. - -{% endinfo_block %} - -**src/Pyz/Zed/ProductOfferGui/ProductOfferGuiDependencyProvider.php** - -```php - - */ - public function getProductOfferViewSectionPlugins(): array - { - return [ - new ProductOfferStockProductOfferViewSectionPlugin(), - ]; - } -} - -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you view some product offer at `http://zed.de.demo-spryker.com/product-offer-gui/view?id-product-offer={{idProductOffer}}`, you can see the `Stock` section. - -{% endinfo_block %} - -**src/Pyz/Zed/ProductOffer/ProductOfferDependencyProvider.php** - -```php - - */ - protected function getProductOfferPostCreatePlugins(): array - { - return [ - new ProductOfferStockProductOfferPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferPostUpdatePluginInterface> - */ - protected function getProductOfferPostUpdatePlugins(): array - { - return [ - new ProductOfferStockProductOfferPostUpdatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferExpanderPluginInterface> - */ - protected function getProductOfferExpanderPlugins(): array - { - return [ - new ProductOfferStockProductOfferExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you create a product offer using `ProductOfferFacade::create()` with provided stock data, it persists to `spy_product_offer_stock`. - -Make sure that when you update a product offer using `ProductOfferFacade::create()` with provided stock data, it updates stock data in `spy_product_offer_stock`. - -Make sure that when you retrieve a product offer using `ProductOfferFacade::findOne()`, the response data contains info about product offer stocks. - -{% endinfo_block %} - -**src/Pyz/Zed/Availability/AvailabilityDependencyProvider.php** - -```php - - */ - protected function getAvailabilityStrategyPlugins(): array - { - return [ - new ProductOfferAvailabilityStrategyPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `AvailabilityFacade::findOrCreateProductConcreteAvailabilityBySkuForStore()` returns not a product but a product offer availability if the product offer reference passed in the request. - -{% endinfo_block %} - -### 6) Configure export to Redis - -This step publishes tables on change (create, edit) to the `spy_product_offer_availability_storage` and synchronize the data to the storage. - -#### Set up event listeners and publishers - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOfferAvailabilityStorageEventSubscriber | Registers listeners that are responsible for publishing product offer availability related changes to storage. | | Spryker\Zed\ProductOfferAvailabilityStorage\Communication\Plugin\Event\Subscriber | - -**src/Pyz/Zed/Event/EventDependencyProvider.php** - -```php -add(new ProductOfferAvailabilityStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` - -#### Register the synchronization queue and synchronization error queue - -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - QueueNameFoo, (Queue and error queue will be created: QueueNameFoo and QueueNameFoo.error) - * QueueNameBar => [ - * RoutingKeyFoo => QueueNameBaz, // (Additional queues can be defined by several routing keys) - * ], - * - * @see https://www.rabbitmq.com/tutorials/amqp-concepts.html - * - * @return array - */ - protected function getQueueConfiguration(): array - { - return [ - ProductOfferAvailabilityStorageConfig::PRODUCT_OFFER_AVAILABILITY_SYNC_STORAGE_QUEUE, - ]; - } -} -``` - -#### Configure message processors - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| SynchronizationStorageQueueMessageProcessorPlugin | Configures all product offer availability messages to sync with Redis storage, and marks messages as failed in case of error. | | Spryker\Zed\Synchronization\Communication\Plugin\Queue | - -**src/Pyz/Zed/ProductOfferAvailabilityStorage/ProductOfferAvailabilityStorageConfig.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - ProductOfferAvailabilityStorageConfig::PRODUCT_OFFER_AVAILABILITY_SYNC_STORAGE_QUEUE => new SynchronizationStorageQueueMessageProcessorPlugin(), - ]; - } -} -``` - -#### Set up, re-generate, and re-sync features - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOfferAvailabilitySynchronizationDataBulkPlugin | Allows synchronizing the entire storage table content into Storage. | | Spryker\Zed\ProductOfferAvailabilityStorage\Communication\Plugin\Synchronization | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new ProductOfferAvailabilitySynchronizationDataBulkPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the command `console sync:data merchant_profile` exports data from `spy_product_offer_availability_storage` table to Redis. - -Make sure that when a product offer availability entities get created or updated through ORM, it is exported to Redis accordingly. - -{% endinfo_block %} - -### 7) Import data - -Import the following data. - -#### Import merchant stock data - -Prepare your data according to your requirements using the demo data: - -**data/import/common/common/marketplace/merchant_stock.csv** - -``` -merchant_reference,stock_name -MER000001,Spryker MER000001 Warehouse 1 -MER000002,Video King MER000002 Warehouse 1 -MER000005,Budget Cameras MER000005 Warehouse 1 -MER000006,Sony Experts MER000006 Warehouse 1 -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| merchant_reference | ✓ | string | MER000001 | Merchant identifier. | -| stock_name | ✓ | string | Spryker MER000001 Warehouse 1 | Stock identifier. | - -#### Import product offer stock data - -**data/import/common/common/marketplace/product_offer_stock.csv** - -
-Prepare your data according to your requirements using the demo data: - -``` -product_offer_reference,stock_name,quantity,is_never_out_of_stock -offer1,Spryker MER000001 Warehouse 1,10,1 -offer2,Video King MER000002 Warehouse 1,0,0 -offer3,Spryker MER000001 Warehouse 1,10,0 -offer4,Video King MER000002 Warehouse 1,0,0 -offer5,Spryker MER000001 Warehouse 1,10,1 -offer6,Video King MER000002 Warehouse 1,10,0 -offer8,Video King MER000002 Warehouse 1,0,0 -offer9,Video King MER000002 Warehouse 1,0,0 -offer10,Video King MER000002 Warehouse 1,0,0 -offer11,Video King MER000002 Warehouse 1,0,0 -offer12,Video King MER000002 Warehouse 1,0,0 -offer13,Video King MER000002 Warehouse 1,0,0 -offer14,Video King MER000002 Warehouse 1,0,0 -offer15,Video King MER000002 Warehouse 1,0,0 -offer16,Video King MER000002 Warehouse 1,0,0 -offer17,Video King MER000002 Warehouse 1,0,0 -offer18,Video King MER000002 Warehouse 1,10,0 -offer19,Video King MER000002 Warehouse 1,10,0 -offer20,Video King MER000002 Warehouse 1,10,0 -offer21,Video King MER000002 Warehouse 1,10,0 -offer22,Video King MER000002 Warehouse 1,10,0 -offer23,Video King MER000002 Warehouse 1,10,0 -offer24,Video King MER000002 Warehouse 1,10,0 -offer25,Video King MER000002 Warehouse 1,10,0 -offer26,Video King MER000002 Warehouse 1,10,0 -offer27,Video King MER000002 Warehouse 1,10,0 -offer28,Video King MER000002 Warehouse 1,10,0 -offer29,Video King MER000002 Warehouse 1,10,0 -offer30,Video King MER000002 Warehouse 1,10,1 -offer31,Video King MER000002 Warehouse 1,10,1 -offer32,Video King MER000002 Warehouse 1,10,1 -offer33,Video King MER000002 Warehouse 1,10,1 -offer34,Video King MER000002 Warehouse 1,5,1 -offer35,Video King MER000002 Warehouse 1,5,1 -offer36,Video King MER000002 Warehouse 1,5,1 -offer37,Video King MER000002 Warehouse 1,5,1 -offer38,Video King MER000002 Warehouse 1,5,1 -offer39,Video King MER000002 Warehouse 1,2,1 -offer40,Video King MER000002 Warehouse 1,2,1 -offer41,Video King MER000002 Warehouse 1,2,1 -offer42,Video King MER000002 Warehouse 1,2,1 -offer43,Video King MER000002 Warehouse 1,2,1 -offer44,Video King MER000002 Warehouse 1,20,1 -offer45,Video King MER000002 Warehouse 1,20,1 -offer46,Video King MER000002 Warehouse 1,20,1 -offer47,Video King MER000002 Warehouse 1,20,1 -offer48,Video King MER000002 Warehouse 1,20,1 -offer49,Budget Cameras MER000005 Warehouse 1,0,1 -offer50,Budget Cameras MER000005 Warehouse 1,0,1 -offer51,Budget Cameras MER000005 Warehouse 1,0,1 -offer52,Budget Cameras MER000005 Warehouse 1,0,1 -offer53,Budget Cameras MER000005 Warehouse 1,0,1 -offer54,Budget Cameras MER000005 Warehouse 1,0,1 -offer55,Budget Cameras MER000005 Warehouse 1,0,1 -offer56,Budget Cameras MER000005 Warehouse 1,0,1 -offer57,Budget Cameras MER000005 Warehouse 1,0,1 -offer58,Budget Cameras MER000005 Warehouse 1,0,1 -offer59,Budget Cameras MER000005 Warehouse 1,0,1 -offer60,Budget Cameras MER000005 Warehouse 1,0,1 -offer61,Budget Cameras MER000005 Warehouse 1,0,1 -offer62,Budget Cameras MER000005 Warehouse 1,0,1 -offer63,Budget Cameras MER000005 Warehouse 1,0,1 -offer64,Budget Cameras MER000005 Warehouse 1,0,1 -offer65,Budget Cameras MER000005 Warehouse 1,0,1 -offer66,Budget Cameras MER000005 Warehouse 1,0,1 -offer67,Budget Cameras MER000005 Warehouse 1,0,1 -offer68,Budget Cameras MER000005 Warehouse 1,0,1 -offer69,Budget Cameras MER000005 Warehouse 1,0,1 -offer70,Budget Cameras MER000005 Warehouse 1,0,1 -offer71,Budget Cameras MER000005 Warehouse 1,0,1 -offer72,Budget Cameras MER000005 Warehouse 1,0,1 -offer73,Budget Cameras MER000005 Warehouse 1,0,1 -offer74,Budget Cameras MER000005 Warehouse 1,0,1 -offer75,Budget Cameras MER000005 Warehouse 1,0,1 -offer76,Budget Cameras MER000005 Warehouse 1,0,1 -offer77,Budget Cameras MER000005 Warehouse 1,0,1 -offer78,Budget Cameras MER000005 Warehouse 1,0,1 -offer79,Budget Cameras MER000005 Warehouse 1,0,1 -offer80,Budget Cameras MER000005 Warehouse 1,0,1 -offer81,Budget Cameras MER000005 Warehouse 1,0,1 -offer82,Budget Cameras MER000005 Warehouse 1,0,1 -offer83,Budget Cameras MER000005 Warehouse 1,0,1 -offer84,Budget Cameras MER000005 Warehouse 1,0,1 -offer85,Budget Cameras MER000005 Warehouse 1,0,1 -offer86,Budget Cameras MER000005 Warehouse 1,0,1 -offer87,Budget Cameras MER000005 Warehouse 1,0,1 -offer88,Budget Cameras MER000005 Warehouse 1,0,1 -offer89,Budget Cameras MER000005 Warehouse 1,0,1 -offer90,Sony Experts MER000006 Warehouse 1,0,1 -offer91,Sony Experts MER000006 Warehouse 1,0,1 -offer92,Sony Experts MER000006 Warehouse 1,0,1 -offer93,Sony Experts MER000006 Warehouse 1,0,1 -offer94,Sony Experts MER000006 Warehouse 1,0,1 -offer95,Sony Experts MER000006 Warehouse 1,0,1 -offer96,Sony Experts MER000006 Warehouse 1,0,1 -offer97,Sony Experts MER000006 Warehouse 1,0,1 -offer98,Sony Experts MER000006 Warehouse 1,0,1 -offer99,Sony Experts MER000006 Warehouse 1,0,1 -offer100,Sony Experts MER000006 Warehouse 1,0,1 -offer101,Sony Experts MER000006 Warehouse 1,0,1 -offer102,Sony Experts MER000006 Warehouse 1,0,1 -offer103,Sony Experts MER000006 Warehouse 1,0,1 -offer169,Sony Experts MER000006 Warehouse 1,0,1 -offer170,Sony Experts MER000006 Warehouse 1,0,1 -offer171,Sony Experts MER000006 Warehouse 1,0,1 -offer172,Sony Experts MER000006 Warehouse 1,0,1 -offer173,Sony Experts MER000006 Warehouse 1,0,1 -offer348,Sony Experts MER000006 Warehouse 1,0,1 -offer349,Sony Experts MER000006 Warehouse 1,0,1 -offer350,Sony Experts MER000006 Warehouse 1,0,1 -offer351,Sony Experts MER000006 Warehouse 1,0,1 -offer352,Sony Experts MER000006 Warehouse 1,0,1 -offer353,Sony Experts MER000006 Warehouse 1,0,1 -offer354,Sony Experts MER000006 Warehouse 1,0,1 -offer355,Sony Experts MER000006 Warehouse 1,0,1 -offer356,Sony Experts MER000006 Warehouse 1,0,1 -offer357,Sony Experts MER000006 Warehouse 1,0,1 -offer358,Sony Experts MER000006 Warehouse 1,0,1 -offer359,Sony Experts MER000006 Warehouse 1,0,1 -offer360,Sony Experts MER000006 Warehouse 1,0,1 -``` - -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| product_offer_reference | ✓ | string | offer350 | Product offer identifier. | -| stock_name | ✓ | string | Spryker MER000001 Warehouse 1 | Stock identifier. | -| quantity | ✓ | int | 21 | The amount of available product offers. | -| is_never_out_of_stock | ✓ | int | 1 | Flag that lets you make product offer always available, ignoring stock quantity. | - -Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantStockDataImportPlugin | Imports merchant stock data into the database. | | Spryker\Zed\MerchantStockDataImport\Communication\Plugin | -| ProductOfferStockDataImportPlugin | Imports product offer stock data into the database. | | Spryker\Zed\ProductOfferStockDataImport\Communication\Plugin | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - - */ - protected function getOmsReservationAggregationPlugins(): array - { - return [ - new ProductOfferOmsReservationAggregationPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\OmsExtension\Dependency\Plugin\OmsReservationWriterStrategyPluginInterface> - */ - protected function getOmsReservationWriterStrategyPlugins(): array - { - return [ - new ProductOfferOmsReservationWriterStrategyPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\OmsExtension\Dependency\Plugin\ReservationPostSaveTerminationAwareStrategyPluginInterface> - */ - protected function getReservationPostSaveTerminationAwareStrategyPlugins(): array - { - return [ - new ProductOfferReservationPostSaveTerminationAwareStrategyPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\OmsExtension\Dependency\Plugin\OmsReservationReaderStrategyPluginInterface> - */ - protected function getOmsReservationReaderStrategyPlugins(): array - { - return [ - new ProductOfferOmsReservationReaderStrategyPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure if you add a product offer to the cart, place the order, reserved product offers count changes in the `spy_oms_product_offer_reservation` table. - -Make sure that a product offer is available at PDP if its stock > 0 in the `spy_product_offer_stock` table. - -Make sure that the concrete product availability (in the `spy_availability` table) are not affected when you place an order with a product offer. - -{% endinfo_block %} - -**src/Pyz/Zed/ProductOfferStockGui/ProductOfferStockGuiDependencyProvider.php** - -```php - - */ - protected function getProductOfferStockTableExpanderPlugins(): array - { - return [ - new ProductOfferReservationProductOfferStockTableExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you view some product offer at `http://zed.de.demo-spryker.com/product-offer-gui/view?id-product-offer={idProductOffer}}`, you can see the `Stock` section. - -Make sure that if you open some product offer in view mode at `http://zed.mysprykershop.com/product-offer-gui/view?id-product-offer={% raw %}{{idProductOffer}}{% endraw %}`, stock table contains the `Reservations` column. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-packaging-units-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-packaging-units-feature-integration.md deleted file mode 100644 index 9a6abc0db48..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-inventory-management-packaging-units-feature-integration.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Marketplace Inventory Management + Packaging Units feature integration -last_updated: Sep 07, 2021 -description: This document describes the process how to integrate the Marketplace Inventory Management + Packaging Units feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Inventory Management + Packaging Units feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Inventory Management + Packaging Units feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Packaging Units | {{page.version}} | [Packaging Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/packaging-units-feature-integration.html) | -| Marketplace Inventory Management | {{page.version}} | [Marketplace Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-feature-integration.html) | -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | - -### 1) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOfferPackagingUnitOmsReservationAggregationPlugin | Aggregates reservations for product offers packaging unit. | | Spryker\Zed\ProductOfferPackagingUnit\Communication\Plugin\Oms | - -**src/Pyz/Zed/Oms/OmsDependencyProvider.php** - -```php - - */ - protected function getOmsReservationAggregationPlugins(): array - { - return [ - new ProductOfferPackagingUnitOmsReservationAggregationPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that availability is calculated properly for the product offers that belong to the product with packaging units. - -* Add such a product offer to the cart. -* Place an order. -* Make sure that `spy_oms_product_offer_reservation` contains a new row, which has reserved the quantity equal to the amount of the bought packaging unit. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-feature-integration.md deleted file mode 100644 index 78a27c8e32e..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-feature-integration.md +++ /dev/null @@ -1,1480 +0,0 @@ ---- -title: Marketplace Merchant feature integration -last_updated: Oct 19, 2021 -description: This integration guide provides steps on how to integrate the Merchants feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Merchant feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Merchant feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION |INTEGRATION GUIDE | -| --- | --- | --- | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Merchant | {{page.version}} | [Merchant feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/merchant-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-merchant:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| --- | --- | -| MerchantProfile | vendor/spryker/merchant-profile | -| MerchantProfileDataImport | vendor/spryker/merchant-profile-data-import | -| MerchantProfileGui | vendor/spryker/merchant-profile-gui | -| MerchantSearch | vendor/spryker/merchant-search | -| MerchantSearchExtension | vendor/spryker/merchant-search-extension | -| MerchantUser | vendor/spryker/merchant-user | -| MerchantUserGui | vendor/spryker/merchant-user-gui | -| MerchantStorage | vendor/spryker/merchant-storage | - -{% endinfo_block %} - -### 2) Set up database schema and transfer objects - -Set up database schema: - -1. Adjust the schema definition so entity changes trigger events: - -**src/Pyz/Zed/MerchantSearch/Persistence/Propel/Schema/spy_merchant_search.schema.xml** - -```xml - - - - - - - -
- -
- -``` - -2. Apply database changes, generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have occurred in the database: - -| DATABASE ENTITY | TYPE | EVENT | -|---|---|---| -| spy_merchant_storage | table | created | -| spy_merchant_search | table | created | -| spy_merchant_profile | table | created | -| spy_merchant_user | table | created | - -{% endinfo_block %} - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have occurred in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|---|---|---|---| -| MerchantProfileAddress | class | Created | src/Generated/Shared/Transfer/MerchantProfileAddressTransfer | -| MerchantProfileCollection | class | Created | src/Generated/Shared/Transfer/MerchantProfileCollectionTransfer| -| MerchantProfileCriteria | class | Created | src/Generated/Shared/Transfer/MerchantProfileCriteriaTransfer | -| MerchantProfileGlossaryAttributeValues | class | Created | src/Generated/Shared/Transfer/MerchantProfileGlossaryAttributeValuesTransfer | -| MerchantProfileLocalizedGlossaryAttributes | class | Created | src/Generated/Shared/Transfer/MerchantProfileLocalizedGlossaryAttributesTransfer | -| MerchantSearch | class | Created | src/Generated/Shared/Transfer/MerchantSearchTransfer | -| MerchantSearchCollection | class | Created | src/Generated/Shared/Transfer/MerchantSearchCollectionTransfer | -| MerchantUser | class | Created | src/Generated/Shared/Transfer/MerchantUserTransfer | -| MerchantUserCriteria | class | Created | src/Generated/Shared/Transfer/MerchantUserCriteriaTransfer | -| MerchantUserResponse | class | Created | src/Generated/Shared/Transfer/MerchantUserResponseTransfer | -| SpyMerchantProfileEntity | class | Created | src/Generated/Shared/Transfer/SpyMerchantProfileEntityTransfer | -| SpyMerchantSearchEntity | class | Created | src/Generated/Shared/Transfer/SpyMerchantSearchEntityTransfer | -| SpyMerchantStorageEntity | class | Created | src/Generated/Shared/Transfer/SpyMerchantStorageEntityTransfer | -| SpyMerchantUserEntity | class | Created |src/Generated/Shared/Transfer/SpyMerchantUserEntityTransfer | -| UrlStorage.fkResourceMerchant | property | Created |src/Generated/Shared/Transfer/UrlStorageTransfer | - -{% endinfo_block %} - - -### 3) Add Zed translations - -Generate new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| MerchantProfileExpanderPlugin | Expands merchant with profile data.| | Spryker\Zed\MerchantProfile\Communication\Plugin\Merchant | -| MerchantProfileMerchantPostCreatePlugin | Creates merchant profile on merchant create action. | | Spryker\Zed\MerchantProfile\Communication\Plugin\Merchant| -| MerchantProfileMerchantPostUpdatePlugin| Updates merchant profile on merchant update action.m| | Spryker\Zed\MerchantProfile\Communication\Plugin\Merchant | -| MerchantProfileContactPersonFormTabExpanderPlugin | Adds an extra tab to merchant edit and create forms for editing and creating contact person data. | | Spryker\Zed\MerchantProfileGui\Communication\Plugin\MerchantGui\Tabs | -| MerchantProfileFormTabExpanderPlugin | Adds an extra tab to merchant edit and create forms for editing and creating merchant profile data. | | Spryker\Zed\MerchantProfileGui\Communication\Plugin\MerchantGui\Tabs | -| MerchantProfileLegalInformationFormTabExpanderPlugin | Adds an extra tab to merchant edit and create forms for editing and creating merchant legal information. | | Spryker\Zed\MerchantProfileGui\Communication\Plugin\MerchantGui\Tabs | -| MerchantProfileFormExpanderPlugin | Expands MerchantForm with merchant profile fields. | | Spryker\Zed\MerchantProfileGui\Communication\Plugin\MerchantGui | -| SyncMerchantUsersStatusMerchantPostUpdatePlugin | Updates merchant users status by merchant status on merchant update. | | Spryker\Zed\MerchantUser\Communication\Plugin\Merchant | -| MerchantUserTabMerchantFormTabExpanderPlugin | Adds an extra tab to merchant edit and create forms for editing and creating merchant user information. | | Spryker\Zed\MerchantUserGui\Communication\Plugin\MerchantGui | -| MerchantUserViewMerchantUpdateFormViewExpanderPlugin | Expands merchant `FormView` with the data for the merchant user tab. | | Spryker\Zed\MerchantUserGui\Communication\Plugin\MerchantGui | - -
src/Pyz/Zed/Merchant/MerchantDependencyProvider.php - -```php - - */ - protected function getMerchantPostCreatePlugins(): array - { - return [ - new MerchantProfileMerchantPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantExtension\Dependency\Plugin\MerchantPostUpdatePluginInterface> - */ - protected function getMerchantPostUpdatePlugins(): array - { - return [ - new MerchantProfileMerchantPostUpdatePlugin(), - new SyncMerchantUsersStatusMerchantPostUpdatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantExtension\Dependency\Plugin\MerchantExpanderPluginInterface> - */ - protected function getMerchantExpanderPlugins(): array - { - return [ - new MerchantProfileExpanderPlugin(), - ]; - } -} -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that: - -* When you create a merchant using `MerchantFacade::createMerchant()`, its profile also gets created. -* When you update a merchant using `MerchantFacade::updateMerchant()`, its profile also gets updated. -* When you fetch a merchant using `MerchantFacade::findOne()`, its profile data also gets fetched. - -{% endinfo_block %} - -
src/Pyz/Zed/MerchantGui/MerchantGuiDependencyProvider.php - -```php - - */ - protected function getMerchantFormExpanderPlugins(): array - { - return [ - new MerchantProfileFormExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantGuiExtension\Dependency\Plugin\MerchantFormTabExpanderPluginInterface> - */ - protected function getMerchantFormTabsExpanderPlugins(): array - { - return [ - new MerchantProfileContactPersonFormTabExpanderPlugin(), - new MerchantProfileFormTabExpanderPlugin(), - new MerchantProfileLegalInformationFormTabExpanderPlugin(), - new MerchantUserTabMerchantFormTabExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantGuiExtension\Dependency\Plugin\MerchantUpdateFormViewExpanderPluginInterface> - */ - protected function getMerchantUpdateFormViewExpanderPlugins(): array - { - return [ - new MerchantUserViewMerchantUpdateFormViewExpanderPlugin(), - ]; - } - -} - -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that when you edit a merchant in the *Merchants* section of the Back Office, you can see merchant profile related tabs: Contact Person, Merchant Profile, Legal Information, Merchant User. - -{% endinfo_block %} - -### 5) Configure navigation - -Add marketplace section to `navigation.xml`: - -**config/Zed/navigation.xml** - -```xml - - - - - Marketplace - fa-shopping-basket - - - - Merchants - merchant-gui - list-merchant - index - - - - -``` - -Execute the following command: -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can see the **Marketplace** button in the navigation menu of the Back Office. - -{% endinfo_block %} - -### 6) Configure export to Redis and Elasticsearch - -This step publishes tables on change (create, edit) to `spy_merchant_profile_storage` and synchronizes data to Storage. - -#### Configure export to Redis - -1. Set up event listeners and publishers: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| MerchantPublisherTriggerPlugin | Registers the publishers that publish merchant entity changes to storage. | | Spryker\Zed\MerchantStorage\Communication\Plugin\Publisher\MerchantPublisherTriggerPlugin | -| MerchantStoragePublisherPlugin | Publishes merchant data to the `spy_merchant_storage` table. | | Spryker\Zed\MerchantStorage\Communication\Plugin\Publisher\Merchant\MerchantStoragePublisherPlugin | - -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php - - */ - protected function getPublisherPlugins(): array - { - return [ - new MerchantStoragePublisherPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\PublisherExtension\Dependency\Plugin\PublisherTriggerPluginInterface> - */ - protected function getPublisherTriggerPlugins(): array - { - return [ - new MerchantPublisherTriggerPlugin(), - ]; - } -} -``` - -2. Register synchronization and synchronization error queues: - -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - QueueNameFoo, (Queue and error queue will be created: QueueNameFoo and QueueNameFoo.error) - * QueueNameBar => [ - * RoutingKeyFoo => QueueNameBaz, // (Additional queues can be defined by several routing keys) - * ], - * - * @see https://www.rabbitmq.com/tutorials/amqp-concepts.html - * - * @return array - */ - protected function getQueueConfiguration(): array - { - return [ - MerchantStorageConfig::MERCHANT_SYNC_STORAGE_QUEUE, - ]; - } -} - -``` - -3. Configure message processors: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| SynchronizationStorageQueueMessageProcessorPlugin | Configures all merchant profile messages to synchronize with Redis and marks messages as failed in case of an error. | | Spryker\Zed\Synchronization\Communication\Plugin\Queue | - -**src/Pyz/Zed/MerchantStorage/MerchantStorageConfig.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - MerchantStorageConfig::MERCHANT_SYNC_STORAGE_QUEUE => new SynchronizationStorageQueueMessageProcessorPlugin(), - ]; - } -} -``` - -4. Set up re-generate and re-sync features: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| MerchantSynchronizationDataPlugin | Enables the content of an entire storage table to be synchronized into Storage. | | Spryker\Zed\MerchantStorage\Communication\Plugin\Synchronization | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new MerchantSynchronizationDataPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when merchant profile entities are created or updated through ORM, they are exported to Redis accordingly. - -{% endinfo_block %} - - -##### Configure export to Elastica - -This step publishes tables on change (create, edit) to `spy_merchant_search` and synchronizes the data to Search. - -1. Setup event listeners and publishers by registering the plugins: -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php - - */ - protected function getPublisherPlugins(): array - { - return [ - new MerchantWritePublisherPlugin(), - new MerchantDeletePublisherPlugin(), - ]; - } -} -``` - -2. Register synchronization queue: -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - MerchantSearchConfig::SYNC_SEARCH_MERCHANT => new SynchronizationSearchQueueMessageProcessorPlugin(), - ]; - } -} -``` - -4. Setup re-generate and re-sync features: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| MerchantSynchronizationDataBulkRepositoryPlugin | Synchronizes the entire search table content into Search. | | Spryker\Zed\MerchantSearch\Communication\Plugin\Synchronization | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new MerchantSynchronizationDataBulkRepositoryPlugin(), - ]; - } -} -``` - -5. Configure a synchronization pool name: - -**src/Pyz/Zed/MerchantSearch/MerchantSearchConfig.php** - -```php - - */ - protected function getMerchantSearchResultFormatterPlugins(): array - { - return [ - new MerchantSearchResultFormatterPlugin(), - ]; - } -} -``` - -7. Set up query expanders: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|----|----|----|----| -| PaginatedMerchantSearchQueryExpanderPlugin | Allows using pagination for merchant search. | | Spryker\Client\MerchantSearch\Plugin\Elasticsearch\Query | -| StoreQueryExpanderPlugin | Allows searching to filter out merchants that do not belong to the current store. | | Spryker\Client\SearchElasticsearch\Plugin\QueryExpander | - -**src/Pyz/Client/MerchantSearch/MerchantSearchDependencyProvider.php** - -```php - - */ - protected function getMerchantSearchQueryExpanderPlugins(): array - { - return [ - new PaginatedMerchantSearchQueryExpanderPlugin(), - new StoreQueryExpanderPlugin(), - ]; - } -} -``` -8. Add the `merchant` resource to the supported search sources: - -**src/Pyz/Shared/SearchElasticsearch/SearchElasticsearchConfig.php** - -```php - -Example of the expected data fragment - - ```json - - { - "idMerchant": 1, - "name": "Sony Experts", - "registrationNumber": "HYY 134306", - "email": "michele@sony-experts.com", - "status": "approved", - "isActive": true, - "merchantReference": "MER000006", - "fkStateMachineProcess": 1, - "storeRelation": { - "idEntity": 1, - "idStores": [ - 1 - ], - "stores": [ - { - "availableLocaleIsoCodes": [], - "queuePools": [], - "storesWithSharedPersistence": [], - "idStore": 1, - "name": "DE", - "defaultCurrencyIsoCode": null, - "availableCurrencyIsoCodes": [], - "selectedCurrencyIsoCode": null, - "timezone": null, - "countries": [] - } - ] - }, - "addressCollection": null, - "merchantProfile": { - "idMerchantProfile": 3, - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "descriptionGlossaryKey": "merchant.description_glossary_key.1", - "bannerUrlGlossaryKey": "merchant.banner_url_glossary_key.1", - "deliveryTimeGlossaryKey": "merchant.delivery_time_glossary_key.1", - "termsConditionsGlossaryKey": "merchant.terms_conditions_glossary_key.1", - "cancellationPolicyGlossaryKey": "merchant.cancellation_policy_glossary_key.1", - "imprintGlossaryKey": "merchant.imprint_glossary_key.1", - "dataPrivacyGlossaryKey": "merchant.data_privacy_glossary_key.1", - "fkMerchant": 1, - "merchantName": "Sony Experts", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "merchantReference": "MER000006", - "bannerUrl": null, - "addressCollection": { - "addresses": [ - { - "idMerchantProfileAddress": 3, - "fkCountry": 60, - "countryName": "Germany", - "address1": "Matthias-Pschorr-Straße", - "address2": "1", - "address3": "", - "city": "München", - "zipCode": "80336", - "email": null, - "fkMerchantProfile": 3 - } - ] - }, - "merchantProfileLocalizedGlossaryAttributes": [] - }, - "urlCollection": [ - { - "url": "/de/merchant/sony-experts", - "resourceType": null, - "resourceId": null, - "fkLocale": 46, - "idUrl": 505, - "fkResourceCategorynode": null, - "fkRedirect": null, - "fkResourcePage": null, - "fkResourceRedirect": null, - "fkResourceMerchant": 1, - "urlPrefix": null, - "localeName": "de_DE", - "fkResourceProductAbstract": null, - "fkResourceProductSet": null, - "itemType": null, - "itemId": null, - "fkProductAbstract": null, - "fkCategorynode": null, - "fkPage": null - }, - { - "url": "/en/merchant/sony-experts", - "resourceType": null, - "resourceId": null, - "fkLocale": 66, - "idUrl": 506, - "fkResourceCategorynode": null, - "fkRedirect": null, - "fkResourcePage": null, - "fkResourceRedirect": null, - "fkResourceMerchant": 1, - "urlPrefix": null, - "localeName": "en_US", - "fkResourceProductAbstract": null, - "fkResourceProductSet": null, - "itemType": null, - "itemId": null, - "fkProductAbstract": null, - "fkCategorynode": null, - "fkPage": null - } - ], - "categories": [ - { - "idCategory": 2, - "categoryKey": "cameras-and-camcorder", - "isActive": true, - "isInMenu": true, - "isClickable": true, - "isSearchable": true, - "name": null, - "url": null, - "imageName": null, - "categoryImageName": null, - "metaTitle": null, - "metaDescription": null, - "metaKeywords": null, - "fkCategoryTemplate": 1, - "idCmsBlocks": [], - "categoryNode": null, - "nodeCollection": null, - "parentCategoryNode": null, - "localizedAttributes": [ - { - "name": "Kameras & Camcorders", - "url": null, - "metaTitle": "Kameras & Camcorders", - "metaDescription": "Kameras & Camcorders", - "metaKeywords": "Kameras & Camcorders", - "locale": { - "idLocale": 46, - "localeName": "de_DE", - "name": null, - "isActive": true - }, - "image": null - }, - { - "name": "Cameras & Camcordersshhhhjjj", - "url": null, - "metaTitle": "Cameras & Camcorders", - "metaDescription": "Cameras & Camcorders", - "metaKeywords": "Cameras & Camcorders", - "locale": { - "idLocale": 66, - "localeName": "en_US", - "name": null, - "isActive": true - }, - "image": null - } - ], - "extraParents": [], - "imageSets": [] - } - ], - "stocks": [ - { - "idStock": 7, - "name": "Sony Experts MER000006 Warehouse 1", - "isActive": true, - "storeRelation": null - } - ] -} - - ``` - - -### 7) Import data - -To import data: - -1. Prepare merchant profile data according to your requirements using the demo data: - -
-/data/import/common/common/marketplace/merchant_profile.csv - -``` -merchant_reference,contact_person_role,contact_person_title,contact_person_first_name,contact_person_last_name,contact_person_phone,banner_url,logo_url,public_email,public_phone,description_glossary_key.en_US,description_glossary_key.de_DE,banner_url_glossary_key.en_US,banner_url_glossary_key.de_DE,delivery_time_glossary_key.en_US,delivery_time_glossary_key.de_DE,terms_conditions_glossary_key.en_US,terms_conditions_glossary_key.de_DE,cancellation_policy_glossary_key.en_US,cancellation_policy_glossary_key.de_DE,imprint_glossary_key.en_US,imprint_glossary_key.de_DE,data_privacy_glossary_key.en_US,data_privacy_glossary_key.de_DE,is_active,fax_number -MER000001,E-Commerce Manager,Mr,Harald,Schmidt,+49 30 208498350,https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png,info@spryker.com,+49 30 234567891,Spryker is the main merchant at the Demo Marketplace.,Spryker ist der Haupthändler auf dem Demo-Marktplatz.,https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png,1-3 days,1-3 Tage,"

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

","

§ 1 Geltungsbereich & Abwehrklausel

(1) Für die über diesen Internet-Shop begründeten Rechtsbeziehungen zwischen dem Betreiber des Shops (nachfolgend „Anbieter“) und seinen Kunden gelten ausschließlich die folgenden Allgemeinen Geschäftsbedingungen in der jeweiligen Fassung zum Zeitpunkt der Bestellung.

(2) Abweichende Allgemeine Geschäftsbedingungen des Kunden werden zurückgewiesen.

§ 2 Zustandekommen des Vertrages

(1) Die Präsentation der Waren im Internet-Shop stellt kein bindendes Angebot des Anbieters auf Abschluss eines Kaufvertrages dar. Der Kunde wird hierdurch lediglich aufgefordert, durch eine Bestellung ein Angebot abzugeben.

(2) Durch das Absenden der Bestellung im Internet-Shop gibt der Kunde ein verbindliches Angebot gerichtet auf den Abschluss eines Kaufvertrages über die im Warenkorb enthaltenen Waren ab. Mit dem Absenden der Bestellung erkennt der Kunde auch diese Geschäftsbedingungen als für das Rechtsverhältnis mit dem Anbieter allein maßgeblich an.

(3) Der Anbieter bestätigt den Eingang der Bestellung des Kunden durch Versendung einer Bestätigungs-Email. Diese Bestellbestätigung stellt noch nicht die Annahme des Vertragsangebotes durch den Anbieter dar. Sie dient lediglich der Information des Kunden, dass die Bestellung beim Anbieter eingegangen ist. Die Erklärung der Annahme des Vertragsangebotes erfolgt durch die Auslieferung der Ware oder eine ausdrückliche Annahmeerklärung.

§ 3 Eigentumsvorbehalt

Die gelieferte Ware verbleibt bis zur vollständigen Bezahlung im Eigentum des Anbieters.

§ 4 Fälligkeit

Die Zahlung des Kaufpreises ist mit Vertragsschluss fällig.

","You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.","Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen. Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag, an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Ware in Besitz genommen hat. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist. Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.","

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

","

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Vertreten durch
Geschäftsführer: Alexander Graf, Boris Lokschin
Registergericht: Hamburg
Registernummer: HRB 134310

",Spryker Systems GmbH values the privacy of your personal data.,Für die Abwicklung ihrer Bestellung gelten auch die Datenschutzbestimmungen von Spryker Systems GmbH.,1,+49 30 234567800 -MER000002,Country Manager DE,Ms,Martha,Farmer,+31 123 345 678,https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-logo.png,hi@video-king.nl,+31 123 345 777,"Video King is a premium provider of video equipment. In business since 2010, we understand the needs of video professionals and enthusiasts and offer a wide variety of products with competitive prices. ","Video King ist ein Premium-Anbieter von Videogeräten. Wir sind seit 2010 im Geschäft, verstehen die Bedürfnisse von Videoprofis und -enthusiasten und bieten eine große Auswahl an Produkten zu wettbewerbsfähigen Preisen an. ",https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png,2-4 days,2-4 Tage,"

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

","

§ 1 Geltungsbereich & Abwehrklausel

(1) Für die über diesen Internet-Shop begründeten Rechtsbeziehungen zwischen dem Betreiber des Shops (nachfolgend „Anbieter“) und seinen Kunden gelten ausschließlich die folgenden Allgemeinen Geschäftsbedingungen in der jeweiligen Fassung zum Zeitpunkt der Bestellung.

(2) Abweichende Allgemeine Geschäftsbedingungen des Kunden werden zurückgewiesen.

§ 2 Zustandekommen des Vertrages

(1) Die Präsentation der Waren im Internet-Shop stellt kein bindendes Angebot des Anbieters auf Abschluss eines Kaufvertrages dar. Der Kunde wird hierdurch lediglich aufgefordert, durch eine Bestellung ein Angebot abzugeben.

(2) Durch das Absenden der Bestellung im Internet-Shop gibt der Kunde ein verbindliches Angebot gerichtet auf den Abschluss eines Kaufvertrages über die im Warenkorb enthaltenen Waren ab. Mit dem Absenden der Bestellung erkennt der Kunde auch diese Geschäftsbedingungen als für das Rechtsverhältnis mit dem Anbieter allein maßgeblich an.

(3) Der Anbieter bestätigt den Eingang der Bestellung des Kunden durch Versendung einer Bestätigungs-Email. Diese Bestellbestätigung stellt noch nicht die Annahme des Vertragsangebotes durch den Anbieter dar. Sie dient lediglich der Information des Kunden, dass die Bestellung beim Anbieter eingegangen ist. Die Erklärung der Annahme des Vertragsangebotes erfolgt durch die Auslieferung der Ware oder eine ausdrückliche Annahmeerklärung.

§ 3 Eigentumsvorbehalt

Die gelieferte Ware verbleibt bis zur vollständigen Bezahlung im Eigentum des Anbieters.

§ 4 Fälligkeit

Die Zahlung des Kaufpreises ist mit Vertragsschluss fällig.

","You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.","Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen. Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag, an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Ware in Besitz genommen hat. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist. Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.",

Video King

Gilzeweg 24
4854SG Bavel
NL

Phone: +31 123 45 6789
Email: hi@video-king.nl

Represented by
Managing Director: Max Mustermann
Register Court: Amsterdam
Register Number: 1234.4567

,

Video King

Gilzeweg 24
4854SG Bavel
NL

Telefon: +31 123 45 6789
Email: hi@video-king.nl

Vertreten durch
Geschäftsführer: Max Mustermann
Registergericht: Amsterdam
Registernummer: 1234.4567

,Video King values the privacy of your personal data.,Für die Abwicklung ihrer Bestellung gelten auch die Datenschutzbestimmungen von Video King.,1,+31 123 345 733 -MER000006,Brand Manager,Ms,Michele,Nemeth,030/123456789,https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png,support@sony-experts.com,+49 30 234567691,"Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures. -Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.","Halten Sie Ihren Moment mit den besten Kameras von Sony fest. Vom Taschenformat bis hin zum professionellen Stil bieten sie alle Funktionen, um Bilder in bester Qualität zu liefern. -Entdecken Sie das Angebot an Kameras, Objektiven und Zubehör von Sony und fangen Sie Ihre Lieblingsmomente mit Präzision und Stil mit den besten Kameras ein, die das Unternehmen zu bieten hat.",https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png,1-3 days,1-3 Tage,"

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

","

§ 1 Geltungsbereich & Abwehrklausel

(1) Für die über diesen Internet-Shop begründeten Rechtsbeziehungen zwischen dem Betreiber des Shops (nachfolgend „Anbieter“) und seinen Kunden gelten ausschließlich die folgenden Allgemeinen Geschäftsbedingungen in der jeweiligen Fassung zum Zeitpunkt der Bestellung.

(2) Abweichende Allgemeine Geschäftsbedingungen des Kunden werden zurückgewiesen.

§ 2 Zustandekommen des Vertrages

(1) Die Präsentation der Waren im Internet-Shop stellt kein bindendes Angebot des Anbieters auf Abschluss eines Kaufvertrages dar. Der Kunde wird hierdurch lediglich aufgefordert, durch eine Bestellung ein Angebot abzugeben.

(2) Durch das Absenden der Bestellung im Internet-Shop gibt der Kunde ein verbindliches Angebot gerichtet auf den Abschluss eines Kaufvertrages über die im Warenkorb enthaltenen Waren ab. Mit dem Absenden der Bestellung erkennt der Kunde auch diese Geschäftsbedingungen als für das Rechtsverhältnis mit dem Anbieter allein maßgeblich an.

(3) Der Anbieter bestätigt den Eingang der Bestellung des Kunden durch Versendung einer Bestätigungs-Email. Diese Bestellbestätigung stellt noch nicht die Annahme des Vertragsangebotes durch den Anbieter dar. Sie dient lediglich der Information des Kunden, dass die Bestellung beim Anbieter eingegangen ist. Die Erklärung der Annahme des Vertragsangebotes erfolgt durch die Auslieferung der Ware oder eine ausdrückliche Annahmeerklärung.

§ 3 Eigentumsvorbehalt

Die gelieferte Ware verbleibt bis zur vollständigen Bezahlung im Eigentum des Anbieters.

§ 4 Fälligkeit

Die Zahlung des Kaufpreises ist mit Vertragsschluss fällig.

","You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.","Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen. Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag, an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Ware in Besitz genommen hat. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist. Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.",

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

,

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Vertreten durch
Geschäftsführer: Max Mustermann
Registergericht: München
Registernummer: HYY 134306

,Sony Experts values the privacy of your personal data.,Für die Abwicklung ihrer Bestellung gelten auch die Datenschutzbestimmungen von Sony Experts.,1,+49 30 234567600 -MER000004,,,,,,,,,,,,,,,,,,,,,,,,0, -MER000003,,,,,,,,,,,,,,,,,,,,,,,,0, -MER000007,,,,,,,,,,,,,,,,,,,,,,,,0, -MER000005,Merchandise Manager,Mr,Jason,Weidmann,030/123456789,https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-logo.png,support@budgetcamerasonline.com,+49 30 234567591,"DSLR and mirrorless cameras are by far the most popular with filmmakers on a tight budget when you can't afford multiple specialist cameras. -Budget Cameras is offering a great selection of digital cameras with the lowest prices.","DSLR- und spiegellose Kameras sind bei Filmemachern mit knappem Budget bei weitem am beliebtesten, wenn sie sich bestimmte Spezialkameras nicht leisten können. -Budget Cameras bietet eine große Auswahl an Digitalkameras mit den niedrigsten Preisen.",https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-banner.png,https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-banner.png,2-4 days,2-4 Tage,"

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

","

§ 1 Geltungsbereich & Abwehrklausel

(1) Für die über diesen Internet-Shop begründeten Rechtsbeziehungen zwischen dem Betreiber des Shops (nachfolgend „Anbieter“) und seinen Kunden gelten ausschließlich die folgenden Allgemeinen Geschäftsbedingungen in der jeweiligen Fassung zum Zeitpunkt der Bestellung.

(2) Abweichende Allgemeine Geschäftsbedingungen des Kunden werden zurückgewiesen.

§ 2 Zustandekommen des Vertrages

(1) Die Präsentation der Waren im Internet-Shop stellt kein bindendes Angebot des Anbieters auf Abschluss eines Kaufvertrages dar. Der Kunde wird hierdurch lediglich aufgefordert, durch eine Bestellung ein Angebot abzugeben.

(2) Durch das Absenden der Bestellung im Internet-Shop gibt der Kunde ein verbindliches Angebot gerichtet auf den Abschluss eines Kaufvertrages über die im Warenkorb enthaltenen Waren ab. Mit dem Absenden der Bestellung erkennt der Kunde auch diese Geschäftsbedingungen als für das Rechtsverhältnis mit dem Anbieter allein maßgeblich an.

(3) Der Anbieter bestätigt den Eingang der Bestellung des Kunden durch Versendung einer Bestätigungs-Email. Diese Bestellbestätigung stellt noch nicht die Annahme des Vertragsangebotes durch den Anbieter dar. Sie dient lediglich der Information des Kunden, dass die Bestellung beim Anbieter eingegangen ist. Die Erklärung der Annahme des Vertragsangebotes erfolgt durch die Auslieferung der Ware oder eine ausdrückliche Annahmeerklärung.

§ 3 Eigentumsvorbehalt

Die gelieferte Ware verbleibt bis zur vollständigen Bezahlung im Eigentum des Anbieters.

§ 4 Fälligkeit

Die Zahlung des Kaufpreises ist mit Vertragsschluss fällig.

","You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.","Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen. Die Widerrufsfrist beträgt vierzehn Tage ab dem Tag, an dem Sie oder ein von Ihnen benannter Dritter, der nicht der Beförderer ist, die letzte Ware in Besitz genommen hat. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist. Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.",

Budget Cameras

Spitalerstraße 3
20095 Hamburg
DE

Phone: 030 1234567
Email: support@budgetcamerasonline.com

Represented by
Managing Director: Max Mustermann
Register Court: Hamburg
Register Number: HXX 134305

,

Budget Cameras

Spitalerstraße 3
20095 Hamburg
DE

Phone: 030 1234567
Email: support@budgetcamerasonline.com

Vertreten durch
Geschäftsführer: Max Mustermann
Registergericht: Hamburg
Registernummer: HXX 134305

,Budget Cameras values the privacy of your personal data.,Für die Abwicklung ihrer Bestellung gelten auch die Datenschutzbestimmungen von Budget Cameras.,1,+49 30 234567500 -``` -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| merchant_reference | ✓ | String | MER000007 | Merchant identifier. | -| contact_person_role | | String | E-Commerce Manager | Role of the contact person of a merchant. | -| contact_person_title | | String | Mr | The title shown for the contact person of a merchant. | -| contact_person_first_name | | String | Harald | First name of the contact person of a merchant. | -| contact_person_last_name | | String | Schmidt | Last name of the contact person of a merchant. | -| contact_person_phone | | String | 030 234567891a | Phone number of the contact person of a merchant. | -| banner_url | | String | `http://cdn-link/banner.png` | Default banner URL of a merchant if a locale specific one does not exist. | -| logo_url | | String | `http://cdn-link/logo.png` | Logo URL of a merchant. | -| public_email | | String | `email@merchant-domain.com` | Public email for communication of a merchant. | -| public_phone | | String | 030 234567891 | Public phone for communication of a merchant. | -| description_glossary_key.en_US | | String | Lorem ipsum dolor sit amet | Description of a merchant in the en_US locale. | -| description_glossary_key.de_DE | | String | Lorem ipsum dolor sit amet | Description of a merchant in the de_DE locale. | -| banner_url_glossary_key.en_US | | String | `http://cdn-link/en-banner.png` | Locale specific banner URL of a merchant. | -| banner_url_glossary_key.de_DE | | String | `http://cdn-link/en-banner.png` | Locale specific banner URL of a merchant. | -| delivery_time_glossary_key.en_US | | String | 1-3 days | Average delivery time of a merchant in the en_US locale. | -| delivery_time_glossary_key.de_DE | | String | 1-3 days | Average delivery time of a merchant in the de_DE locale. | -| terms_conditions_glossary_key.en_US | | String | Lorem ipsum dolor sit amet | Terms and conditions of a merchant in the en_US locale. | -| terms_conditions_glossary_key.de_DE | | String | Lorem ipsum dolor sit amet | Terms and conditions of a merchant in the de_DE locale. | -| cancellation_policy_glossary_key.en_US | | String | Lorem ipsum dolor sit amet | Cancellation policy of a merchant in the en_US locale. | -| cancellation_policy_glossary_key.de_DE | | String | Lorem ipsum dolor sit amet | Cancellation policy of a merchant in the de_DE locale. | -| imprint_glossary_key.en_US | | String | Lorem ipsum dolor sit amet | Imprint of a merchant in the en_US locale. | -| imprint_glossary_key.de_DE | | String | Lorem ipsum dolor sit amet | Imprint of a merchant in the de_DE locale. | -| data_privacy_glossary_key.en_US | | String | Lorem ipsum dolor sit amet | Data privacy statement of a merchant in the en_US locale. | -| data_privacy_glossary_key.de_DE | | String | Lorem ipsum dolor sit amet | Data privacy statement of a merchant in the de_DE locale. | -| fax_number | | String | 030 234567800 | Fax number of a merchant. | - -2. Prepare merchant profile address data according to your requirements using the demo data: - -**/data/import/common/common/marketplace/merchant_profile_address.csv** - -``` -merchant_reference,country_iso2_code,country_iso3_code,address1,address2,address3,city,zip_code,longitude,latitude -MER000001,DE,DEU,Julie-Wolfthorn-Straße,1,,Berlin,10115,52.534105,13.384458 -MER000002,NL,,Gilzeweg,24,,Bavel,4854SG,51.558107,4.838470 -MER000006,DE,DEU,Matthias-Pschorr-Straße,1,,München,80336,48.131058,11.547788 -MER000005,DE,DEU,Spitalerstraße,3,,Berlin,10115,, -MER000004,DE,DEU,Caroline-Michaelis-Straße,8,,Hamburg,20095,, -MER000003,DE,DEU,Caroline-Michaelis-Straße,8,,Berlin,10115,, -MER000007,DE,DEU,Caroline-Michaelis-Straße,8,,Berlin,10115,53.552463,10.004663 -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| merchant_reference | ✓ | String | MER000006 | Merchant identifier. | -| country_iso2_code | | String | DE | Country ISO-2 code the address exists in. | -| country_iso3_code | | String | DEU | Country ISO-3 code the address exists in. | -| address1 | | String | Caroline-Michaelis-Straße | Address line 1 of a merchant. | -| address2 | | String | 8 | Address line 2 of a merchant. | -| address3 | | String | Second floor | Address line 3 of a merchant. | -| city | | String | Berlin | City address of a merchant. | -| zip_code | | String | 10115 | Zip code address of a merchant. | -| longitude | | String | 52.534105 | Longitude value of a merchant. | -| latitude | | String | 13.384458 | Latitude value of a merchant. | - -3. Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProfileDataImportPlugin | Imports merchant profile data into the database. | | Spryker\Zed\MerchantProfileDataImport\Communication\Plugin | -| MerchantProfileAddressDataImportPlugin | Imports merchant profile address data into the database. | | Spryker\Zed\MerchantProfileDataImport\Communication\Plugin | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - -src/Pyz/Zed/DataImport/Business/Model/MerchantUser/MerchantUserWriterStep.php - -```php -merchantUserFacade = $merchantUserFacade; - } - - protected const MERCHANT_REFERENCE = 'merchant_reference'; - protected const USERNAME = 'username'; - - /** - * @inheritDoc - */ - public function execute(DataSetInterface $dataSet): void - { - $idMerchant = $this->getIdMerchantByReference($dataSet[static::MERCHANT_REFERENCE]); - $idUser = $this->getIdUserByUsername($dataSet[static::USERNAME]); - - $merchantUserTransfer = $this->merchantUserFacade->findMerchantUser( - (new MerchantUserCriteriaTransfer()) - ->setIdUser($idUser) - ->setIdMerchant($idMerchant) - ); - - if (!$merchantUserTransfer) { - $userTransfer = $this->merchantUserFacade->findUser( - (new UserCriteriaTransfer())->setIdUser($idUser) - ); - - $this->merchantUserFacade->createMerchantUser( - (new MerchantUserTransfer()) - ->setIdMerchant($idMerchant) - ->setUser($userTransfer) - ); - } - } - - /** - * @param string $merchantReference - * - * @throws \Pyz\Zed\DataImport\Business\Exception\EntityNotFoundException - * - * @return int - */ - protected function getIdMerchantByReference(string $merchantReference): int - { - $merchantEntity = SpyMerchantQuery::create() - ->findOneByMerchantReference($merchantReference); - - if (!$merchantEntity) { - throw new EntityNotFoundException(sprintf('Merchant with reference "%s" is not found.', $merchantReference)); - } - - return $merchantEntity->getIdMerchant(); - } - - /** - * @param string $username - * - * @throws \Pyz\Zed\DataImport\Business\Exception\EntityNotFoundException - * - * @return int - */ - protected function getIdUserByUsername(string $username): int - { - $userEntity = SpyUserQuery::create() - ->findOneByUsername($username); - - if (!$userEntity) { - throw new EntityNotFoundException(sprintf('User with username "%s" is not found.', $username)); - } - - return $userEntity->getIdUser(); - } -} -``` - - -3. Add the merchant user import type to full import (if needed). - -**src/Pyz/Zed/DataImport/DataImportConfig.php** - -```php - - */ - public function getFullImportTypes(): array - { - return [ - static::IMPORT_TYPE_MERCHANT_USER, - ]; - } -} -``` - -4. Enable merchant user data import command. - -**src/Pyz/Zed/DataImport/Business/DataImportBusinessFactory.php** - -```php -getDataEntity()) { - case DataImportConfig::IMPORT_TYPE_MERCHANT_USER: - return $this->createMerchantUserImporter($dataImportConfigurationActionTransfer); - default: - return null; - } - } - - /** - * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer - * - * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface - */ - public function createMerchantUserImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer) - { - $dataImporter = $this->getCsvDataImporterFromConfig( - $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer) - ); - - $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(); - $dataSetStepBroker->addStep(new MerchantUserWriterStep( - $this->getMerchantUserFacade() - )); - - $dataImporter->addDataSetStepBroker($dataSetStepBroker); - - return $dataImporter; - } - - /** - * @return \Spryker\Zed\MerchantUser\Business\MerchantUserFacadeInterface - */ - public function getMerchantUserFacade(): MerchantUserFacadeInterface - { - return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_MERCHANT_USER); - } -} -``` - -5. Create and prepare your data import configuration files according to your requirements using our demo config template: - -**data/import/common/marketplace_import_config_EU.yml** - -```yml -version: 0 - -actions: - - data_entity: merchant-user - source: data/import/common/common/merchant_user.csv - - data_entity: merchant-profile - source: data/import/common/common/marketplace/merchant_profile.csv - - data_entity: merchant-profile-address - source: data/import/common/common/marketplace/merchant_profile_address.csv - ``` - -6. Import data. - -```bash -console data:import merchant-user -``` - -{% info_block warningBox "Verification" %} - -Make sure that the imported data has been added to the `spy_merchant_profile`, `spy_merchant_profile_address` and `spy_merchant_user` tables. - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Marketplace Merchant feature frontend. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: -```bash -composer require spryker-feature/marketplace-merchant: "{{page.version}}" --update-with-dependencies -``` - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProfileWidget | vendor/spryker-shop/merchant-profile-widget | -| MerchantWidget | vendor/spryker-shop/merchant-widget | -| MerchantPage | vendor/spryker-shop/merchant-page | - -### 2) Add translations - -Add Yves translations: - -1. Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -``` -merchant.sold_by,Sold by,en_US -merchant.sold_by,Verkauft durch,de_DE -merchant_profile.email,Email Address,en_US -merchant_profile.email,Email,de_DE -merchant_profile.address,Address,en_US -merchant_profile.address,Adresse,de_DE -merchant_profile.phone,Phone,en_US -merchant_profile.phone,Telefon,de_DE -merchant_profile.terms_and_conditions,Terms & Conditions,en_US -merchant_profile.terms_and_conditions,AGB,de_DE -merchant_profile.cancellation_policy,Cancellation Policy,en_US -merchant_profile.cancellation_policy,Widerrufsbelehrung,de_DE -merchant_profile.imprint,Imprint,en_US -merchant_profile.imprint,Impressum,de_DE -merchant_profile.privacy,Data Privacy,en_US -merchant_profile.privacy,Datenschutz,de_DE -merchant_profile.delivery_time,Delivery Time,en_US -merchant_profile.delivery_time,Lieferzeit,de_DE -``` - -2. Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data has been added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 3) Set up widgets - -Register the following plugins to enable widgets: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| -------------- | --------------- | ------ | ---------------- | -| SoldByMerchantWidget | Shows the list of the offers with their prices for a concrete product. | | SprykerShop\Yves\MerchantWidget\Widget | - -**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - SoldByMerchantWidget::class, - ]; - } -} -``` - -Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following widgets were registered: - -| MODULE | TEST | -|----------------------|---------------------------------------------------------------------------------------------------------------------| -| SoldByMerchantWidget | Open product detail page, and you will see the sold by merchant text. (May require Marketplace Product integration) | - -{% endinfo_block %} - -### 4) Set up behavior - -To set up behavior: - -1. Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantPageResourceCreatorPlugin | Lets you access a merchant page at `https://yves.mysprykershop.com/merchant/{merchantReference}`. | | SprykerShop\Yves\MerchantPage\Plugin | -| UrlStorageMerchantMapperPlugin | Provides access to merchant storage data in the controller related to the `https://yves.mysprykershop.com/merchant/{merchantReference}` URL. | Publish URL storage data to Redis by running `console sync:data url`. | Spryker\Client\MerchantStorage\Plugin | - -**src/Pyz/Yves/StorageRouter/StorageRouterDependencyProvider.php** - -```php - - */ - protected function getResourceCreatorPlugins(): array - { - return [ - new MerchantPageResourceCreatorPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/UrlStorage/UrlStorageDependencyProvider.php** - -```php - - */ - protected function getUrlStorageResourceMapperPlugins() - { - return [ - new UrlStorageMerchantMapperPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can open the merchant page at link `http://yves.de.demo-spryker.com/de/merchant/spryker`. - -{% endinfo_block %} - -2. Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can view merchant profile data at `http://yves.de.demo-spryker.com/de/merchant/spryker`. - -{% endinfo_block %} - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| - | - | -| -| Marketplace Merchant API | ✓ | [Marketplace Merchant feature integration ](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-merchant-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-core-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-core-feature-integration.md deleted file mode 100644 index 4cfa29c4863..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-core-feature-integration.md +++ /dev/null @@ -1,1235 +0,0 @@ ---- -title: Marketplace Merchant Portal Core feature integration -last_updated: Oct 19, 2021 -description: This document describes how to integrate the Merchant Portal Core feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Merchant Portal Core feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Portal Core feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| -------------------- | ---------- | ---------| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Spryker Core BO | {{page.version}} | [Spryker Core Back Office feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-back-office-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Acl | {{page.version}} | [ACL feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/acl-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-merchantportal-core:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| ZedUi | vendor/spryker/zed-ui | -| GuiTable | vendor/spryker/gui-table | -| AclMerchantPortal | vendor/spryker/acl-merchant-portal | -| MerchantPortalApplication | vendor/spryker/merchant-portal-application | -| MerchantUserPasswordResetMail | vendor/spryker/merchant-user-password-reset-mail | -| Navigation | vendor/spryker/navigation | -| SecurityMerchantPortalGui | vendor/spryker/security-merchant-portal-gui | -| UserMerchantPortalGui | vendor/spryker/user-merchant-portal-gui | -| UserMerchantPortalGuiExtension | spryker/user-merchant-portal-gui-extension | - -{% endinfo_block %} - -### 2) Set up the database schema - -**src/Pyz/Zed/Merchant/Persistence/Propel/Schema/spy_merchant.schema.xml** - -```xml - - - - - - - - -
- -
-``` - -**src/Pyz/Zed/MerchantUser/Persistence/Propel/Schema/spy_merchant_user.schema.xml** - -```xml - - - - - -
- -
-``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -### 3) Set up behavior - -Set up behavior as follows: - -#### Integrate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ----------- | ------------ | ------------- | --------- | -| MerchantUserSecurityPlugin | Sets security firewalls (rules, handlers) for Marketplace users. | | Spryker\Zed\SecurityMerchantPortalGui\Communication\Plugin\Security | -| BooleanToStringTwigPlugin | Adds a new Twig function for converting Boolean to String. | | Spryker\Zed\ZedUi\Communication\Plugin\Twig | -| ZedUiNavigationTwigPlugin | Adds a new Twig function for rendering Navigation using web components. | | Spryker\Zed\ZedUi\Communication\Plugin | -| GuiTableApplicationPlugin | Enables GuiTable infrastructure for Zed. | | Spryker\Zed\GuiTable\Communication\Plugin\Application | -| GuiTableConfigurationTwigPlugin | Adds a new Twig function for rendering GuiTableConfiguration for the GuiTable web component. | | Spryker\Zed\GuiTable\Communication\Plugin\Twig | -| SecurityTokenUpdateMerchantUserPostChangePlugin | Rewrites Symfony security token. | | Spryker\Zed\SecurityMerchantPortalGui\Communication\Plugin\UserMerchantPortalGui | -| MerchantPortalAclEntityMetadataConfigExpanderPlugin |Expands provided Acl Entity Metadata with merchant order composite, merchant product composite, merchant composite, product offer composit data, merchant read global entities and allowlist entities. | | Spryker\Zed\AclMerchantPortal\Communication\Plugin\AclEntity | -| MerchantAclMerchantPostCreatePlugin | Creates ACL group, ACL role, ACL rules, ACL entity rules, and ACL entity segment for the provided merchant. | | Spryker\Zed\AclMerchantPortal\Communication\Plugin\Merchant | -| MerchantAclMerchantUserPostCreatePlugin | Creates ACL group, ACL role, ACL rules, ACL entity rules and ACL entity segment for the provided merchant user. | | Spryker\Zed\AclMerchantPortal\Communication\Plugin\MerchantUser | -| ProductViewerForOfferCreationAclInstallerPlugin | Provide `ProductViewerForOfferCreation` Roles with Rules and Groups to create on install. | | Spryker\Zed\AclMerchantPortal\Communication\Plugin\MerchantUser | - -**src/Pyz/Zed/Twig/TwigDependencyProvider.php** - -```php - - */ - protected function getTwigPlugins(): array - { - return [ - new ZedUiNavigationTwigPlugin(), - new BooleanToStringTwigPlugin(), - new GuiTableConfigurationTwigPlugin() - ]; - } -} -``` - -**src/Pyz/Zed/Application/ApplicationDependencyProvider.php** - -```php - - */ - protected function getApplicationPlugins(): array - { - return [ - new GuiTableApplicationPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Security/SecurityDependencyProvider.php** - -```php - - */ - protected function getSecurityPlugins(): array - { - return [ - new UserSessionHandlerSecurityPlugin(), - new MerchantUserSecurityPlugin(), - new UserSecurityPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/UserMerchantPortalGui/UserMerchantPortalGuiDependencyProvider.php** - -```php - - */ - public function getMerchantUserPostChangePlugins(): array - { - return [ - new SecurityTokenUpdateMerchantUserPostChangePlugin(), - ]; - } -} - -``` - -**src/Pyz/Zed/AclEntity/AclEntityDependencyProvider.php** - -```php - - */ - protected function getAclEntityMetadataCollectionExpanderPlugins(): array - { - return [ - new MerchantPortalAclEntityMetadataConfigExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Merchant/MerchantDependencyProvider.php** - -```php - - */ - protected function getMerchantPostCreatePlugins(): array - { - return [ - new MerchantAclMerchantPostCreatePlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/MerchantUser/MerchantUserDependencyProvider.php** - -```php - - */ - protected function getMerchantUserPostCreatePlugins(): array - { - return [ - new MerchantAclMerchantUserPostCreatePlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Acl/AclDependencyProvider.php** - -```php - - */ - protected function getAclInstallerPlugins(): array - { - return [ - new ProductViewerForOfferCreationAclInstallerPlugin(), - ]; - } -} -``` - -#### Enable Merchant Portal infrastructural plugins - -
src/Pyz/Zed/MerchantPortalApplication/MerchantPortalApplicationDependencyProvider.php - -```php - - */ - protected function getMerchantPortalApplicationPlugins(): array - { - return [ - new SessionApplicationPlugin(), - new TwigApplicationPlugin(), - new EventDispatcherApplicationPlugin(), - new LocaleApplicationPlugin(), - new TranslatorApplicationPlugin(), - new MessengerApplicationPlugin(), - new PropelApplicationPlugin(), - new MerchantPortalRouterApplicationPlugin(), - new HttpApplicationPlugin(), - new ErrorHandlerApplicationPlugin(), - new FormApplicationPlugin(), - new ValidatorApplicationPlugin(), - new GuiTableApplicationPlugin(), - new SecurityApplicationPlugin(), - new ZedUiApplicationPlugin(), - new AclEntityApplicationPlugin(), - ]; - } -} -``` - -
- -**src/Pyz/Zed/MerchantPortalApplication/Communication/Bootstrap/MerchantPortalBootstrap.php** -```php - - */ - protected function getMerchantPortalRouterPlugins(): array - { - return [ - new MerchantPortalRouterPlugin() - ]; - } -} -``` - -Open access to the Merchant Portal login page by default: - -**config/Shared/config_default.php** - -```php - 'security-merchant-portal-gui', - 'controller' => 'login', - 'action' => 'index', - 'type' => 'allow', - ], - -]; -``` - -Add console command for warming up *Merchant Portal* router cache: - -**src/Pyz/Zed/Console/ConsoleDependencyProvider.php** -```php - - */ - protected function getConsoleCommands(Container $container): array - { - $commands = [ - new MerchantPortalRouterCacheWarmUpConsole(), - ]; - - return $commands; - } -} -``` - -**config/install/docker.yml** -```yaml -env: - NEW_RELIC_ENABLED: 0 - -sections: - build: - router-cache-warmup-merchant-portal: - command: 'vendor/bin/console router:cache:warm-up:merchant-portal' -``` - -### 4) Set up transfer objects - -Generate transfer objects: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ----------- | ----- | ------- | -------------------- | -| GuiTableDataRequest | class | Created | src/Generated/Shared/Transfer/GuiTableDataRequestTransfer | -| GuiTableConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableConfigurationTransfer | -| GuiTableColumnConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableColumnConfigurationTransfer | -| GuiTableTitleConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableTitleConfigurationTransfer | -| GuiTableDataSourceConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableDataSourceConfigurationTransfer | -| GuiTableRowActionsConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableRowActionsConfigurationTransfer | -| GuiTableBatchActionsConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableBatchActionsConfigurationTransfer | -| GuiTablePaginationConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTablePaginationConfigurationTransfer | -| GuiTableSearchConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableSearchConfigurationTransfer | -| GuiTableFiltersConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableFiltersConfigurationTransfer | -| GuiTableItemSelectionConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableItemSelectionConfigurationTransfer | -| GuiTableSyncStateUrlConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableSyncStateUrlConfigurationTransfer | -| GuiTableEditableConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableEditableConfigurationTransfer | -| GuiTableEditableCreateConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableEditableCreateConfigurationTransfer | -| GuiTableEditableUpdateConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableEditableUpdateConfigurationTransfer | -| GuiTableEditableButton | class | Created | src/Generated/Shared/Transfer/GuiTableEditableButtonTransfer | -| GuiTableEditableUrl | class | Created | src/Generated/Shared/Transfer/GuiTableEditableUrlTransfer | -| GuiTableEditableInitialData | class | Created | src/Generated/Shared/Transfer/GuiTableEditableInitialDataTransfer | -| GuiTableEditableDataError | class | Created | src/Generated/Shared/Transfer/GuiTableEditableDataErrorTransfer | -| GuiTableDataResponse | class | Created | src/Generated/Shared/Transfer/GuiTableDataResponseTransfer | -| GuiTableRowDataResponse | class | Created | src/Generated/Shared/Transfer/GuiTableRowDataResponseTransfer | -| GuiTableDataResponsePayload | class | Created | src/Generated/Shared/Transfer/GuiTableDataResponsePayloadTransfer | -| SelectGuiTableFilterTypeOptions | class | Created | src/Generated/Shared/Transfer/SelectGuiTableFilterTypeOptionsTransfer | -| OptionSelectGuiTableFilterTypeOptions | class | Created | src/Generated/Shared/Transfer/OptionSelectGuiTableFilterTypeOptionsTransfer | -| GuiTableFilter | class | Created | src/Generated/Shared/Transfer/GuiTableFilterTransfer | -| GuiTableRowAction | class | Created | src/Generated/Shared/Transfer/GuiTableRowActionTransfer | -| GuiTableRowActionOptions | class | Created | src/Generated/Shared/Transfer/GuiTableRowActionOptionsTransfer | -| DateRangeGuiTableFilterTypeOptions | class | Created | src/Generated/Shared/Transfer/DateRangeGuiTableFilterTypeOptionsTransfer | -| CriteriaRangeFilter | class | Created | src/Generated/Shared/Transfer/CriteriaRangeFilterTransfer | -| GuiTableBatchAction | class | Created | src/Generated/Shared/Transfer/GuiTableBatchActionTransfer | -| GuiTableBatchActionOptions | class | Created | src/Generated/Shared/Transfer/GuiTableBatchActionOptionsTransfer | -| GuiTableColumnConfiguratorConfiguration | class | Created | src/Generated/Shared/Transfer/GuiTableColumnConfiguratorConfigurationTransfer | -| ZedUiFormResponseAction | class | Created | src/Generated/Shared/Transfer/ZedUiFormResponseActionTransfer | - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Merchant Portal Core feature frontend. - -### Prerequisites - -Environment requirements: - * npm v6 (higher versions have problems with workspace) - * Node.js v12-14 - * Yarn v2 (or latest Yarn v1) - -Spryker requirements: - -To start builder integration, check the Spryker packages versions: - -| NAME | VERSION | -| --------------------------- | --------- | -| Discount (optional) | >= 9.7.4 | -| Gui (optional) | >= 3.30.2 | -| Product Relation (optional) | >= 2.4.3 | - -### 1) Install the required modules using Composer - -Install the required modules: -```bash -composer require spryker/dashboard-merchant-portal-gui:"^1.0.0" --update-with-dependencies -``` - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| DashboardMerchantPortalGui | vendor/spryker/dashboard-merchant-portal-gui | -| DashboardMerchantPortalGuiExtension | vendor/spryker/dashboard-merchant-portal-gui-extension | - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| MerchantDashboardCard | object | Created | src/Generated/Shared/Transfer/MerchantDashboardCardTransfer | -| MerchantDashboardActionButton | object | Created | src/Generated/Shared/Transfer/MerchantDashboardActionButtonTransfer | - -{% endinfo_block %} - -### 3) Build navigation cache - -Execute the following command: - -```bash -console navigation:build-cache -``` -{% info_block warningBox "Verification" %} - -Make sure that Merchant Portal has the **Dashboard** menu. - -{% endinfo_block %} - - -### 4) Set up Marketplace builder configs - -Add the `angular.json` file: - -```bash -wget -O angular.json https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/angular.json -``` - -Rename default `tsconfig` to `tsconfig.yves.json` and create marketplace-specific `tsconfig` files (`tsconfig.json`, `tsconfig.mp.json`) - -```bash -mv tsconfig.json tsconfig.yves.json -wget -O tsconfig.json https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/tsconfig.json -wget -O tsconfig.mp.json https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/tsconfig.mp.json -``` - -Add `vendor/**` and `**/node_modules/**` to exclude option in `tslint.json`. - -Add the `tslint.mp.json` file: - -```bash -wget -O tslint.mp.json https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/tslint.mp.json -``` - -Install npm dependencies: - -```bash -npm i rxjs@~6.6.0 zone.js@~0.10.3 @webcomponents/custom-elements@~1.3.1 @webcomponents/webcomponents-platform@~1.0.1 @webcomponents/webcomponentsjs@~2.4.0 -``` - -Install npm dev dependencies: - -```bash -npm i -D @angular-builders/custom-webpack@~9.1.0 @angular-devkit/build-angular@~0.901.11 @angular/cli@~9.1.11 @angular/common@~9.1.12 @angular/compiler@~9.1.12 @angular/compiler-cli@~9.1.12 @angular/core@~9.1.12 @angular/language-service@~9.1.12 @angular/platform-browser@~9.1.12 @angular/platform-browser-dynamic@~9.1.12 @babel/plugin-proposal-class-properties@~7.10.4 @babel/plugin-transform-runtime@~7.10.5 @babel/preset-typescript@~7.10.4 @jsdevtools/file-path-filter@~3.0.2 @nrwl/jest@~9.4.4 @nrwl/workspace@~9.4.4 @spryker/oryx-for-zed@~2.11.3 @types/jest@~26.0.4 @types/node@~12.11.1 @types/webpack@~4.41.17 jest@~26.1.0 jest-preset-angular@~8.2.1 node-sass@~4.14.1 npm-run-all@~4.1.5 rimraf@~3.0.2 ts-jest@~26.1.3 ts-node@~8.3.0 tslib@~1.11.1 typescript@~3.8.3 -``` - -Update `package.json` with the following fields: - -**package.json** - -```json -{ - "workspaces": [ - "vendor/spryker/*", - "vendor/spryker/*/assets/Zed" - ], - "scripts": { - "mp:build": "ng build", - "mp:build:watch": "ng build --watch", - "mp:build:production": "ng build --prod", - "mp:test": "ng test", - "mp:lint": "ng lint", - "mp:clean": "run-s mp:clean:*", - "mp:clean:dist": "rimraf public/MerchantPortal/assets/js", - "mp:update:paths": "node ./frontend/merchant-portal/update-config-paths", - "postinstall": "npm run mp:update:paths" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.9.0" - }, - "resolutions": { - "typescript": "3.8.3", - "fsevents": "2.1.3" - } -} -``` - -For Yves, in the `globalSettings.paths` object, update `frontend/settings.js` to point to an updated `tsconfig`: - -**frontend/settings.js** - -```js -const globalSettings = { - ... - paths: { - tsConfig: './tsconfig.yves.json', - ... - } -}; -``` - -Add a `.yarnrc.yml` file: - -**.yarnrc.yml** - -```yaml -nodeLinker: node-modules - -plugins: - - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.js - spec: '@yarnpkg/plugin-workspace-tools' - - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs - spec: '@yarnpkg/plugin-interactive-tools' - -yarnPath: .yarn/releases/yarn-2.3.3.js -``` - -Add the `.yarn` folder and download `plugin-workspace-tools.js` and `yarn-2.3.3.js`: - -```bash -mkdir .yarn && mkdir .yarn/plugins && mkdir .yarn/releases -wget -O .yarn/plugins/@yarnpkg/plugin-workspace-tools.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/.yarn/plugins/%40yarnpkg/plugin-workspace-tools.js -wget -O .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/.yarn/plugins/%40yarnpkg/plugin-interactive-tools.cjs -wget -O .yarn/releases/yarn-2.3.3.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/.yarn/releases/yarn-2.3.3.js -``` - -From the root of the project, run the following: - -```bash -npm i -g yarn @angular/cli@9.1.11 -``` - -To check if the yarn has been installed correctly, run `yarn -v`. 1.22.x—global version outside of the project and 2.x.x at least in the project. - -`ng --version` should show Angular CLI: 9.1.11 version. - -Install project dependencies: - -```bash -yarn install -``` - -{% info_block warningBox "Warning" %} - -If you're getting `Missing write access to node_modules/mp-profile`, delete this **file** and make a **folder** with the same name. - -{% endinfo_block %} - -Check if the marketplace packages are located in the `node_modules/@spryker` folder — for example, utils. - -### 5) Install Marketplace builder - -Add the `merchant-portal` folder and builder files: - -```bash -mkdir frontend/merchant-portal -wget -O frontend/merchant-portal/entry-points.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/entry-points.js -wget -O frontend/merchant-portal/html-transform.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/html-transform.js -wget -O frontend/merchant-portal/jest.config.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/jest.config.js -wget -O frontend/merchant-portal/mp-paths.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/mp-paths.js -wget -O frontend/merchant-portal/test-setup.ts https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/test-setup.ts -wget -O frontend/merchant-portal/tsconfig.spec.json https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/tsconfig.spec.json -wget -O frontend/merchant-portal/update-config-paths.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/update-config-paths.js -wget -O frontend/merchant-portal/utils.js https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/utils.js -wget -O frontend/merchant-portal/webpack.config.ts https://raw.githubusercontent.com/spryker-shop/suite/1.8.0/frontend/merchant-portal/webpack.config.ts -``` - -**frontend/merchant-portal/webpack.config.ts** - -```ts -import { - CustomWebpackBrowserSchema, - TargetOptions, -} from "@angular-builders/custom-webpack"; -import * as webpack from "webpack"; - -import { getMPEntryPointsMap } from "./entry-points"; - -export default async ( - config: webpack.Configuration, - options: CustomWebpackBrowserSchema, - targetOptions: TargetOptions -): Promise => { - console.log("Resolving entry points..."); - - const entryPointsMap = await getMPEntryPointsMap(); - - console.log(`Found ${Object.keys(entryPointsMap).length} entry point(s)!`); - - config.entry = { - ...(config.entry as any), - ...entryPointsMap, - }; - - return config; -}; -``` - -### 6) Add files for Merchant Portal entry point: - -**public/MerchantPortal/index.php** - -```php -initialize(); - -$bootstrap = new MerchantPortalBootstrap(); -$bootstrap - ->boot() - ->run(); -``` - -**public/MerchantPortal/maintenance/index.html** - -```html - - - - Spryker Merchant Portal - Maintenance - - - - - - - -
-
-
-                PAGE UNDER CONSTRUCTION!
-
-                Come back in a few minutes...
-                
-
-
- - -``` - -**public/MerchantPortal/maintenance/maintenance.php** - -```php - - - - - ZedUi - - - - - -``` - -**src/Pyz/Zed/ZedUi/Presentation/Components/main.ts** - -```ts -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(AppModule) - /* tslint:disable-next-line: no-console */ - .catch((error) => console.error(error)); -``` - -**src/Pyz/Zed/ZedUi/Presentation/Components/polyfills.ts** - -```ts -import '@mp/polyfills'; -``` - -{% info_block warningBox "Verification" %} - -`yarn run mp:build` should pass successfully. If it doesn't work, try full rebuild: - -`rm -rf node_modules && yarn cache clean --all && npm cache clean --force && yarn install && yarn mp:build` - -{% endinfo_block %} - -### 6) Adjust deployment configs - -To configure deployment configuration to automatically install and build Merchant Portal, change frontend dependencies and install commands in the deployment Yaml: - -- Remove existing Yves dependencies install commands from deployment Yaml: `dependencies-install` and `yves-isntall-dependencies`. -- Add required console commands: - -**src/Pyz/Zed/Console/ConsoleDependencyProvider.php** - -```php - - */ - protected function getConsoleCommands(Container $container): array - { - $commands = [ - new MerchantPortalInstallDependenciesConsole(), - new MerchantPortalBuildFrontendConsole(), - ]; - - return $commands; - } -} - -``` - -- Update project install dependencies command dependencies-install command to: - - build-static: - ```bash - merchant-portal-install-dependencies: - command: 'console frontend:mp:install-dependencies | tail -100 && echo "Output trimmed, only last 100 lines shown."' - ``` - -- Add the Merchant Portal build command: - - build-static-production: - ```yaml - merchant-portal-build-frontend: - command: 'vendor/bin/console frontend:mp:build -e production' - timeout: 1600 - ``` - - - build-static-development: - ```yaml - merchant-portal-build-frontend: - command: 'vendor/bin/console frontend:mp:build' - timeout: 1600 - ``` - -## Adjust environment infrastructure - -It is not safe to expose MerchantPortal next to the Back Office—MerchantPortal *must not have* OS, DNS name, VirtualHost settings, FileSystem, and service credentials shared with Zed. - -### 1) Set up a new virtual machine/docker container dedicated to MerchantPortal - -MerchantPortal *must be* placed into its own private subnet. - -MerchantPortal *must have* access to the following: - -- Primary Database -- Message broker - -MerchantPortal *must not have* access to the following: - -- Search and Storage -- Gateway -- Scheduler - -**deploy.dev.yml** -```yaml -... -groups: - EU: - region: EU - applications: - merchant_portal_eu: - application: merchant-portal - endpoints: - mp.de.spryker.local: - entry-point: MerchantPortal - store: DE - primal: true - services: - session: - namespace: 7 - mp.at.spryker.local: - entry-point: MerchantPortal - store: AT - services: - session: - namespace: 8 - US: - region: US - applications: - merchant_portal_us: - application: merchant-portal - endpoints: - mp.us.spryker.local: - entry-point: MerchantPortal - store: US - services: - session: - namespace: 9 -``` - -### 2) Create a dedicated database user - -Grant only default CRUD operations—`INSERT`, `DELETE`, `UPDATE`, `SELECT`. Do not grant `ALL PRIVILEGES`, `GRANT OPTION`, `DROP`, `CREATE`, and other admin-related grants. - -The following code snippet example is for MySQL: - -```mysql -CREATE USER 'merchantportal'@'localhost' IDENTIFIED BY '{your_merchantportal_password}'; // YOU MUST CHANGE THE PASSWORD. -GRANT SELECT, INSERT, UPDATE, DELETE ON your_app_schema.* TO 'merchantportal'@'localhost'; -FLUSH PRIVILEGES; -``` - -### 3) Create a new Nginx web server configuration - -The following is an example of an Nginx configuration: - -**/etc/nginx/merchant-portal.conf** - -```nginx -server { - # { Your virtual host settings } - - # Allow /assets/js/mp assets to be served only - location ~ (/assets/js/mp|/favicon.ico|/robots.txt) { - access_log off; - expires 30d; - add_header Pragma public; - add_header Cache-Control "public, must-revalidate, proxy-revalidate"; - try_files $uri =404; - } - - # Allow /marchant-portal-gui pages to be served only - location ~ ^/[a-z-]+-merchant-portal-gui { - add_header X-Server $hostname; - fastcgi_pass { YOUR_FASTCGI_PASS }; - fastcgi_index index.php; - include /etc/nginx/fastcgi_params; - fastcgi_param SCRIPT_NAME /index.php; - fastcgi_param APPLICATION_ENV $application_env; - fastcgi_param APPLICATION_STORE $application_store; - fastcgi_param SCRIPT_FILENAME $document_root/index.php; - - # Credentials of the newly created DB user. - fastcgi_param SPRYKER_DB_USERNAME merchantportal; - fastcgi_param SPRYKER_DB_PASSWORD '{your_merchantportal_password}'; - - - more_clear_headers 'X-Powered-By' 'X-Store' 'X-Locale' 'X-Env' 'Server'; - } -} -``` - -After modifying the Nginx config, apply the new `config:f` - -```bash -sudo service nginx reload -``` - -{% info_block warningBox "Verification" %} - -Make sure to use environment variables in `config-default.php`: - -**config/Shared/config_default.php** - -```php -> $installerRules - * - * @return array> - */ - protected function addMerchantPortalInstallerRules(array $installerRules): array - { - $bundleNames = [ - 'user-merchant-portal-gui', - 'dashboard-merchant-portal-gui', - 'security-merchant-portal-gui', - ]; - - foreach ($bundleNames as $bundleName) { - $installerRules[] = [ - 'bundle' => $bundleName, - 'controller' => AclConstants::VALIDATOR_WILDCARD, - 'action' => AclConstants::VALIDATOR_WILDCARD, - 'type' => static::RULE_TYPE_DENY, - 'role' => AclConstants::ROOT_ROLE, - ]; - } - - return $installerRules; - } -} - -``` - -{% info_block warningBox "Verification" %} - -Make sure that after executing `console setup:init-db`, the `user-merchant-portal-gui` rule is present in the `spy_acl_rule` table. - -{% endinfo_block %} - -### 5) Update navigation - -Add the `My Account` and `Logout` sections to `navigation-secondary.xml`: - -**config/Zed/navigation-secondary.xml** - -```xml - - - - - My Account - user-merchant-portal-gui - my-account - index - - - - Logout - security-merchant-portal-gui - logout - index - danger - - -``` - -Execute the following command: -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Log in to the Merchant Portal and make sure that when clicking on the profile picture, the **My Account** and **Logout** buttons are visible in the overlay of the secondary navigation. - -{% endinfo_block %} - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|-----------------|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------| -| Merchant Portal | ✓ | [Merchant Portal feature integration ](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-product-offer-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-product-offer-management-feature-integration.md deleted file mode 100644 index 9a7c71f2716..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-merchant-portal-product-offer-management-feature-integration.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Merchant Portal - Marketplace Merchant Portal Product Offer Management feature integration -last_updated: Sep 14, 2021 -description: This integration guide provides steps on how to integrate the Marketplace Merchant Portal Product Offer Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Merchant Portal Product Offer Management feature into a Spryker project. - -## Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | --------- | ------------| -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) -| Marketplace Merchant Portal Core | {{page.version}} | [Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html) - - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-merchant-portal-product-offer-management:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------- | --------------- | -| ProductOfferMerchantPortalGui | vendor/spryker/product-offer-merchant-portal-gui | - -{% endinfo_block %} - - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ------------- | ---- | ------ |---------------- | -| MerchantProductOfferCounts | class | Created | src/Generated/Shared/Transfer/MerchantProductOfferCountsTransfer | -| MerchantStockCriteria.merchantReference | property | Created | src/Generated/Shared/Transfer/MerchantStockCriteriaTransfer | -| PriceProductOfferCriteria.volumeQuantities | property | Created | src/Generated/Shared/Transfer/PriceProductOfferCriteriaTransfer | -| PriceProductOfferTableCriteria | class | Created | src/Generated/Shared/Transfer/PriceProductOfferTableCriteriaTransfer | -| PriceProductOfferTableView | class | Created | src/Generated/Shared/Transfer/PriceProductOfferTableViewTransfer | -| PriceProductOfferTableViewCollection | class | Created | src/Generated/Shared/Transfer/PriceProductOfferTableViewCollectionTransfer | -| ProductConcrete.numberOfOffers | property | Created | src/Generated/Shared/Transfer/ProductConcreteTransfer | -| ProductConcrete.productOfferStock | property | Created | src/Generated/Shared/Transfer/ProductConcreteTransfer | -| ProductOffer.createdAt | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOffer.productAttributes | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOffer.productImages | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOffer.productLocalizedAttributes | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOffer.updatedAt | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOfferCollection.pagination | property | Created | src/Generated/Shared/Transfer/ProductOfferCollectionTransfer | -| ProductOfferCriteria.merchantIds | property | Created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| ProductOfferTableCriteria | class | Created | src/Generated/Shared/Transfer/ProductOfferTableCriteriaTransfer | -| ProductTableCriteria | class | Created | src/Generated/Shared/Transfer/ProductTableCriteriaTransfer | -| Item.merchantSku | property | Created | src/Generated/Shared/Transfer/ItemTransfer | - -{% endinfo_block %} - - -### 3) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Set up behavior - -To set up behavior: - -1. Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ---------------- | ------------- | --------- | ---------------- | -| OffersMerchantDashboardCardPlugin | Adds Product Offers card to `MerchantDashobard`. | | Spryker\Zed\ProductOfferMerchantPortalGui\Communication\Plugin\DashboardMerchantPortalGui | - -**src/Pyz/Zed/DashboardMerchantPortalGui/DashboardMerchantPortalGuiDependencyProvider.php** - -```php - - */ - protected function getDashboardCardPlugins(): array - { - return [ - new OffersMerchantDashboardCardPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `OffersMerchantDashboardCardPlugin` plugin is set up by opening `http://mp.mysprykershop.com/dashboard-portal-gui`. The Product Offers card should be presented on the page. - -{% endinfo_block %} - - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE |INTEGRATION GUIDE | -| --- | --- | --- | -| Merchant Portal - Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management | |[Merchant Portal - Marketplace Merchant Portal Product Offer Management + Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-merchant-portal-product-offer-management-merchant-portal-order-management-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-feature-integration.md deleted file mode 100644 index 440ac691472..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-feature-integration.md +++ /dev/null @@ -1,1125 +0,0 @@ ---- -title: Marketplace Order Management feature integration -last_updated: Oct 19, 2021 -description: This document describes how to integrate the Marketplace Order Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Order Management feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Order Management feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ------ | ---------------| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Order Management | {{page.version}} | [Order Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/order-management-feature-integration.html) | -| State Machine | {{page.version}} | [State Machine feature integration](https://github.com/spryker-feature/state-machine) | -| Marketplace Dummy Payment | {{page.version}} | [Marketplace Dummy Payment integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-dummy-payment-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Marketplace Shipment | {{page.version}} | [Marketplace Shipment feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-feature-integration.html) | - -### 1) Install required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-order-management:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------- | ------------------- | -| MerchantOms | vendor/spryker/merchant-oms | -| MerchantOmsDataImport | vendor/spryker/merchant-oms-data-import | -| MerchantOmsGui | vendor/spryker/merchant-oms-gui | -| MerchantSalesOrder | vendor/spryker/merchant-sales-order | -| MerchantSalesOrderMerchantUserGui | vendor/spryker/merchant-sales-order-merchant-user-gui | -| MerchantSalesOrderDataExport | vendor/spryker/merchant-sales-order-data-export | -| ProductOfferSales | vendor/spryker/product-offer-sales | -| OmsProductOfferReservation | vendor/spryker/oms-product-offer-reservation | -| ProductOfferReservationGui | vendor/spryker/product-offer-reservation-gui | - -{% endinfo_block %} - -### 2) Set up configuration - -Add the following configuration: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -| ------------- | ------------ | ------------ | -| MainMerchantStateMachine | Introduce `MainMerchantStateMachine` configuration. | config/Zed/StateMachine/Merchant/MainMerchantStateMachine.xml | -| MerchantDefaultStateMachine | Introduce `MerchantDefaultStateMachine` configuration. | config/Zed/StateMachine/Merchant/MerchantDefaultStateMachine.xml | -| MarketplacePayment | Introduce `MarketplacePayment` order management system. | config/Zed/oms/MarketplacePayment01.xml | -| Navigation | Introduce navigation configuration. | config/Zed/navigation.xml | -| MerchantOmsConfig | Introduce OMS processes configuration. | src/Pyz/Zed/MerchantOms/MerchantOmsConfig.php | - -
-src/Pyz/Zed/MerchantOms/MerchantOmsConfig.php - -```php - - */ - public function getMerchantProcessInitialStateMap(): array - { - return array_merge( - parent::getMerchantProcessInitialStateMap(), - [ - static::MAIN_MERCHANT_OMS_PROCESS_NAME => static::MAIN_MERCHANT_STATE_MACHINE_INITIAL_STATE, - ] - ); - } - - /** - * @api - * - * @return array - */ - public function getMerchantOmsProcesses(): array - { - return array_merge( - parent::getMerchantOmsProcesses(), - [ - static::MAIN_MERCHANT_OMS_PROCESS_NAME, - ] - ); - } -} -``` - -
- -
-config/Zed/StateMachine/Merchant/MainMerchantStateMachine.xml - -```xml - - - - - - - - - - - - - - - - - - created - new - initiate - - - - new - closed - close - - - - new - canceled - cancel - - - - canceled - closed - close - - - - new - left the merchant location - send to distribution - - - - left the merchant location - arrived at distribution center - confirm at center - - - - arrived at distribution center - shipped - ship - - - - shipped - delivered - deliver - - - - delivered - closed - close - - - - - - - - - - - - - - - - - -``` - -
- -
-config/Zed/StateMachine/Merchant/MerchantDefaultStateMachine.xml - -```xml - - - - - - - - - - - - - - - - - created - new - initiate - - - - new - shipped - ship - - - - new - closed - close - - - - new - canceled by merchant - cancel by merchant - - - - canceled by merchant - closed - close - - - - shipped - delivered - deliver - - - - delivered - closed - close - - - - - - - - - - - - - - - -``` - -
- -
-config/Zed/oms/MarketplacePayment01.xml - -```xml - - - - - - - - - - - - - - - - - - - new - paid - pay - - - - paid - merchant split pending - - - - paid - paid - - - - merchant split pending - sent to merchant - send to merchant - - - - sent to merchant - canceled - cancel - - - - canceled - refunded - refund - - - - refunded - closed - close - - - - sent to merchant - shipped by merchant - ship by merchant - - - - shipped by merchant - delivered - deliver - - - - delivered - closed - close - - - - - - - - - - - - - - - - -``` - -
- -**config/Zed/navigation.xml** - -```xml - - - - - - - My orders - merchant-sales-order-merchant-user-gui - index - index - 1 - - - - - - - - Orders - sales - index - index - - - - -``` - - -Execute the following command: - -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the navigation menu of the Back Office, you can see the **Marketplace > Orders** as well as **Sales > My Orders** menu items. - -{% endinfo_block %} - - -### 3) Set up database schema and transfer objects - -Adjust the schema definition so entity changes trigger events: - -**src/Pyz/Zed/OmsProductOfferReservation/Persistence/Propel/Schema/spy_oms_product_offer_reservation.schema.xml** - -```xml - - - - - - - -
- -
-``` - -Apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Check your database to make sure that the following changes have been applied: - -| DATABASE ENTITY | TYPE | EVENT | -| --------------- | ---- | ------ | -|spy_merchant.fk_state_machine_process |column |created | -|spy_merchant_sales_order_item.fk_state_machine_item_state | column|created | -|spy_merchant_sales_order | table |created | -|spy_merchant_sales_order_item | table |created | -|spy_merchant_sales_order_totals | table |created | -|spy_sales_expense.merchant_reference | column |created | -|spy_sales_order_item.merchant_reference | column |created | -|spy_sales_order_item.product_offer_reference | column | created | - -Make sure that the following changes have been triggered in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| --------- | ------- | ----- | ------------- | -| Merchant.fkStateMachineProcess | property | created | src/Generated/Shared/Transfer/MerchantTransfer | -| MerchantOrder | class | created | src/Generated/Shared/Transfer/MerchantOrderTransfer | -| MerchantOrderCriteria | class | created | src/Generated/Shared/Transfer/MerchantOrderCriteriaTransfer | -| MerchantOrderCollection | class | created | src/Generated/Shared/Transfer/MerchantOrderCollectionTransfer | -| MerchantOrderItem | class | created | src/Generated/Shared/Transfer/MerchantOrderItemTransfer | -| MerchantOrderItemCriteria | class | created | src/Generated/Shared/Transfer/MerchantOrderItemCriteriaTransfer | -| MerchantOrderItemCollection | class | created | src/Generated/Shared/Transfer/MerchantOrderItemCollectionTransfer | -| MerchantOrderItemResponse | class | created | src/Generated/Shared/Transfer/MerchantOrderItemResponseTransfer | -| MerchantOmsTriggerRequest | class | created | src/Generated/Shared/Transfer/MerchantOmsTriggerRequestTransfer | -| MerchantOmsTriggerResponse | class | created | src/Generated/Shared/Transfer/MerchantOmsTriggerResponseTransfer | -| OmsProductOfferReservationCriteria | class | created| src/Generated/Shared/Transfer/OmsProductOfferReservationCriteriaTransfer | -| OmsProductOfferReservation | class | created| src/Generated/Shared/Transfer/OmsProductOfferReservationTransfer | - -{% endinfo_block %} - -### 4) Add translations - -Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -``` -merchant_sales_order.merchant_order_id,Merchant Order ID,en_US -merchant_sales_order.merchant_order_id,Händlerbestell-ID,de_DE -``` - -Import data: - -```bash -console data:import glossary -``` - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data has been added to the `spy_glossary_key` and `spy_glossary_translation` tables. - -{% endinfo_block %} - -### 5) Import data - -Import data as follows: - -1. Prepare your data according to your requirements using the demo data: - -**data/import/common/common/marketplace/merchant_oms_process.csv** - -``` -merchant_reference,merchant_oms_process_name -MER000001,MainMerchantStateMachine -MER000002,MerchantDefaultStateMachine -MER000006,MerchantDefaultStateMachine -MER000004,MerchantDefaultStateMachine -MER000003,MerchantDefaultStateMachine -MER000007,MerchantDefaultStateMachine -MER000005,MerchantDefaultStateMachine -``` - -|PAREMETER |REQUIRED |TYPE |DATA EXAMPLE | DESCRIPTION | -|---------|---------|---------|---------| ---------| -|merchant_reference | ✓ | string | spryker |String identifier for merchant in the Spryker system. | -|merchant_oms_process_name | ✓ | string | MainMerchantStateMachine | String identifier for the State Machine processes.| - -2. Register the following plugin to enable data import: - -|PLUGIN |SPECIFICATION |PREREQUISITES |NAMESPACE | -|---------|---------|---------|---------| -|MerchantOmsProcessDataImportPlugin | Imports Merchant State Machine data | | Spryker\Zed\MerchantOmsDataImport\Communication\Plugin\DataImport | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - -data/export/config/merchant_order_export_config.yml - -```yaml -version: 1 - -defaults: - filter_criteria: &default_filter_criteria - merchant_order_created_at: - type: between - from: '2020-05-01 00:00:00+09:00' - to: '2021-12-31 23:59:59+09:00' - merchant_order_updated_at: - type: between - from: '2021-01-08 09:00:12+12:00' - to: '2021-12-31 23:59:59+09:00' - -actions: -#Merchant orders data export - - data_entity: merchant-order-expense - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [DE] - - - data_entity: merchant-order-expense - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [US] - - - data_entity: merchant-order-item - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [DE] - - - data_entity: merchant-order-item - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [US] - - - data_entity: merchant-order - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [DE] - - - data_entity: merchant-order - destination: 'merchants/{merchant_name}/merchant-orders/{data_entity}s_{store_name}_{timestamp}.csv' - filter_criteria: - <<: *default_filter_criteria - store_name: [US] -``` - - - -| PARAMETER | | | REQUIRED | POSSIBLE VALUES | DESCRIPTION | -|---|---|---|---|---|---| -| data_entity | | | ✓ | merchant-order merchant-order-item merchant-order-expense | String identifier for data entity that is expected to be exported. | -| filter_criteria | store_name | | ✓ | All existing store names. | An existing store name for the data to filter on. | -| | merchant_order_created_at | from | | Date in format 'YYYY-MM-DD HH:mm:ss HH24:MI' | Date of merchant order creation from which the data needs to be filtered. | -| | | to | | Date in format 'YYYY-MM-DD HH:mm:ss HH24:MI' | Date of merchant order creation up to which the data needs to be filtered. | -| | merchant_order_updated_at | from | | Date in format 'YYYY-MM-DD HH:mm:ss HH24:MI' | Date of merchant order update from which the data needs to be filtered. | -| | | to | | Date in format 'YYYY-MM-DD HH:mm:ss HH24:MI' | Date of merchant order update up to which the data needs to be filtered. | - -2. Register the following plugins to enable data export: - - PLUGIN | SPECIFICATION | PREREQUISITES| NAMESPACE| -| --------------- | -------------- | ------ | -------------- | -| MerchantOrderDataEntityExporterPlugin | Exports merchant order data | | Spryker\Zed\MerchantSalesOrderDataExport\Communication\Plugin\DataExport| -| MerchantOrderItemDataEntityExporterPlugin | Exports merchant order Items data | | Spryker\Zed\MerchantSalesOrderDataExport\Communication\Plugin\DataExport | -| MerchantOrderExpenseDataEntityExporterPlugin | Exports merchant order Expense data | |Spryker\Zed\MerchantSalesOrderDataExport\Communication\Plugin\DataExport | - -**src/Pyz/Zed/DataExport/DataExportDependencyProvider.php** - -```php - - */ - protected function getDataEntityExporterPlugins(): array - { - return [ - new MerchantOrderDataEntityExporterPlugin(), - new MerchantOrderItemDataEntityExporterPlugin(), - new MerchantOrderExpenseDataEntityExporterPlugin(), - ]; - } -} -``` - -3. Export data: - -```bash -console data:export --config=merchant_order_export_config.yml -``` - -### 7) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------ | ----------- | ----- | ------------ | -| TriggerEventFromCsvFileConsole |Allows for updating merchant order status via CSV input. | |Spryker\Zed\MerchantOms\Communication\Console | -| EventTriggerMerchantOrderPostCreatePlugin | Triggers new events for the newly created merchant orders | |Spryker\Zed\MerchantOms\Communication\Plugin\MerchantSalesOrder | -| MerchantOmsMerchantOrderExpanderPlugin |Expands merchant order with merchant Oms data (item state and manual events) | | Spryker\Zed\MerchantOms\Communication\Plugin\MerchantSalesOrder | -| MerchantStateMachineHandlerPlugin | Wires merchant order updates in the State Machine module | |Spryker\Zed\MerchantOms\Communication\Plugin\StateMachine | -| MerchantOmsStateOrderItemsTableExpanderPlugin |Expands the order item table with merchant order item state | | Spryker\Zed\MerchantOmsGui\Communication\Plugin\Sales | -| MerchantOrderDataOrderExpanderPlugin | Expands order data with merchant order details | | Spryker\Zed\MerchantSalesOrder\Communication\Plugin\Sales | -| MerchantReferenceOrderItemExpanderPreSavePlugin | Expands order item with merchant reference before saving an order item to the database | | Spryker\Zed\MerchantSalesOrder\Communication\Plugin\Sales | -| MerchantReferencesOrderExpanderPlugin |Expands order with merchant references from order items | | Spryker\Zed\MerchantSalesOrder\Communication\Plugin\Sales | -| ProductOfferReferenceOrderItemExpanderPreSavePlugin |Expands order item with product offer reference before saving the order item to the database | | Spryker\Zed\ProductOfferSales\Communication\Plugin\Sales | -| DeliverMarketplaceOrderItemCommandPlugin | Triggers 'deliver' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| ShipByMerchantMarketplaceOrderItemCommandPlugin | Triggers 'ship by merchant' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| CancelMarketplaceOrderItemCommandPlugin | Triggers 'ship by merchant' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| ShipmentFormTypePlugin | Returns ShipmentFormType class name resolution. | | Spryker\Zed\ShipmentGui\Communication\Plugin\Form | -| ItemFormTypePlugin | Returns ItemFormType class name resolution. | | Spryker\Zed\ShipmentGui\Communication\Plugin\Form | -| MerchantReferenceShipmentExpenseExpanderPlugin | Expands expense transfer with merchant reference from items | | Spryker\Zed\MerchantSalesOrder\Communication\Plugin\Shipment | - -**src/Pyz/Zed/MerchantOms/Communication/MerchantOmsCommunicationFactory.php** - -```php -getProvidedDependency(MerchantOmsDependencyProvider::FACADE_OMS); - } -} -``` - -
-src/Pyz/Zed/Sales/SalesDependencyProvider.php - -```php - - */ - protected function getOrderHydrationPlugins(): array - { - return [ - new MerchantOrderDataOrderExpanderPlugin(), - new MerchantReferencesOrderExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\SalesExtension\Dependency\Plugin\OrderItemExpanderPreSavePluginInterface> - */ - protected function getOrderItemExpanderPreSavePlugins(): array - { - return [ - new MerchantReferenceOrderItemExpanderPreSavePlugin(), - new ProductOfferReferenceOrderItemExpanderPreSavePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\SalesExtension\Dependency\Plugin\OrderItemsTableExpanderPluginInterface> - */ - protected function getOrderItemsTableExpanderPlugins(): array - { - return [ - new MerchantOmsStateOrderItemsTableExpanderPlugin(), - ]; - } -} -``` - -
- -**src/Pyz/Zed/Console/ConsoleDependencyProvider.php** - -```php - - */ - protected function getConsoleCommands(Container $container): array - { - return [ - new TriggerEventFromCsvFileConsole(), - ]; - } -} -``` - - -
-src/Pyz/Zed/MerchantSalesOrder/MerchantSalesOrderDependencyProvider.php - -```php - - */ - protected function getMerchantOrderPostCreatePlugins(): array - { - return [ - new EventTriggerMerchantOrderPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\MerchantSalesOrderExtension\Dependency\Plugin\MerchantOrderExpanderPluginInterface> - */ - protected function getMerchantOrderExpanderPlugins(): array - { - return [ - new MerchantOmsMerchantOrderExpanderPlugin(), - ]; - } -} -``` -
- -**src/Pyz/Zed/StateMachine/StateMachineDependencyProvider.php** - -```php - - */ - protected function getStateMachineHandlers() - { - return [ - new MerchantStateMachineHandlerPlugin(), - ]; - } -``` - -**src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/DeliverMarketplaceOrderItemCommandPlugin.php** - -```php - new ShipByMerchantMarketplaceOrderItemCommandPlugin(), - 'MarketplaceOrder/DeliverOrderItem' => new DeliverMarketplaceOrderItemCommandPlugin(), - 'MarketplaceOrder/CancelOrderItem' => new CancelMarketplaceOrderItemCommandPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/MerchantSalesOrderMerchantUserGui/MerchantSalesOrderMerchantUserGuiDependencyProvider.php** - -```php - - */ - protected function getShipmentExpenseExpanderPlugins(): array - { - return [ - new MerchantReferenceShipmentExpenseExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantOrderReferenceForItemsWidget::class, - ]; - } - -} - -``` - -{% info_block warningBox "Verification" %} - -Make sure that the Merchant State Machine is executed on merchant orders after the order has been split. - -Make sure that when retrieving an order in the *Sales* module, it is split by the merchant order and that the Order state is derived from the Merchant State Machine. - -Make sure that after splitting the order into merchants' orders, their IDs are displayed on the order details page in Yves. - -{% endinfo_block %} - - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE |INTEGRATION GUIDE | -| --- | --- | --- | -| Marketplace Order Management + Order Threshold | |[Marketplace Order Management + Order Threshold feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-order-threshold-feature-integration.html) | -| Marketplace Inventory Management + Order Management | | [Marketplace Inventory Management + Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-order-management-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-order-threshold-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-order-threshold-feature-integration.md deleted file mode 100644 index d6afab8f363..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-order-management-order-threshold-feature-integration.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Marketplace Order Management + Order Threshold feature integration -last_updated: Dec 16, 2020 -description: This document describes the process how to integrate the Marketplace Order Management Feature + Order Threshold feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Order Management + Order Threshold feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Order Management Feature + Order Threshold feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| -------------- | --------- | -------------| -| Order Threshold | {{page.version}} | [Order Threshold feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) | -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | - -### Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-sales-order-threshold-gui:"^0.1.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------ | -------------- | -| MerchantSalesOrderThresholdGui | spryker/merchant-sales-order-threshold-gui | - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - -Make sure that merchant orders have correct threshold expenses shown in order-overview page in `http://zed.mysprykershop.com/merchant-sales-order-merchant-user-gui/detail?id-merchant-sales-order={% raw %}{{idMerchantSalesOrder}}{% endraw %}` - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-cart-feature-integration.md deleted file mode 100644 index be3fae11192..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-cart-feature-integration.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Marketplace Product + Cart feature integration -last_updated: Dec 16, 2020 -description: This document describes the process how to integrate the Marketplace Product + Cart feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product + Cart feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product + Cart feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Product | {{page.version}} | [Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-feature-integration.html)| -| Cart | {{page.version}} | [Cart Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) | - -### 1) Set up transfer objects - -Generate transfer changes: -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| Item.merchantReference | property | Created | src/Generated/Shared/Transfer/ItemTransfer | - -{% endinfo_block %} - -### 2) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductCartPreCheckPlugin | Validates that merchant references in the cart items match existing marketplace products. | | Spryker\Zed\MerchantProduct\Communication\Plugin\Cart | -| MerchantProductPreAddToCartPlugin | Sets merchant reference to item transfer on add to cart. | | SprykerShop\Yves\MerchantProductWidget\Plugin\CartPage | - -**src/Pyz/Zed/Cart/CartDependencyProvider.php** - -```php - - */ - protected function getCartPreCheckPlugins(Container $container): array - { - return [ - new MerchantProductCartPreCheckPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can’t add an item with `merchantReference` and `sku` that do not belong to the same `MerchantProduct`(see `spy_merchant_product_abstract`). - -{% endinfo_block %} - -**src/Pyz/Yves/CartPage/CartPageDependencyProvider.php** - -```php - - */ - protected function getPreAddToCartPlugins(): array - { - return [ - new MerchantProductPreAddToCartPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you add a merchant product to cart, it has `merchantReference` set. (Can be checked in the `spy_quote` table). - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-feature-integration.md deleted file mode 100644 index b7f5cbc3c32..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-feature-integration.md +++ /dev/null @@ -1,745 +0,0 @@ ---- -title: Marketplace Product feature integration -last_updated: Sep 10, 2021 -description: This document describes the process how to integrate the Marketplace Product feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | -------- | ------------------ | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Product | {{page.version}} | [Product feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-product:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------- | ------------------------------------ | -| MerchantProduct | vendor/spryker/merchant-product | -| MerchantProductDataImport | vendor/spryker/merchant-product-data-import | -| MerchantProductGui | vendor/spryker/merchant-product-gui | -| MerchantProductSearch | vendor/spryker/merchant-product-search | -| MerchantProductStorage | vendor/spryker/merchant-product-storage | -| MerchantProductWidget | vendor/spryker-shop/merchant-product-widget | - -{% endinfo_block %} - -### 2) Set up the database schema and transfer objects - -Adjust the schema definition so that entity changes will trigger the events: - -**src/Pyz/Zed/MerchantProduct/Persistence/Propel/Schema/spy_merchant_product_abstract.schema.xml** - -```xml - - - - - - - -
-
-``` - -Apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -| ----------------------------- | ----- | ------- | -| spy_merchant_product_abstract | table | created | - -{% endinfo_block %} - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ----------------- | ----- | ------ | -------------------------- | -| MerchantProductCriteria | class | Created | src/Generated/Shared/Transfer/MerchantProductCriteriaTransfer | -| MerchantProduct | class | Created | src/Generated/Shared/Transfer/MerchantProductTransfer | -| MerchantProductCollection | class | Created | src/Generated/Shared/Transfer/MerchantProductCollectionTransfer | -| ProductAbstractMerchant | class | Created | src/Generated/Shared/Transfer/ProductAbstractMerchantTransfer | -| MerchantSearchCollection | class | Created | src/Generated/Shared/Transfer/MerchantSearchCollectionTransfer | -| MerchantProductStorage | class | Created | src/Generated/Shared/Transfer/MerchantProductStorageTransfer | -| ProductAbstract.idMerchant | property | Created | src/Generated/Shared/Transfer/ProductAbstractTransfer | -| MerchantProductView | class | Created | src/Generated/Shared/Transfer/MerchantProductViewTransfer | - -{% endinfo_block %} - -### 3) Add translations - -Generate new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Configure export to Redis and Elasticsearch - -Install the following plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| --------------------- | ------------------- | --------- | -------------------- | -| Merchant\MerchantProductSearchWritePublisherPlugin | Publishes the product by merchant ids to ES. | | Spryker\Zed\MerchantProductSearch\Communication\Plugin\Publisher | -| MerchantProduct\MerchantProductSearchWritePublisherPlugin | Publishes the product by merchant product abstract ids to ES. | | Spryker\Zed\MerchantProductSearch\Communication\Plugin\Publisher | -| MerchantUpdatePublisherPlugin | Publishes the product by merchant ids to Redis. | | Spryker\Zed\MerchantProductStorage\Communication\Plugin\Publisher\Merchant | -| MerchantProductWritePublisherPlugin | Publishes the product by merchant product abstract ids to Redis. | | Spryker\Zed\MerchantProductStorage\Communication\Plugin\Publisher\MerchantProduct | - -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php - - */ - protected function getProductAbstractPostCreatePlugins(): array - { - return [ - new MerchantProductProductAbstractPostCreatePlugin(), - ]; - } -} -``` -{% info_block warningBox "Verification" %} - -Make sure that you can create a new product in the Merchant Portal and observe it after creation in the product data table. - -{% endinfo_block %} - -**src/Pyz/Zed/ProductManagement/ProductManagementDependencyProvider.php** - -```php - - */ - protected function getProductAbstractViewActionViewDataExpanderPlugins(): array - { - return [ - new MerchantProductProductAbstractViewActionViewDataExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductManagementExtension\Dependency\Plugin\ProductTableQueryCriteriaExpanderPluginInterface> - */ - protected function getProductTableQueryCriteriaExpanderPluginInterfaces(): array - { - return [ - new MerchantProductProductTableQueryCriteriaExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductManagementExtension\Dependency\Plugin\ProductAbstractListActionViewDataExpanderPluginInterface> - */ - protected function getProductAbstractListActionViewDataExpanderPlugins(): array - { - return [ - new MerchantProductAbstractListActionViewDataExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can filter products by merchant in `http://zed.de.demo-spryker.com/product-management`. - -Make sure that you can see the merchant name in `http://zed.de.demo-spryker.com/product-management/view?id-product-abstract={id-product-abstract}}`. (Applicable only for products that are assigned to some merchant. See import step.) - -{% endinfo_block %} - -**src/Pyz/Zed/ProductPageSearch/ProductPageSearchDependencyProvider.php** - -```php - - */ - protected function getDataExpanderPlugins() - { - $dataExpanderPlugins = []; - $dataExpanderPlugins[MerchantProductSearchConfig::PLUGIN_MERCHANT_PRODUCT_DATA] = new MerchantMerchantProductPageDataExpanderPlugin(); - - return $dataExpanderPlugins; - } - - /** - * @return array<\Spryker\Zed\ProductPageSearchExtension\Dependency\Plugin\ProductAbstractMapExpanderPluginInterface> - */ - protected function getProductAbstractMapExpanderPlugins(): array - { - return [ - new MerchantProductAbstractMapExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductPageSearchExtension\Dependency\Plugin\ProductPageDataLoaderPluginInterface> - */ - protected function getDataLoaderPlugins() - { - return [ - new MerchantMerchantProductPageDataLoaderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure the `de_page` Elasticsearch index for any product that belongs (see `spy_merchant_product_abstract`) to active and approved merchant, contains merchant names. (indexes can be accessed by any Elasticsearch client, for example, Kibana. For Docker configuration details, see [Configuring services](/docs/scos/dev/back-end-development/messages-and-errors/registering-a-new-service.html). - -{% endinfo_block %} - -**src/Pyz/Zed/ProductStorage/ProductStorageDependencyProvider.php** - -```php - - */ - protected function getProductAbstractStorageExpanderPlugins(): array - { - return [ - new MerchantProductAbstractStorageExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that data contains `merchant_references` for marketplace products in the `spy_product_abstract_storage`. - -{% endinfo_block %} - -### 6) Import merchant product data - -Prepare your data according to your requirements using the demo data: - -
-data/import/common/common/marketplace/merchant_product.csv - -```yaml -sku,merchant_reference,is_shared -001,MER000001,1 -002,MER000001,1 -003,MER000001,1 -004,MER000001,1 -005,MER000001,1 -006,MER000001,1 -007,MER000001,1 -008,MER000001,1 -009,MER000001,1 -010,MER000001,1 -011,MER000001,1 -012,MER000001,1 -013,MER000001,1 -014,MER000001,1 -015,MER000001,1 -016,MER000001,1 -017,MER000001,1 -018,MER000001,1 -019,MER000001,1 -020,MER000001,1 -021,MER000001,1 -022,MER000001,1 -023,MER000001,1 -024,MER000001,1 -025,MER000001,1 -026,MER000001,1 -027,MER000001,1 -028,MER000001,1 -029,MER000001,1 -030,MER000001,1 -031,MER000001,1 -032,MER000001,1 -033,MER000001,1 -034,MER000001,1 -035,MER000001,1 -036,MER000001,1 -037,MER000001,1 -038,MER000001,1 -039,MER000001,1 -040,MER000001,1 -041,MER000001,1 -042,MER000001,1 -043,MER000001,1 -044,MER000001,1 -045,MER000001,1 -046,MER000001,1 -047,MER000001,1 -048,MER000001,1 -049,MER000001,1 -050,MER000001,1 -051,MER000001,1 -052,MER000001,1 -053,MER000001,1 -054,MER000001,1 -055,MER000001,1 -056,MER000001,1 -057,MER000001,1 -058,MER000001,1 -059,MER000001,1 -060,MER000001,1 -061,MER000001,1 -062,MER000001,1 -063,MER000001,1 -064,MER000001,1 -065,MER000001,1 -066,MER000001,1 -067,MER000001,1 -068,MER000001,1 -069,MER000001,1 -070,MER000001,1 -071,MER000001,1 -072,MER000001,1 -074,MER000001,1 -075,MER000001,1 -076,MER000001,1 -077,MER000001,1 -078,MER000001,1 -079,MER000001,1 -080,MER000001,1 -081,MER000001,1 -082,MER000001,1 -083,MER000001,1 -084,MER000001,1 -085,MER000001,1 -086,MER000001,1 -087,MER000001,1 -088,MER000001,1 -089,MER000001,1 -090,MER000001,1 -091,MER000001,1 -092,MER000001,1 -093,MER000001,1 -094,MER000001,1 -095,MER000001,1 -096,MER000001,1 -097,MER000001,1 -098,MER000001,1 -099,MER000001,1 -100,MER000001,1 -101,MER000001,1 -102,MER000001,1 -103,MER000001,1 -104,MER000001,1 -105,MER000001,1 -106,MER000001,1 -107,MER000001,1 -108,MER000001,1 -109,MER000001,1 -110,MER000001,1 -111,MER000001,1 -184,MER000002,1 -185,MER000002,1 -186,MER000002,1 -187,MER000002,1 -188,MER000002,1 -189,MER000002,1 -190,MER000002,1 -191,MER000002,1 -192,MER000002,1 -193,MER000002,1 -194,MER000002,1 -195,MER000002,1 -196,MER000002,1 -197,MER000002,1 -198,MER000002,1 -199,MER000002,1 -200,MER000002,1 -201,MER000002,1 -202,MER000002,1 -203,MER000002,1 -204,MER000002,1 -205,MER000002,1 -206,MER000002,1 -207,MER000002,1 -208,MER000002,1 -209,MER000002,1 -``` -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| ------------ | ------------ | -------- | --------------- | ------------------------ | -| sku | ✓ | string | 091 | Product identifier. | -| merchant_reference | ✓ | string | roan-gmbh-und-co-k-g | Merchant identifier. | -| is_shared | ✓ | string | 1 | Defines if other merchant can create product offers for this merchant product. | - -Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------------ | ----------------- | --------- | -------------------------- | -| MerchantProductDataImportPlugin | Imports merchant product data into the database. | | Spryker\Zed\MerchantProductDataImport\Communication\Plugin | - - **src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantProductWidget::class, - ProductSoldByMerchantWidget::class, - ]; - } -} -``` - -Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that for the marketplace products you can see the merchant name on the product details page. - -Make sure that when you add merchant product to cart, on a cart page is has the *Sold By* widget displayed. - -{% endinfo_block %} - -### 2) Add Yves translations - -Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -``` -merchant_product.message.invalid,Product "%sku%" with Merchant "%merchant_reference%" not found.,en_US -merchant_product.message.invalid,Der Produkt "%sku%" mit dem Händler "%merchant_reference%" ist nicht gefunden.,de_DE -merchant_product.sold_by,Sold by,en_US -merchant_product.sold_by,Verkauft durch,de_DE -product.filter.merchant_name,Merchant,en_US -product.filter.merchant_name,Händler,de_DE -``` - -Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data is added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| ----------------- | ---------------------- | ------------ | -------------------- | -| MerchantProductMerchantNameSearchConfigExpanderPlugin | Expands facet configuration with merchant name filter. | | Spryker\Client\MerchantProductSearch\Plugin\Search | -| ProductViewMerchantProductExpanderPlugin | Expands ProductView transfer object with merchant reference. | | Spryker\Client\MerchantProductStorage\Plugin\ProductStorage | - -**src/Pyz/Client/Search/SearchDependencyProvider.php** - -```php - - */ - protected function createSearchConfigExpanderPlugins(Container $container): array - { - $searchConfigExpanderPlugins = parent::createSearchConfigExpanderPlugins($container); - - $searchConfigExpanderPlugins[] = new MerchantProductMerchantNameSearchConfigExpanderPlugin(); - - return $searchConfigExpanderPlugins; - } -} -``` - -**src/Pyz/Client/SearchElasticsearch/SearchElasticsearchDependencyProvider.php** - -```php - - */ - protected function getSearchConfigExpanderPlugins(Container $container): array - { - return [ - new MerchantProductMerchantNameSearchConfigExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when you enter the merchant name in the search field, the return list contains marketplace products. - -{% endinfo_block %} - -**src/Pyz/Client/ProductStorage/ProductStorageDependencyProvider.php** - -```php - - */ - protected function getProductViewExpanderPlugins() - { - return [ - new ProductViewMerchantProductExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the merchant product is selected on the product details page by default. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| - | - | - | -| Marketplace Product API | | [Glue API: Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-feature-integration.html) | -| Marketplace Product + Marketplace Product Offer | | [Marketplace Product + Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-marketplace-product-offer-feature-integration.html) | -| Marketplace Product + Inventory Management | | [Marketplace Product + Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-inventory-management-feature-integration.html) | -| Marketplace Product + Cart | | [Marketplace Product + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-cart-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-inventory-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-inventory-management-feature-integration.md deleted file mode 100644 index a9ba53522aa..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-inventory-management-feature-integration.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Marketplace Product + Inventory Management feature integration -last_updated: Dec 07, 2020 -description: This document describes the process how to integrate the Marketplace Product + Inventory Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product + Inventory Management feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product + Inventory Management feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Glue API: Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Inventory Management | {{page.version}} | [Inventory Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/inventory-management-feature-integration.html) | - -### Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductAvailabilityAbstractTableQueryCriteriaExpanderPlugin | Expands QueryCriteriaTransfer with QueryJoinTransfer for filtering by idMerchant. | | Spryker\Zed\MerchantProductGui\Communication\Plugin\AvailabilityGui | -| MerchantProductAvailabilityViewActionViewDataExpanderPlugin | Expands view data for product availability with merchant data. | | Spryker\Zed\MerchantProductGui\Communication\Plugin\AvailabilityGui | - -**src/Pyz/Zed/AvailabilityGui/AvailabilityGuiDependencyProvider.php** - -```php - - */ - protected function getAvailabilityViewActionViewDataExpanderPlugins(): array - { - return [ - new MerchantProductAvailabilityViewActionViewDataExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\AvailabilityGuiExtension\Dependency\Plugin\AvailabilityAbstractTableQueryCriteriaExpanderPluginInterface> - */ - protected function getAvailabilityAbstractTableQueryCriteriaExpanderPlugins(): array - { - return [ - new MerchantProductAvailabilityAbstractTableQueryCriteriaExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that you can filter product availabilities by merchant at `http://zed.de.demo-spryker.com/product-management`. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-marketplace-product-offer-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-marketplace-product-offer-feature-integration.md deleted file mode 100644 index d3cd586b669..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-marketplace-product-offer-feature-integration.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Marketplace Product + Marketplace Product Offer feature integration -last_updated: Jun 25, 2021 -description: This document describes the process how to integrate the Marketplace Product + Marketplace Product Offer feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product + Marketplace Product Offer feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product + Marketplace Product Offer feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Product | {{page.version}} | [Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-feature-integration.html) | -| Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | - -### Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductProductOfferReferenceStrategyPlugin | Allows selecting a merchant product by default on PDP. | | Spryker\Client\MerchantProductOfferStorageExtension\Dependency\Plugin | - -{% info_block warningBox "Note" %} - -The order is important. Plugin has to be registered after `ProductOfferReferenceStrategyPlugin`. - -{% endinfo_block %} - -**src/Pyz/Client/MerchantProductOfferStorage/MerchantProductOfferStorageDependencyProvider.php** - -```php - - */ - protected function getProductOfferReferenceStrategyPlugins(): array - { - return [ - new MerchantProductProductOfferReferenceStrategyPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure you can switch between marketplace products and product offers on the *Product Details* page. - -Make sure that marketplace products selected on the *Product Details* page by default. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-cart-feature-integration.md deleted file mode 100644 index 62124d03a91..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-cart-feature-integration.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Marketplace Product Offer + Cart feature integration -last_updated: Dec 17, 2020 -description: This integration guide provides steps on how to integrate the Marketplace Product Offer + Cart feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202200.0/marketplace-product-offer-cart-feature-integration.html ---- - -This document describes how to integrate the Marketplace Product Offer + Car feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer + Cart feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | -------- | ------------------| -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) -| Cart | {{page.version}} | [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) - -### Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------- | ------------- | ----------- | ------------ | -| ProductOfferGroupKeyItemExpanderPlugin | Adds a product offer reference to group key that separates items in the cart. | | Spryker\Zed\ProductOffer\Communication\Plugin\Cart | -| ProductOfferCartPreCheckPlugin | Checks if the product offer belongs to the concrete product before adding an item to cart. | | Spryker\Zed\ProductOffer\Communication\Plugin\Cart | -| FilterInactiveProductOfferPreReloadItemsPlugin | Removes an inactive product offer from cart when reloading it. | | Spryker\Zed\ProductOffer\Communication\Plugin\Cart | - -
-src/Pyz/Zed/Cart/CartDependencyProvider.php - -```php - - */ - protected function getExpanderPlugins(Container $container): array - { - return [ - new ProductOfferGroupKeyItemExpanderPlugin(), - ]; - } - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartPreCheckPluginInterface> - */ - protected function getCartPreCheckPlugins(Container $container): array - { - return [ - new ProductOfferCartPreCheckPlugin(), - ]; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PreReloadItemsPluginInterface> - */ - protected function getPreReloadPlugins(Container $container): array - { - return [ - new FilterInactiveProductOfferPreReloadItemsPlugin(), - ]; - } -} -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that inactive product offers get removed from cart on reload. - -Make sure that it is only possible to have items in cart where the product offer reference belongs to the correct concrete product. - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Marketplace Product Offer + Cart feature frontend. - -### Prerequisites - -To start feature integration, overview, and install the necessary features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ----------- | ---------- | ------------------| -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | -| Cart | {{page.version}} | [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) | - -### Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| - | - | - | - | -| MerchantProductOfferPreAddToCartPlugin | Sets the product offer reference to the item transfer | | SprykerShop\Yves\MerchantProductOfferWidget\Plugin\CartPage | - -**src/Pyz/Yves/CartPage/CartPageDependencyProvider.php** - -``` - - */ - protected function getPreAddToCartPlugins(): array - { - return [ - new MerchantProductOfferPreAddToCartPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the product offer reference (and sold by merchant) is added to the *Cart* page when adding a product offer to cart. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| - | - | - | -| Marketplace Product Offer + Cart API | | [Glue API: Marketplace Product Offer + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-cart-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-checkout-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-checkout-feature-integration.md deleted file mode 100644 index e3c6854d0a2..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-checkout-feature-integration.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Marketplace Product Offer + Checkout feature integration -last_updated: May 3, 2021 -description: This document describes the process how to integrate the Marketplace Product Offer + Checkout feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer + Checkout feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer + Checkout feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | -| Checkout | {{page.version}} | [Checkout feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) | - - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/product-offer: "^0.6.1" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| CheckoutExtension | spryker/checkout-extension | -| ProductOffer | spryker/product-offer | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate the transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| CheckoutErrorTransfer | class | Created | src/Generated/Shared/Transfer/CheckoutErrorTransfer | -| CheckoutResponseTransfer | class | Created | src/Generated/Shared/Transfer/CheckoutResponseTransfer | -| ItemTransfer.merchantReference | property | Created | src/Generated/Shared/Transfer/ItemTransfer | - -{% endinfo_block %} - -### 3) Configure checkout pre-condition plugins - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| ProductOfferCheckoutPreConditionPlugin | Blocks checkout if at least one quote item transfer has items with inactive or not approved ProductOffer. | | Spryker/Zed/ProductOffer/Communication/Plugin/Checkout/ProductOfferCheckoutPreConditionPlugin.php | - -**src/Pyz/Zed/Checkout/CheckoutDependencyProvider.php** - -```php - - */ - protected function getCheckoutPreConditions(Container $container) - { - return [ - new ProductOfferCheckoutPreConditionPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when refreshing the checkout summary page, after changing the `active` or `approved` status of a product offer, the status is reflected accordingly. The checkout button is disabled, and the message is shown at the bottom of the checkout summary page: "Product offer inactive for the product with SKU <`SKU`>". - -You can toggle the offer's `active` status in the Merchant Portal (`Offer visibility`). There's no UI to unset the approval status for an offer yet (only via data-importer: edit `data/import/common/common/marketplace/merchant_product_offer.csv` and execute the `console data:import merchant-product-offer` command). - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-feature-integration.md deleted file mode 100644 index 2b31cc3221b..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-feature-integration.md +++ /dev/null @@ -1,1529 +0,0 @@ ---- -title: Marketplace Product Offer feature integration -last_updated: Sep 9, 2021 -description: This document describes the process how to integrate the Marketplace Product Offer feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | -------| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Product | {{page.version}} | [Product feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-product-offer:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------------ | ---------------------- | -| MerchantProductOffer | spryker/merchant-product-offer | -| MerchantProductOfferDataImport | spryker/merchant-product-offer-data-import | -| MerchantProductOfferGui | spryker/merchant-product-offer-gui | -| MerchantProductOfferSearch | spryker/merchant-product-offer-search | -| MerchantProductOfferStorage | spryker/merchant-product-offer-storage | -| ProductOffer | spryker/product-offer | -| ProductOfferGui | spryker/product-offer-gui | -| ProductOfferValidity | spryker/product-offer-validity | -| ProductOfferValidityDataImport | spryker/product-offer-validity-data-import | -| ProductOfferValidityGui | spryker/product-offer-validity-gui | - -{% endinfo_block %} - -### 2) Set up database schema and transfer objects - -Adjust the schema definition so that entity changes will trigger events: - -**src/Pyz/Zed/ProductOffer/Persistence/Propel/Schema/spy_product_offer.schema.xml** - -```xml - - - - - - - - - -
- - - - - -
-
-``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been implemented by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -| -------------------------- | ----- | ------ | -| spy_product_offer | table | created | -| spy_product_offer_store | table | created | -| spy_product_concrete_product_offers_storage | table | created | -| spy_product_offer_storage | table | created | -| spy_product_offer_validity | table | created | - - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| --------------- | -------- | ------ | ---------------- | -| Item.productOfferReference | property | created | src/Generated/Shared/Transfer/ItemTransfer -| MerchantProductOfferCriteria | class | created | src/Generated/Shared/Transfer/MerchantProductOfferCriteriaTransfer -| PageMap.merchantReferences | property | created | src/Generated/Shared/Transfer/PageMapTransfer -| ProductAbstractMerchant.merchantReferences | property | created | src/Generated/Shared/Transfer/ProductAbstractMerchantTransfer -| ProductOffer | class | created | src/Generated/Shared/Transfer/ProductOfferTransfer -| ProductOfferCollection | class | created | src/Generated/Shared/Transfer/ProductOfferCollectionTransfer -| ProductOfferCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferCriteriaTransfer -| ProductOfferError | class | created | src/Generated/Shared/Transfer/ProductOfferErrorTransfer -| ProductOfferResponse | class | created | src/Generated/Shared/Transfer/ProductOfferResponseTransfer -| ProductOfferStorage | class | created | src/Generated/Shared/Transfer/ProductOfferStorageTransfer -| ProductOfferStorageCollection | class | created | src/Generated/Shared/Transfer/ProductOfferStorageCollectionTransfer -| ProductOfferStorageCriteria | class | created | src/Generated/Shared/Transfer/ProductOfferStorageCriteriaTransfer -| ProductOfferStore | class | created | src/Generated/Shared/Transfer/ProductOfferStoreTransfer -| ProductOfferValidity | class | created | src/Generated/Shared/Transfer/ProductOfferValidityTransfer -| ProductOfferValidityCollection | class | created | src/Generated/Shared/Transfer/ProductOfferValidityCollectionTransfer -| ProductPageSearch.merchantReferences | property | created | src/Generated/Shared/Transfer/ProductPageSearchTransfer -| ProductPayload.merchantReferences | property | created | src/Generated/Shared/Transfer/ProductPayloadTransfer -| ProductStorageCriteria.merchantReference | property | created | src/Generated/Shared/Transfer/ProductStorageCriteriaTransfer -| ProductView.productOfferReference | property | created | src/Generated/Shared/Transfer/ProductViewTransfer - - -{% endinfo_block %} - -### 3) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Configure export to Redis and Elasticsearch - -To configure export to Redis and Elasticsearch, take the following steps: - -#### Set up event listeners - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --------------- | ------------- | ----------- | ---------------- | -| MerchantProductOfferStorageEventSubscriber | Registers listeners responsible for publishing merchant product offers to storage. | | Spryker\Zed\MerchantProductOfferStorage\Communication\Plugin\Event\Subscriber | -| MerchantProductOfferSearchEventSubscriber | Registers listeners responsible for publishing merchant product offer search to storage. | | Spryker\Zed\MerchantProductOfferSearch\Communication\Plugin\Event\Subscriber | -| MerchantSearchEventSubscriber | Registers listeners responsible for publishing merchant search to storage. | | Spryker\Zed\MerchantProductOfferSearch\Communication\Plugin\Event\Subscriber | - -**src/Pyz/Zed/Event/EventDependencyProvider.php** - -```php -add(new MerchantSearchEventSubscriber()); - $eventSubscriberCollection->add(new MerchantProductOfferSearchEventSubscriber()); - $eventSubscriberCollection->add(new MerchantProductOfferStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` - -Register the synchronization queue and synchronization error queue: - -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - MerchantProductOfferStorageConfig::MERCHANT_PRODUCT_OFFER_SYNC_STORAGE_QUEUE => new SynchronizationStorageQueueMessageProcessorPlugin(), - ]; - } -} -``` - -#### Set up, re-generate, and re-sync features - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ----------------- | --------------- | ---------- | ---------------- | -| ProductConcreteProductOffersSynchronizationDataBulkRepositoryPlugin | Allows synchronizing the entire storage table content into Storage. | | Spryker\Zed\MerchantProductOfferStorage\Communication\Plugin\Synchronization | -| ProductOfferSynchronizationDataBulkRepositoryPlugin | Allows synchronizing the entire storage table content into Storage. | | Spryker\Zed\MerchantProductOfferStorage\Communication\Plugin\Synchronization | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new ProductConcreteProductOffersSynchronizationDataBulkRepositoryPlugin(), - new ProductOfferSynchronizationDataBulkRepositoryPlugin(), - ]; - } -} -``` - -Configure synchronization storage: - -**src/Pyz/Zed/MerchantProductOfferStorage/MerchantProductOfferStorageConfig.php** - -```php -data/import/common/common/marketplace/merchant_product_offer.csv - -``` -product_offer_reference,concrete_sku,merchant_reference,merchant_sku,is_active,approval_status -offer1,093_24495843,MER000001,GS952M00H-Q11,1,approved -offer2,090_24495844,MER000002,,1,approved -offer3,091_25873091,MER000001,M9122A0AQ-C11,1,approved -offer4,091_25873091,MER000002,M9122A0AQ-C11,1,approved -offer5,092_24495842,MER000001,TH344E01G-Q11,0,approved -offer6,092_24495842,MER000002,OB054P005-Q11,1,approved -offer7,193_32124735,MER000001,,1,approved -offer8,001_25904006,MER000002,,1,approved -offer9,002_25904004,MER000002,,0,approved -offer10,003_26138343,MER000002,,0,waiting_for_approval -offer11,004_30663302,MER000002,,1,waiting_for_approval -offer12,005_30663301,MER000002,,1,approved -offer13,006_30692993,MER000002,,1,approved -offer14,007_30691822,MER000002,,1,approved -offer15,008_30692992,MER000002,,1,approved -offer16,009_30692991,MER000002,,1,approved -offer17,010_30692994,MER000002,,1,approved -offer18,011_30775359,MER000002,,1,approved -offer19,012_25904598,MER000002,,1,approved -offer20,013_25904584,MER000002,,1,approved -offer21,014_25919241,MER000002,,1,approved -offer22,015_25904009,MER000002,,1,approved -offer23,016_21748907,MER000002,,1,approved -offer24,017_21748906,MER000002,,1,approved -offer25,018_21081477,MER000002,,1,approved -offer26,019_21081473,MER000002,,1,approved -offer27,020_21081478,MER000002,,1,approved -offer28,021_21081475,MER000002,,1,approved -offer29,022_21994751,MER000002,,1,approved -offer30,023_21758366,MER000002,,1,approved -offer31,024_21987578,MER000002,,1,approved -offer32,025_21764665,MER000002,,1,approved -offer33,026_21748904,MER000002,,1,approved -offer34,027_26976107,MER000002,,1,approved -offer35,028_26976108,MER000002,,1,approved -offer36,029_26976109,MER000002,,1,approved -offer37,030_30021698,MER000002,,1,approved -offer38,031_30021637,MER000002,,1,approved -offer39,032_32125551,MER000002,,1,approved -offer40,033_32125568,MER000002,,1,approved -offer41,034_32125390,MER000002,,1,approved -offer42,035_17360369,MER000002,,1,approved -offer43,036_17360368,MER000002,,1,approved -offer44,037_25904011,MER000002,,1,approved -offer45,038_25905593,MER000002,,1,approved -offer46,039_25904010,MER000002,,1,approved -offer47,040_25904665,MER000002,,1,approved -offer48,041_25904691,MER000002,,1,approved -offer49,001_25904006,MER000005,,1,approved -offer50,002_25904004,MER000005,,1,approved -offer51,003_26138343,MER000005,,0,approved -offer52,004_30663302,MER000005,,1,approved -offer53,005_30663301,MER000005,,0,approved -offer54,006_30692993,MER000005,,1,approved -offer55,007_30691822,MER000005,,1,waiting_for_approval -offer56,008_30692992,MER000005,,1,waiting_for_approval -offer57,009_30692991,MER000005,,1,approved -offer58,010_30692994,MER000005,,1,approved -offer59,011_30775359,MER000005,,1,approved -offer60,012_25904598,MER000005,,1,approved -offer61,013_25904584,MER000005,,1,approved -offer62,014_25919241,MER000005,,1,approved -offer63,015_25904009,MER000005,,1,approved -offer64,016_21748907,MER000005,,1,approved -offer65,017_21748906,MER000005,,1,approved -offer66,018_21081477,MER000005,,1,approved -offer67,019_21081473,MER000005,,1,approved -offer68,020_21081478,MER000005,,1,approved -offer69,021_21081475,MER000005,,1,approved -offer70,022_21994751,MER000005,,1,approved -offer71,023_21758366,MER000005,,1,approved -offer72,024_21987578,MER000005,,1,approved -offer73,025_21764665,MER000005,,1,approved -offer74,026_21748904,MER000005,,1,approved -offer75,027_26976107,MER000005,,1,approved -offer76,028_26976108,MER000005,,1,approved -offer77,029_26976109,MER000005,,1,approved -offer78,030_30021698,MER000005,,1,approved -offer79,031_30021637,MER000005,,1,approved -offer80,032_32125551,MER000005,,1,approved -offer81,033_32125568,MER000005,,1,approved -offer82,034_32125390,MER000005,,1,approved -offer83,035_17360369,MER000005,,1,approved -offer84,036_17360368,MER000005,,1,approved -offer85,037_25904011,MER000005,,1,approved -offer86,038_25905593,MER000005,,1,approved -offer87,039_25904010,MER000005,,1,approved -offer88,040_25904665,MER000005,,1,approved -offer89,041_25904691,MER000005,,1,approved -offer90,016_21748907,MER000006,,1,approved -offer91,017_21748906,MER000006,,1,waiting_for_approval -offer92,018_21081477,MER000006,,1,approved -offer93,019_21081473,MER000006,,0,approved -offer94,020_21081478,MER000006,,1,approved -offer95,021_21081475,MER000006,,1,approved -offer96,022_21994751,MER000006,,1,approved -offer97,023_21758366,MER000006,,1,approved -offer98,024_21987578,MER000006,,1,approved -offer99,025_21764665,MER000006,,1,approved -offer100,026_21748904,MER000006,,0,approved -offer101,027_26976107,MER000006,,1,approved -offer102,028_26976108,MER000006,,1,approved -offer103,029_26976109,MER000006,,1,waiting_for_approval -offer169,076_24394207,MER000006,,1,approved -offer170,077_24584210,MER000006,,1,approved -offer171,078_24602396,MER000006,,1,approved -offer172,079_24394211,MER000006,,1,approved -offer173,080_24394206,MER000006,,1,approved -offer348,193_32124735,MER000006,,1,approved -offer349,194_25904145,MER000006,,1,approved -offer350,195_25904159,MER000006,,1,approved -offer351,196_23120327,MER000006,,1,approved -offer352,197_21421718,MER000006,,1,approved -offer353,198_19692589,MER000006,,1,approved -offer354,199_7016823,MER000006,,1,approved -offer355,199_24788780,MER000006,,1,approved -offer356,200_5787536,MER000006,,1,approved -offer357,201_11217755,MER000006,,1,approved -offer358,202_5782479,MER000006,,1,approved -offer359,203_15619960,MER000006,,1,approved -offer360,204_29851280,MER000006,,1,approved -offer402,101_29727910,MER000004,,1,approved -offer403,102_30727008,MER000005,,0,approved -offer404,102_30727008,MER000005,,1,denied -offer405,102_30727008,MER000005,,1,waiting_for_approval -offer410,104_30727010,MER000005,,1,approved -offer411,113_29885591,MER000005,,1,approved -offer412,113_29885591,MER000002,,1,approved -offer413,118_29804739,MER000005,,1,approved -offer414,118_29804739,MER000002,,1,approved -offer415,112_312526171,MER000005,,1,approved -offer416,112_306918001,MER000002,,1,approved -offer417,112_312526191,MER000005,,1,approved -offer418,112_312526172,MER000002,,1,approved -``` - - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| -------------- | ----------- | -------- | --------- | ------------------ | -| product_offer_reference | ✓ | string | offer1 | Product offer reference that will be referenced to this merchant. | -| concrete_sku | ✓ | string | 093_24495843 | Concrete product SKU this product offer is attached to. | -| merchant_reference | ✓ | string | `MER000002` | Merchant identifier. | -| merchant_sku | | string | GS952M00H-Q11 | merchant internal SKU for the product offer. | -| is_active | | boolean | 1 | Product offer status, defaults to 1. | -| approval_status | | string | approved | Approval status (Waiting for Approval – Approved – Denied). Denied and Waiting for Approval statuses mean that the offer is not visible on PDP regardless of Product Offer → Active = true.This can be configured (along with the transition between statuses in ProductOfferConfig). If not supplied, ProductOfferConfig → getDefaultStatus is applied. | - -
data/import/common/common/marketplace/merchant_product_offer_store.csv - -``` -product_offer_reference,store_name -offer1,DE -offer2,DE -offer3,DE -offer4,DE -offer6,DE -offer7,DE -offer8,DE -offer9,DE -offer10,DE -offer11,DE -offer12,DE -offer13,DE -offer14,DE -offer15,DE -offer16,DE -offer17,DE -offer18,DE -offer19,DE -offer20,DE -offer21,DE -offer22,DE -offer23,DE -offer24,DE -offer25,DE -offer26,DE -offer27,DE -offer28,DE -offer29,DE -offer30,DE -offer31,DE -offer32,DE -offer33,DE -offer34,DE -offer35,DE -offer36,DE -offer37,DE -offer38,DE -offer39,DE -offer40,DE -offer41,DE -offer42,DE -offer43,DE -offer44,DE -offer45,DE -offer46,DE -offer47,DE -offer48,DE -offer49,DE -offer50,DE -offer51,DE -offer52,DE -offer53,DE -offer54,DE -offer55,DE -offer56,DE -offer57,DE -offer58,DE -offer59,DE -offer60,DE -offer61,DE -offer62,DE -offer63,DE -offer64,DE -offer65,DE -offer66,DE -offer67,DE -offer68,DE -offer69,DE -offer70,DE -offer71,DE -offer72,DE -offer73,DE -offer74,DE -offer75,DE -offer76,DE -offer77,DE -offer78,DE -offer79,DE -offer80,DE -offer81,DE -offer82,DE -offer83,DE -offer84,DE -offer85,DE -offer86,DE -offer87,DE -offer88,DE -offer89,DE -offer90,DE -offer91,DE -offer92,DE -offer93,DE -offer94,DE -offer95,DE -offer96,DE -offer97,DE -offer98,DE -offer99,DE -offer100,DE -offer101,DE -offer102,DE -offer103,DE -offer169,DE -offer170,DE -offer171,DE -offer172,DE -offer173,DE -offer348,DE -offer349,DE -offer350,DE -offer351,DE -offer352,DE -offer353,DE -offer354,DE -offer355,DE -offer356,DE -offer357,DE -offer358,DE -offer359,DE -offer360,DE -offer402,DE -offer403,DE -offer404,DE -offer405,DE -offer410,DE -offer411,DE -offer412,DE -offer413,DE -offer414,DE -offer415,DE -offer416,DE -offer417,DE -offer418,DE -offer2,US -offer4,US -offer6,US -offer7,US -offer8,US -offer9,US -offer10,US -offer11,US -offer12,US -offer13,US -offer14,US -offer15,US -offer16,US -offer17,US -offer18,US -offer19,US -offer20,US -offer21,US -offer22,US -offer23,US -offer24,US -offer25,US -offer26,US -offer27,US -offer28,US -offer29,US -offer30,US -offer31,US -offer32,US -offer33,US -offer34,US -offer35,US -offer36,US -offer37,US -offer38,US -offer39,US -offer40,US -offer41,US -offer42,US -offer43,US -offer44,US -offer45,US -offer46,US -offer47,US -offer48,US -offer49,US -offer50,US -offer51,US -offer52,US -offer53,US -offer54,US -offer55,US -offer56,US -offer57,US -offer58,US -offer59,US -offer60,US -offer61,US -offer62,US -offer63,US -offer64,US -offer65,US -offer66,US -offer67,US -offer68,US -offer69,US -offer70,US -offer71,US -offer72,US -offer73,US -offer74,US -offer75,US -offer76,US -offer77,US -offer78,US -offer79,US -offer80,US -offer81,US -offer82,US -offer83,US -offer84,US -offer85,US -offer86,US -offer87,US -offer88,US -offer89,US -offer90,US -offer91,US -offer92,US -offer93,US -offer94,US -offer95,US -offer96,US -offer97,US -offer98,US -offer99,US -offer100,US -offer101,US -offer102,US -offer103,US -offer169,US -offer170,US -offer171,US -offer172,US -offer173,US -offer348,US -offer349,US -offer350,US -offer351,US -offer352,US -offer353,US -offer354,US -offer355,US -offer356,US -offer357,US -offer358,US -offer359,US -offer360,US -offer1,AT -offer2,AT -offer3,AT -offer4,AT -offer6,AT -offer7,AT -offer8,AT -offer9,AT -offer10,AT -offer11,AT -offer12,AT -offer13,AT -offer14,AT -offer15,AT -offer16,AT -offer17,AT -offer18,AT -offer19,AT -offer20,AT -offer21,AT -offer22,AT -offer23,AT -offer24,AT -offer25,AT -offer26,AT -offer27,AT -offer28,AT -offer29,AT -offer30,AT -offer31,AT -offer32,AT -offer33,AT -offer34,AT -offer35,AT -offer36,AT -offer37,AT -offer38,AT -offer39,AT -offer40,AT -offer41,AT -offer42,AT -offer43,AT -offer44,AT -offer45,AT -offer46,AT -offer47,AT -offer48,AT -offer49,AT -offer50,AT -offer51,AT -offer52,AT -offer53,AT -offer54,AT -offer55,AT -offer56,AT -offer57,AT -offer58,AT -offer59,AT -offer60,AT -offer61,AT -offer62,AT -offer63,AT -offer64,AT -offer65,AT -offer66,AT -offer67,AT -offer68,AT -offer69,AT -offer70,AT -offer71,AT -offer72,AT -offer73,AT -offer74,AT -offer75,AT -offer76,AT -offer77,AT -offer78,AT -offer79,AT -offer80,AT -offer81,AT -offer82,AT -offer83,AT -offer84,AT -offer85,AT -offer86,AT -offer87,AT -offer88,AT -offer89,AT -offer90,AT -offer91,AT -offer92,AT -offer93,AT -offer94,AT -offer95,AT -offer96,AT -offer97,AT -offer98,AT -offer99,AT -offer100,AT -offer101,AT -offer102,AT -offer103,AT -offer169,AT -offer170,AT -offer171,AT -offer172,AT -offer173,AT -offer348,AT -offer349,AT -offer350,AT -offer351,AT -offer352,AT -offer353,AT -offer354,AT -offer355,AT -offer356,AT -offer357,AT -offer358,AT -offer359,AT -offer360,AT -offer402,AT -offer403,AT -offer404,AT -offer405,AT -offer410,AT -offer411,AT -offer412,AT -offer413,AT -offer414,AT -offer415,AT -offer416,AT -offer417,AT -offer418,AT -``` -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| ---------------- | ------------ | ------- | ------------- | ------- | -| product_offer_reference | ✓ | string | roan-gmbh-und-co-k-g | Product Offer reference, unique identifier per Offer. | -| store_name | ✓ | string | DE | The name of the store. | - -**data/import/common/common/marketplace/product_offer_validity.csv** - -``` -product_offer_reference,valid_from,valid_to -offer1,,2020-01-20 00:00:00.000000 -offer2,,2020-01-20 00:00:00.000000 -offer3,,2020-01-20 00:00:00.000000 -offer4,,2020-01-20 00:00:00.000000 -offer5,2030-01-01 00:00:00.000000, -offer6,2030-01-01 00:00:00.000000, -offer7,2030-01-01 00:00:00.000000, -offer8,2030-01-01 00:00:00.000000, -offer9,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer10,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer49,,2020-01-20 00:00:00.000000 -offer50,,2020-01-20 00:00:00.000000 -offer51,2030-01-01 00:00:00.000000, -offer52,2030-01-01 00:00:00.000000, -offer53,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer54,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer90,,2020-01-20 00:00:00.000000 -offer91,,2020-01-20 00:00:00.000000 -offer92,2030-01-01 00:00:00.000000, -offer93,2030-01-01 00:00:00.000000, -offer94,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -offer95,2020-07-01 00:00:00.000000,2025-12-01 00:00:00.000000 -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| ------------ | ----------- | ------ | ----------- | ---------------- | -| product_offer_reference | ✓ | string | offer1 | Unique product offer identifier. | -| valid_from | | String | 2020-01-01 | Date since which the product offer is valid. | -| valid_to | | String | 2020-01-01 | Date till which the product offer is valid. | - -Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------------ | ---------------------- | ---------- | ---------------------- | -| MerchantProductOfferDataImportPlugin | Imports merchant product offer data. | | Spryker\Zed\MerchantProductOfferDataImport\Communication\Plugin\DataImport | -| MerchantProductOfferStoreDataImportPlugin | Imports the product offer to store relation data. | | Spryker\Zed\MerchantProductOfferDataImport\Communication\Plugin\DataImport | -| ProductOfferValidityDataImportPlugin | Imports product offer validity data. | | Spryker\Zed\ProductOfferValidityDataImport\Communication\DataImport | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php -|array<\Spryker\Client\SearchExtension\Dependency\Plugin\QueryExpanderPluginInterface> - */ - protected function createCatalogSearchQueryExpanderPlugins() - { - return [ - new MerchantReferenceQueryExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Client\Search\Dependency\Plugin\QueryExpanderPluginInterface>|array<\Spryker\Client\SearchExtension\Dependency\Plugin\QueryExpanderPluginInterface> - */ - protected function createSuggestionQueryExpanderPlugins() - { - return [ - new MerchantReferenceQueryExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/Search/SearchDependencyProvider.php** - -```php - - */ - protected function createSearchConfigExpanderPlugins(Container $container) - { - $searchConfigExpanderPlugins = parent::createSearchConfigExpanderPlugins($container); - - $searchConfigExpanderPlugins[] = new MerchantNameSearchConfigExpanderPlugin(); - - return $searchConfigExpanderPlugins; - } -} -``` - -**src/Pyz/Client/SearchElasticsearch/SearchElasticsearchDependencyProvider.php** - -```php - - */ - protected function getSearchConfigExpanderPlugins(Container $container): array - { - return [ - new MerchantNameSearchConfigExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ProductOfferGui/ProductOfferGuiDependencyProvider.php** - -```php - - */ - protected function getProductOfferListActionViewDataExpanderPlugins(): array - { - return [ - new MerchantProductOfferListActionViewDataExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferGuiExtension\Dependency\Plugin\ProductOfferTableExpanderPluginInterface> - */ - protected function getProductOfferTableExpanderPlugins(): array - { - return [ - new MerchantProductOfferTableExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferGuiExtension\Dependency\Plugin\ProductOfferViewSectionPluginInterface> - */ - public function getProductOfferViewSectionPlugins(): array - { - return [ - new MerchantProductOfferViewSectionPlugin(), - new ProductOfferValidityProductOfferViewSectionPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ProductPageSearch/ProductPageSearchDependencyProvider.php** - -```php - - */ - protected function getDataExpanderPlugins() - { - $dataExpanderPlugins = []; - - $dataExpanderPlugins[MerchantProductOfferSearchConfig::PLUGIN_PRODUCT_MERCHANT_DATA] = new MerchantProductPageDataExpanderPlugin(); - - return $dataExpanderPlugins; - } - - /** - * @return array<\Spryker\Zed\ProductPageSearchExtension\Dependency\Plugin\ProductPageDataLoaderPluginInterface> - */ - protected function getDataLoaderPlugins() - { - return [ - new MerchantProductPageDataLoaderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductPageSearchExtension\Dependency\Plugin\ProductAbstractMapExpanderPluginInterface> - */ - protected function getProductAbstractMapExpanderPlugins(): array - { - return [ - new MerchantNamesProductAbstractMapExpanderPlugin(), - new MerchantReferencesProductAbstractsMapExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/MerchantProductOfferStorage/MerchantProductOfferStorageDependencyProvider.php** - -```php - - */ - protected function getProductOfferReferenceStrategyPlugins(): array - { - return [ - new ProductOfferReferenceStrategyPlugin(), - new DefaultProductOfferReferenceStrategyPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/ProductStorage/ProductStorageDependencyProvider.php** - -```php - - */ - protected function getProductViewExpanderPlugins() - { - return [ - new ProductViewProductOfferExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ProductOffer/ProductOfferDependencyProvider.php** - -```php - - */ - protected function getProductOfferPostCreatePlugins(): array - { - return [ - new ProductOfferValidityProductOfferPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferPostUpdatePluginInterface> - */ - protected function getProductOfferPostUpdatePlugins(): array - { - return [ - new ProductOfferValidityProductOfferPostUpdatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferExpanderPluginInterface> - */ - protected function getProductOfferExpanderPlugins(): array - { - return [ - new ProductOfferValidityProductOfferExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Console/ConsoleDependencyProvider.php** - -```php - - */ - protected function getConsoleCommands(Container $container) - { - $commands = [ - new ProductOfferValidityConsole(), - ]; - - return $commands; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that a default product offer is given when retrieving product concrete data. - -Make sure that validity data is saved when saving a product offer. - -Make sure Merchant and Product Offer Validity sections exist on the product offer view page in `ProductOfferGui`. - -Make sure the Merchant column is in the Product Offers list in `ProductOfferGui`. - -Make sure the console command invalidates expired product offers and reactivates product offers that are within their validity dates. - -Make sure that when a merchant gets updated or published, or when a product offer gets published, created, or updated, the corresponding product abstracts get updated in the catalog search pages. -It means the following: -1. If a merchant gets deactivated, `ProductAbstract`s that were on the catalog search only because they had a product offer from that merchant get removed. -2. If a product offer gets created, and the `ProductAbstract` related to it was not available on catalog search, it would be available now. - -{% endinfo_block %} - -### 7) Configure navigation - -Add product offers section to marketplace section of `navigation.xml`: - -**config/Zed/navigation.xml** - -```xml - - - - - - - Offers - product-offer-gui - list - index - - - - -``` - -Execute the following command: - -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the navigation menu of the Back Office, you can see the **Marketplace->Offers** menu item. - -{% endinfo_block %} - - -## Install feature frontend - -Follow the steps below to install the Marketplace Product Offer feature frontend. - -### Prerequisites - -To start feature integration, integrate the following features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ---------- | ----- | --------------| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | - -### 1) Install the required modules using Composer - -If installed before, not needed. - -{% info_block warningBox "Verification" %} - -Verify that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -| ---------- | -------------- | -| MerchantProductOfferWidget | spryker-shop/merchant-product-offer-widget | - -{% endinfo_block %} - -### 2) Add Translations - -Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -``` -merchant_product_offer.view_seller,View Seller,en_US -merchant_product_offer.view_seller,Händler ansehen,de_DE -merchant_product_offer.sold_by,Sold by,en_US -merchant_product_offer.sold_by,Verkauft durch,de_DE -product-offer.info.product-offer-inactive.removed,Inactive item %sku% was removed from your shopping cart.,en_US -product-offer.info.product-offer-inactive.removed,Der inaktive Artikel %sku% wurde aus Ihrem Warenkorb entfernt.,de_DE -product-offer.info.reference.invalid,Product offer reference not found for product with SKU '%sku%'.,en_US -product-offer.info.reference.invalid,Produktangebotsreferenz für Produkt mit SKU '% sku%' nicht gefunden.,de_DE -product-offer.message.not-active-or-approved,"Product offer not active for product with SKU '%sku%'.",en_US -product-offer.message.not-active-or-approved,"Produktangebot ist inaktiv für Produkt mit SKU '%sku%'.",de_DE -``` - -Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data is added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 2) Set up widgets - -Register the following plugins to enable widgets: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| -------------- | --------------- | ------ | ---------------- | -| MerchantProductOfferWidget | Shows the list of the offers with their prices for a concrete product. | | SprykerShop\Yves\MerchantProductOfferWidget\Widget | - -**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantProductOfferWidget::class, - ]; - } -} -``` - -Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following widgets were registered: - -| MODULE | TEST | -| ----------------- | ----------------- | -| MerchantProductOfferWidget | Go to a product concrete detail page that has offers, and you will see the default offer is selected, and the widget is displayed. | - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|------------------------------------------------------|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Combined Product Offer Import | | [Combined Product Offer Import integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/combined-product-offer-import-feature-integration.html) | -| Marketplace Product Offer Prices | | [Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | -| Marketplace Merchant Portal Product Offer Management | | [Marketplace Product Offer Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-integration.html) | -| Marketplace Product Offer API | | [Glue API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) | -| Marketplace Product + Marketplace Product Offer | | [Marketplace Product + Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-marketplace-product-offer-feature-integration.html) | -| Marketplace Product Offer + Cart | | [Marketplace Product Offer + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-cart-feature-integration.html) | -| Marketplace Product Offer + Checkout | | [Marketplace Product Offer + Checkout feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-checkout-feature-integration.html) | -| Marketplace Product Offer + Prices | | [Marketplace Product Offer + Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-prices-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-prices-feature-integration.md deleted file mode 100644 index d98463c95c9..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-offer-prices-feature-integration.md +++ /dev/null @@ -1,1159 +0,0 @@ ---- -title: Marketplace Product Offer Prices feature integration -last_updated: Sep 02, 2021 -description: This document describes the process how to integrate the Marketplace Product Offer Prices feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Product Offer Prices feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Product Offer Prices feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|---|---|---| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Prices | {{page.version}} |[Prices feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/prices-feature-integration.html) | -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | - - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-product-offer-prices:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| PriceProductOffer | spryker/price-product-offer | -| PriceProductOfferDataImport | spryker/price-product-offer-data-import | -| PriceProductOfferGui | spryker/price-product-offer-gui | -| PriceProductOfferStorage | spryker/price-product-offer-storage | -| PriceProductOfferStorageExtension | spryker/price-product-offer-storage-extension | -| PriceProductOfferVolume | spryker/price-product-offer-volume | -| PriceProductOfferVolumeGui | spryker/price-product-offer-volume-gui | - -{% endinfo_block %} - -### 2) Set up the database schema - -Adjust the schema definition so that entity changes will trigger events: - -**src/Pyz/Zed/PriceProductOffer/Persistence/Propel/Schema/spy_price_product_offer.schema.xml** - -```xml - - - - - - -
-
-``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been implemented by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -|-|-|-| -| spy_price_product_offer | table | created | -| spy_product_concrete_product_offer_price_storage | table | created | - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| PriceProductOffer | class | created | src/Generated/Shared/Transfer/PriceProductOfferTransfer | -| PriceProductOfferCriteria | class | created | src/Generated/Shared/Transfer/PriceProductOfferCriteriaTransfer | -| PriceProductOfferCollection | class | created | src/Generated/Shared/Transfer/PriceProductOfferCollectionTransfer | -| PriceProductStoreCriteria | class | created | src/Generated/Shared/Transfer/PriceProductStoreCriteriaTransfer | -| PriceProductCriteria.productOfferReference | property | created | src/Generated/Shared/Transfer/PriceProductCriteriaTransfer | -| PriceProduct.concreteSku | property | created | src/Generated/Shared/Transfer/PriceProductTransfer | -| PriceProductDimension.productOfferReference | property | created | src/Generated/Shared/Transfer/PriceProductDimensionTransfer | -| PriceProductDimension.idProductOffer | property | created | src/Generated/Shared/Transfer/PriceProductDimensionTransfer | -| PriceProductDimension.idPriceProductOffer | property | created | src/Generated/Shared/Transfer/PriceProductDimensionTransfer | -| ProductOffer.prices | property | created | src/Generated/Shared/Transfer/ProductOfferTransfer | -| PriceProductFilterIdentifier.productOfferReference | property | created | src/Generated/Shared/Transfer/PriceProductFilterIdentifierTransfer | -| ProductOfferStorage.price | property | created | src/Generated/Shared/Transfer/ProductOfferStorageTransfer | -| PriceProductFilter.productOfferReference | property | created |src/Generated/Shared/Transfer/PriceProductFilterTransfer | - -{% endinfo_block %} - -### 3) Add Zed translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Configure export to Redis - -Set up event listeners - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| PriceProductOfferStorageEventSubscriber | Registers listeners that are responsible for publishing Product Offer Prices to storage. | | Spryker\Zed\PriceProductOfferStorage\Communication\Plugin\Event\Subscriber | - -**src/Pyz/Zed/Event/EventDependencyProvider.php** - -```php -add(new PriceProductOfferStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` - -Register the synchronization queue and synchronization error queue: - -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - PriceProductOfferStorageConfig::PRICE_PRODUCT_OFFER_OFFER_SYNC_STORAGE_QUEUE => new SynchronizationStorageQueueMessageProcessorPlugin(), - ]; - } -} -``` - -Set up publisher: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| PriceProductStoreWritePublisherPlugin | Publishes product offer prices data by update events from `spy_price_product_store` table. | | Spryker\Zed\PriceProductOfferStorage\Communication\Plugin\Publisher\PriceProductOffer | - -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php -getPriceProductOfferStoragePlugins(), - ); - } - - /** - * @return array<\Spryker\Zed\PublisherExtension\Dependency\Plugin\PublisherPluginInterface> - */ - protected function getPriceProductOfferStoragePlugins(): array - { - return [ - new PriceProductStoreWritePublisherPlugin(), - ]; - } -} -``` - -Set up re-generate and re-sync features: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| PriceProductOfferSynchronizationDataBulkRepositoryPlugin | Allows synchronizing the entire storage table content into Storage. | | Spryker\Zed\PriceProductOfferStorage\Communication\Plugin\Synchronization | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new PriceProductOfferSynchronizationDataBulkRepositoryPlugin(), - ]; - } -} -``` - -Configure the synchronization pool name: - -**src/Pyz/Zed/PriceProductOfferStorage/PriceProductOfferStorageConfig.php** - -```php - -Example of the expected data fragment - -```json -[ - { - "id_price_product_offer": "34", - "product_offer_reference": "offer13", - "price_type": "DEFAULT", - "currency": "CHF", - "net_price": "33923", - "gross_price": "37692", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "35", - "product_offer_reference": "offer13", - "price_type": "DEFAULT", - "currency": "EUR", - "net_price": "29498", - "gross_price": "32775", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "36", - "product_offer_reference": "offer13", - "price_type": "ORIGINAL", - "currency": "CHF", - "net_price": "34218", - "gross_price": "38019", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "37", - "product_offer_reference": "offer13", - "price_type": "ORIGINAL", - "currency": "EUR", - "net_price": "29754", - "gross_price": "33060", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "150", - "product_offer_reference": "offer54", - "price_type": "DEFAULT", - "currency": "CHF", - "net_price": "32138", - "gross_price": "35708", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "151", - "product_offer_reference": "offer54", - "price_type": "DEFAULT", - "currency": "EUR", - "net_price": "27945", - "gross_price": "31050", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "152", - "product_offer_reference": "offer54", - "price_type": "ORIGINAL", - "currency": "CHF", - "net_price": "32417", - "gross_price": "36018", - "price_data": "{\"volume_prices\":null}" - }, - { - "id_price_product_offer": "153", - "product_offer_reference": "offer54", - "price_type": "ORIGINAL", - "currency": "EUR", - "net_price": "28188", - "gross_price": "31320", - "price_data": "{\"volume_prices\":null}" - } -] -``` - - -{% endinfo_block %} - -### 5) Import data - -Prepare your data according to your requirements using the demo data: - -
data/import/common/common/marketplace/price_product_offer.csv - -``` -product_offer_reference,price_type,store,currency,value_net,value_gross,price_data.volume_prices -offer2,DEFAULT,DE,EUR,8144,10160,"[{""quantity"":5,""net_price"":6050,""gross_price"":7065}, {""quantity"":10,""net_price"":5045,""gross_price"":6058}, {""quantity"":20,""net_price"":4040,""gross_price"":5052}]" -offer2,DEFAULT,DE,CHF,10866,13184, -offer3,ORIGINAL,DE,EUR,17741,19712, -offer3,DEFAULT,DE,EUR,7741,9712, -offer3,ORIGINAL,DE,CHF,20402,22669, -offer3,DEFAULT,DE,CHF,10402,12669, -offer4,DEFAULT,DE,EUR,27741,29712,"[{""quantity"":6,""net_price"":60500,""gross_price"":70650}, {""quantity"":10,""net_price"":5045,""gross_price"":6058}, {""quantity"":20,""net_price"":4040,""gross_price"":5052}, {""quantity"":25,""net_price"":400,""gross_price"":505}]" -offer4,DEFAULT,DE,CHF,30402,32669, -offer5,ORIGINAL,DE,EUR,15713,17459, -offer5,DEFAULT,DE,EUR,5713,7459, -offer5,DEFAULT,DE,CHF,8070,10000, -offer6,DEFAULT,DE,EUR,25713,27459, -offer6,DEFAULT,DE,CHF,28070,30010, -offer8,DEFAULT,DE,CHF,9832,10925, -offer8,DEFAULT,DE,EUR,475,475,"[{""quantity"":5,""net_price"":150,""gross_price"":1000}, {""quantity"":10,""net_price"":145,""gross_price"":""""}, {""quantity"":20,""net_price"":140,""gross_price"":""""}]" -offer8,ORIGINAL,DE,CHF,12354,13727, -offer8,ORIGINAL,DE,EUR,10743,11936, -offer9,DEFAULT,DE,CHF,9832,10925, -offer9,DEFAULT,DE,EUR,8550,9500, -offer10,DEFAULT,DE,CHF,6392,7102, -offer10,DEFAULT,DE,EUR,5558,6175, -offer10,ORIGINAL,DE,CHF,7866,8740, -offer10,ORIGINAL,DE,EUR,6840,7600, -offer11,DEFAULT,DE,CHF,6883,7648, -offer11,DEFAULT,DE,EUR,5985,6650, -offer12,DEFAULT,DE,CHF,6883,7648, -offer12,DEFAULT,DE,EUR,5985,6650, -offer13,DEFAULT,DE,CHF,33923,37692, -offer13,DEFAULT,DE,EUR,29498,32775, -offer13,ORIGINAL,DE,CHF,34218,38019, -offer13,ORIGINAL,DE,EUR,29754,33060, -offer14,DEFAULT,DE,CHF,33923,37692, -offer14,DEFAULT,DE,EUR,29498,32775, -offer15,DEFAULT,DE,CHF,33923,37692, -offer15,DEFAULT,DE,EUR,29498,32775, -offer16,DEFAULT,DE,CHF,9832,10925, -offer16,DEFAULT,DE,EUR,8550,9500, -offer17,DEFAULT,DE,CHF,34021,37801, -offer17,DEFAULT,DE,EUR,29583,32870, -offer17,ORIGINAL,DE,CHF,35004,38893, -offer17,ORIGINAL,DE,EUR,30438,33820, -offer18,DEFAULT,DE,CHF,35987,39986, -offer18,DEFAULT,DE,EUR,31293,34770, -offer19,DEFAULT,DE,CHF,35987,39986, -offer19,DEFAULT,DE,EUR,31293,34770, -offer20,DEFAULT,DE,CHF,5604,6227, -offer20,DEFAULT,DE,EUR,4873,5415, -offer21,DEFAULT,DE,CHF,4503,5003, -offer21,DEFAULT,DE,EUR,3915,4351, -offer22,DEFAULT,DE,CHF,5900,6555, -offer22,DEFAULT,DE,EUR,5130,5700, -offer22,ORIGINAL,DE,CHF,7866,8740, -offer22,ORIGINAL,DE,EUR,6840,7600, -offer23,DEFAULT,DE,CHF,9832,10925, -offer23,DEFAULT,DE,EUR,8550,9500, -offer24,DEFAULT,DE,CHF,339909,377677, -offer24,DEFAULT,DE,EUR,295573,328415, -offer25,DEFAULT,DE,CHF,34020,37800, -offer25,DEFAULT,DE,EUR,29583,32870, -offer26,DEFAULT,DE,CHF,9832,10925, -offer26,DEFAULT,DE,EUR,8550,9500, -offer27,DEFAULT,DE,CHF,10403,11559, -offer27,DEFAULT,DE,EUR,9046,10051, -offer27,ORIGINAL,DE,CHF,10422,11580, -offer27,ORIGINAL,DE,EUR,9063,10070, -offer28,DEFAULT,DE,CHF,10502,11668, -offer28,DEFAULT,DE,EUR,9132,10146, -offer29,DEFAULT,DE,CHF,25565,28405, -offer29,DEFAULT,DE,EUR,22230,24700, -offer30,DEFAULT,DE,CHF,26277,29195, -offer30,DEFAULT,DE,EUR,22849,25387, -offer31,DEFAULT,DE,CHF,43756,48617, -offer31,DEFAULT,DE,EUR,38048,42275, -offer31,ORIGINAL,DE,CHF,44739,49709, -offer31,ORIGINAL,DE,EUR,38903,43225, -offer32,DEFAULT,DE,CHF,29498,32775, -offer32,DEFAULT,DE,EUR,25650,28500, -offer33,DEFAULT,DE,CHF,4130,4589, -offer33,DEFAULT,DE,EUR,3591,3990, -offer34,DEFAULT,DE,CHF,4819,5354, -offer34,DEFAULT,DE,EUR,4190,4655, -offer34,ORIGINAL,DE,CHF,5113,5681, -offer34,ORIGINAL,DE,EUR,4446,4940, -offer35,DEFAULT,DE,CHF,2950,3278, -offer35,DEFAULT,DE,EUR,2565,2850, -offer36,DEFAULT,DE,CHF,40337,44820, -offer36,DEFAULT,DE,EUR,35076,38973, -offer36,ORIGINAL,DE,CHF,41297,45885, -offer36,ORIGINAL,DE,EUR,35910,39900, -offer37,DEFAULT,DE,CHF,44270,49190, -offer37,DEFAULT,DE,EUR,38496,42773, -offer37,ORIGINAL,DE,CHF,46213,51348, -offer37,ORIGINAL,DE,EUR,40185,44650, -offer38,DEFAULT,DE,CHF,39354,43727, -offer38,DEFAULT,DE,EUR,34221,38023, -offer38,ORIGINAL,DE,CHF,40314,44793, -offer38,ORIGINAL,DE,EUR,35055,38950, -offer39,DEFAULT,DE,CHF,2754,3059, -offer39,DEFAULT,DE,EUR,2394,2660, -offer40,DEFAULT,DE,CHF,2459,2732, -offer40,DEFAULT,DE,EUR,2138,2375, -offer40,ORIGINAL,DE,CHF,2754,3059, -offer40,ORIGINAL,DE,EUR,2394,2660, -offer41,DEFAULT,DE,CHF,30500,33889, -offer41,DEFAULT,DE,EUR,26522,29469, -offer42,DEFAULT,DE,CHF,29249,32499, -offer42,DEFAULT,DE,EUR,25434,28260, -offer43,DEFAULT,DE,CHF,17698,19665, -offer43,DEFAULT,DE,EUR,15390,17100, -offer43,ORIGINAL,DE,CHF,18682,20758, -offer43,ORIGINAL,DE,EUR,16245,18050, -offer44,DEFAULT,DE,CHF,16715,18572, -offer44,DEFAULT,DE,EUR,14535,16150, -offer45,DEFAULT,DE,CHF,15732,17480, -offer45,DEFAULT,DE,EUR,13680,15200, -offer46,DEFAULT,DE,CHF,15633,17370, -offer46,DEFAULT,DE,EUR,13594,15105, -offer47,DEFAULT,DE,CHF,15535,17261,"[{""quantity"":4,""net_price"":null,""gross_price"":36500}, {""quantity"":7,""net_price"":null,""gross_price"":35800}, {""quantity"":17,""net_price"":null,""gross_price"":35200}, {""quantity"":22,""net_price"":null,""gross_price"":30000}]" -offer47,DEFAULT,DE,EUR,13509,15010,"[{""quantity"":4,""net_price"":null,""gross_price"":16500}, {""quantity"":7,""net_price"":null,""gross_price"":15800}, {""quantity"":17,""net_price"":null,""gross_price"":15200}]" -offer47,ORIGINAL,DE,CHF,16869,18743, -offer47,ORIGINAL,DE,EUR,14668,16299, -offer48,DEFAULT,DE,CHF,10206,11341,"[{""quantity"":3,""net_price"":40500,""gross_price"":40650}, {""quantity"":9,""net_price"":40450,""gross_price"":40580}, {""quantity"":17,""net_price"":40400,""gross_price"":40520}]" -offer48,DEFAULT,DE,EUR,8875,9861,"[{""quantity"":3,""net_price"":10500,""gross_price"":10650}, {""quantity"":9,""net_price"":10450,""gross_price"":10580}, {""quantity"":17,""net_price"":10400,""gross_price"":10520}]" -offer49,DEFAULT,DE,CHF,450,450, -offer49,DEFAULT,DE,CHF,9290,10280, -offer49,DEFAULT,DE,CHF,9300,10290, -offer49,DEFAULT,DE,CHF,9315,10350, -offer49,DEFAULT,DE,EUR,450,450, -offer49,DEFAULT,DE,EUR,8030,8930, -offer49,DEFAULT,DE,EUR,8040,8940, -offer49,DEFAULT,DE,EUR,8100,9000, -offer49,ORIGINAL,DE,CHF,11704,13005, -offer49,ORIGINAL,DE,EUR,10178,11308, -offer50,DEFAULT,DE,CHF,9315,10350, -offer50,DEFAULT,DE,EUR,8100,9000, -offer51,DEFAULT,DE,CHF,6056,6728, -offer51,DEFAULT,DE,EUR,5265,5850, -offer51,ORIGINAL,DE,CHF,7452,8280, -offer51,ORIGINAL,DE,EUR,6480,7200, -offer52,DEFAULT,DE,CHF,6521,7245, -offer52,DEFAULT,DE,EUR,5670,6300, -offer53,DEFAULT,DE,CHF,6521,7245, -offer53,DEFAULT,DE,EUR,5670,6300, -offer54,DEFAULT,DE,CHF,32138,35708, -offer54,DEFAULT,DE,EUR,27945,31050, -offer54,ORIGINAL,DE,CHF,32417,36018, -offer54,ORIGINAL,DE,EUR,28188,31320, -offer55,DEFAULT,DE,CHF,32138,35708, -offer55,DEFAULT,DE,EUR,27945,31050, -offer56,DEFAULT,DE,CHF,32138,35708, -offer56,DEFAULT,DE,EUR,27945,31050, -offer57,DEFAULT,DE,CHF,9315,10350, -offer57,DEFAULT,DE,EUR,8100,9000, -offer58,DEFAULT,DE,CHF,32230,35811, -offer58,DEFAULT,DE,EUR,28026,31140, -offer58,ORIGINAL,DE,CHF,33162,36846, -offer58,ORIGINAL,DE,EUR,28836,32040, -offer59,DEFAULT,DE,CHF,34093,37881, -offer59,DEFAULT,DE,EUR,29646,32940, -offer60,DEFAULT,DE,CHF,34093,37881, -offer60,DEFAULT,DE,EUR,29646,32940, -offer61,DEFAULT,DE,CHF,5309,5899, -offer61,DEFAULT,DE,EUR,4617,5130, -offer62,DEFAULT,DE,CHF,4266,4740, -offer62,DEFAULT,DE,EUR,3709,4122, -offer63,DEFAULT,DE,CHF,5589,6210, -offer63,DEFAULT,DE,EUR,4860,5400, -offer63,ORIGINAL,DE,CHF,7452,8280, -offer63,ORIGINAL,DE,EUR,6480,7200, -offer64,DEFAULT,DE,CHF,9315,10350, -offer64,DEFAULT,DE,EUR,8100,9000, -offer65,DEFAULT,DE,CHF,322019,357799, -offer65,DEFAULT,DE,EUR,280017,311130, -offer66,DEFAULT,DE,CHF,32229,35811, -offer66,DEFAULT,DE,EUR,28026,31140, -offer67,DEFAULT,DE,CHF,9315,10350, -offer67,DEFAULT,DE,EUR,8100,9000, -offer68,DEFAULT,DE,CHF,9855,10951, -offer68,DEFAULT,DE,EUR,8570,9522, -offer68,ORIGINAL,DE,CHF,9873,10971, -offer68,ORIGINAL,DE,EUR,8586,9540, -offer69,DEFAULT,DE,CHF,9949,11054, -offer69,DEFAULT,DE,EUR,8651,9612, -offer70,DEFAULT,DE,CHF,24219,26910, -offer70,DEFAULT,DE,EUR,21060,23400, -offer71,DEFAULT,DE,CHF,24894,27658, -offer71,DEFAULT,DE,EUR,21646,24051, -offer72,DEFAULT,DE,CHF,41453,46058, -offer72,DEFAULT,DE,EUR,36045,40050, -offer72,ORIGINAL,DE,CHF,42384,47093, -offer72,ORIGINAL,DE,EUR,36855,40950, -offer73,DEFAULT,DE,CHF,27945,31050, -offer73,DEFAULT,DE,EUR,24300,27000, -offer74,DEFAULT,DE,CHF,3913,4347, -offer74,DEFAULT,DE,EUR,3402,3780, -offer75,DEFAULT,DE,CHF,4565,5072, -offer75,DEFAULT,DE,EUR,3969,4410, -offer75,ORIGINAL,DE,CHF,4844,5382, -offer75,ORIGINAL,DE,EUR,4212,4680, -offer76,DEFAULT,DE,CHF,2795,3105, -offer76,DEFAULT,DE,EUR,2430,2700, -offer77,DEFAULT,DE,CHF,38214,42461, -offer77,DEFAULT,DE,EUR,33230,36922, -offer77,ORIGINAL,DE,CHF,39123,43470, -offer77,ORIGINAL,DE,EUR,34020,37800, -offer78,DEFAULT,DE,CHF,41940,46601, -offer78,DEFAULT,DE,EUR,36470,40522, -offer78,ORIGINAL,DE,CHF,43781,48645, -offer78,ORIGINAL,DE,EUR,38070,42300, -offer79,DEFAULT,DE,CHF,37283,41426, -offer79,DEFAULT,DE,EUR,32420,36022, -offer79,ORIGINAL,DE,CHF,38192,42435, -offer79,ORIGINAL,DE,EUR,33210,36900, -offer80,DEFAULT,DE,CHF,2609,2898, -offer80,DEFAULT,DE,EUR,2268,2520, -offer81,DEFAULT,DE,CHF,2330,2588, -offer81,DEFAULT,DE,EUR,2025,2250, -offer81,ORIGINAL,DE,CHF,2609,2898, -offer81,ORIGINAL,DE,EUR,2268,2520, -offer82,DEFAULT,DE,CHF,28895,32105, -offer82,DEFAULT,DE,EUR,25126,27918, -offer83,DEFAULT,DE,CHF,27710,30789, -offer83,DEFAULT,DE,EUR,24095,26773, -offer84,DEFAULT,DE,CHF,16767,18630, -offer84,DEFAULT,DE,EUR,14580,16200, -offer84,ORIGINAL,DE,CHF,17699,19665, -offer84,ORIGINAL,DE,EUR,15390,17100, -offer85,DEFAULT,DE,CHF,15835,17595, -offer85,DEFAULT,DE,EUR,13770,15300, -offer86,DEFAULT,DE,CHF,14904,16560, -offer86,DEFAULT,DE,EUR,12960,14400, -offer87,DEFAULT,DE,CHF,14810,16456, -offer87,DEFAULT,DE,EUR,12879,14310, -offer88,DEFAULT,DE,CHF,14717,16353,"[{""quantity"":4,""net_price"":35000,""gross_price"":null}, {""quantity"":7,""net_price"":34500,""gross_price"":null}, {""quantity"":17,""net_price"":34000,""gross_price"":null}, {""quantity"":22,""net_price"":29000,""gross_price"":null}]" -offer88,DEFAULT,DE,EUR,12798,14220,"[{""quantity"":4,""net_price"":15000,""gross_price"":null}, {""quantity"":7,""net_price"":14500,""gross_price"":null}, {""quantity"":17,""net_price"":14000,""gross_price"":null}]" -offer88,ORIGINAL,DE,CHF,15981,17757, -offer88,ORIGINAL,DE,EUR,13896,15441, -offer89,DEFAULT,DE,CHF,9669,10744,"[{""quantity"":2,""net_price"":40050,""gross_price"":40065}, {""quantity"":7,""net_price"":40045,""gross_price"":40058}, {""quantity"":18,""net_price"":40040,""gross_price"":40052}]" -offer89,DEFAULT,DE,EUR,8408,9342,"[{""quantity"":2,""net_price"":10050,""gross_price"":10065}, {""quantity"":7,""net_price"":10045,""gross_price"":10058}, {""quantity"":18,""net_price"":10040,""gross_price"":10052}]" -offer90,DEFAULT,DE,CHF,8797,9775, -offer90,DEFAULT,DE,EUR,7650,8500, -offer91,DEFAULT,DE,CHF,304129,337921, -offer91,DEFAULT,DE,EUR,264460,293845, -offer92,DEFAULT,DE,CHF,30439,33821, -offer92,DEFAULT,DE,EUR,26469,29410, -offer93,DEFAULT,DE,CHF,8797,9775, -offer93,DEFAULT,DE,EUR,7650,8500, -offer94,DEFAULT,DE,CHF,9308,10342, -offer94,DEFAULT,DE,EUR,8094,8993, -offer94,ORIGINAL,DE,CHF,9325,10361, -offer94,ORIGINAL,DE,EUR,8109,9010, -offer95,DEFAULT,DE,CHF,9396,10440, -offer95,DEFAULT,DE,EUR,8171,9078, -offer96,DEFAULT,DE,CHF,22874,25415, -offer96,DEFAULT,DE,EUR,19890,22100, -offer97,DEFAULT,DE,CHF,23511,26122, -offer97,DEFAULT,DE,EUR,20444,22715, -offer98,DEFAULT,DE,CHF,39150,43499, -offer98,DEFAULT,DE,EUR,34043,37825, -offer98,ORIGINAL,DE,CHF,40030,44477, -offer98,ORIGINAL,DE,EUR,34808,38675, -offer99,DEFAULT,DE,CHF,26393,29325, -offer99,DEFAULT,DE,EUR,22950,25500, -offer100,DEFAULT,DE,CHF,3695,4106, -offer100,DEFAULT,DE,EUR,3213,3570,"[{""quantity"":5,""net_price"":150,""gross_price"":1000}, {""quantity"":10,""net_price"":145,""gross_price"":""""}, {""quantity"":20,""net_price"":140,""gross_price"":""""}]" -offer101,DEFAULT,DE,CHF,4312,4790,"[{""quantity"":5,""net_price"":150,""gross_price"":1000}, {""quantity"":10,""net_price"":145,""gross_price"":""""}, {""quantity"":20,""net_price"":140,""gross_price"":""""}]" -offer101,DEFAULT,DE,EUR,3749,4165,"[{""quantity"":5,""net_price"":150,""gross_price"":1000}, {""quantity"":10,""net_price"":145,""gross_price"":""""}, {""quantity"":20,""net_price"":140,""gross_price"":null}]" -offer101,ORIGINAL,DE,CHF,4575,5083, -offer101,ORIGINAL,DE,EUR,3978,4420, -offer102,DEFAULT,DE,CHF,2640,2933, -offer102,DEFAULT,DE,EUR,2295,2550, -offer103,DEFAULT,DE,CHF,36091,40102, -offer103,DEFAULT,DE,EUR,31384,34871, -offer103,ORIGINAL,DE,CHF,36950,41055, -offer103,ORIGINAL,DE,EUR,32130,35700, -offer169,DEFAULT,DE,CHF,31417,34908, -offer169,DEFAULT,DE,EUR,27319,30355, -offer170,DEFAULT,DE,CHF,12805,14227, -offer170,DEFAULT,DE,EUR,11135,12371, -offer170,ORIGINAL,DE,CHF,13197,14663, -offer170,ORIGINAL,DE,EUR,11475,12750, -offer171,DEFAULT,DE,CHF,22508,25009, -offer171,DEFAULT,DE,EUR,19573,21747, -offer172,DEFAULT,DE,CHF,37392,41546, -offer172,DEFAULT,DE,EUR,32515,36127, -offer173,DEFAULT,DE,CHF,22183,24647, -offer173,DEFAULT,DE,EUR,19290,21432, -offer173,ORIGINAL,DE,CHF,22874,25415, -offer173,ORIGINAL,DE,EUR,19890,22100, -offer348,DEFAULT,DE,CHF,15831,17590, -offer348,DEFAULT,DE,EUR,13766,15295, -offer349,DEFAULT,DE,CHF,25391,28212, -offer349,DEFAULT,DE,EUR,22079,24532, -offer350,DEFAULT,DE,CHF,34721,38579, -offer350,DEFAULT,DE,EUR,30192,33547, -offer351,DEFAULT,DE,CHF,21942,24379, -offer351,DEFAULT,DE,EUR,19080,21199, -offer352,DEFAULT,DE,CHF,20243,22493, -offer352,DEFAULT,DE,EUR,17603,19559, -offer353,DEFAULT,DE,CHF,5522,6137, -offer353,DEFAULT,DE,EUR,4802,5336, -offer353,ORIGINAL,DE,CHF,6159,6843, -offer353,ORIGINAL,DE,EUR,5355,5950, -offer354,DEFAULT,DE,CHF,28952,32169, -offer354,DEFAULT,DE,EUR,25176,27973, -offer355,DEFAULT,DE,CHF,28952,32169, -offer355,DEFAULT,DE,EUR,25176,27973, -offer356,DEFAULT,DE,CHF,12199,13554, -offer356,DEFAULT,DE,EUR,10608,11786, -offer357,DEFAULT,DE,CHF,17819,19799, -offer357,DEFAULT,DE,EUR,15495,17216, -offer358,DEFAULT,DE,CHF,3447,3831, -offer358,DEFAULT,DE,EUR,2998,3331, -offer358,ORIGINAL,DE,CHF,4399,4888, -offer358,ORIGINAL,DE,EUR,3825,4250, -offer359,DEFAULT,DE,CHF,23438,26042, -offer359,DEFAULT,DE,EUR,20381,22645, -offer359,ORIGINAL,DE,CHF,23754,26393, -offer359,ORIGINAL,DE,EUR,20655,22950, -offer360,DEFAULT,DE,CHF,39337,43707, -offer360,DEFAULT,DE,EUR,34206,38007, -offer402,DEFAULT,DE,EUR,28000,25000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer403,DEFAULT,DE,EUR,27000,24000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer404,DEFAULT,DE,EUR,26000,23000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer405,DEFAULT,DE,EUR,25000,22000,"[{""quantity"":4,""net_price"":15000,""gross_price"":16500}, {""quantity"":7,""net_price"":14500,""gross_price"":15800}, {""quantity"":15,""net_price"":14000,""gross_price"":15200}]" -offer410,DEFAULT,DE,EUR,20000,17000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer411,DEFAULT,DE,EUR,19000,16000,"[{""quantity"":3,""net_price"":10500,""gross_price"":10650}, {""quantity"":9,""net_price"":10450,""gross_price"":10580}, {""quantity"":17,""net_price"":10400,""gross_price"":10520}]" -offer412,DEFAULT,DE,EUR,18000,15000,"[{""quantity"":2,""net_price"":10050,""gross_price"":10065}, {""quantity"":7,""net_price"":10045,""gross_price"":10058}, {""quantity"":18,""net_price"":10040,""gross_price"":10052}]" -offer413,DEFAULT,DE,EUR,17000,14000,"[{""quantity"":4,""net_price"":null,""gross_price"":16500}, {""quantity"":7,""net_price"":null,""gross_price"":15800}, {""quantity"":17,""net_price"":null,""gross_price"":15200}]" -offer414,DEFAULT,DE,EUR,16000,13000,"[{""quantity"":4,""net_price"":15000,""gross_price"":null}, {""quantity"":7,""net_price"":14500,""gross_price"":null}, {""quantity"":17,""net_price"":14000,""gross_price"":null}]" -offer415,DEFAULT,DE,EUR,15000,12000,"[{""quantity"":3,""net_price"":10500,""gross_price"":10650}, {""quantity"":9,""net_price"":10450,""gross_price"":10580}, {""quantity"":17,""net_price"":10400,""gross_price"":10520}]" -offer416,DEFAULT,DE,EUR,14000,11000,"[{""quantity"":2,""net_price"":10050,""gross_price"":10065}, {""quantity"":7,""net_price"":10045,""gross_price"":10058}, {""quantity"":18,""net_price"":10040,""gross_price"":10052}]" -offer417,DEFAULT,DE,EUR,13000,10000,"[{""quantity"":4,""net_price"":null,""gross_price"":16500}, {""quantity"":7,""net_price"":null,""gross_price"":15800}, {""quantity"":17,""net_price"":null,""gross_price"":15200}, {""quantity"":22,""net_price"":null,""gross_price"":10000}]]" -offer418,DEFAULT,DE,EUR,12000,9000,"[{""quantity"":4,""net_price"":15000,""gross_price"":null}, {""quantity"":7,""net_price"":14500,""gross_price"":null}, {""quantity"":17,""net_price"":14000,""gross_price"":null}, {""quantity"":22,""net_price"":9000,""gross_price"":null}]" -offer402,DEFAULT,DE,CHF,48000,43000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer403,DEFAULT,DE,CHF,47000,42000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer404,DEFAULT,DE,CHF,46000,41000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer405,DEFAULT,DE,CHF,45000,40000,"[{""quantity"":2,""net_price"":150,""gross_price"":165}, {""quantity"":7,""net_price"":145,""gross_price"":158}, {""quantity"":17,""net_price"":140,""gross_price"":152}]" -offer410,DEFAULT,DE,CHF,40000,35000,"[{""quantity"":5,""net_price"":150,""gross_price"":165}, {""quantity"":10,""net_price"":145,""gross_price"":158}, {""quantity"":20,""net_price"":140,""gross_price"":152}]" -offer411,DEFAULT,DE,CHF,39000,34000,"[{""quantity"":3,""net_price"":10500,""gross_price"":10650}, {""quantity"":9,""net_price"":10450,""gross_price"":10580}, {""quantity"":17,""net_price"":10400,""gross_price"":10520}]" -offer412,DEFAULT,DE,CHF,38000,33000,"[{""quantity"":2,""net_price"":10050,""gross_price"":10065}, {""quantity"":7,""net_price"":10045,""gross_price"":10058}, {""quantity"":18,""net_price"":10040,""gross_price"":10052}]" -offer413,DEFAULT,DE,CHF,37000,32000,"[{""quantity"":4,""net_price"":null,""gross_price"":16500}, {""quantity"":7,""net_price"":null,""gross_price"":15800}, {""quantity"":17,""net_price"":null,""gross_price"":15200}]" -offer414,DEFAULT,DE,CHF,36000,31000,"[{""quantity"":4,""net_price"":15000,""gross_price"":null}, {""quantity"":7,""net_price"":14500,""gross_price"":null}, {""quantity"":17,""net_price"":14000,""gross_price"":null}]" -offer416,DEFAULT,DE,CHF,34000,29000,"[{""quantity"":3,""net_price"":10500,""gross_price"":10650}, {""quantity"":9,""net_price"":10450,""gross_price"":10580}, {""quantity"":17,""net_price"":10400,""gross_price"":10520}]" -offer417,DEFAULT,DE,CHF,33000,28000,"[{""quantity"":2,""net_price"":10050,""gross_price"":10065}, {""quantity"":7,""net_price"":10045,""gross_price"":10058}, {""quantity"":18,""net_price"":10040,""gross_price"":10052}]" -offer415,DEFAULT,DE,CHF,35000,30000,"[{""quantity"":4,""net_price"":null,""gross_price"":16500}, {""quantity"":7,""net_price"":null,""gross_price"":15800}, {""quantity"":17,""net_price"":null,""gross_price"":15200}]" -offer418,DEFAULT,DE,CHF,32000,27000,"[{""quantity"":4,""net_price"":15000,""gross_price"":null}, {""quantity"":7,""net_price"":14500,""gross_price"":null}, {""quantity"":17,""net_price"":14000,""gross_price"":null}]" -``` - -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -|-|-|-|-|-| -| product_offer_reference | ✓ | string | offer1 | Product offer reference that will have these prices | -| price_type | ✓ | string | DEFAULT | Sets price type to product offer price | -| store | ✓ | string | DE | Store in which this price will be shown | -| currency | ✓ | string | EUR | Currency of the price | -| value_net | ✓ | number | 8144 | Price of product offer when price mode === NET | -| value_gross | ✓ | number | 10160 | Price of product offer when price mode === GROSS | -| price_data.volume_prices | optional | string | `"[{""quantity"":5,""net_price"":6050,""gross_price"":7065}, {""quantity"":10,""net_price"":5045,""gross_price"":6058}, {""quantity"":20,""net_price"":4040,""gross_price"":5052}]"` | JSON representation of the volume prices, each entry in the JSON array contains quantity at which `gross_price/net_price` will be activated | - -Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| PriceProductOfferDataImportPlugin | Imports Product Offer Price data | | Spryker\Zed\PriceProductOfferDataImport\Communication\Plugin | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - - */ - protected function getProductOfferPostCreatePlugins(): array - { - return [ - new PriceProductOfferProductOfferPostCreatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferPostUpdatePluginInterface> - */ - protected function getProductOfferPostUpdatePlugins(): array - { - return [ - new PriceProductOfferProductOfferPostUpdatePlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOfferExtension\Dependency\Plugin\ProductOfferExpanderPluginInterface> - */ - protected function getProductOfferExpanderPlugins(): array - { - return [ - new PriceProductOfferProductOfferExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/PriceProduct/PriceProductDependencyProvider.php** - -```php - - */ - protected function getPriceDimensionQueryCriteriaPlugins(): array - { - return array_merge(parent::getPriceDimensionQueryCriteriaPlugins(), [ - new PriceProductOfferPriceDimensionQueryCriteriaPlugin(), - ]); - } - - /** - * @return array<\Spryker\Zed\PriceProductExtension\Dependency\Plugin\PriceDimensionConcreteSaverPluginInterface> - */ - protected function getPriceDimensionConcreteSaverPlugins(): array - { - return [ - new PriceProductOfferPriceDimensionConcreteSaverPlugin(), - ]; - } - - /** - * @return array<\Spryker\Service\PriceProductExtension\Dependency\Plugin\PriceProductDimensionExpanderStrategyPluginInterface> - */ - protected function getPriceProductDimensionExpanderStrategyPlugins(): array - { - return [ - new PriceProductOfferPriceProductDimensionExpanderStrategyPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\PriceProductExtension\Dependency\Plugin\PriceProductValidatorPluginInterface> - */ - protected function getPriceProductValidatorPlugins(): array - { - return [ - new PriceProductVolumeValidatorPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/PriceProductStorage/PriceProductStorageDependencyProvider.php** - -```php - - */ - public function getPriceDimensionStorageReaderPlugins(): array - { - return [ - new PriceProductOfferStorageDimensionPlugin(), - ]; - } - - /** - * @return array<\Spryker\Client\PriceProductStorageExtension\Dependency\Plugin\PriceProductFilterExpanderPluginInterface> - */ - protected function getPriceProductFilterExpanderPlugins(): array - { - return [ - new PriceProductOfferStorageFilterExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/MerchantProductOfferStorage/MerchantProductOfferStorageDependencyProvider.php** - -```php - - */ - protected function getProductOfferStorageExpanderPlugins(): array - { - return [ - new PriceProductOfferStorageExpanderPlugin(), - ]; - } - - /** - * @return \Spryker\Client\MerchantProductOfferStorageExtension\Dependency\Plugin\ProductOfferStorageCollectionSorterPluginInterface - */ - protected function createProductOfferStorageCollectionSorterPlugin(): ProductOfferStorageCollectionSorterPluginInterface - { - return new LowestPriceProductOfferStorageCollectionSorterPlugin(); - } -} -``` - -**src/Pyz/Service/PriceProduct/PriceProductDependencyProvider.php** - -```php - - */ - protected function getPriceProductDecisionPlugins(): array - { - return array_merge([ - new PriceProductOfferPriceProductFilterPlugin(), - new PriceProductOfferVolumeFilterPlugin(), - ], parent::getPriceProductDecisionPlugins()); - } -} -``` - -**src/Pyz/Zed/PriceProductOffer/PriceProductOfferDependencyProvider.php** - -```php - - */ - protected function getPriceProductOfferExtractorPlugins(): array - { - return [ - new PriceProductOfferVolumeExtractorPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\PriceProductOfferExtension\Dependency\Plugin\PriceProductOfferExpanderPluginInterface> - */ - protected function getPriceProductOfferExpanderPlugins(): array - { - return [ - new PriceProductOfferVolumeExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\PriceProductOfferExtension\Dependency\Plugin\PriceProductOfferValidatorPluginInterface> - */ - protected function getPriceProductOfferValidatorPlugins(): array - { - return [ - new PriceProductOfferVolumeValidatorPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/PriceProductOfferStorage/PriceProductOfferStorageDependencyProvider.php** - -```php - - */ - protected function getPriceProductOfferStoragePriceExtractorPlugins(): array - { - return [ - new PriceProductOfferVolumeExtractorPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ProductOfferGui/ProductOfferGuiDependencyProvider.php** - -```php - - */ - public function getProductOfferViewSectionPlugins(): array - { - return [ - new PriceProductOfferProductOfferViewSectionPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that when a product offer is selected, its price is shown as the current price. - -Make sure that product offer prices are saved when Product Concrete and product offer prices are saved. - -Make sure that product offers are sorted by the lowest price first when fetched as a collection with product concrete. - -Make sure that when a product offer with a volume price is selected and the selected quantity is over a certain threshold, its volume price is shown instead of the normal price. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| -------------- | -------------------------------- | ----------------- | -| Marketplace Product Offer + Prices API | | [Glue API: Marketplace Product Offer + Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-cart-feature-integration.md deleted file mode 100644 index f40e778c0f4..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-cart-feature-integration.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Marketplace Product Options + Cart feature integration -last_updated: Jul 28, 2021 -Description: This document describes the process how to integrate the Marketplace Product Options + Cart feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-option-cart-feature-integration.html ---- - -This document describes how to integrate the Marketplace Product Options + Cart feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Product Options + Cart feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Marketplace Product Options| {{page.version}} | [Marketplace Product Options feature Integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-feature-integration.html) | -| Cart | {{page.version}} | [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductOptionCartPreCheckPlugin | Checks the approval status for the merchant product options. | None | Spryker\Zed\MerchantProductOption\Communication\Plugin\Cart | - - -**src/Pyz/Zed/Cart/CartDependencyProvider.php** - -```php - - */ - protected function getCartPreCheckPlugins(Container $container): array - { - return [ - new MerchantProductOptionCartPreCheckPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that validation works correctly with merchants product options in the cart and displays an error in case if any is not approved. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-checkout-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-checkout-feature-integration.md deleted file mode 100644 index de20e1de58c..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-checkout-feature-integration.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Marketplace Product Options + Checkout feature integration -last_updated: Jul 28, 2021 -Description: This document describes the process how to integrate the Marketplace Product Options + Checkout feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-checkout-feature-integration.html ---- - -This document describes how to integrate the Marketplace Product Options + Checkout feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Product Options + Checkout feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Marketplace Product Options| {{page.version}} | [Marketplace Product Options feature Integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-feature-integration.html) | -| Checkout | {{page.version}} | [Checkout feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductOptionCheckoutPreConditionPlugin | Checks the approval status for merchant product option groups. | None | Spryker\Zed\MerchantProductOption\Communication\Plugin\Checkout | - - -**src/Pyz/Zed/Checkout/CheckoutDependencyProvider.php** - -```php - - */ - protected function getCheckoutPreConditions(Container $container) - { - return [ - new MerchantProductOptionCheckoutPreConditionPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that validation works correctly for merchants product options with not approved status and checkout process does not go to next step. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-feature-integration.md deleted file mode 100644 index 98b9adfd3bc..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-options-feature-integration.md +++ /dev/null @@ -1,380 +0,0 @@ ---- -title: Marketplace Product Options feature integration -last_updated: Jul 28, 2021 -Description: This document describes the process how to integrate the Marketplace Product Options feature into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-product-option-feature-integration.html ---- - -This document describes how to integrate the Marketplace Product Options feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Product Options feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Product Options | {{page.version}} | [Product Options feature integration](https://spryker.atlassian.net/wiki/spaces/DOCS/pages/903151851/EMPTY+Product+Options+Feature+Integration+-+ongoing) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | - - -### 1) Install the required modules using Composer - -1) Install the required modules: - -```bash -composer require spryker-feature/marketplace-product-options:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProductOption | vendor/spryker/merchant-product-option | -| MerchantProductOptionDataImport | vendor/spryker/merchant-product-option-data-import | -| MerchantProductOptionGui | vendor/spryker/merchant-product-option-gui | -| MerchantProductOptionStorage | vendor/spryker/merchant-product-option-storage | - -{% endinfo_block %} - - -### 2) Set up the database schema and transfer objects - -Adjust the schema definition to guarantee unique identifier for each option group: - -**src/Pyz/Zed/DataImport/Persistence/Propel/Schema/spy_product_option.schema.xml** - -```xml - - - - - - - - - -
-
- -``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been implemented by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -|-|-|-| -| spy_merchant_product_option_group | table | created | -| spy_product_option_group.key | column | created | - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| - | - | - | - | -| MerchantProductOptionGroup | class | created | src/Generated/Shared/Transfer/MerchantProductOptionGroupTransfer | -| MerchantProductOptionGroupCriteria | class | created | src/Generated/Shared/Transfer/MerchantProductOptionGroupCriteriaTransfer | -| MerchantProductOptionGroupCollection | class | created | src/Generated/Shared/Transfer/MerchantProductOptionGroupCollectionTransfer | -| ProductOptionGroup.merchant | attribute | created | src/Generated/Shared/Transfer/ProductOptionGroupTransfer | - -{% endinfo_block %} - -### 3) Add translations - -Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -```yaml -checkout.item.option.pre.condition.validation.error.exists,"Product option of %name% is not available anymore.",en_US -checkout.item.option.pre.condition.validation.error.exists,"Produktoption von %name% ist nicht mehr verfügbar.",de_DE -``` - -Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data is added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 4) Import data - -Prepare your data according to your requirements using the demo data: - -**data/import/common/common/marketplace/merchant_product_option_group.csv** - -``` -product_option_group_key,merchant_reference,approval_status,merchant_sku -insurance,MER000001,approved,spr-425453 -``` - -Add the `product_option_group_key` column to product_option.csv: - -**data/import/common/common/product_option.csv** - -``` -abstract_product_skus,option_group_id,tax_set_name,group_name_translation_key,group_name.en_US,group_name.de_DE,option_name_translation_key,option_name.en_US,option_name.de_DE,sku,product_option_group_key -"012,013,014,015,016,017,018,019,020,021,022,023,024,025,026,027,028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,052,053,054,055,056,057,058,059,060,061,062,063,064,065,066,067,068,069,070,071,072,073,074,075,076,077,078,079,080,081,082,083,084,085,086,087,088,089,090,091,092,093,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,200,201,202,203,204,205",1,Entertainment Electronics,product.option.group.name.warranty,Warranty,Garantie,product.option.warranty_1,One (1) year limited warranty,Ein (1) Jahr begrenzte Garantie,OP_1_year_warranty,warranty -,1,Entertainment Electronics,product.option.group.name.warranty,Warranty,Garantie,product.option.warranty_2,Two (2) year limited warranty,Zwei (2) Jahre begrenzte Garantie,OP_2_year_warranty,warranty -,1,Entertainment Electronics,product.option.group.name.warranty,Warranty,Garantie,product.option.warranty_3,Three (3) year limited warranty,Drei (3) Jahre begrenzte Garantie,OP_3_year_warranty,warranty -"001,002,003,004,005,006,007,008,009,010,011,012,024,025,026,027,028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,052,053,054,055,056,057,058,059,060,061,062,063,064,065,066,067,068,069,070,083,084,085,086,087,088,089,090,091,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214",2,Entertainment Electronics,product.option.group.name.insurance,Insurance,Versicherungsschutz,product.option.insurance,Two (2) year insurance coverage,Zwei (2) Jahre Versicherungsschutz,OP_insurance,insurance -"001,002,003,004,005,006,007,008,009,010,018,019,020,021,022,023,024,025,026,027,028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,052,053,054,055,056,057,058,059,060,061,062,063,064,065,066,067,068,069,070,071,084,085,086,087,088,089,090,091,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210",3,Entertainment Electronics,product.option.group.name.gift_wrapping,Gift wrapping,Geschenkverpackung,product.option.gift_wrapping,Gift wrapping,Geschenkverpackung,OP_gift_wrapping,wrapping -``` - -#### Register data importer: - -**data/import/local/full_EU.yml** - -```yml -version: 0 - -actions: - - data_entity: merchant-product-option-group - source: data/import/common/common/marketplace/merchant_product_option_group.csv -``` - - -**data/import/local/full_US.yml** - -```yml -version: 0 - -actions: - - data_entity: merchant-product-option-group - source: data/import/common/common/marketplace/merchant_product_option_group.csv -``` - - -Register the following plugin to enable the data import: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductOptionGroupDataImportPlugin | Validates Merchant reference and inserts merchant product option groups into the datanbase. | None | Spryker\Zed\MerchantProductOptionDataImport\Communication\Plugin\DataImport | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php -filterByName($dataSet[self::KEY_GROUP_NAME_TRANSLATION_KEY]) - ->filterByKey($dataSet[self::KEY_PRODUCT_OPTION_GROUP_KEY]) - ->findOneOrCreate(); - - $productOptionGroupEntity - ->setName($dataSet[static::KEY_OPTION_NAME_TRANSLATION_KEY]) - ->setActive($this->isActive($dataSet, $productOptionGroupEntity)) - ->setFkTaxSet($dataSet[TaxSetNameToIdTaxSetStep::KEY_TARGET]) - ->save(); - ... - } -} -``` - -Import data: - -```bash -console data:import merchant-product-option-group -``` - -{% info_block warningBox "Verification" %} - -Make sure that the Merchant Product Option Group data is in the `spy_merchant_product_option_group` table. - -{% endinfo_block %} - -### 5) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantProductOptionListActionViewDataExpanderPlugin | Expands data with the merchant collection. | None | Spryker\Zed\MerchantGui\Communication\Plugin\ProductOptionGui | -| MerchantProductOptionListTableQueryCriteriaExpanderPlugin | Extends `QueryCriteriaTransfer` with the merchant product option group criteria for expanding default query running in `ProductOptionListTable`. | None | Spryker\Zed\MerchantProductOptionGui\Communication\Plugin\ProductOptionGui | -| MerchantProductOptionGroupExpanderPlugin | Expands a product option group data with the related merchant. | None | Spryker\Zed\MerchantProductOption\Communication\Plugin\ProductOption | -| MerchantProductOptionCollectionFilterPlugin | Filters merchant product option group transfers by approval status and excludes the product options with the not approved merchant groups. | None | Spryker\Zed\MerchantProductOptionStorage\Communication\Plugin\ProductOptionStorage | -| MerchantProductOptionGroupWritePublisherPlugin | Retrieves all abstract product IDs using the merchant product option group IDs from the event transfers. | None | Spryker\Zed\MerchantProductOptionStorage\Communication\Plugin\Publisher\MerchantProductOption | - - -
-src/Pyz/Zed/ProductOption/ProductOptionDependencyProvider.php - -```php - - */ - protected function getProductOptionListActionViewDataExpanderPlugins(): array - { - return [ - new MerchantProductOptionListActionViewDataExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOptionGuiExtension\Dependency\Plugin\ProductOptionListTableQueryCriteriaExpanderPluginInterface> - */ - protected function getProductOptionListTableQueryCriteriaExpanderPlugins(): array - { - return [ - new MerchantProductOptionListTableQueryCriteriaExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\ProductOptionExtension\Dependency\Plugin\ProductOptionGroupExpanderPluginInterface> - */ - protected function getProductOptionGroupExpanderPlugins(): array - { - return [ - new MerchantProductOptionGroupExpanderPlugin(), - ]; - } -} -``` - -
- -**src/Pyz/Zed/ProductOptionStorage/ProductOptionStorageDependencyProvider.php** - -```php - - */ - protected function getProductOptionCollectionFilterPlugins(): array - { - return [ - new MerchantProductOptionCollectionFilterPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php -getMerchantProductOptionStoragePlugins(), - ]; - } - - /** - * @return array<\Spryker\Zed\PublisherExtension\Dependency\Plugin\PublisherPluginInterface> - */ - protected function getMerchantProductOptionStoragePlugins(): array - { - return [ - new MerchantProductOptionGroupWritePublisherPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure merchants can create product option groups and values in the Merchant Portal. -Make sure that merchant product option information is shown on product details page when it is approved and active. -Make sure that merchant product option information is displayed in the cart, checkout, and user account. -Make sure that merchant product options are a part of the marketplace/merchant order and all totals are calculated correctly. - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| -------------- | -------------------------------- | ----------------- | -| Marketplace Product Options + Cart | | [Marketplace Product Options + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-cart-feature-integration.html) | -| Marketplace Product Options + Checkout | | [Marketplace Product Options + Checkout feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-checkout-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-promotions-discounts-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-promotions-discounts-feature-integration.md deleted file mode 100644 index 54040214a0d..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-promotions-discounts-feature-integration.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Marketplace Promotions & Discounts feature integration -last_updated: Sep 09, 2021 -description: This document describes the process how to integrate the Marketplace Promotions & Discounts feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Promotions & Discounts feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Promotions & Discounts feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| - | - | - | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | -| Promotions & Discounts | {{page.version}} | [Promotions & Discounts feature integration](https://github.com/spryker-feature/promotions-discounts) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-promotions-discounts:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -| - | - | -| DiscountMerchantSalesOrder | vendor/spryker/discount-merchant-sales-order | -| DiscountMerchantSalesOrderGui | vendor/spryker/discount-merchant-sales-order-gui | - -{% endinfo_block %} - -### 2) Set up configuration - -Add the following configuration: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -| ------------- | ------------- | --------- | -| MerchantSalesOrderMerchantUserGuiConfig::getMerchantSalesOrderDetailExternalBlocksUrls() | Introduces list of urls of order detail page configuration. | src/Pyz/Zed/MerchantSalesOrderMerchantUserGui/MerchantSalesOrderMerchantUserGuiConfig.php | - -**src/Pyz/Zed/MerchantSalesOrderMerchantUserGui/MerchantSalesOrderMerchantUserGuiConfig.php** - -```php - - */ - public function getMerchantSalesOrderDetailExternalBlocksUrls(): array - { - return [ - 'discount' => '/discount-merchant-sales-order-gui/merchant-sales-order/list', - ]; - } -} -``` - -### 3) Set up the transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| - | - | - | - | -| CalculatedDiscount.fkSalesOrderItem | property | created | src/Generated/Shared/Transfer/CalculatedDiscountTransfer | - -{% endinfo_block %} - -### 4) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 5) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| - | - | - | - | -| DiscountMerchantOrderFilterPlugin | Removes none merchant-related discounts from merchant orders. | | Spryker\Zed\DiscountMerchantSalesOrder\Communication\Plugin | - -**src/Pyz/Zed/MerchantSalesOrder/MerchantSalesOrderDependencyProvider.php** - -```php - - */ - protected function getMerchantOrderFilterPlugins(): array - { - return [ - new DiscountMerchantOrderFilterPlugin(), - ]; - } -} -``` ---- - - -{% info_block warningBox "Verification" %} - -Make sure that correct discounts are applied to the merchant orders when viewing them in the Back Office. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-return-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-return-management-feature-integration.md deleted file mode 100644 index 1edee1ff172..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-return-management-feature-integration.md +++ /dev/null @@ -1,1112 +0,0 @@ ---- -title: Marketplace Return Management feature integration -last_updated: Sep 14, 2021 -description: This document describes the process how to integrate the Marketplace Return Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Return Management feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Return Management feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Spryker Core | {{page.version}} | [Spryker Core Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Return Management | {{page.version}} | [Return Management Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/return-management-feature-integration.html) | -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management Feature Integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | - -### 1) Install required modules using Composer - - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-return-management:"{{page.version}}" --update-with-dependencies -``` - - - - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------- | ------------------- | -| MerchantSalesReturn | spryker/merchant-sales-return | -| MerchantSalesReturnGui | spryker/merchant-sales-return-gui | -| MerchantSalesReturnMerchantUserGui | spryker/merchant-sales-return-merchant-user-gui | - -{% endinfo_block %} - -### 2) Set up the configuration - - -Add the following configuration: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -| ------------- | ------------ | ------------ | -| MainMerchantStateMachine | Adjust `MainMerchantStateMachine` to have the `MerchantReturn` and `MerchantRefund` subprocesses. | config/Zed/StateMachine/Merchant/MainMerchantStateMachine.xml | -| MerchantDefaultStateMachine | Adjust `MerchantDefaultStateMachine` to have the `MerchantReturn` and `MerchantRefund` subprocesses. | config/Zed/StateMachine/Merchant/MerchantDefaultStateMachine.xml | -| MerchantRefund | Add configuration for `MerchantRefund` subprocess in the `Subprocess` folder for the Merchant StateMachine configuration. | config/Zed/StateMachine/Merchant/Subprocess/MerchantRefund.xml | -| MerchantReturn | Add configuration for the `MerchantReturn` subprocess in the `Subprocess` folder for the Merchant StateMachine configuration. | config/Zed/StateMachine/Merchant/Subprocess/MerchantReturn.xml | -| MarketplacePayment | Adjust OMS configuration for the `MarketplacePayment` to have the `MarketplaceReturn` and `MarketplaceRefund` subprocesses. | config/Zed/oms/MarketplacePayment01.xml | -| MarketplaceRefund | Add configuration for the `MarketplaceRefund` subprocess in the `MarketplaceSubprocess` folder for the OMS configuration. | config/Zed/oms/MarketplaceSubprocess/MarketplaceRefund01.xml | -| MarketplaceReturn | Add configuration for `MarketplaceReturn` subprocess in the `MarketplaceSubprocess` folder for the OMS configuration. | config/Zed/oms/MarketplaceSubprocess/MarketplaceReturn01.xml | - -
-config/Zed/StateMachine/Merchant/MainMerchantStateMachine.xml - -```xml - - - - - - MerchantReturn - MerchantRefund - - - - - - - -``` - -
- -
-config/Zed/StateMachine/Merchant/MerchantDefaultStateMachine.xml - -```xml - - - - - - MerchantReturn - MerchantRefund - - - - - - - -``` - -
- -
-config/Zed/StateMachine/Merchant/Subprocess/MerchantRefund.xml - -```xml - - - - - - - - - - - delivered - refunded - refund - - - - returned - refunded - refund - - - - - - - - - -``` - -
- -
-config/Zed/StateMachine/Merchant/Subprocess/MerchantReturn.xml - -```xml - - - - - - - - - - - - - - shipped - waiting for return - start-return - - - - delivered - waiting for return - start-return - - - - waiting for return - returned - execute-return - - - - waiting for return - return canceled - cancel-return - - - - return canceled - shipped to customer - ship-return - - - - shipped to customer - delivered - deliver-return - - - - - - - - - - - - - -``` - -
- -
-config/Zed/oms/MarketplacePayment01.xml - -```xml - - - - - - MarketplaceReturn - MarketplaceRefund - - - - - - - -``` - -
- -
-config/Zed/oms/MarketplaceSubprocess/MarketplaceRefund01.xml - -```xml - - - - - - - - - - - delivered - refunded - refund - - - - returned - refunded - refund - - - - - - - - - -``` - -
- -
-config/Zed/oms/MarketplaceSubprocess/MarketplaceReturn01.xml - -```xml - - - - - - - - - - - - - - shipped by merchant - waiting for return - start-return - - - - delivered - waiting for return - start-return - - - - waiting for return - returned - execute-return - - - - waiting for return - return canceled - cancel-return - - - - return canceled - shipped to customer - ship-return - - - - shipped to customer - delivered - deliver-return - - - - - - - - - - - - - -``` - -
- -### 3) Set up database schema and transfer objects - - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -| --------------- | ---- | ------ | -| spy_sales_return.merchant_reference | column | created | - -Make sure that the following changes have been triggered in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| --------- | ------- | ----- | ------------- | -| MerchantOrderCriteria.orderItemUuids | attribute | created | src/Generated/Shared/Transfer/MerchantOrderCriteriaTransfer | -| MerchantOrder.return | attribute | created | src/Generated/Shared/Transfer/MerchantOrderTransfer | -| Return.merchantOrders | attribute | created | src/Generated/Shared/Transfer/ReturnTransfer | - - -{% endinfo_block %} - -### 4) Add translations - - -Add translations as follows: - -1. Append glossary for the feature: - -
-data/import/common/common/glossary.csv - -``` -merchant_sales_return.message.items_from_different_merchant_detected,"There are products from different merchants in your order. You can only return products from one merchant at a time.",en_US -merchant_sales_return.message.items_from_different_merchant_detected,"Diese Bestellung enthält Artikel von verschiedenen Händlern. Sie können nur Artikel von einem Händler zur selben Zeit zurückschicken.",de_DE -merchant_sales_return_widget.create_form.different_merchants_info,There are products from different merchants in your order. You can only return products from one merchant at a time.,en_US -merchant_sales_return_widget.create_form.different_merchants_info,Diese Bestellung enthält Artikel von verschiedenen Händlern. Sie können nur Artikel von einem Händler zur selben Zeit zurückschicken.,de_DE -``` - -
- - -2. Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - - -Make sure that the configured data has been added to the `spy_glossary_key` and `spy_glossary_translation` tables. - -{% endinfo_block %} - -### 5) Set up behavior - -Enable the following behaviors by adding and registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------ | ----------- | ----- | ------------ | -| MerchantReturnPreCreatePlugin | Sets merchant reference to the return transfer. | | Spryker\Zed\MerchantSalesReturn\Communication\Plugin\SalesReturn | -| MerchantReturnCreateRequestValidatorPlugin | Checks if each item in the `itemTransfers` has the same merchant reference. | | Spryker\Zed\MerchantSalesReturn\Communication\Plugin | -| MerchantReturnExpanderPlugin | Expands `Return` transfer object with merchant orders. | | Spryker\Zed\MerchantSalesReturn\Communication\Plugin\SalesReturn | -| CancelReturnMarketplaceOrderItemCommandPlugin | Triggers 'cancel-return' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| DeliverReturnMarketplaceOrderItemCommandPlugin | Triggers 'deliver-return' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| ExecuteReturnMarketplaceOrderItemCommandPlugin | Triggers 'execute-return' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| RefundMarketplaceOrderItemCommandPlugin | Triggers 'refund' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| ReturnMerchantOrderItemCommandPlugin | Triggers 'start-return' event on a marketplace order item, initiate return. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| ShipReturnMarketplaceOrderItemCommandPlugin | Triggers 'ship-return' event on a marketplace order item. | | Pyz\Zed\MerchantOms\Communication\Plugin\Oms | -| MerchantReturnCreateTemplatePlugin | Replace the template, that renders item table on return create page in Zed. | | Spryker\Zed\MerchantSalesReturnGui\Communication\Plugin\SalesReturnGui | - -
-src/Pyz/Zed/SalesReturn/SalesReturnDependencyProvider.php - -```php - - */ - protected function getReturnExpanderPlugins(): array - { - return [ - new MerchantReturnExpanderPlugin(), - ]; - } -} -``` - -
- -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/AbstractTriggerOmsEventCommandPlugin.php - -```php -getFactory()->getMerchantSalesOrderFacade()->findMerchantOrderItem( - (new MerchantOrderItemCriteriaTransfer()) - ->setIdMerchantOrderItem($stateMachineItemTransfer->getIdentifier()) - ); - - if (!$merchantOrderItemTransfer) { - return; - } - - $result = $this->getFactory() - ->getOmsFacade() - ->triggerEventForOneOrderItem($this->getEventName(), $merchantOrderItemTransfer->getIdOrderItem()); - - if ($result === null) { - throw new LogicException(sprintf( - 'Sales Order Item #%s transition for event "%s" has not happened.', - $merchantOrderItemTransfer->getIdOrderItem(), - $this->getEventName() - )); - } - } -} - -``` - -
- -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/CancelReturnMarketplaceOrderItemCommandPlugin.php - -```php - - -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/DeliverReturnMarketplaceOrderItemCommandPlugin.php - -```php - - -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/ExecuteReturnMarketplaceOrderItemCommandPlugin.php - -```php - - -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/RefundMarketplaceOrderItemCommandPlugin.php - -```php - - -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/ReturnMerchantOrderItemCommandPlugin.php - -```php -getFactory()->getMerchantSalesOrderFacade()->findMerchantOrderItem( - (new MerchantOrderItemCriteriaTransfer()) - ->setIdOrderItem($orderItem->getIdSalesOrderItem()) - ); - - if (!$merchantOrderItemTransfer) { - return []; - } - - $merchantOmsTriggerRequestTransfer = (new MerchantOmsTriggerRequestTransfer()) - ->setMerchantOmsEventName(static::EVENT_START_RETURN) - ->addMerchantOrderItem($merchantOrderItemTransfer); - - $transitionCount = $this->getFacade()->triggerEventForMerchantOrderItems($merchantOmsTriggerRequestTransfer); - - if ($transitionCount === 0) { - throw new LogicException(sprintf( - 'Merchant Order Item #%s transition for event "%s" has not happened.', - $merchantOrderItemTransfer->getIdMerchantOrderItem(), - static::EVENT_START_RETURN - )); - } - - $itemTransfer = (new ItemTransfer()) - ->setIdSalesOrderItem($orderItem->getIdSalesOrderItem()); - - $this->getFactory()->getSalesReturnFacade()->setOrderItemRemunerationAmount($itemTransfer); - - return []; - } -} - -``` - -
- -
-src/Pyz/Zed/MerchantOms/Communication/Plugin/Oms/ShipReturnMarketplaceOrderItemCommandPlugin.php - -```php - - -
-src/Pyz/Zed/MerchantOms/MerchantOmsDependencyProvider.php - -```php - new RefundMarketplaceOrderItemCommandPlugin(), - 'MarketplaceReturn/CancelReturnForOrderItem' => new CancelReturnMarketplaceOrderItemCommandPlugin(), - 'MarketplaceReturn/DeliverReturnForOrderItem' => new DeliverReturnMarketplaceOrderItemCommandPlugin(), - 'MarketplaceReturn/ExecuteReturnForOrderItem' => new ExecuteReturnMarketplaceOrderItemCommandPlugin(), - 'MarketplaceReturn/ShipReturnForOrderItem' => new ShipReturnMarketplaceOrderItemCommandPlugin(), - ]; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - public function provideCommunicationLayerDependencies(Container $container): Container - { - $container = parent::provideCommunicationLayerDependencies($container); - - $container = $this->addSalesReturnFacade($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - public function addSalesReturnFacade(Container $container): Container - { - $container->set(static::FACADE_SALES_RETURN, function (Container $container) { - return $container->getLocator()->salesReturn()->facade(); - }); - - return $container; - } -} -``` - -
- -
-src/Pyz/Zed/Oms/OmsDependencyProvider.php - -```php -extendCommandPlugins($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendCommandPlugins(Container $container): Container - { - $container->extend(static::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection->add(new ReturnMerchantOrderItemCommandPlugin(), 'MerchantOms/ReturnOrderItem'); - - return $commandCollection; - }); - - return $container; - } -} -``` - -
- - -
-src/Pyz/Zed/MerchantOms/Communication/MerchantOmsCommunicationFactory.php - -```php -getProvidedDependency(MerchantOmsDependencyProvider::FACADE_SALES_RETURN); - } -} -``` - -
- -{% info_block warningBox "Verification" %} - - - -1. To verify `MerchantReturnPreCreatePlugin`, make sure that when you create a return for merchant order items, the row in `spy_sales_return`, which identifies the new return, has the `spy_sales_return.merchant_reference` field populated. -2. To verify `MerchantReturnCreateRequestValidatorPlugin`, make sure that you can't create a return for items from different merchants. -3. To verify `MerchantReturnExpanderPlugin`, make sure that you can see merchant order references on the return details page. - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - - - -Make sure that when you create and process a return for merchant order items, its statuses are synced between state machines in the following way: - -| Marketplace SM | Default Merchant SM | Main Merchant SM -| -------- | ------------------- | ---------- | -| Used by Operator | Used by 3rd-party Merchant | Used by Main Merchant -| start-return (can be started by entering in the Return Flow, it is not manually executable as a button) --> waiting for return | start-return (can be started by entering in the Return Flow, it is not manually executable as a button) --> waiting for return | start-return (can be started by entering in the Return Flow, it is not manually executable as a button) --> waiting for return -| execute return --> returned | execute return (manually executable) --> returned | execute return (manually executable) --> returned -| refund --> refunded | refund (manually executable) --> refunded | refund (manually executable) --> refunded -| cancel return --> return canceled | cancel return (manually executable) --> return canceled | cancel return (manually executable) --> return canceled -| ship return --> shipped to customer | ship return (manually executable) --> shipped to customer | ship return (manually executable) --> shipped to customer -| deliver return --> delivered | deliver return (manually executable) --> delivered | deliver return (manually executable) --> delivered - -{% endinfo_block %} - -
-src/Pyz/Zed/SalesReturnGui/SalesReturnGuiDependencyProvider.php - -```php - - */ - protected function getReturnCreateTemplatePlugins(): array - { - return [ - new MerchantReturnCreateTemplatePlugin(), - ]; - } -} - -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure when you open any order on `http://backoffice.de.spryker.local/sales-return-gui` containing products from different merchants, you see the message: "You can only return products from one merchant at a time". - -{% endinfo_block %} - -Add config for the `SalesReturn`: - -
-src/Pyz/Zed/SalesReturn/SalesReturnConfig.php - -```php - - -### 6) Configure navigation -Add marketplace section to `navigation.xml`: - -**config/Zed/navigation.xml** - -```xml - - - - - - - My Returns - merchant-sales-return-merchant-user-gui - index - index - 1 - - - - - - - - Returns - sales-return-gui - index - index - 1 - - - - -``` - -Execute the following command: -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the navigation menu of the Back Office, you can see the menu item **Returns** in the **Marketplace** section and **My Returns** in the **Sales** section. - -{% endinfo_block %} - - -## Install feature frontend - -Follow the steps below to install the Marketplace return management feature frontend. - -### 1) Install required modules using Сomposer - - - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-return-management:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - - - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------- | ------------------- | -| MerchantSalesReturnWidget | spryker-shop/merchant-sales-return-widget | - -{% endinfo_block %} - -### 2) Set up widgets - - - -Set up widgets as follows: - -1. Register the following plugins to enable widgets: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --------------- | -------------- | ------ | -------------- | -| MerchantSalesReturnCreateFormWidgetCacheKeyGeneratorStrategyPlugin | Disables widget cache for for the `MerchantSalesReturnCreateFormWidget`. | | SprykerShop\Yves\MerchantSalesReturnWidget\Plugin | -| MerchantSalesReturnCreateFormWidget | Provides "Create Return" only with the items of one merchant order at a time and only for the returnable items. | | SprykerShop\Yves\MerchantSalesReturnWidget\Widget | - - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantSalesReturnCreateFormWidget::class, - ]; - } - /** - * @return array<\SprykerShop\Yves\ShopApplicationExtension\Dependency\Plugin\WidgetCacheKeyGeneratorStrategyPluginInterface> - */ - protected function getWidgetCacheKeyGeneratorStrategyPlugins(): array - { - return [ - new MerchantSalesReturnCreateFormWidgetCacheKeyGeneratorStrategyPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - - - -Make sure that the following widgets have been registered by adding the respective code snippets to a Twig template: - -| WIDGET | VERIFICATION | -| ---------------- | ----------------- | -| MerchantSalesReturnCreateFormWidget | Go through the Return flow in the same way as now by clicking the **Create Return** button on the top of the *Order Details* page. Go to the *Create Return* page and create a return only with the items of one merchant order at a time and only for returnable items. | - -{% endinfo_block %} - -2. Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| - | - | - | -| Marketplace Return Management API | | [Glue API: Marketplace Return Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-return-management-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-cart-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-cart-feature-integration.md deleted file mode 100644 index bb90747d859..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-cart-feature-integration.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Marketplace Shipment + Cart feature integration -description: This document describes the process how to integrate Marketplace Shipment feature into your project -last_updated: Jun 25, 2021 -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Shipment + Cart feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Shipment + Cart feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Shipment | {{page.version}} | [Marketplace Shipment feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-feature-integration.html) | -| Cart | {{page.version}} | [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantShipmentItemExpanderPlugin | Expands Cart items with merchant shipment | None | Spryker\Zed\MerchantShipment\Communication\Plugin\Cart | -| MerchantShipmentQuoteExpanderPlugin | Expands Quote items with merchant shipment | None | Spryker\Zed\MerchantShipment\Communication\Plugin\Quote | - -**src/Pyz/Zed/Cart/CartDependencyProvider.php** - -```php - - */ - protected function getExpanderPlugins(Container $container): array - { - return [ - new MerchantShipmentItemExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/Quote/QuoteDependencyProvider.php** - -```php - - */ - protected function getQuoteExpanderPlugins(): array - { - return [ - new MerchantShipmentQuoteExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Place an order and check that items are grouped by merchant shipment in backoffice. - -Make sure that merchant sold items have a merchant reference attached to their selected shipment. - -Make sure that correct merchant reference is saved in `spy_sales_shipment`. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-checkout-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-checkout-feature-integration.md deleted file mode 100644 index 14e8084b2cc..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-checkout-feature-integration.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Marketplace Shipment + Checkout feature integration -description: This document describes the process how to integrate Marketplace Shipment + Checkout feature into your project -last_updated: Jul 05, 2021 -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Shipment + Checkout feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Shipment + Checkout feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ------ | -----------| -| Marketplace Shipment | {{page.version}} | [Marketplace Shipment feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-feature-integration.html) | -| Checkout | {{page.version}} | [Checkout feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/checkout-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------ | ----------- | ----- | ------------ | -| MerchantShipmentCheckoutPageStepEnginePreRenderPlugin | Copies all item merchant references to their attached shipment merchant reference before rendering checkout steps. | | Spryker\Yves\MerchantShipment\Plugin\CheckoutPage | - -
-src/Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php - -```php - - */ - protected function getCheckoutPageStepEnginePreRenderPlugins(): array - { - return [ - new MerchantShipmentCheckoutPageStepEnginePreRenderPlugin(), - ]; - } -} -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that during the checkout steps, items and their shipments have the same merchant reference attached to them. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-customer-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-customer-feature-integration.md deleted file mode 100644 index ee91a3276d8..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-customer-feature-integration.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Marketplace Shipment + Customer feature integration -last_updated: Jul 06, 2021 -description: This document describes the process how to integrate Marketplace Shipment + Customer feature into your project -tags: -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Shipment + Customer feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Shipment + Customer feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ------ | -----------| -| Marketplace Shipment | {{page.version}} | [Marketplace Shipment feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-feature-integration.html) | -| Customer | {{page.version}} | [Customer account management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/customer-account-management-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ------------ | ----------- | ----- | ------------ | -| MerchantShipmentCheckoutAddressStepPreGroupItemsByShipmentPlugin | Sets shipment merchant reference in the initial checkout step to avoid wrong grouping by merchant reference. | | Spryker\Yves\MerchantShipment\Plugin\CustomerPage| - -
-src/Pyz/Yves/CustomerPage/CustomerPageDependencyProvider.php - -```php - - */ - protected function getCheckoutAddressStepPreGroupItemsByShipmentPlugins(): array - { - return [ - new MerchantShipmentCheckoutAddressStepPreGroupItemsByShipmentPlugin(), - ]; - } -} -``` - -
- -{% info_block warningBox "Verification" %} - -Make sure that during the checkout steps, items and their shipments have the same merchant reference attached to them. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-feature-integration.md deleted file mode 100644 index 89690f60458..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-shipment-feature-integration.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Marketplace Shipment feature integration -last_updated: Jul 05, 2021 -description: This document describes the process how to integrate Marketplace Shipment feature into your project -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Shipment feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Marketplace Shipment feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Merchant | {{page.version}} | [Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Shipment | {{page.version}} | [Shipment feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shipment-feature-integration.html) | - - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-shipment:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantShipment | vendor/spryker/merchant-shipment | -| MerchantShipmentGui | vendor/spryker/merchant-shipment-gui | - -{% endinfo_block %} - -### 2) Set up configuration - -Add the following configuration to your project: - -| CONFIGURATION | SPECIFICATION | NAMESPACE | -|-|-|-| -| ShipmentConfig::getShipmentHashFields() | Used to group items by shipment using merchant reference. | \Pyz\Service\Shipment | - -**src/Pyz/Service/Shipment/ShipmentConfig.php** - -```php - - */ - public function getShipmentHashFields(): array - { - return array_merge(parent::getShipmentHashFields(), [ShipmentTransfer::MERCHANT_REFERENCE]); - } -} -``` - -{% info_block warningBox "Verification" %} - -Place an order and check that items are grouped by merchant shipment in backoffice. - -{% endinfo_block %} - -### 3) Set up the database schema and transfer definitions - -Apply the database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -|-|-|-| -| spy_sales_shipment.merchant_reference | column | created | - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| MerchantShipmentCriteria | class | created | src/Generated/Shared/Transfer/MerchantShipmentCriteria | -| Shipment.merchantReference | property | created | src/Generated/Shared/Transfer/ShipmentTransfer | - -{% endinfo_block %} - -### 4) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| MerchantShipmentOrderItemTemplatePlugin | Shows merchant shipment in shipment section of the ShipmentGui::SalesController | | Spryker\Zed\MerchantShipmentGui\Communication\ShipmentGui | - -**src/Pyz/Zed/ShipmentGui/ShipmentGuiDependencyProvider.php** - -```php - - */ - protected function getShipmentOrderItemTemplatePlugins(): array - { - return [ - new MerchantShipmentOrderItemTemplatePlugin(), - ]; - } -} -``` - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE| INTEGRATION GUIDE | -|-|-|-| -| Marketplace Shipment + Cart | | [Marketplace Shipment + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-cart-feature-integration.html) | -| Marketplace Shipment + Checkout | | [Marketplace Shipment + Checkout feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-checkout-feature-integration.html) | -| Marketplace Shipment + Customer | | [Marketplace Shipment + Customer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-customer-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-wishlist-feature-integration.md deleted file mode 100644 index 1ead2db9175..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/marketplace-wishlist-feature-integration.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Marketplace Wishlist feature integration -last_updated: Jul 05, 2021 -Description: This document describes the process how to integrate the Marketplace wishlist feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Marketplace Wishlist feature into a Spryker project. - - -## Install feature core - -Follow the steps below to install the Marketplace Wishlist feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ------- | ---------- | -| Spryker Core | {{page.version}} | [Spryker Core Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant Feature Integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | -| Marketplace Product + Marketplace Product Offer | {{page.version}} | [Marketplace Product + Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-marketplace-product-offer-feature-integration.html) | - - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/marketplace-wishlist:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| MerchantProductOfferWishlist | vendor/spryker/merchant-product-offer-wishlist | -| MerchantProductWishlist | vendor/spryker/merchant-product-offer-wishlist | - -{% endinfo_block %} - - -### 2) Set up database schema and transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -|-|-|-| -| spy_wishlist_item.merchant_reference | column | created | -| spy_wishlist_item.product_offer_reference | column | created | - -Make sure the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| WishlistItem.productOfferReference | property | Created | src/Generated/Shared/Transfer/WishlistItemTransfer | -| WishlistItem.merchantReference | property | Created | src/Generated/Shared/Transfer/WishlistItemTransfer | -| WishlistMoveToCartRequest.productOfferReference | property | Created | src/Generated/Shared/Transfer/WishlistMoveToCartRequestTransfer | -| WishlistMoveToCartRequest.merchantReference | property | Created | src/Generated/Shared/Transfer/WishlistMoveToCartRequestTransfer | -| WishlistItemCriteria.productOfferReference | property | Created | src/Generated/Shared/Transfer/WishlistItemCriteriaTransfer | -| WishlistItemCriteria.merchantReference | property | Created | src/Generated/Shared/Transfer/WishlistItemCriteriaTransfer | - -{% endinfo_block %} - - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| WishlistProductOfferPostMoveToCartCollectionExpanderPlugin | Expands `WishlistMoveToCartRequestCollection` transfer object with not valid product offers as request items. | None | Spryker\Client\WishlistExtension\Dependency\Plugin | -| WishlistMerchantProductPostMoveToCartCollectionExpanderPlugin | Expands `WishlistMoveToCartRequestCollection` transfer object with not valid marketplace products as request items. | None | Spryker\Client\WishlistExtension\Dependency\Plugin | -| WishlistProductOfferCollectionToRemoveExpanderPlugin | Expands `WishlistItemCollectionTransfer` transfer object with product offer reference. | None | Spryker\Client\WishlistExtension\Dependency\Plugin | -| WishlistMerchantProductCollectionToRemoveExpanderPlugin | Expands `WishlistItemCollection` transfer object with merchant product wishlist items from the `WishlistMoveToCartRequestCollection` transfer object. | None | Spryker\Client\WishlistExtension\Dependency\Plugin | -| MerchantProductWishlistItemRequestExpanderPlugin | Expands `WishlistItem` transfer by provided merchant_reference in params. | None | SprykerShop\Yves\MerchantProductWidget\Plugin\WishlistPage | -| MerchantProductOfferWishlistItemRequestExpanderPlugin | Expands `WishlistItem` transfer by provided `product_offer_reference` in params. | None | SprykerShop\Yves\MerchantProductOfferWidget\Plugin\WishlistPage | -| MerchantProductWishlistItemMetaFormExpanderPlugin | Expands `WishlistItemMetaFormType` with hidden field for 'merchant_reference'. | None | SprykerShop\Yves\MerchantProductWidget\Plugin\WishlistPage | -| MerchantProductOfferWishlistItemMetaFormExpanderPlugin | Expands `WishlistItemMetaFormType` with hidden fields for `merchant_reference` and `product_offer_reference`. | None | SprykerShop\Yves\MerchantProductOfferWidget\Plugin\WishlistPage | -| WishlistMerchantProductPreAddItemPlugin | Expands `WishlistItemMetaFormType` with hidden fields for `merchant_reference` and `product_offer_reference`. | None | Spryker\Zed\MerchantProductWishlist\Communication\Plugin\Wishlist | -| WishlistProductOfferPreAddItemPlugin | Expands `WishlistItemMetaFormType` with hidden fields for `merchant_reference` and `product_offer_reference`. | None | Spryker\Zed\MerchantProductOfferWishlist\Communication\Plugin\Wishlist | - - -**src/Pyz/Client/Wishlist/WishlistDependencyProvider.php** - -```php - - */ - protected function getWishlistPostMoveToCartCollectionExpanderPlugins(): array - { - return [ - new WishlistProductOfferPostMoveToCartCollectionExpanderPlugin(), - new WishlistMerchantProductPostMoveToCartCollectionExpanderPlugin(), - ]; - } - - /** - * @return array<\Spryker\Client\WishlistExtension\Dependency\Plugin\WishlistCollectionToRemoveExpanderPluginInterface> - */ - protected function getWishlistCollectionToRemoveExpanderPlugins(): array - { - return [ - new WishlistProductOfferCollectionToRemoveExpanderPlugin(), - new WishlistMerchantProductCollectionToRemoveExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Yves/WishlistPage/WishlistPageDependencyProvider.php** - -```php - - */ - protected function getWishlistItemRequestExpanderPlugins(): array - { - return [ - new MerchantProductWishlistItemRequestExpanderPlugin(), - new MerchantProductOfferWishlistItemRequestExpanderPlugin(), - ]; - } - - /** - * @return array<\SprykerShop\Yves\WishlistPageExtension\Dependency\Plugin\WishlistItemMetaFormExpanderPluginInterface> - */ - protected function getWishlistItemMetaFormExpanderPlugins(): array - { - return [ - new MerchantProductWishlistItemMetaFormExpanderPlugin(), - new MerchantProductOfferWishlistItemMetaFormExpanderPlugin(), - ]; - } -} -``` - -```php - - */ - protected function getWishlistPreAddItemPlugins(): array - { - return [ - new WishlistMerchantProductPreAddItemPlugin(), - new WishlistProductOfferPreAddItemPlugin(), - ]; - } -} -``` - - -{% info_block warningBox "Verification" %} - -- Make sure that you can add a product offer to a wishlist and see the product offer data in there. -- Make sure that you can see the merchant information when the merchant product is added to the wishlist. -- Make sure that you can move the wishlist with the product offers to a shopping cart and vice versa. - -{% endinfo_block %} - diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-category-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-category-feature-integration.md deleted file mode 100644 index e72946e2d24..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-category-feature-integration.md +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: Merchant Category feature integration -last_updated: Mar 04, 2021 -description: This document describes the process how to integrate the Merchant Category feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Category feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Category feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ----- | ---------- | -| Spryker Core | {{page.version}} | [Spryker Core Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/merchant-category:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ----------- | ------------ | -| MerchantCategory | vendor/spryker/merchant-category | -| MerchantCategoryDataImport | vendor/spryker/merchant-category-data-import | - -{% endinfo_block %} - -## 2) Set up database schema - -Adjust the schema definition so that entity changes trigger the events: - -**src/Pyz/Zed/MerchantCategory/Persistence/Propel/Schema/spy_merchant_category.schema.xml** - -```xml - - - - - -
-
-``` - -Apply database changes and to generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify the following changes by checking your database - -| DATABASE ENTITY | TYPE | EVENT | -| --------------------- | ----- | ------- | -| spy_merchant_category | table | created | - -{% endinfo_block %} - -### 3) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| - | - | - | - | -| MerchantCategoryCriteria | object | Created | src/Generated/Shared/Transfer/MerchantCategoryCriteriaTransfer | -| MerchantCategory | object | Created | src/Generated/Shared/Transfer/MerchantCategoryTransfer | -| MerchantSearchCollection | object | Created | src/Generated/Shared/Transfer/MerchantSearchCollectionTransfer | -| MerchantSearch | object | Created | src/Generated/Shared/Transfer/MerchantSearchTransfer | -| DataImporterConfiguration | object | Created | src/Generated/Shared/Transfer/DataImporterConfigurationTransfer | - -{% endinfo_block %} - -### 4) Set up behavior - -Activate the following plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| -------------- | ----------- | ------ | ------------- | -| CategoryWritePublisherPlugin | | | Spryker\Zed\MerchantCategory\Communication\Plugin\Publisher\Category | -| MerchantCategoryMerchantExpanderPlugin | Expands MerchantTransfer with categories. | | Spryker\Zed\MerchantCategory\Communication\Plugin\Merchant | -| MerchantCategoryMerchantSearchDataExpanderPlugin | Expands merchant search data with merchant category keys. | | Spryker\Zed\MerchantCategorySearch\Communication\Plugin\MerchantSearch | -| MerchantCategoryWritePublisherPlugin | Updates merchant categories in search based on category events. | | Spryker\Zed\MerchantSearch\Communication\Plugin\Publisher\MerchantCategory | -| RemoveMerchantCategoryRelationPlugin | Removes merchant categories on category delete. | | Spryker\Zed\MerchantCategory\Communication\Plugin | - - **src/Pyz/Zed/Category/CategoryDependencyProvider.php** - -```php -|array<\Spryker\Zed\CategoryExtension\Dependency\Plugin\CategoryRelationDeletePluginInterface> - */ - protected function getRelationDeletePluginStack(): array - { - $deletePlugins = array_merge( - [ - new RemoveMerchantCategoryRelationPlugin(), - ], - parent::getRelationDeletePluginStack() - ); - return $deletePlugins; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure when you delete category that has a relation to merchant in the Back Office, there is no exception and merchant category removed as well. - -{% endinfo_block %} - -**src/Pyz/Zed/Merchant/MerchantDependencyProvider.php** - -```php - - */ - protected function getMerchantExpanderPlugins(): array - { - return [ - new MerchantCategoryMerchantExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `MerchantFacade::get()` response contains merchant categories. - -{% endinfo_block %} - -**src/Pyz/Zed/MerchantSearch/MerchantSearchDependencyProvider.php** - -``` - - */ - protected function getMerchantSearchDataExpanderPlugins(): array - { - return [ - new MerchantCategoryMerchantSearchDataExpanderPlugin(), - ]; - } -``` - -{% info_block warningBox "Verification" %} - -Make sure that the index data `http://zed.de.spryker.local/search-elasticsearch-gui/maintenance/list-indexes` contains merchant category keys for the merchants assigned to categories. - -{% endinfo_block %} - -**src/Pyz/Zed/Publisher/PublisherDependencyProvider.php** - -```php - - */ - protected function getMerchantSearchQueryExpanderPlugins(): array - { - return [ - new MerchantCategoryMerchantSearchQueryExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that `MerchantSearchClient::search()` allows filtering merchants by category keys, if an array of categoryKeys is provided as the request parameter. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-opening-hours-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-opening-hours-feature-integration.md deleted file mode 100644 index c967f9928ac..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-opening-hours-feature-integration.md +++ /dev/null @@ -1,696 +0,0 @@ ---- -title: Merchant Opening Hours feature integration -last_updated: Mar 31, 2021 -description: This document describes how to integrate the Merchant Portal Core feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Opening Hours feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Opening Hours feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| - | - | - | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/merchant-opening-hours -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: `ModuleExpected DirectoryMerchantOpeningHoursspryker/merchant-opening-hoursMerchantOpeningHoursDataImportspryker/merchant-opening-hours-data-importMerchantOpeningHoursStoragespryker/merchant-opening-hours-storageWeekdaySchedulespryker/weekday-schedule` - -{% endinfo_block %} - -### 2) Set up database schema - -Adjust the schema definition so entity changes will trigger events: - -**src/Pyz/Zed/MerchantOpeningHours/Persistence/Propel/Schema/spy_merchant_opening_hours.schema.xml** - -```xml - - - - - - - -
- - - - - -
- -
-``` - -**src/Pyz/Zed/MerchantOpeningHoursStorage/Persistence/Propel/Schema/spy_merchant_opening_hours_storage.schema.xml** - -```xml - - - - - - - -
- -
-``` - -Generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Verify the following changes have been applied by checking your database: - -| DATABASE ENTITY | TYPE | EVENT | -| ------------------------------------------ | ---- | ------ | -| spy_merchant_opening_hours_weekday_schedule | table | created | -| spy_merchant_opening_hours_date_schedule | table | created | -| spy_weekday_schedule | table | created | -| spy_date_schedule | table | created | - - -Make sure that the following changes in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ------------------- | ---- | ------ | ---------------------- | -| WeekdaySchedule | class | created | src/Generated/Shared/Transfer/WeekdayScheduleTransfer | -| DataImporterReaderConfiguration | class | created | src/Generated/Shared/Transfer/DataImporterReaderConfigurationTransfer | -| MerchantCriteria | class | created | src/Generated/Shared/Transfer/MerchantCriteriaTransfer | -| MerchantOpeningHoursStorage | class | created | src/Generated/Shared/Transfer/MerchantOpeningHoursStorageTransfer | - -{% endinfo_block %} - -### 3) Add Zed translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Configure export to Redis - -This step publishes change events to `spy_merchant_opening_hours_storage` and synchronizes the data to the storage. - -#### Set up event listeners and publishers - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| ----------- | -------------- | ------------- | ------------- | -| MerchantOpeningHoursDateScheduleWritePublisherPlugin | | | Spryker\Zed\MerchantOpeningHoursStorage\Communication\Plugin\Publisher\MerchantOpeningHours | -| MerchantOpeningHoursWeekdayScheduleWritePublisherPlugin | | | Spryker\Zed\MerchantOpeningHoursStorage\Communication\Plugin\Publisher\MerchantOpeningHours | -| MerchantOpeningHoursWritePublisherPlugin | Registers publisher that are responsible for publishing merchant opening hours entity changes to storage. | | Spryker\Zed\MerchantOpeningHoursStorage\Communication\Plugin\Publisher\MerchantOpeningHours | - -**src/Zed/Publisher/PublisherDependencyProvider.php** - -```php - - */ - protected function getProcessorMessagePlugins(Container $container) - { - return [ - MerchantOpeningHoursStorageConfig::MERCHANT_OPENING_HOURS_SYNC_STORAGE_QUEUE => new SynchronizationStorageQueueMessageProcessorPlugin(), - ]; - } -} -``` - -# Register the synchronization queue and synchronization error queue: - -**src/Pyz/Client/RabbitMq/RabbitMqConfig.php** - -```php - - */ - protected function getSynchronizationDataPlugins(): array - { - return [ - new MerchantOpeningHoursSynchronizationDataBulkPlugin(), - ]; - } -} -``` - -#### Configure synchronization pool name - -**src/Pyz/Zed/MerchantOpeningHoursStorage/MerchantOpeningHoursStorageConfig.php** - -```php - -Example expected data fragment - -```json -{ - "weekday_schedule":[ - { - "day":"MONDAY", - "time_from":"07:00:00.000000", - "time_to":"13:00:00.000000" - }, - { - "day":"MONDAY", - "time_from":"14:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"TUESDAY", - "time_from":"07:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"WEDNESDAY", - "time_from":"07:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"THURSDAY", - "time_from":"07:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"FRIDAY", - "time_from":"07:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"SATURDAY", - "time_from":"07:00:00.000000", - "time_to":"20:00:00.000000" - }, - { - "day":"SUNDAY", - "time_from":null, - "time_to":null - } - ], - "date_schedule":[ - { - "date":"2022-01-01", - "time_from":null, - "time_to":null, - "note":"merchant_weekday_schedule.new_year" - }, - { - "date":"2023-12-31", - "time_from":"10:00:00.000000", - "time_to":"17:00:00.000000", - "note":"" - } - ] -} -``` -
- -{% endinfo_block %} - -### 5) Import Merchants Opening Hours data - -Prepare your data according to your requirements using the demo data: - -
-data/import/common/common/marketplace/merchant_open_hours_date_schedule.csv - -``` -merchant_reference,date,time_from,time_to,note_glossary_key -MER000001,2022-01-01,,,merchant_weekday_schedule.new_year -MER000001,2022-04-09,,,merchant_weekday_schedule.good_friday -MER000001,2022-04-17,,,merchant_weekday_schedule.easter_sunday -MER000001,2022-04-18,,,merchant_weekday_schedule.easter_monday -MER000001,2022-05-01,,,merchant_weekday_schedule.may_day -MER000001,2022-05-26,,,merchant_weekday_schedule.ascension_of_christ -MER000001,2022-06-05,,,merchant_weekday_schedule.whit_sunday -MER000001,2022-06-06,,,merchant_weekday_schedule.whit_monday -MER000001,2022-06-16,,,merchant_weekday_schedule.corpus_christi -MER000001,2022-10-03,,,merchant_weekday_schedule.day_of_german_unity -MER000001,2022-11-01,,,merchant_weekday_schedule.all_saints_day -MER000001,2022-12-25,,,merchant_weekday_schedule.1st_christmas_day -MER000001,2022-12-26,,,merchant_weekday_schedule.2nd_christmas_day -MER000001,2023-11-27,13:00:00,18:00:00,merchant_weekday_schedule.sunday_opening -MER000001,2023-12-31,10:00:00,17:00:00, -MER000002,2022-01-01,,,merchant_weekday_schedule.new_year -MER000002,2022-04-09,,,merchant_weekday_schedule.good_friday -MER000002,2022-04-17,,,merchant_weekday_schedule.easter_sunday -MER000002,2022-04-18,,,merchant_weekday_schedule.easter_monday -MER000002,2022-05-01,,,merchant_weekday_schedule.may_day -MER000002,2022-05-26,,,merchant_weekday_schedule.ascension_of_christ -MER000002,2022-06-05,,,merchant_weekday_schedule.whit_sunday -MER000002,2022-06-06,,,merchant_weekday_schedule.whit_monday -MER000002,2022-06-16,,,merchant_weekday_schedule.corpus_christi -MER000002,2022-10-03,,,merchant_weekday_schedule.day_of_german_unity -MER000002,2022-11-01,,,merchant_weekday_schedule.all_saints_day -MER000002,2022-12-25,,,merchant_weekday_schedule.1st_christmas_day -MER000002,2022-12-26,,,merchant_weekday_schedule.2nd_christmas_day -MER000006,2022-01-01,,,merchant_weekday_schedule.new_year -MER000006,2022-04-09,,,merchant_weekday_schedule.good_friday -MER000006,2022-04-17,,,merchant_weekday_schedule.easter_sunday -MER000006,2022-04-18,,,merchant_weekday_schedule.easter_monday -MER000006,2022-05-01,,,merchant_weekday_schedule.may_day -MER000006,2022-05-26,,,merchant_weekday_schedule.ascension_of_christ -MER000006,2022-06-05,,,merchant_weekday_schedule.whit_sunday -MER000006,2022-06-06,,,merchant_weekday_schedule.whit_monday -MER000006,2022-06-16,,,merchant_weekday_schedule.corpus_christi -MER000006,2022-10-03,,,merchant_weekday_schedule.day_of_german_unity -MER000006,2022-11-01,,,merchant_weekday_schedule.all_saints_day -MER000006,2022-12-25,,,merchant_weekday_schedule.1st_christmas_day -MER000006,2022-12-26,,,merchant_weekday_schedule.2nd_christmas_day -MER000006,2023-11-27,13:00:00,18:00:00,merchant_weekday_schedule.sunday_opening -MER000006,2023-12-31,10:00:00,17:00:00, -MER000005,2022-01-01,,,merchant_weekday_schedule.new_year -MER000005,2022-04-09,,,merchant_weekday_schedule.good_friday -MER000005,2022-04-17,,,merchant_weekday_schedule.easter_sunday -MER000005,2022-04-18,,,merchant_weekday_schedule.easter_monday -MER000005,2022-05-01,,,merchant_weekday_schedule.may_day -MER000005,2022-05-26,,,merchant_weekday_schedule.ascension_of_christ -MER000005,2022-06-05,,,merchant_weekday_schedule.whit_sunday -MER000005,2022-06-06,,,merchant_weekday_schedule.whit_monday -MER000005,2022-06-16,,,merchant_weekday_schedule.corpus_christi -MER000005,2022-10-03,,,merchant_weekday_schedule.day_of_german_unity -MER000005,2022-11-01,,,merchant_weekday_schedule.all_saints_day -MER000005,2022-12-25,,,merchant_weekday_schedule.1st_christmas_day -MER000005,2022-12-26,,,merchant_weekday_schedule.2nd_christmas_day -MER000005,2023-11-27,13:00:00,18:00:00,merchant_weekday_schedule.sunday_opening -MER000005,2023-12-31,10:00:00,13:00:00, -MER000005,2023-12-31,14:00:00,17:00:00, -``` -
- -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| ------------- | -------------- | --------- | ------------ | ---------------------- | -| merchant_reference | ✓ | string | MER000005 | Merchant identifier. | -| date | ✓ | string | 2022-01-01 | Date with special opening hours | -| time_from | | string | 10:00:00 | Time start when the merchant is open on this special date. Empty means open ended | -| time_to | | string | 13:00:00 | Time end when the merchant is open on this special date. Empty means open ended | -| note | | string | merchant_weekday_schedule.day_of_german_unity | Glossary key to show a note next to special opening hours | - -**data/import/common/common/marketplace/merchant_open_hours_week_day_schedule.csv** - -``` -merchant_reference,week_day_key,time_from,time_to -MER000001,MONDAY,7:00:00,13:00:00 -MER000001,MONDAY,14:00:00,20:00:00 -MER000001,TUESDAY,7:00:00,20:00:00 -MER000001,WEDNESDAY,7:00:00,20:00:00 -MER000001,THURSDAY,7:00:00,20:00:00 -MER000001,FRIDAY,7:00:00,20:00:00 -MER000001,SATURDAY,7:00:00,20:00:00 -MER000001,SUNDAY,, -MER000002,MONDAY,8:00:00,13:00:00 -MER000002,MONDAY,14:00:00,19:00:00 -MER000002,TUESDAY,8:00:00,19:00:00 -MER000002,WEDNESDAY,8:00:00,19:00:00 -MER000002,THURSDAY,8:00:00,19:00:00 -MER000002,FRIDAY,8:00:00,19:00:00 -MER000002,SATURDAY,8:00:00,19:00:00 -MER000002,SUNDAY,, -MER000006,MONDAY,7:00:00,13:00:00 -MER000006,MONDAY,14:00:00,20:00:00 -MER000006,TUESDAY,7:00:00,20:00:00 -MER000006,WEDNESDAY,7:00:00,20:00:00 -MER000006,THURSDAY,7:00:00,20:00:00 -MER000006,FRIDAY,7:00:00,20:00:00 -MER000006,SATURDAY,7:00:00,20:00:00 -MER000006,SUNDAY,, -MER000005,MONDAY,8:00:00,13:00:00 -MER000005,MONDAY,14:00:00,19:00:00 -MER000005,TUESDAY,8:00:00,19:00:00 -MER000005,WEDNESDAY,8:00:00,19:00:00 -MER000005,THURSDAY,8:00:00,19:00:00 -MER000005,FRIDAY,8:00:00,19:00:00 -MER000005,SATURDAY,8:00:00,19:00:00 -MER000005,SUNDAY,, -``` - -| COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION | -| ----------- | ---------- | --------- | ------------ | ---------------- | -| `merchant_reference` | ✓ | string | MER000005 | Merchant identifier. | -| week_day_key | ✓ | `string` | MONDAY | Day of the week to assign opening hours to a merchant.It is an enum in database with the following values:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY. | -| `time_from` | | string | `8:00:00` | Time start when the merchant is open on this week day. Empty means open ended. | -| `time_to` | | string | `19:00:00`| Time end when the merchant is open on this week day. Empty means open ended. | - -Register the following plugins to enable data import: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| -------------------- | ----------- | ------------- | ------------ | -| MerchantOpeningHoursDateScheduleDataImportPlugin | Imports special dates opening hours into the database. | | Spryker\Zed\MerchantOpeningHoursDataImport\Communication\Plugin | -| MerchantOpeningHoursWeekdayScheduleDataImportPlugin | Imports weekly schedule opening hours into the database. | | Spryker\Zed\MerchantOpeningHoursDataImport\Communication\Plugin | - -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantOpeningHoursWidget::class, - ]; - } -} -``` - -Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following widget was registered: - -| MODULE | TEST | -| ------------- | ------------- | -| MerchantOpeningHoursWidget | Go to a merchant page on the storefront and ensure that merchant working hours are displayed. | - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -| - | - | - | -| Merchant Opening Hours API | | [Glue API: Merchant Opening Hours feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/merchant-opening-hours-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-feature-integration.md deleted file mode 100644 index eeb43b33f16..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-feature-integration.md +++ /dev/null @@ -1,397 +0,0 @@ ---- -title: Merchant Portal feature integration -last_updated: Oct 19, 2021 -description: This document describes the process how to integrate the Merchant Portal feature into a Spryker project. -draft: true -template: feature-integration-guide-template ---- - -{% info_block infoBox "Info" %} - -See [Marketplace Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html). - -{% endinfo_block %} - - -## Environment requirements - -- Node.js v12+ -- Yarn v2 (or latest Yarn v1) -- Spryker supported PHP version (7.3, 7.4) -- Host for Zed application - -## Installing frontend dependencies - -Run the following command: - -```bash -$ yarn install -``` - -## Building frontend - -Run the following command: - -```bash -$ yarn mp:build -``` - -For production - -```bash -$ yarn mp:build:production -``` - -## Installing backend - -Install the needed packages for the Merchant Portal with dependencies, see the available list [here](https://github.com/spryker/?q=merchant-portal-gui) - -| NAME | VERSION | INTEGRATION GUIDE | -| --------- | ----- | ---------- | -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Merchant Portal Core | {{page.version}} | [Marketplace Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html) | - -### Merchant Portal users - -### 1) Create users - -Create users for the Merchant Portal using Zed UI (Backoffice), or if you need them out of the box, add them into `\Pyz\Zed\User\UserConfig::getInstallerUsers()`, for example: - -**src/Pyz/Zed/User/UserConfig.php** - -```php - 'Michele', - 'lastName' => 'Nemeth', - 'password' => 'change123', - 'username' => 'michele@sony-experts.com', - ], - ]; - } -} -``` - -### 2) Connect users and merchants - -Connect users and merchants using Zed UI (Backoffice) or using the next data import. - -**data/import/common/common/marketplace/merchant.csv** - -``` - merchant_key,merchant_reference,merchant_name,registration_number,status,email,is_active,url.de_DE,url.en_US - sony-experts,MER000006,Sony Experts,HYY 134306,approved,michele@sony-experts.com,1,/de/merchant/sony-experts,/en/merchant/sony-experts -``` - -In case you don't have merchant user data import been integrated, you can find how to do it in the [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) guide. - - -**data/import/common/common/marketplace/merchant_user.csv** - -``` -merchant_key,username -sony-experts,michele@sony-experts.com -``` - -Import data: - -```bash -console data:import merchant -console data:import merchant-user -``` - -### 3) ACL adjustments. - -By default all newly created merchants and merchant users will automatically have group, role and segment with autogenerated names based on MerchantName, MerchantUserName and MerchantPortalKey. - -Adjust `AclConfig` up to your needs in order to allow Merchant Portal pages (*-merchant-portal-gui) for merchant users (optionally deny access to them for Admin roles) - -You can check the available list of packages for the Merchant Portal here https://github.com/spryker/?q=merchant-portal-gui - -**src/Pyz/Zed/Acl/AclConfig.php** - -```php -addMerchantPortalInstallerRules($installerRules); - - return $installerRules; - } - - /** - * @param array> $installerRules - * - * @return array> - */ - protected function addMerchantPortalInstallerRules(array $installerRules): array - { - $bundleNames = [ - 'dashboard-merchant-portal-gui', - 'merchant-profile-merchant-portal-gui', - 'product-merchant-portal-gui', - 'product-offer-merchant-portal-gui', - 'security-merchant-portal-gui', - 'sales-merchant-portal-gui', - 'user-merchant-portal-gui', - 'dummy-merchant-portal-gui', - ]; - - foreach ($bundleNames as $bundleName) { - $installerRules[] = [ - 'bundle' => $bundleName, - 'controller' => AclConstants::VALIDATOR_WILDCARD, - 'action' => AclConstants::VALIDATOR_WILDCARD, - 'type' => static::RULE_TYPE_DENY, - 'role' => AclConstants::ROOT_ROLE, - ]; - } - - return $installerRules; - } - - /** - * @return array - */ - public function getInstallerUsers() - { - return [ - 'michele@sony-experts.com' => [], - //this is related to existent username and will be searched into the database - ]; - } -} -``` - -Create users with ACL rules: - -```bash -console setup:init-db -``` - -#### Extending ACL entity metadata configuration. - -You can use our `AclEntityDummyProduct` module as an example of extending AclEntityMetadata configuration. - -Install the module: - -```bash -composer require spryker/acl-entity-dummy-product:"^0.2.0" --update-with-dependencies -``` - -Use `\Spryker\Zed\AclEntityDummyProduct\Communication\DummyProductAclEntityMetadataConfigExpanderPlugin` as an example of `AclEntityMetadataCollection` configuration. - -```php - - */ - protected function getAclEntityMetadataCollectionExpanderPlugins(): array - { - return [ - new DummyProductAclEntityMetadataConfigExpanderPlugin(), - ]; - } - } -``` - - -### 4) Merchant Portal Navigation Links in the Sidebar - -To configure the Merchant Portal Sidebar add installed MP GUI modules into `config/Zed/navigation.xml`. - -**config/Zed/navigation.xml** - -```xml - - - - - Merchant Dashboard - dashboard - dashboard-merchant-portal-gui - dashboard - index - - - - Profile - profile - merchant-profile-merchant-portal-gui - profile - index - - - - Offers - offers - product-offer-merchant-portal-gui - product-offers - index - - - - Create Offer - product-offer-merchant-portal-gui - product-list - index - 0 - - - - - - Orders - orders - sales-merchant-portal-gui - orders - index - - - - Products - offers - product-merchant-portal-gui - products - index - - - - Logout - logout - security-merchant-portal-gui - logout - index - - -``` - -Build navigation cache: - -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that all configured items are present in the Merchant Portal Sidebar and route you accordingly. - -Make sure that you have enabled `\Spryker\Zed\Acl\Communication\Plugin\Navigation\AclNavigationItemCollectionFilterPlugin` in `\Pyz\Zed\ZedNavigation\ZedNavigationDependencyProvider`. - -```php - - */ - protected function getNavigationItemCollectionFilterPlugins(): array - { - return [ - new AclNavigationItemCollectionFilterPlugin(), - ]; - } -} -``` -{% endinfo_block %} - -### 5) Separate Login feature setup (security firewalls). - -It requires upgrading spryker/smyfony:3.5.0 and applying some changes on the project, see [Symfony 5 integration](/docs/scos/dev/technical-enhancement-integration-guides/integrating-symfony-5.html). - -Install the required modules: - -```bash -composer remove spryker/auth spryker/auth-mail-connector spryker/auth-mail-connector-extension spryker/authentication-merchant-portal-gui -``` - -```bash -composer require spryker/security-gui:"^1.0.0" spryker/security-merchant-portal-gui:"^1.0.0" spryker/security-system-user:"^1.0.0" spryker/user-password-reset:"^1.0.0" spryker/user-password-reset-extension:"^1.0.0" spryker/user-password-reset-mail:"^1.0.0" --update-with-dependencies -``` - -Update next modules to latest minors. - -| MODULE | DIRECTORY | -| ------------- | --------------- | -| Application | vendor/spryker/application | -| MerchantUser | vendor/spryker/merchant-user | -| Security | vendor/spryker/security | -| Session | vendor/spryker/session | -| User | vendor/spryker/user | -| ZedUi | vendor/spryker/zed-ui | - -Apply changes from https://github.com/spryker-shop/suite/pull/681/files. - - -{% info_block warningBox "Verification" %} - -Go to `http://mp.de.spryker.local/security-merchant-portal-gui/login` - -The Merchant Portal should look like on the picture: - -![Merchant Portal login](https://spryker.s3.eu-central-1.amazonaws.com/docs/Migration+and+Integration/Feature+Integration+Guides/Marketplace/Merchant+Portal+feature+integration/mp-login.png) - -After login, you should be redirected to the Dashboard. The contents of the Sidebar will depend on the installed features and their configuration. - -![Merchant Portal dashboard](https://spryker.s3.eu-central-1.amazonaws.com/docs/Migration+and+Integration/Feature+Integration+Guides/Marketplace/Merchant+Portal+feature+integration/mp-dashboard.png) - -{% endinfo_block %} - -## Related features - -Integrate the following related features: - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|-----------------------------------------------------------------------------------------------------------|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Merchant Portal - Marketplace Merchant | | [Merchant Portal - Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-merchant-feature-integration.html) | -| Merchant Portal - Marketplace Product | | [Merchant Portal - Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-feature-integration.html) | -| Merchant Portal - Marketplace Order Management | | [Merchant Portal - Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-order-management-feature-integration.html) | -| Merchant Portal - Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management | | [Merchant Portal - Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-merchant-portal-product-offer-management-merchant-portal-order-management-feature-integration.html) | -| Merchant Portal - Marketplace Product + Inventory Management | | [Merchant Portal - Marketplace Product + Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-inventory-management-feature-integration.html) | -| Merchant Portal - Marketplace Product Options Management | | [Merchant Portal - Marketplace Product Options Management integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-options-management-feature-integration.html) | -| Merchant Portal - Marketplace Product + Tax | | [Merchant Portal - Marketplace Product + Tax feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-tax-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-feature-integration.md deleted file mode 100644 index a8c06b1661b..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-feature-integration.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Merchant Portal - Marketplace Merchant feature integration -last_updated: Jul 05, 2021 -description: This document describes the process how to integrate the Marketplace Merchant into the Spryker Merchant Portal. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Portal - Marketplace Merchant feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Portal - Marketplace Merchant feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| -------------------- | ------- | ------------------ | -| Marketplace Merchant Portal Core | {{page.version}} | [Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html) | -| Marketplace Merchant | {{page.version}} | [Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/merchant-profile-merchant-portal-gui:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| -------------- | --------------- | -| MerchantProfileMerchantPortalGui | vendor/spryker/merchant-profile-merchant-portal-gui | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -### 3) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` -### 4) Configure navigation - -Build navigation cache - -Execute the following command: -```bash -console navigation:build-cache -``` - -{% info_block warningBox "Verification" %} - -Make sure that the navigation menu of the Merchant Portal has the **Profile** section. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-portal-product-offer-management-merchant-portal-order-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-portal-product-offer-management-merchant-portal-order-management-feature-integration.md deleted file mode 100644 index e5de5179f6a..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-merchant-portal-product-offer-management-merchant-portal-order-management-feature-integration.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Merchant Portal - Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management feature integration -last_updated: Sep 13, 2021 -description: This integration guide provides steps on how to integrate the Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Portal - Marketplace Merchant Portal Product Offer Management + Merchant Portal Order Management feature into a Spryker project. - -## Prerequisites - -To start feature integration, install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | --------- | ------------| -| Marketplace Merchant Portal Product Offer Management | {{page.version}} | [Marketplace Merchant Portal Product Offer Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-integration.html)| -| Merchant Portal - Marketplace Order Management | {{page.version}} | [Marketplace Merchant Portal Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-order-management-feature-integration.html)| - - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --------------- | ------------ | ----------- | ------------ | -| ProductOfferMerchantOrderItemTableExpanderPlugin | Expands MerchantOrderItemTable with Merchant SKU and Product offer reference columns configuration. | | Spryker\Zed\ProductOfferMerchantPortalGui\Communication\Plugin\SalesMerchantPortalGui | - -**src/Pyz/Zed/SalesMerchantPortalGui/SalesMerchantPortalGuiDependencyProvider.php** - -```php - - */ - protected function getMerchantOrderItemTableExpanderPlugins(): array - { - return [ - new ProductOfferMerchantOrderItemTableExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the `ProductOfferMerchantOrderItemTableExpanderPlugin` is set up by opening `http://mp.mysprykershop.com/sales-merchant-portal-gui/orders`. Click on any of the orders and check that the *Merchant Reference* and *Product Offer SKU* are present. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-order-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-order-management-feature-integration.md deleted file mode 100644 index 677bbcd76de..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-order-management-feature-integration.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Merchant Portal - Marketplace Order Management feature integration -last_updated: Sep 13, 2021 -description: This integration guide provides steps on how to integrate the Marketplace Merchant Portal Order Management feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Portal - Marketplace Order Management feature into a Spryker project. - -## Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | --------- | ------------| -| Marketplace Merchant Portal Core | {{page.version}} | [Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html)| -| Marketplace Order Management | {{page.version}} | [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html)| - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/sales-merchant-portal-gui:"^1.2.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -| ------------- | --------------- | -| SalesMerchantPortalGui | vendor/spryker/sales-merchant-portal-gui | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ------------- | ---- | ------ |---------------- | -| MerchantOrderTableCriteria | class | Created | src/Generated/Shared/Transfer/MerchantOrderTableCriteriaTransfer | -| MerchantOrderItemTableCriteria | class | Created | src/Generated/Shared/Transfer/MerchantOrderItemTableCriteriaTransfer | -| MerchantOrderCounts | class | Created | src/Generated/Shared/Transfer/MerchantOrderCountsTransfer | -| MerchantOrderCollection.pagination | property | Created | src/Generated/Shared/Transfer/MerchantOrderCollectionTransfer | -| MerchantOrder.merchantOrderItemCount | property | Created | src/Generated/Shared/Transfer/MerchantOrderTransfer | -| MerchantOrderItem.product | property | Created | src/Generated/Shared/Transfer/MerchantOrderItemTransfer | -| MerchantOrderItemCollection.pagination | property | Created | src/Generated/Shared/Transfer/MerchantOrderItemCollectionTransfer | - -{% endinfo_block %} - - -### 3) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 4) Set up behavior - -Register the following plugins to enable widgets: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --------------- | -------------- | ------ | -------------- | -| OrdersMerchantDashboardCardPlugin | Adds Merchant orders card to MerchantDashboard | | Spryker\Zed\SalesMerchantPortalGui\Communication\Plugin | - -**src/Pyz/Zed/DashboardMerchantPortalGui/DashboardMerchantPortalGuiDependencyProvider.php** - -```php - - */ - protected function getProductConcreteTableExpanderPlugins(): array - { - return [ - new TotalProductAvailabilityProductConcreteTableExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure the available stock column is displayed in the ProductConcreteTable. - -{% endinfo_block %} - - -### 3) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -### 4) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-options-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-options-management-feature-integration.md deleted file mode 100644 index 7e7871306f0..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-options-management-feature-integration.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Merchant Portal - Marketplace Product Options Management integration -description: This document describes the process how to integrate the Merchant Portal — Marketplace Product Options Management into a Spryker project. -template: feature-integration-guide-template -redirect_from: - - /docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-options-management-feature-integration.html -related: - - title: Marketplace Product Options feature walkthrough - link: docs/marketplace/dev/feature-walkthroughs/page.version/marketplace-product-options-feature-walkthrough.html ---- - -This document describes how to integrate the Merchant Portal — Marketplace Product Options Management into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Portal — Marketplace Product Options Management core. - -### Prerequisites - -To start integration, integrate the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Product Options| {{page.version}} | [Marketplace Product Options feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-feature-integration.html) | -| Merchant Portal Marketplace Order Management | {{page.version}} | [Merchant Portal Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-order-management-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/product-option-merchant-portal-gui:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| ProductOptionMerchantPortalGui | vendor/spryker/product-option-merchant-portal-gui | - -{% endinfo_block %} - -### 2) Add translations - -Generate a new translation cache for Zed: - -```bash -console translator:generate-cache -``` - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|---|---|---|---| -| ProductOptionMerchantOrderItemTableExpanderPlugin | Expands `MerchantOrderItemTable` with Product options column settings and data. | None | \Spryker\Zed\ProductOptionMerchantPortalGui\Communication\Plugin\SalesMerchantPortalGui | - -**src/Pyz/Zed/SalesMerchantPortalGui/SalesMerchantPortalGuiDependencyProvider.php** - -```php - - - */ - protected function getProductConcreteTableExpanderPlugins(): array - { - return [ - new ProductOptionMerchantOrderItemTableExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that the order item table has product option column settings and displays the correct data in the `http://mp.mysprykershop.com/sales-merchant-portal-gui/item-list` - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-tax-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-tax-feature-integration.md deleted file mode 100644 index dac3ea43c7c..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-portal-marketplace-product-tax-feature-integration.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Merchant Portal - Marketplace Product + Tax feature integration -last_updated: Jan 05, 2021 -description: This integration guide provides steps on how to integrate the Merchant Portal - Marketplace Product + Tax feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Portal - Marketplace Product + Tax feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Portal - Marketplace Product + Tax feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Marketplace Product | {{page.version}} | [Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-feature-integration.html) | -| Marketplace Merchant Portal Core | {{page.version}} | [Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html) | -| Tax | {{page.version}} | [Tax feature integration](https://github.com/spryker-feature/tax) - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker/tax-merchant-portal-gui:"{{page.version}}" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules have been installed: - -| MODULE | EXPECTED DIRECTORY | -|-|-| -| TaxMerchantPortalGui | spryker/tax-merchant-portal-gui | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -|-|-|-|-| -| TaxSetCollection | class | Created | src/Generated/Shared/Transfer/TaxSetCollectionTransfer | -| TaxSet | class | Created | src/Generated/Shared/Transfer/TaxSetTransfer | - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| TaxProductAbstractFormExpanderPlugin | Expands `ProductAbstractForm` with the *Tax Set* field. | | Spryker\Zed\TaxMerchantPortalGui\Communication\Plugin\ProductMerchantPortalGui | - -**src\Pyz\Zed\ProductMerchantPortalGui\ProductMerchantPortalGuiDependencyProvider.php** - -```php - - */ - protected function getProductAbstractFormExpanderPlugins(): array - { - return [ - new TaxProductAbstractFormExpanderPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure `ProductAbstractForm` has the `TaxSet` field. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-customer-account-management-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-customer-account-management-feature-integration.md deleted file mode 100644 index 3c3fdfbd1a2..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-customer-account-management-feature-integration.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Merchant Switcher + Customer Account Management feature integration -last_updated: Jan 06, 2021 -description: This document describes the process how to integrate the Merchant Switcher + Customer Account Management feature into a Spryker project. -template: feature-integration-guide-template -related: - - title: Marketplace Order Management feature walkthrough - link: docs/marketplace/dev/feature-walkthroughs/page.version/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.html - - title: Customer Account Management feature walkthrough - link: docs/scos/dev/feature-walkthroughs/page.version/customer-account-management-feature-walkthrough/customer-account-management-feature-walkthrough.html ---- - -This document describes how to integrate the Merchant Switcher + Customer Account Management feature into a Spryker project. - -## Install feature frontend - -Follow the steps below to install the Marketplace Order Management + Customer Account Management feature frontend. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| ------------------ | ----------- | ----------| -| Merchant Switcher | {{page.version}} | [Merchant Switcher feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-switcher-feature-integration.html)| -| Customer Account Management | {{page.version}} | [Customer Account Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/customer-account-management-feature-integration.html) - -### 1) Set up the transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes were applied in transfer objects. - -| TRANSFER | TYPE | EVENT | PATH | -| ---------------- | --------- | --------- | ------------------------------- | -| ShopContext.merchantReference | attribute | created | src/Generated/Shared/Transfer/ShopContextTransfer | - -{% endinfo_block %} - -### 2) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE| -| ------------------- | ------------------ | ------------------- |------------------- | -| MerchantSwitchCartAfterCustomerAuthenticationSuccessPlugin | Sets merchant reference value to cookies if a customer's quote contains it, and the quote is not empty. | | SprykerShop\Yves\MerchantSwitcherWidget\Plugin\CustomerPage | - - - -```php - - */ - protected function getAfterCustomerAuthenticationSuccessPlugins(): array - { - return [ - new MerchantSwitchCartAfterCustomerAuthenticationSuccessPlugin(), - ]; - } -} -``` - -{% info_block warningBox "Verification" %} - -Make sure that after customers log in, their selected merchant is not changed and set correctly. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-feature-integration.md deleted file mode 100644 index 07c37047e6a..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-feature-integration.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -title: Merchant Switcher feature integration -last_updated: Jan 06, 2021 -description: This integration guide provides steps on how to integrate the Merchant Switcher feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Switcher feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Switcher feature. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -| --------------- | ---------- | --------| -| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | -| Marketplace Product Offer | {{page.version}} | [Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-feature/merchant-switcher --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -| --------------- | ------------------------ | -| MerchantSwitcher | spryker/merchant-switcher | - -{% endinfo_block %} - -### 2) Set up the transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ------------------ | --- | ---- | ------------------- | -| MerchantSwitchRequest | class | created | src/Generated/Shared/Transfer/MerchantSwitchRequestTransfer | - -{% endinfo_block %} - -## Install feature frontend - -Follow the steps below to install the Merchant Switcher feature frontend. - -### Prerequisites - -To start feature integration, overview, and install the necessary features: - -| NAME | VERSION | -| ------------ | -------- | -| Spryker Core | {{page.version}} | - -### 1) Install the required modules using Composer - -Install the required modules: - -```bash -composer require spryker-shop/merchant-switcher-widget --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -| MODULE | EXPECTED DIRECTORY | -| ----------- | -------------- | -| MerchantSwitcher | spryker/merchant-switcher | - -{% endinfo_block %} - -### 2) Set up transfer objects - -Generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following changes were applied in transfer objects: - -| TRANSFER | TYPE | EVENT | PATH | -| ----------- | ---- | ------ | ----------------------- | -| MerchantSwitchRequest | class | created | src/Generated/Shared/Transfer/MerchantSwitchRequestTransfer | - -{% endinfo_block %} - -### 2) Add translations - -Append glossary according to your configuration: - -**data/import/common/common/glossary.csv** - -```yaml -merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Due to different availability, not all products may be added to your shopping cart.,en_US -merchant_switcher.message,Wechseln von %currentMerchant% zu %newMerchant%? Aufgrund unterschiedlicher Verfügbarkeit können ggf. nicht alle Produkte in Warenkorb übernommen werden.,de_DE -merchant_switcher.message.product_is_not_available,"Product %product_name% (SKU %sku%) is not available from the selected merchant. Please remove it in order to proceed or switch the merchant.",en_US -merchant_switcher.message.product_is_not_available,"Produkt %product_name% (SKU %sku%) ist beim ausgewählten Händler nicht erhältlich. Bitte diesen Artikel entfernen, um fortzufahren oder den Händler zu wechseln.",de_DE -merchant_switcher.label,My Merchant,en_US -merchant_switcher.label,Mein Händler,de_DE -``` - -2. Import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that the configured data has been added to the `spy_glossary_key` and `spy_glossary_translation` tables in the database. - -{% endinfo_block %} - -### 3) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| --------------- | --------------- | ------------- | ------------ | -| MerchantSwitcherWidgetRouteProviderPlugin | Wires the merchant switch request route to the shop router. | | SprykerShop\Yves\MerchantSwitcherWidget\Plugin\Router | -| MerchantShopContextExpanderPlugin | Adds the merchant reference from cookie to `ShopContext`. | | SprykerShop\Yves\MerchantSwitcherWidget\Plugin\ShopApplication | - -**src/Pyz/Yves/Router/RouterDependencyProvider.php** - -```php - - */ - protected function getRouteProvider(): array - { - return [ - new MerchantSwitcherWidgetRouteProviderPlugin(), - ]; - } -} -``` - -**src/Pyz/Yves/ShopContext/ShopContextDependencyProvider.php** - -```php - - */ - protected function getShopContextExpanderPlugins(): array - { - return [ - new MerchantShopContextExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Client/SearchElasticsearch/SearchElasticsearchDependencyProvider.php** - -```php - - */ - protected function getSearchConfigExpanderPlugins(Container $container): array - { - return [ - new MerchantNameSearchConfigExpanderPlugin(), - ]; - } -} -``` - -**src/Pyz/Zed/ProductOfferGui/ProductOfferGuiDependencyProvider.php** - -```php - - */ - protected function getShopContextExpanderPlugins(): array - { - return [ - new MerchantShopContextExpanderPlugin(), - ]; - } -} -``` - -### 4) Set up widgets - -Register the following plugins to enable widgets: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -| -------------------- | -------------- | ------------- | --------------------- | -| MerchantSwitcherSelectorFormWidget | Shows a list of merchants that you can switch the shop context in between. | | SprykerShop\Yves\MerchantSwitcherWidget\Widget | - -**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** - -```php - - */ - protected function getGlobalWidgets(): array - { - return [ - MerchantSwitcherSelectorFormWidget::class, - ]; - } -} -``` - -Enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following widgets were registered: - -| MODULE | TEST | -| ------------------- | ------------------------ | -| MerchantSwitcherSelectorFormWidget | Check the top navigation and change the merchant, wait for page reload and the shop context to be changed (default selected product offers). | - -{% endinfo_block %} - -## Related features - -| FEATURE | REQUIRED FOR THE CURRENT FEATURE | INTEGRATION GUIDE | -|-------------------------------------------------|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Merchant Switcher + Customer Account Management | | [Merchant Switcher + Customer Account Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-switcher-customer-account-management-feature-integration.html) | -| Merchant Switcher + Wishlist | | [Merchant Switcher + Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-switcher-wishlist-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-wishlist-feature-integration.md b/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-wishlist-feature-integration.md deleted file mode 100644 index 16c99413e80..00000000000 --- a/docs/marketplace/dev/feature-integration-guides/202108.0/merchant-switcher-wishlist-feature-integration.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Merchant Switcher + Wishlist feature integration -last_updated: Oct 08, 2021 -description: This document describes the process how to integrate the Merchant Switcher + Wishlist feature into a Spryker project. -template: feature-integration-guide-template ---- - -This document describes how to integrate the Merchant Switcher + Wishlist feature into a Spryker project. - -## Install feature core - -Follow the steps below to install the Merchant Switcher + Wishlist feature core. - -### Prerequisites - -Install the required features: - -| NAME | VERSION | INTEGRATION GUIDE | -|-|-|-| -| Merchant Switcher | {{page.version}} | [Merchant Switcher feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-switcher-feature-integration.html)| -| Marketplace Wishlist | {{page.version}} | [Marketplace Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | - -### 1) Set up behavior - -Enable the following behaviors by registering the plugins: - -| PLUGIN | DESCRIPTION | PREREQUISITES | NAMESPACE | -|-|-|-|-| -| SingleMerchantWishlistReloadItemsPlugin | Expands `WishlistItemMetaFormType` with the hidden fields for the `merchant_reference` and the `product_offer_reference`. | | Spryker\Zed\MerchantSwitcher\Communication\Plugin\Wishlist | -| SingleMerchantWishlistItemsValidatorPlugin | Expands `WishlistItemMetaFormType` with the hidden fields for the `merchant_reference` and the `product_offer_reference`. | | Spryker\Zed\MerchantSwitcher\Communication\Plugin\Wishlist | - -```php - - */ - protected function getWishlistReloadItemsPlugins(): array - { - return [ - new SingleMerchantWishlistReloadItemsPlugin(), - ]; - } - - /** - * @return array<\Spryker\Zed\WishlistExtension\Dependency\Plugin\WishlistItemsValidatorPluginInterface> - */ - protected function getWishlistItemsValidatorPlugins(): array - { - return [ - new SingleMerchantWishlistItemsValidatorPlugin(), - ]; - } -} -``` diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-cart-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-cart-feature-walkthrough.md deleted file mode 100644 index b67a69f4a7b..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-cart-feature-walkthrough.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Marketplace Cart feature walkthrough -last_updated: Nov 1, 2021 -description: Buyers can add notes to carts of their orders. -template: feature-walkthrough-template ---- - -The *Marketplace Cart* feature lets buyers add notes to their carts, and Marketplace administrators can view these notes. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Cart Notes feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-cart-feature-overview.html) for business users. - -{% endinfo_block %} - - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Cart* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/f2665938-a482-4b43-b37a-48e8ed682b5d.png?utm_medium=live&utm_source=custom) - -| MODULE | DESCRIPTION | -|------------|----------------------------| -| [CartNote](https://github.com/spryker/cart-note) | This module provides functionality to add notes to cart and cart items, push notes from cart to order and then show them on order detail page in zed. | -| [CartNoteMerchantSalesOrderGui](https://github.com/spryker/cart-note-merchant-sales-order-gui) | CartNoteMerchantSalesOrderGui provides Zed UI interface for merchant cart note management. | - -## Related Developer documents - -| INTEGRATION GUIDES | GLUE API GUIDES | -|------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Marketplace Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-cart-feature-integration.html) | [Managing carts of registered users](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) | -| | [Managing items in carts of registered users](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-items-in-carts-of-registered-users.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-inventory-management-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-inventory-management-feature-walkthrough.md deleted file mode 100644 index 7bfd00172cf..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-inventory-management-feature-walkthrough.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Marketplace Inventory Management feature walkthrough -description: Merchants are product and service sellers in the Marketplace. -template: feature-walkthrough-template ---- - -The _Marketplace Inventory Management_ implies stock & availability management as well as multiple warehouse stock management for product offers and marketplace products. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Inventory Management feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-inventory-management-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/72767452-8b31-46fd-9c23-8d5416fd02e6.png?utm_medium=live&utm_source=confluence) - -| MODULE | DESCRIPTION | -|---|---| -| Availability | Product availability is calculated based on the current stock and amount of reserved items (items in the current open orders). The `Availability` module calculates the `ProductAbstract` and `ProductConcrete` availability, and the calculated availability is persisted. This calculations is crucial to prevent overselling.| -| AvailabilityGui | User interface module to manage the stock and availability information in the Zed Administration Interface. | -| AvailabilityStorage | Manages storage for merchant product offer. | -| AvailabilityWidget | Provides widgets that can determine a product's availability status.| -| MerchantStock | Provides data structure, facade methods and plugins for extending merchant by merchant stock data. | -| MerchantStockDataImport | Data importer for `MerchantStock`. | -| MerchantStockGui | Provides Zed UI interface for merchant stock management. | -| ProductOfferAvailability | Provides the core functionality for product offer availability features. | -| ProductOfferAvailabilityStorage | Manages storage for product offer availability data. | -| ProductOfferStock | Allows connecting product offers and their stocks. | -| ProductOfferStockDataImport | Data importer for `ProductOfferStock`. | -| ProductOfferStockGui | Zed Administrative Interface component for managing stocks for product offers. | -| Stock | Manages products stocks. It is possible to define several storage locations in which products are stored. A product can have multiple stock entries associated with it, and each of these is associated to a storage location. Stocks can be attached only to concrete products. It is also possible to define a product as never out of stock by using a corresponding flag. | -| StockDataImport | This module has demo data and importer for stock. | -| StockGui | Zed Gui for the `Stock` module. | - -## Domain model - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/7be7c0cf-b4d5-41c5-bfc3-e30b76efce31.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -|INSTALLATION GUIDES |DATA IMPORT | -|---------|---------| -| [Marketplace Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-feature-integration.html) | [File details: merchant_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-stock.csv.html) | -| [Glue API: Marketplace Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-inventory-management-feature-integration.html) | [File details: product_offer_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-stock.csv.html) | -| [Marketplace Inventory Management + Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-order-management-feature-integration.html) | [File details: combined_merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-combined-merchant-product-offer.csv.html) | -| [Marketplace Product + Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-inventory-management-feature-integration.html) || -| [Marketplace Inventory Management + Packaging Units feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-inventory-management-packaging-units-feature-integration.html) || diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-feature-walkthrough.md deleted file mode 100644 index baa7fefb03f..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-feature-walkthrough.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Marketplace Merchant feature walkthrough -description: Merchants are product and service sellers in the Marketplace. -last_updated: Nov 05, 2021 -template: feature-walkthrough-template ---- - -The *Marketplace Merchant* feature lets you create, read, and update merchants in the Marketplace. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Merchant feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) for business users. - -{% endinfo_block %} - - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the Marketplace Merchant feature: - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/42f7f5aa-2eee-4149-9b9e-50052e870946.png?utm_medium=live&utm_source=custom) - - -| MODULE | DESCRIPTION | -| --- | --- | -| [MerchantProfile](https://github.com/spryker/merchant-profile) | Provides data structure, facade methods, and plugins for extending merchant by merchant profile data. | -| [MerchantProfileDataImport](https://github.com/spryker/merchant-profile-data-import) | Importer for `MerchantProfile` data. | -| [MerchantProfileGui](https://github.com/spryker/merchant-profile-gui) | Provides Zed UI interface for merchant profile management. | -| [MerchantSearch](https://github.com/spryker/merchant-search) | Manages Elasticsearch documents for merchant entities. | -| [MerchantSearchExtension](https://github.com/spryker/merchant-search-extension) | Provides plugin interfaces to extend the `MerchantSearch` module from the other modules. | -| [MerchantStorage](https://github.com/spryker/merchant-storage) | Manages storage for merchant entities. | -| [MerchantUserGui](https://github.com/spryker/merchant-user-gui) | Provides Zed UI interface for merchant users management. | -| [MerchantPage](https://github.com/spryker-shop/merchant-page) | Contains the merchant page for the shop and its components. | -| [MerchantProfileWidget](https://github.com/spryker-shop/merchant-profile-widget) | Provides a merchant-profile molecule for introducing merchant profile information. | -| [MerchantWidget](https://github.com/spryker-shop/merchant-widget) | Provides widget to display merchant information. | -| [MerchantProfileMerchantPortalGui](https://github.com/spryker/merchant-profile-merchant-portal-gui) | Provides Zed UI interface for merchant profile management for the Merchant Portal. | -| [MerchantRestApi](https://github.com/spryker/merchants-rest-api) | Provides REST API endpoints to manage merchants. | -| [MerchantRestApiExtension](https://github.com/spryker/merchants-rest-api-extension) | Provides plugin interfaces to extend the `MerchantsRestApi` module from the other modules. | -| [Merchant](https://github.com/spryker/merchant) | Provides DB structure and facade methods to save, update, or remove merchants. | -| [MerchantUser](https://github.com/spryker/merchant-user) | Provides data structure, facade methods, and plugins for user relation to merchant. | - - -## Domain model - -The following diagram illustrates the domain model of the Marketplace Merchant feature: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/73486462-e9d3-4eb2-93ef-a5cde49cce98.png?utm_medium=live&utm_source=custom) - - -## Related Developer documents - -| INSTALLATION GUIDES | GLUE API GUIDES | DATA IMPORT | -| --- | --- | --- | -|[Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-feature-integration.html) |[Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html) | [File details: merchant.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html) | -|[Glue API: Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-merchant-feature-integration.html) | [Searching the product catalog](/docs/marketplace/dev/glue-api-guides/{{page.version}}/searching-the-product-catalog.html) | [File details: merchant_profile.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile.csv.html) | -| [Merchant Portal - Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-merchant-feature-integration.html) | [Retrieving autocomplete and search suggestions](/docs/marketplace/dev/glue-api-guides/{{page.version}}/retrieving-autocomplete-and-search-suggestions.html) | [File details: merchant_profile_address.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile-address.csv.html) | -| | [Resolving the URL of the merchant page](/docs/marketplace/dev/glue-api-guides/{{page.version}}/resolving-search-engine-friendly-urls.html) |[File details: merchant_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-stock.csv.html) | -| | | [File details: merchant_store.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-store.csv.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/gui-modules-concept.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/gui-modules-concept.md deleted file mode 100644 index 91cca1f33b9..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/gui-modules-concept.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: GUI modules concept -description: Short overview of GUI modules in Merchant Portal. -template: concept-topic-template -related: - - title: How to create a new GUI module - link: docs/marketplace/dev/howtos/how-to-create-gui-module.html ---- - -This articles provides a short overview of the GUI (graphical user interface) modules in the Merchant Portal. - -## GUI modules structure - -GUI modules have the main purpose of providing logic for the functioning of the Merchant Portal pages and components for merchant management. The Core GUI modules can be identified by the suffix `MerchantPortalGui` (`DashboardMerchantPortalGui`, `ProductOfferMerchantPortalGui`). - -Typical GUI modules include: -- Controllers for displaying Merchant Portal pages and corresponding logic (forms, data mappers). -- GUI tables and corresponding logic for configuration, and data provisioning. -- Twig templates. -- Frontend components. -- Plugins for extending existing GUI tables, and forms. -- Other GUI related logic. - -GUI modules should not contain any business logic, which should be handled by modules responsible for it. For example, `ProductOfferMerchantPortalGui` module uses `ProductOffer` module to save the product offer data). - -![GUI module relations](https://confluence-connect.gliffy.net/embed/image/58cb446e-2bd7-4e34-a9fd-6eb401917d31.png?utm_medium=live&utm_source=custom) - -## Mapping to a feature - -Merchant Portal GUI modules can be mapped to a feature in two different ways, depending on the feature's purpose: - -- As a required module listed in feature's `composer.json`, which means the module must be installed. - -{% info_block infoBox "Example" %} - -[Marketplace Merchant Portal Core feature](https://github.com/spryker-feature/marketplace-merchantportal-core): `SecurityMerchantPortalGui`, `UserMerchantPortalGui` modules. - -{% endinfo_block %} - -- As optional module, which means it should be installed as an add-on to the main feature. - -{% info_block infoBox "Example" %} - -([Marketplace Inventory Management feature](https://github.com/spryker-feature/marketplace-inventory-management): the `AvailabilityMerchantPortalGui` module. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/marketplace-merchant-portal-core-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/marketplace-merchant-portal-core-feature-walkthrough.md deleted file mode 100644 index 29eace0eb79..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/marketplace-merchant-portal-core-feature-walkthrough.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Marketplace Merchant Portal Core feature walkthrough -description: Marketplace MerchantPortal Core enables server configuration and the basic functionality of the Merchant Portal such as security login. -template: concept-topic-template ---- - -The Marketplace Merchant Portal Core enables server configuration and basic functions of the Merchant Portal application, such as security login, GUI tables, and dashboards. Merchant Portal and Back Office are separate applications with different entry points, bootstraps, and possibilities to register application plugins, configure application base URLs, debug. - -{% info_block warningBox "Note" %} - -To learn more about the Marketplace Application, see [Marketplace Application Composition](/docs/marketplace/dev/architecture-overview/marketplace-application-composition.html). - -{% endinfo_block %} - -Login and logout in the Merchant Portal are provided by the `SecurityMerchantPortalGui` module, which also provides the `MerchantUserSecurityPlugin` for extending the Merchant Portal firewall. - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the Marketplace Merchant Portal Core feature. - -![Modules relation](https://confluence-connect.gliffy.net/embed/image/2e0be237-6e7b-4488-8d4b-811707c14ea0.png?utm_medium=live&utm_source=custom) - - -### Main Marketplace MerchantPortal Core feature modules - -The following table lists the main MerchantPortal Core modules: - -| NAME | DESCRIPTION | -| -------------- | ------------------ | -| [Acl](https://github.com/spryker/acl) | Acl is part of the Store Administration. The purpose of this module is to define roles, groups, privileges, and resources to manage access privileges to Zed Administration Interface. | -| [AclEntity](https://github.com/spryker/acl-entity) | This module provides a database structure for `AclEntitySegment` and `AclEntityRule` as well as methods for managing them. | -| [AclMerchantPortal](https://github.com/spryker/acl-merchant-portal) | Acl and merchant entities are connected through this module. | -| [GuiTable](https://github.com/spryker/gui-table) | This module provides base functionality for building GuiTables. | -| [MerchantPortalApplication](https://github.com/spryker/merchant-portal-application) | This module provides basic infrastructure for the MerchantPortal modules. | -| [MerchantUser](https://github.com/spryker/merchant-user) | Merchant user module provides data structure, facade methods and plugins that let users relate to merchants. | -| [MerchantUserPasswordResetMail](https://github.com/spryker/merchant-user-password-reset-mail) | This module provides possibility to reset password for the merchant user. | -| [Navigation](https://github.com/spryker/navigation) | This module manages multiple navigation menus that can be displayed on the frontend. | -| [SecurityMerchantPortalGui](https://github.com/spryker/security-merchant-portal-gui) | This module provides security rules and authentication for merchant users. | -| [UserMerchantPortalGui](https://github.com/spryker/user-merchant-portal-gui) | This module module provides components for merchant user management. | -| [ZedUi](https://github.com/spryker/zed-ui) | This module provides base UI components for Zed application. | - -### Optional Marketplace MerchantPortal Core feature modules - -The following table lists optional MerchantPortal Core modules: - -| NAME | DESCRIPTION | -| -------------------- | --------------------- | -| [DashboardMerchantPortalGui](https://github.com/spryker/dashboard-merchant-portal-gui) | This module contains the dashboard and its related components for the Merchant Portal. | -| [DashboardMerchantPortalGuiExtension](https://github.com/spryker/dashboard-merchant-portal-gui-extension) | This module provides extension interfaces for the `DashboardMerchantPortalGui` module.| -| [MerchantUserExtension](https://github.com/spryker/merchant-user-extension) | This module provides plugin interfaces to extend `MerchantUser` module from another modules. | -| [UserMerchantPortalGuiExtension](https://github.com/spryker/user-merchant-portal-gui-extension) | This module provides plugin interfaces to extend the `UserMerchantPortalGui` module from the other modules. - -## Domain model - -The following schema illustrates the Marketplace MerchantPortal Core domain model: - -![Domain model](https://confluence-connect.gliffy.net/embed/image/2f5bae0d-8b37-45f5-ad08-06ca5c0c562d.png?utm_medium=live&utm_source=custom) - -## Gui Table - -GuiTable is a Spryker infrastructure component which displays data as tables and provides search, filtering, sorting, and various interactions with table rows. -GuiTables are widely used in the Marketplace Merchant Portal for displaying orders, offers, products etc. -GuiTable frontend component knows how to create the table itself, where to go for the data, and how to interpret the provided data based on the configuration provided. - -{% info_block warningBox "Table design" %} - -To learn more about Table design, see [Table design](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/). - -{% endinfo_block %} - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | REFERENCES | -|---------|---------|---------|--------| -| [Marketplace Merchant Portal Core feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-core-feature-integration.html) | | [File details: merchant_user.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-user.csv.html) | [GUI modules concept](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-merchant-portal-core-feature-walkthrough/gui-modules-concept.html) | -| | | | [How to create a new GUI module](/docs/marketplace/dev/howtos/how-to-create-gui-module.html) | -| | | | [How to create a new Gui table](/docs/marketplace/dev/howtos/how-to-create-gui-table.html) | -| | | | [How to extend an existing Gui table](/docs/marketplace/dev/howtos/how-to-extend-gui-table.html) | -| | | | [How to create a new Gui table filter type](/docs/marketplace/dev/howtos/how-to-add-new-guitable-filter-type.html) | -| | | | [How to extend Merchant Portal dashboard](/docs/marketplace/dev/howtos/how-to-extend-merchant-portal-dashboard.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/merchant-user-concept.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/merchant-user-concept.md deleted file mode 100644 index eab29ac7b47..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/merchant-user-concept.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Merchant User concept -description: Merchant User in Merchant Portal. -template: concept-topic-template ---- - -This document provides a short overview of Merchant User concept in the Spryker Marketplace. - -## Merchant User structure - -`MerchantUser` module is the source of users for the Merchant Portal. `MerchantUserFacade` should be used to perform all operations on users, including but not limited to: -- Create, update, delete, and disable merchant users. -- Obtaining information about existing merchant users. -- Obtaining data about the current logged in merchant user. -- Authentication of merchant users. -- Manipulation of passwords (reset, validation). - -Merchant users are activated and deactivated when their Merchant is activated or deactivated. `SyncMerchantUsersStatusMerchantPostUpdatePlugin` takes care of it. - - -## Merchant User relations - -{% info_block errorBox %} - -To avoid technical debt in the future, never use `UserFacade` directly in Merchant Portal modules. - -{% endinfo_block %} - -The following diagram illustrates merchant user relations: - -![Merchant User relations](https://confluence-connect.gliffy.net/embed/image/6a8b09b8-f7a0-4f92-8728-6bcd056c1f2e.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | REFERENCES | -|---------|---------|---------|--------| -| | |[File details: merchant_user.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-user.csv.html) |[Merchant users overview](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html)| -| | | |[Managing merchant users](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html)| -| | | |[Merchant Portal user guides](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/)| diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/persistence-acl-configuration.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/persistence-acl-configuration.md deleted file mode 100644 index 363a613971e..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-core-feature-walkthrough/persistence-acl-configuration.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Persistence ACL configuration -last_updated: Oct 20, 2021 -description: Learn how to you can configure Persistence ACL -template: concept-topic-template ---- - -Merchant Portal comes with the pre-configured [Persistence ACL](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-walkthrough.html) feature to secure sensitive data. - -By default, the feature creates and assigns a set of ACL roles to merchant users to restrict access to other merchant data in the system. - -![Module dependency graph](https://confluence-connect.gliffy.net/embed/image/15952dbf-4cef-49ee-b7fa-117d39c1c525.png?utm_medium=live&utm_source=custom) - -## Merchant and MerchantUser setup workflow -While the `Merchant` and `MerchantUser` entries are created, all the necessary ACL and Persistence ACL entities are created as well. -This ensures the correct operation of the Merchant Portal, and at the same time, protects the key merchant data. - -![New Merchant and MerchantUser sequence diagram](https://confluence-connect.gliffy.net/embed/image/54b0907f-b289-42ab-9b5c-1566959896b0.png?utm_medium=live&utm_source=custom) - -### New merchant -When a new `Merchant` entity is added to the system, a merchant-specific role is automatically created. -This role is automatically added to all merchant users, letting them operate with the merchant-specific data: `ProductOffer`, `ProductOrder`. - -### New merchant user -When a `MerchantUser` entity is added to the system, a merchant user-specific role is automatically created. -This role is needed to manage the merchant user-specific data, that is, the profile. - -The following roles are automatically added to the newly created MerchantUser: -- Merchant-specific role. -- MerchantUser-specific role. -- Product viewer for offer creation (this role is needed to create new product offers). - -## Persistence ACL configuration overview -![Configuration overview](https://confluence-connect.gliffy.net/embed/image/97d83074-7b22-4ef0-9d6f-92fdb1ac1b01.png?utm_medium=live&utm_source=custom) - -The diagram above is simplified and does not represent the entire configuration. It only reflects basic concepts. -As the diagram shows, the configuration is represented by three main composite objects: -- `ProductOffer` -- `MerchantProduct` -- `SalesOrder` - -They all inherit from `Merchant`, which is also a composite object. -Each merchant has its own data segment. Thanks to this, the merchant users have access exclusively to the data of their merchant. -You can also check some entities that are configured as publicly readable: -- `\Orm\Zed\Locale\Persistence\SpyLocale` -- `\Orm\Zed\Country\Persistence\SpyCountry` -- `\Orm\Zed\Currency\Persistence\SpyCurrency` - -See the complete configuration of the PersistenceAcl module at [AclEntityMetadataConfigExpander](https://github.com/spryker/acl-merchant-portal/blob/master/src/Spryker/Zed/AclMerchantPortal/Business/Expander/AclEntity/AclEntityMetadataConfigExpander.php) - -## How to extend the initial Persistence ACL configuration -Even though the Merchant Portal comes with the Persistence ACL configuration, which is fully ready for the full-fledged merchant operation and provides data protection, you can extend or override this configuration. To do this, implement `\Spryker\Zed\AclEntityExtension\Dependency\Plugin\AclEntityMetadataConfigExpanderPluginInterface`. -To override the rules that are created automatically when creating a merchant and a user's merchant, it is enough to override such methods as: -- `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantAclRoleEntityRules()` -- `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantUserAclRoleEntityRules()` - -### Configuration example of a new system object -Let's consider an exemplary configuration of a new system entity `\Foo\Bar\MerchantSubscriber`. - -![Configuration for new entity](https://confluence-connect.gliffy.net/embed/image/dd5b7b6e-2f65-47d8-a641-c52824b0f209.png?utm_medium=live&utm_source=custom) - -It is logical to inherit this entity from the merchant and give the merchant users the right to manage data. -This lets you restrict access to data so that only the merchant user will have access to them. - -```php -getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - MerchantSubscriber::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(MerchantSubscriber::class) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyMerchant::class) - ) - ); - - return $aclEntityMetadataConfigTransfer; - } -} -``` - -Then, grant the rights of the merchant to users to manage the new entity: - -```php -setEntity(MerchantSubscriber::class) - ->setScope(AclEntityConstants::SCOPE_INHERITED) - ->setPermissionMask(AclEntityConstants::OPERATION_MASK_CRUD); - - return $aclEntityRuleTransfers; - } -} -``` - -{% info_block warningBox "Module updates" %} - -Do not lock [spryker/acl-merchant-portal](https://github.com/spryker/acl-merchant-portal) module version and keep it up-to-date in order to receive security patches for ACL in Merchant Portal. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-management-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-management-feature-walkthrough.md deleted file mode 100644 index 5c25f4d7900..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-management-feature-walkthrough.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Marketplace Merchant Portal Product Management feature walkthrough -description: This document provides reference information about product in the Merchant Portal. -last_updated: Nov 05, 2021 -template: feature-walkthrough-template ---- - -The *Marketplace Merchant Portal Product Management* feature lets merchants manage products and their category, attributes, prices, tax sets, SEO settings, variants, stock and validity dates in the Merchant Portal. - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Merchant Portal Product Management* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/a38bb45f-0f1c-4153-8f3d-7873b3aa13af.png?utm_medium=live&utm_source=custom) - -| NAME | DESCRIPTION | -| --- | --- | -| [ProductMerchantPortalGui](https://github.com/spryker/product-merchant-portal-gui) | Provides the UI for managing marketplace products in the Merchant Portal. | - - -## Related Developer documents - -|INSTALLATION GUIDES | -|---------| -|[Marketplace Merchant Portal Product Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-offer-management-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-offer-management-feature-walkthrough.md deleted file mode 100644 index 1e3ed06498f..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-merchant-portal-product-offer-management-feature-walkthrough.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Marketplace Merchant Portal Product Offer Management feature walkthrough -description: This document provides reference information about product offers in the Merchant Portal. -template: feature-walkthrough-template ---- - -The *Marketplace Merchant Portal Product Offer Management* feature lets merchants manage product offers and their prices, stock, validity dates in the Merchant Portal. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Merchant Portal Product Offer Management feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Merchant Portal Product Offer Management* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/c7d38902-eec0-417d-94ce-31d1baf9599d.png?utm_medium=live&utm_source=custom) - -| NAME | DESCRIPTION | -| --- | --- | -| [ProductOfferMerchantPortalGui](https://github.com/spryker/product-offer-merchant-portal-gui) | Provides the UI for managing merchant product offers in the Merchant Portal. | - -## Related Developer documents - -| INSTALLATION GUIDES| -| -------------- | -| [Marketplace Merchant Portal Product Offer Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.md deleted file mode 100644 index 58e21f32fc4..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Marketplace Order Management feature walkthrough -description: The Marketplace Order Management feature lets Marketplace customers place orders. -template: feature-walkthrough-template -related: - - title: MerchantOms - link: docs/marketplace/dev/feature-walkthroughs/page.version/marketplace-order-management-feature-walkthrough/merchant-oms.html - - title: Marketplace Shipment - link: docs/marketplace/dev/feature-walkthroughs/page.version/marketplace-shipment-feature-walkthrough.html - - title: Marketplace and merchant state machines - link: docs/marketplace/user/features/page.version/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html - - title: Marketplace and merchant state machines interaction - link: docs/marketplace/user/features/page.version/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html - - title: 'How-to: Create a new MerchantOms flow' - link: docs/marketplace/dev/howtos/how-to-create-a-new-merchant-oms-flow.html ---- - - -*Marketplace Order Management* enables splitting orders into merchant orders and letting product offers be bought directly from a Storefront. -The orders are designed to be used by the Marketplace operator, while the merchant orders are always connected to a merchant. To learn more about the core Marketplace objects, see [Marketplace domain model](/docs/marketplace/dev/architecture-overview/marketplace-domain-model.html). - -By using `MerchantSalesOrderFacade::createMerchantOrderCollection()`, you can decide when to create merchant orders out of an order in your project. By default, it is created by `CreateMerchantOrdersCommandPlugin`. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Order Management](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.html) feature overview for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Order Management* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/901b201a-030b-4824-a136-ef06d258a41b.png?utm_medium=live&utm_source=confluence) - -
- -| MODULE | DESCRIPTION | -|------------|----------------------------| -| [MerchantOms](https://github.com/spryker/merchant-oms) | Provides the order management system functionality for the merchant orders. | -| [MerchantOmsDataImport](https://github.com/spryker/merchant-oms-data-import) | Data importer for the `MerchantOms`. | Backoffice UI interface for the Merchant Oms management. | -| [MerchantSalesOrder](https://github.com/spryker/merchant-sales-order) | Provides functionality for managing merchant orders. | -| [MerchantSalesOrderDataExport](https://github.com/spryker/merchant-sales-order-data-export) | Provides possibility to export data related to the merchant orders. | -| [MerchantSalesOrderMerchantUserGui](https://github.com/spryker/merchant-sales-order-merchant-user-gui) | Back Office UI for managing merchant sales orders for the Marketplace operator. | -| [MerchantSalesOrderWidget](https://github.com/spryker-shop/merchant-sales-order-widget) | Provides Merchant Order information for Yves. | -| [Oms](https://github.com/spryker/oms) | Order management system for implementing complex process flows using the state machines. | -| [OmsProductOfferReservation](https://github.com/spryker/oms-product-offer-reservation) | Provides functionality for save/update/remove reservations for the product offers. | -| [ProductOfferReservationGui](https://github.com/spryker/product-offer-reservation-gui) | Back Office UI component for managing reservations for product offers. | -| [ProductOfferSales](https://github.com/spryker/product-offer-sales) | Connects product offer and sales entities. | -| [Sales](https://github.com/spryker/sales) | Provides the order management core functionality. | -| [MerchantSalesOrderExtension](https://github.com/spryker/merchant-sales-order-extension) | Extension point for the `MerchantSalesOrder`. | -| [MerchantSalesOrderThresholdGui](https://github.com/spryker/merchant-sales-order-threshold-gui) | Provides Zed UI interface for Merchant Order threshold management. | -| [SalesMerchantPortalGui](https://github.com/spryker/sales-merchant-portal-gui) | Provides UI for managing Merchant Sales in the Merchant Portal. | -
- -## Domain model - -The following diagram illustrates the domain model of the Marketplace Order Management feature: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/041ca5e4-7738-47ac-a01b-4ed91a57662d.png?utm_medium=live&utm_source=confluence) - - -## Merchant orders in the Merchant Portal - -{% info_block warningBox “Warning” %} - -Do not build the Merchant functionality around Orders, but rather around Merchant Orders. -Make sure that Merchants do not modify the order directly, but instead use [MerchantOms](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-order-management-feature-walkthrough/merchant-oms.html) for this purpose. - -{% endinfo_block %} - -In the Merchant Portal, merchants can view and manage their `MerchantOrders`. - -The information in the Merchant Portal is limited and includes: -- Customer information -- Shipment address -- Merchant order overview -- Totals - -Merchant order uses its own totals based on order totals, restricted by the Merchant Order Item: -- refundTotal -- grandTotal -- taxTotal -- expenseTotal -- subtotal -- discountTotal -- canceledTotal - -The *merchant order total* is the sum of the totals of items of an order relating to the merchant order. - -## Related Developer documents - -| INTEGRATION GUIDES |GLUE API GUIDES |DATA IMPORT | REFERENCES | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|---------|--------| -| [Marketplace Order Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-feature-integration.html) | [Retrieving Marketplace orders](/docs/marketplace/dev/glue-api-guides/{{page.version}}/retrieving-marketplace-orders.html) | [File details: merchant_oms_process.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-oms-process.csv.html) | [MerchantOms](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-order-management-feature-walkthrough/merchant-oms.html) | -| [Marketplace Order Management + Order Threshold feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-order-management-order-threshold-feature-integration.html) | | [File details: merchant-order-status.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-order-status.csv.html) | [How-to: Creation a new MerchantOms flow](/docs/marketplace/dev/howtos/how-to-create-a-new-merchant-oms-flow.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/merchant-oms.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/merchant-oms.md deleted file mode 100644 index 39fe1dbfc78..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-order-management-feature-walkthrough/merchant-oms.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Merchant Oms -description: Merchant Oms provides a dedicated Oms flow for Merchant Orders and their Merchants. -template: concept-topic-template ---- - -Merchant Oms provides a dedicated Oms flow for Merchant Orders and their Merchants. - -Merchant Oms has no direct communication channel with the plain Oms. -The synchronization of state between an Order and a Merchant Order usually takes place by listening to events and running commands on them. - -The following diagram illustrates how Oms and Merchant Oms can interact. - -![Diagram](https://confluence-connect.gliffy.net/embed/image/b7fcab42-394b-4c0b-ae16-cf36a013addb.png?utm_medium=live&utm_source=custom) - -Additionally, the feature allows different Oms flows to be assigned to different merchants. -If you have some enterprise Merchants on your Marketplace and you want to enable different business models on your marketplace, this might be helpful. - -![Diagram](https://confluence-connect.gliffy.net/embed/image/762e6302-0a5e-43bc-87fe-cca585718bc6.png?utm_medium=live&utm_source=custom) diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-feature-walkthrough.md deleted file mode 100644 index 6c7e04ab7ef..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-feature-walkthrough.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Marketplace Product feature walkthrough -description: A Marketplace Product feature adds merchant information to the product that a merchant sells. -template: feature-walkthrough-template ---- - -The *Marketplace Product* feature provides a relation between Products and Merchants. -`MerchantProductAbstract` is a database table used to store data with the Product and Merchant relations. The [Product features work as in the Spryker Commerce OS](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-feature-overview.html). -However, on the Storefront, there are additional plugins and widgets to support the relation between Products and Merchants. -Products are extended with the merchant's data and, when purchased, are assigned to the appropriate `MerchantOrder`. -To learn more about managing products in the Merchant Portal, see [Marketplace Merchant Portal product management](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-merchant-portal-product-management-feature-walkthrough.html). -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Product feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-product-feature-overview.html) feature overview for business users. -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Product* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/15402fef-7a49-4ff6-bdc7-9e82f2f92011.png?utm_medium=live&utm_source=confluence) -
- -| MODULE | DESCRIPTION | -|------------|----------------------------| -| [MerchantProduct](https://github.com/spryker/merchant-product) | Provides connection between the product and merchant entities. | -| [MerchantProductDataImport](https://github.com/spryker/merchant-product-data-import) | Imports relations between the products and the merchants from the CSV file. | -| [ProductMerchantPortalGui](https://github.com/spryker/product-merchant-portal-gui) | Provides components for merchant product management. | -| [ProductMerchantPortalGuiExtension](https://github.com/spryker/product-merchant-portal-gui-extension) | Provides extension interfaces for the `ProductMerchantPortalGui` module. | -| [MerchantProductStorage](https://github.com/spryker/merchant-product-storage) | Manages the storage for the merchant product abstract. | -| [MerchantProductWidget](https://github.com/spryker-shop/merchant-product-widget) | Provides the merchant product abstract information. | -| [Product](https://github.com/spryker/product) | Provides the base infrastructure and CRUD operations to handle the abstract and concrete products. | -| [MerchantProductsRestApi](https://github.com/spryker/merchant-products-rest-api) | Provides REST API endpoints to manage the marketplace products. | -| [CartsRestApiExtension](https://github.com/spryker/carts-rest-api-extension) | Provides plugin interfaces used by the `CartsRestApi` module. | - -
- -## Domain model - -The following schema illustrates the Marketplace Product domain model: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/80809f75-1f94-4f19-9cfd-e39235026e89.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | REFERENCES | -|---------|---------|---------|--------| -| [Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-feature-integration.html) | [Retrieve abstract products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/abstract-products/retrieving-abstract-products.html) | [File details: merchant-product.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product.csv.html) | -| [Glue API: Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-feature-integration.html) | [Retrieve concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) | [File details: product_price.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-price.csv.html) | -| [Marketplace Product + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-cart-feature-integration.html) | [Retrieve abstract product lists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/content-items/retrieving-abstract-products-in-abstract-product-lists.html) | | -| [Marketplace Product + Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-marketplace-product-offer-feature-integration.html) | | | -| [Marketplace Product + Inventory Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-inventory-management-feature-integration.html) | | | -| [Merchant Portal - Marketplace Product feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-feature-integration.html) | | | -| [Merchant Portal - Marketplace Product + Tax feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-tax-feature-integration.html) | | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.md deleted file mode 100644 index d823f42a2cb..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Marketplace Product Offer feature walkthrough -last_updated: Apr 23, 2021 -description: Product Offer is created when a merchant wants to sell products already available on the Marketplace. -template: feature-walkthrough-template -redirect_from: /docs/marketplace/dev/feature-walkthroughs/202204.0/marketplace-product-offer-feature-walkthrough/rendering-merchant-product-offers-on-the-storefront.html ---- - -The *Marketplace Product Offer* entity is created when multiple merchants sell the same product on the Marketplace. The product offer is a variation of a concrete product with its own specific price (and volume price) and stock. It can be “owned” by any entity, however, in a B2C or B2B Marketplace, it is owned by a [merchant](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-merchant-feature-walkthrough.html). - -The Marketplace product offer has its own validity dates and its own availability calculation based on its reservations. - -The product offer re-uses and extends concrete product features. All product-related data is stored and processed as concrete products. -All offer-related data is stored in a separate entity and linked to a concrete product. - -The Marketplace Product Offer feature contains both merchant product offer and product offer concepts. Merchant product offer extends product offer by adding a pointer to a merchant. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Product Offer feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the Marketplace Product Offer feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/73bc50f6-4822-485c-bd0e-d19646a761f3.png?utm_medium=live&utm_source=custom) - -The following table lists the main modules of the Marketplace Product Offer feature. - -| NAME | DESCRIPTION | -| -------------------- | ---------- | -| [MerchantProductOffer](https://github.com/spryker/merchant-product-offer) | Provides a collection of product offers by request. Extends `ProductOffer` with the merchant information. Used by `MerchantSwitcher` for enabling the merchant functionality. | -| [ProductOffer](https://github.com/spryker/product-offer) | Provides the main create-read-update product offer functionality. | -| [ProductOfferValidity](https://github.com/spryker/product-offer-validity) | Defines validity period for an offer. | -| [Shop.MerchantProductOfferWidget](https://github.com/spryker-shop/merchant-product-offer-widget) | Provides merchant product offer information for the `spryker-shop`. | - -## Domain model - -The following schema illustrates the domain model of the Marketplace Product Offer feature: - -![Domain model](https://confluence-connect.gliffy.net/embed/image/681c5f0c-4a17-4255-9033-7777a6127ce0.png?utm_medium=live&utm_source=custom) - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | HOW-TO GUIDES |REFERENCES | -|---------|---------|---------|---------|---------| -|[Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-feature-integration.html) | [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html) | [File details: combined_merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-combined-merchant-product-offer.csv.html) |[Rendering merchant product offers on the Storefront](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/rendering-product-offers-on-the-storefront.html) | [Product offer in the Back Office](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/product-offer-in-the-back-office.html) | -|[Marketplace Product Offer + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-cart-feature-integration.html) | [Retrieving product offers for a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html) |[File details: merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer.csv.html) | | [Product offer storage](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/product-offer-storage.html) | -|[Marketplace Product Offer + Checkout feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-checkout-feature-integration.html) | | [File details: product_offer_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-stock.csv.html) | |[Product Offer store relation](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/product-offer-store-relation.html) | -|[Marketplace Merchant Portal Product Offer Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-integration.html) | | [File details: product_offer_validity.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-validity.csv.html) | |[Product Offer validity dates](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/product-offer-validity-dates.html) | -|[Glue API: Marketplace Product Offer integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) | | [File details: merchant_product_offer_store.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer-store.csv.html) | | | -|[Glue API: Marketplace Product Offer + Wishlist integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-wishlist-feature-integration.html) | | | | | -|[Glue API: Marketplace Product Offer + Cart integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-cart-feature-integration.html) | | | | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-in-the-back-office.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-in-the-back-office.md deleted file mode 100644 index 052b2acca5f..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-in-the-back-office.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Product Offer in the Back Office -description: This document provides reference information about product offers in the Back Office. -template: concept-topic-template ---- - -To inject the [Marketplace Product Offer](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.html) feature into the [Back office](/docs/scos/user/features/{{page.version}}/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.html) the following modules are used: - -| MODULE | DESCRIPTION | -| -------------------- | ---------- | -| [ProductOfferGui](https://github.com/spryker/product-offer-gui) | Main module which provides CRUD functionality for product offers in the Back Office. You can extend the module by implementing interfaces from the ProductOfferGuiExtension module. | -| [ProductOfferGuiExtension](https://github.com/spryker/product-offer-gui-extension) | Provides interfaces for extending the ProductOfferGui module. | -| [MerchantProductOfferGui](https://github.com/spryker/merchant-product-offer-gui) | Extends the ProductOfferGui module, adds merchant context for managing offers in the Back office. | -| [ProductOfferValidityGui](https://github.com/spryker/product-offer-validity-gui) | Extends the ProductOfferGui module, adds the [validity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/product-offer-validity-dates.html) context for managing offers in the Back office. | - -## Module relations - -The following schema illustrates module relations in the Product Offer entity for the Back Office: - -![Module dependency graph](https://confluence-connect.gliffy.net/embed/image/5db1ea40-576c-4663-b53d-e37469be0f81.png?utm_medium=live&utm_source=custom) diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-storage.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-storage.md deleted file mode 100644 index c4c2b16049a..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-storage.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Product Offer storage -description: This document provides reference information about Marketplace Product Offer storage. -template: concept-topic-template ---- - -Product Offer and data related to it is cached to enhance performance. - -{% info_block infoBox "" %} - -For details about how to use and configure Redis as a key-value storage, see [Using and configuring Redis as a key-value storage](/docs/scos/dev/back-end-development/client/use-and-configure-redis-as-a-key-value-storage.html). - -{% endinfo_block %} - -The following modules are used for the Product Offer storage: - -| MODULE | DESCRIPTION | -| -------------------- | ---------- | -| [MerchantProductOfferStorage](https://github.com/spryker/merchant-product-offer-storage) | Provides entity listeners and operates data caching according to the entity changes | -| [MerchantProductOfferStorageExtension](https://github.com/spryker/merchant-product-offer-storage-extension) | Provides interfaces for extending the data caching. | - - -{% info_block infoBox "" %} - -For details about how to use Client, use `Client` of the `MerchantProductOfferStorage` module for getting the cached data, see [Client](/docs/scos/dev/back-end-development/client/client.html). - -{% endinfo_block %} - -## Module relations - -The following schema illustrates module relations in the Product Offer storage entity: - -![Module dependency graph](https://confluence-connect.gliffy.net/embed/image/088f0f24-b61d-40e0-a402-876fb48915b6.png?utm_medium=live&utm_source=custom) diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-store-relation.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-store-relation.md deleted file mode 100644 index 372452ec253..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-store-relation.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Product Offer store relation -description: This document provides reference information about Marketplace Product Offer relation with stores in the Spryker Marketplace. -template: concept-topic-template ---- - -Product offer has the many-to-many relation with stores. It means that the same offer can be available in multiple stores at the same time. -The store data is cachable. - -## Module dependency graph - -The following schema illustrates module relations between the Product Offer and Store entities: - -![Module dependency graph](https://confluence-connect.gliffy.net/embed/image/a3cc640e-19f7-4208-aa82-3319450449b1.png?utm_medium=live&utm_source=custom) - - -## Domain model - -The following schema illustrates the Store-Product Offer domain model: - -![Domain model](https://confluence-connect.gliffy.net/embed/image/1448089c-f0c4-4dcb-86e8-bf2f2421c51d.png?utm_medium=live&utm_source=custom) - - diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-validity-dates.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-validity-dates.md deleted file mode 100644 index 2319930208f..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/product-offer-validity-dates.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Product Offer validity dates -description: This document provides reference information about Marketplace Product Offer validity dates in the Spryker Marketplace. -template: concept-topic-template ---- - -Validity dates define the date range when a product offer is active. The Validity Dates entity manipulates the product offer activity field (`spy_product_offer.is_active`), -activating and deactivating it based on the validity date range. - -To update the product offer activity by validity dates data, run: - -```bash -console product-offer:check-validity -``` - -## Module relations - -The following schema illustrates module relations in the Product Offer Validity entity: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/c49ca6db-3655-4d86-bdb1-ed05d2e1e721.png?utm_medium=live&utm_source=custom) - - -## Domain model -The following schema illustrates the ProductOffer-ProductOfferValidity domain model: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/b20c2abe-77c4-4c33-b361-48034e64dc7b.png?utm_medium=live&utm_source=custom) - -## Validity data import - -You can import the product offer validity data from the[product_offer_validity.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-product-offer-validity.csv.html) file by running - -```bash -data:import product-offer-validity -``` - diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/rendering-product-offers-on-the-storefront.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/rendering-product-offers-on-the-storefront.md deleted file mode 100644 index 334ab702c86..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-feature-walkthrough/rendering-product-offers-on-the-storefront.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Rendering merchant product offers on the Storefront -last_updated: Nov 05, 2021 -description: Learn how to render the Merchant Product Offers on the Storefront. -template: howto-guide-template ---- - -This document explains how to render the merchant product offers on the Storefront. - -## Prerequisites - -The [MerchantProductOfferWidget](https://github.com/spryker-shop/merchant-product-offer-widget) module is responsible for rendering product offers on the Storefront. Make sure it is installed in your project before adding the product offers to the Storefront. - -## Rendering product offers on the product details page - -To render the MerchantProductOfferWidget on the product details page, add it to the `product-configurator.twig` molecule at the project and vendor levels. - -Project level path: `/src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-configurator/product-configurator.twig` - -Vendor level path: `/vendor/spryker/spryker-shop/Bundles/ProductDetailPage/src/SprykerShop/Yves/ProductDetailPage/Theme/default/components/molecules/product-configurator/product-configurator.twig` - -```twig -{% raw %} -Widget code: {% widget 'MerchantProductOfferWidget' args [data.product] only %}{% endwidget %} -{% endraw %} - -``` -## Rendering product offers on the cart page - -To render the MerchantProductOfferWidget module to the *Cart* page, add it to the `product-cart-item.twig` molecule at the vendor level: - -```twig -{% raw %} -Widget code: {% widget 'ProductOfferSoldByMerchantWidget' args [data.product] only %}{% endwidget %} -{% endraw %} -``` -## Rendering product offers on the checkout pages - -To render the MerchantProductOfferWidget module on the checkout pages, change the *summary-item* molecule at the summary (`/vendor/spryker/spryker-shop/Bundles/CheckoutPage/src/SprykerShop/Yves/CheckoutPage/Theme/default/views/summary/summary.twig`) and shipment (`/vendor/spryker/spryker-shop/Bundles/CheckoutPage/src/SprykerShop/Yves/CheckoutPage/Theme/default/views/shipment/shipment.twig`) steps to the *summery-note* molecule with the new data parameters: - -```twig -{% raw %} -{% embed molecule('summary-node', 'CheckoutPage') with { - data: { - node: item, - }, -.... -{% endembed %} -{% endraw %} - -``` - -{% info_block infoBox "Info" %} - -Keep in mind that: - -- *summary-node* already includes a new summary-product-packaging-unit-node molecule. - -- *summary-product-packaging-unit-node* molecule already includes a widget with offers. - -{% endinfo_block %} diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-prices-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-prices-feature-walkthrough.md deleted file mode 100644 index f0659e32206..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-offer-prices-feature-walkthrough.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Marketplace Product Offer Prices feature walkthrough -description: The Marketplace Product Offer Prices feature lets Marketplace merchants set prices for product offers. -template: feature-walkthrough-template ---- - -With the *Marketplace Product Offer Prices* feature, the Marketplace merchants can define custom prices for [product offers](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.html). - -Merchants can define the prices for each product offer. If no price for the product offer is specified, a default price from the concrete product is used. - -Price types (for example,gross price, net price) are assigned to each price, and for each price type, there can be from *one* to *n* product prices. Price type entities are used to differentiate between use cases: for example, we have DEFAULT and ORIGINAL prices which are used for sale pricing. You can add your own price types and use them in your app. - -A new price type can be added by importing price data. The price type in the CSV file will be added or updated. - -To learn more details about prices import file, see: [File details: product_price.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/pricing/file-details-product-price.csv.html) - -Depending on the price mode selected by a customer in Storefront, the price can have gross or net value. You can run your shop in both modes as well as select net mode for business customers, for example. - -A price is also associated with a currency and a store. - -To support product offer prices, a *PriceProductOffer* database table has been added to connect *PriceProductStore* and *ProductOffer* tables. In order to store the information about product offer prices that will be synchronized to Storage, the *ProductConcreteProductOfferPriceStorage* database table has been added. On the Storefront, this data is used to display correct prices for product offers. - -In addition, product offers support volume prices. Merchants can now enter volume prices for product offers, and customers will see the corresponding price on their Storefront based on the quantity they have chosen. The volume prices for product offers work the same as the volume prices for products. - -To learn more about prices and volume prices, see: [Prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html), [Volume Prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Product offer price](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html#product-offer-price) overview for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Product Offer Prices* feature. - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/f128877d-eb61-4d87-b1af-5f166eb45c45.png?utm_medium=live&utm_source=confluence) - -| MODULE | DESCRIPTION | -|------------|----------------------------| -| PriceProductOffer | Provides product offer price-related functionality, price persistence, current price resolvers per currency/price mode. | -| PriceProductOfferDataImport | Imports data for product offer prices. | -| PriceProductOfferGui | Backoffice UI Interface for managing prices for product offers. | -| PriceProductOfferStorage | Provides functionality to store data about product offer prices in the storage. | -| PriceProductOfferVolume | Provides functionality to handle volume prices for product offers. | -| PriceProductOfferVolumeGui | Backoffice UI Interface for managing volume prices for product offers. | -| PriceProductOfferExtension | Provides plugin interfaces for extending `PriceProductOffer` module functionality. | -| PriceProductOfferStorageExtension | Provides plugin interfaces used by Price Product Offer Storage bundle. | -| PriceProductOfferVolumesRestApi | Provides plugin(s) to add product-offer-volume-prices to the product-offer-prices. | -| ProductOfferPricesRestApi | Provides Rest API endpoints to manage product offer prices. | -| ProductOfferPricesRestApiExtension | Provides plugin interfaces for extending the `ProductOfferPricesRestApi` module. | -| Price | Handles product pricing and provides plugins for products to populate prices. | -| PriceProduct | Provides product price-related functionality, price persistence, current price resolvers per currency/price mode. | -| PriceProductStorage | Provides functionality to store data about product prices in the storage. | -| PriceProductVolume | Provides functionality to handle volume prices for products. | -| ProductOffer | Provides the core functionality for product offer features. | - -## Domain model - -The following schema illustrates the Marketplace Product Offer Prices domain model: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/0ad490bb-f21f-4e4a-b6eb-e0102a8c7b42.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | -|---------|---------|---------| -| [Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-offer-prices-feature-integration.html) | [Retrieving product offer prices](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html) | [File details: price-product-offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-price-product-offer.csv.html) | -|[Glue API: Marketplace Product Offer Prices integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) | | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-options-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-options-feature-walkthrough.md deleted file mode 100644 index 8d50aea98ee..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-product-options-feature-walkthrough.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Marketplace Product Options feature walkthrough -description: Marketplace Product Options lets merchants create their product option groups and values. -template: feature-walkthrough-template ---- - -The *Marketplace Product Options* feature lets merchants create their product option groups and values. Currently, you can [import product options](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-option-group.csv.html) where you specify the merchant reference. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Product Options feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-product-options-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Product Options* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/d8882366-b2dd-4d6c-b401-01db47a00481.png?utm_medium=live&utm_source=custom) - -| NAME | DESCRIPTION | -| --- | --- | -| [MerchantProductOption](https://github.com/spryker/merchant-product-option) | Provides merchant product option main business logic and persistence. | -| [MerchantProductOptionDataImport](https://github.com/spryker/merchant-product-option-data-import) | Provides data import functionality for merchant product options. | -| [MerchantProductOptionStorage](https://github.com/spryker/merchant-product-option-storage) | Provides publish and sync functionality for merchant product options. | -| [MerchantProductOptionGui](https://github.com/spryker/merchant-product-option-gui) | Provides backoffice UI for merchant product options management. | -| [ProductOption](https://github.com/spryker/product-option) | Provides additional layer of optional items that can be sold with the actual product. | -| [ProductOptionStorage](https://github.com/spryker/product-option-storage) | Provides publish and sync functionality for product options. | -| [Shop.ProductOptionWidget](https://github.com/spryker-shop/product-option-widget) | Provides widgets for displaying product options. | - -## Domain model - -The following schema illustrates the Marketplace Product Options domain model: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/90a0e5bc-a0d9-4cb2-a215-c5d08a786115.png?utm_medium=live&utm_source=custom) - -## Related Developer documents - -| INTEGRATION GUIDES | DATA IMPORT | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Marketplace Product Options feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-product-options-feature-integration.html) | [File details: merchant product option group](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-option-group.csv.html) | -| [Merchant Portal - Marketplace Product Options Management integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-portal-marketplace-product-options-management-feature-integration.html) | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-promotions-and-discounts-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-promotions-and-discounts-feature-walkthrough.md deleted file mode 100644 index 82c90ba10af..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-promotions-and-discounts-feature-walkthrough.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Marketplace Promotions and Discounts feature walkthrough -description: This document provides technical details about the Marketplace Promotions and Discounts feature. -template: feature-walkthrough-template ---- - -With the *Marketplace Promotions and Discounts* feature, the discounts are applied to the merchant orders. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Promotions and Discounts feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-product-options-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Promotions and Discounts* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/75358e26-725d-4f7d-8686-c72be236b88e.png?utm_medium=live&utm_source=custom) - -| NAME | DESCRIPTION | -| --- | --- | -| [DiscountMerchantSalesOrder](https://github.com/spryker/discount-merchant-sales-order) | Provides a plugin for filtering out discounts in `MerchantOrderTransfer.order` that does not belong to the current merchant order. | -| [DiscountMerchantSalesOrderGui](https://github.com/spryker/discount-merchant-sales-order) | Provides an endpoint `/discount-merchant-sales-order-gui/merchant-sales-order/list` to view the merchant order discounts list in the Back Office. | -| [MerchantSalesOrderExtension](https://github.com/spryker/merchant-sales-order-extension) | Provides plugin interfaces for the `MerchantSalesOrder` module. | -| [MerchantSalesOrder](https://github.com/spryker/merchant-sales-order) | Links merchant to sales orders. | - -## Related Developer documents - -| INSTALLATION GUIDES| -| -------------- | -| [Marketplace Promotions & Discounts feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-promotions-discounts-feature-integration.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-return-management-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-return-management-feature-walkthrough.md deleted file mode 100644 index b6a55322d56..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-return-management-feature-walkthrough.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Marketplace Return Management feature walkthrough -description: This document provides technical details about the Marketplace Return Management feature. -template: feature-walkthrough-template ---- - -With the *Marketplace Return Management* feature, marketplace merchants can manage their returns. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Return Management](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html) feature overview for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Return Management* feature. - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/e12bcdcb-8510-4ebf-80c3-0ee1c3054002.png?utm_medium=live&utm_source=confluence) - -| MODULE | DESCRIPTION | -|------------|----------------------------| -| MerchantSalesReturn | Provides functionality to link merchant to the sales returns. | -| MerchantSalesReturnGui | Provides Backoffice UI for the merchant sales returns. | -| MerchantSalesReturnMerchantUserGui | Provides Backoffice UI for managing merchant user sales returns. | -| MerchantSalesReturnWidget | Provides merchant information for the sales returns on the Storefront. | -| MerchantSalesReturnsRestApi | Provides REST API endpoints to manage merchant sales returns. | -| SalesReturn | Handles order returns. | -| SalesReturnExtension | Provides interfaces of plugins to extend `SalesReturn` module from other modules. | - -## Domain model - -The following schema illustrates the Marketplace Return Management domain model: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/9f01ed2f-2be0-4e59-afa3-e56fd8390b51.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -| INTEGRATION GUIDES | GLUE API GUIDES | -| -------------------- | -------------- | -| [Marketplace Return Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-return-management-feature-integration.html) | [Managing the returns](/docs/marketplace/dev/glue-api-guides/{{page.version}}/managing-the-returns.html) | -| [Glue API: Marketplace Return Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-return-management-feature-integration.html) | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-shipment-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-shipment-feature-walkthrough.md deleted file mode 100644 index a3ce57ef05d..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-shipment-feature-walkthrough.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Marketplace Shipment feature walkthrough -last_updated: Nov 2, 2021 -description: The Marketplace Shipment feature provides the connection between Merchant and Shipment. -template: feature-walkthrough-template ---- - -The *Marketplace Shipment* feature provides the connection between Merchant and Shipment, and works together with [marketplace orders](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.html) to split order items into several shipments based on the merchants from which they were bought. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Shipment feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-shipment-feature-overview.html) for business users. -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Shipment* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/448f4d60-ebdb-4380-bfc9-21b6c49ddf3f.png?utm_medium=live&utm_source=confluence) - -
- -| MODULE | DESCRIPTION | -|------------|----------------------------| -| [MerchantShipment](https://github.com/spryker/merchant-shipment) | Provides connection between merchant and shipment. | -| [MerchantShipmentGui](https://github.com/spryker/merchant-shipment-gui) | Module is responsible for providing the Back Office interface for merchant shipment functionality. | -| [Merchant](https://github.com/spryker/merchant) | This module provides database structure and functionality to manage Merchants. | -| [Shipment](https://github.com/spryker/shipment) | With shipment features, shipment carriers and shipment methods can be selected. In the Storefront, for example, the shipment method can be selected during checkout. Each shipment method is linked to a shipment carrier, and a shipment carrier can have zero to many shipment methods. | -| [ShipmentGui](https://github.com/spryker/shipment-gui) | The Back Office interface for shipment functionality is provided by this module. | -| [ShipmentGuiExtension](https://github.com/spryker/shipment-gui-extension) | The `ShipmentGuiExtension` module provides interfaces for plugins to extend the `ShipmentGui` module from other modules. | - -
- -## Domain model - -The following schema illustrates the Marketplace Shipment domain model: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/bc12cbec-87e4-4913-9885-e1986df6f464.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -|INSTALLATION GUIDES | -|---------| -| [Marketplace Shipment feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-feature-integration.html) | | -| [Marketplace Shipment + Cart feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-cart-feature-integration.html) | | -| [Marketplace Shipment + Customer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-customer-feature-integration.html) | | -| [Marketplace Shipment + Checkout feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-shipment-checkout-feature-integration.html) | | -| | | | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-wishlist-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-wishlist-feature-walkthrough.md deleted file mode 100644 index 6da25169e18..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/marketplace-wishlist-feature-walkthrough.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Marketplace Wishlist feature walkthrough -description: This document provides technical details about the Marketplace Wishlist feature. -template: feature-walkthrough-template ---- - -With the *Marketplace Wishlist* feature, the customers can track and save merchant offers and products they wish to purchase through the wishlist. The customers can create multiple wishlists and customize their names. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Marketplace Wishlist feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-wishlist-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Marketplace Wishlist* feature. - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/e7a2ef43-7eb8-435a-870b-d8012fe8bd07.png?utm_medium=live&utm_source=confluence) - -| MODULE | DESCRIPTION | -|------------|----------------------------| -| MerchantProductWishlist | Provides ability to work with merchant product in the wishlist. | -| MerchantProductOfferWishlist | Provides ability to work with the product offers in the wishlist. | -| MerchantProductOfferWishlistRestApi | Provides ability to manage product offers for wishlist Rest API. | -| Wishlist | Provides infrastructure and functionality to handle multiple wishlists for customer account. | -| WishlistExtension | Provides plugin interfaces for extending Wishlist module functionality. | - -## Domain model - -The following diagram illustrates the domain model of the *Marketplace Wishlist* feature: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/6d5e9f9f-f841-4877-bf65-7fdd38d6d49b.png?utm_medium=live&utm_source=confluence) - -## Related Developer documents - -| INSTALLATION GUIDES | GLUE API GUIDES | -| ------------- | -------------- | -| [Marketplace Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) | [Managing wishlists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html) -| [Glue API: Marketplace Product Offer + Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-wishlist-feature-integration.html) | [Managing wishlist items](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlist-items.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-category-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-category-feature-walkthrough.md deleted file mode 100644 index 6bccd5a064f..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-category-feature-walkthrough.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Merchant Category feature walkthrough -last_updated: Apr 23, 2021 -description: Merchant categories allows grouping merchants by categories. -template: feature-walkthrough-template ---- - -The *Merchant Category* feature allows splitting merchants into various categories in order to extend business logic of the project. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Merchant Category feature overview](/docs/marketplace/user/features/{{page.version}}/merchant-category-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/19aac040-a607-4a20-8edf-a81473e293e9.png?utm_medium=live&utm_source=custom) - -| MODULE | DESCRIPTION | -|---|---| -| [Category](https://github.com/spryker/category) | Helps you build a product organisation structure. Categories are modelled in an hierarchical structure, a tree. | -| [MerchantCategory](https://github.com/spryker/merchant-category) | Provides a connection between category and merchant entities. | -| [MerchantCategoryDataImport](https://github.com/spryker/merchant-category-data-import) | Imports relations between categories and merchants from CSV file. | -| [MerchantCategorySearch](https://github.com/spryker/merchant-category-search) | Provides plugins to extend `MerchantSearch` with categories. | - -## Domain model - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/2f9ddeb3-aefe-4511-b1d0-7936a7935c6a.png?utm_medium=live&utm_source=custom) - - -## Related Developer documents - -| INSTALLATION GUIDES | DATA IMPORT | -|---|---| -| [Merchant Category feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-category-feature-integration.html) |[File details: merchant_category.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-category.csv.html) | -| [Glue API: Merchant Category integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/merchant-category-feature-integration.html) | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-opening-hours-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-opening-hours-feature-walkthrough.md deleted file mode 100644 index 1b015630a9c..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/merchant-opening-hours-feature-walkthrough.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Merchant Opening Hours feature walkthrough -description: The Merchant Opening Hours lets you define opening hours for a merchant. -template: feature-walkthrough-template ---- - -By using the 'Merchant Opening Hours' feature, merchants can save their opening hours in the system and make them accessible to customers. A merchant may have a weekday schedule, which is an opening schedule for every day of the week, as well as date-based exceptions, such as during the holiday season when opening hours may be different. - -{% info_block warningBox "User documentation" %} - -To learn more about the feature and to find out how end users use it, see [Merchant Opening Hours feature overview](/docs/marketplace/user/features/{{page.version}}/merchant-opening-hours-feature-overview.html) for business users. - -{% endinfo_block %} - -## Module dependency graph - -The following diagram illustrates the dependencies between the modules for the *Merchant Opening Hours* feature. - -![Module Dependency Graph](https://confluence-connect.gliffy.net/embed/image/0b05a957-57a4-4422-9595-5bbe63a6a18b.png?utm_medium=live&utm_source=custom) - -| MODULE | DESCRIPTION | -|------------|----------------------------| -| MerchantOpeningHours | Provides merchants with the ability to schedule opening hours. | -| MerchantOpeningHoursDataImport | Data importer for the `MerchantOpeningHours`. | -| MerchantOpeningHoursStorage | Manages storage for merchant opening hours entities. | -| WeekdaySchedule | Configures weekdays and dates based on your schedule. | -| MerchantOpeningHoursWidget | Provides a widget to show merchant opening hours. | -| MerchantOpeningHoursRestApi | Provides REST API endpoints to manage merchant opening hours. | -| Merchant | Provides database structure and facade methods to save/update/remove merchants. | -| MerchantStorage | Manages storage for merchant entities. | - -## Domain model - -The following schema illustrates the Merchant Opening Hours domain model: - -![Domain Model](https://confluence-connect.gliffy.net/embed/image/ad57523c-52cd-4733-bfb5-9c43666ae54c.png?utm_medium=live&utm_source=custom) - - -## Related Developer documents - -|INSTALLATION GUIDES |GLUE API GUIDES |DATA IMPORT | -|---------|---------|---------| -| [Merchant Opening Hours feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/merchant-opening-hours-feature-integration.html) |[Retrieve profile information for a merchant](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#retrieve-a-merchant) | [File details: merchant_open_hours_week_day_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-week-day-schedule.csv.html) | -| [Glue API: Merchant Opening Hours integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/merchant-opening-hours-feature-integration.html) |[Retrieve merchant opening hours](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchant-opening-hours.html) | [File details: merchant_open_hours_date_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-date-schedule.csv.html) | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/execution-flow.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/execution-flow.md deleted file mode 100644 index 89b0e4a3ad9..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/execution-flow.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Execution flow -last_updated: Nov 05, 2021 -description: Performing model actions and selecting and applying rules for a query share some similarities, but they have some differences as well. A user with insufficient permissions during query execution will be forced to run a query that results in an empty collection when the system executes the query. -template: concept-topic-template ---- - -## Query processing flow - -Performing model actions and selecting and applying rules for a query share some similarities, but they have some differences as well. A user with insufficient permissions during query execution will be forced to run a query that results in an empty collection when the system executes the query. - -![Query processing flow](https://confluence-connect.gliffy.net/embed/image/9f520855-8387-4dda-a028-abe70e11611a.png?utm_medium=live&utm_source=custom) - -Persistence ACL will do the following when processing a query: - -- Identify the User Roles that have Rules for the Entity and Operation from the query. -- Filter the Query performed, based on all the rules in the Role found. - -Whenever there are multiple rules with different scopes, only those that apply to the higher priority scopes are applied. - -The priority of scope is configurable. To modify it, you should override `\Spryker\Zed\AclEntity\AclEntityConfig::getScopePriority()`. - -The default priority: - -| SCOPE | PRIORITY | -|-----|-----| -| global | 2 | -| inherited | 1 | -| segment | 0 | - -By default, rules with a global scope have the highest priority, and rules with a segment scope have the lowest priority. - -### Example of the select query - -You can check the logic of selecting rules based on the following query. - -```php -use Orm\Zed\Merchant\Persistence\Map\SpyMerchantTableMap; -use Orm\Zed\Merchant\Persistence\SpyMerchantQuery; - -$merchantQuery = SpyMerchantQuery::create()->orderBy(SpyMerchantTableMap::COL_UPDATED_AT); -$merchantCollection = $merchantQuery->find(); -``` - -`spy_acl_entity_rule` - -| id_acl_entity_rule | fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----|-----| -| 1 | null | 15 | `Orm\Zed\Country\Persistence\SpyCountry` | 1 | 0 | -| 2 | 12 | 15 | `Orm\Zed\Merchant\Persistence\SpyMerchant` | 15 | 1 | -| 3 | null | 15 | `Orm\Zed\Sales\Persistence\SpySalesOrderItem` | 7 | 2 | -| 4 | null | 15 | `Orm\Zed\Customer\Persistence\SpyCustomer` | 1 | 0 | -| 5 | null | 15 | `Orm\Zed\Merchant\Persistence\SpyMerchant` | 6 | 0 | -| 6 | 138 | 15 | `Orm\Zed\Merchant\Persistence\SpyMerchant` | 1 | 1 | - -All rules with ID `1`, `3`, `4` are filtered out since they do not belong to `Orm\Zed\Merchant\Persistence\SpyMerchant`. The rule with ID `5` is filtered out since it does not relate to query operation (query has read operation, but rule is configured for `create` and `update` actions). For the given query, only the rules with ids `2` and `6` will be considered. They both have `segment` scope. - -The Persistence ACL modifies the query so that only records that the user has access to are returned: - -Query before the Persistence ACL: -```sql -SELECT * FROM `spy_merchant` order by `updated_at`; -``` - -Query after the Persistence ACL: -```sql -SELECT `spy_merchant`.* -FROM `spy_merchant` - INNER JOIN `spy_acl_entity_segment_merchant` - ON (`spy_merchant`.`id_merchant` = `spy_acl_entity_segment_merchant`.`fk_merchant` - AND `spy_acl_entity_segment_merchant`.`fk_acl_entity_segment` IN (12, 138)) -ORDER BY `spy_merchant`.`updated_at`; -``` - -## Model action processing flow - -Model actions are generally handled the same way as queries, but there are certain differences: - -Exceptions are thrown if a user performs unauthorized actions on the Active Record model (create, update or delete). - -![Model action processing flow](https://confluence-connect.gliffy.net/embed/image/c84bb011-1c7c-45e7-84b3-f98b2fee8e08.png?utm_medium=live&utm_source=custom) - -### Example of the create action - -You can check the logic of selecting rules based on the following query. - -```php -use Orm\Zed\Product\Persistence\SpyProductAbstract; - -$productAbstractEntity = new SpyProductAbstract(); -$productAbstractEntity->setSku('006'); - -$productAbstractEntity->save(); -``` - -`spy_acl_entity_rule` - -| id_acl_entity_rule | fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----|-----| -| 1 | null | 15 | `Orm\Zed\Country\Persistence\SpyCountry` | 1 | 0 | -| 2 | 3 | 15 | `Orm\Zed\Product\Persistence\SpyProductAbstract` | 13 | 1 | -| 3 | null | 15 | `Orm\Zed\Store\Persistence\SpyStore` | 1 | 0 | -| 4 | null | 16 | `Orm\Zed\Product\Persistence\SpyProductAbstract` | 7 | 0 | - -The rules with ID `1` and `3` are filtered out since they do not belong to `Orm\Zed\Product\Persistence\SpyProductAbstract`. Because rule ID `2` does not grant permission to `create`, the rule with ID `4` will apply instead, and the creation will be allowed. - -If there were no rule with ID `4`, a `Spryker\Zed\AclEntity\Persistence\Exception\OperationNotAuthorizedException` would be thrown. diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.md deleted file mode 100644 index 12c30aac4ed..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.md +++ /dev/null @@ -1,340 +0,0 @@ ---- -title: Persistence ACL feature configuration -last_updated: Nov 05, 2021 -description: In this article, you will learn how to configure the Persistence ACL feature. -template: concept-topic-template ---- -This document describes how you can configure the [Persistence ACL feature](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-walkthrough.html). - -The Persistence ACL functionality is based on the Propel behavior. You can enable the feature in two different ways: -- [Create a connection with one or more database tables](#connect-persistence-acl-feature-to-one-or-more-database-tables). -- [Connect the feature to all database tables](#connect-persistence-acl-feature-to-all-database-tables). - -## Connect Persistence ACL feature to one or more database tables - -In the following code snippet, only SpyMerchant entity is configured to be handled by ACL. - -```xml - - - - -
-
-``` - -## Connect Persistence ACL feature to all database tables - -ACL handles all entities in the system in the following example. -When configuring ACLs in such a way, be sure to use the [Allowed entity list](#allowlist-configuration) to exclude entities that are needed to function properly. -Provide the list of entities that are needed: - -- `SpyUser` -- `SpyAclRole` -- `SpyAclGroup` -- `SpyAclRule` -- `SpyAclEntityRule` -- `SpyUrl` -- `SpyAclEntitySegment` -- `SpyAclGroupsHasRoles` -- `SpyAclUserHasGroup` - -```xml - - - - -``` - -## Persistence ACL feature configuration - -The configuration, unlike the rule, is common to the entire system. The main configuration object for the feature is `\Generated\Shared\Transfer\AclEntityMetadataConfigTransfer`. Through the plugin system, it can be extended. You just need to create a plugin and implement `\Spryker\Zed\AclEntityExtension\Dependency\Plugin\AclEntityMetadataConfigExpanderPluginInterface`. - -![Configuration entity relation diagram](https://confluence-connect.gliffy.net/embed/image/f2309504-8638-419d-abf9-783bc45c8792.png?utm_medium=live&utm_source=custom) - -### AclEntityMetadataConfigTransfer - -The properties of the `AclEntityMetadataConfigTransfer` are described in the following table. - -| PROPERTY | TYPE | DESCRIPTION | -|-----|-----|-----| -| aclEntityMetadataCollection | AclEntityMetadataCollectionTransfer | The collection of configurations for different entities.| -| aclEntityAllowList | string[] | The set of fully qualified classes that this feature does not apply to (even if the user has rules for an entity that is in the allowlist). | - -### AclEntityMetadataCollectionTransfer - -The properties of the `AclEntityMetadataCollectionTransfer` are described in the following table. - -| PROPERTY | TYPE | DESCRIPTION | -|-----|-----|-----| -| collection | AclEntityMetadataTransfer[] | The set of configurations for the models. | - -### AclEntityMetadataTransfer - -The properties of the `AclEntityMetadataTransfer` are described in the following table. - -| PROPERTY | TYPE | DESCRIPTION | -|-----|-----|-----| -| parent | AclEntityParentMetadataTransfer | This property is used to configure the inheritance. It is required for the entity which has rules with the [inherited scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.html), or for the [composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html). For more details, see [Inherited scope vs Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html). | -| entityName | string | Fully qualified class name of the configured entity (Propel Entity). | -| hasSegmentTable | bool | Sets if the configured entity supports segmentation. For more details, see [Segment scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.html) documentation. | -| defaultGlobalOperationMask | int | Sets the default binary access mask (see [Execution flow](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/execution-flow.html) documentation). | -| isSubentity | bool | Indicates whether the configured entity is the part of a composite object. For more details, see [Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html). | - -### AclEntityParentMetadataTransfer - -The properties of the `AclEntityParentMetadataTransfer` are described in the following table. - -| PROPERTY | TYPE | DESCRIPTION | -|-----|-----|-----| -| connection | \Generated\Shared\Transfer\AclEntityParentConnectionMetadata | This property is used to set up the relationship between the current class and the parent. | -| entityName | string | Fully qualified class name of the parent entity. | - -### AclEntityParentConnectionMetadataTransfer - -The properties of the `AclEntityParentConnectionMetadataTransfer` are described in the following table. - -Sometimes, foreign keys are not used to link the child and parent tables, but rather "reference columns". As a result, a `AclEntityParentConnectionMetadataTransfer` is available. - -| PROPERTY | TYPE | DESCRIPTION | -|-----|-----|-----| -| reference | string | Current class field. | -| referencedColumn | string | Parent class field. | - -## Examples of configuration - -This section provides examples of ACL configuration. - -### Basic inheritance configuration - -This section shows how you can inherit the `SpyProduct` from `SpyStore` by using the `SpyProductAbstract` and the `SpyProductAbstractStore`. - -This configuration is necessary to use the functionality of the [Inherited scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.html) rules and [Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html). - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyProduct::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyProduct::class) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyProductAbstract::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyProductAbstract::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyProductAbstract::class) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyProductAbstractStore::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyProductAbstractStore::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyProductAbstractStore::class) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyStore::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyStore::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyStore::class) - ); - - return $aclEntityMetadataConfigTransfer; - } -``` - -### The inheritance through the reference column - -In some databases, data is linked not by foreign keys but by "reference columns". -Below is an example of inheriting `SpyAvailability` from `SpyProduct` through a reference column (*sku* in this example). -Pay attention to the [AclEntityParentConnectionMetadataTransfer](#aclentityparentconnectionmetadatatransfer) property. - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyAvailability::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyAvailability::class) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyProduct::class) - ->setConnection( - (new AclEntityParentConnectionMetadataTransfer()) - ->setReference('sku') - ->setReferencedColumn('sku') - ) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyProduct::class, - (new AclEntityMetadataTransfer())->setEntityName(SpyProduct::class) - ); - - return $aclEntityMetadataConfigTransfer; - } -``` - -### Composite entity - -Below you can find an example of a [Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html) `SpyMerchant`, which consists of: -- `SpyMerchant` -- `SpyMerchantProfile` -- `SpyMerchantUser` -- `SpyMerchantStore` - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyMerchantProfile::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyMerchantProfile::class) - ->setIsSubEntity(true) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyMerchant::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyMerchantUser::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyMerchantUser::class) - ->setIsSubEntity(true) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyMerchant::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyMerchantStore::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyMerchantStore::class) - ->setIsSubEntity(true) - ->setParent( - (new AclEntityParentMetadataTransfer()) - ->setEntityName(SpyMerchant::class) - ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyMerchant::class, - (new AclEntityMetadataTransfer())->setEntityName(SpyMerchant::class) - ); - - return $aclEntityMetadataConfigTransfer; - } -``` - -### Data segmentation support - -The following is an example of the data segmentation for the `SpyMerchant`. Data segmentation is required for the [Segment scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.html) rules. - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyMerchant::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyMerchant::class) - ->setHasSegmentTable(true) - ); - - return $aclEntityMetadataConfigTransfer; - } -``` - -### Default operation mask - -The following example sets the default `Read` permissions for the `SpyCountry` and `Create + Read` permissions for the `SpyResetPassword`. - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyCountry::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyCountry::class) - ->setDefaultGlobalOperationMask(AclEntityConstants::OPERATION_MASK_READ) - ); - $aclEntityMetadataConfigTransfer->getAclEntityMetadataCollectionOrFail()->addAclEntityMetadata( - SpyResetPassword::class, - (new AclEntityMetadataTransfer()) - ->setEntityName(SpyResetPassword::class) - ->setDefaultGlobalOperationMask( - AclEntityConstants::OPERATION_MASK_CREATE | AclEntityConstants::OPERATION_MASK_READ - ) - ); - - return $aclEntityMetadataConfigTransfer; - } -``` - -### Allowlist configuration - -The following example adds all the entities required for the Persistence Acl to function correctly: - -```php - /** - * @param \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer - * - * @return \Generated\Shared\Transfer\AclEntityMetadataConfigTransfer - */ - public function expand(AclEntityMetadataConfigTransfer $aclEntityMetadataConfigTransfer): AclEntityMetadataConfigTransfer - { - $aclEntityMetadataConfigTransfer - ->addAclEntityAllowListItem(SpyUser::class) - ->addAclEntityAllowListItem(SpyAclRole::class) - ->addAclEntityAllowListItem(SpyAclGroup::class) - ->addAclEntityAllowListItem(SpyAclRule::class) - ->addAclEntityAllowListItem(SpyAclEntityRule::class) - ->addAclEntityAllowListItem(SpyUrl::class) - ->addAclEntityAllowListItem(SpyAclEntitySegment::class) - ->addAclEntityAllowListItem(SpyAclGroupsHasRoles::class) - ->addAclEntityAllowListItem(SpyAclUserHasGroup::class); - - return $aclEntityMetadataConfigTransfer; - } -``` diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-walkthrough.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-walkthrough.md deleted file mode 100644 index 6aeccc2998c..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/persistence-acl-feature-walkthrough.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Persistence ACL feature walkthrough -last_updated: Nov 05, 2021 -description: With the Persistence ACL feature, you can manage authorization at the database entity level, or even within a set of entities or segments. -template: feature-walkthrough-template ---- - -With the Persistence ACL feature, you can manage authorization at the database entity level, or even within a set of entities or segments. This feature enables a flexible system of inheritance of rights, simplifying the configuration of access. - -Persistence ACL runs in the Persistence layer, as its name suggests. - -## Limitations -The module is based on the Propel ORM (namely Propel Behavior and Propel Hooks). If you are not using `PropelOrm` to interact with data in your system, this module will not work. - -## Module dependency graph - -The following module dependency graph and table list the main modules of the Persistence ACL feature and their interaction. - -![Module dependency graph](https://confluence-connect.gliffy.net/embed/image/b15ac7bf-e35f-4298-90da-b7d0c8227be9.png?utm_medium=live&utm_source=custom) - -| MODULE | DESCRIPTION | -|-----|-----| -| Acl | `\Spryker\Zed\Acl\Business\AclFacade::getUserRoles()` is used to get logged in user `AclRoles`. | -| AclExtension | `Spryker\Zed\AclExtension\Dependency\Plugin\AclRolePostSavePluginInterface` is used to save `AclEntityRules` for `AclRole`.| -| AclEntityDataImport | `AclEntityRule` and `AclEntitySegment` are used to import data. | -| AclEntityExtension | In `/Spryker/Zed/AclEntityExtension/Dependency/Plugin/AclEntityDisablerPluginInterface`, `AclEntityDisablerPluginInterface` determines whether the feature is enabled.
`\Spryker\Zed\AclEntityExtension\Dependency\Plugin\AclEntityMetadataConfigExpanderPluginInterface` is used in `\Spryker\Zed\AclEntity\Business\AclEntityFacade::getAclEntityMetadataConfig()` to expand the module configuration. | -| PropelOrm | The module is used as a container for Propel library. | -| User | `\Spryker\Zed\User\Business\UserFacade::hasCurrentUser()` is used to check if the user is logged in.
`\Spryker\Zed\User\Business\UserFacade::getCurrentUser()` is used to determine which `AclEntityRules` should be considered during query processing. | - -## Domain model - -The following schema illustrates the Persistence ACL domain model: - -![Domain model](https://confluence-connect.gliffy.net/embed/image/4fe4c0ba-1192-4aca-97f8-d996dfccc583.png?utm_medium=live&utm_source=custom) - -## How it works - -Persistence ACL supports permission checks both when executing queries and when performing actions on Active Record models. Upon installation and configuration, code is injected into the Active Record model and Query classes that check the user's permissions for the appropriate actions. This module uses Propel hooks. - -![The module in application layers](https://confluence-connect.gliffy.net/embed/image/13f16eaa-9491-43ab-887d-0004c716eef4.png?utm_medium=live&utm_source=custom) - -{% info_block warningBox "Important!" %} - -If you execute queries outside of Propel API, they WILL NOT be handled by Persistence ACL. - -{% endinfo_block %} - -During model operations, the following hooks are used: - -- `preInsert` - -- `preUpdate` - -- `preDelete` - - - -Query execution is performed using the following hooks: - -- `preSelectQuery` - -- `preUpdateQuery` - -- `preDeleteQuery` - -A query sent to the database is intercepted and modified with additional joins to limit the results of the query to only those records available to the current user. If the user attempts to perform a restricted action on an Active Record model (such as updating, deleting, or creating), then `\Spryker\Zed\AclEntity\Persistence\Exception\OperationNotAuthorizedException` is thrown. - -## Learn more - -- [Configuration](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.html) -- [Rules and scopes](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/rules-and-scopes.html) -- [Execution flow](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/execution-flow.html) - -## Related Developer documents - -|INSTALLATION GUIDES | REFERENCES | HOWTOS | -|---------|---------|---------| -| [ACL feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/acl-feature-integration.html) | [Persistence ACL feature configuration](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.html) | [HowTo: Split products by stores](/docs/marketplace/dev/howtos/how-to-split-products-by-stores.html)| -| | [Execution flow](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/execution-flow.html) | | -| | [Rules and scopes](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/rules-and-scopes.html) | | -| | [Global scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/global-scope.html) | | -| | [Segment scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.html) | | -| | [Inherited scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.html) | | -| | [Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html) | | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.md deleted file mode 100644 index 32eeccb991a..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Composite entity -last_updated: Nov 05, 2021 -description: Composite entities of one Main Entity and one or more SubEntities and are represented by multiple tables in the database. -template: concept-topic-template ---- - -There are some Domain Entities represented by multiple tables in the database. To make the feature usable, the CompositeEntity concept was introduced: Composite entities consist of one Main Entity and one or more SubEntities. Access is granted implicitly. An AclEntityRule for the Main Entity grants access to all its Sub Entities. Sub Entities cannot be used as standalone entities in an AclEntityRule or Segment. - -Composite entity examples: - -- ProductAbstract - - ProductAbstract + ProductConcrete + ProductPrice + ProductImage + ProductOptions -- Merchant - - Merchant + MerchantProfile + MerchantUser + MerchantStore -- Order - - Order + OrderItems + OrderTotals - -![Composite entity](https://confluence-connect.gliffy.net/embed/image/e57de4b7-b231-4e9b-8e5f-7cf64ed78874.png?utm_medium=live&utm_source=custom) - -If a user requests a sub entity, the main entity will be joined, and the rules for the main entity will apply. - -`spy_acl_entity_rule` - -| fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----| -| 18 | 15 | `\Orm\Zed\Merchant\Persistence\SpyMerchant` | 1 | 1 | - -`spy_acl_entity_segment_merchant` - -| id_acl_entity_segment | name | reference | -|-----|-----|-----| -| 18 | Merchant Video King | merchant-video-king | - -Query before the Persistence ACL: -```sql -SELECT * FROM `spy_merchant_profile`; -``` - -Query after the Persistence ACL: -```sql -SELECT `spy_merchant_profile`.* -FROM `spy_merchant_profile` - INNER JOIN `spy_merchant` ON (`spy_merchant_profile`.`fk_merchant` = `spy_merchant`.`id_merchant`) - INNER JOIN `spy_acl_entity_segment_merchant` - ON (`spy_merchant`.`id_merchant` = `spy_acl_entity_segment_merchant`.`fk_merchant` - AND `spy_acl_entity_segment_merchant`.`fk_acl_entity_segment` IN (18)); -``` - -Although the composite entity has similar functionality to the internalized scope, there are some differences. - -## Inherited scope vs Composite entity - -| FUNCTIONALITY | INHERITED SCOPE | COMPOSITE ENTITY | -|-----|-----|-----| -| Access granted through | Rule | Configuration | -| Permission mask is defined by | Rule | Inherit from Composite root | -| Assigned to | User (through the role) | Common for all users | -| Inherit permissions from the composite object | No | Yes | -| Require additional relation condition | At least `Read` permission rule for the parent | No | diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/global-scope.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/global-scope.md deleted file mode 100644 index 5c3fc1ce030..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/global-scope.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Global scope -last_updated: Nov 05, 2021 -description: Global scope rules apply to an entire collection of entities (for example, Users, Orders). -template: concept-topic-template ---- - -Global scope rules apply to an entire collection of entities (for example, Users, Orders). - -As long as the user has the corresponding global rule with permissions, the Persistence ACL will not restrict the user from performing their actions. Accordingly, if the current user has the appropriate permission on a global scope rule, the database query will remain unchanged. - -![Global scope](https://confluence-connect.gliffy.net/embed/image/61268adb-9b3c-46f4-a83c-ed5862420298.png?utm_medium=live&utm_source=custom) - -`spy_acl_entity_rule` - -| fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----| -| null | 15 | `Orm\Zed\Sales\Persistence\SpySalesOrder` | `AclEntityConstants::OPERATION_MASK_READ` | `AclEntityConstants::SCOPE_GLOBAL` | - -Query before the Persistence ACL: -```sql -SELECT * FROM `spy_sales_order` ORDER BY `updated_at` DESC; -``` - -Query after the Persistence ACL: -```sql -SELECT * FROM `spy_sales_order` ORDER BY `updated_at` DESC; -``` - diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.md deleted file mode 100644 index ec782a509bb..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Inherited scope -last_updated: Nov 05, 2021 -description: Inherited scope rules apply when you need to grant access to an entity (child) that inherits from another entity (parent). -template: concept-topic-template ---- - -Inherited scope rules apply when you need to grant access to an entity (child) that inherits from another entity (parent). Here are a few examples of inheritance: - -- MerchantProductAbstracts → Merchants (through `MerchantProductAbstract.fk_merchant`) -- MerchantSalesOrders → Merchants (through `MerchantSalesOrder.merchant_reference`) -- Shipments → Orders (through `Shipment.order_reference`) - -![Inherited scope](https://confluence-connect.gliffy.net/embed/image/e473a9ca-2eb7-481d-b0c4-72d2563ec466.png?utm_medium=live&utm_source=custom) - -Inheritance rules (child-parent relationship) are set in the configuration. For more details, see [Persistence ACL configuration](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.html). - -Inherited scope functionality has one unique feature: it is sufficient to have **read** access to the parent for successful inheritance for any operation (create/read/update/delete). - -Here is an example where a user has a configuration where `SpyMerchantProductAbstract` inherits from `SpyMerchant`, and the user has 2 rules: - -- inherited for `MerchantProductAbstract` -- segment for `Merchant` - -`spy_acl_entity_rule` - -| fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----| -| null | 15 | `Orm\Zed\MerchantProduct\Persistence\SpyMerchantProductAbstract` | `AclEntityConstants::OPERATION_MASK_READ` | `AclEntityConstants::SCOPE_INHERITED` | -| 5 | 15 | `Orm\Zed\Merchant\Persistence\SpyMerchant` | 1 | 1 | - -`spy_acl_entity_segment` - -| id_acl_entity_segment | name | reference | -|-----|-----|-----| -| 5 | Merchant Video King | merchant-video-king | - -`spy_acl_entity_segment_merchant` - -| fk_merchant | fk_acl_entity_segment | -|-----|-----| -| 112 | 5 | - -Query before the Persistence ACL: -```sql -SELECT * FROM `spy_merchant_product_abstract` ORDER BY `updated_at` DESC; -``` - -Query after the Persistence ACL: -```sql -SELECT `spy_merchant_product_abstract`.* -FROM `spy_merchant_product_abstract` - INNER JOIN `spy_merchant` ON (`spy_merchant_product_abstract`.`fk_merchant` = `spy_merchant`.`id_merchant`) - INNER JOIN `spy_acl_entity_segment_merchant` - ON (`spy_merchant`.`id_merchant` = `spy_acl_entity_segment_merchant`.`fk_merchant` - AND `spy_acl_entity_segment_merchant`.`fk_acl_entity_segment` IN (5)) -ORDER BY `spy_merchant_product_abstract`.`updated_at` DESC; -``` - -It is important to understand that the permissions are checked in the context of roles. Rules of one role do not affect the rules of another. For details, see [Execution Flow](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/execution-flow.html). Below is an example of the two roles: - -1. DE product manager (Full CRUD for products in the DE store) -2. US product viewer (View only for products in the US store) - -`spy_acl_role` - -| id_acl_role | name | reference | -|-----|-----|-----| -| 1 | DE product manager | de_product_manager | -| 2 | US product viewer | us_product_viewer | - -`spy_acl_entity_rule` - -| id_acl_entity_rule | fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----|-----| -| 1 | null | 1 | `Orm\Zed\Product\Persistence\SpyProduct` | 15 | 2 | -| 2 | null | 1 | `Orm\Zed\Product\Persistence\SpyProductAbstract` | 15 | 2 | -| 3 | null | 1 | `Orm\Zed\Product\Persistence\SpyProductAbstractStore` | 15 | 2 | -| 4 | 1 | 1 | `Orm\Zed\Store\Persistence\SpyStore` | 1 | 1 | -| 5 | null | 2 | `Orm\Zed\Product\Persistence\SpyProduct` | 1 | 2 | -| 6 | null | 2 | `Orm\Zed\Product\Persistence\SpyProductAbstract` | 1 | 2 | -| 7 | null | 2 | `Orm\Zed\Product\Persistence\SpyProductAbstractStore` | 1 | 2 | -| 8 | 2 | 2 | `Orm\Zed\Store\Persistence\SpyStore` | 1 | 1 | - -Rules with IDs `1`, `2`, `3` and `4` refer to one role (`fk_acl_role: 1`), and rules with IDs `5`, `6`, `7` and `8` to another (`fk_acl_role: 2`). When a user has both roles and performs `Update on a Product`, the Persistence ACL engine will perform the following: -- it will only find role `1` (since it has a rule for updating a product). -- the role `2` will not be considered at all since it does not allow products to be updated. - -The context of a rule is determined by the role to which it is attached. Because of this, a user with such a set of roles and rules will be able to: - -- perform CRUD actions for products in the DE store. -- have read-only permissions for products in the US store. diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/rules-and-scopes.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/rules-and-scopes.md deleted file mode 100644 index 973172aff92..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/rules-and-scopes.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Rules and scopes -last_updated: Nov 05, 2021 -description: The rule, in contrast to the configuration, is tied to the user (and his role) and determines the user's rights towards the entity. -template: concept-topic-template ---- - -The functionality of this feature is based on such fundamental concepts as Rule and Configuration. -It is important to understand that the rule, in contrast to the configuration, is tied to the user (and his role) and determines the user's rights towards the entity. - -## Rule -One of the fundamental concepts of the Persistence ACL module is an entity rule. It determines the capabilities and permissions of the current user. The rule is an entry in the `spy_acl_entity_rule` table. - -| COLUMN | DESCRIPTION | DATA EXAMPLE | -|-----|-----|-----| -| id_acl_entity_rule | Auto incremental primary key. | | -| fk_acl_entity_segment | A reference to the data segment to which the rule applies. The segment concept is described below. | | -| fk_acl_role | The foreign key of the role to which the rule applies. Rules are not applied to specific users, but to roles, which makes their use extremely flexible. | | -| entity | Entity class. You must specify the full namespace without a leading slash. | `Orm\Zed\Product\Persistence\SpyProductAbstract`, `Orm\Zed\Store\Persistence\SpyStore` | -| permission_mask | An integer representation of the binary permission mask. For more details, see [Permission concept](#permission-concept) documentation. | `AclEntityConstants::OPERATION_MASK_READ`,
`AclEntityConstants::OPERATION_MASK_READ \| AclEntityConstants::OPERATION_MASK_UPDATE`,
`AclEntityConstants::OPERATION_MASK_CRUD` | -| scope | There are 3 types of rules: *Global*, *Segment* and *Inherited*. Their features and differences are described below. | `AclEntityConstants::SCOPE_GLOBAL`, `AclEntityConstants::SCOPE_SEGMENT`, `AclEntityConstants::SCOPE_INHERITED` | - -## Scope - -The concept of scopes is very flexible. It lets you create any rules that suit the needs of your system. For example: - -- Grant read-only access to "All Products". -- Grant read-write access to "All Products". -- Grant read-write to "All Products in DE store". -- Grant read-write to "All Products in DE store" and read-only to "All Products". -- Grant read-write to "All Orders, Products, Offers of Merchant VideoKing". -- Grant read access to "All Users that have Orders of Merchant VideoKing". -- Grant read access to "All Shipments that are connected to Orders of Merchant VideoKing". -- Grant read-write for "Products that have prices >= 1000$" and read-only for "All Products". - -As mentioned above, there are 3 types of scopes: `global`, `segment` and `inherited`. -In the database layer scope represented as enum: - -| Scope | Database value | -|-----|-----| -| global | 0 | -| segment | 1 | -| inherited | 2 | - -Depending on the scope, the system behaves differently. Read the documentation for each of them: -- [Global scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/global-scope.html) -- [Segment scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.html) -- [Inherited scope](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/inherited-scope.html) -- [Composite entity](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/rules-and-scopes/composite-entity.html) - -## Default rule - -If a user performs any operation on an entity for which he has no rules, the default rule is triggered. The default rule can be configured both within a specific class and in a general context. - -A class context takes precedence over a general context. Persistence ACL feature is especially useful when all database tables are connected simultaneously. For more details, see [configuration](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.html#connect-persistence-acl-feature-to-all-database-tables). Thus, you can define publicly available entities such as `Country`, `Currency`, and `Region`. - -The default rule configuration is described in the [configuration document](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/persistence-acl-feature-walkthrough/persistence-acl-feature-configuration.html). - -{% info_block infoBox "Info" %} - -We recommend keeping the default permission for global context as 0 (no permission at all), which will ensure that sensitive data is protected by default. - -{% endinfo_block %} - -## Permission concept -Permission mask (`spy_acl_entity_rule.permission_mask)` is a binary representation of the operations that this rule allows. -Every CRUD operation has its own binary mask. - -| Operation | Binary mask | Integer representation | -|-----|-----|-----| -| Read |`0b1` | 1 | -| Create |`0b10` | 2 | -| Update |`0b100` | 4 | -| Delete |`0b1000` | 8 | - -For details, see [Spryker\Shared\AclEntity\AclEntityConstants](https://github.com/spryker/acl-entity/blob/master/src/Spryker/Shared/AclEntity/AclEntityConstants.php). diff --git a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.md b/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.md deleted file mode 100644 index d3d3f91fed9..00000000000 --- a/docs/marketplace/dev/feature-walkthroughs/202108.0/persistence-acl-feature-walkthrough/rules-and-scopes/segment-scope.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Segment scope -last_updated: Nov 05, 2021 -description: The segment rules let you grant permissions to subset of an entity collection. Segment entities are connected through a plain many-to-many tables, this allows minimizing performance impact. -template: concept-topic-template ---- - -The segment rules let you grant permissions to subset of an entity collection. -Segment entities are connected through a plain many-to-many tables, this allows minimizing performance impact. - -A subset can contain as many records as you want. -There are few examples of data segments: - -- Orders of DE store -- Orders of total of > 100$ -- Orders of US store -- Orders from customer #3 - -![Segment scope](https://confluence-connect.gliffy.net/embed/image/bf400b2a-6872-479c-a3df-e4686894eace.png?utm_medium=live&utm_source=custom) - -`spy_acl_entity_rule` - -| fk_acl_entity_segment | fk_acl_role | entity | permission_mask | scope | -|-----|-----|-----|-----|-----| -| 3 | 15 | `Orm\Zed\Sales\Persistence\SpySalesOrder` | 1 | 0 | - -`spy_acl_entity_segment` - -| id_acl_entity_segment | name | reference | -|-----|-----|-----| -| 3 | Orders of DE store | orders-de | - -`spy_acl_entity_segment_sales_order` - -| fk_sales_order | fk_acl_entity_segment | -|-----|-----| -| 35 | 3 | -| 36 | 3 | -| 1115 | 3 | - -Query before the Persistence ACL: -```sql -SELECT * FROM `spy_sales_order` ORDER BY `updated_at` DESC; -``` - -Query after the Persistence ACL: -```sql -SELECT `spy_sales_order`.* -FROM `spy_sales_order` - INNER JOIN `spy_acl_entity_segment_sales_order` - ON (`spy_sales_order`.`id_sales_order`=`spy_acl_entity_segment_sales_order`.`fk_sales_order` - AND `spy_acl_entity_segment_sales_order`.`fk_acl_entity_segment` IN (3)) -ORDER BY `spy_sales_order`.`updated_at` DESC; -``` - -## Dynamic segments -Since segments are defined using a many-to-many table, projects can create dynamic segments. - -By handling events such as `Product created` and `Product updated`, you can maintain a special segment of products (for example,red products). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/abstract-products/retrieving-abstract-products.md b/docs/marketplace/dev/glue-api-guides/202108.0/abstract-products/retrieving-abstract-products.md deleted file mode 100644 index 282865092d6..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/abstract-products/retrieving-abstract-products.md +++ /dev/null @@ -1,1497 +0,0 @@ ---- -title: Retrieving abstract products -description: This glue API document describes how to retrieve general information about abstract products and related resources in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint allows retrieving general information about abstract products. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Glue API: Products feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-feature-integration.html) -* [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Glue API: Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-labels-feature-integration.html) - - - -## Retrieve an abstract product - -To retrieve general information about an abstract product, send the request: - ---- -`GET` {% raw %}**/abstract-products/*{{abstract_product_sku}}***{% endraw %} - ---- - -| PATH | DESCRIPTION | -| --- | --- | -| {% raw %}***{{abstract_product_sku}}***{% endraw %} | SKU of an abstract product to get information for. | - -### Request - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. | abstract-product-prices, concrete-products, product-labels, abstract-product-image-sets, abstract-product-availabilities, category-nodes, product-tax-sets, product-options, product-reviews, merchants | -| fields | Filters out the fields to be retrieved. | name, image, description | - -{% info_block warningBox "Performance" %} - -* For performance and bandwidth usage optimization, we recommend filtering out only the needed information using the `fields` string parameter. - -* If you include more resources, you can still use the `fields` string parameter to return only the needed fields. For example, `GET https://glue.mysprykershop.com/abstract-products/001?include=concrete-products&fields[abstract-products]=name,description&fields[concrete-products]=name,image`. - -{% endinfo_block %} - - - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/abstract-products/001` | Retrieve information about the abstract product with SKU `001`. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-image-sets` | Retrieve information about the abstract product with SKU `001` with its image sets. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-availabilities` | Retrieve information about the abstract product with SKU `001` with its availability. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-prices` | Retrieve information about the abstract product with SKU `001` with its [default prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html). | -| `GET https://glue.mysprykershop.com/abstract-products/093?include=abstract-product-prices` | Retrieve information about the abstract product with SKU `093` with its prices (default and [volume prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html)). | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=category-nodes` | Retrieve information about the abstract product with SKU `001` with the category nodes it belongs to. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=product-tax-sets` | Retrieve information about the abstract product with SKU `001` with its tax sets. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=product-labels` | Retrieve information about the abstract product with SKU `001` with its assigned product labels. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=concrete-products` | Retrieve information about the abstract product with SKU `001` with its concrete products. | -| `GET https://glue.mysprykershop.com/abstract-products/001?include=product-options` | Retrieve information about the abstract product with SKU `001` with its product options. | -| `GET https://glue.mysprykershop.com/abstract-products/035?include=product-reviews` | Retrieve information about the abstract product with SKU `001` with its product reviews. | -| `GET https://glue.mysprykershop.com/abstract-products/109` | Retrieve the merchant product with SKU `109`.| -| `GET https://glue.mysprykershop.com/abstract-products/109?include=merchants` | Retrieve the marketplace product with SKU `109` including the merchant information. | - - -### Response - -
-Response sample: retrieve information about the abstract product with SKU `001` - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001" - } - } -} -``` -
- -
-Response sample: retrieve information about the abstract product with its image sets - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-image-sets" - }, - "relationships": { - "abstract-product-image-sets": { - "data": [ - { - "type": "abstract-product-image-sets", - "id": "001" - } - ] - } - } - }, - "included": [ - { - "type": "abstract-product-image-sets", - "id": "001", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904006-8438.jpg", - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904006-8438.jpg" - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001/abstract-product-image-sets" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about the abstract product with its availability - -```json -{ -    "data": { -        "type": "abstract-products", -        "id": "001", -        "attributes": { -            "sku": "001", -            "averageRating": null, -            "reviewCount": 0, -            "name": "Canon IXUS 160", -            "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", -            "attributes": { -                "megapixel": "20 MP", -                "flash_range_tele": "4.2-4.9 ft", -                "memory_slots": "1", -                "usb_version": "2", -                "brand": "Canon", -                "color": "Red" -            }, -            "superAttributesDefinition": [ -                "color" -            ], -            "superAttributes": { -                "color": [ -                    "Red" -                ] -            }, -            "attributeMap": { -                "product_concrete_ids": [ -                    "001_25904006" -                ], -                "super_attributes": { -                    "color": [ -                        "Red" -                    ] -                }, -                "attribute_variants": [] -            }, -            "metaTitle": "Canon IXUS 160", -            "metaKeywords": "Canon,Entertainment Electronics", -            "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", -            "attributeNames": { -                "megapixel": "Megapixel", -                "flash_range_tele": "Flash range (tele)", -                "memory_slots": "Memory slots", -                "usb_version": "USB version", -                "brand": "Brand", -                "color": "Color" -            }, -            "url": "/en/canon-ixus-160-1" -        }, -        "links": { -            "self": "https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-availabilities" -        }, -        "relationships": { -            "abstract-product-availabilities": { -                "data": [ -                    { -                        "type": "abstract-product-availabilities", -                        "id": "001" -                    } -                ] -            } -        } -    }, -    "included": [ -        { -            "type": "abstract-product-availabilities", -            "id": "001", -            "attributes": { -                "availability": true, -                "quantity": "10.0000000000" -            }, -            "links": { -                "self": "https://glue.mysprykershop.com/abstract-products/001/abstract-product-availabilities" -            } -        } -    ] -} -``` -
- - - -
Response sample: retrieve information about the abstract product with its default prices - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=abstract-product-prices" - }, - "relationships": { - "abstract-product-prices": { - "data": [ - { - "type": "abstract-product-prices", - "id": "001" - } - ] - } - } - }, - "included": [ - { - "type": "abstract-product-prices", - "id": "001", - "attributes": { - "price": 9999, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9999, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "ORIGINAL", - "netAmount": null, - "grossAmount": 12564, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001/abstract-product-prices" - } - } - ] -} -``` -
- -
Response sample: retrieve information about the abstract product with its default and volume prices - -```json -{ - "data": { - "type": "abstract-products", - "id": "093", - "attributes": { - "sku": "093", - "merchantReference": "MER000001", - "averageRating": 4.3, - "reviewCount": 4, - "name": "Sony SmartWatch 3", - "description": "The way you like it Whatever your lifestyle SmartWatch 3 SWR50 can be made to suit it. You can choose from a range of wrist straps—formal, sophisticated, casual, vibrant colours and fitness style, all made from the finest materials. Designed to perform and impress, this smartphone watch delivers a groundbreaking combination of technology and style. Downloadable apps let you customise your SmartWatch 3 SWR50 and how you use it. Tell SmartWatch 3 SWR50 smartphone watch what you want and it will do it. Search. Command. Find.", - "attributes": { - "internal_ram": "512 MB", - "flash_memory": "4 GB", - "weight": "45 g", - "protection_feature": "Water resistent", - "brand": "Sony", - "color": "Yellow" - }, - "superAttributesDefinition": [ - "flash_memory", - "color" - ], - "superAttributes": { - "color": [ - "Silver" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "093_24495843" - ], - "super_attributes": { - "color": [ - "Silver" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Sony SmartWatch 3", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "The way you like it Whatever your lifestyle SmartWatch 3 SWR50 can be made to suit it. You can choose from a range of wrist straps—formal, sophisticated,", - "attributeNames": { - "internal_ram": "Internal RAM", - "flash_memory": "Flash memory", - "weight": "Weight", - "protection_feature": "Protection feature", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/sony-smartwatch-3-93" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/093?include=abstract-product-prices" - }, - "relationships": { - "abstract-product-prices": { - "data": [ - { - "type": "abstract-product-prices", - "id": "093" - } - ] - } - } - }, - "included": [ - { - "type": "abstract-product-prices", - "id": "093", - "attributes": { - "price": 24899, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 24899, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "netAmount": 150, - "grossAmount": 165, - "quantity": 5 - }, - { - "netAmount": 145, - "grossAmount": 158, - "quantity": 10 - }, - { - "netAmount": 140, - "grossAmount": 152, - "quantity": 20 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/093/abstract-product-prices" - } - } - ] -} -``` -
- -
-Response sample: retrieve information about the abstract product with the category nodes it belongs to - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=category-nodes" - }, - "relationships": { - "category-nodes": { - "data": [ - { - "type": "category-nodes", - "id": "4" - }, - { - "type": "category-nodes", - "id": "2" - } - ] - } - } - }, - "included": [ - { - "type": "category-nodes", - "id": "4", - "attributes": { - "nodeId": 4, - "name": "Digital Cameras", - "metaTitle": "Digital Cameras", - "metaKeywords": "Digital Cameras", - "metaDescription": "Digital Cameras", - "isActive": true, - "order": 100, - "url": "/en/cameras-&-camcorders/digital-cameras", - "children": [], - "parents": [ - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "metaTitle": "Cameras & Camcorders", - "metaKeywords": "Cameras & Camcorders", - "metaDescription": "Cameras & Camcorders", - "isActive": true, - "order": 90, - "url": "/en/cameras-&-camcorders", - "children": [], - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "order": null, - "url": "/en", - "children": [], - "parents": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/category-nodes/4" - } - }, - { - "type": "category-nodes", - "id": "2", - "attributes": { - "nodeId": 2, - "name": "Cameras & Camcorders", - "metaTitle": "Cameras & Camcorders", - "metaKeywords": "Cameras & Camcorders", - "metaDescription": "Cameras & Camcorders", - "isActive": true, - "order": 90, - "url": "/en/cameras-&-camcorders", - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "metaTitle": "Digital Cameras", - "metaKeywords": "Digital Cameras", - "metaDescription": "Digital Cameras", - "isActive": true, - "order": 100, - "url": "/en/cameras-&-camcorders/digital-cameras", - "children": [], - "parents": [] - }, - { - "nodeId": 3, - "name": "Camcorders", - "metaTitle": "Camcorders", - "metaKeywords": "Camcorders", - "metaDescription": "Camcorders", - "isActive": true, - "order": 90, - "url": "/en/cameras-&-camcorders/camcorders", - "children": [], - "parents": [] - } - ], - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "order": null, - "url": "/en", - "children": [], - "parents": [] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/category-nodes/2" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about the abstract product with its tax sets - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=product-tax-sets" - }, - "relationships": { - "product-tax-sets": { - "data": [ - { - "type": "product-tax-sets", - "id": "0e93b0d4-6d83-5fc1-ac1d-d6ae11690406" - } - ] - } - } - }, - "included": [ - { - "type": "product-tax-sets", - "id": "0e93b0d4-6d83-5fc1-ac1d-d6ae11690406", - "attributes": { - "name": "Entertainment Electronics", - "restTaxRates": [ - { - "name": "Austria Standard", - "rate": "20.00", - "country": "AT" - }, - { - "name": "Belgium Standard", - "rate": "21.00", - "country": "BE" - }, - { - "name": "Bulgaria Standard", - "rate": "20.00", - "country": "BG" - }, - { - "name": "Czech Republic Standard", - "rate": "21.00", - "country": "CZ" - }, - { - "name": "Denmark Standard", - "rate": "25.00", - "country": "DK" - }, - { - "name": "France Standard", - "rate": "20.00", - "country": "FR" - }, - { - "name": "Germany Standard", - "rate": "19.00", - "country": "DE" - }, - { - "name": "Hungary Standard", - "rate": "27.00", - "country": "HU" - }, - { - "name": "Italy Standard", - "rate": "22.00", - "country": "IT" - }, - { - "name": "Luxembourg Standard", - "rate": "17.00", - "country": "LU" - }, - { - "name": "Netherlands Standard", - "rate": "21.00", - "country": "NL" - }, - { - "name": "Poland Standard", - "rate": "23.00", - "country": "PL" - }, - { - "name": "Romania Standard", - "rate": "20.00", - "country": "RO" - }, - { - "name": "Slovakia Standard", - "rate": "20.00", - "country": "SK" - }, - { - "name": "Slovenia Standard", - "rate": "22.00", - "country": "SI" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001/product-tax-sets" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about the abstract product with the assigned product labels - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": {...}, - "links": {...}, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "3" - }, - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - "included": [ - { - "type": "product-labels", - "id": "3", - "attributes": { - "name": "Standard Label", - "isExclusive": false, - "position": 3, - "frontEndReference": "" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/3" - } - }, - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 5, - "frontEndReference": "highlight" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about the abstract product with its concrete products - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=concrete-products" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "001_25904006" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about the abstract product with its product options - -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001?include=product-options" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - "included": [ - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001/product-options/OP_gift_wrapping" - } - } - ] -} -``` -
- - - -
-Response sample: retrieve information about the abstract product with its product reviews - -```json -{ - "data": { - "type": "abstract-products", - "id": "035", - "attributes": { - "sku": "035", - "averageRating": 4.7, - "reviewCount": 3, - "name": "Canon PowerShot N", - "description": "Creative Shot Originality is effortless with Creative Shot. Simply take a shot and the camera will analyse the scene then automatically generate five creative images plus the original unaltered photo—capturing the same subject in a variety of artistic and surprising ways. The unique symmetrical, metal-bodied design is strikingly different with an ultra-modern minimalist style—small enough to keep in your pocket and stylish enough to take anywhere. HS System excels in low light letting you capture the real atmosphere of the moment without flash or a tripod. Advanced DIGIC 5 processing and a high-sensitivity 12.1 Megapixel CMOS sensor give excellent image quality in all situations.", - "attributes": { - "focus": "TTL", - "field_of_view": "100%", - "display": "LCD", - "sensor_type": "CMOS", - "brand": "Canon", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Silver" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "035_17360369" - ], - "super_attributes": { - "color": [ - "Silver" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Canon PowerShot N", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Creative Shot Originality is effortless with Creative Shot. Simply take a shot and the camera will analyse the scene then automatically generate five creat", - "attributeNames": { - "focus": "Focus", - "field_of_view": "Field of view", - "display": "Display", - "sensor_type": "Sensor type", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-powershot-n-35" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/035?include=product-reviews" - }, - "relationships": { - "product-reviews": { - "data": [ - { - "type": "product-reviews", - "id": "29" - }, - { - "type": "product-reviews", - "id": "28" - }, - { - "type": "product-reviews", - "id": "30" - } - ] - } - } - }, - "included": [ - { - "type": "product-reviews", - "id": "29", - "attributes": { - "rating": 5, - "nickname": "Maria", - "summary": "Curabitur varius, dui ac vulputate ullamcorper", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vel mauris consequat, dictum metus id, facilisis quam. Vestibulum imperdiet aliquam interdum. Pellentesque tempus at neque sed laoreet. Nam elementum vitae nunc fermentum suscipit. Suspendisse finibus risus at sem pretium ullamcorper. Donec rutrum nulla nec massa tristique, porttitor gravida risus feugiat. Ut aliquam turpis nisi." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/29" - } - }, - { - "type": "product-reviews", - "id": "28", - "attributes": { - "rating": 5, - "nickname": "Spencor", - "summary": "Donec vestibulum lectus ligula", - "description": "Donec vestibulum lectus ligula, non aliquet neque vulputate vel. Integer neque massa, ornare sit amet felis vitae, pretium feugiat magna. Suspendisse mollis rutrum ante, vitae gravida ipsum commodo quis. Donec eleifend orci sit amet nisi suscipit pulvinar. Nullam ullamcorper dui lorem, nec vehicula justo accumsan id. Sed venenatis magna at posuere maximus. Sed in mauris mauris. Curabitur quam ex, vulputate ac dignissim ac, auctor eget lorem. Cras vestibulum ex quis interdum tristique." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/28" - } - }, - { - "type": "product-reviews", - "id": "30", - "attributes": { - "rating": 4, - "nickname": "Maggie", - "summary": "Aliquam erat volutpat", - "description": "Morbi vitae ultricies libero. Aenean id lectus a elit sollicitudin commodo. Donec mattis libero sem, eu convallis nulla rhoncus ac. Nam tincidunt volutpat sem, eu congue augue cursus at. Mauris augue lorem, lobortis eget varius at, iaculis ac velit. Sed vulputate rutrum lorem, ut rhoncus dolor commodo ac. Aenean sed varius massa. Quisque tristique orci nec blandit fermentum. Sed non vestibulum ante, vitae tincidunt odio. Integer quis elit eros. Phasellus tempor dolor lectus, et egestas magna convallis quis. Ut sed odio nulla. Suspendisse quis laoreet nulla. Integer quis justo at velit euismod imperdiet. Ut orci dui, placerat ut ex ac, lobortis ullamcorper dui. Etiam euismod risus hendrerit laoreet auctor." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/30" - } - } - ] -} -``` -
- - -
-Response sample: retrieve the merchant product - -```json -{ - "data": { - "type": "abstract-products", - "id": "109", - "attributes": { - "sku": "109", - "merchantReference": "MER000001", - "averageRating": null, - "reviewCount": 0, - "name": "Sony SW2 SmartWatch", - "description": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on top of everything. If you like to get out running, you can use SmartWatch as your phone remote. If it rains, you can keep on going. SmartWatch 2 can take the rain. If it is bright and sunny, SmartWatch 2 has an impressive sunlight-readable display. Take it anywhere. When you are using a wireless Bluetooth® headset for music, you can use SmartWatch 2 as a phone remote to make or receive calls. When a call comes in, you can see who’s calling in your SmartWatch display, press once to answer and enjoy hands-free calling at its easiest. You can also browse recent calls in your call log and use SmartWatch to initiate a call.", - "attributes": { - "display_type": "LCD", - "shape": "square", - "bluetooth_version": "3", - "battery_life": "168 h", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Blue" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "109_19416433" - ], - "super_attributes": { - "color": [ - "Blue" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Sony SW2 SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on", - "attributeNames": { - "display_type": "Display type", - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/sony-sw2-smartwatch-109" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/109" - } - } -} -``` -
- - -
-Response sample: retrieve the marketplace product including the merchant information - -```json -{ - "data": { - "type": "abstract-products", - "id": "109", - "attributes": { - "sku": "109", - "merchantReference": "MER000001", - "averageRating": null, - "reviewCount": 0, - "name": "Sony SW2 SmartWatch", - "description": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on top of everything. If you like to get out running, you can use SmartWatch as your phone remote. If it rains, you can keep on going. SmartWatch 2 can take the rain. If it is bright and sunny, SmartWatch 2 has an impressive sunlight-readable display. Take it anywhere. When you are using a wireless Bluetooth® headset for music, you can use SmartWatch 2 as a phone remote to make or receive calls. When a call comes in, you can see who’s calling in your SmartWatch display, press once to answer and enjoy hands-free calling at its easiest. You can also browse recent calls in your call log and use SmartWatch to initiate a call.", - "attributes": { - "display_type": "LCD", - "shape": "square", - "bluetooth_version": "3", - "battery_life": "168 h", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Blue" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "109_19416433" - ], - "super_attributes": { - "color": [ - "Blue" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Sony SW2 SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on", - "attributeNames": { - "display_type": "Display type", - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/sony-sw2-smartwatch-109" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/109" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - } - ] -} -``` -
- - - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| sku | String | SKU of the abstract product | -| merchantReference | String | Unique identifier of the merchant in the system.| -| averageRating | String | Average rating of the product based on customer rating. | -| reviewCount | Integer | Number of reviews left by customer for this abstract product. | -| name | String | Name of the abstract product | -| description | String | Description of the abstract product | -| attributes | Object | List of attributes and their values | -| superAttributeDefinition | String | Attributes flagged as super attributes, that are however not relevant to distinguish between the product variants | -| attributeMap|Object|Each super attribute / value combination and the corresponding concrete product IDs are listed here| -|attributeMap.super_attributes|Object|Applicable super attribute and its values for the product variants| -|attributeMap.attribute_variants|Object|List of super attributes with the list of values| -|attributeMap.product_concrete_ids|String|Product IDs of the product variants| -|metaTitle|String|Meta title of the product| -|metaKeywords|String|Meta keywords of the product.| -|metaDescription|String|Meta description of the product.| -|attributeNames | Object | All non-super attribute / value combinations for the abstract product. | - - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | --- | -| product-options | sku | String | Specifies the SKU of the product option. | -| product-options | optionName | String | Specifies the option name. | -| product-options | optionGroupName | String | Specifies the name of the group to which the option belongs. | -| product-options | price | Integer | Specifies the option price in cents. | -| product-options | currencyIsoCode | String | Specifies the ISO 4217 code of the currency in which the product option price is specified. | - -For the attributes of other included resources, see: - -* [Retrieve image sets of an abstract product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-image-sets-of-abstract-products.html) -* [Retrieve availability of an abstract product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-product-availability.html) -* [Retrieve prices of an abstract product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-product-prices.html) -* [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) -* [Retrieve a category node](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-nodes.html) -* [Retrieve tax sets](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-tax-sets.html) -* [Retrieve a product label](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) -* [Retrieve product reviews](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/managing-product-ratings-and-reviews.html#retrieve-product-ratings-and-reviews) -* [Retrieve a measurement unit](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-measurement-units.html) -* [Retrieve merchant information](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) - - -## Possible errors - -| CODE | REASON | -| --- | --- | -| 301 | Abstract product is not found. | -| 311 | Abstract product SKU is not specified. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-carts-of-registered-users.md b/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-carts-of-registered-users.md deleted file mode 100644 index b56fc70d980..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-carts-of-registered-users.md +++ /dev/null @@ -1,4491 +0,0 @@ ---- -title: Managing carts of registered users -description: Retrieve details about the carts of the registered users and learn what else you can do with the resource in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint allows managing carts by creating, retrieving, and deleting them. - -## Multiple carts - -Unlike guest carts, carts of registered users have an unlimited lifetime. Also, if the [Multiple Carts feature is integrated into your project](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-feature-integration.html), and [Glue API is enabled for multi-cart operations](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-feature-integration.html), registered users can have an unlimited number of carts. - - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) -* [Glue API: Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-labels-feature-integration.html) -* [Glue API: Measurement Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-measurement-units-feature-integration.html) -* [Glue API: Promotions & Discounts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-promotions-and-discounts-feature-integration.html) -* [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Shared Carts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shared-carts-feature-integration.html) -* [Glue API: Merchant Offers feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) - -## Create a cart - -To create a cart, send the request: - -*** -`POST` **/carts** -*** - -{% info_block infoBox "Info" %} - -Carts created via Glue API are always set as the default carts for the user. - -{% endinfo_block %} - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer or company user to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html#authenticate-as-a-customer) or [authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html#authenticate-as-a-company-user). | - -Request sample: create a cart - -`POST https://glue.mysprykershop.com/carts` - -```json -{ - "data":{ - "type":"carts", - "attributes":{ - "name":"My Cart", - "priceMode":"GROSS_MODE", - "currency":"EUR", - "store":"DE" - } - } -} -``` - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| name | String | ✓ | Sets the cart name.
You can pass this field only with the Multiple Carts feature integrated. If you are operating in a single-cart environment, an attempt to set the value returns the `422 Unprocessable Entry` error. | -| priceMode | Enum | ✓ | Sets the price mode for the cart. Possible values:
  • GROSS_MODE: prices after tax
  • NET_MODE: prices before tax
For details, see [Net & gross prices management](/docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/net-and-gross-prices-management.html). | -| currency | String | ✓ | Sets the cart currency. | -| store | String | ✓ | Sets the name of the store where to create the cart. | - -### Response - -Response sample: create a cart - -```json -{ - "data": { - "type": "carts", - "id": "f23f5cfa-7fde-5706-aefb-ac6c6bbadeab", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "discounts": [], - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null - }, - "name": "My Cart", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/f23f5cfa-7fde-5706-aefb-ac6c6bbadeab" - } - } -} -``` - -**General cart information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| priceMode | String | Price mode of the cart. | -| currency | String | Currency of the cart. | -| store | String | Store in which the cart is created. | -| name | String | Cart name.
The field is available only in multi-cart environments. | -| isDefault | Boolean | Specifies if the cart is the default one for the customer.
The field is available only in multi-cart environments. | - -**Discount information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| displayName | String | Discount name. | -| amount | Integer | Discount amount applied to the cart. | -| code | String | Discount code applied to the cart. | - -**Totals** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| totals | Object | Describes the total calculations. | -| totals.expenseTotal | String | Total amount of expenses (including, for example, shipping costs). | -| totals.discountTotal | Integer | Total amount of discounts applied to the cart. | -| totals.taxTotal | String | Total amount of taxes to be paid. | -| totals.subTotal | Integer | Subtotal of the cart. | -| totals.grandTotal | Integer | Grand total of the cart. | - - -## Retrieve registered user's carts - -To retrieve all carts, send the request: - -*** -`GET` **/carts** -*** - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer or company user to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html#authenticate-as-a-customer) or [authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html#authenticate-as-a-company-user). | - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • items
  • cart-permission-groups
  • shared-carts
  • company-users
  • cart-rules
  • promotional-items
  • vouchers
  • gift-cards
  • concrete-products
  • product-options
  • product-labels
  • product-offers
  • product-offer-availabilities
  • product-offer-prices
  • merchants
| - -{% info_block infoBox "Info" %} - -* To retrieve all the product options of the item in a cart, include `items`, `concrete-products`, and `product-options`. -* To retrieve information about the company user a cart is shared with, include `shared-carts` and `company-users`. -* To retrieve product labels of the products in a cart, include `items`, `concrete-products`, and `product-labels`. -* To retrieve product offers, include `items`, `concrete-products`, and `product-offers`. -* To retrieve product offer availabilities, include `items`, `concrete-products`, and `product-offer-availabilities`. -* To retrieve product offer prices, include `items`, `concrete-products`, and `product-offer-prices`. - -{% endinfo_block %} - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/carts` | Retrieve all carts. | -| `GET https://glue.mysprykershop.com/carts?include=items` | Retrieve all carts with the items in them included. | -| `GET https://glue.mysprykershop.com/carts?include=cart-permission-groups` | Retrieve all carts with cart permission groups included. | -| `GET https://glue.mysprykershop.com/carts?include=shared-carts` | Retrieve all carts with shared carts included. | -| `GET https://glue.mysprykershop.com/carts?include=shared-carts,company-users` | Retrieve all carts with included information about shared carts, and the company uses they are shared with. | -| `GET https://glue.mysprykershop.com/carts?include=cart-rules` | Retrieve all carts with cart rules included. | -| `GET https://glue.mysprykershop.com/carts?include=vouchers` | Retrieve all carts with the applied vouchers included. | -| `GET https://glue.mysprykershop.com/carts?include=promotional-items` | Retrieve all carts with promotional items included. | -| `GET https://glue.mysprykershop.com/carts?include=gift-cards` | Retrieve all carts with the applied gift cards included. | -| `GET https://glue.mysprykershop.com/carts?include=items,concrete-products,product-options` | Retrieve all carts with items, respective concrete products, and their product options included. | -| `GET https://glue.mysprykershop.com/carts?include=items,concrete-products,product-labels` | Retrieve all carts with the included information: concrete products and the product labels assigned to the products in the carts. | -| `GET https://glue.mysprykershop.com/carts?include=items,concrete-products,product-offers` | Retrieve all carts with product offers included. | -| `GET https://glue.mysprykershop.com/carts?include=items,concrete-products,product-offers,product-offer-availabilities` | Retrieve all carts with product offers and product offer availabilities included. | -| `GET https://glue.mysprykershop.com/carts?include=items,concrete-products,product-offers,product-offer-prices` | Retrieve all carts with product offers and product offer prices included. | -| `GET https://glue.mysprykershop.com/carts?include=merchants` | Retrieve all carts with merchants included. | - - -### Response - -
-Response sample: no carts are retrieved - -```json -{ - "data": [], - "links": { - "self": "https://glue.mysprykershop.com/carts" - } -} -``` -
- -
-Response sample: retrieve all carts - -```json -{ - "data": [ - { - "type": "carts", - "id": "61ab15e9-e24a-5dec-a1ef-fc333bd88b0a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 3744, - "taxTotal": 5380, - "subtotal": 37440, - "grandTotal": 33696 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 3744, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a" - } - }, - { - "type": "carts", - "id": "482bdbd6-137f-5b58-bd1c-37f3fa735a16", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Black Friday Conf Bundle", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 8324, - "taxTotal": 1469, - "subtotal": 83236, - "grandTotal": 74912 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/482bdbd6-137f-5b58-bd1c-37f3fa735a16" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts" - } -} -``` -
- - -
-Response sample: retrieve all carts with the items included - -```json -{ - "data": [ - { - "type": "carts", - "id": "ac3da9eb-f4fc-5803-94b9-343d6cd4cda4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 4158, - "taxTotal": 5974, - "subtotal": 41575, - "grandTotal": 37417, - "priceToPay": 37417 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 4158, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/ac3da9eb-f4fc-5803-94b9-343d6cd4cda4" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "070_133913222" - } - ] - } - } - }, - { - "type": "carts", - "id": "e877356a-5d8f-575e-aacc-c790eeb20a27", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Everyday purchases", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 6165, - "taxTotal": 3630, - "subtotal": 61647, - "grandTotal": 55482, - "priceToPay": 55482 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 6165, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "089_29634947" - }, - { - "type": "items", - "id": "201_11217755" - } - ] - } - } - }, - { - "type": "carts", - "id": "8ef901fe-fe47-5569-9668-2db890dbee6d", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 4200, - "taxTotal": 6035, - "subtotal": 42000, - "grandTotal": 37800, - "priceToPay": 37800 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 4200, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8ef901fe-fe47-5569-9668-2db890dbee6d" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "005_30663301" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=items" - }, - "included": [ - { - "type": "items", - "id": "070_133913222", - "attributes": { - "sku": "070_133913222", - "quantity": "1", - "groupKey": "070_133913222", - "abstractSku": "070", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 41575, - "sumPrice": 41575, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 41575, - "sumGrossPrice": 41575, - "unitTaxAmountFullAggregation": 5974, - "sumTaxAmountFullAggregation": 5974, - "sumSubtotalAggregation": 41575, - "unitSubtotalAggregation": 41575, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 4158, - "sumDiscountAmountAggregation": 4158, - "unitDiscountAmountFullAggregation": 4158, - "sumDiscountAmountFullAggregation": 4158, - "unitPriceToPayAggregation": 37417, - "sumPriceToPayAggregation": 37417 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/ac3da9eb-f4fc-5803-94b9-343d6cd4cda4/items/070_133913222" - } - }, - { - "type": "items", - "id": "089_29634947", - "attributes": { - "sku": "089_29634947", - "quantity": "1", - "groupKey": "089_29634947", - "abstractSku": "089", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 41393, - "sumPrice": 41393, - "taxRate": 7, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 41393, - "sumGrossPrice": 41393, - "unitTaxAmountFullAggregation": 2437, - "sumTaxAmountFullAggregation": 2437, - "sumSubtotalAggregation": 41393, - "unitSubtotalAggregation": 41393, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 4140, - "sumDiscountAmountAggregation": 4140, - "unitDiscountAmountFullAggregation": 4140, - "sumDiscountAmountFullAggregation": 4140, - "unitPriceToPayAggregation": 37253, - "sumPriceToPayAggregation": 37253 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27/items/089_29634947" - } - }, - { - "type": "items", - "id": "201_11217755", - "attributes": { - "sku": "201_11217755", - "quantity": "1", - "groupKey": "201_11217755", - "abstractSku": "201", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 20254, - "sumPrice": 20254, - "taxRate": 7, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 20254, - "sumGrossPrice": 20254, - "unitTaxAmountFullAggregation": 1193, - "sumTaxAmountFullAggregation": 1193, - "sumSubtotalAggregation": 20254, - "unitSubtotalAggregation": 20254, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2025, - "sumDiscountAmountAggregation": 2025, - "unitDiscountAmountFullAggregation": 2025, - "sumDiscountAmountFullAggregation": 2025, - "unitPriceToPayAggregation": 18229, - "sumPriceToPayAggregation": 18229 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27/items/201_11217755" - } - }, - { - "type": "items", - "id": "005_30663301", - "attributes": { - "sku": "005_30663301", - "quantity": 6, - "groupKey": "005_30663301", - "abstractSku": "005", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 7000, - "sumPrice": 42000, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 7000, - "sumGrossPrice": 42000, - "unitTaxAmountFullAggregation": 1006, - "sumTaxAmountFullAggregation": 6035, - "sumSubtotalAggregation": 42000, - "unitSubtotalAggregation": 7000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 700, - "sumDiscountAmountAggregation": 4200, - "unitDiscountAmountFullAggregation": 700, - "sumDiscountAmountFullAggregation": 4200, - "unitPriceToPayAggregation": 6300, - "sumPriceToPayAggregation": 37800 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8ef901fe-fe47-5569-9668-2db890dbee6d/items/005_30663301" - } - } - ] -} -``` -
- - -
-Response sample: retrieve all carts with cart permission groups included - -```json -{ - "data": [ - { - "type": "carts", - "id": "59743e37-0182-5153-9935-77106741a9d2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Purchases", - "isDefault": true, - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/59743e37-0182-5153-9935-77106741a9d2" - } - }, - { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "cart-permission-groups": { - "data": [ - { - "type": "cart-permission-groups", - "id": "1" - } - ] - } - } - }, - { - "type": "carts", - "id": "2b72635a-9363-56f5-9ba7-55631b8ad71e", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "New", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 10206, - "taxTotal": 14666, - "subtotal": 102063, - "grandTotal": 91857 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10206, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2b72635a-9363-56f5-9ba7-55631b8ad71e" - }, - "relationships": { - "cart-permission-groups": { - "data": [ - { - "type": "cart-permission-groups", - "id": "2" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=cart-permission-groups" - }, - "included": [ - { - "type": "cart-permission-groups", - "id": "1", - "attributes": { - "name": "READ_ONLY", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-permission-groups/1" - } - }, - { - "type": "cart-permission-groups", - "id": "2", - "attributes": { - "name": "FULL_ACCESS", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-permission-groups/2" - } - } - ] -} -``` -
- - -
-Response sample: retrieve all carts with shared carts included - -```json -{ - "data": [ - { - "type": "carts", - "id": "59743e37-0182-5153-9935-77106741a9d2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Purchases", - "isDefault": true, - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/59743e37-0182-5153-9935-77106741a9d2" - } - }, - { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "shared-carts": { - "data": [ - { - "type": "shared-carts", - "id": "8ceae991-0b8d-5c85-9f40-06c4c04fc7f4" - } - ] - } - } - }, - { - "type": "carts", - "id": "2b72635a-9363-56f5-9ba7-55631b8ad71e", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "New", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 10206, - "taxTotal": 14666, - "subtotal": 102063, - "grandTotal": 91857 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10206, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2b72635a-9363-56f5-9ba7-55631b8ad71e" - }, - "relationships": { - "shared-carts": { - "data": [ - { - "type": "shared-carts", - "id": "180ab2c2-60be-5ed4-8158-abee52d9d640" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=shared-carts" - }, - "included": [ - { - "type": "shared-carts", - "id": "8ceae991-0b8d-5c85-9f40-06c4c04fc7f4", - "attributes": { - "idCompanyUser": "72778771-2020-574f-bbaf-05da5889e79e", - "idCartPermissionGroup": 1 - }, - "links": { - "self": "https://glue.mysprykershop.com/shared-carts/8ceae991-0b8d-5c85-9f40-06c4c04fc7f4" - } - }, - { - "type": "shared-carts", - "id": "180ab2c2-60be-5ed4-8158-abee52d9d640", - "attributes": { - "idCompanyUser": "72778771-2020-574f-bbaf-05da5889e79e", - "idCartPermissionGroup": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/shared-carts/180ab2c2-60be-5ed4-8158-abee52d9d640" - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with included information about shared carts, and the company users they are shared with - -```json -{ - "data": [ - { - "type": "carts", - "id": "dc16f734-968d-5a45-92b7-aae5f804f77c", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null, - "priceToPay": null - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/dc16f734-968d-5a45-92b7-aae5f804f77c?include=shared-carts,company-users" - } - }, - { - "type": "carts", - "id": "0c3ec260-694a-5cec-b78c-d37d32f92ee9", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "CHF", - "store": "DE", - "name": "Weekly office", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 1999, - "subtotal": 12522, - "grandTotal": 12522, - "priceToPay": 12522 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9?include=shared-carts,company-users" - }, - "relationships": { - "shared-carts": { - "data": [ - { - "type": "shared-carts", - "id": "79e91e88-b83a-5095-aa64-b3914bdd4863" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=shared-carts,company-users" - }, - "included": [ - { - "type": "company-users", - "id": "2816dcbd-855e-567e-b26f-4d57f3310bb8", - "attributes": { - "isActive": true, - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/company-users/2816dcbd-855e-567e-b26f-4d57f3310bb8" - } - }, - { - "type": "shared-carts", - "id": "79e91e88-b83a-5095-aa64-b3914bdd4863", - "attributes": { - "idCompanyUser": "2816dcbd-855e-567e-b26f-4d57f3310bb8", - "idCartPermissionGroup": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/shared-carts/79e91e88-b83a-5095-aa64-b3914bdd4863" - }, - "relationships": { - "company-users": { - "data": [ - { - "type": "company-users", - "id": "2816dcbd-855e-567e-b26f-4d57f3310bb8" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with cart rules included - -```json -{ - "data": [ - { - "type": "carts", - "id": "59743e37-0182-5153-9935-77106741a9d2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Purchases", - "isDefault": true, - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/59743e37-0182-5153-9935-77106741a9d2" - } - }, - { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - { - "type": "carts", - "id": "2b72635a-9363-56f5-9ba7-55631b8ad71e", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "New", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 10206, - "taxTotal": 14666, - "subtotal": 102063, - "grandTotal": 91857 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10206, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2b72635a-9363-56f5-9ba7-55631b8ad71e" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=cart-rules" - }, - "included": [ - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 10206, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with the applied vouchers included - -```json -{ - "data": [ - { - "type": "carts", - "id": "976af32f-80f6-5f69-878f-4ea549ee0830", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 1663, - "taxTotal": 5046, - "subtotal": 33265, - "grandTotal": 31602, - "priceToPay": 31602 - }, - "discounts": [ - { - "displayName": "5% discount on all white products", - "amount": 1663, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830?include=vouchers" - }, - "relationships": { - "vouchers": { - "data": [ - { - "type": "vouchers", - "id": "sprykerya1y" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=vouchers" - }, - "included": [ - { - "type": "vouchers", - "id": "sprykerya1y", - "attributes": { - "amount": 1663, - "code": "sprykerya1y", - "discountType": "voucher", - "displayName": "5% discount on all white products", - "isExclusive": false, - "expirationDateTime": "2021-02-28 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/cart-codes/sprykerya1y" - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with promotional items included - -```json -{ - "data": [ - { - "type": "carts", - "id": "e877356a-5d8f-575e-aacc-c790eeb20a27", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Everyday purchases", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 17352, - "taxTotal": 19408, - "subtotal": 173517, - "grandTotal": 156165, - "priceToPay": 56165 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 17352, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27" - }, - "relationships": { - "promotional-items": { - "data": [ - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=promotional-items" - }, - "included": [ - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a", - "attributes": { - "sku": "112", - "quantity": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/promotional-items/bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with the applied gift cards - -```json -{ - "data": [ - { - "type": "carts", - "id": "e877356a-5d8f-575e-aacc-c790eeb20a27", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Everyday purchases", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 17145, - "taxTotal": 19408, - "subtotal": 171447, - "grandTotal": 154302, - "priceToPay": 54302 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 17145, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27" - }, - "relationships": { - "gift-cards": { - "data": [ - { - "type": "gift-cards", - "id": "GC-23RLC8H1-20" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=vouchers,gift-cards" - }, - "included": [ - { - "type": "gift-cards", - "id": "GC-23RLC8H1-20", - "attributes": { - "code": "GC-23RLC8H1-20", - "name": "Gift Card 1000", - "value": 100000, - "currencyIsoCode": "EUR", - "actualValue": 100000, - "isActive": true - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/e877356a-5d8f-575e-aacc-c790eeb20a27/cart-codes/GC-23RLC8H1-20" - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with items, respective concrete products, and their product options included - -```json -{ - "data": [ - { - "type": "carts", - "id": "8fc45eda-cddf-5fec-8291-e2e5f8014398", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Christmas presents", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 19952, - "taxTotal": 31065, - "subtotal": 214518, - "grandTotal": 194566, - "priceToPay": 194566 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 19952, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398?include=items,concrete-products,product-options" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "181_31995510-3-5" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=items,concrete-products,product-options" - }, - "included": [ - { - "type": "product-options", - "id": "OP_1_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_1_year_waranty", - "optionName": "One (1) year limited warranty", - "price": 0, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_1_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_2_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_2_year_waranty", - "optionName": "Two (2) year limited warranty", - "price": 1000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_2_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_3_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 2000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_3_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_gift_wrapping" - } - }, - { - "type": "concrete-products", - "id": "181_31995510", - "attributes": { - "sku": "181_31995510", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Samsung Galaxy Tab S2 SM-T813", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "internal_memory": "3 GB", - "processor_model": "APQ8076", - "digital_zoom": "4 x", - "storage_media": "flash", - "brand": "Samsung", - "color": "Pink" - }, - "superAttributesDefinition": [ - "internal_memory", - "storage_media", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T813", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "internal_memory": "Max internal memory", - "processor_model": "Processor model", - "digital_zoom": "Digital zoom", - "storage_media": "Storage media", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_1_year_waranty" - }, - { - "type": "product-options", - "id": "OP_2_year_waranty" - }, - { - "type": "product-options", - "id": "OP_3_year_waranty" - }, - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - { - "type": "items", - "id": "181_31995510-3-5", - "attributes": { - "sku": "181_31995510", - "quantity": 6, - "groupKey": "181_31995510-3-5", - "abstractSku": "181", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 33253, - "sumPrice": 199518, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33253, - "sumGrossPrice": 199518, - "unitTaxAmountFullAggregation": 5177, - "sumTaxAmountFullAggregation": 31065, - "sumSubtotalAggregation": 214518, - "unitSubtotalAggregation": 35753, - "unitProductOptionPriceAggregation": 2500, - "sumProductOptionPriceAggregation": 15000, - "unitDiscountAmountAggregation": 3325, - "sumDiscountAmountAggregation": 19952, - "unitDiscountAmountFullAggregation": 3325, - "sumDiscountAmountFullAggregation": 19952, - "unitPriceToPayAggregation": 32428, - "sumPriceToPayAggregation": 194566 - }, - "salesUnit": null, - "selectedProductOptions": [ - { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 3000 - }, - { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 12000 - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398/items/181_31995510-3-5" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "181_31995510" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with their concrete products and the product labels assigned to the products in the carts - -```json -{ - "data": [ - { - "type": "carts", - "id": "0c3ec260-694a-5cec-b78c-d37d32f92ee9", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "CHF", - "store": "DE", - "name": "Weekly office", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 538, - "subtotal": 3369, - "grandTotal": 3369, - "priceToPay": 3369 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9?include=items,concrete-products,product-labels" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "421511" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/carts?include=items,concrete-products,product-labels" - }, - "included": [ - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 3, - "frontEndReference": "sale" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - }, - { - "type": "concrete-products", - "id": "421511", - "attributes": { - "sku": "421511", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": 4.3, - "reviewCount": 4, - "name": "Parker ballpoint pen URBAN Premium S0911450 M refill, blue", - "description": "In transparent color tones with lightly curved body.

* Line width: 0.5 mm * type designation of the refill: Slider 774 * refill exchangeable * printing mechanism * waterproof * design of the grip zone: round * tip material: stainless steel", - "attributes": { - "material": "metal", - "wischfest": "No", - "abwischbar": "No", - "wasserfest": "No", - "nachfuellbar": "No", - "schreibfarbe": "blue", - "brand": "Parker" - }, - "superAttributesDefinition": [ - "material" - ], - "metaTitle": "", - "metaKeywords": "Schreibgeräte,Schreibgeräte,Kugelschreiber,Kugelschreiber,Kulis,Kulis,Kulischreiber,Kulischreiber", - "metaDescription": "", - "attributeNames": { - "material": "Material", - "wischfest": "Smudge-resistant", - "abwischbar": "Wipeable", - "wasserfest": "Watertight", - "nachfuellbar": "Refillable", - "schreibfarbe": "Writing color", - "brand": "Brand" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/421511" - }, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - { - "type": "items", - "id": "421511", - "attributes": { - "sku": "421511", - "quantity": "1", - "groupKey": "421511", - "abstractSku": "M21759", - "amount": null, - "calculations": { - "unitPrice": 3369, - "sumPrice": 3369, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 3369, - "sumGrossPrice": 3369, - "unitTaxAmountFullAggregation": 538, - "sumTaxAmountFullAggregation": 538, - "sumSubtotalAggregation": 3369, - "unitSubtotalAggregation": 3369, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 3369, - "sumPriceToPayAggregation": 3369 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9/items/421511" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "421511" - } - ] - } - } - } - ] -} -``` -

- -
-Response sample: retrieve all carts with product offers included - -```json -{ - "data": [ - { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/items?include=items,concrete-products,product-offers" - }, - "included": [ - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- - -
-Response sample: retrieve all carts with product offers and product offer availabilities included - -```json -{ - "data": [ - { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/items?include=items,concrete-products,product-offers,product-offer-availabilities" - }, - "included": [ - { - "type": "product-offer-availabilities", - "id": "offer48", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with product offers and product offer prices included - -```json -{ - "data": { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - }, - "links": { - "self": "https://glue.mysprykershop.com/items?include=items,concrete-products,product-offers,product-offer-prices" - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer48", - "attributes": { - "price": 9861, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9861, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 10650, - "netAmount": 10500, - "quantity": 3 - }, - { - "grossAmount": 10580, - "netAmount": 10450, - "quantity": 9 - }, - { - "grossAmount": 10520, - "netAmount": 10400, - "quantity": 17 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve all carts with merchants included - -```json -{ - "data": [ - { - "type": "carts", - "id": "61ab15e9-e24a-5dec-a1ef-fc333bd88b0a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 20271, - "subtotal": 126960, - "grandTotal": 126960, - "priceToPay": 126960 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/items?include=merchants" - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms



(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information



We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information



Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478", - "quantity": 12, - "groupKey": "020_21081478", - "abstractSku": "020", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 10580, - "sumPrice": 126960, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10580, - "sumGrossPrice": 126960, - "unitTaxAmountFullAggregation": 1689, - "sumTaxAmountFullAggregation": 20271, - "sumSubtotalAggregation": 126960, - "unitSubtotalAggregation": 10580, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10580, - "sumPriceToPayAggregation": 126960 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items/020_21081478" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- - - -**General cart information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| priceMode | String | Price mode that was active when the cart was created. | -| currency | String | Currency that was selected when the cart was created. | -| store | String | Store for which the cart was created. | -| name | String | Specifies a cart name.
The field is available in multi-cart environments only. | -| isDefault | Boolean | Specifies whether the cart is the default one for the customer.
The field is available in multi-cart environments only. | - -**Discount information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| displayName | String | Discount name. | -| amount | Integer | Discount amount applied to the cart. | -| code | String | Discount code applied to the cart. | - -**Totals** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| expenseTotal | String | Total amount of expenses (including, for example, shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the cart. | -| taxTotal | Integer | Total amount of taxes to be paid. | -| subTotal | Integer | Subtotal of the cart. | -| grandTotal | Integer | Grand total of the cart. | -| selectedProductOptions | array | List of attributes describing the product options that were added to cart with the product. | -| priceToPay| Integer | Final price to pay after discounts with additions. | - -**Product options** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| selectedProductOptions.optionGroupName | String | Name of the group to which the option belongs. | -| selectedProductOptions.sku | String | SKU of the product option. | -| selectedProductOptions.optionName | String | Product option name. | -| selectedProductOptions.price | Integer | Product option price in cents. | -| selectedProductOptions.currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | - -**Included resource attributes** - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | --- | -| promotional-items | id | String | Unique identifier of the promotional item. The ID can be used to apply the promotion to the given purchase. | -| promotional-items | sku | String | SKU of the promoted abstract product. | -| promotional-items | quantity | Integer | Specifies how many promotions can be applied to the given purchase. | -| product-options | optionGroupName | String | Name of the group to which the option belongs. | -| product-options | sku | String | SKU of the product option. | -| product-options | optionName | String | Product option name. | -| product-options | price | Integer | Product option price in cents. | -| product-options | currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | -| vouchers, cart-rules | displayName | String | Discount name displayed on the Storefront. | -| vouchers, cart-rules | amount | Integer | Amount of the provided discount. | -| vouchers, cart-rules | code | String | Discount code. | -| vouchers, cart-rules | discountType | String | Discount type. | -| vouchers, cart-rules | isExclusive | Boolean | Discount exclusivity. | -| vouchers, cart-rules | expirationDateTime | DateTimeUtc | Date and time on which the discount expires. | -| vouchers, cart-rules | discountPromotionAbstractSku | String | SKU of the products to which the discount applies. If the discount can be applied to any product, the value is `null`. | -| vouchers, cart-rules | discountPromotionQuantity | Integer | Specifies the amount of the product required to be able to apply the discount. If the minimum number is `0`, the value is `null`. | -| shared-carts | idCompanyUser | String | Unique identifier of the [company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html) with whom the cart is shared. | -| shared-carts | idCartPermissionGroup | Integer | Unique identifier of the cart permission group that describes the permissions granted to the user with whom the cart is shared. | -| cart-permission-groups | name | String | Permission group name. | -| cart-permission-groups | isDefault | Boolean | Defines if the permission group is applied to shared carts by default. | -| company-users | id | String | Unique identifier of the [company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html) with whom the cart is shared. | -| company-users | isActive | Boolean | Defines if the [company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html) is active. | -| company-users | isDefault | Boolean | Defines if the [company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html) is default for the [customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -For the attributes of the included resources, see: -* [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html#retrieve-a-concrete-product) -* [Add an item to a registered user's cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-items-in-carts-of-registered-users.html#add-an-item-to-a-registered-users-cart) -* [Managing gift cards of registered users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/carts-of-registered-users/managing-gift-cards-of-registered-users.html) -* [Retrieving product labels](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) -* [Retrieving product offer prices](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) -* [Retrieving product availability](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-availability.html#product-offer-availability-response-attributes) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) - -## Retrieve a registered user's cart - -To retrieve a registered user's cart, send the request: - -*** -`GET` {% raw %}**/carts/*{{cart_uuid}}***{% endraw %} -*** - - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](#create-a-cart) or [retrieve a registered user's cart](#retrieve-registered-users-carts) to get it. | - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer or company user to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html#authenticate-as-a-customer) or [authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html#authenticate-as-a-company-user). | - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • items
  • cart-permission-groups
  • shared-carts
  • company-users
  • cart-rules
  • promotional-items
  • vouchers
  • gift-cards
  • concrete-products
  • product-options
  • product-labels
  • product-offers
  • product-offer-availabilities
  • product-offer-prices
  • merchants
| - -{% info_block infoBox "Info" %} - -* To retrieve all the product options of the item in a cart, include `items`, `concrete-products`, and `product-options`. -* To retrieve product labels of the products in a cart, include `items`, `concrete-products`, and `product-labels`. -* To retrieve product offers, include `items`, `concrete-products`, and `product-offers`. -* To retrieve product offer availabilities, include `items`, `concrete-products`, `product-offers`, and `product-offer-availabilities`. -* To retrieve product offer prices, include `items`, `concrete-products`, `product-offers`, and `product-offer-prices`. - -{% endinfo_block %} - - - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart. | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4?include=items` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart with its items included. | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4?include=cart-permission-groups` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart with its cart permissions included. | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4?include=shared-carts` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart with details on the shared carts. | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4?include=shared-carts,company-users` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart with information about the shared carts and the company uses they are shared with. | -| `GET https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4?include=cart-rules` | Retrieve the `2fd32609-b6b0-5993-9254-8d2f271941e4` cart with the cart rules. | -| `GET https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2?include=promotional-items` | Retrieve the `1ce91011-8d60-59ef-9fe0-4493ef3628b2` cart with its promotional items. | -| `GET https://glue.mysprykershop.com/carts/8ef901fe-fe47-5569-9668-2db890dbee6d?include=gift-cards` | Retrieve the `8ef901fe-fe47-5569-9668-2db890dbee6` cart with detailed information on its gift cards. | -| `GET https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398?include=items,concrete-products,product-options` | Retrieve the `8fc45eda-cddf-5fec-8291-e2e5f8014398` cart with items, concrete products, and their product options. | -| `GET https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830?include=vouchers` | Retrieve the `976af32f-80f6-5f69-878f-4ea549ee0830` cart with detailed information on its vouchers. | -| `GET https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9?include=items,concrete-products,product-labels` | Retrieve the `0c3ec260-694a-5cec-b78c-d37d32f92ee9` cart with information about the product labels assigned to the products in the cart. | -| `GET https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff?include=items,concrete-products,product-offers` | Retrieve the `bef3732e-bc7a-5c07-a40c-f38caf1c40ff` cart with details on product offers.| -| `GET https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff?include=items,concrete-products,product-offers,product-offer-availabilities` | Retrieve the `bef3732e-bc7a-5c07-a40c-f38caf1c40ff` cart with details on product offers and product offer availabilities.| -| `GET https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff?include=items,concrete-products,product-offers,product-offer-prices` | Retrieve the `bef3732e-bc7a-5c07-a40c-f38caf1c40ff` cart with details on product offers and product offer prices.| -| `GET https://glue.mysprykershop.com/carts/54a8290f-a2f6-58db-ae5d-ad4d04aad6ae?include=items,merchants` | Retrieve the `54a8290f-a2f6-58db-ae5d-ad4d04aad6ae` cart with detailed information on merchants. | - - -### Response - -
-Response sample: retrieve a cart - -```json -{ - "data": { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - } - } -} -``` -
- - -
-Response sample: retrieve a cart with its items included - -```json -{ - "data": { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "421479" - }, - { - "type": "items", - "id": "575260" - } - ] - } - } - }, - "included": [ - { - "type": "items", - "id": "421479", - "attributes": { - "sku": "421479", - "quantity": 2, - "groupKey": "421479", - "abstractSku": "M21744", - "amount": null, - "calculations": { - "unitPrice": 442, - "sumPrice": 884, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 442, - "sumGrossPrice": 884, - "unitTaxAmountFullAggregation": 64, - "sumTaxAmountFullAggregation": 127, - "sumSubtotalAggregation": 884, - "unitSubtotalAggregation": 442, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 44, - "sumDiscountAmountAggregation": 88, - "unitDiscountAmountFullAggregation": 44, - "sumDiscountAmountFullAggregation": 88, - "unitPriceToPayAggregation": 398, - "sumPriceToPayAggregation": 796 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4/items/421479" - } - }, - { - "type": "items", - "id": "575260", - "attributes": { - "sku": "575260", - "quantity": 1, - "groupKey": "575260", - "abstractSku": "M1028062", - "amount": null, - "calculations": { - "unitPrice": 28767, - "sumPrice": 28767, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 28767, - "sumGrossPrice": 28767, - "unitTaxAmountFullAggregation": 4133, - "sumTaxAmountFullAggregation": 4134, - "sumSubtotalAggregation": 28767, - "unitSubtotalAggregation": 28767, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2877, - "sumDiscountAmountAggregation": 2877, - "unitDiscountAmountFullAggregation": 2877, - "sumDiscountAmountFullAggregation": 2877, - "unitPriceToPayAggregation": 25890, - "sumPriceToPayAggregation": 25890 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4/items/575260" - } - } - ] -} -``` -
- - -
-Response sample: retrieve a cart with its cart permissions included - -```json -{ - "data": { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "cart-permission-groups": { - "data": [ - { - "type": "cart-permission-groups", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "cart-permission-groups", - "id": "1", - "attributes": { - "name": "READ_ONLY", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-permission-groups/1" - } - } - ] -} -``` -
- - - -
-Response sample: retrieve a cart with the details on the shared carts - -```json -{ - "data": { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "shared-carts": { - "data": [ - { - "type": "shared-carts", - "id": "8ceae991-0b8d-5c85-9f40-06c4c04fc7f4" - } - ] - } - } - }, - "included": [ - { - "type": "shared-carts", - "id": "8ceae991-0b8d-5c85-9f40-06c4c04fc7f4", - "attributes": { - "idCompanyUser": "72778771-2020-574f-bbaf-05da5889e79e", - "idCartPermissionGroup": 1 - }, - "links": { - "self": "https://glue.mysprykershop.com/shared-carts/8ceae991-0b8d-5c85-9f40-06c4c04fc7f4" - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with the information about the shared carts and the company users they are shared with - -```json -{ - "data": { - "type": "carts", - "id": "0c3ec260-694a-5cec-b78c-d37d32f92ee9", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "CHF", - "store": "DE", - "name": "Weekly office", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 1999, - "subtotal": 12522, - "grandTotal": 12522, - "priceToPay": 12522 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9?include=shared-carts,company-users" - }, - "relationships": { - "shared-carts": { - "data": [ - { - "type": "shared-carts", - "id": "79e91e88-b83a-5095-aa64-b3914bdd4863" - } - ] - } - } - }, - "included": [ - { - "type": "company-users", - "id": "2816dcbd-855e-567e-b26f-4d57f3310bb8", - "attributes": { - "isActive": true, - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/company-users/2816dcbd-855e-567e-b26f-4d57f3310bb8" - } - }, - { - "type": "shared-carts", - "id": "79e91e88-b83a-5095-aa64-b3914bdd4863", - "attributes": { - "idCompanyUser": "2816dcbd-855e-567e-b26f-4d57f3310bb8", - "idCartPermissionGroup": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/shared-carts/79e91e88-b83a-5095-aa64-b3914bdd4863" - }, - "relationships": { - "company-users": { - "data": [ - { - "type": "company-users", - "id": "2816dcbd-855e-567e-b26f-4d57f3310bb8" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with the cart rules included - -```json -{ - "data": { - "type": "carts", - "id": "2fd32609-b6b0-5993-9254-8d2f271941e4", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": false, - "totals": { - "expenseTotal": 0, - "discountTotal": 2965, - "taxTotal": 4261, - "subtotal": 29651, - "grandTotal": 26686 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2965, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/2fd32609-b6b0-5993-9254-8d2f271941e4" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 2965, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- - - -
-Response sample: retrieve a cart with its promotional items - -```json -{ - "data": { - "type": "carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 11113, - "taxTotal": 15107, - "subtotal": 111128, - "grandTotal": 100015 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 11113, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2" - }, - "relationships": { - "promotional-items": { - "data": [ - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - ] - } - } - }, - "included": [ - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a", - "attributes": { - "sku": "112", - "quantity": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/promotional-items/bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - } - ] -} -``` -
- - -
-Response sample: retrieve a cart with the detailed information on its gift cards - -```json -{ - "data": { - "type": "carts", - "id": "8ef901fe-fe47-5569-9668-2db890dbee6d", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 4200, - "taxTotal": 6035, - "subtotal": 42000, - "grandTotal": 37800, - "priceToPay": 17800 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 4200, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8ef901fe-fe47-5569-9668-2db890dbee6d" - }, - "relationships": { - "gift-cards": { - "data": [ - { - "type": "gift-cards", - "id": "GC-I6UB6O56-20" - } - ] - } - } - }, - "included": [ - { - "type": "gift-cards", - "id": "GC-I6UB6O56-20", - "attributes": { - "code": "GC-I6UB6O56-20", - "name": "Gift Card 200", - "value": 20000, - "currencyIsoCode": "EUR", - "actualValue": 20000, - "isActive": true - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8ef901fe-fe47-5569-9668-2db890dbee6d/cart-codes/GC-I6UB6O56-20" - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with items, concrete products, and their product options - -```json -{ - "data": { - "type": "carts", - "id": "8fc45eda-cddf-5fec-8291-e2e5f8014398", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Christmas presents", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 19952, - "taxTotal": 31065, - "subtotal": 214518, - "grandTotal": 194566, - "priceToPay": 194566 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 19952, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398?include=items,concrete-products,product-options" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "181_31995510-3-5" - } - ] - } - } - }, - "included": [ - { - "type": "product-options", - "id": "OP_1_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_1_year_waranty", - "optionName": "One (1) year limited warranty", - "price": 0, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_1_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_2_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_2_year_waranty", - "optionName": "Two (2) year limited warranty", - "price": 1000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_2_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_3_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 2000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_3_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_gift_wrapping" - } - }, - { - "type": "concrete-products", - "id": "181_31995510", - "attributes": { - "sku": "181_31995510", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Samsung Galaxy Tab S2 SM-T813", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "internal_memory": "3 GB", - "processor_model": "APQ8076", - "digital_zoom": "4 x", - "storage_media": "flash", - "brand": "Samsung", - "color": "Pink" - }, - "superAttributesDefinition": [ - "internal_memory", - "storage_media", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T813", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "internal_memory": "Max internal memory", - "processor_model": "Processor model", - "digital_zoom": "Digital zoom", - "storage_media": "Storage media", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_1_year_waranty" - }, - { - "type": "product-options", - "id": "OP_2_year_waranty" - }, - { - "type": "product-options", - "id": "OP_3_year_waranty" - }, - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - { - "type": "items", - "id": "181_31995510-3-5", - "attributes": { - "sku": "181_31995510", - "quantity": 6, - "groupKey": "181_31995510-3-5", - "abstractSku": "181", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 33253, - "sumPrice": 199518, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33253, - "sumGrossPrice": 199518, - "unitTaxAmountFullAggregation": 5177, - "sumTaxAmountFullAggregation": 31065, - "sumSubtotalAggregation": 214518, - "unitSubtotalAggregation": 35753, - "unitProductOptionPriceAggregation": 2500, - "sumProductOptionPriceAggregation": 15000, - "unitDiscountAmountAggregation": 3325, - "sumDiscountAmountAggregation": 19952, - "unitDiscountAmountFullAggregation": 3325, - "sumDiscountAmountFullAggregation": 19952, - "unitPriceToPayAggregation": 32428, - "sumPriceToPayAggregation": 194566 - }, - "salesUnit": null, - "selectedProductOptions": [ - { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 3000 - }, - { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 12000 - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398/items/181_31995510-3-5" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "181_31995510" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with the detailed information on its vouchers - -```json -{ - "data": { - "type": "carts", - "id": "976af32f-80f6-5f69-878f-4ea549ee0830", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 25766, - "taxTotal": 25407, - "subtotal": 184893, - "grandTotal": 159127, - "priceToPay": 159127 - }, - "discounts": [ - { - "displayName": "5% discount on all white products", - "amount": 7277, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 18489, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830?include=vouchers" - }, - "relationships": { - "vouchers": { - "data": [ - { - "type": "vouchers", - "id": "sprykercu2d" - } - ] - } - } - }, - "included": [ - { - "type": "vouchers", - "id": "sprykercu2d", - "attributes": { - "amount": 7277, - "code": "sprykercu2d", - "discountType": "voucher", - "displayName": "5% discount on all white products", - "isExclusive": false, - "expirationDateTime": "2021-02-27 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/cart-codes/sprykercu2d" - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with information about the product labels assigned to the products in the cart - -```json -{ - "data": { - "type": "carts", - "id": "0c3ec260-694a-5cec-b78c-d37d32f92ee9", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "CHF", - "store": "DE", - "name": "Weekly office", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 538, - "subtotal": 3369, - "grandTotal": 3369, - "priceToPay": 3369 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9?include=items,concrete-products,product-labels" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "421511" - } - ] - } - } - }, - "included": [ - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 3, - "frontEndReference": "sale" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - }, - { - "type": "concrete-products", - "id": "421511", - "attributes": { - "sku": "421511", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": 4.3, - "reviewCount": 4, - "name": "Parker ballpoint pen URBAN Premium S0911450 M refill, blue", - "description": "In transparent color tones with lightly curved body.

* Line width: 0.5 mm * type designation of the refill: Slider 774 * refill exchangeable * printing mechanism * waterproof * design of the grip zone: round * tip material: stainless steel", - "attributes": { - "material": "metal", - "wischfest": "No", - "abwischbar": "No", - "wasserfest": "No", - "nachfuellbar": "No", - "schreibfarbe": "blue", - "brand": "Parker" - }, - "superAttributesDefinition": [ - "material" - ], - "metaTitle": "", - "metaKeywords": "Schreibgeräte,Schreibgeräte,Kugelschreiber,Kugelschreiber,Kulis,Kulis,Kulischreiber,Kulischreiber", - "metaDescription": "", - "attributeNames": { - "material": "Material", - "wischfest": "Smudge-resistant", - "abwischbar": "Wipeable", - "wasserfest": "Watertight", - "nachfuellbar": "Refillable", - "schreibfarbe": "Writing color", - "brand": "Brand" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/421511" - }, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - { - "type": "items", - "id": "421511", - "attributes": { - "sku": "421511", - "quantity": "1", - "groupKey": "421511", - "abstractSku": "M21759", - "amount": null, - "calculations": { - "unitPrice": 3369, - "sumPrice": 3369, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 3369, - "sumGrossPrice": 3369, - "unitTaxAmountFullAggregation": 538, - "sumTaxAmountFullAggregation": 538, - "sumSubtotalAggregation": 3369, - "unitSubtotalAggregation": 3369, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 3369, - "sumPriceToPayAggregation": 3369 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9/items/421511" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "421511" - } - ] - } - } - } - ] -} -``` -

- -
-Response sample: retrieve a cart with details on product offers - -```json -{ - "data": { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - }, - "included": [ - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with details on product offers and product offer availabilities - -```json -{ - "data": { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-availabilities", - "id": "offer89", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer89" - } - ] - } - } - }, - { - "type": "product-offer-availabilities", - "id": "offer48", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a cart with details on product offers and product offer prices - -```json -{ - "data": { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 4972, - "subtotal": 31140, - "grandTotal": 31140, - "priceToPay": 31140 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer89", - "attributes": { - "price": 9342, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9342, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 10065, - "netAmount": 10050, - "quantity": 2 - }, - { - "grossAmount": 10058, - "netAmount": 10045, - "quantity": 7 - }, - { - "grossAmount": 10052, - "netAmount": 10040, - "quantity": 18 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer89" - } - ] - } - } - }, - { - "type": "product-offer-prices", - "id": "offer48", - "attributes": { - "price": 9861, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9861, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 10650, - "netAmount": 10500, - "quantity": 3 - }, - { - "grossAmount": 10580, - "netAmount": 10450, - "quantity": 9 - }, - { - "grossAmount": 10520, - "netAmount": 10400, - "quantity": 17 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": "3", - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 10380, - "sumPrice": 31140, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10380, - "sumGrossPrice": 31140, - "unitTaxAmountFullAggregation": 1657, - "sumTaxAmountFullAggregation": 4972, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 10380, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10380, - "sumPriceToPayAggregation": 31140 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} - -``` - -
- -
-Response sample: retrieve a cart with detailed information on merchants - -```json -{ - "data": { - "type": "carts", - "id": "54a8290f-a2f6-58db-ae5d-ad4d04aad6ae", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Test1", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 822, - "subtotal": 12572, - "grandTotal": 12572, - "priceToPay": 12572 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/54a8290f-a2f6-58db-ae5d-ad4d04aad6ae?include=items,merchants" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "109_19416433" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "items", - "id": "109_19416433", - "attributes": { - "sku": "109_19416433", - "quantity": "1", - "groupKey": "109_19416433", - "abstractSku": "109", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 12572, - "sumPrice": 12572, - "taxRate": 7, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 12572, - "sumGrossPrice": 12572, - "unitTaxAmountFullAggregation": 822, - "sumTaxAmountFullAggregation": 822, - "sumSubtotalAggregation": 12572, - "unitSubtotalAggregation": 12572, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 12572, - "sumPriceToPayAggregation": 12572 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/54a8290f-a2f6-58db-ae5d-ad4d04aad6ae/items/109_19416433" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- -For the attributes of carts of registered users and included resources, see [Retrieve a registered user's carts](#retrieve-registered-users-carts-response-attributes). - -For the attributes of the included resources, see: -* [Add an item to a registered user's cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-items-in-carts-of-registered-users.html#add-an-item-to-a-registered-users-cart) -* [Managing gift cards of registered users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/carts-of-registered-users/managing-gift-cards-of-registered-users.html). -* [Cart permission groups](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/sharing-company-user-carts/retrieving-cart-permission-groups.html). -* [Managing items in carts of registered users](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-items-in-carts-of-registered-users.html). -* [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html#retrieve-a-concrete-product) -* [Retrieve product labels](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) -* [Retrieving product offer availability](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-availability.html#product-offer-availability-response-attributes) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) - -## Edit a cart - -You can edit the name of the cart, change the currency and price mode. To do that, send the request: - ---- -`PATCH` {% raw %}**/carts/*{{cart_uuid}}***{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](#create-a-cart) or [retrieve a registered user's carts](#retrieve-registered-users-carts) to get it. | - - - -{% info_block infoBox "Info" %} - -* You can change the price mode only of an empty cart. - -{% endinfo_block %} - - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer or company user to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html#authenticate-as-a-customer) or [authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html#authenticate-as-a-company-user). | -| If-Match | 075d700b908d7e41f751c5d2d4392407 | ✓ | Makes the request conditional. It matches the listed conditional ETags from the headers when retrieving the cart. The patch is applied only if the tag value matches. | - -Request sample: edit a cart - -`https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9` - -```json -{ - "data":{ - "type":"carts", - "attributes":{ - "name":"My Cart with awesome name", - "priceMode":"GROSS_MODE", - "currency":"EUR", - "store":"DE" - } - } -} -``` - - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| name | String | ✓ | Sets the cart name.This field can be set only if you are using the Multiple Carts feature. If you are operating in a single-cart environment, an attempt to set the value will result in an error with the `422 Unprocessable Entry` status code. Cart name should be unique and should not be longer than 30 characters.| -| priceMode | Enum | ✓ | Sets the price mode to be used for the cart. Possible values:
  • GROSS_MODE—prices after tax;
  • NET_MODE—prices before tax.
For details, see [Net & Gross Prices](/docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/net-and-gross-prices-management.html). | -| currency | String | ✓ | Sets the cart currency. | -| store | String | ✓ | Sets the name of the store where to create the cart. | - -### Response - -Response sample: edit a cart - -```json -{ - "data": { - "type": "carts", - "id": "0c3ec260-694a-5cec-b78c-d37d32f92ee9", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart with awesome name", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 63538, - "taxTotal": 79689, - "subtotal": 635381, - "grandTotal": 571843, - "priceToPay": 571843 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/0c3ec260-694a-5cec-b78c-d37d32f92ee9" - } - } -} -``` - -## Delete a cart - -To delete a cart, send the request: - ---- -`DELETE` {% raw %}**/carts/*{{cart_uuid}}***{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %}| Unique identifier of a cart. [Create a cart](#create-a-cart) or [retrieve a registered user's carts](#retrieve-registered-users-carts) to get it. | - - - -{% info_block infoBox "Deleting carts" %} - -You can delete a cart only if a customer has at least one more cart. Deleting a customer's last cart returns the `422 Unprocessable Entry` status code. If you delete the default cart of a customer, another cart is assigned as default automatically. - -{% endinfo_block %} - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer or company user to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html#authenticate-as-a-customer) or [authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html#authenticate-as-a-company-user). | - - -Request sample: delete a cart - -`DELETE https://glue.mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054` - -### Response - -If the cart is deleted successfully, the endpoint returns the `204 No Content` status code. - -## Possible errors - -| CODE | REASON | -| --- | --- | -| 101 | Cart with given uuid not found. | -| 102 | Failed to add an item to cart. | -| 103 | Item with the given group key not found in the cart. | -| 104 | Cart uuid is missing. | -| 105 | Cart could not be deleted. | -| 106 | Cart item could not be deleted. | -| 107 | Failed to create a cart. | -| 109 | Anonymous customer unique id is empty. | -| 110 | Customer already has a cart. | -| 111 | Can’t switch price mode when there are items in the cart. | -| 112 | Store data is invalid. | -| 113 | Cart item could not be added. | -| 114 | Cart item could not be updated. | -| 115 | Unauthorized cart action. | -| 116 | Currency is missing. | -| 117 | Currency is incorrect. | -| 118 | Price mode is missing. | -| 119 | Price mode is incorrect. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-items-in-carts-of-registered-users.md b/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-items-in-carts-of-registered-users.md deleted file mode 100644 index 6dbb81e3bf2..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/carts-of-registered-users/managing-items-in-carts-of-registered-users.md +++ /dev/null @@ -1,1820 +0,0 @@ ---- -title: Managing items in carts of registered users -description: Retrieve details about the items of the registered users' carts, and learn what else you can do with the resource in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- -This endpoint allows managing items in carts of registered users by adding, changing, and deleting them. - - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) -* [Glue API: Measurement Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-measurement-units-feature-integration.html) -* [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Glue API: Promotions & Discounts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-promotions-and-discounts-feature-integration.html) -* [GLUE API: Merchant Offers feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html - - - -## Add an item to a registered user's cart - -To add items to a cart, send the request: - ---- -`POST` {% raw %}**carts/*{{cart_uuid}}*/items**{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html#retrieve-a-registered-users-cart) to get it. | - - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • items
  • product-measurement-units
  • sales-units
  • cart-rules
  • vouchers
  • concrete-products
  • product-options
  • product-offers
  • merchants
| - -{% info_block infoBox "Included resources" %} - -To retrieve all the product options of the item in a cart, include `concrete-products` and `product-options`. - -{% endinfo_block %} - - -
-Request sample: add an item to a registered user's cart - -`POST https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "066_23294028", - "quantity": "3" - } - } -} -``` -
- - -
-Request sample: add an item to a registered user's cart with product measurement units and sales units - -`POST https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items?include=sales-units,product-measurement-units` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 3, - "salesUnit": { - "id": 33, - "amount": 4.5 - } - } - } -} -``` -
- -
-Request sample: add an item to a registered user's cart with cart rules - -`POST https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/items?include=cart-rules` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "077_24584210", - "quantity": "10" - } - } -} -``` -
- -
-Request sample: add an item to a registered user's cart with vouchers - -`POST https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/items?include=vouchers` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "066_23294028", - "quantity": "1" - } - } -} -``` -
- -
-Request sample: add a promotional item to a registered user's cart with cart rules - -{% info_block infoBox "Cart rules" %} - -To add the promotional product to the cart, make sure that the cart fulfills the cart rules for the promotional item. - -{% endinfo_block %} - -`POST https://glue.myspsrykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items?include=cart-rules` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "112_306918001", - "quantity": "1", - "idPromotionalItem": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - } -} -``` -
- -
-Request sample: add an item to a registered user's cart with details on concrete products and product options - -`POST https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398/items?include=concrete-products,product-options` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "181_31995510", - "quantity": 6, - "productOptions": [ - { - "sku": "OP_gift_wrapping" - }, - { - "sku": "OP_3_year_warranty" - } - ] - } - } -} -``` -
- -
-Request sample: add a product offer to a registered user's cart - -`POST http://glue.myspsrykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items?include=items` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "041_25904691", - "quantity": 5, - "productOfferReference": "offer48" - } - } -} -``` -
- - -
-Request sample: add a marketplace product to a registered user's cart - -`POST https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "020_21081478", - "quantity": "6", - "merchantReference": "MER000001" - } - } -} -``` -
- -
-Request sample: add an item to a registered user's cart with details on merchants - -`POST https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items?include=items,merchants` - -```json -{ - "data": { - "type": "items", - "attributes": { - "sku": "020_21081478", - "quantity": "6", - "merchantReference": "MER000001" - } - } -} -``` -
- - - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| sku | String | ✓ | SKU of the concrete product to add to the cart. | -| quantity | Integer | ✓ | Number of items to add to the guest cart. If you add a promotional item, and the number of products exceeds the number of promotions, the exceeding items are added without the promotional benefits. | -| merchantReference | String | Required when adding a merchant product. | Unique identifier of the merchant the product of which to add to the cart. | -| salesUnit | Object | | List of attributes defining the sales unit to be used for item amount calculation. | -| salesUnit.id | Integer | | Unique identifier of the sales units to calculate the item amount in. | -| salesUnit.amount | Integer | | Amount of the product in the defined sales units. | -| idPromotionalItem | String | | Unique identifier of a promotional item to add to the cart. | -| productOptions | Array | | List of attributes defining the product option to add to the cart. | -| productOptions.sku | String | | Unique identifier of the product option to add to the cart. | -| productOfferReference | String |Required when adding a product offer. |Unique identifier of the product offer to add to the cart. | - -{% info_block infoBox "Conversion" %} - -When defining product amount in sales units, make sure that the correlation between amount and quantity corresponds to the conversion of the defined sales unit. See [Measurement Units feature overview](/docs/scos/user/features/{{page.version}}/measurement-units-feature-overview.html) to learn more. - -{% endinfo_block %} - -{% info_block infoBox "Product options" %} -It is the responsibility of the API Client to track whether the selected items are compatible. For example, the client should not allow a 2-year and a 4-year warranty service to be applied to the same product. The API endpoints allow any combination of items, no matter whether they are compatible or not. - -{% endinfo_block %} - -### Response - -
-Response sample: add an item to a registered user's cart - -```json -{ - "data": { - "type": "carts", - "id": "61ab15e9-e24a-5dec-a1ef-fc333bd88b0a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Christmas presents 1", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 18850, - "subtotal": 118059, - "grandTotal": 118059, - "priceToPay": 118059 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a" - } - } -} -``` -
- - -
-Response sample: add an item to a registered user's cart with product measurement units and sales units - -```json -{ - "data": { - "type": "carts", - "id": "482bdbd6-137f-5b58-bd1c-37f3fa735a16", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Black Friday Conf Bundle", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 3425, - "taxTotal": 4921, - "subtotal": 34247, - "grandTotal": 30822 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 3425, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/482bdbd6-137f-5b58-bd1c-37f3fa735a16" - } - }, - "included": [ - { - "type": "items", - "id": "035_17360369", - "attributes": { - "sku": "035_17360369", - "quantity": "1", - "groupKey": "035_17360369", - "abstractSku": "035", - "amount": null, - "calculations": { - "unitPrice": 29747, - "sumPrice": 29747, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 29747, - "sumGrossPrice": 29747, - "unitTaxAmountFullAggregation": 4275, - "sumTaxAmountFullAggregation": 4275, - "sumSubtotalAggregation": 29747, - "unitSubtotalAggregation": 29747, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2975, - "sumDiscountAmountAggregation": 2975, - "unitDiscountAmountFullAggregation": 2975, - "sumDiscountAmountFullAggregation": 2975, - "unitPriceToPayAggregation": 26772, - "sumPriceToPayAggregation": 26772 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/482bdbd6-137f-5b58-bd1c-37f3fa735a16/items/035_17360369" - } - }, - { - "type": "sales-units", - "id": "33", - "attributes": { - "conversion": 1, - "precision": 100, - "isDisplayed": true, - "isDefault": true, - "productMeasurementUnitCode": "METR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-2/sales-units/33" - } - }, - { - "type": "items", - "id": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 3, - "groupKey": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "abstractSku": "cable-vga-1", - "amount": "4.5", - "calculations": { - "unitPrice": 1500, - "sumPrice": 4500, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1500, - "sumGrossPrice": 4500, - "unitTaxAmountFullAggregation": 215, - "sumTaxAmountFullAggregation": 646, - "sumSubtotalAggregation": 4500, - "unitSubtotalAggregation": 1500, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 150, - "sumDiscountAmountAggregation": 450, - "unitDiscountAmountFullAggregation": 150, - "sumDiscountAmountFullAggregation": 450, - "unitPriceToPayAggregation": 1350, - "sumPriceToPayAggregation": 4050 - }, - "salesUnit": { - "id": 33, - "amount": "4.5" - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/482bdbd6-137f-5b58-bd1c-37f3fa735a16/items/cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33" - }, - "relationships": { - "sales-units": { - "data": [ - { - "type": "sales-units", - "id": "33" - } - ] - } - } - } - ] -} -``` -
- - -
-Response sample: add an item to a registered user's cart with cart rules - -```json -{ - "data": { - "type": "carts", - "id": "976af32f-80f6-5f69-878f-4ea549ee0830", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 14554, - "taxTotal": 20914, - "subtotal": 145540, - "grandTotal": 130986, - "priceToPay": 130986 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 14554, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 14554, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2021-02-27 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - }, - { - "type": "items", - "id": "077_24584210", - "attributes": { - "sku": "077_24584210", - "quantity": "10", - "groupKey": "077_24584210", - "abstractSku": "077", - "amount": null, - "calculations": { - "unitPrice": 14554, - "sumPrice": 145540, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 14554, - "sumGrossPrice": 145540, - "unitTaxAmountFullAggregation": 2091, - "sumTaxAmountFullAggregation": 20914, - "sumSubtotalAggregation": 145540, - "unitSubtotalAggregation": 14554, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 1455, - "sumDiscountAmountAggregation": 14554, - "unitDiscountAmountFullAggregation": 1455, - "sumDiscountAmountFullAggregation": 14554, - "unitPriceToPayAggregation": 13099, - "sumPriceToPayAggregation": 130986 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/items/077_24584210" - } - } - ] -} -``` -
- -
-Response sample: add an item to a registered user's cart with vouchers - -```json -{ - "data": { - "type": "carts", - "id": "976af32f-80f6-5f69-878f-4ea549ee0830", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 25766, - "taxTotal": 25407, - "subtotal": 184893, - "grandTotal": 159127, - "priceToPay": 159127 - }, - "discounts": [ - { - "displayName": "5% discount on all white products", - "amount": 7277, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 18489, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830" - }, - "relationships": { - "vouchers": { - "data": [ - { - "type": "vouchers", - "id": "sprykercu2d" - } - ] - } - } - }, - "included": [ - { - "type": "vouchers", - "id": "sprykercu2d", - "attributes": { - "amount": 7277, - "code": "sprykercu2d", - "discountType": "voucher", - "displayName": "5% discount on all white products", - "isExclusive": false, - "expirationDateTime": "2021-02-27 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/cart-codes/sprykercu2d" - } - }, - { - "type": "items", - "id": "077_24584210", - "attributes": { - "sku": "077_24584210", - "quantity": "10", - "groupKey": "077_24584210", - "abstractSku": "077", - "amount": null, - "calculations": { - "unitPrice": 14554, - "sumPrice": 145540, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 14554, - "sumGrossPrice": 145540, - "unitTaxAmountFullAggregation": 1975, - "sumTaxAmountFullAggregation": 19752, - "sumSubtotalAggregation": 145540, - "unitSubtotalAggregation": 14554, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2183, - "sumDiscountAmountAggregation": 21831, - "unitDiscountAmountFullAggregation": 2183, - "sumDiscountAmountFullAggregation": 21831, - "unitPriceToPayAggregation": 12371, - "sumPriceToPayAggregation": 123709 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/items/077_24584210" - } - }, - { - "type": "items", - "id": "066_23294028", - "attributes": { - "sku": "066_23294028", - "quantity": "1", - "groupKey": "066_23294028", - "abstractSku": "066", - "amount": null, - "calculations": { - "unitPrice": 39353, - "sumPrice": 39353, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 39353, - "sumGrossPrice": 39353, - "unitTaxAmountFullAggregation": 5655, - "sumTaxAmountFullAggregation": 5655, - "sumSubtotalAggregation": 39353, - "unitSubtotalAggregation": 39353, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 3935, - "sumDiscountAmountAggregation": 3935, - "unitDiscountAmountFullAggregation": 3935, - "sumDiscountAmountFullAggregation": 3935, - "unitPriceToPayAggregation": 35418, - "sumPriceToPayAggregation": 35418 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/976af32f-80f6-5f69-878f-4ea549ee0830/items/066_23294028" - } - } - ] -} -``` -
- -
-Response sample: add a promotional item to a registered user's cart without cart-rules relationship - -```json -{ - "data": { - "type": "carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13192, - "taxTotal": 15107, - "subtotal": 113207, - "grandTotal": 100015 - }, - "discounts": [ - { - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "amount": 2079, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 11113, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2" - } - } -} -``` -
- - -
-Response sample: add a promotional item to a registered user's cart with cart-rules relationship - -```json -{ - "data": { - "type": "carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13192, - "taxTotal": 15107, - "subtotal": 113207, - "grandTotal": 100015 - }, - "discounts": [ - { - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "amount": 2079, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 11113, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "6" - }, - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "items", - "id": "134_29759322", - "attributes": { - "sku": "134_29759322", - "quantity": "1", - "groupKey": "134_29759322", - "abstractSku": "134", - "amount": null, - "calculations": { - "unitPrice": 1879, - "sumPrice": 1879, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1879, - "sumGrossPrice": 1879, - "unitTaxAmountFullAggregation": 270, - "sumTaxAmountFullAggregation": 270, - "sumSubtotalAggregation": 1879, - "unitSubtotalAggregation": 1879, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 188, - "sumDiscountAmountAggregation": 188, - "unitDiscountAmountFullAggregation": 188, - "sumDiscountAmountFullAggregation": 188, - "unitPriceToPayAggregation": 1691, - "sumPriceToPayAggregation": 1691 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items/134_29759322" - } - }, - { - "type": "items", - "id": "118_29804739", - "attributes": { - "sku": "118_29804739", - "quantity": "1", - "groupKey": "118_29804739", - "abstractSku": "118", - "amount": null, - "calculations": { - "unitPrice": 6000, - "sumPrice": 6000, - "taxRate": 0, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 6000, - "sumGrossPrice": 6000, - "unitTaxAmountFullAggregation": 0, - "sumTaxAmountFullAggregation": 0, - "sumSubtotalAggregation": 6000, - "unitSubtotalAggregation": 6000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 600, - "sumDiscountAmountAggregation": 600, - "unitDiscountAmountFullAggregation": 600, - "sumDiscountAmountFullAggregation": 600, - "unitPriceToPayAggregation": 5400, - "sumPriceToPayAggregation": 5400 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items/118_29804739" - } - }, - { - "type": "items", - "id": "139_24699831", - "attributes": { - "sku": "139_24699831", - "quantity": "1", - "groupKey": "139_24699831", - "abstractSku": "139", - "amount": null, - "calculations": { - "unitPrice": 3454, - "sumPrice": 3454, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 3454, - "sumGrossPrice": 3454, - "unitTaxAmountFullAggregation": 496, - "sumTaxAmountFullAggregation": 496, - "sumSubtotalAggregation": 3454, - "unitSubtotalAggregation": 3454, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 345, - "sumDiscountAmountAggregation": 345, - "unitDiscountAmountFullAggregation": 345, - "sumDiscountAmountFullAggregation": 345, - "unitPriceToPayAggregation": 3109, - "sumPriceToPayAggregation": 3109 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items/139_24699831" - } - }, - { - "type": "items", - "id": "136_24425591", - "attributes": { - "sku": "136_24425591", - "quantity": 3, - "groupKey": "136_24425591", - "abstractSku": "136", - "amount": null, - "calculations": { - "unitPrice": 33265, - "sumPrice": 99795, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33265, - "sumGrossPrice": 99795, - "unitTaxAmountFullAggregation": 4780, - "sumTaxAmountFullAggregation": 14341, - "sumSubtotalAggregation": 99795, - "unitSubtotalAggregation": 33265, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 3327, - "sumDiscountAmountAggregation": 9980, - "unitDiscountAmountFullAggregation": 3327, - "sumDiscountAmountFullAggregation": 9980, - "unitPriceToPayAggregation": 29938, - "sumPriceToPayAggregation": 89815 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items/136_24425591" - } - }, - { - "type": "items", - "id": "112_306918001-promotion-1", - "attributes": { - "sku": "112_306918001", - "quantity": "1", - "groupKey": "112_306918001-promotion-1", - "abstractSku": "112", - "amount": null, - "calculations": { - "unitPrice": 2079, - "sumPrice": 2079, - "taxRate": 0, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 2079, - "sumGrossPrice": 2079, - "unitTaxAmountFullAggregation": 0, - "sumTaxAmountFullAggregation": 0, - "sumSubtotalAggregation": 2079, - "unitSubtotalAggregation": 2079, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2079, - "sumDiscountAmountAggregation": 2079, - "unitDiscountAmountFullAggregation": 2079, - "sumDiscountAmountFullAggregation": 2079, - "unitPriceToPayAggregation": 0, - "sumPriceToPayAggregation": 0 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/items/112_306918001-promotion-1" - } - }, - { - "type": "cart-rules", - "id": "6", - "attributes": { - "amount": 2079, - "code": null, - "discountType": "cart_rule", - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": "112", - "discountPromotionQuantity": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/6" - } - }, - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 11113, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- -
-Response sample: add an item to a registered user's cart with details on concrete products and product options - -```json - { - "data": { - "type": "carts", - "id": "8fc45eda-cddf-5fec-8291-e2e5f8014398", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Christmas presents", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 19952, - "taxTotal": 31065, - "subtotal": 214518, - "grandTotal": 194566, - "priceToPay": 194566 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 19952, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398" - } - }, - "included": [ - { - "type": "product-options", - "id": "OP_1_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_1_year_waranty", - "optionName": "One (1) year limited warranty", - "price": 0, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_1_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_2_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_2_year_waranty", - "optionName": "Two (2) year limited warranty", - "price": 1000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_2_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_3_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 2000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_3_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_gift_wrapping" - } - }, - { - "type": "concrete-products", - "id": "181_31995510", - "attributes": { - "sku": "181_31995510", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Samsung Galaxy Tab S2 SM-T813", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "internal_memory": "3 GB", - "processor_model": "APQ8076", - "digital_zoom": "4 x", - "storage_media": "flash", - "brand": "Samsung", - "color": "Pink" - }, - "superAttributesDefinition": [ - "internal_memory", - "storage_media", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T813", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "internal_memory": "Max internal memory", - "processor_model": "Processor model", - "digital_zoom": "Digital zoom", - "storage_media": "Storage media", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_1_year_waranty" - }, - { - "type": "product-options", - "id": "OP_2_year_waranty" - }, - { - "type": "product-options", - "id": "OP_3_year_waranty" - }, - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - { - "type": "items", - "id": "181_31995510-3-5", - "attributes": { - "sku": "181_31995510", - "quantity": 6, - "groupKey": "181_31995510-3-5", - "abstractSku": "181", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 33253, - "sumPrice": 199518, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33253, - "sumGrossPrice": 199518, - "unitTaxAmountFullAggregation": 5177, - "sumTaxAmountFullAggregation": 31065, - "sumSubtotalAggregation": 214518, - "unitSubtotalAggregation": 35753, - "unitProductOptionPriceAggregation": 2500, - "sumProductOptionPriceAggregation": 15000, - "unitDiscountAmountAggregation": 3325, - "sumDiscountAmountAggregation": 19952, - "unitDiscountAmountFullAggregation": 3325, - "sumDiscountAmountFullAggregation": 19952, - "unitPriceToPayAggregation": 32428, - "sumPriceToPayAggregation": 194566 - }, - "salesUnit": null, - "selectedProductOptions": [ - { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 3000 - }, - { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 12000 - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/8fc45eda-cddf-5fec-8291-e2e5f8014398/items/181_31995510-3-5" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "181_31995510" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: add a product offer to a registered user's cart - -```json -{ - "data": { - "type": "carts", - "id": "bef3732e-bc7a-5c07-a40c-f38caf1c40ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "newcart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 44988, - "subtotal": 281770, - "grandTotal": 281770, - "priceToPay": 281770 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "041_25904691" - }, - { - "type": "items", - "id": "041_25904691_offer48" - } - ] - } - } - }, - "included": [ - { - "type": "items", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "quantity": 5, - "groupKey": "041_25904691", - "abstractSku": "041", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 1650, - "sumPrice": 8250, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1650, - "sumGrossPrice": 8250, - "unitTaxAmountFullAggregation": 263, - "sumTaxAmountFullAggregation": 1317, - "sumSubtotalAggregation": 8250, - "unitSubtotalAggregation": 1650, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 1650, - "sumPriceToPayAggregation": 8250 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691" - } - }, - { - "type": "items", - "id": "041_25904691_offer48", - "attributes": { - "sku": "041_25904691", - "quantity": 26, - "groupKey": "041_25904691_offer48", - "abstractSku": "041", - "amount": null, - "productOfferReference": "offer48", - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 10520, - "sumPrice": 273520, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10520, - "sumGrossPrice": 273520, - "unitTaxAmountFullAggregation": 1680, - "sumTaxAmountFullAggregation": 43671, - "sumSubtotalAggregation": 273520, - "unitSubtotalAggregation": 10520, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10520, - "sumPriceToPayAggregation": 273520 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/bef3732e-bc7a-5c07-a40c-f38caf1c40ff/items/041_25904691_offer48" - } - } - ] -} -``` - -
- -
-Response sample: add a marketplace product to a registered user's cart - -```json -{ - "data": { - "type": "carts", - "id": "61ab15e9-e24a-5dec-a1ef-fc333bd88b0a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 10135, - "subtotal": 63480, - "grandTotal": 63480, - "priceToPay": 63480 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a" - } - } -} -``` -
- - -
-Response sample: add an item to a registered user's cart with details on merchants - -```json -{ - "data": { - "type": "carts", - "id": "61ab15e9-e24a-5dec-a1ef-fc333bd88b0a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 20271, - "subtotal": 126960, - "grandTotal": 126960, - "priceToPay": 126960 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "020_21081478" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms



(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information



We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information



Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478", - "quantity": 12, - "groupKey": "020_21081478", - "abstractSku": "020", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 10580, - "sumPrice": 126960, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10580, - "sumGrossPrice": 126960, - "unitTaxAmountFullAggregation": 1689, - "sumTaxAmountFullAggregation": 20271, - "sumSubtotalAggregation": 126960, - "unitSubtotalAggregation": 10580, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10580, - "sumPriceToPayAggregation": 126960 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/61ab15e9-e24a-5dec-a1ef-fc333bd88b0a/items/020_21081478" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- - - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| sku | String | Product SKU. | -| quantity | Integer | Quantity of the given product in the cart. | -| groupKey | String | Unique item identifier. The value is generated based on product properties. | -| abstractSku | String | Unique identifier of the abstract product owning this concrete product. | -| amount | Integer | Amount of the products in the cart. | -| unitPrice | Integer | Single item price without assuming if it is net or gross. This value should be used everywhere the price is displayed. It allows switching tax mode without side effects. | -| sumPrice | Integer | Sum of all items prices calculated. | -| taxRate | Integer | Current tax rate in percent. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum of prices of all items. | -| unitGrossPrice | Integer | Single item gross price. | -| sumGrossPrice | Integer | Sum of items gross price. | -| unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given sum of items with additions. | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer | Item total product option price. | -| sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum of Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions. | -| sumDiscountAmountFullAggregation | Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| sumPriceToPayAggregation | Integer | Sum of the prices to pay (after discounts).| -| salesUnit |Object | List of attributes defining the sales unit to be used for item amount calculation. | -| salesUnit.id | Integer | Numeric value that defines the sales units to calculate the item amount in. | -| salesUnit.amount | Integer | Amount of product in the defined sales units. | -| selectedProductOptions | array | List of attributes describing the product options that were added to cart with the product. | -| selectedProductOptions.optionGroupName | String | Name of the group to which the option belongs. | -| selectedProductOptions.sku | String | SKU of the product option. | -| selectedProductOptions.optionName | String | Product option name. | -| selectedProductOptions.price | Integer | Product option price in cents. | -| selectedProductOptions.currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | --- | -| product-options | optionGroupName | String | Name of the group to which the option belongs. | -| product-options | sku | String | SKU of the product option. | -| product-options | optionName | String | Product option name. | -| product-options | price | Integer | Product option price in cents. | -| product-options | currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | -| vouchers, cart-rules | displayName | String | Discount name displayed on the Storefront. | -| vouchers, cart-rules | amount | Integer | Amount of the provided discount. | -| vouchers, cart-rules | code | String | Discount code. | -| vouchers, cart-rules | discountType | String | Discount type. | -| vouchers, cart-rules | isExclusive | Boolean | Discount exclusivity. | -| vouchers, cart-rules | expirationDateTime | DateTimeUtc | Date and time on which the discount expires. | -| vouchers, cart-rules | discountPromotionAbstractSku | String | SKU of the products to which the discount applies. If the discount can be applied to any product, the value is `null`. | -| vouchers, cart-rules | discountPromotionQuantity | Integer | Specifies the amount of the product required to be able to apply the discount. If the minimum number is `0`, the value is `null`. | - -For the attributes of the included resources, see: -* [Retrieving measurement units](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-measurement-units.html) -* [Create a cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) -* [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) -* [Retrieving product offer prices](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) -* [Retrieving product availability](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-availability.html#product-offer-availability-response-attributes) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) - -## Change item quantity - -To change the number of items in a cart, send the request: - -*** -`PATCH` {% raw %}**/carts/*{{cart_uuid}}*/items/*{{item_group_key}}***{% endraw %} -*** - - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html#retrieve-a-registered-users-cart) to get it. | -| {% raw %}***{{item_group_key}}***{% endraw %} | Group key of the item. Usually, it is equal to the item’s SKU. | - -### Request - - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - - -Request sample: change item quantity - -`PATCH http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054/items/177_25913296` - -```json -{ - "data": { - "type": "items", - "attributes": { - "quantity": 10 - } - } -} -``` - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| quantity | String | ✓ | Specifies the new quantity of the items. | - -### Response - -
-Response sample: change item quantity - -```json -{ - "data": [ - { - "type": "carts", - "id": "52493031-cccf-5ad2-9cc7-93d0f738303d", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "\"All in\" Conf Bundle", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 718, - "subtotal": 4500, - "grandTotal": 4500 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/52493031-cccf-5ad2-9cc7-93d0f738303d" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/items?include=items,concrete-products,cart-permission-groups" - }, - "included": [ - { - "type": "concrete-products", - "id": "cable-vga-1-2", - "attributes": { - "sku": "cable-vga-1-2", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "VGA cable as long as you want", - "description": "Screw-in VGA cable with 15-pin male input and output.

Supports resolutions at 800x600 (SVGA), 1024x768 (XGA), 1600x1200 (UXGA), 1080p (Full HD), 1920x1200 (WUXGA), and up for high resolution LCD and LED monitors.

The VGA cord engineered with molded strain relief connectors for durability, grip treads for easy plugging and unplugging, and finger-tightened screws for a secure connection.

Gold-plated connectors; 100% bare copper conductors.

Links VGA-equipped computer to any display with 15-pin VGA port.", - "attributes": { - "packaging_unit": "As long as you want" - }, - "superAttributesDefinition": [ - "packaging_unit" - ], - "metaTitle": "", - "metaKeywords": "", - "metaDescription": "", - "attributeNames": { - "packaging_unit": "Packaging unit" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-2" - } - }, - { - "type": "items", - "id": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 3, - "groupKey": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "abstractSku": "cable-vga-1", - "amount": "4.5", - "calculations": { - "unitPrice": 1500, - "sumPrice": 4500, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1500, - "sumGrossPrice": 4500, - "unitTaxAmountFullAggregation": 239, - "sumTaxAmountFullAggregation": 718, - "sumSubtotalAggregation": 4500, - "unitSubtotalAggregation": 1500, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 1500, - "sumPriceToPayAggregation": 4500 - }, - "salesUnit": { - "id": 33, - "amount": "4.5" - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/carts/52493031-cccf-5ad2-9cc7-93d0f738303d/items/cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "cable-vga-1-2" - } - ] - } - } - } - ] -} -``` -

- -For the attributes of the included resources, see [Retrieving concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html). - -## Remove items from a registered user's cart - -To remove an item from a registered user's cart, send the request: - -*** -`DELETE` {% raw %}**/carts/*{{cart_uuid}}*/items/*{{item_group_key}}***{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html#retrieve-a-registered-users-cart) to get it. | -| {% raw %}***{{item_group_key}}***{% endraw %}| Group key of the item. Usually, it is equal to the item’s SKU. | - - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -Request sample: Remove items from a registered user's cart - -`DELETE http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054/items/177_25913296` - -### Response - -If the item is deleted successfully, the endpoint returns the `204 No Content` status code. - -## Possible errors - -| CODE | REASON | -| --- | --- | -| 101 | Cart with given uuid not found. | -| 102 | Failed to add an item to a cart. | -| 103 | Item with the given group key not found in the cart. | -| 104 | Cart uuid is missing. | -| 105 | Cart could not be deleted. | -| 106 | Cart item could not be deleted. | -| 107 | Failed to create a cart. | -| 109 | Anonymous customer unique id is empty. | -| 110 | Customer already has a cart. | -| 111 | Can’t switch price mode when there are items in the cart. | -| 112 | Store data is invalid. | -| 113 | Cart item could not be added. | -| 114 | Cart item could not be updated. | -| 115 | Unauthorized cart action. | -| 116 | Currency is missing. | -| 117 | Currency is incorrect. | -| 118 | Price mode is missing. | -| 119 | Price mode is incorrect. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-concrete-products.md b/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-concrete-products.md deleted file mode 100644 index 49a10d8e711..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-concrete-products.md +++ /dev/null @@ -1,1143 +0,0 @@ ---- -title: Retrieving concrete products -description: Retrieve details about the items of the registered users' carts, and learn what else you can do with the resource in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint allows retrieving general information about concrete products. - -## Installation -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Glue API: Products feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-feature-integration.html) -* [Glue API: Measurement Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-measurement-units-feature-integration.html) -* [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Glue API: Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-labels-feature-integration.html) -* [Glue API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html - - -## Retrieve a concrete product - -To retrieve general information about a concrete product, send the request: - -*** -`GET` {% raw %}**/concrete-products/*{{concrete_product_sku}}***{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{concrete_product_sku}}***{% endraw %} | SKU of a concrete product to get information for. | - -### Request - -| STRING PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • concrete-product-image-sets
  • concrete-product-availabilities
  • product-options
  • product-reviews
  • concrete-product-prices
  • product-measurement-units
  • sales-units
  • product-labels
  • product-offers
  • product-offer-prices
  • merchants
| -| fields | Filters out the fields to be retrieved. | name, image, description | - -{% info_block infoBox "Included resources" %} - -To retrieve product offer prices, include `product-offers` and `product-offer-prices`. - -{% endinfo_block %} - -{% info_block infoBox "Filtering" %} - -* For performance and bandwidth usage optimization, we recommend filtering out only the needed information using the `fields` string parameter. - -* If you include more resources, you can still use the `fields` string parameter to return only the needed fields. For example, `GET https://glue.mysprykershop.com/concrete-products/fish-1-1?include=sales-units&fields[concrete-products]=name,description&fields[sales-units]=conversion,precision`. - -{% endinfo_block %} - - - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006` | Retrieve information about the `001_25904006` product. | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-image-sets` | Retrieve information about the `001_25904006` product with its image sets. | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-availabilities` | Retrieve information about the `001_25904006` product with its availability. | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-prices` | Retrieve information about the `001_25904006` product with its [default prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html). | -| `GET https://glue.mysprykershop.com/abstract-products/093_24495843?include=concrete-product-prices` | Retrieve information about the abstract product with SKU `093_24495843` with its prices: default and [volume prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-options` | Retrieve information about the `001_25904006` product with its product options. | -| `GET https://glue.mysprykershop.com/concrete-products/035_17360369?include=product-reviews` | Retrieve information about the `001_25904006` product with its product reviews. | -| `GET https://glue.mysprykershop.com/concrete-products/fish-1-1?include=sales-units,product-measurement-units` | Retrieve information about the `fish-1-1` product with the information on its sales units and product measurement units included. | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-labels` | Retrieve information about the `001_25904006` product with product labels included. | -| `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-offers` | Retrieve information about a concrete product with the SKU `001_25904006` with the product offers for this product included. | -| `GET https://glue.mysprykershop.com/concrete-products/076_24394207?include=product-offers,product-offer-prices` | Retrieve information about a concrete product with the SKU `076_24394207` with product offers and the product offer prices included. -| `GET https://glue.mysprykershop.com/concrete-products/111_12295890?include=abstract-products,merchants` | Retrieve information about the concrete product with SKU `111_12295890` with its abstract product and the merchant who sells it.| - -### Response - -
-Response sample: retrieve information about a concrete product - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006" - } - } -} -``` -
- -
-Response sample: retrieve information about a concrete product with its image sets - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-image-sets" - }, - "relationships": { - "concrete-product-image-sets": { - "data": [ - { - "type": "concrete-product-image-sets", - "id": "001_25904006" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-image-sets", - "id": "001_25904006", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904006-8438.jpg", - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904006-8438.jpg" - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006/concrete-product-image-sets" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about a concrete product with its availability - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-availabilities" - }, - "relationships": { - "concrete-product-availabilities": { - "data": [ - { - "type": "concrete-product-availabilities", - "id": "001_25904006" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-availabilities", - "id": "001_25904006", - "attributes": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006/concrete-product-availabilities" - } - } - ] -} -``` -
- - -
Response sample: retrieve information about a concrete product with its default prices - -```php -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006?include=concrete-product-prices" - }, - "relationships": { - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "001_25904006" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-prices", - "id": "001_25904006", - "attributes": { - "price": 9999, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9999, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "ORIGINAL", - "netAmount": null, - "grossAmount": 12564, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006/concrete-product-prices" - } - } - ] -} -``` -
- - -
Response sample: retrieve information about a concrete product with its default and volume prices - -```json -{ - "data": { - "type": "concrete-products", - "id": "093_24495843", - "attributes": { - "sku": "093_24495843", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": 4.3, - "reviewCount": 4, - "productAbstractSku": "093", - "name": "Sony SmartWatch 3", - "description": "The way you like it Whatever your lifestyle SmartWatch 3 SWR50 can be made to suit it. You can choose from a range of wrist straps – formal, sophisticated, casual, vibrant colours and fitness style, all made from the finest materials. Designed to perform and impress, this smartphone watch delivers a groundbreaking combination of technology and style. Downloadable apps let you customise your SmartWatch 3 SWR50 and how you use it. Tell SmartWatch 3 SWR50 smartphone watch what you want and it will do it. Search. Command. Find.", - "attributes": { - "internal_ram": "512 MB", - "flash_memory": "4 GB", - "weight": "45 g", - "protection_feature": "Water resistent", - "brand": "Sony", - "color": "Silver" - }, - "superAttributesDefinition": [ - "flash_memory", - "color" - ], - "metaTitle": "Sony SmartWatch 3", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "The way you like it Whatever your lifestyle SmartWatch 3 SWR50 can be made to suit it. You can choose from a range of wrist straps – formal, sophisticated,", - "attributeNames": { - "internal_ram": "Internal RAM", - "flash_memory": "Flash memory", - "weight": "Weight", - "protection_feature": "Protection feature", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/093_24495843?include=concrete-product-prices" - }, - "relationships": { - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "093_24495843" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-prices", - "id": "093_24495843", - "attributes": { - "price": 24899, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 24899, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "netAmount": 150, - "grossAmount": 165, - "quantity": 5 - }, - { - "netAmount": 145, - "grossAmount": 158, - "quantity": 10 - }, - { - "netAmount": 140, - "grossAmount": 152, - "quantity": 20 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/093_24495843/concrete-product-prices" - } - } - ] -} -``` -
- -
-Response sample: retrieve information about a concrete product with its product options - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-options" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - "included": [ - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006/product-options/OP_gift_wrapping" - } - } - ] -} -``` -
- -
-Response sample: retrieve information about a concrete product with product reviews - -```json -{ - "data": { - "type": "concrete-products", - "id": "035_17360369", - "attributes": { - "sku": "035_17360369", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": 4.7, - "reviewCount": 3, - "name": "Canon PowerShot N", - "description": "Creative Shot Originality is effortless with Creative Shot. Simply take a shot and the camera will analyse the scene then automatically generate five creative images plus the original unaltered photo—capturing the same subject in a variety of artistic and surprising ways. The unique symmetrical, metal-bodied design is strikingly different with an ultra-modern minimalist style—small enough to keep in your pocket and stylish enough to take anywhere. HS System excels in low light letting you capture the real atmosphere of the moment without flash or a tripod. Advanced DIGIC 5 processing and a high-sensitivity 12.1 Megapixel CMOS sensor give excellent image quality in all situations.", - "attributes": { - "focus": "TTL", - "field_of_view": "100%", - "display": "LCD", - "sensor_type": "CMOS", - "brand": "Canon", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot N", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Creative Shot Originality is effortless with Creative Shot. Simply take a shot and the camera will analyse the scene then automatically generate five creat", - "attributeNames": { - "focus": "Focus", - "field_of_view": "Field of view", - "display": "Display", - "sensor_type": "Sensor type", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/035_17360369?include=product-reviews" - }, - "relationships": { - "product-reviews": { - "data": [ - { - "type": "product-reviews", - "id": "29" - }, - { - "type": "product-reviews", - "id": "28" - }, - { - "type": "product-reviews", - "id": "30" - } - ] - } - } - }, - "included": [ - { - "type": "product-reviews", - "id": "29", - "attributes": { - "rating": 5, - "nickname": "Maria", - "summary": "Curabitur varius, dui ac vulputate ullamcorper", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vel mauris consequat, dictum metus id, facilisis quam. Vestibulum imperdiet aliquam interdum. Pellentesque tempus at neque sed laoreet. Nam elementum vitae nunc fermentum suscipit. Suspendisse finibus risus at sem pretium ullamcorper. Donec rutrum nulla nec massa tristique, porttitor gravida risus feugiat. Ut aliquam turpis nisi." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/29" - } - }, - { - "type": "product-reviews", - "id": "28", - "attributes": { - "rating": 5, - "nickname": "Spencor", - "summary": "Donec vestibulum lectus ligula", - "description": "Donec vestibulum lectus ligula, non aliquet neque vulputate vel. Integer neque massa, ornare sit amet felis vitae, pretium feugiat magna. Suspendisse mollis rutrum ante, vitae gravida ipsum commodo quis. Donec eleifend orci sit amet nisi suscipit pulvinar. Nullam ullamcorper dui lorem, nec vehicula justo accumsan id. Sed venenatis magna at posuere maximus. Sed in mauris mauris. Curabitur quam ex, vulputate ac dignissim ac, auctor eget lorem. Cras vestibulum ex quis interdum tristique." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/28" - } - }, - { - "type": "product-reviews", - "id": "30", - "attributes": { - "rating": 4, - "nickname": "Maggie", - "summary": "Aliquam erat volutpat", - "description": "Morbi vitae ultricies libero. Aenean id lectus a elit sollicitudin commodo. Donec mattis libero sem, eu convallis nulla rhoncus ac. Nam tincidunt volutpat sem, eu congue augue cursus at. Mauris augue lorem, lobortis eget varius at, iaculis ac velit. Sed vulputate rutrum lorem, ut rhoncus dolor commodo ac. Aenean sed varius massa. Quisque tristique orci nec blandit fermentum. Sed non vestibulum ante, vitae tincidunt odio. Integer quis elit eros. Phasellus tempor dolor lectus, et egestas magna convallis quis. Ut sed odio nulla. Suspendisse quis laoreet nulla. Integer quis justo at velit euismod imperdiet. Ut orci dui, placerat ut ex ac, lobortis ullamcorper dui. Etiam euismod risus hendrerit laoreet auctor." - }, - "links": { - "self": "https://glue.mysprykershop.com/product-reviews/30" - } - } - ] -} -``` -
- -
-Response sample: retrieve information about a concrete product with the details on its sales units and product measurement units - -```json -{ - "data": { - "type": "concrete-products", - "id": "cable-vga-1-1", - "attributes": { - "sku": "cable-vga-1-1", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "VGA cable (1.5m)", - "description": "Enjoy clear, crisp, immediate connectivity with the High-Speed HDMI Cable. This quality High-Definition Multimedia Interface (HDMI) cable allows you to connect a wide variety of devices in the realms of home entertainment, computing, gaming, and more to your HDTV, projector, or monitor. Perfect for those that interact with multiple platforms and devices, you can rely on strong performance and playback delivery when it comes to your digital experience.", - "attributes": { - "packaging_unit": "Ring" - }, - "superAttributesDefinition": [ - "packaging_unit" - ], - "metaTitle": "", - "metaKeywords": "", - "metaDescription": "", - "attributeNames": { - "packaging_unit": "Packaging unit" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-1?include=sales-units,product-measurement-units" - }, - "relationships": { - "product-measurement-units": { - "data": [ - { - "type": "product-measurement-units", - "id": "METR" - } - ] - }, - "sales-units": { - "data": [ - { - "type": "sales-units", - "id": "32" - } - ] - } - } - }, - "included": [ - { - "type": "product-measurement-units", - "id": "METR", - "attributes": { - "name": "Meter", - "defaultPrecision": 100 - }, - "links": { - "self": "https://glue.mysprykershop.com/product-measurement-units/METR" - } - }, - { - "type": "sales-units", - "id": "32", - "attributes": { - "conversion": 1, - "precision": 100, - "isDisplayed": true, - "isDefault": true, - "productMeasurementUnitCode": "METR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-1/sales-units/32" - }, - "relationships": { - "product-measurement-units": { - "data": [ - { - "type": "product-measurement-units", - "id": "METR" - } - ] - } - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about a concrete product with its product labels - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006" - } - } -} -``` -
- -
-Response sample: retrieve information about a concrete product and its product offers included - -```json -{ - "data": { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-offers" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer49" - } - ] - } - } - }, - "included": [ - { - "type": "product-offers", - "id": "offer49", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer49" - } - } - ] -} -``` -
- - -
-Response sample: retrieve information about a concrete product and its product offers and product offer prices included - -```json -{ - "data": { - "type": "concrete-products", - "id": "076_24394207", - "attributes": { - "sku": "076_24394207", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "076", - "name": "Sony Xperia Z3 Compact", - "description": "Dive into new experiences Xperia Z3 Compact is the smartphone designed to enhance your life. And life isn’t lived inside. With the highest waterproof rating*, Xperia Z3 Compact lets you answer calls in the rain or take pictures in the pool. And it can handle all the drops into the sink in between. Combined with a slim, compact design that’s easy to use with one hand, Xperia Z3 Compact is the Android smartphone that teams durability with beauty. Some of the best times happen in the lowest light. Years of Sony camera expertise have been brought to Xperia Z3 Compact, to deliver unparalleled low-light capability. Thanks to Cyber-shot and Handycam technologies you can record stunning videos on the move and take crisp shots under water. Want to take your shots to the next level? Get creative with our unique camera apps. It’s our best smartphone camera yet – for memories that deserve more than good.", - "attributes": { - "internal_ram": "2048 MB", - "display_type": "TFT", - "bluetooth_version": "4.0 LE", - "form_factor": "Bar", - "brand": "Sony", - "color": "White" - }, - "superAttributesDefinition": [ - "form_factor", - "color" - ], - "metaTitle": "Sony Xperia Z3 Compact", - "metaKeywords": "Sony,Communication Electronics", - "metaDescription": "Dive into new experiences Xperia Z3 Compact is the smartphone designed to enhance your life. And life isn’t lived inside. With the highest waterproof ratin", - "attributeNames": { - "internal_ram": "Internal RAM", - "display_type": "Display type", - "bluetooth_version": "Blootooth version", - "form_factor": "Form factor", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/076_24394207" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer169" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer169", - "attributes": { - "price": 30355, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 30355, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 38400, - "netAmount": 39100, - "quantity": 3 - } - - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer169/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer169", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000006", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer169" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer169" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve information about a concrete product, an abstract product it belongs to, and the merchant who sells the concrete product - -```json -{ - "data": { - "type": "concrete-products", - "id": "111_12295890", - "attributes": { - "sku": "111_12295890", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "111", - "name": "Sony SmartWatch", - "description": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your world’s just a tap, swipe or press away. Want to do more with your SmartWatch? Download compatible applications on Google Play™. And customise your SmartWatch to make it exclusively yours. Customise your SmartWatch with a 20mm wristband. Or wear its stylish wristband. You can even use it as a clip. This ultra-thin Android™ remote was designed to impress. An elegant Android watch that’ll keep you discreetly updated and your hands free.", - "attributes": { - "shape": "square", - "bluetooth_version": "3", - "battery_life": "72 h", - "display_type": "LCD", - "brand": "Sony", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your ", - "attributeNames": { - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "display_type": "Display type", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/111_12295890" - }, - "relationships": { - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "111" - } - ] - } - } - }, - "included": [ - { - "type": "abstract-products", - "id": "111", - "attributes": { - "sku": "111", - "averageRating": null, - "reviewCount": 0, - "name": "Sony SmartWatch", - "description": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your world’s just a tap, swipe or press away. Want to do more with your SmartWatch? Download compatible applications on Google Play™. And customise your SmartWatch to make it exclusively yours. Customise your SmartWatch with a 20mm wristband. Or wear its stylish wristband. You can even use it as a clip. This ultra-thin Android™ remote was designed to impress. An elegant Android watch that’ll keep you discreetly updated and your hands free. ", - "attributes": { - "shape": "square", - "bluetooth_version": "3", - "battery_life": "72 h", - "display_type": "LCD", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Silver" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "111_12295890" - ], - "super_attributes": { - "color": [ - "Silver" - ] - }, - "attribute_variants": [] - }, - "metaTitle": "Sony SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your ", - "attributeNames": { - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "display_type": "Display type", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/sony-smartwatch-111" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/111" - } - } - ] -} -``` -
- - - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| sku | String | SKU of the concrete product. | -| name | String | Name of the concrete product. | -| description | String | Description of the concrete product. | -| attributes | Object | List of attribute keys and their values for the product. | -| superAttributeDefinition | String | List of attributes that are flagged as super attributes. | -| metaTitle|String|Meta title of the product. | -| metaKeywords|String|Meta keywords of the product. | -| metaDescription|String|Meta description of the product. | -| attributeNames | String | List of attribute keys and their translations. | -| productAbstractSku | String | Unique identifier of the abstract product owning this concrete product. | - - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | --- | -| product-options | sku | String | Specifies the SKU of the product option. | -| product-options | optionName | String | Specifies the option name. | -| product-options | optionGroupName | String | Specifies the name of the group to which the option belongs. | -| product-options | price | Integer | Specifies the option price in cents. | -| product-options | currencyIsoCode | String | Specifies the ISO 4217 code of the currency in which the product option price is specified. | - -For attributes of the other included resources, see the following: - -* [Retrieve sales units of a concrete product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-sales-units.html) -* [Retrieve a measurement unit](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-measurement-units.html#measurement-units-response-attributes) -* [Retrieve image sets of a concrete product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-image-sets-of-concrete-products.html) -* [Retrieve availability of a concrete product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-availability.html) -* [Retrieve prices of a concrete product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-prices.html) -* [Retrieve a product label](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) -* [Retrieve product ratings and reviews](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/managing-product-ratings-and-reviews.html) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) -* [Retrieving product offer prices](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) -* [Retrieving abstract products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/abstract-products/retrieving-abstract-products.html#response) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}//merchants/retrieving-merchants.html#merchants-response-attributes) - - -## Possible errors - -| CODE | REASON | -| --- | --- | -| 302 | Concrete product is not found. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-product-offers-of-concrete-products.md b/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-product-offers-of-concrete-products.md deleted file mode 100644 index 06067e6df5e..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/concrete-products/retrieving-product-offers-of-concrete-products.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Retrieving product offers of concrete products -description: Retrieve details about product offers via Glue API -template: glue-api-storefront-guide-template ---- - - -To retrieve the product offers of a concrete product, send the request: - -*** -`GET` {% raw %}**/concrete-products/*{{concrete_product_sku}}*/product-offers**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| ------------- | ---------------------- | -| {% raw %}***{concrete_product_sku}}***{% endraw %} | SKU of a concrete product to retrieve the product offers of. | - -## Request - -Request sample: retrieve the product offers of a concrete product - -`GET https://glue.mysprykershop.com/concrete-products/006_30692993/product-offers` - -## Response - -Response sample: retrieve the product offers of a concrete product - -```json -{ - "data": [ - { - "type": "product-offers", - "id": "offer54", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer54" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/006_30692993/product-offers" - } -} -``` - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------------------- | ----------- | --------------------- | -| merchantSku | String | SKU of the merchant the product offer belongs to. | -| merchantReference | String | Unique identifier of the merchant. | -| isDefault | Boolean | Defines if the product offer is default. | diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/content-items/retrieving-abstract-products-in-abstract-product-lists.md b/docs/marketplace/dev/glue-api-guides/202108.0/content-items/retrieving-abstract-products-in-abstract-product-lists.md deleted file mode 100644 index b3f2723f071..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/content-items/retrieving-abstract-products-in-abstract-product-lists.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Retrieving abstract products in abstract product lists -description: This glue API document describes how to retrieve abstract products in abstract product lists. -template: glue-api-storefront-guide-template ---- - -This endpoint allows retrieving abstract products in [abstract product lists](/docs/scos/user/features/{{page.version}}/content-items-feature-overview.html). - -## Installation - -For details about the modules that provide the API functionality and how to install them, see [Content Items API](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-content-items-feature-integration.html). - -## Retrieve abstract products in an abstract product list - - -To retrieve abstract products in an abstract product list, send the request: - - -*** -`GET` {% raw %}**/content-product-abstract-lists/*{{content_item_key}}*/abstract-products**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| ----------------- | -------------------------- | -| {% raw %}***{{content_item_key}}***{% endraw %} | Unique identifier of an abstract product list to retrieve the abstract products of. | - - -{% info_block warningBox "Info" %} - -Alternatively, you can [retrieve an abstract product list](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-content-items/retrieving-abstract-product-list-content-items.html#retrieve-abstract-product-list-content-item) with the `abstract-products` resource included. - -{% endinfo_block %} - -### Request - -Request sample: retrieve abstract products in an abstract product list - -`GET http://mysprykershop.com/content-product-abstract-lists/apl-1/abstract-products` - - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Accept-Language | string | ✓ | Comma-separated list of locales. If no locale is specified, data from the default locale is returned. | - - - -### Response - -
-Response sample: retrieve abstract products in an abstract product list - -```json -{ - "data": [ - { - "type": "abstract-products", - "id": "204", - "attributes": { - "sku": "204", - "merchantReference": "MER000002", - "averageRating": null, - "reviewCount": 0, - "name": "Sony PXW-FS5K", - "description": "Take control and shoot your way Real cinematic images and sound: Explore a new dimension in creative artistry. Capture beautifully detailed, cinematic video images plus high-quality audio in cinematic 24 frames per second. Add some power to your shots: Add an E-mount lens with a power zoom and smoothly focus in on your subject with up to 11x magnification. Capture it all in HD: Capture all the detail with Full HD 1920 x 1080 video shooting (AVCHD format) at 24mbs for increased detail and clarity. DSLR quality photos: Shoot stills with DSLR-like picture quality and shallow depth of field for professional looking shots.", - "attributes": { - "iso_sensitivity": "3200", - "sensor_type": "CMOS", - "white_balance": "Auto", - "wi_fi": "yes", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Black" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "204_29851280" - ], - "super_attributes": { - "color": [ - "Black" - ] - }, - "attribute_variants": [], - "attribute_variant_map": { - "286": [] - } - }, - "metaTitle": "Sony PXW-FS5K", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Take control and shoot your way Real cinematic images and sound: Explore a new dimension in creative artistry. Capture beautifully detailed, cinematic vide", - "attributeNames": { - "iso_sensitivity": "ISO sensitivity", - "sensor_type": "Sensor type", - "white_balance": "White balance", - "wi_fi": "Wi-Fi", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/sony-pxw-fs5k-204" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/204" - } - }, - { - "type": "abstract-products", - "id": "205", - "attributes": { - "sku": "205", - "merchantReference": "MER000002", - "averageRating": null, - "reviewCount": 0, - "name": "Toshiba CAMILEO S30", - "description": "Reach out Reach out with your 10x digital zoom and control recordings on the large 3-inch touchscreen LCD monitor. Create multi-scene video files thanks to the new Pause feature button! Save the best moments of your life with your CAMILEO S30 camcorder. Real cinematic images and sound: Explore a new dimension in creative artistry. Capture beautifully detailed, cinematic video images plus high-quality audio in cinematic 24 frames per second.", - "attributes": { - "total_megapixels": "8 MP", - "display": "LCD", - "self_timer": "10 s", - "weight": "118 g", - "brand": "Toshiba", - "color": "Black" - }, - "superAttributesDefinition": [ - "total_megapixels", - "color" - ], - "superAttributes": { - "color": [ - "Grey" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "205_6350138" - ], - "super_attributes": { - "color": [ - "Grey" - ] - }, - "attribute_variants": [], - "attribute_variant_map": { - "287": [] - } - }, - "metaTitle": "Toshiba CAMILEO S30", - "metaKeywords": "Toshiba,Smart Electronics", - "metaDescription": "Reach out Reach out with your 10x digital zoom and control recordings on the large 3-inch touchscreen LCD monitor. Create multi-scene video files thanks to", - "attributeNames": { - "total_megapixels": "Total Megapixels", - "display": "Display", - "self_timer": "Self-timer", - "weight": "Weight", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/toshiba-camileo-s30-205" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/205" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/content-product-abstract-lists/apl-1/access-tokens" - } -} -``` -
- -| ATTRIBUTE | TYPE | DESCRIPTION | -| ---------------- | ----- | ----------------------- | -| attributes | string | The abstract product's attributes. | -| attributes.sku | string | Unique identifier of the abstract product. | -| attributes.merchantReference | string | Unique identifier of the merchant to which this product belongs.| -| attributes.averageRating | String | Average rating of the product based on customer rating. | -| attributes.reviewCount | String | Number of reviews left by customers for the abstract product. | -| attributes.name | string | Abstract product name. | -| attributes.description | string | Abstract product description. | -| attributes.attributes | string | All the attributes for the product. | -| attributes.superAttributesDefinition | string | Super attributes used to distinguish product variants. | -| attributes.superAttributes | string | Super attributes of the product variants. | -| attributes.attributeMap | object | Super attributes the product has and the corresponding concrete product IDs. | -| attributes.attributeMap.attribute_variants | object | List of super attributes. | -| attributes.attributeMap.super_attributes | object | Applicable super attribute of the product variant. | -| attributes.attributeMap.product_concrete_ids | string | IDs of the product variant. | -| attributes.metaTitle | string | Meta title of the abstract product. | -| attributes.metaKeywords | string | Meta keywords of the abstract product. | -| metaDescription | string | Meta description of the abstract product. | -| attributes.attributeNames | object | All attributes the abstract product, except the super attributes. | -| attributes.url | String | Unique web address of the abstract product without the domain.| diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-cart-items.md b/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-cart-items.md deleted file mode 100644 index fcc94c7c1ef..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-cart-items.md +++ /dev/null @@ -1,1859 +0,0 @@ ---- -title: Managing guest cart items -description: Retrieve details about guest cart items and learn what else you can do with the resource in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint lets you manage guest cart items. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) -* [Glue API: Measurement Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-measurement-units-feature-integration.html) -* [Glue API: Promotions & Discounts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-promotions-and-discounts-feature-integration.html) -* [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Glue API: Marketplace Product Offers feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) - - -## Add items to a guest cart - -To add items to a guest cart, send the request: - ---- -`POST` **/guest-cart-items** - ---- - -{% info_block infoBox "Creating a guest cart" %} - -* If a guest cart does not exist for the current user, and you send a request to add items, the guest cart is created automatically. Otherwise, the items are added to the existing guest cart. -* Guest users have one cart by default. You can optionally specify its ID by using the following endpoint. The information in this section is valid for both endpoints. - -`POST` {% raw %}**/guest-carts/*{{guest_cart_id}}*/guest-cart-items**{% endraw %} - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{guest_cart_id}}***{% endraw %} | Unique identifier of the guest cart. To get it, [retrieve a guest cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-carts.html#retrieve-a-guest-cart). | - -{% endinfo_block %} - - -### Request - -| HEADER KEY | HEADER VALUE EXAMPLE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | 164b-5708-8530 | ✓ | Guest user's unique identifier. For security purposes, we recommend passing a hyphenated alphanumeric value, but you can pass any. If you are sending automated requests, you can configure your API client to generate this value. | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • guest-cart-items
  • concrete-products
  • sales-units
  • cart-rules
  • vouchers
  • product-options
  • sales-units
  • product-measurement-units
  • product-offers
  • merchants
| - -{% info_block infoBox "Included resources" %} - -* To retrieve product options, include `guest-cart-items`, `concrete-products`, and `product-options`. -* To retrieve product measurement units, include `sales-units` and `product-measurement-units`. - -{% endinfo_block %} - - - -
-Request sample: add items to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "022_21994751", - "quantity": 1 - } - } -} -``` -
- -
-Request sample: add a promotional item with the cart-rules relationship to a guest cart - -{% info_block infoBox "Cart rules" %} - -To add the promotional product to cart, make sure that the cart fulfills the cart rules for the promotional item. - -{% endinfo_block %} - -`POST https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items?include=cart-rules` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "112_306918001", - "quantity": "1", - "idPromotionalItem": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - } -} -``` -
- -
-Request sample: add a gift card to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "666_126", - "quantity": "1" - } - } -} -``` -
- -
-Request sample: add items with product measurement units and sales units to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items?include=sales-units` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 3, - "salesUnit": { - "id": 33, - "amount": 4.5 - } - } - } -} -``` -
- -
-Request sample: add items with cart rules to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items?include=cart-rules` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "077_24584210", - "quantity": 10 - } - } -} -``` -
- -
-Request sample: add items with vouchers to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items?include=cart-rules` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "057_32007641", - "quantity": 1 - } - } -} -``` -
- - -
-Request sample: add items with product options to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items?include=guest-cart-items,concrete-products,product-options` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "181_31995510", - "quantity": "4", - "productOptions": [ - { - "sku": "OP_gift_wrapping" - }, - { - "sku": "OP_3_year_waranty" - } - ] - } - } -} -``` -
- - -
-Request sample: add product offers to a guest cart - -`POST https://glue.mysprykershop.com/guest-cart-items?include=items` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "041_25904691", - "quantity": 5, - "productOfferReference": "offer48" - } - } -} -``` -
- -
-Request sample: add a marketplace product to a guest cart - -`POST https://glue.mysprykershop,com/guest-cart-items` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "109_19416433", - "quantity": "1", - "merchantReference": "MER000001" - } - } -} -``` -
- -
-Request sample: add items to a guest cart with information on merchants included - -`POST https://glue.mysprykershop,com/guest-cart-items?include=guest-cart-items,merchants` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "109_19416433", - "quantity": "1", - "merchantReference": "MER000001" - } - } -} -``` -
- - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| sku | String | ✓ | SKU of the concrete product to add to the guest cart. To use promotions, specify the SKU of a product being promoted. | -| quantity | Integer | ✓ | Number of items to add to the guest cart. If you add a promotional item, and the number of products exceeds the number of promotions, the exceeding items are added without the promotional benefits. | -| merchantReference | String | Required when adding a merchant product. | Unique identifier of the merchant the product of which to add to the guest cart. | -| idPromotionalItem | String | | Unique identifier of a promotional item to add to the cart. | -| salesUnit | Object | | List of attributes defining the sales unit to be used for item amount calculation. | -| salesUnit.id | Integer | | Unique identifier of the sales units to calculate the item amount in. | -| salesUnit.amount | Decimal | | Amount of the product in the defined sales units. | -| productOptions | Array | | List of attributes defining the product options to add to the cart. | -| productOptions.sku | String | | Unique identifier of the product option to add to the cart. | -| productOfferReference | String |Required when adding a product offer. |Unique identifier of the product offer to add to the cart. | - -{% info_block infoBox "Conversion" %} - -When defining product amount in sales units, make sure that the correlation between amount and quantity corresponds to the conversion of the defined sales unit. See [Measurement Units Feature Overview](/docs/scos/user/features/{{page.version}}/measurement-units-feature-overview.html) to learn more. -{% endinfo_block %} - -{% info_block infoBox "Product options" %} - -It is the responsibility of the API Client to track whether the selected items are compatible. For example, the client should not allow a 2-year and a 4-year warranty service to be applied to the same product. The API endpoints allow any combination of items, no matter whether they are compatible or not. - -{% endinfo_block %} - -### Response - -
-Response sample: add items to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "380e4a19-6faa-5053-89ff-81a1b5a3dd8a", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 2600, - "taxTotal": 3736, - "subtotal": 26000, - "grandTotal": 23400 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 2600, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/380e4a19-6faa-5053-89ff-81a1b5a3dd8a" - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "022_21994751", - "attributes": { - "sku": "022_21994751", - "quantity": 1, - "groupKey": "022_21994751", - "abstractSku": "022", - "amount": null, - "calculations": { - "unitPrice": 26000, - "sumPrice": 26000, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 26000, - "sumGrossPrice": 26000, - "unitTaxAmountFullAggregation": 3736, - "sumTaxAmountFullAggregation": 3736, - "sumSubtotalAggregation": 26000, - "unitSubtotalAggregation": 26000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2600, - "sumDiscountAmountAggregation": 2600, - "unitDiscountAmountFullAggregation": 2600, - "sumDiscountAmountFullAggregation": 2600, - "unitPriceToPayAggregation": 23400, - "sumPriceToPayAggregation": 23400 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/380e4a19-6faa-5053-89ff-81a1b5a3dd8a/guest-cart-items/022_21994751" - } - } - ] -} -``` -
- -
-Response sample: add a promotional item without the cart-rules relationship to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13192, - "taxTotal": 15107, - "subtotal": 113207, - "grandTotal": 100015 - }, - "discounts": [ - { - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "amount": 2079, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 11113, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2" - } - } -} -``` - -
- - - -
-Response sample: add a promotional item with the cart-rules relationship to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "My Cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13192, - "taxTotal": 15107, - "subtotal": 113207, - "grandTotal": 100015 - }, - "discounts": [ - { - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "amount": 2079, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 11113, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "6" - }, - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "134_29759322", - "attributes": { - "sku": "134_29759322", - "quantity": "1", - "groupKey": "134_29759322", - "abstractSku": "134", - "amount": null, - "calculations": { - "unitPrice": 1879, - "sumPrice": 1879, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1879, - "sumGrossPrice": 1879, - "unitTaxAmountFullAggregation": 270, - "sumTaxAmountFullAggregation": 270, - "sumSubtotalAggregation": 1879, - "unitSubtotalAggregation": 1879, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 188, - "sumDiscountAmountAggregation": 188, - "unitDiscountAmountFullAggregation": 188, - "sumDiscountAmountFullAggregation": 188, - "unitPriceToPayAggregation": 1691, - "sumPriceToPayAggregation": 1691 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items/134_29759322" - } - }, - { - "type": "guest-cart-items", - "id": "118_29804739", - "attributes": { - "sku": "118_29804739", - "quantity": "1", - "groupKey": "118_29804739", - "abstractSku": "118", - "amount": null, - "calculations": { - "unitPrice": 6000, - "sumPrice": 6000, - "taxRate": 0, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 6000, - "sumGrossPrice": 6000, - "unitTaxAmountFullAggregation": 0, - "sumTaxAmountFullAggregation": 0, - "sumSubtotalAggregation": 6000, - "unitSubtotalAggregation": 6000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 600, - "sumDiscountAmountAggregation": 600, - "unitDiscountAmountFullAggregation": 600, - "sumDiscountAmountFullAggregation": 600, - "unitPriceToPayAggregation": 5400, - "sumPriceToPayAggregation": 5400 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items/118_29804739" - } - }, - { - "type": "guest-cart-items", - "id": "139_24699831", - "attributes": { - "sku": "139_24699831", - "quantity": "1", - "groupKey": "139_24699831", - "abstractSku": "139", - "amount": null, - "calculations": { - "unitPrice": 3454, - "sumPrice": 3454, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 3454, - "sumGrossPrice": 3454, - "unitTaxAmountFullAggregation": 496, - "sumTaxAmountFullAggregation": 496, - "sumSubtotalAggregation": 3454, - "unitSubtotalAggregation": 3454, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 345, - "sumDiscountAmountAggregation": 345, - "unitDiscountAmountFullAggregation": 345, - "sumDiscountAmountFullAggregation": 345, - "unitPriceToPayAggregation": 3109, - "sumPriceToPayAggregation": 3109 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items/139_24699831" - } - }, - { - "type": "guest-cart-items", - "id": "136_24425591", - "attributes": { - "sku": "136_24425591", - "quantity": 3, - "groupKey": "136_24425591", - "abstractSku": "136", - "amount": null, - "calculations": { - "unitPrice": 33265, - "sumPrice": 99795, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33265, - "sumGrossPrice": 99795, - "unitTaxAmountFullAggregation": 4780, - "sumTaxAmountFullAggregation": 14341, - "sumSubtotalAggregation": 99795, - "unitSubtotalAggregation": 33265, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 3327, - "sumDiscountAmountAggregation": 9980, - "unitDiscountAmountFullAggregation": 3327, - "sumDiscountAmountFullAggregation": 9980, - "unitPriceToPayAggregation": 29938, - "sumPriceToPayAggregation": 89815 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items/136_24425591" - } - }, - { - "type": "guest-cart-items", - "id": "112_306918001-promotion-1", - "attributes": { - "sku": "112_306918001", - "quantity": "1", - "groupKey": "112_306918001-promotion-1", - "abstractSku": "112", - "amount": null, - "calculations": { - "unitPrice": 2079, - "sumPrice": 2079, - "taxRate": 0, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 2079, - "sumGrossPrice": 2079, - "unitTaxAmountFullAggregation": 0, - "sumTaxAmountFullAggregation": 0, - "sumSubtotalAggregation": 2079, - "unitSubtotalAggregation": 2079, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2079, - "sumDiscountAmountAggregation": 2079, - "unitDiscountAmountFullAggregation": 2079, - "sumDiscountAmountFullAggregation": 2079, - "unitPriceToPayAggregation": 0, - "sumPriceToPayAggregation": 0 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1ce91011-8d60-59ef-9fe0-4493ef3628b2/guest-cart-items/112_306918001-promotion-1" - } - }, - { - "type": "cart-rules", - "id": "6", - "attributes": { - "amount": 2079, - "code": null, - "discountType": "cart_rule", - "displayName": "For every purchase above certain value depending on the currency and net/gross price. you get this promotional product for free", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": "112", - "discountPromotionQuantity": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/6" - } - }, - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 11113, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- - -
-Response sample: add a gift card to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "1bbcf8c0-30dc-5d40-9da1-db5289f216fa", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 5345, - "taxTotal": 7680, - "subtotal": 56446, - "grandTotal": 51101, - "priceToPay": 51101 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 5345, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1bbcf8c0-30dc-5d40-9da1-db5289f216fa" - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "666_126", - "attributes": { - "sku": "666_126", - "quantity": "1", - "groupKey": "666_126", - "abstractSku": "666", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 3000, - "sumPrice": 3000, - "taxRate": 0, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 3000, - "sumGrossPrice": 3000, - "unitTaxAmountFullAggregation": 0, - "sumTaxAmountFullAggregation": 0, - "sumSubtotalAggregation": 3000, - "unitSubtotalAggregation": 3000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 3000, - "sumPriceToPayAggregation": 3000 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1bbcf8c0-30dc-5d40-9da1-db5289f216fa/guest-cart-items/666_126" - } - }, - { - "type": "guest-cart-items", - "id": "023_21758366", - "attributes": { - "sku": "023_21758366", - "quantity": "2", - "groupKey": "023_21758366", - "abstractSku": "023", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 26723, - "sumPrice": 53446, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 26723, - "sumGrossPrice": 53446, - "unitTaxAmountFullAggregation": 3840, - "sumTaxAmountFullAggregation": 7680, - "sumSubtotalAggregation": 53446, - "unitSubtotalAggregation": 26723, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2673, - "sumDiscountAmountAggregation": 5345, - "unitDiscountAmountFullAggregation": 2673, - "sumDiscountAmountFullAggregation": 5345, - "unitPriceToPayAggregation": 24050, - "sumPriceToPayAggregation": 48101 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/1bbcf8c0-30dc-5d40-9da1-db5289f216fa/guest-cart-items/023_21758366" - } - } - ] -} -``` -
- - -
-Response sample: add items with product options to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "7e42298e-9f15-5105-a192-96726a2b9da8", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13301, - "taxTotal": 20711, - "subtotal": 143012, - "grandTotal": 129711, - "priceToPay": 129711 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 13301, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/7e42298e-9f15-5105-a192-96726a2b9da8" - }, - "relationships": { - "guest-cart-items": { - "data": [ - { - "type": "guest-cart-items", - "id": "181_31995510-3-5" - } - ] - } - } - }, - "included": [ - { - "type": "product-options", - "id": "OP_1_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_1_year_waranty", - "optionName": "One (1) year limited warranty", - "price": 0, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_1_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_2_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_2_year_waranty", - "optionName": "Two (2) year limited warranty", - "price": 1000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_2_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_3_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 2000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_3_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510/product-options/OP_gift_wrapping" - } - }, - { - "type": "concrete-products", - "id": "181_31995510", - "attributes": { - "sku": "181_31995510", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "181", - "name": "Samsung Galaxy Tab S2 SM-T813", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "internal_memory": "3 GB", - "processor_model": "APQ8076", - "digital_zoom": "4 x", - "storage_media": "flash", - "brand": "Samsung", - "color": "Pink" - }, - "superAttributesDefinition": [ - "internal_memory", - "storage_media", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T813", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "internal_memory": "Max internal memory", - "processor_model": "Processor model", - "digital_zoom": "Digital zoom", - "storage_media": "Storage media", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/181_31995510" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_1_year_waranty" - }, - { - "type": "product-options", - "id": "OP_2_year_waranty" - }, - { - "type": "product-options", - "id": "OP_3_year_waranty" - }, - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "181_31995510-3-5", - "attributes": { - "sku": "181_31995510", - "quantity": "4", - "groupKey": "181_31995510-3-5", - "abstractSku": "181", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 33253, - "sumPrice": 133012, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33253, - "sumGrossPrice": 133012, - "unitTaxAmountFullAggregation": 5177, - "sumTaxAmountFullAggregation": 20711, - "sumSubtotalAggregation": 143012, - "unitSubtotalAggregation": 35753, - "unitProductOptionPriceAggregation": 2500, - "sumProductOptionPriceAggregation": 10000, - "unitDiscountAmountAggregation": 3325, - "sumDiscountAmountAggregation": 13301, - "unitDiscountAmountFullAggregation": 3325, - "sumDiscountAmountFullAggregation": 13301, - "unitPriceToPayAggregation": 32428, - "sumPriceToPayAggregation": 129711 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": null, - "selectedProductOptions": [ - { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 2000 - }, - { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 8000 - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/7e42298e-9f15-5105-a192-96726a2b9da8/guest-cart-items/181_31995510-3-5" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "181_31995510" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: add items with product measurement units and sales units to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "5b598c79-8024-50ec-b682-c0b219387294", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 1437, - "subtotal": 9000, - "grandTotal": 9000 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/5b598c79-8024-50ec-b682-c0b219387294" - } - }, - "included": [ - { - "type": "product-measurement-units", - "id": "METR", - "attributes": { - "name": "Meter", - "defaultPrecision": 100 - }, - "links": { - "self": "https://glue.mysprykershop.com/product-measurement-units/METR" - } - }, - { - "type": "sales-units", - "id": "33", - "attributes": { - "conversion": 1, - "precision": 100, - "isDisplayed": true, - "isDefault": true, - "productMeasurementUnitCode": "METR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-2/sales-units/33" - }, - "relationships": { - "product-measurement-units": { - "data": [ - { - "type": "product-measurement-units", - "id": "METR" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 6, - "groupKey": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "abstractSku": "cable-vga-1", - "amount": "9.0", - "calculations": { - "unitPrice": 1500, - "sumPrice": 9000, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1500, - "sumGrossPrice": 9000, - "unitTaxAmountFullAggregation": 239, - "sumTaxAmountFullAggregation": 1437, - "sumSubtotalAggregation": 9000, - "unitSubtotalAggregation": 1500, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 1500, - "sumPriceToPayAggregation": 9000 - }, - "salesUnit": { - "id": 33, - "amount": "9.0" - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/5b598c79-8024-50ec-b682-c0b219387294/guest-cart-items/cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33" - }, - "relationships": { - "sales-units": { - "data": [ - { - "type": "sales-units", - "id": "33" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: add items with cart rules to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "c9310692-2ab0-5edc-bb41-fee6aa828d55", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 14554, - "taxTotal": 20914, - "subtotal": 145540, - "grandTotal": 130986, - "priceToPay": 130986 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 14554, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "077_24584210", - "attributes": { - "sku": "077_24584210", - "quantity": 10, - "groupKey": "077_24584210", - "abstractSku": "077", - "amount": null, - "calculations": { - "unitPrice": 14554, - "sumPrice": 145540, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 14554, - "sumGrossPrice": 145540, - "unitTaxAmountFullAggregation": 2091, - "sumTaxAmountFullAggregation": 20914, - "sumSubtotalAggregation": 145540, - "unitSubtotalAggregation": 14554, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 1455, - "sumDiscountAmountAggregation": 14554, - "unitDiscountAmountFullAggregation": 1455, - "sumDiscountAmountFullAggregation": 14554, - "unitPriceToPayAggregation": 13099, - "sumPriceToPayAggregation": 130986 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55/guest-cart-items/077_24584210" - } - }, - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 14554, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2022-02-26 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- -
-Response sample: add items with vouchers to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "c9310692-2ab0-5edc-bb41-fee6aa828d55", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 25965, - "taxTotal": 25692, - "subtotal": 186879, - "grandTotal": 160914, - "priceToPay": 160914 - }, - "discounts": [ - { - "displayName": "5% discount on all white products", - "amount": 7277, - "code": null - }, - { - "displayName": "10% Discount for all orders above", - "amount": 18688, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55" - }, - "relationships": { - "vouchers": { - "data": [ - { - "type": "vouchers", - "id": "sprykerku2f" - } - ] - } - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "077_24584210", - "attributes": { - "sku": "077_24584210", - "quantity": 10, - "groupKey": "077_24584210", - "abstractSku": "077", - "amount": null, - "calculations": { - "unitPrice": 14554, - "sumPrice": 145540, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 14554, - "sumGrossPrice": 145540, - "unitTaxAmountFullAggregation": 1975, - "sumTaxAmountFullAggregation": 19752, - "sumSubtotalAggregation": 145540, - "unitSubtotalAggregation": 14554, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2183, - "sumDiscountAmountAggregation": 21831, - "unitDiscountAmountFullAggregation": 2183, - "sumDiscountAmountFullAggregation": 21831, - "unitPriceToPayAggregation": 12371, - "sumPriceToPayAggregation": 123709 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55/guest-cart-items/077_24584210" - } - }, - { - "type": "guest-cart-items", - "id": "057_32007641", - "attributes": { - "sku": "057_32007641", - "quantity": 1, - "groupKey": "057_32007641", - "abstractSku": "057", - "amount": null, - "calculations": { - "unitPrice": 41339, - "sumPrice": 41339, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 41339, - "sumGrossPrice": 41339, - "unitTaxAmountFullAggregation": 5940, - "sumTaxAmountFullAggregation": 5940, - "sumSubtotalAggregation": 41339, - "unitSubtotalAggregation": 41339, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 4134, - "sumDiscountAmountAggregation": 4134, - "unitDiscountAmountFullAggregation": 4134, - "sumDiscountAmountFullAggregation": 4134, - "unitPriceToPayAggregation": 37205, - "sumPriceToPayAggregation": 37205 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55/guest-cart-items/057_32007641" - } - }, - { - "type": "vouchers", - "id": "sprykerku2f", - "attributes": { - "amount": 7277, - "code": "sprykerku2f", - "discountType": "voucher", - "displayName": "5% discount on all white products", - "isExclusive": false, - "expirationDateTime": "2022-02-10 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/c9310692-2ab0-5edc-bb41-fee6aa828d55/cart-codes/sprykerku2f" - } - } - ] -} -``` -
- -
-Response sample: add product offers to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "6851dc6a-ebed-52ed-b229-81a35fe94c49", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 35273, - "subtotal": 220920, - "grandTotal": 220920, - "priceToPay": 220920 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49" - }, - "relationships": { - "guest-cart-items": { - "data": [ - { - "type": "guest-cart-items", - "id": "041_25904691_offer48" - } - ] - } - } - }, - "included": [ - { - "type": "guest-cart-items", - "id": "041_25904691_offer48", - "attributes": { - "sku": "041_25904691", - "quantity": 21, - "groupKey": "041_25904691_offer48", - "abstractSku": "041", - "amount": null, - "productOfferReference": "offer48", - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 10520, - "sumPrice": 220920, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10520, - "sumGrossPrice": 220920, - "unitTaxAmountFullAggregation": 1680, - "sumTaxAmountFullAggregation": 35273, - "sumSubtotalAggregation": 220920, - "unitSubtotalAggregation": 10520, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10520, - "sumPriceToPayAggregation": 220920 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49/guest-cart-items/041_25904691_offer48" - } - } - ] -} -``` -
- - -
-Response sample: add a marketplace product to a guest cart - -```json -{ - "data": { - "type": "guest-carts", - "id": "54ac21a6-c08a-5d09-a2f0-9f9ef8f634cd", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 8446, - "subtotal": 52900, - "grandTotal": 52900, - "priceToPay": 52900 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.comm/guest-carts/54ac21a6-c08a-5d09-a2f0-9f9ef8f634cd" - } - } -} - -
-Response sample: add items to a guest cart with information on merchants included - -```json -{ - "data": { - "type": "guest-carts", - "id": "abf9c01b-6695-58cf-8439-541f8f26a95c", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 822, - "subtotal": 12572, - "grandTotal": 12572, - "priceToPay": 12572 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/abf9c01b-6695-58cf-8439-541f8f26a95c" - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "guest-cart-items", - "id": "109_19416433", - "attributes": { - "sku": "109_19416433", - "quantity": "1", - "groupKey": "109_19416433", - "abstractSku": "109", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 12572, - "sumPrice": 12572, - "taxRate": 7, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 12572, - "sumGrossPrice": 12572, - "unitTaxAmountFullAggregation": 822, - "sumTaxAmountFullAggregation": 822, - "sumSubtotalAggregation": 12572, - "unitSubtotalAggregation": 12572, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 12572, - "sumPriceToPayAggregation": 12572 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/abf9c01b-6695-58cf-8439-541f8f26a95c/guest-cart-items/109_19416433" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- -**General cart information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------ | ---------- | -------------- | -| priceMode | String | Price mode that was active when the cart was created.| -| currency | String | Currency that was selected when the cart was created.| -| store | String | Store for which the cart was created. | -| name | String | Name of the shopping cart. | -| isDefault | Boolean | Defines whether the cart is default or not. | - -**Totals information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| -------------- | ----------- | --------------------- | -| expenseTotal | String | Total amount of expenses (including, for example, shipping costs). | -| discountTotal| Integer | Total amount of discounts applied to the cart. | -| taxTotal | String | Total amount of taxes to be paid. | -| subTotal | Integer | Subtotal of the cart. | -| grandTotal | Integer| Grand total of the cart. | - -**Discount information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------------- | ----------- | ------------------- | -| displayName | String | Discount name. | -| code | String | Discount code applied to the cart. | -| amount | Integer | Discount amount applied to the cart.| - -**Cart item information** - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | TYPE | -| --- | --- | --- | --- | -| guest-cart-items | sku | String | SKU of the product. | -| guest-cart-items | quantity | Integer | Quantity of the given product in the cart. | -| guest-cart-items | groupKey | String | Unique item identifier. The value is generated based on product parameters. | -| guest-cart-items |abstractSku |String |SKU number of the abstract product to which the concrete belongs. | -| guest-cart-items | amount | Integer | Amount of the products in the cart. | -| guest-cart-items |productOfferReference | String | Unique identifier of the Product Offer. | -| guest-cart-items | merchantReference | String | Unique identifier of the Merchant. | -| guest-cart-items | unitPrice | Integer | Single item price without assuming is it net or gross. This value should be used everywhere a price is disabled. It allows switching the tax mode without side effects. | -| guest-cart-items | sumPrice | Integer | Sum of all items prices calculated. | -| guest-cart-items | taxRate | Integer | Current tax rate in per cent. | -| guest-cart-items | unitNetPrice | Integer | Single item net price. | -| guest-cart-items | sumNetPrice | Integer | Sum of all items' net price. | -| guest-cart-items | unitGrossPrice | Integer | Single item gross price. | -| guest-cart-items | sumGrossPrice | Integer | Sum of items gross price. | -| guest-cart-items | unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| guest-cart-items | sumTaxAmountFullAggregation | Integer | Total tax amount for a given amount of items with additions. | -| guest-cart-items | sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| guest-cart-items | unitSubtotalAggregation | Integer | Subtotal for the given item. | -| guest-cart-items | unitProductOptionPriceAggregation | Integer | Item total product option price. | -| guest-cart-items | sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| guest-cart-items | unitDiscountAmountAggregation | Integer | Item total discount amount. | -| guest-cart-items | sumDiscountAmountAggregation | Integer | Sum Item total discount amount. | -| guest-cart-items | unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions. | -| guest-cart-items | sumDiscountAmountFullAggregation | Integer | Item total discount amount with additions. | -| guest-cart-items | unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| guest-cart-items | sumPriceToPayAggregation | Integer | Sum of the prices to pay (after discounts). | -| guest-cart-items | salesUnit | Object | List of attributes defining the sales unit to be used for item amount calculation. | -| guest-cart-items | salesUnit.id | Integer | Numeric value that defines the sales units to calculate the item amount in. | -| guest-cart-items | salesUnit.amount | Integer | Amount of product in the defined sales units. | -| guest-cart-items | selectedProductOptions | array | List of attributes describing the product options that were added to the cart with the product. | -| guest-cart-items | selectedProductOptions.optionGroupName | String | Name of the group to which the option belongs. | -| guest-cart-items | selectedProductOptions.sku | String | SKU of the product option. | -| guest-cart-items | selectedProductOptions.optionName | String | Product option name. | -| guest-cart-items | selectedProductOptions.price | Integer | Product option price in cents. | -| guest-cart-items | selectedProductOptions.currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | -| product-options | optionGroupName | String | Name of the group to which the option belongs. | -| product-options | sku | String | SKU of the product option. | -| product-options | optionName | String | Product option name. | -| product-options | price | Integer | Product option price in cents. | -| product-options | currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | -| vouchers, cart-rules | displayName | String | Discount name displayed on the Storefront. | -| vouchers, cart-rules | amount | Integer | Amount of the provided discount. | -| vouchers, cart-rules | code | String | Discount code. | -| vouchers, cart-rules | discountType | String | Discount type. | -| vouchers, cart-rules | isExclusive | Boolean | Discount exclusivity. | -| vouchers, cart-rules | expirationDateTime | DateTimeUtc | Date and time on which the discount expires. | -| vouchers, cart-rules | discountPromotionAbstractSku | String | SKU of the products to which the discount applies. If the discount can be applied to any product, the value is `null`. | -| vouchers, cart-rules | discountPromotionQuantity | Integer | Specifies the amount of the product required to be able to apply the discount. If the minimum number is `0`, the value is `null`. | - - -For the attributes of the included resources, see: -* [Retrieve a guest cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-carts.html#retrieve-a-guest-cart) -* [Retrieve gift cards of guest users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-gift-cards-of-guest-users.html) -* [Retrieve concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) -* [Retrieve abstract products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/abstract-products/retrieving-abstract-products.html) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) - -## Change item quantity in a guest cart - -To change item quantity, send the request: - -*** -`PATCH` {% raw %}**/guest-carts/*{{guest_cart_id}}*/guest-cart-items/*{{groupKey}}***{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{guest_cart_id}}***{% endraw %}| Unique identifier of the guest cart. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/manage-using-glue-api/manage-guest-carts/manage-guest-carts.html#retrieve-a-guest-cart). | -| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it is equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | - -### Request - - -| HEADER KEY | HEADER VALUE EXAMPLE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | 164b-5708-8530 | ✓ | Guest user's unique identifier. For security purposes, we recommend passing a hyphenated alphanumeric value, but you can pass any. If you are sending automated requests, you can configure your API client to generate this value. | - - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. | guest-cart-items, concrete-products, product-options, sales-units, product-measurement-units | - -{% info_block infoBox "Included resources" %} - -* To retrieve product options, include `guest-cart-items`, `concrete-products`, and `product-options`. -* To retrieve product measurement units, include `sales-units` and `product-measurement units` - -{% endinfo_block %} - -
-Request sample: change item quantity in a guest cart - -`PATCH https://glue.mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802/guest-cart-items/177_25913296` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "209_12554247", - "quantity": 10 - } - } -} -``` -
- - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| sku | String | | SKU of the item to be updated. | -| quantity | String | ✓ | Quantity of the item to be set. | - -For more request body examples, see [Add items to a guest cart](#add-items-to-a-guest-cart) - -### Response - -If the update is successful, the endpoint returns `RestCartsResponse` with the updated quantity. For examples, see [Add items to a guest cart](#add-items-to-a-guest-cart). - -## Remove an item from a guest cart - -To remove an item from a guest cart, send the request: - -*** -`DELETE` {% raw %}**/guest-carts/*{{guest_cart_id}}*/guest-cart-items/*{{groupKey}}***{% endraw %} - -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{guest_cart_id}}***{% endraw %}| Unique identifier of the guest cart. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/manage-using-glue-api/manage-guest-carts/manage-guest-carts.html#retrieve-a-guest-cart). | -| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it is equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/manage-using-glue-api/manage-guest-carts/manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | - -### Request - -| HEADER KEY | HEADER VALUE EXAMPLE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | 164b-5708-8530 | ✓ | Hyphenated alphanumeric value that is the user's unique identifier. It is passed in the X-Anonymous-Customer-Unique-Id header when [creating a guest cart](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/manage-using-glue-api/manage-guest-carts/manage-guest-carts.html#create-a-guest-cart). | - -Request sample: remove an item from a guest cart - -`DELETE https://glue.mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802/guest-cart-items/177_25913296` - -### Response - -If the item is deleted successfully, the endpoint returns the "204 No Content" status code. - -## Possible errors - -| CODE | REASON | -| --- | --- | -| 101 | Cart with given uuid not found. | -| 102 | Failed to add an item to cart. | -| 103 | Item with the given group key not found in the cart. | -| 104 | Cart uuid is missing. | -| 105 | Cart could not be deleted. | -| 106 | Cart item could not be deleted. | -| 107 | Failed to create cart. | -| 109 | Anonymous customer unique ID is empty. | -| 110 | Customer already has a cart. | -| 111 | Can’t switch price mode when there are items in the cart. | -| 112 | Store data is invalid. | -| 113 | Cart item could not be added. | -| 114 | Cart item could not be updated. | -| 115 | Unauthorized cart action. | -| 116 | Currency is missing. | -| 117 | Currency is incorrect. | -| 118 | Price mode is missing. | -| 119 | Price mode is incorrect. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-carts.md b/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-carts.md deleted file mode 100644 index a586be77ff7..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/guest-carts/managing-guest-carts.md +++ /dev/null @@ -1,2113 +0,0 @@ ---- -title: Managing guest carts -description: Retrieve details about guest carts and learn what else you can do with the resource in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint allows managing guest carts. - -## Installation -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) -* [Glue API: Promotions & Discounts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-promotions-and-discounts-feature-integration.html) -* [Glue API: Product options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) -* [Glue API: Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-labels-feature-integration.html) -* [GLUE API: Marketplace Poruduct Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) - -## Create a guest cart - -To create a guest cart as an unauthenticated user, [add items to a guest cart](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-guest-cart-items.html#add-items-to-a-guest-cart). - -## Retrieve a guest cart - -To retrieve a guest cart, send the request: - ---- -`GET` **/guest-carts** - ---- - -{% info_block infoBox "Guest cart ID" %} - -Guest users have one guest cart by default. If you already have a guest cart, you can optionally specify its ID when adding items. To do that, use the following endpoint. The information in this section is valid for both of the endpoints. - -`GET` {% raw %}**/guest-carts/*{{guestCartId}}***{% endraw %} - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{guestCartId}}***{% endraw %} | Unique identifier of the guest cart. To get it, [retrieve a guest cart](#retrieve-a-guest-cart). | - -{% endinfo_block %} - -{% info_block infoBox "Note" %} - -When retrieving the cart with `guestCartId`, the response includes a single object, and when retrieving the resource without specifying it, you get an array containing a single object. - -{% endinfo_block %} - -### Request - -| HEADER KEY | HEADER VALUE EXAMPLE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | 164b-5708-8530 | ✓ | Guest user's unique identifier. For security purposes, we recommend passing a hyphenated alphanumeric value, but you can pass any. If you are sending automated requests, you can configure your API client to generate this value.| - -| PATH PARAMETER | DESCRIPTION | POSSIBLE ERRORS | -| --- | --- | --- | -| include | Adds resource relationships to the request. |
  • guest-cart-items
  • cart-rules
  • promotional-items
  • gift-cards
  • vouchers
  • product-options
  • sales-units
  • product-measurement-units
  • product-labels
  • product-offers
  • product-offer-availabilities
  • product-offer-prices
  • merchants
| - -{% info_block infoBox "Included resources" %} - -* To retrieve product options, include `guest-cart-items`, `concrete-products`, and `product-options`. -* To retrieve product measurement units, include `sales-units` and `product-measurement-units`. -* To retrieve product labels assigned to the products in a cart, include `concrete-products` and `product-labels`. -* To retrieve product offers, include `items` and `concrete-products`. -* To retrieve product offer availabilities, include `items`, `concrete-products`, and `product-offer-availabilities`. -* To retrieve product offer prices, include `items`, `concrete-products`, and `product-offer-prices`. - -{% endinfo_block %} - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/guest-carts` | Retrieve a guest cart. | -| `GET https://glue.mysprykershop.com/guest-carts?include=guest-cart-items` | Retrieve information about a guest cart with its items included. | -| `GET https://glue.mysprykershop.com/guest-carts?include=cart-rules` | Retrieve a guest cart with information about the cart rules. | -| `GET https://glue.mysprykershop.com/guest-carts?include=gift-cards,vouchers` | Retrieve a guest cart with information about the gift cards applied. | -| `GET https://glue.mysprykershop.com/guest-carts?include=guest-cart-items,concrete-products,product-options` | Retrieve a guest cart with information about its items, respective concrete products, and product options included. | -| `GET https://glue.mysprykershop.com/guest-carts?include=sales-units,product-measurement-units` | Retrieve a guest cart with information about its items, sales units, and product measurement units. | -| `GET https://glue.mysprykershop.com/guest-carts?include=vouchers` | Retrieve a guest cart with information about vouchers. | -| `GET https://glue.mysprykershop.com/guest-carts?include=concrete-products,product-labels` | Retrieve a guest cart with information about concrete products and the product labels assigned. | -| `GET https://glue.mysprykershop.com/guest-carts?include=promotional-items,abstract-products,concrete-product`| Retrieve detailed information on the promotional items for the guest cart. | -| `GET https://glue.mysprykershop.com/guest-carts?include=items,concrete-products,product-offers` | Retrieve a guest cart with information about product offers included. | -| `GET https://glue.mysprykershop.com/guest-carts?include=items,concrete-products,product-offers,product-offer-availabilities` | Retrieve a guest cart with product offer availabilities information included. | -| `GET https://glue.mysprykershop.com/guest-carts?include=items,concrete-products,product-offers,product-offer-prices` | Retrieve a guest cart with product offer prices information included. | -| `GET https://glue.mysprykershop.com/guest-carts/f0d01709-4dea-5ac3-8ceb-873875446ab0?include=guest-cart-items,merchants` | Retrieve a guest cart with items and information about merchants included. | - - -### Response - -
-Response sample: retrieve a guest cart - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "f8782b6c-848d-595e-b3f7-57374f1ff6d7", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 10689, - "taxTotal": 15360, - "subtotal": 106892, - "grandTotal": 96203, - "priceToPay": 93203 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10689, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/cart-codes" - } -} -``` -
- - -
-Response sample: retrieve information about a guest cart with its items included - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "f8782b6c-848d-595e-b3f7-57374f1ff6d7", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 10689, - "taxTotal": 15360, - "subtotal": 106892, - "grandTotal": 96203, - "priceToPay": 96203 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10689, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7" - }, - "relationships": { - "guest-cart-items": { - "data": [ - { - "type": "guest-cart-items", - "id": "023_21758366" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/cart-codes?include=guest-cart-items" - }, - "included": [ - { - "type": "guest-cart-items", - "id": "023_21758366", - "attributes": { - "sku": "023_21758366", - "quantity": "4", - "groupKey": "023_21758366", - "abstractSku": "023", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 26723, - "sumPrice": 106892, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 26723, - "sumGrossPrice": 106892, - "unitTaxAmountFullAggregation": 3840, - "sumTaxAmountFullAggregation": 15360, - "sumSubtotalAggregation": 106892, - "unitSubtotalAggregation": 26723, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2672, - "sumDiscountAmountAggregation": 10689, - "unitDiscountAmountFullAggregation": 2672, - "sumDiscountAmountFullAggregation": 10689, - "unitPriceToPayAggregation": 24051, - "sumPriceToPayAggregation": 96203 - }, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7/guest-cart-items/023_21758366" - } - } - ] -} -``` -
- - -
-Response sample: retrieve a guest cart with information about the cart rules - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "f8782b6c-848d-595e-b3f7-57374f1ff6d7", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 10689, - "taxTotal": 15360, - "subtotal": 106892, - "grandTotal": 96203, - "priceToPay": 96203 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10689, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7" - }, - "relationships": { - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/cart-codes?include=cart-rules" - }, - "included": [ - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 10689, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- - - -
-Response sample: retrieve a guest cart with information about the gift cards applied - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "f8782b6c-848d-595e-b3f7-57374f1ff6d7", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 10689, - "taxTotal": 15360, - "subtotal": 106892, - "grandTotal": 96203, - "priceToPay": 93203 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 10689, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7" - }, - "relationships": { - "gift-cards": { - "data": [ - { - "type": "gift-cards", - "id": "GC-Z9FYJRK3-20" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/cart-codes?include=gift-cards" - }, - "included": [ - { - "type": "gift-cards", - "id": "GC-Z9FYJRK3-20", - "attributes": { - "code": "GC-Z9FYJRK3-20", - "name": "Gift Card 30", - "value": 3000, - "currencyIsoCode": "EUR", - "actualValue": 3000, - "isActive": true - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f8782b6c-848d-595e-b3f7-57374f1ff6d7/cart-codes/GC-Z9FYJRK3-20" - } - } - ] -} -``` -
- -
-Response sample: retrieve a guest cart with information about its items, respective concrete products, and product options included - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "7e42298e-9f15-5105-a192-96726a2b9da8", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13301, - "taxTotal": 20711, - "subtotal": 143012, - "grandTotal": 129711, - "priceToPay": 129711 - }, - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 13301, - "code": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com.com/guest-carts/7e42298e-9f15-5105-a192-96726a2b9da8" - }, - "relationships": { - "guest-cart-items": { - "data": [ - { - "type": "guest-cart-items", - "id": "181_31995510-3-5" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com.com/guest-cart-items?include=guest-cart-items,concrete-products,product-options" - }, - "included": [ - { - "type": "product-options", - "id": "OP_1_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_1_year_waranty", - "optionName": "One (1) year limited warranty", - "price": 0, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510/product-options/OP_1_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_2_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_2_year_waranty", - "optionName": "Two (2) year limited warranty", - "price": 1000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510/product-options/OP_2_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_3_year_waranty", - "attributes": { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 2000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510/product-options/OP_3_year_waranty" - } - }, - { - "type": "product-options", - "id": "OP_insurance", - "attributes": { - "optionGroupName": "Insurance", - "sku": "OP_insurance", - "optionName": "Two (2) year insurance coverage", - "price": 10000, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510/product-options/OP_insurance" - } - }, - { - "type": "product-options", - "id": "OP_gift_wrapping", - "attributes": { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 500, - "currencyIsoCode": "EUR" - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510/product-options/OP_gift_wrapping" - } - }, - { - "type": "concrete-products", - "id": "181_31995510", - "attributes": { - "sku": "181_31995510", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "181", - "name": "Samsung Galaxy Tab S2 SM-T813", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "internal_memory": "3 GB", - "processor_model": "APQ8076", - "digital_zoom": "4 x", - "storage_media": "flash", - "brand": "Samsung", - "color": "Pink" - }, - "superAttributesDefinition": [ - "internal_memory", - "storage_media", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T813", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "internal_memory": "Max internal memory", - "processor_model": "Processor model", - "digital_zoom": "Digital zoom", - "storage_media": "Storage media", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com.com/concrete-products/181_31995510" - }, - "relationships": { - "product-options": { - "data": [ - { - "type": "product-options", - "id": "OP_1_year_waranty" - }, - { - "type": "product-options", - "id": "OP_2_year_waranty" - }, - { - "type": "product-options", - "id": "OP_3_year_waranty" - }, - { - "type": "product-options", - "id": "OP_insurance" - }, - { - "type": "product-options", - "id": "OP_gift_wrapping" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "181_31995510-3-5", - "attributes": { - "sku": "181_31995510", - "quantity": "4", - "groupKey": "181_31995510-3-5", - "abstractSku": "181", - "amount": null, - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 33253, - "sumPrice": 133012, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 33253, - "sumGrossPrice": 133012, - "unitTaxAmountFullAggregation": 5177, - "sumTaxAmountFullAggregation": 20711, - "sumSubtotalAggregation": 143012, - "unitSubtotalAggregation": 35753, - "unitProductOptionPriceAggregation": 2500, - "sumProductOptionPriceAggregation": 10000, - "unitDiscountAmountAggregation": 3325, - "sumDiscountAmountAggregation": 13301, - "unitDiscountAmountFullAggregation": 3325, - "sumDiscountAmountFullAggregation": 13301, - "unitPriceToPayAggregation": 32428, - "sumPriceToPayAggregation": 129711 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": null, - "selectedProductOptions": [ - { - "optionGroupName": "Gift wrapping", - "sku": "OP_gift_wrapping", - "optionName": "Gift wrapping", - "price": 2000 - }, - { - "optionGroupName": "Warranty", - "sku": "OP_3_year_waranty", - "optionName": "Three (3) year limited warranty", - "price": 8000 - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com.com/guest-carts/7e42298e-9f15-5105-a192-96726a2b9da8/guest-cart-items/181_31995510-3-5" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "181_31995510" - } - ] - } - } - } - ] -} -``` - -
- -
-Response sample: retrieve a guest cart with information about its items, sales units, and product measurement units - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "5cc8c1ad-a12a-5a93-9c6e-fd4bc546c81c", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 718, - "subtotal": 4500, - "grandTotal": 4500, - "priceToPay": 4500 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/5cc8c1ad-a12a-5a93-9c6e-fd4bc546c81c" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/guest-cart-items?include=sales-units,product-measurement-units" - }, - "included": [ - { - "type": "product-measurement-units", - "id": "METR", - "attributes": { - "name": "Meter", - "defaultPrecision": 100 - }, - "links": { - "self": "https://glue.mysprykershop.com/product-measurement-units/METR" - } - }, - { - "type": "sales-units", - "id": "33", - "attributes": { - "conversion": 1, - "precision": 100, - "isDisplayed": true, - "isDefault": true, - "productMeasurementUnitCode": "METR" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/cable-vga-1-2/sales-units/33" - }, - "relationships": { - "product-measurement-units": { - "data": [ - { - "type": "product-measurement-units", - "id": "METR" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "attributes": { - "sku": "cable-vga-1-2", - "quantity": 3, - "groupKey": "cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33", - "abstractSku": "cable-vga-1", - "amount": "4.5", - "productOfferReference": null, - "merchantReference": null, - "calculations": { - "unitPrice": 1500, - "sumPrice": 4500, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 1500, - "sumGrossPrice": 4500, - "unitTaxAmountFullAggregation": 239, - "sumTaxAmountFullAggregation": 718, - "sumSubtotalAggregation": 4500, - "unitSubtotalAggregation": 1500, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 1500, - "sumPriceToPayAggregation": 4500 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": { - "id": 33, - "amount": "4.5" - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/5cc8c1ad-a12a-5a93-9c6e-fd4bc546c81c/guest-cart-items/cable-vga-1-2_quantity_sales_unit_id_33_amount_1.5_sales_unit_id_33" - }, - "relationships": { - "sales-units": { - "data": [ - { - "type": "sales-units", - "id": "33" - } - ] - } - } - } - ] -} -``` -
- - -
-Response sample: retrieve a guest cart with information about vouchers - -```json -{ - "data": { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": {...}, - "links": {...}, - "relationships": { - "vouchers": { - "data": [ - { - "type": "vouchers", - "id": "mydiscount-yu8je" - } - ] - }, - "cart-rules": { - "data": [ - { - "type": "cart-rules", - "id": "1" - } - ] - } - } - }, - "included": [ - { - "type": "vouchers", - "id": "mydiscount-yu8je", - "attributes": { - "amount": 49898, - "code": "mydiscount-yu8je", - "discountType": "voucher", - "displayName": "My Discount", - "isExclusive": false, - "expirationDateTime": "2020-02-29 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/vouchers/mydiscount-yu8je" - } - }, - { - "type": "cart-rules", - "id": "1", - "attributes": { - "amount": 19959, - "code": null, - "discountType": "cart_rule", - "displayName": "10% Discount for all orders above", - "isExclusive": false, - "expirationDateTime": "2020-12-31 00:00:00.000000", - "discountPromotionAbstractSku": null, - "discountPromotionQuantity": null - }, - "links": { - "self": "https://glue.mysprykershop.com/cart-rules/1" - } - } - ] -} -``` -
- -
-Response sample: retrieve a guest cart with information about concrete products and the product labels assigned - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "4f3e67f7-f18c-55ad-8297-2e09b80cf3ff", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 6244, - "subtotal": 39107, - "grandTotal": 39107, - "priceToPay": 39107 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/4f3e67f7-f18c-55ad-8297-2e09b80cf3ff" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/guest-cart-items?include=concrete-products,product-labels" - }, - "included": [ - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 3, - "frontEndReference": "highlight" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - }, - { - "type": "concrete-products", - "id": "179_29658416", - "attributes": { - "sku": "179_29658416", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Samsung Galaxy Tab S2 SM-T715", - "description": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos, videos and work-related files with you wherever you need to go. The Galaxy Tab S2’s 4:3 ratio display is optimised for magazine reading and web use. Switch to Reading Mode to adjust screen brightness and change wallpaper—create an ideal eBook reading environment designed to reduce the strain on your eyes. Get greater security with convenient and accurate fingerprint functionality. Activate fingerprint lock by pressing the home button. Use fingerprint verification to restrict / allow access to your web browser, screen lock mode and your Samsung account.", - "attributes": { - "storage_media": "flash", - "touch_technology": "Multi-touch", - "max_memory_card_size": "128 GB", - "internal_storage_capacity": "32 GB", - "brand": "Samsung", - "color": "Black" - }, - "superAttributesDefinition": [ - "storage_media", - "internal_storage_capacity", - "color" - ], - "metaTitle": "Samsung Galaxy Tab S2 SM-T715", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Enjoy greater flexibility ...than ever before with the Galaxy Tab S2. Remarkably slim and ultra-lightweight, use this device to take your e-books, photos,", - "attributeNames": { - "storage_media": "Storage media", - "touch_technology": "Touch Technology", - "max_memory_card_size": "Max memory card size", - "internal_storage_capacity": "Internal storage capacity", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/179_29658416" - }, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "179_29658416", - "attributes": { - "sku": "179_29658416", - "quantity": 1, - "groupKey": "179_29658416", - "abstractSku": "179", - "amount": null, - "calculations": { - "unitPrice": 39107, - "sumPrice": 39107, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 39107, - "sumGrossPrice": 39107, - "unitTaxAmountFullAggregation": 6244, - "sumTaxAmountFullAggregation": 6244, - "sumSubtotalAggregation": 39107, - "unitSubtotalAggregation": 39107, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 39107, - "sumPriceToPayAggregation": 39107 - }, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/4f3e67f7-f18c-55ad-8297-2e09b80cf3ff/guest-cart-items/179_29658416" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "179_29658416" - } - ] - } - } - } - ] -} -``` -
- - -
-Response sample: retrieve detailed information on the promotional items for the guest cart - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": {...}, - "links": {...}, - "relationships": { - "promotional-items": { - "data": [ - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - } - ] - } - } - }, - { - "type": "guest-carts", - "id": "1f1662c4-01e1-50d1-877d-95534d1b1833", - "attributes": {...}, - "links": {...} - } - ], - "links": {...}, - "included": [ - { - "type": "concrete-products", - "id": "112_312526171", - "attributes": {...} - }, - "links": {...} - }, - { - "type": "concrete-products", - "id": "112_306918001", - "attributes": {...}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_312526191", - "attributes": {...}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_312526172", - "attributes": {....}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_306918002", - "attributes": {...}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_312526192", - "attributes": {...}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_306918003", - "attributes": {...}, - "links": {...}, - { - "type": "concrete-products", - "id": "112_312526193", - "attributes": {...}, - "links": {...}, - { - "type": "abstract-products", - "id": "112", - "attributes": {...}, - "links": {...}, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "112_312526171" - }, - { - "type": "concrete-products", - "id": "112_306918001" - }, - { - "type": "concrete-products", - "id": "112_312526191" - }, - { - "type": "concrete-products", - "id": "112_312526172" - }, - { - "type": "concrete-products", - "id": "112_306918002" - }, - { - "type": "concrete-products", - "id": "112_312526192" - }, - { - "type": "concrete-products", - "id": "112_306918003" - }, - { - "type": "concrete-products", - "id": "112_312526193" - } - ] - } - } - }, - { - "type": "promotional-items", - "id": "bfc600e1-5bf1-50eb-a9f5-a37deb796f8a", - "attributes": { - "sku": "112", - "quantity": 2 - }, - "links": { - "self": "https://glue.mysprykershop.com/promotional-items/bfc600e1-5bf1-50eb-a9f5-a37deb796f8a" - }, - "relationships": { - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "112" - } - ] - } - } - } - ] -} -``` - -
- -
-Response sample: retrieve a guest cart with information about product offers included - -```json -{ - "data": { - "type": "guest-carts", - "id": "6851dc6a-ebed-52ed-b229-81a35fe94c49", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 35273, - "subtotal": 220920, - "grandTotal": 220920, - "priceToPay": 220920 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49" - } - }, - "included": [ - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "041_25904691_offer48", - "attributes": { - "sku": "041_25904691", - "quantity": 21, - "groupKey": "041_25904691_offer48", - "abstractSku": "041", - "amount": null, - "productOfferReference": "offer48", - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 10520, - "sumPrice": 220920, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10520, - "sumGrossPrice": 220920, - "unitTaxAmountFullAggregation": 1680, - "sumTaxAmountFullAggregation": 35273, - "sumSubtotalAggregation": 220920, - "unitSubtotalAggregation": 10520, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10520, - "sumPriceToPayAggregation": 220920 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49/guest-cart-items/041_25904691_offer48" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: Retrieve a guest cart with product offer availabilities information included - -```json -{ - "data": { - "type": "guest-carts", - "id": "6851dc6a-ebed-52ed-b229-81a35fe94c49", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 35273, - "subtotal": 220920, - "grandTotal": 220920, - "priceToPay": 220920 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49" - } - }, - "included": [ - { - "type": "product-offer-availabilities", - "id": "offer89", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer89" - } - ] - } - } - }, - { - "type": "product-offer-availabilities", - "id": "offer48", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "041_25904691_offer48", - "attributes": { - "sku": "041_25904691", - "quantity": 21, - "groupKey": "041_25904691_offer48", - "abstractSku": "041", - "amount": null, - "productOfferReference": "offer48", - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 10520, - "sumPrice": 220920, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10520, - "sumGrossPrice": 220920, - "unitTaxAmountFullAggregation": 1680, - "sumTaxAmountFullAggregation": 35273, - "sumSubtotalAggregation": 220920, - "unitSubtotalAggregation": 10520, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10520, - "sumPriceToPayAggregation": 220920 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49/guest-cart-items/041_25904691_offer48" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a guest cart with product offer prices information included - -```json -{ - "data": { - "type": "guest-carts", - "id": "6851dc6a-ebed-52ed-b229-81a35fe94c49", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 35273, - "subtotal": 220920, - "grandTotal": 220920, - "priceToPay": 220920 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49" - } - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer89", - "attributes": { - "price": 9342, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9342, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 10065, - "netAmount": 10050, - "quantity": 2 - }, - { - "grossAmount": 10058, - "netAmount": 10045, - "quantity": 7 - }, - { - "grossAmount": 10052, - "netAmount": 10040, - "quantity": 18 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer89", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer89" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer89" - } - ] - } - } - }, - { - "type": "product-offer-prices", - "id": "offer48", - "attributes": { - "price": 9861, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9861, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 10650, - "netAmount": 10500, - "quantity": 3 - }, - { - "grossAmount": 10580, - "netAmount": 10450, - "quantity": 9 - }, - { - "grossAmount": 10520, - "netAmount": 10400, - "quantity": 17 - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer48", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer48" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer48" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "041_25904691", - "attributes": { - "sku": "041_25904691", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "041", - "name": "Canon PowerShot SX610", - "description": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before each shot then compiles them all into a single video. With built in NFC and Wi-Fi its so easy to share your happy snaps to your favourite social media platforms. Expand your creative photography skills through applying a range of artistic presets such as toy camera or fish eye effect. Capture images remotely and view live images from the camera via your phone and the Camera Connect app. Bring your memories to life as you experience videos on Full HD quality in 30p/MP4 recording.", - "attributes": { - "hd_type": "Full HD", - "megapixel": "20.2 MP", - "optical_zoom": "18 x", - "display": "LCD", - "brand": "Canon", - "color": "White" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon PowerShot SX610", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Optical Quality Capture quality images from a distance with a 20.2 MP, 25mm wide, 18x optical zoom lens. Hybrid Auto mode records 4 seconds of video before", - "attributeNames": { - "hd_type": "HD type", - "megapixel": "Megapixel", - "optical_zoom": "Optical zoom", - "display": "Display", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/041_25904691" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer89" - }, - { - "type": "product-offers", - "id": "offer48" - } - ] - } - } - }, - { - "type": "guest-cart-items", - "id": "041_25904691_offer48", - "attributes": { - "sku": "041_25904691", - "quantity": 21, - "groupKey": "041_25904691_offer48", - "abstractSku": "041", - "amount": null, - "productOfferReference": "offer48", - "merchantReference": "MER000002", - "calculations": { - "unitPrice": 10520, - "sumPrice": 220920, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 10520, - "sumGrossPrice": 220920, - "unitTaxAmountFullAggregation": 1680, - "sumTaxAmountFullAggregation": 35273, - "sumSubtotalAggregation": 220920, - "unitSubtotalAggregation": 10520, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10520, - "sumPriceToPayAggregation": 220920 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "productConfigurationInstance": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/6851dc6a-ebed-52ed-b229-81a35fe94c49/guest-cart-items/041_25904691_offer48" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "041_25904691" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a guest cart with items and information about merchants included - -```json -{ - "data": { - "type": "guest-carts", - "id": "f0d01709-4dea-5ac3-8ceb-873875446ab0", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "name": "Shopping cart", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 0, - "taxTotal": 822, - "subtotal": 12572, - "grandTotal": 12572, - "priceToPay": 12572 - }, - "discounts": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f0d01709-4dea-5ac3-8ceb-873875446ab0" - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "guest-cart-items", - "id": "109_19416433", - "attributes": { - "sku": "109_19416433", - "quantity": "1", - "groupKey": "109_19416433", - "abstractSku": "109", - "amount": null, - "productOfferReference": null, - "merchantReference": "MER000001", - "calculations": { - "unitPrice": 12572, - "sumPrice": 12572, - "taxRate": 7, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 12572, - "sumGrossPrice": 12572, - "unitTaxAmountFullAggregation": 822, - "sumTaxAmountFullAggregation": 822, - "sumSubtotalAggregation": 12572, - "unitSubtotalAggregation": 12572, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 12572, - "sumPriceToPayAggregation": 12572 - }, - "configuredBundle": null, - "configuredBundleItem": null, - "salesUnit": null, - "selectedProductOptions": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/guest-carts/f0d01709-4dea-5ac3-8ceb-873875446ab0/guest-cart-items/109_19416433" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- - - -**General cart information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| priceMode | String | Price mode that was active when the cart was created. | -| currency | String | Currency that was selected when the cart was created. | -| store | String | Store for which the cart was created. | -| name | String | Name of the shopping cart. | -| isDefault | Boolean | Defines whether the cart is default or not. | - -**Totals information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| expenseTotal | String | Total amount of expenses (including, for example, shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the cart. | -| taxTotal | Integer | Total amount of taxes to be paid. | -| subTotal | Integer | Subtotal of the cart. | -| grandTotal | Integer | Grand total of the cart. | - -**Discount information** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| displayName | String | Discount name. | -| code | String | Discount code applied to the cart. | -| amount | Integer | Discount amount applied to the cart. | - -**Included resource attributes** - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | --- | -| product-options | optionGroupName | String | Name of the group to which the option belongs. | -| product-options | sku | String | SKU of the product option. | -| product-options | optionName | String | Product option name. | -| product-options | price | Integer | Product option price in cents. | -| product-options | currencyIsoCode | String | ISO 4217 code of the currency in which the product option price is specified. | -| vouchers, cart-rules | displayName | String | Discount name displayed on the Storefront. | -| vouchers, cart-rules | amount | Integer | Amount of the provided discount. | -| vouchers, cart-rules | code | String | Discount code. | -| vouchers, cart-rules | discountType | String | Discount type. | -| vouchers, cart-rules | isExclusive | Boolean | Discount exclusivity. | -| vouchers, cart-rules | expirationDateTime | DateTimeUtc | Date and time on which the discount expires. | -| vouchers, cart-rules | discountPromotionAbstractSku | String | SKU of the products to which the discount applies. If the discount can be applied to any product, the value is `null`. | -| vouchers, cart-rules | discountPromotionQuantity | Integer | Specifies the amount of the product required to be able to apply the discount. If the minimum number is `0`, the value is `null`. | -| promotional-items | id | String | Unique identifier of the promotional item. The ID can be used to apply the promotion to the given purchase. | -| promotional-items | quantity | Integer | Specifies how many promotions can be applied to the given purchase. | -| promotional-items | sku | String | SKU of the promoted abstract product. | -| product-offers | merchantSku | String | SKU of the Merchant the product offer belongs to. | -| product-offers| merchantReference | String | Merchant Reference assigned to every Merchant. | -| product-offers | isDefault | Boolean | Defines whether the Product Offer is default or not. | - - -For the attributes of other included resources, see: -* [Manage guest cart items](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-cart-items.html) -* [Retrieve measurement units](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-measurement-units.html) -* [Retrieve concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) -* [Retrieve gift cards of guest users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-gift-cards-of-guest-users.html) -* [Retrieve a measurement units](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-measurement-units.html#measurement-units-response-attributes) -* [Retrieve product labels](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html#product-offers-response-attributes) -* [Retrieving product offer availability](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-availability.html#product-offer-availability-response-attributes) -* [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) - -## Assign a guest cart to a registered customer - -Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart is automatically assigned to their account. - -To assign a guest cart to a customer, that is, merge the carts, include the unique identifier associated with the customer in the *X-Anonymous-Customer-Unique-Id* header of the authentication request if it is an existing customer, or request to create a customer account if it is a new one. - -Upon login, the behavior depends on whether your project is a single cart or [multiple cart](/docs/scos/user/features/{{page.version}}/multiple-carts-feature-overview.html) environment: - -* In a **single cart** environment, the products in the guest cart are added to the customers' own cart. -* In a **multiple cart** environment, the guest cart is converted to a regular user cart and added to the list of the customers' own carts. - -The workflow is displayed in the following diagram: - -![Assign cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Storefront+Guides/Managing+Carts/Managing+Guest+Carts/assigning-guest-cart-to-registered-user.png) - -Below, you can see an exemplary workflow for converting a guest cart into a regular cart: - -1. The customer adds items to a guest cart. - -Request sample: - -`POST https://glue.myspsrykershop.com/guest-cart-items` - -```json -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "022_21994751", - "quantity": 5 - } - } -} -``` - - -| HEADER KEY | HEADER VALUE | DESCRIPTION | -| --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | guest-user-001 | Guest user's unique identifier. For security purposes, we recommend passing a hyphenated alphanumeric value, but you can pass any. If you are sending automated requests, you can configure your API client to generate this value.. | - -Response sample: - -```json -{ - "data": { - "type": "guest-carts", - "id": "9183f604-9b2c-53d9-acbf-cf59b9b2ff9f", - "attributes": {...}, - "links": {...} - }, - "included": [...] -} -``` -1. The customer logs in. - -Request sample: `POST https://glue.myspsrykershop.com/access-tokens` - -```json -{ - "data": { - "type": "access-tokens", - "attributes": { - "username": "john.doe@example.com", - "password": "qwerty" - } - } -} -``` - -| HEADER KEY | HEADER VALUE | DESCRIPTION | -| --- | --- | --- | -| X-Anonymous-Customer-Unique-Id | guest-user-001 | Guest user's unique identifier. For security purposes, we recommend passing a hyphenated alphanumeric value, but you can pass any. If you are sending automated requests, you can configure your API client to generate this value. | - -Response sample: - -```json -{ - "data": { - "type": "access-tokens", - "id": null, - "attributes": { - "tokenType": "Bearer", - "expiresIn": 28800, - "accessToken": "eyJ0eXAiOiJKV1QiLC...", - "refreshToken": "def50200ae2d0...", - "idCompanyUser": "94d58692-c117-5466-8b9f-2ba32dd87c43" - }, - "links": {...} - } -} -``` -3. The customer requests a list of his own carts. - -Request sample:  - -`GET https://glue.myspsrykershop.com/carts` - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| --- | --- | --- | --- | -| Authorization | string | ✓ | Alphanumeric string that authenticates the customer you want to change the password of. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -In the **multi-cart** environment, the guest cart has been converted to a regular cart. You can see it in the list of carts with the id `9183f604-9b2c-53d9-acbf-cf59b9b2ff9f`. - -Response sample: - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": {...}, - "links": {...} - }, - { - "type": "carts", - "id": "9183f604-9b2c-53d9-acbf-cf59b9b2ff9f", - "attributes": {...}, - "links": {...} - } - ], - "links": {...} -} -``` - -In a **single cart** environment, items from the guest cart have been added to the user's own cart. - -**Response body** - -```json -{ - "data": [ - { - "type": "guest-carts", - "id": "1ce91011-8d60-59ef-9fe0-4493ef3628b2", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "isDefault": true, - "totals": { - "expenseTotal": 0, - "discountTotal": 13000, - "taxTotal": 18681, - "subtotal": 130000, - "grandTotal": 117000 - }, - "discounts": [...] - }, - "links": {...} - }, -``` - -## Possible errors - - -| Code | Reason | -| --- | --- | -| 101 | Cart with given uuid not found. | -| 102 | Failed to add an item to cart. | -| 103 | Item with the given group key not found in the cart. | -| 104 | Cart uuid is missing. | -| 105 | Cart could not be deleted. | -| 106 | Cart item could not be deleted. | -| 107 | Failed to create a cart. | -| 109 | Anonymous customer unique ID is empty. | -| 111 | Can’t switch price mode when there are items in the cart. | -| 112 | Store data is invalid. | -| 113 | Cart item could not be added. | -| 114 | Cart item could not be updated. | -| 115 | Unauthorized cart action. | -| 116 | Currency is missing. | -| 117 | Currency is incorrect. | -| 118 | Price mode is missing. | -| 119 | Price mode is incorrect. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/managing-the-returns.md b/docs/marketplace/dev/glue-api-guides/202108.0/managing-the-returns.md deleted file mode 100644 index 5e4038407ea..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/managing-the-returns.md +++ /dev/null @@ -1,757 +0,0 @@ ---- -title: Managing the returns -description: Manage the returns via Glue API in the Spryker Marketplace. -template: glue-api-storefront-guide-template ---- - -The Return Management API lets developers retrieve return information and create returns. The list of retrievable information includes: - -* Sales order items that a customer can return. -* Returns per customer. -* Predefined reasons stored in the database. - -In your development, the API can help you: -* View order details, including returnable or non-returnable items. -* Create returns for the returnable items. -* View return details of a specific customer. - -Specify reasons for returning the sales order items. - -## Installation - -For details about the modules that provide the API functionality and how to install them, [see Glue API: Marketplace Return Management feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-return-management-feature-integration.html). - -## Create a return - -To create a return for a registered user, send the Request sample: - -*** -`POST` **/returns/** -*** - - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -|---|---|---|---| -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -|---|---|---| -| offset | Offset of the order at which to begin the response. Works only together with `page[limit]`. To work correctly, the value should be devisable by the value of `page[limit]`. The default value is `0`. | From `0` to any. | -| limit | Maximum number of entries to return. Works only together with `page[offset]`. The default value is `10`. | From `1` to any. | -| include | Adds resource relationships to the request. |
  • return-items
  • order-itemsorder-items
  • merchants
| - -
Request sample: create a return - -`POST https://glue.mysprykershop.com/returns` - -```json -{ - "data": { - "type": "returns", - "attributes": { - "store": "DE", - "returnItems": [ - { - "salesOrderItemUuid": "b39c7e1c-12ba-53d3-8d81-5c363d5307e9", - "reason": "0" - }, - { - "salesOrderItemUuid": "b189d4f2-da12-59f3-8e05-dfb4d95b1781", - "reason": "Custom reason" - } - ] - } - } -} -``` -
- -
Request sample: create a return with return items - -`POST https://glue.mysprykershop.com/returns?include=return-items` - -```json -{ - "data": { - "type": "returns", - "attributes": { - "store": "DE", - "returnItems": [ - { - "salesOrderItemUuid": "c319e465-5160-59f1-a5b8-85073d1472b7", - "reason": "Damaged" - } - ] - } - } -} -``` -
- -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -|---|---|---|---| -| store | String | ✓ | Store where the order was placed. | -| returnItems | cell | ✓ | Set of return items. | -| salesOrderItemUuid | String | ✓ | UUID of the sales order item included in the return. | -| reason | String | | Reason to return the item. | - -### Response - -
Response sample: create a return for a sales order items - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R10", - "attributes": { - "merchantReference": null, - "returnReference": "DE--21-R10", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 13643 - } - }, - "links": { - "self": "https://glue.myspykershop.com/returns/DE--21-R10" - } - } -} -``` - -
- -
Response sample: create a return for the merchant order item with information about return items - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R2", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R2", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 10580 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R2?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a" - } - ] - } - } - }, - "included": [ - { - "type": "return-items", - "id": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a", - "attributes": { - "uuid": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a", - "reason": "Damaged", - "orderItemUuid": "c319e465-5160-59f1-a5b8-85073d1472b7" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R2/return-items/717e94dd-7eb6-5a3f-837b-2ea745f6ae0a" - } - } - ] -} -``` -
- -| ATTRIBUTE | TYPE | DESCRIPTION | -|---|---|---| -| merchantReference | String | Unique identifier of the merchant. | -| returnReference | String | Unique identifier of the return. You can get it when creating the return. | -| store | String | Store for which the return was created. | -| customerReference | String | Unique identifier of the customer. | -| returnTotals | Object | List of totals to return. | -| refundTotal | Integer | Total refund amount. | -| remunerationTotal | Integer | Total remuneration. | - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -|---|---|---|---| -| return-items | uuid | String | Unique identifier of the returned item. | -| return-items | reason | String | Predefined reason why the return was created. | -| return-items | orderItemUuid | String | Unique identifier of the order item. | - -For the attributes of the included resources, see [Retrieving marketplace orders](/docs/marketplace/dev/glue-api-guides/{{page.version}}/retrieving-marketplace-orders.html). - -## Retrieve returns - -To retrieve returns, send the Request sample: - -*** -`GET` **/returns** -*** - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -|---|---|---|---| -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -|---|---|---| -| offset | Offset of the order at which to begin the response. Works only together with `page[limit]`. To work correctly, the value should be devisable by the value of `page[limit]`. The default value is `0`. | From `0` to any. | -| limit | Maximum number of entries to return. Works only together with page[offset]. The default value is `10`. | From `1` to any. | -| include | Adds resource relationships to the request. |
  • return-items
  • merchants
| - -| REQUEST | USAGE | -|---|---| -| `GET https://glue.mysprykershop.com/returns` | Retrieve all returns. | -| `GET https://glue.mysprykershop.com/returns?include=return-items` | Retrieve all returns with the information about return items included. | -| `GET https://glue.mysprykershop.com/returns?include=merchants` | Retrieve all returns with the respective merchants included. | - -### Response - -
Response sample: retrieve all returns - -```json -{ - "data": [ - { - "type": "returns", - "id": "DE--21-R9", - "attributes": { - "merchantReference": null, - "returnReference": "DE--21-R9", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 1879 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R9" - } - }, - { - "type": "returns", - "id": "DE--21-R8", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R8", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 9865 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R8" - } - }, - ], - "links": { - "self": "https://glue.mysprykershop.com/returns" - } -} -``` - -
- -
Response sample: retrieve all returns with details on return items - -```json -{ - "data": [ - { - "type": "returns", - "id": "DE--21-R4", - "attributes": { - "merchantReference": "MER000002", - "returnReference": "DE--21-R4", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 24899 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R4?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "b3c46290-2eaa-5b37-bba2-60171638fabb" - } - ] - } - } - }, - { - "type": "returns", - "id": "DE--21-R3", - "attributes": { - "merchantReference": "MER000002", - "returnReference": "DE--21-R3", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 24899 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R3?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "3071bef7-f26f-5be4-b9e7-bef1d670a94b" - } - ] - } - } - }, - { - "type": "returns", - "id": "DE--21-R2", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R2", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 10580 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R2?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a" - } - ] - } - } - }, - { - "type": "returns", - "id": "DE--21-R1", - "attributes": { - "merchantReference": "MER000006", - "returnReference": "DE--21-R1", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 3331 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R1?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "56c8d9c7-7ea5-59ec-83ca-a633b4c0ee5c" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/returns?include=return-items" - }, - "included": [ - { - "type": "return-items", - "id": "b3c46290-2eaa-5b37-bba2-60171638fabb", - "attributes": { - "uuid": "b3c46290-2eaa-5b37-bba2-60171638fabb", - "reason": "Wrong item", - "orderItemUuid": "120b7a51-69e4-54b9-96a6-3b5eab0dfe7a" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R4/return-items/b3c46290-2eaa-5b37-bba2-60171638fabb" - } - }, - { - "type": "return-items", - "id": "3071bef7-f26f-5be4-b9e7-bef1d670a94b", - "attributes": { - "uuid": "3071bef7-f26f-5be4-b9e7-bef1d670a94b", - "reason": "Wrong item", - "orderItemUuid": "42de8c95-69a7-56b1-b43e-ce876ca79458" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R3/return-items/3071bef7-f26f-5be4-b9e7-bef1d670a94b" - } - }, - { - "type": "return-items", - "id": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a", - "attributes": { - "uuid": "717e94dd-7eb6-5a3f-837b-2ea745f6ae0a", - "reason": "Damaged", - "orderItemUuid": "c319e465-5160-59f1-a5b8-85073d1472b7" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R2/return-items/717e94dd-7eb6-5a3f-837b-2ea745f6ae0a" - } - }, - { - "type": "return-items", - "id": "56c8d9c7-7ea5-59ec-83ca-a633b4c0ee5c", - "attributes": { - "uuid": "56c8d9c7-7ea5-59ec-83ca-a633b4c0ee5c", - "reason": "No longer needed", - "orderItemUuid": "7be8d4ff-a41e-527f-adb5-077e6192062b" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R1/return-items/56c8d9c7-7ea5-59ec-83ca-a633b4c0ee5c" - } - } - ] -} -``` -
- -
Response sample: retrieve all returns with the respective merchants included - -```json -{ - "data": [ - { - "type": "returns", - "id": "DE--21-R9", - "attributes": { - "merchantReference": null, - "returnReference": "DE--21-R9", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 1879 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R9" - } - }, - { - "type": "returns", - "id": "DE--21-R8", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R8", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 9865 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R8" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/access-tokens?include=merchants" - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - } - ] -} -``` -
- - -| ATTRIBUTE | TYPE | DESCRIPTION | -|---|---|---| -| merchantReference | String | Unique identifier of the merchant. | -| returnReference | String | Unique identifier of the return. | -| store | String | Store for which the return was created. | -| customerReference | String | Unique identifier of the customer who created the return. | -| returnTotals | Object | List of totals of the return. | -| refundTotal | Integer | Total refund amount. | -| remunerationTotal | Integer | Total remuneration amount. | - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | -|---|---|---|---| -| return-items | uuid | String | Unique identifier of the returned item. | -| return-items | reason | String | Reason which the customer selected for the return. | -| return-items | orderItemUuid | String | Unique identifier of the order item. | - -For the attributes of the other other included resources, see the following: -* [Retrieving marketplace orders](/docs/marketplace/dev/glue-api-guides/{{page.version}}/retrieving-marketplace-orders.html) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html) - -## Retrieve a return - -To retrieve a return, send the Request sample: - -*** -`GET` {% raw %}**/returns/{{returnID}}**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -|---|---| -| {% raw %}***{{returnID}}***{% endraw %} | Unique identifier of a return to retrieve. To get it [create a return](#create-a-return) or [retrieve returns](#retrieve-returns)| - -## Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -|---|---|---|---| -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -|---|---|---| -| offset | Offset of the order at which to begin the response. Works only together with `page[limit]`. To work correctly, the value should be devisable by the value of `page[limit]`. The default value is `0`. | From `0` to any. | -| limit | Maximum number of entries to return. Works only together with page[offset]. The default value is `10`. | From `1` to any. | -| include | Adds resource relationships to the request. |
  • return-items
  • merchants
| - -| REQUEST | USAGE | -|---|---| -| `GET https://glue.mysprykershop.com/returns/DE--21-R9` | Retrieve a return with the ID `DE--21-R9` for sales order items. | -| `GET https://glue.mysprykershop.com/returns/DE--21-R6` | Retrieve a return with the ID `DE--21-R6` for sales order items. | -| `GET https://glue.mysprykershop.com/returns/DE--21-R6?include=return-items` | Retrieve a return with the ID `DE--21-R6`, including the return items. | -| `GET https://glue.mysprykershop.com/returns/DE--21-R6?include=merchants` | Retrieve a return with the ID `DE--21-R6` for merchant order items, including the respective merchants. | - -### Response - -
Response sample: retrieve a return for a sales order item - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R9", - "attributes": { - "merchantReference": null, - "returnReference": "DE--21-R9", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 1879 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R9" - } - } -} -``` - -
- -
Response sample: retrieve a return for a merchant order item - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R6", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R6", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 7842, - "remunerationTotal": 7842 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R6" - } - } -} -``` -
- -
Response sample: retrieve a return with the return items included - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R4", - "attributes": { - "merchantReference": "MER000002", - "returnReference": "DE--21-R4", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 0, - "remunerationTotal": 24899 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R4?include=return-items" - }, - "relationships": { - "return-items": { - "data": [ - { - "type": "return-items", - "id": "b3c46290-2eaa-5b37-bba2-60171638fabb" - } - ] - } - } - }, - "included": [ - { - "type": "return-items", - "id": "b3c46290-2eaa-5b37-bba2-60171638fabb", - "attributes": { - "uuid": "b3c46290-2eaa-5b37-bba2-60171638fabb", - "reason": "Wrong item", - "orderItemUuid": "120b7a51-69e4-54b9-96a6-3b5eab0dfe7a" - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R4/return-items/b3c46290-2eaa-5b37-bba2-60171638fabb" - } - } - ] -} -``` - -
- -
Response sample: retrieve a return with the details about merchants - -```json -{ - "data": { - "type": "returns", - "id": "DE--21-R6", - "attributes": { - "merchantReference": "MER000001", - "returnReference": "DE--21-R6", - "store": "DE", - "customerReference": "DE--21", - "returnTotals": { - "refundTotal": 7842, - "remunerationTotal": 7842 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/returns/DE--21-R6?include=merchants" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - } - ] -} -``` -
- -For the attributes, see [Retrieving returns](#retrieve-returns). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-addresses.md b/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-addresses.md deleted file mode 100644 index 181cf154d1e..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-addresses.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Retrieving merchant addresses -description: Retrieve merchant addresses via Glue API -template: glue-api-storefront-guide-template ---- - -This document describes how to retrieve merchant addresses. - -## Retrieve merchant addresses - -To retrieve merchant addresses, send the request: - -*** -`GET` {% raw %}**/merchants/*{{merchantId}}*/merchant-addresses**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{merchantId}}***{% endraw %} | Unique identifier of a merchant to retrieve the addresses of. To get it, [retrieve all merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#retrieve-merchants). | - -{% info_block warningBox "Note" %} - -This endpoint returns only [active](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) merchants. You can activate merchants in the Back Office. - -{% endinfo_block %} - - -### Request - -Request sample: retrieve merchant addresses - -`GET https://glue.mysprykershop.com/merchants/MER000001/merchant-addresses` - -### Response - -
Response sample: retrieve merchant addresses - -```json -{ -    "data": [ -        { -            "type": "merchant-addresses", -            "id": "MER000001", -            "attributes": { -                "addresses": [ -                    { -                        "countryName": "CountryName", -                        "address1": "address1", -                        "address2": "address2", -                        "address3": null, -                        "city": "City", -                        "zipCode": null, -                        "email": null -                    }, -                    { -                        "countryName": "CountryName2", -                        "address1": "address3", -                        "address2": "address4", -                        "address3": null, -                        "city": "City2", -                        "zipCode": null, -                        "email": null -                    }, -                    { -                        "countryName": "Germany", -                        "address1": "Caroline-Michaelis-Straße", -                        "address2": "8", -                        "address3": "", -                        "city": "Berlin", -                        "zipCode": "10115", -                        "email": null -                    } -                ] -            }, -            "links": { -                "self": "https://glue.mysprykershop.com/merchants/MER000001/merchant-addresses" -            } -        } -    ], -    "links": { -        "self": "https://glue.mysprykershop.com/merchants/MER000001/merchant-addresses" -    } -} -``` -
- - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------- | -------- | --------------- | -| addresses | Array | List of merchant addresses information. | -| addresses.countryName | String | Country name. | -| addresses.address1 | String | 1st line of the merchant address. | -| addresses.address2 | String | 2nd line of the merchant address. | -| addresses.address3 | String | 3rd line of the merchant address. | -| addresses.city | String | City name. | -| addresses.zipCode | String | ZIP code. | -| addresses.email | String | Email address. | - -## Possible errors - -For statuses, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-opening-hours.md b/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-opening-hours.md deleted file mode 100644 index 676b7e0b297..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchant-opening-hours.md +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: Retrieving merchant opening hours -description: Retrieve merchant opening hours via Glue API -template: glue-api-storefront-guide-template ---- - -This document describes how to retrieve merchant opening hours. - -## Retrieve merchant opening hours - -To retrieve a merchant opening hours, send the request: - -*** -`GET` {% raw %}**/merchants/*{{merchantId}}*/merchant-opening-hours**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{merchantId}}***{% endraw %} | Unique identifier of a merchant to retrieve the addresses of. To get it, [retrieve all merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#retrieve-merchants). | - -{% info_block warningBox "Note" %} - -This endpoint returns only [active](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) merchants. You can activate merchants in the Back Office. - -{% endinfo_block %} - - -### Request - -Request sample: retrieve merchant opening hours - -`GET https://glue.mysprykershop.com/merchants/MER000001/merchant-opening-hours` - -### Response - -
Response sample: retrieve merchant opening hours - -```json -{ - "data": [ - { - "type": "merchant-opening-hours", - "id": "MER000001", - "attributes": { - "weekdaySchedule": [ - { - "day": "MONDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "13:00:00.000000" - }, - { - "day": "MONDAY", - "timeFrom": "14:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "TUESDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "WEDNESDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "THURSDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "FRIDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "SATURDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "SUNDAY", - "timeFrom": null, - "timeTo": null - } - ], - "dateSchedule": [ - { - "date": "2020-01-01", - "timeFrom": null, - "timeTo": null, - "note": "New Year's Day" - }, - { - "date": "2020-04-10", - "timeFrom": null, - "timeTo": null, - "note": "Good Friday" - }, - { - "date": "2020-04-12", - "timeFrom": null, - "timeTo": null, - "note": "Easter Sunday" - }, - { - "date": "2020-04-13", - "timeFrom": null, - "timeTo": null, - "note": "Easter Monday" - }, - { - "date": "2020-05-01", - "timeFrom": null, - "timeTo": null, - "note": "May Day" - }, - { - "date": "2020-05-21", - "timeFrom": null, - "timeTo": null, - "note": "Ascension of Christ" - }, - { - "date": "2020-05-31", - "timeFrom": null, - "timeTo": null, - "note": "Whit Sunday" - }, - { - "date": "2020-06-01", - "timeFrom": null, - "timeTo": null, - "note": "Whit Monday" - }, - { - "date": "2020-06-11", - "timeFrom": null, - "timeTo": null, - "note": "Corpus Christi" - }, - { - "date": "2020-11-01", - "timeFrom": null, - "timeTo": null, - "note": "All Saints' Day" - }, - { - "date": "2020-12-25", - "timeFrom": null, - "timeTo": null, - "note": "1st Christmas day" - }, - { - "date": "2020-12-26", - "timeFrom": null, - "timeTo": null, - "note": "2nd Christmas day" - }, - { - "date": "2021-11-28", - "timeFrom": "13:00:00.000000", - "timeTo": "18:00:00.000000", - "note": "Sunday Opening" - }, - { - "date": "2021-12-31", - "timeFrom": "10:00:00.000000", - "timeTo": "17:00:00.000000", - "note": "" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001/merchant-opening-hours" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001/merchant-opening-hours" - } -} -``` -
- - - -| ATTRIBUTE | DESCRIPTION | -| --------------- | --------------------- | -| weekdaySchedule | Array of the schedule for weekdays. -| weekdaySchedule.day | Name of the day. | -| weekdaySchedule.timeFrom | Time when the merchant starts working on a usual day. | -| weekdaySchedule.timeTo | Time when the merchant stops working on a usual day. | -| dateSchedule | Array of the schedule for special working days, like holidays. | -| dateSchedule.date | Date of the special opening hours. | -| dateSchedule.timeFrom | Time when the merchant starts working during the special working hours. | -| dateSchedule.timeTo | Time when the merchant stops working during the special working hours. | -| dateSchedule.note | Description of the special opening hours. | - -## Possible errors - -For statuses, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchants.md b/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchants.md deleted file mode 100644 index 198da4a601e..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/merchants/retrieving-merchants.md +++ /dev/null @@ -1,652 +0,0 @@ ---- -title: Retrieving merchants -description: Retrieve merchant information via Glue API -template: glue-api-storefront-guide-template ---- - -Merchant is an individual or an organization selling products on the Marketplace. Every merchant has a profile page where the customer can check information like contact information, opening hours, and legal details. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Glue API - Marketplace Merchant feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-merchant-feature-integration.html). - -## Retrieve merchants - -To retrieve all merchants, send the request: - ---- -`GET` **/merchants** - ---- - -{% info_block warningBox "Note" %} - -This endpoint returns only [active](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) merchants. To learn how you can activate a merchant in the Back Office, see [Activating and deactivating merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants). - -{% endinfo_block %} - - -### Request - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| category-keys[] | Filters merchants by category keys. | {% raw %}{{category key}}{% endraw %} | - -| REQUEST | USAGE | -| --- | --- | -| `GET https://glue.mysprykershop.com/merchants` | Retrieve all merchants. | -| `GET https://glue.mysprykershop.com/merchants?category-keys[]=demoshop&category-keys[]=notebooks` | Retrieve merchants with the `demoshop` and `notebooks` category keys assigned. | - -### Response - -
Response sample: retrieve all merchants - -```json -{ - "data": [ - { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "demoshop", - "name": "Demoshop" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006" - } - }, - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "notebooks", - "name": "Notebooks" - }, - { - "categoryKey": "tablets", - "name": "Tablets" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "merchants", - "id": "MER000002", - "attributes": { - "merchantName": "Video King", - "merchantUrl": "/en/merchant/video-king", - "contactPersonRole": "Country Manager DE", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Martha", - "contactPersonLastName": "Farmer", - "contactPersonPhone": "+31 123 345 678", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-logo.png", - "publicEmail": "hi@video-king.nl", - "publicPhone": "+31 123 345 777", - "description": "Video King is a premium provider of video equipment. In business since 2010, we understand the needs of video professionals and enthusiasts and offer a wide variety of products with competitive prices. ", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png", - "deliveryTime": "2-4 days", - "latitude": "4.838470", - "longitude": "51.558107", - "faxNumber": "+31 123 345 733", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Video King

Gilzeweg 24
4854SG Bavel
NL

Phone: +31 123 45 6789
Email: hi@video-king.nl

Represented by
Managing Director: Max Mustermann
Register Court: Amsterdam
Register Number: 1234.4567

", - "dataPrivacy": "Video King values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000002" - } - }, - { - "type": "merchants", - "id": "MER000005", - "attributes": { - "merchantName": "Budget Cameras", - "merchantUrl": "/en/merchant/budget-cameras", - "contactPersonRole": "Merchandise Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Jason", - "contactPersonLastName": "Weidmann", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-logo.png", - "publicEmail": "support@budgetcamerasonline.com", - "publicPhone": "+49 30 234567591", - "description": "DSLR and mirrorless cameras are by far the most popular with filmmakers on a tight budget when you can't afford multiple specialist cameras.Budget Cameras is offering a great selection of digital cameras with the lowest prices.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-banner.png", - "deliveryTime": "2-4 days", - "latitude": "10.004663", - "longitude": "53.552463", - "faxNumber": "+49 30 234567500", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Budget Cameras

Spitalerstraße 3
20095 Hamburg
DE

Phone: 030 1234567
Email: support@budgetcamerasonline.com

Represented by
Managing Director: Max Mustermann
Register Court: Hamburg
Register Number: HXX 134305

", - "dataPrivacy": "Budget Cameras values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000005" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/merchants" - } -} -``` -
- - - -
Response sample: retrieve merchants by category keys - -```json -{ - "data": [ - { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "demoshop", - "name": "Demoshop" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006?category-keys[0]=demoshop&category-keys[1]=notebooks" - } - }, - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "notebooks", - "name": "Notebooks" - }, - { - "categoryKey": "tablets", - "name": "Tablets" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001?category-keys[0]=demoshop&category-keys[1]=notebooks" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/merchants?category-keys[0]=demoshop&category-keys[1]=notebooks" - } -} -``` -
- - - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| merchantName | String | Name of the merchant. | -| merchantUrl | String | Merchant’s profile URL. | -| contactPersonRole | String | Role of the contact person. | -| contactPersonTitle | String | Salutation to use when addressing the contact person. | -| contactPersonFirstName | String | Contact person’s first name. | -| contactPersonLastName | String | Contact person’s last name. | -| contactPersonPhone | String | Contact person’s phone number. | -| logoUrl | String | Merchant’s logo URL. | -| publicEmail | String | Merchant’s public email address. | -| publicPhone | String | Merchant’s public phone number. | -| description | String | Merchant’s description. | -| bannerUrl | String | Merchant’s banner URL. | -| deliveryTime | String | Average delivery time. | -| latitude | String | Merchant’s latitude. | -| longitude | String | Merchant’s longitude. | -| faxNumber | String | Merchant’s fax number. | -| legalInformation | Object | List of legal information. | -| legalInformation.terms | String | Merchant’s terms and conditions. | -| legalInformation. cancellationPolicy | String | Merchant’s cancellation policy.| -| legalInformation.imprint | String | Merchant’s imprint information.| -| legalInformation.dataPrivacy | String | Merchant’s data privacy conditions.| -| categories | Array | List of categories where the merchant belongs. | -| categories.categoryKey | String | Category key used for the merchant. | -| categories.name | String | Name of the merchant category. - -## Retrieve a merchant - -To retrieve a merchant, send the request: - ---- -`GET` {% raw %}**/merchants/*{{merchantId}}***{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| --- | --- | -| {% raw %}***{{merchantId}}***{% endraw %} | Unique identifier of a merchant to retrieve. To get it, [retrieve all merchants](#retrieve-merchants). | - -{% info_block warningBox "Note" %} - -This endpoint returns only [active](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) merchants. To learn how you can activate a merchant in the Back Office, see [Activating and deactivating merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants). - -{% endinfo_block %} - -### Request - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| --- | --- | --- | -| include | Adds resource relationships to the request. | `merchant-addresses`, `merchant-opening-hours` | - -| USAGE | DESCRIPTION | -| -------------------- | ---------------------- | -| `GET https://glue.mysprykershop.com/merchants/MER000006` | Retrieve a merchant with the `MER000006` ID. | -| `GET https://glue.mysprykershop.com/merchants/MER000006?include=merchant-addresses,merchant-opening-hours` | Retrieve the merchant with the `MER000006` ID, including merchant addresses and opening hours. | - -### Response - -
Response sample: retrieve the merchant - -```json -{ - "data": { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "demoshop", - "name": "Demoshop" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006" - } - } -} -``` - -
- - -
Response sample: retrieve a merchant with merchant addresses and opening hours included - -```json -{ - "data": { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - }, - "categories": [ - { - "categoryKey": "demoshop", - "name": "Demoshop" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006?include=merchant-addresses,merchant-opening-hours" - }, - "relationships": { - "merchant-opening-hours": { - "data": [ - { - "type": "merchant-opening-hours", - "id": "MER000006" - } - ] - }, - "merchant-addresses": { - "data": [ - { - "type": "merchant-addresses", - "id": "MER000006" - } - ] - } - } - }, - "included": [ - { - "type": "merchant-opening-hours", - "id": "MER000006", - "attributes": { - "weekdaySchedule": [ - { - "day": "MONDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "13:00:00.000000" - }, - { - "day": "MONDAY", - "timeFrom": "14:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "TUESDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "WEDNESDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "THURSDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "FRIDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "SATURDAY", - "timeFrom": "07:00:00.000000", - "timeTo": "20:00:00.000000" - }, - { - "day": "SUNDAY", - "timeFrom": null, - "timeTo": null - } - ], - "dateSchedule": [ - { - "date": "2020-01-01", - "timeFrom": null, - "timeTo": null, - "note": "New Year's Day" - }, - { - "date": "2020-04-10", - "timeFrom": null, - "timeTo": null, - "note": "Good Friday" - }, - { - "date": "2020-04-12", - "timeFrom": null, - "timeTo": null, - "note": "Easter Sunday" - }, - { - "date": "2020-04-13", - "timeFrom": null, - "timeTo": null, - "note": "Easter Monday" - }, - { - "date": "2020-05-01", - "timeFrom": null, - "timeTo": null, - "note": "May Day" - }, - { - "date": "2020-05-21", - "timeFrom": null, - "timeTo": null, - "note": "Ascension of Christ" - }, - { - "date": "2020-05-31", - "timeFrom": null, - "timeTo": null, - "note": "Whit Sunday" - }, - { - "date": "2020-06-01", - "timeFrom": null, - "timeTo": null, - "note": "Whit Monday" - }, - { - "date": "2020-06-11", - "timeFrom": null, - "timeTo": null, - "note": "Corpus Christi" - }, - { - "date": "2020-10-03", - "timeFrom": null, - "timeTo": null, - "note": "Day of German unity" - }, - { - "date": "2020-11-01", - "timeFrom": null, - "timeTo": null, - "note": "All Saints' Day" - }, - { - "date": "2020-12-25", - "timeFrom": null, - "timeTo": null, - "note": "1st Christmas day" - }, - { - "date": "2020-12-26", - "timeFrom": null, - "timeTo": null, - "note": "2nd Christmas day" - }, - { - "date": "2021-11-28", - "timeFrom": "13:00:00.000000", - "timeTo": "18:00:00.000000", - "note": "Sunday Opening" - }, - { - "date": "2021-12-31", - "timeFrom": "10:00:00.000000", - "timeTo": "17:00:00.000000", - "note": "" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006/merchant-opening-hours" - } - }, - { - "type": "merchant-addresses", - "id": "MER000006", - "attributes": { - "addresses": [ - { - "countryName": null, - "address1": null, - "address2": null, - "address3": null, - "city": null, - "zipCode": null - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006/merchant-addresses" - } - } - ] -} -``` -
- -For the merchant attributes, see [Retrieve merchants](#merchants-response-attributes). - -For the attributes of the included resources, see: - -* [Retrieving merchant addresses](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchant-addresses.html#merchant-addresses-response-attributes). -* [Retrieving merchant opening hours](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchant-opening-hours.html#merchant-opening-hours-response-attributes). - - - - -## Other management options - -Retrieve merchant information as a relationship when sending the following requests: - -* [Retrieve an abstract product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/abstract-products/retrieving-abstract-products.html#retrieve-an-abstract-product) -* [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html#retrieve-a-concrete-product) -* [Retrieve a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#retrieve-a-wishlist) -* [Retrieve a product offer] -* [Retrieve marketplace orders](/docs/marketplace/dev/glue-api-guides/{{page.version}}/retrieving-marketplace-orders.html) - -Search by merchants in the product catalog. For details, see [Searching the product catalog](/docs/marketplace/dev/glue-api-guides/{{page.version}}/searching-the-product-catalog.html). -Resolve a search engine friendly URL of a merchant page. For details, see [Resolving search engine friendly URLs](/docs/marketplace/dev/glue-api-guides/{{page.version}}/resolving-search-engine-friendly-urls.html). - - -## Possible errors - -For statuses, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-availability.md b/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-availability.md deleted file mode 100644 index cbac8026f08..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-availability.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Retrieving product offer availabilities -description: Retrieve Marketplace product offer availabilities via Glue API -template: glue-api-storefront-guide-template ---- - -This document describes how to retrieve product offer availabilities via Glue API. - - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [GLUE API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) - -## Retrieve availability of a product offer - -To retrieve a availability of a product offer, send the request: - -*** -`GET` {% raw %}**/product-offers/*{{offerId}}*/product-offer-availabilities**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| ------------------ | ---------------------- | -| {% raw %}***{{offerId}}***{% endraw %} | Unique identifier of a product offer to retrieve the availability of. To get it, [retrieve the offers of a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html). | - -### Request - -Request sample: retrieve availability of a product offer - -`GET https://glue.mysprykershop.com/product-offers/offer56/product-offer-availabilities` - -### Response - -Response sample: retrieve availability of a product offer - -```json -{ - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer56", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer56/product-offer-availabilities" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer56/product-offer-availabilities" - } -} -``` - - - -|ATTRIBUTE |TYPE |DESCRIPTION | -|---------|---------|---------| -| isNeverOutOfStock | Boolean | Shows if the product offer is never out of stock. | -| availability | Boolean |Defines if the product offer is available. | -| quantity | Integer |Stock of the product offer. | - - -## Possible errors - -| CODE | DESCRIPTION | -| - | - | -| 3701 | Product offer was not found. | -| 3702 | Product offer ID is not specified. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-prices.md b/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-prices.md deleted file mode 100644 index ce882450707..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offer-prices.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Retrieving product offer prices -description: Retrieve Marketplace product offer prices via Glue API -template: glue-api-storefront-guide-template ---- - -This document describes how to retrieve product offer prices via Glue API. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [GLUE API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) - -## Retrieve prices of a product offer - - -To retrieve prices of a product offer, send the request: - -*** -`GET` {% raw %}**/product-offers/*{{offerId}}*/product-offer-prices**{% endraw %} -*** - - -| PATH PARAMETER | DESCRIPTION | -| ------------------ | ---------------------- | -| {% raw %}***{{offerId}}***{% endraw %} | Unique identifier of a product offer to retrieve the availability of. To get it, [retrieve the offers of a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html). | - -### Request - -Request sample: retrieve prices of a product offer - -`GET https://glue.mysprykershop.com/product-offers/offer54/product-offer-prices` - -### Response - -Response sample: retrieve prices of a product offer - -```json -{ - "data": [ - { - "type": "product-offer-prices", - "id": "offer78", - "attributes": { - "price": 40522, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 40522, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 38400, - "netAmount": 39100, - "quantity": 3 - } - - ] - } - ] - }, - - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer54/product-offer-prices" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer54/product-offer-prices" - } -} -``` - - - -|ATTRIBUTE |TYPE |DESCRIPTION | -|---------|---------|---------| -| price | Integer | Price to pay for the product offer in cents. | -| prices | Array | Prices of this product offer. | -| prices.priceTypeName | String | Price type. | -| prices.netAmount | Integer | Net price in cents. | -| prices.grossAmount | Integer | Gross price in cents. | -| prices.currency.code | String | Currency code. | -| prices.currency.name | String | Currency name. | -| prices.currency.symbol | String | Currency symbol. | -| prices.volumePrices | Object | An array of objects defining the [volume prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) of the product offer. | -| prices.volumePrices.grossAmount | Integer | Gross volume price in cents. | -| prices.volumePrices.netAmount | Integer | Net volume price in cents. | -| prices.volumePrices.quantity | Integer | Required quantity of items in offer for the volume price to apply. | - - -## Other management options - -Retrieve product offer prices as a relationship by [retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html) - -## Possible errors - -| CODE | DESCRIPTION | -| - | - | -| 3701 | Product offer was not found. | -| 3702 | Product offer ID is not specified. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offers.md b/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offers.md deleted file mode 100644 index 1765ed52f86..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/product-offers/retrieving-product-offers.md +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Retrieving product offers -description: Retrieve Marketplace product offers via API -template: glue-api-storefront-guide-template ---- - -Product offers let different merchants sell the same product on the Marketplace. Product offers are created per concrete products, and you can get the offer information via retrieving the product information. - -In your development, product offers API can help you to retrieve relevant extended information for product offers. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see: -* [GLUE API: Marketplace Product Offer feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-feature-integration.html) -* [Glue API: Marketplace Product Offer Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) -* [Glue API: Marketplace Product Offer Volume Prices feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/glue/marketplace-product-offer-prices-feature-integration.html) - -## Retrieve a product offer - -To retrieve the product offers, send the request: - ---- -`GET` {% raw %}**/product-offers/*{{offerId}}***{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| ------------------ | ---------------------- | -| {% raw %}***{{offerId}}***{% endraw %} | Unique identifier of a product offer to retrieve the availability of. To get it, [retrieve the offers of a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html). | - - - -### Request - -| QUERY PARAMETER | DESCRIPTION | EXEMPLARY VALUES | -| -------------------- | ----------------- | ---------------- | -| include | Adds resource relationships to the request. |
  • product-offer-availabilities
  • product-offer-prices
  • merchants
| - -| REQUEST | USAGE | -| ---------- | ----------- | -| `GET https://glue.mysprykershop.com/product-offers/offer56`| Retrieve information about an offer with the `offer56` ID. | -| `GET https://glue.mysprykershop.com/product-offers/offer78?product-offer-prices` | Retrieve information about the offer with `offer78` ID with the product offer prices. | -| `GET https://glue.mysprykershop.com/product-offers/offer101?product-offer-availabilities` | Retrieve the product offer with the `offer101` ID with the product offer availability. | -| `GET https://glue.mysprykershop.com/product-offers/offer101?merchants` | Retrieve the product offer with the `offer101` ID, including the merchant it belongs to. | - -### Response - -
-Response sample: retrieve an offer - -```json -{ - "data": { - "type": "product-offers", - "id": "offer56", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.comm/product-offers/offer56" - } - } -} -``` -
- -
-Response sample: retrieve an offer with product offer prices included - -```json -{ - "data": { - "type": "product-offers", - "id": "offer78", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer78" - }, - "relationships": { - "product-offer-prices": { - "data": [ - { - "type": "product-offer-prices", - "id": "offer78" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer78", - "attributes": { - "price": 40522, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 40522, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [ - { - "grossAmount": 38400, - "netAmount": 39100, - "quantity": 3 - } - - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer78/product-offer-prices" - } - } - ] -} -``` -
- -
-Response sample: retrieve an offer with product offer availabilities included - -```json -{ - "data": { - "type": "product-offers", - "id": "offer101", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000006", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.comm/product-offers/offer101?include=product-offer-prices,product-offer-availabilities" - }, - "relationships": { - "product-offer-availabilities": { - "data": [ - { - "type": "product-offer-availabilities", - "id": "offer101" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-availabilities", - "id": "offer101", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.comm/product-offers/offer101/product-offer-availabilities" - } - - } - ] -} -``` -
- -
-Response sample: retrieve an offer with merchant information included - -```json -{ - "data": { - "type": "product-offers", - "id": "offer101", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000006", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.comm/product-offers/offer101?include=product-offer-prices,product-offer-availabilities,merchants" - }, - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000006" - } - ] - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.comm/merchants/MER000006" - } - } - ] -} -``` -
- - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------------- | -------- | -------------------- | -| merchantSku | String | The merchant's unique identifier of the product offer. | -| merchantReference | String | Unique identifier of the merchant. | -| isDefault | Boolean | Defines if the product offer is [default](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html#product-offers-on-the-product-details-page) for the concrete product. | - - -For the response attributes of the other included resources, see the following: -* [Retrieve product offer prices](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-prices.html#product-offer-prices-response-attributes) -* [Retrieve product offer availability](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offer-availability.html#product-offer-availability-response-attributes) -* [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) - - - - - -## Other management options - -You can use the product offers resource as follows: - -- [Retrieve product offers of a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html) -- Add product offers to a guest cart—[Creating a guest cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-carts.html#retrieve-a-guest-cart). -- Retrieve information for the product offers in a guest cart—[Retrieving a guest cart](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-carts.html#retrieve-a-guest-cart). -- Add product offers to a registered user's cart—[Adding items to a cart of a registered user](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-items-in-carts-of-registered-users.html#add-an-item-to-a-registered-users-cart). -- Retrieve information for the product offers in registered users' carts—[Retrieving all carts](/docs/marketplace/dev/glue-api-guides/{{page.version}}//carts-of-registered-users/managing-carts-of-registered-users.html#retrieve-registered-users-carts). - -## Possible errors - -| CODE | DESCRIPTION | -| - | - | -| 3701 | Product offer was not found. | -| 3702 | Product offer ID is not specified. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/resolving-search-engine-friendly-urls.md b/docs/marketplace/dev/glue-api-guides/202108.0/resolving-search-engine-friendly-urls.md deleted file mode 100644 index 0626c6147e2..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/resolving-search-engine-friendly-urls.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Resolving search engine friendly URLs -description: Learn how to resolve search engine friendly URLs via Glue API in the Spryker Marketplace -template: glue-api-storefront-guide-template ---- - -This endpoint allows resolving Search Engine Friendly (SEF) URLs into a resource URL in Glue API. - -For SEO purposes, Spryker automatically generates SEF URLs for products and categories. The URLs are returned as a `url` attribute in responses related to abstract products and product categories. For examples of such responses, see: -* [Retrieve an abstract product](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-products.html) -* [Retrieve a category tree](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-trees.html) -* [Retrieve a category node](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-nodes.html) -* [Retrieve a CMS page](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-cms-pages.html) -* [Retrieve a merchant](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#retrieve-a-merchant) - -In your development, the endpoints can help you to: - -* Significantly boost the SEO presence of your product store. -* Increase the search engine ranking of your online store. - -To facilitate their usage, Spryker Glue provides an endpoint that allows resolving an SEO-friendly URL, for example, `http://mysprykershop.com/en/canon-powershot-n-35`, into a URL of the relevant product resource in Glue API, for example, `https://glue.mysprykershop.com/abstract-products/035`. This capability is provided by the URLs API. - - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Glue API: Spryker Сore feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html). - -## Resolve a SEF URL into a Glue API URL - -To resolve a SEF URL into a Glue API URL, send the request: - ---- -`GET` {% raw %}**/url-resolver?url=*{{SEF URL}}***{% endraw %} - ---- - -| PATH PARAMETER | DESCRIPTION | -| --------------- | ---------------- | -| {% raw %}***{{SEF URL}}***{% endraw %} | SEF URL you want to resolve. You can get it when:
  • [retrieving abstract products](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-products.html)
  • [retrieving category nodes](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-nodes.html)
  • [retrieving CMS pages](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-cms-pages.html)
  • [retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html)
| - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| -------------- | ------------ | ------------ | -------------- | -| Accept-Language | de | ✓ | Specifies the locale. | - -| Request sample | Usage | -| --- | --- | -| `GET https://glue.mysprykershop.com/url-resolver?url=/de/acer-aspire-s7-134` | Resolve the following URL of a product: `https://mysprykershop.com/de/acer-aspire-s7-134`. | -| `GET https://glue.mysprykershop.com/url-resolver?url=/en/computer` | Resolve the following URL of a category node: `https://mysprykershop.com/en/computer`. | -| `GET https://glue.mysprykershop.com/url-resolver?url=/de/ruecknahmegarantie` | Resolve the following URL of a CMS page `https://mysprykershop.com/de/ruecknahmegarantie`. | -| `GET https://glue.mysprykershop.com/url-resolver?url=/en/merchant/budget-cameras` | Resolve the following URL of a merchant page: `https://mysprykershop.com/en/merchant/budget-cameras`. | - -### Response - -
-Response sample: resolve a product URL - -```json -{ - "data": [ - { - "type": "url-resolver", - "id": null, - "attributes": { - "entityType": "abstract-products", - "entityId": "134" - }, - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/de/acer-aspire-s7-134" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/de/acer-aspire-s7-134" - } -} -``` -
- -
-Response sample: resolve a URL of a category node - -```json -{ - "data": [ - { - "type": "url-resolver", - "id": null, - "attributes": { - "entityType": "category-nodes", - "entityId": "5" - }, - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/computer" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/computer" - } -} -``` -
- -
-Response sample: resolve a URL of a CMS page - -```json -{ - "data": [ - { - "type": "url-resolver", - "id": null, - "attributes": { - "entityType": "cms-pages", - "entityId": "8d378933-22f9-54c7-b45e-db68f2d5d9a3" - }, - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/return-policy" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/return-policy" - } -} -``` -
- -
-Response sample: resolve a merchant page URL - -```json -{ - "data": [ - { - "type": "url-resolver", - "id": null, - "attributes": { - "entityType": "merchants", - "entityId": "MER000005" - }, - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/merchant/budget-cameras" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/url-resolver?url=/en/merchant/budget-cameras" - } -} -``` -
- -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| entityType | String | Resource type, like `abstract-products` or `category-nodes`, `cms-pages` or `merchants`. | -| entityId | String | Unique resource identifier. | - -Using the information from the response and the Glue server name, you can construct the Glue resource URLs. For example: -* `https://glue.mysprykershop.com/abstract-products/134` -* `https://glue.mysprykershop.com/category-nodes/5` -* `https://glue.mysprykershop.com/cms-pages/8d378933-22f9-54c7-b45e-db68f2d5d9a3` -* `https://glue.mysprykershop.com/merchants/MER000005` - -## Possible errors - -| STATUS | REASON | -| --- | --- | -| 404 | The provided URL does not exist. | -| 422 | The `url` parameter is missing. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-autocomplete-and-search-suggestions.md b/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-autocomplete-and-search-suggestions.md deleted file mode 100644 index 866e9a0f281..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-autocomplete-and-search-suggestions.md +++ /dev/null @@ -1,1810 +0,0 @@ ---- -title: Retrieving autocomplete and search suggestions -description: This document provides information about which endpoints to use to get search and auto-completion suggestions for your products, categories, and CMS fields -template: glue-api-storefront-guide-template ---- - -In addition to [catalog search](/docs/scos/dev/glue-api-guides/{{page.version}}/searching-the-product-catalog.html), Glue API lets you retrieve autocomplete suggestions for products, categories, and CMS pages. The feature lets developers predict search strings and provide customers with available options. - -In your development, this resource can help you to enhance the customer experience by providing the relevant information for search, product filters, shopping cart, checkout, order history, wishlist, and many more. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Glue API: Catalog feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-catalog-feature-integration.html). - -## Retrieve a search suggestion - -To retrieve a search suggestion, send the request: - -*** -`GET` **/catalog-search-suggestions** -*** - -### Request - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES| -| ---------------- | -------------------- | -------------------- | -| q | Restricts the returned items to the values of the provided parameters. |
  • {% raw %}{{abstract_product_sku}}{% endraw %}
  • {% raw %}{{concrete_product_sku}}{% endraw %}
  • {% raw %}{{abstract_product_name}}{% endraw %}
  • {% raw %}{{product_attribute}} (for example, brand, color)—to provide multiple product attributes, use '+'
  • {% raw %}{{category_name}}{% endraw %}
| -| include | Adds resource relationships to the request. | abstract-products | -| currency | Sets a currency. | {% raw %}{{currency}}{% endraw %} | -| priceMode | Sets a price mode. |
  • NET_MODE
  • GROSS_MODE
| - -| REQUEST | USAGE | -| ---------------------- | ------------------------ | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions` | Retrieve search suggestions. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=` | Retrieve suggestions for an empty search string. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=058` | Retrieve search suggestions for the SKU `058`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=058&include=abstract-products` | Retrieve search suggestions for the SKU `058`, including product details. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=Acer Liquid Jade` | Retrieve search suggestions for the `Acer Liquid Jade` name. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=Ac` | Retrieve search suggestions for the two letters: `Ac`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=acer+cb5-31` | Retrieve search suggestions for the 11 symbols: `acer+cb5-31`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=058_24245592` | Retrieve search suggestions for the SKU `058_24245592`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=acer+red` | Retrieve search suggestions for the following attributes: brand `acer` and color `red`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=acer¤cy=CHF` | Set the *CHF* currency in search suggestions. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=Sony¤cy=EUR&priceMode=GROSS_MODE` | Retrieve search suggestions for the phrase `Sony` with the `EUR` currency and `GROSS_MODE` price mode. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=telecom-%26-navigation` | Retreive search suggestions for the phrase `telecom&navigation`. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=Smart` | Retrieve search suggestions for the word `Smart`, which is a part of a category name. | -| `GET https://glue.mysprykershop.com/catalog-search-suggestions?q=video%20king` | Retrieve search suggestions for the `video king` phrase, which is a merchant name. | - -### Response - -
-Response sample: retrieve suggestions for an empty search string - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [], - "categories": [], - "cmsPages": [], - "abstractProducts": [], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for an abstract product - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "058_24245592", - "058_26175504" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 26432, - "abstractName": "Acer Liquid Jade", - "abstractSku": "058", - "url": "/en/acer-liquid-jade-58", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058" - } -} -``` -
- - -
-Response sample: retrieve suggestions for an abstract product with abstract product details included - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "058_24245592", - "058_26175504" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 26432, - "abstractName": "Acer Liquid Jade", - "abstractSku": "058", - "url": "/en/acer-liquid-jade-58", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058&include=abstract-products" - }, - "relationships": { - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "058" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058&include=abstract-products" - }, - "included": [ - { - "type": "abstract-products", - "id": "058", - "attributes": { - "sku": "058", - "averageRating": null, - "reviewCount": 0, - "name": "Acer Liquid Jade", - "description": "Edge Handle Assign a colour and place on People Edge to five of your favourite contacts. Reach out to them at any time by simply swiping inwards from the Edge Handle. When words aren’t enough, send a poke or an emoticon to your People Edge contacts. OnCircle lets you communicate in ways that really count. When it comes to your favourite tracks, sound quality matters. Enjoy rich, balanced audio with Bluetooth audio accessories that support UHQ Audio. Celebrations are always better when you are sharing. Livestream the fun straight from your Galaxy S6 edge+ using the camera’s Live Broadcast function. 4GB RAM and LTE Cat.9 support ensure uninterrupted streaming. No more shaky handheld videos. Video Digital Imaging Stabilisation meets Optical Image Stabilisation to ensure you get clear and steady footage every time.", - "attributes": { - "form_factor": "Bar", - "sim_card_type": "NanoSIM", - "display_type": "IPS", - "internal_ram": "2048 MB", - "brand": "Acer", - "color": "White" - }, - "superAttributesDefinition": [ - "form_factor", - "color" - ], - "superAttributes": { - "series": [ - "Jade Plus", - "Jade Z" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "058_24245592", - "058_26175504" - ], - "super_attributes": { - "series": [ - "Jade Plus", - "Jade Z" - ] - }, - "attribute_variants": { - "series:Jade Plus": { - "id_product_concrete": "058_24245592" - }, - "series:Jade Z": { - "id_product_concrete": "058_26175504" - } - } - }, - "metaTitle": "Acer Liquid Jade", - "metaKeywords": "Acer,Communication Electronics", - "metaDescription": "Edge Handle Assign a colour and place on People Edge to five of your favourite contacts. Reach out to them at any time by simply swiping inwards from the E", - "attributeNames": { - "form_factor": "Form factor", - "sim_card_type": "SIM card type", - "display_type": "Display type", - "internal_ram": "Internal RAM", - "brand": "Brand", - "color": "Color", - "series": "Series" - }, - "url": "/en/acer-liquid-jade-58" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/058" - } - } - ] -} -``` -
- - -
-Response sample: retrieve search suggestions for an abstract product name - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "acer liquid jade" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 41837, - "abstractName": "Acer Liquid Jade", - "abstractSku": "060", - "url": "/en/acer-liquid-jade-60", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/26027598-6953.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/26027598-6953.jpg" - } - ] - }, - { - "price": 36742, - "abstractName": "Acer Liquid Jade", - "abstractSku": "059", - "url": "/en/acer-liquid-jade-59", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/26175504-2265.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/26175504-2265.jpg" - } - ] - }, - { - "price": 26432, - "abstractName": "Acer Liquid Jade", - "abstractSku": "058", - "url": "/en/acer-liquid-jade-58", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Liquid Z630", - "abstractSku": "054", - "url": "/en/acer-liquid-z630-54", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406182_3072.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 6277, - "abstractName": "Acer Liquid Leap", - "abstractSku": "100", - "url": "/en/acer-liquid-leap-100", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24675726_medium_1483613008_9797_25362.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24675726-2268.jpg" - } - ] - }, - { - "price": 19137, - "abstractName": "Acer Liquid Z630", - "abstractSku": "055", - "url": "/en/acer-liquid-z630-55", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406184_6175.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 33265, - "abstractName": "Acer Liquid Zest 4G", - "abstractSku": "056", - "url": "/en/acer-liquid-zest-4g-56", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/35874112_7947608372.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_mediums/35874112_7947608372.jpg" - } - ] - }, - { - "price": 41339, - "abstractName": "Acer Liquid Zest 4G", - "abstractSku": "057", - "url": "/en/acer-liquid-zest-4g-57", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32007641_9851.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/32007641_9851.png" - } - ] - }, - { - "price": 32909, - "abstractName": "Acer Leap Active", - "abstractSku": "101", - "url": "/en/acer-leap-active-101", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29727910_5628.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29727910_5628.jpg" - } - ] - }, - { - "price": 9999, - "abstractName": "Acer Veriton 6", - "abstractSku": "113", - "url": "/en/acer-veriton-6-113", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29885591_medium_1480617592_5216_14709.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29885591_7502.png" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Acer Liquid Jade" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Acer Liquid Jade" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for two letters - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "black", - "acer", - "acer liquid jade", - "acer extensa m2610", - "samsung galaxy ace", - "acer aspire switch 10 e", - "acer liquid z630", - "acer liquid zest 4g", - "acer aspire s7", - "acer chromebook cb5-311" - ], - "categories": [], - "cmsPages": [ - { - "name": "Imprint", - "url": "/en/imprint" - }, - { - "name": "Data Privacy", - "url": "/en/privacy" - }, - { - "name": "Demo Landing Page", - "url": "/en/demo-landing-page" - }, - { - "name": "GTC", - "url": "/en/gtc" - }, - { - "name": "Return policy", - "url": "/en/return-policy" - } - ], - "abstractProducts": [ - { - "price": 29678, - "abstractName": "Samsung Galaxy Ace", - "abstractSku": "070", - "url": "/en/samsung-galaxy-ace-70", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/13374503-9343.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/13374503-9343.jpg" - } - ] - }, - { - "price": 32909, - "abstractName": "Acer Leap Active", - "abstractSku": "101", - "url": "/en/acer-leap-active-101", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29727910_5628.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29727910_5628.jpg" - } - ] - }, - { - "price": 9999, - "abstractName": "Acer Veriton 6", - "abstractSku": "113", - "url": "/en/acer-veriton-6-113", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29885591_medium_1480617592_5216_14709.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29885591_7502.png" - } - ] - }, - { - "price": 20012, - "abstractName": "Acer Iconia B1-850", - "abstractSku": "156", - "url": "/en/acer-iconia-b1-850-156", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32018944_9673.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/32018944_9673.jpg" - } - ] - }, - { - "price": 40651, - "abstractName": "Acer Aspire Switch 10 E", - "abstractSku": "132", - "url": "/en/acer-aspire-switch-10-e-132", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30619567_3161.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30619567_3161.jpg" - } - ] - }, - { - "price": 35435, - "abstractName": "Acer Aspire Switch 10 E", - "abstractSku": "133", - "url": "/en/acer-aspire-switch-10-e-133", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/31743669_0971.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/31743669_0971.png" - } - ] - }, - { - "price": 33265, - "abstractName": "Acer Chromebook C730-C8T7", - "abstractSku": "136", - "url": "/en/acer-chromebook-c730-c8t7-136", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24425591_medium_1483525296_3275_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24425591-5275.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Liquid Z630", - "abstractSku": "054", - "url": "/en/acer-liquid-z630-54", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406182_3072.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 6277, - "abstractName": "Acer Liquid Leap", - "abstractSku": "100", - "url": "/en/acer-liquid-leap-100", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24675726_medium_1483613008_9797_25362.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24675726-2268.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Aspire S7", - "abstractSku": "134", - "url": "/en/acer-aspire-s7-134", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29759322_2351.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29759322_2351.png" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [ - { - "name": "Imprint", - "url": "/en/imprint" - }, - { - "name": "Data Privacy", - "url": "/en/privacy" - }, - { - "name": "Demo Landing Page", - "url": "/en/demo-landing-page" - }, - { - "name": "GTC", - "url": "/en/gtc" - }, - { - "name": "Return policy", - "url": "/en/return-policy" - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Ac" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Ac" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for 11 symbols - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "acer chromebook cb5-311" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 19137, - "abstractName": "Acer Chromebook CB5-311", - "abstractSku": "135", - "url": "/en/acer-chromebook-cb5-311-135", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29836399_medium_1480606969_3257_31346.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29836399_4420.jpg" - } - ] - }, - { - "price": 9999, - "abstractName": "Acer Veriton 6", - "abstractSku": "113", - "url": "/en/acer-veriton-6-113", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29885591_medium_1480617592_5216_14709.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29885591_7502.png" - } - ] - }, - { - "price": 20012, - "abstractName": "Acer Iconia B1-850", - "abstractSku": "156", - "url": "/en/acer-iconia-b1-850-156", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32018944_9673.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/32018944_9673.jpg" - } - ] - }, - { - "price": 40651, - "abstractName": "Acer Aspire Switch 10 E", - "abstractSku": "132", - "url": "/en/acer-aspire-switch-10-e-132", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30619567_3161.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30619567_3161.jpg" - } - ] - }, - { - "price": 35435, - "abstractName": "Acer Aspire Switch 10 E", - "abstractSku": "133", - "url": "/en/acer-aspire-switch-10-e-133", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/31743669_0971.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/31743669_0971.png" - } - ] - }, - { - "price": 33265, - "abstractName": "Acer Chromebook C730-C8T7", - "abstractSku": "136", - "url": "/en/acer-chromebook-c730-c8t7-136", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24425591_medium_1483525296_3275_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24425591-5275.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Liquid Z630", - "abstractSku": "054", - "url": "/en/acer-liquid-z630-54", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406182_3072.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 6277, - "abstractName": "Acer Liquid Leap", - "abstractSku": "100", - "url": "/en/acer-liquid-leap-100", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24675726_medium_1483613008_9797_25362.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24675726-2268.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Aspire S7", - "abstractSku": "134", - "url": "/en/acer-aspire-s7-134", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29759322_2351.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29759322_2351.png" - } - ] - }, - { - "price": 41339, - "abstractName": "Acer TravelMate P246-M", - "abstractSku": "137", - "url": "/en/acer-travelmate-p246-m-137", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29283479_6068.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29283479_6068.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer cb5-31" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer cb5-31" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for a concrete product SKU - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "058_24245592" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 26432, - "abstractName": "Acer Liquid Jade", - "abstractSku": "058", - "url": "/en/acer-liquid-jade-58", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058_24245592" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=058_24245592" - } -} -``` -
- - -
-Response sample: retrieve suggestions for multiple product attributes - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 17774, - "abstractName": "Sony SW2 SmartWatch", - "abstractSku": "108", - "url": "/en/sony-sw2-smartwatch-108", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_21047360_medium_1482828045_101_30852.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21047360-4814.jpg" - } - ] - }, - { - "price": 9999, - "abstractName": "Canon IXUS 160", - "abstractSku": "001", - "url": "/en/canon-ixus-160-1", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904006-8438.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904006-8438.jpg" - } - ] - }, - { - "price": 20012, - "abstractName": "Acer Iconia B1-850", - "abstractSku": "156", - "url": "/en/acer-iconia-b1-850-156", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32018944_9673.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/32018944_9673.jpg" - } - ] - }, - { - "price": 6277, - "abstractName": "Acer Liquid Leap", - "abstractSku": "100", - "url": "/en/acer-liquid-leap-100", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24675726_medium_1483613008_9797_25362.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24675726-2268.jpg" - } - ] - }, - { - "price": 34600, - "abstractName": "Canon IXUS 180", - "abstractSku": "010", - "url": "/en/canon-ixus-180-10", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30692994_4933.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30692994_4933.jpg" - } - ] - }, - { - "price": 15799, - "abstractName": "Canon PowerShot SX610", - "abstractSku": "040", - "url": "/en/canon-powershot-sx610-40", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904665-1545.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904665-1545.jpg" - } - ] - }, - { - "price": 5699, - "abstractName": "Canon IXUS 165", - "abstractSku": "013", - "url": "/en/canon-ixus-165-13", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904584-3409.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904584-3409.jpg" - } - ] - }, - { - "price": 2800, - "abstractName": "Canon PowerShot SC620", - "abstractSku": "032", - "url": "/en/canon-powershot-sc620-32", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32125551_0486.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/32125551_0486.jpg" - } - ] - }, - { - "price": 16999, - "abstractName": "Canon PowerShot SX710", - "abstractSku": "037", - "url": "/en/canon-powershot-sx710-37", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/25904011_5202.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/25904011_5202.jpg" - } - ] - }, - { - "price": 4900, - "abstractName": "Sony Cyber-shot DSC-WX500", - "abstractSku": "027", - "url": "/en/sony-cyber-shot-dsc-wx500-27", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/7822599-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/7822599-Sony.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer red" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer red" - } -} -``` -
- - -
-Response sample: retrieve search suggestions with a currency set - -```json -{ -    "data": [ -        { -            "type": "catalog-search-suggestions", -            "id": null, -            "attributes": { -                "completion": [ -                    "acer", -                    "acer liquid jade", -                    "acer extensa m2610", -                    "acer aspire switch 10 e", -                    "acer liquid z630", -                    "acer liquid zest 4g", -                    "acer aspire s7", -                    "acer chromebook cb5-311", -                    "acer travelmate p246-m", -                    "acer travelmate p258-m" -                ], -                "categories": [], -                "cmsPages": [], -                "abstractProducts": [ -                    { -                        "price": 11499, -                        "abstractName": "Acer Veriton 6", -                        "abstractSku": "113", -                        "url": "/en/acer-veriton-6-113", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29885591_medium_1480617592_5216_14709.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29885591_7502.png" -                            } -                        ] -                    }, -                    { -                        "price": 23014, -                        "abstractName": "Acer Iconia B1-850", -                        "abstractSku": "156", -                        "url": "/en/acer-iconia-b1-850-156", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32018944_9673.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery/32018944_9673.jpg" -                            } -                        ] -                    }, -                    { -                        "price": 46749, -                        "abstractName": "Acer Aspire Switch 10 E", -                        "abstractSku": "132", -                        "url": "/en/acer-aspire-switch-10-e-132", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30619567_3161.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery/30619567_3161.jpg" -                            } -                        ] -                    }, -                    { -                        "price": 40750, -                        "abstractName": "Acer Aspire Switch 10 E", -                        "abstractSku": "133", -                        "url": "/en/acer-aspire-switch-10-e-133", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/31743669_0971.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/31743669_0971.png" -                            } -                        ] -                    }, -                    { -                        "price": 38255, -                        "abstractName": "Acer Chromebook C730-C8T7", -                        "abstractSku": "136", -                        "url": "/en/acer-chromebook-c730-c8t7-136", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24425591_medium_1483525296_3275_9985.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24425591-5275.jpg" -                            } -                        ] -                    }, -                    { -                        "price": 2161, -                        "abstractName": "Acer Liquid Z630", -                        "abstractSku": "054", -                        "url": "/en/acer-liquid-z630-54", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406182_3072.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" -                            } -                        ] -                    }, -                    { -                        "price": 7219, -                        "abstractName": "Acer Liquid Leap", -                        "abstractSku": "100", -                        "url": "/en/acer-liquid-leap-100", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24675726_medium_1483613008_9797_25362.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24675726-2268.jpg" -                            } -                        ] -                    }, -                    { -                        "price": 2161, -                        "abstractName": "Acer Aspire S7", -                        "abstractSku": "134", -                        "url": "/en/acer-aspire-s7-134", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29759322_2351.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29759322_2351.png" -                            } -                        ] -                    }, -                    { -                        "price": 47540, -                        "abstractName": "Acer TravelMate P246-M", -                        "abstractSku": "137", -                        "url": "/en/acer-travelmate-p246-m-137", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29283479_6068.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery/29283479_6068.jpg" -                            } -                        ] -                    }, -                    { -                        "price": 30397, -                        "abstractName": "Acer TravelMate P258-M", -                        "abstractSku": "138", -                        "url": "/en/acer-travelmate-p258-m-138", -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30046855_5806.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery/30046855_5806.jpg" -                            } -                        ] -                    } -                ], -                "categoryCollection": [], -                "cmsPageCollection": [] -            }, -            "links": { -                "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer¤cy=CHF" -            } -        } -    ], -    "links": { -        "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=acer¤cy=CHF" -    } -} -``` -
- - -
-Response sample: retrieve search suggestions with a currency and a price mode set - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "sony", - "sony experts", - "sony cyber-shot dsc-w830", - "sony smartwatch 3", - "sony cyber-shot dsc-wx350", - "sony cyber-shot dsc-wx500", - "sony xperia z3 compact", - "sony cyber-shot dsc-w800", - "sony cyber-shot dsc-wx220", - "sony fdr-axp33" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 3918, - "abstractName": "Sony NEX-VG20EH", - "abstractSku": "202", - "url": "/en/sony-nex-vg20eh-202", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/5782479-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/5782479-Sony.jpg" - } - ] - }, - { - "price": 20254, - "abstractName": "Sony NEX-VG20EH", - "abstractSku": "201", - "url": "/en/sony-nex-vg20eh-201", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/11217755-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/11217755-Sony.jpg" - } - ] - }, - { - "price": 14554, - "abstractName": "Sony Xperia Z3 Compact", - "abstractSku": "077", - "url": "/en/sony-xperia-z3-compact-77", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24584210-216.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24584210-216.jpg" - } - ] - }, - { - "price": 25214, - "abstractName": "Sony Xperia Z3", - "abstractSku": "080", - "url": "/en/sony-xperia-z3-80", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24394206-8583.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24394206-8583.jpg" - } - ] - }, - { - "price": 6277, - "abstractName": "Sony HDR-MV1", - "abstractSku": "198", - "url": "/en/sony-hdr-mv1-198", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/19692589-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/19692589-Sony.jpg" - } - ] - }, - { - "price": 26641, - "abstractName": "Sony NEX-VG30E", - "abstractSku": "203", - "url": "/en/sony-nex-vg30e-203", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/15619960-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/15619960-Sony.jpg" - } - ] - }, - { - "price": 35711, - "abstractName": "Sony Xperia Z3 Compact", - "abstractSku": "076", - "url": "/en/sony-xperia-z3-compact-76", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24394207-3552.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24394207-3552.jpg" - } - ] - }, - { - "price": 25584, - "abstractName": "Sony Xperia Z3 Compact", - "abstractSku": "078", - "url": "/en/sony-xperia-z3-compact-78", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24602396-8292.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24602396-8292.jpg" - } - ] - }, - { - "price": 42502, - "abstractName": "Sony Xperia Z3", - "abstractSku": "079", - "url": "/en/sony-xperia-z3-79", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24394211-4472.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24394211-4472.jpg" - } - ] - }, - { - "price": 28861, - "abstractName": "Sony FDR-AXP33", - "abstractSku": "194", - "url": "/en/sony-fdr-axp33-194", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904145-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904145-Sony.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Sony¤cy=EUR&priceMode=GROSS_MODE" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Sony¤cy=EUR&priceMode=GROSS_MODE" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for a category name - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [], - "categories": [ - { - "name": "Telecom & Navigation", - "url": "/en/telecom-&-navigation" - } - ], - "cmsPages": [], - "abstractProducts": [ - { - "price": 43458, - "abstractName": "Samsung Galaxy Note 3", - "abstractSku": "073", - "url": "/en/samsung-galaxy-note-3-73", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21927455-7956.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21927455-7956.jpg" - } - ] - }, - { - "price": 1879, - "abstractName": "Acer Liquid Z630", - "abstractSku": "054", - "url": "/en/acer-liquid-z630-54", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406182_3072.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 33265, - "abstractName": "Acer Liquid Zest 4G", - "abstractSku": "056", - "url": "/en/acer-liquid-zest-4g-56", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/35874112_7947608372.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_mediums/35874112_7947608372.jpg" - } - ] - }, - { - "price": 19137, - "abstractName": "Acer Liquid Z630", - "abstractSku": "055", - "url": "/en/acer-liquid-z630-55", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/29406184_6175.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29406182_3072.png" - } - ] - }, - { - "price": 41339, - "abstractName": "Acer Liquid Zest 4G", - "abstractSku": "057", - "url": "/en/acer-liquid-zest-4g-57", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/32007641_9851.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/32007641_9851.png" - } - ] - }, - { - "price": 27975, - "abstractName": "Samsung Galaxy Note 4", - "abstractSku": "061", - "url": "/en/samsung-galaxy-note-4-61", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24752508-8866.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24752508-8866.jpg" - } - ] - }, - { - "price": 2952, - "abstractName": "Samsung Galaxy Note 4", - "abstractSku": "062", - "url": "/en/samsung-galaxy-note-4-62", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24752467-6413.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24752467-6413.jpg" - } - ] - }, - { - "price": 8005, - "abstractName": "Samsung Galaxy S5", - "abstractSku": "068", - "url": "/en/samsung-galaxy-s5-68", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21927453-1632.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21927453-1632.jpg" - } - ] - }, - { - "price": 34566, - "abstractName": "Samsung Galaxy Tab S2", - "abstractSku": "075", - "url": "/en/samsung-galaxy-tab-s2-75", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_29401702_medium_1480597709_3254_26649.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29401702_3457.jpg" - } - ] - }, - { - "price": 9080, - "abstractName": "Samsung Galaxy S7", - "abstractSku": "042", - "url": "/en/samsung-galaxy-s7-42", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/31040075_7752.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/31040075_7752.jpg" - } - ] - } - ], - "categoryCollection": [ - { - "name": "Telecom & Navigation", - "url": "/en/telecom-&-navigation" - } - ], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=telecom-&-navigation" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=telecom-&-navigation" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for a part of a category name - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "sony smartwatch 3", - "sony sw2 smartwatch", - "sony smartwatch", - "smart wearables", - "smartphones", - "smartwatches" - ], - "categories": [ - { - "name": "Smartwatches", - "url": "/en/smart-wearables/smartwatches" - }, - { - "name": "Smartphones", - "url": "/en/telecom-&-navigation/smartphones" - }, - { - "name": "Smart Wearables", - "url": "/en/smart-wearables" - } - ], - "cmsPages": [], - "abstractProducts": [ - { - "price": 19568, - "abstractName": "Sony SmartWatch", - "abstractSku": "111", - "url": "/en/sony-smartwatch-111", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_12295890_medium_1481715683_8105_13110.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/15743_12295890-6463.jpg" - } - ] - }, - { - "price": 17774, - "abstractName": "Sony SW2 SmartWatch", - "abstractSku": "108", - "url": "/en/sony-sw2-smartwatch-108", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_21047360_medium_1482828045_101_30852.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21047360-4814.jpg" - } - ] - }, - { - "price": 12572, - "abstractName": "Sony SW2 SmartWatch", - "abstractSku": "109", - "url": "/en/sony-sw2-smartwatch-109", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/19416433-5073.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/19416433-5073.jpg" - } - ] - }, - { - "price": 20160, - "abstractName": "Sony SmartWatch 3", - "abstractSku": "090", - "url": "/en/sony-smartwatch-3-90", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery/26219658_3401.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_mediums/img_26219658_medium_1483953936_4642_16454.jpg" - } - ] - }, - { - "price": 19712, - "abstractName": "Sony SmartWatch 3", - "abstractSku": "091", - "url": "/en/sony-smartwatch-3-91", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25873091-2214.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25873091-2214.jpg" - } - ] - }, - { - "price": 17459, - "abstractName": "Sony SmartWatch 3", - "abstractSku": "092", - "url": "/en/sony-smartwatch-3-92", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495842-3074.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495842-3074.jpg" - } - ] - }, - { - "price": 24899, - "abstractName": "Sony SmartWatch 3", - "abstractSku": "093", - "url": "/en/sony-smartwatch-3-93", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495843-7844.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495843-7844.jpg" - } - ] - }, - { - "price": 17994, - "abstractName": "TomTom Golf", - "abstractSku": "095", - "url": "/en/tomtom-golf-95", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24235707-6105.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24235707-6105.jpg" - } - ] - }, - { - "price": 28178, - "abstractName": "Sony SWR50", - "abstractSku": "094", - "url": "/en/sony-swr50-94", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/27033003_5327.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/27033003_5327.jpg" - } - ] - }, - { - "price": 28861, - "abstractName": "TomTom Golf", - "abstractSku": "096", - "url": "/en/tomtom-golf-96", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30856274_5420.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30856274_5420.jpg" - } - ] - } - ], - "categoryCollection": [ - { - "name": "Smartwatches", - "url": "/en/smart-wearables/smartwatches" - }, - { - "name": "Smartphones", - "url": "/en/telecom-&-navigation/smartphones" - }, - { - "name": "Smart Wearables", - "url": "/en/smart-wearables" - } - ], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Smart" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=Smart" - } -} -``` -
- - -
-Response sample: retrieve search suggestions for a merchant name - -```json -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "video king" - ], - "categories": [], - "cmsPages": [], - "abstractProducts": [ - { - "price": 28178, - "abstractName": "Samsung F90BN", - "abstractSku": "192", - "url": "/en/samsung-f90bn-192", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_17738941_medium_1482147097_3908_19487.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/17738941-1395.jpg" - } - ] - }, - { - "price": 24899, - "abstractName": "Samsung F90BN", - "abstractSku": "191", - "url": "/en/samsung-f90bn-191", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_17681791_medium_1482143992_4607_19487.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/17681791-4446.jpg" - } - ] - }, - { - "price": 19712, - "abstractName": "Kodak EasyShare M532", - "abstractSku": "189", - "url": "/en/kodak-easyshare-m532-189", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/7062537-1780.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/7062537-1780.jpg" - } - ] - }, - { - "price": 17459, - "abstractName": "Kodak EasyShare M532", - "abstractSku": "190", - "url": "/en/kodak-easyshare-m532-190", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/9032886-5977.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/9032886-5977.jpg" - } - ] - }, - { - "price": 18415, - "abstractName": "Canon LEGRIA HF R606", - "abstractSku": "185", - "url": "/en/canon-legria-hf-r606-185", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904533-7314.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904533-7314.jpg" - } - ] - }, - { - "price": 3918, - "abstractName": "Sony NEX-VG20EH", - "abstractSku": "202", - "url": "/en/sony-nex-vg20eh-202", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/5782479-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/5782479-Sony.jpg" - } - ] - }, - { - "price": 12572, - "abstractName": "Toshiba CAMILEO P20", - "abstractSku": "207", - "url": "/en/toshiba-camileo-p20-207", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/15721464-9569.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/15721464-9569.jpg" - } - ] - }, - { - "price": 34668, - "abstractName": "Toshiba CAMILEO P20", - "abstractSku": "208", - "url": "/en/toshiba-camileo-p20-208", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/14678762-7696.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/14678762-7696.jpg" - } - ] - }, - { - "price": 9865, - "abstractName": "Canon LEGRIA HF R606", - "abstractSku": "186", - "url": "/en/canon-legria-hf-r606-186", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904506-6830.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904506-6830.jpg" - } - ] - }, - { - "price": 11611, - "abstractName": "Toshiba CAMILEO S30", - "abstractSku": "205", - "url": "/en/toshiba-camileo-s30-205", - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_6350138_medium_1481633011_6285_13738.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/6350138-1977.jpg" - } - ] - } - ], - "categoryCollection": [], - "cmsPageCollection": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=video king" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search-suggestions?q=video king" - } -} -``` -
- -| ATTRIBUTE| TYPE | DESCRIPTION | -| ---------------- | -------- | ---------- | -| completion | Array | Autocomplete suggestions for the search query.
Each item in the array is a string. | -| categories | Array | Categories that match the search query. The matching categories are now returned as the `categoryCollection` attribute. | -| cmsPages | Array | CMS pages that match the search query. This attribute is deprecated and will be removed soon. The matching CMS pages are now returned as the `cmsPageCollection` attribute. | -| abstractProducts | Array | Abstract products matching the search query. Each item in the array is an *Object* representing a product. | -| abstractProducts.price | Integer | Product price. | -| abstractProducts.abstractName | String | Product name. | -| abstractProducts.abstractSku | String | Product SKU. | -| abstractProducts.url | String | URL of the product's product details page. | -| abstractProducts.images | Object | URLs of the product's images. | -| abstractProducts.images.externalUrlSmall | String | URL of the product's preview image. | -| abstractProducts.images.externalUrlLarge | String | URL of the product's large image. | -| categoryCollection | Array | Categories that match the search query. Each item in the array is an *Object* representing a category. | -| categoryCollection.name | String | Specifies the category name. | -| categoryCollection.URL | String | Specifies the category URL. | -| cmsPageCollection | Array | CMS pages that match the search query. Each item in the array is an *Object* representing a single page. | -| cmsPageCollection.name | String | Specifies the page title. | -| cmsPageCollection.url | String | Specifies the page URL. | - - -{% info_block infoBox "SEO-friendly URLs" %} - -The `url` attribute of categories and abstract products exposes a SEO-friendly URL of the resource that represents the respective category or product. For information about how to resolve such a URL and retrieve the corresponding resource, see [Resolving search engine friendly URLs](/docs/scos/dev/glue-api-guides/{{page.version}}/resolving-search-engine-friendly-urls.html). - -{% endinfo_block %} - -{% info_block warningBox "Warning" %} - -Although CMS pages also expose the `url` parameter, resolving of CMS page SEF URLs is not supported at the moment. - -{% endinfo_block %} - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-marketplace-orders.md b/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-marketplace-orders.md deleted file mode 100644 index 233fc438f60..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/retrieving-marketplace-orders.md +++ /dev/null @@ -1,1535 +0,0 @@ ---- -title: Retrieving Marketplace orders -description: Retrieve information about Marketplace orders via Glue API. -template: glue-api-storefront-guide-template ---- - -Every registered customer can retrieve the list of orders for their account, as well as the detailed order information, including every step of the calculation and addresses used in the orders. - -In your development, this resource can help you to: - -- Make the order history available to customers. -- Make order details available to enable reordering functionality. - -The **Marketplace Order Management API** lets you retrieve all orders made by a registered customer. - - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [**Glue API: Order Management feature integration**](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-order-management-feature-integration.html) - -## Retrieve all orders - -To retrieve a list of all orders made by a registered customer, send the request: - -*** -`GET` **/orders** -*** - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ------------- | ------------ | -------- | -------------------------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| ---------------- | ---------------------- | ----------------------------- | -| offset | The offset of the order at which to begin the response. Works only together with page[limit]. To work correctly, the value should be devisable by the value of page[limit]. The default value is 0. | From `0` to any. | -| limit | The maximum number of entries to return. Works only together with page[offset]. The default value is 10. | From `1` to any. | -| include | Adds resource relationships to the request. | merchants | - -| REQUEST | USAGE | -| --------------------- | ------------------ | -| `GET https://glue.mysprykershop.com/orders` | Retrieve all orders. | -| `GET https://glue.mysprykershop.com/orders?page[limit]=10` | Retrieve 10 orders. | -| `GET https://glue.mysprykershop.com/orders?page[offset]=10&page[limit]=10` | Retrieve 10 orders starting from the eleventh order. | -| `GET https://glue.mysprykershop.com/orders?page[offset]=20` | Retrieve all orders starting from the twenty first order. | -| `GET https://glue.mysprykershop.com/orders?include=merchants` | Retrieve all orders with the merchants included. | - -### Response - - -
-Response sample: retrieve all orders - -```json -{ - "data": [ - { - "type": "orders", - "id": "DE--5", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "closed" - ], - "createdAt": "2020-10-19 15:26:37.868585", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 500, - "discountTotal": 9701, - "taxTotal": 10962, - "subtotal": 92013, - "grandTotal": 82812, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--5" - } - }, - { - "type": "orders", - "id": "DE--4", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "shipped" - ], - "createdAt": "2020-10-19 15:25:57.909985", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 500, - "discountTotal": 14841, - "taxTotal": 0, - "subtotal": 143412, - "grandTotal": 129071, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--4" - } - }, - { - "type": "orders", - "id": "DE--3", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "closed" - ], - "createdAt": "2020-10-19 15:25:14.861031", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1500, - "discountTotal": 9147, - "taxTotal": 2893, - "subtotal": 91474, - "grandTotal": 83827, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--3" - } - }, - { - "type": "orders", - "id": "DE--2", - "attributes": { - "merchantReferences": [ - "MER000002", - "MER000001" - ], - "itemStates": [ - "new" - ], - "createdAt": "2020-10-19 15:16:21.879286", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1590, - "discountTotal": 3959, - "taxTotal": 4957, - "subtotal": 39586, - "grandTotal": 37217, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--2" - } - }, - { - "type": "orders", - "id": "DE--1", - "attributes": { - "merchantReferences": [ - "MER000001", - "MER000002", - "MER000006", - "MER000005" - ], - "itemStates": [ - "confirmed" - ], - "createdAt": "2020-10-19 15:14:51.183582", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 4080, - "discountTotal": 11884, - "taxTotal": 12651, - "subtotal": 113944, - "grandTotal": 106140, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--1" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/orders" - } -} -``` -
- -
-Response sample: retrieve all orders with the merchants included - -```json -{ - "data": [ - { - "type": "orders", - "id": "DE--5", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "closed" - ], - "createdAt": "2020-10-19 15:26:37.868585", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 500, - "discountTotal": 9701, - "taxTotal": 10962, - "subtotal": 92013, - "grandTotal": 82812, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--5?include=merchants" - } - }, - { - "type": "orders", - "id": "DE--4", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "shipped" - ], - "createdAt": "2020-10-19 15:25:57.909985", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 500, - "discountTotal": 14841, - "taxTotal": 0, - "subtotal": 143412, - "grandTotal": 129071, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--4?include=merchants" - } - }, - { - "type": "orders", - "id": "DE--3", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "closed" - ], - "createdAt": "2020-10-19 15:25:14.861031", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1500, - "discountTotal": 9147, - "taxTotal": 2893, - "subtotal": 91474, - "grandTotal": 83827, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--3?include=merchants" - } - }, - { - "type": "orders", - "id": "DE--2", - "attributes": { - "merchantReferences": [ - "MER000002", - "MER000001" - ], - "itemStates": [ - "new" - ], - "createdAt": "2020-10-19 15:16:21.879286", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1590, - "discountTotal": 3959, - "taxTotal": 4957, - "subtotal": 39586, - "grandTotal": 37217, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--2?include=merchants" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000002" - }, - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - }, - { - "type": "orders", - "id": "DE--1", - "attributes": { - "merchantReferences": [ - "MER000001", - "MER000002", - "MER000006", - "MER000005" - ], - "itemStates": [ - "confirmed" - ], - "createdAt": "2020-10-19 15:14:51.183582", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 4080, - "discountTotal": 11884, - "taxTotal": 12651, - "subtotal": 113944, - "grandTotal": 106140, - "canceledTotal": 0, - "remunerationTotal": 0 - } - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--1?include=merchants" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000002" - }, - { - "type": "merchants", - "id": "MER000001" - }, - { - "type": "merchants", - "id": "MER000006" - }, - { - "type": "merchants", - "id": "MER000005" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/orders?include=merchants" - }, - "included": [ - { - "type": "merchants", - "id": "MER000002", - "attributes": { - "merchantName": "Video King", - "merchantUrl": "/en/merchant/video-king", - "contactPersonRole": "Country Manager DE", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Martha", - "contactPersonLastName": "Farmer", - "contactPersonPhone": "+31 123 345 678", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-logo.png", - "publicEmail": "hi@video-king.nl", - "publicPhone": "+31 123 345 777", - "description": "Video King is a premium provider of video equipment. In business since 2010, we understand the needs of video professionals and enthusiasts and offer a wide variety of products with competitive prices. ", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png", - "deliveryTime": "2-4 days", - "latitude": "4.838470", - "longitude": "51.558107", - "faxNumber": "+31 123 345 733", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Video King

Gilzeweg 24
4854SG Bavel
NL

Phone: +31 123 45 6789
Email: hi@video-king.nl

Represented by
Managing Director: Max Mustermann
Register Court: Amsterdam
Register Number: 1234.4567

", - "dataPrivacy": "Video King values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000002" - } - }, - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "merchants", - "id": "MER000006", - "attributes": { - "merchantName": "Sony Experts", - "merchantUrl": "/en/merchant/sony-experts", - "contactPersonRole": "Brand Manager", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Michele", - "contactPersonLastName": "Nemeth", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-logo.png", - "publicEmail": "support@sony-experts.com", - "publicPhone": "+49 30 234567691", - "description": "Capture your moment with the best cameras from Sony. From pocket-size to professional-style, they all pack features to deliver the best quality pictures.Discover the range of Sony cameras, lenses and accessories, and capture your favorite moments with precision and style with the best cameras can offer.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/sonyexperts-banner.png", - "deliveryTime": "1-3 days", - "latitude": "11.547788", - "longitude": "48.131058", - "faxNumber": "+49 30 234567600", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Sony Experts

Matthias-Pschorr-Straße 1
80336 München
DE

Phone: 030 1234567
Email: support@sony-experts.com

Represented by
Managing Director: Max Mustermann
Register Court: Munich
Register Number: HYY 134306

", - "dataPrivacy": "Sony Experts values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000006" - } - }, - { - "type": "merchants", - "id": "MER000005", - "attributes": { - "merchantName": "Budget Cameras", - "merchantUrl": "/en/merchant/budget-cameras", - "contactPersonRole": "Merchandise Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Jason", - "contactPersonLastName": "Weidmann", - "contactPersonPhone": "030/123456789", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-logo.png", - "publicEmail": "support@budgetcamerasonline.com", - "publicPhone": "+49 30 234567591", - "description": "DSLR and mirrorless cameras are by far the most popular with filmmakers on a tight budget when you can't afford multiple specialist cameras.Budget Cameras is offering a great selection of digital cameras with the lowest prices.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/budgetcameras-banner.png", - "deliveryTime": "2-4 days", - "latitude": "10.004663", - "longitude": "53.552463", - "faxNumber": "+49 30 234567500", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Budget Cameras

Spitalerstraße 3
20095 Hamburg
DE

Phone: 030 1234567
Email: support@budgetcamerasonline.com

Represented by
Managing Director: Max Mustermann
Register Court: Hamburg
Register Number: HXX 134305

", - "dataPrivacy": "Budget Cameras values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000005" - } - } - ] -} -``` -
- -#### General order information - -| ATTRIBUTE | TYPE | DESCRIPTION | -| -------------- | -------- | ----------------------- | -| merchantReferences | Array | Unique identifier of the [merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) | -| itemStates | Array | State of the item in the order. | -| createdAt | String | Date and time when the order was created. | -| currencyIsoCode | String | ISO 4217 code of the currency that was selected when placing the order. | -| priceMode | String | Price mode that was active when placing the order. Possible values:
  • NET_MODE—prices before tax
  • GROSS_MODE—prices after tax
| - -#### Totals calculation - -| ATTRIBUTE | TYPE |DESCRIPTION | -| ----------------- | ------- | ------------------------------------------------------- | -| expenseTotal | Integer | Total amount of expenses (for example, shipping costs). | -| discountTotal | Integer | Total amount of discounts applied. | -| taxTotal | Integer | Total amount of taxes paid. | -| subtotal | Integer | Subtotal of the order. | -| grandTotal | Integer | Grand total of the order. | -| canceledTotal | Integer | Total canceled amount. | -| remunerationTotal | Integer | Total sum of remuneration. | - -For the attributes of the included resources, see [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html). - -## Retrieve an order - -To retrieve detailed information about an order, send the request: - -*** -`GET` {% raw %}**/orders/*{{order_id}}***{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| ------------------ | ------------------------------ | -| {% raw %}***{{order_id}}***{% endraw %} | Unique identifier of an order. [Retrieve all orders](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-orders.html) to get it. | - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ------------- | ------------ | -------- | ---------------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - - -| String parameter | Description | Possible values | -| ---------------- | -------------------- | --------------------- | -| include | Adds resource relationships to the request. | order-shipments, concrete-products, abstract-products, merchants | - -| REQUEST | USAGE | -| ----------------- | ------------------ | -| `GET https://glue.mysprykershop.com/orders/DE--6` | Retrieve information about the `DE--6` order. | -| `GET https://glue.mysprykershop.com/orders/DE--6?include=order-shipments` | Retrieve information about the order with the ID `DE--6` with order shipments included. | -| `GET https://glue.mysprykershop.com/orders/DE--3?include=merchants` | Retrieve order `DE--3` with the merchants included.| - -### Response - -
-Response sample: retrieve information about the order - -```json -{ - "data": { - "type": "orders", - "id": "DE--6", - "attributes": { - "merchantReferences": [], - "itemStates": [ - "payment pending" - ], - "createdAt": "2021-01-05 13:43:23.000000", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1180, - "discountTotal": 0, - "taxTotal": 12173, - "subtotal": 75064, - "grandTotal": 76244, - "canceledTotal": 0, - "remunerationTotal": 0 - }, - "billingAddress": { - "salutation": "Mr", - "firstName": "Spencor", - "middleName": null, - "lastName": "Hopkin", - "address1": "Julie-Wolfthorn-Straße", - "address2": "1", - "address3": "new address", - "company": "spryker", - "city": "Berlin", - "zipCode": "10115", - "poBox": null, - "phone": "+49 (30) 2084 98350", - "cellPhone": null, - "description": null, - "comment": null, - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "shippingAddress": null, - "items": [ - { - "merchantReference": null, - "state": "payment pending", - "name": "Samsung Galaxy S5 mini", - "sku": "066_23294028", - "sumPrice": 39353, - "quantity": 1, - "unitGrossPrice": 39353, - "sumGrossPrice": 39353, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 39353, - "unitTaxAmountFullAggregation": 6283, - "sumTaxAmountFullAggregation": 6283, - "refundableAmount": 39353, - "canceledAmount": 0, - "sumSubtotalAggregation": 39353, - "unitSubtotalAggregation": 39353, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 39353, - "sumPriceToPayAggregation": 39353, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "3db99597-99a0-58a9-a0ea-696e8da0026e", - "isReturnable": false, - "idShipment": 11, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "Blue" - }, - "image": "https://images.icecat.biz/img/gallery_mediums/23294028_3275.jpg" - }, - "salesUnit": null, - "calculatedDiscounts": [], - "productOptions": [], - "amount": null - }, - { - "merchantReference": null, - "state": "payment pending", - "name": "Sony Xperia Z3 Compact", - "sku": "076_24394207", - "sumPrice": 35711, - "quantity": 1, - "unitGrossPrice": 35711, - "sumGrossPrice": 35711, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 35711, - "unitTaxAmountFullAggregation": 5702, - "sumTaxAmountFullAggregation": 5702, - "refundableAmount": 35711, - "canceledAmount": 0, - "sumSubtotalAggregation": 35711, - "unitSubtotalAggregation": 35711, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 35711, - "sumPriceToPayAggregation": 35711, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "40274175-4398-5927-8980-48ead5053e69", - "isReturnable": false, - "idShipment": 12, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "White" - }, - "image": "https://images.icecat.biz/img/norm/medium/24394207-3552.jpg" - }, - "salesUnit": null, - "calculatedDiscounts": [ - { - "unitAmount": 786, - "sumAmount": 786, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ], - "productOptions": [], - "amount": null - } - ], - "expenses": [ - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Express", - "sumPrice": 590, - "unitGrossPrice": 590, - "sumGrossPrice": 590, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 94, - "sumTaxAmount": 94, - "unitPriceToPayAggregation": 590, - "sumPriceToPayAggregation": 590, - "taxAmountAfterCancellation": null, - "idShipment": 11, - "idSalesExpense": 11 - }, - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Express", - "sumPrice": 590, - "unitGrossPrice": 590, - "sumGrossPrice": 590, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 94, - "sumTaxAmount": 94, - "unitPriceToPayAggregation": 590, - "sumPriceToPayAggregation": 590, - "taxAmountAfterCancellation": null, - "idShipment": 12, - "idSalesExpense": 12 - } - ], - "payments": [ - { - "amount": 76244, - "paymentProvider": "DummyPayment", - "paymentMethod": "Invoice" - } - ], - "shipments": [], - "calculatedDiscounts": [], - "bundleItems": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--6" - } - } -} -``` - -
- - -
-Response sample: retrieve information about the order with order shipments included - -```json -{ - "data": { - "type": "orders", - "id": "DE--6", - "attributes": { - "merchantReferences": [ - "MER000005", - "MER000002" - ], - "itemStates": [ - "sent to merchant", - "delivered" - ], - "createdAt": "2021-06-18 13:44:23.895154", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 2500, - "discountTotal": 0, - "taxTotal": 6976, - "subtotal": 41191, - "grandTotal": 43691, - "canceledTotal": 0, - "remunerationTotal": 0 - }, - "billingAddress": { - "salutation": "Ms", - "firstName": "Sonia", - "middleName": null, - "lastName": "Wagner", - "address1": "Kirncher Str.", - "address2": "7", - "address3": "", - "company": "Spryker Systems GmbH", - "city": "Berlin", - "zipCode": "10247", - "poBox": null, - "phone": "4902890031", - "cellPhone": null, - "description": null, - "comment": "", - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "shippingAddress": { - "salutation": "Ms", - "firstName": "Sonia", - "middleName": null, - "lastName": "Wagner", - "address1": "Kirncher Str.", - "address2": "7", - "address3": "", - "company": "Spryker Systems GmbH", - "city": "Berlin", - "zipCode": "10247", - "poBox": null, - "phone": "4902890031", - "cellPhone": null, - "description": null, - "comment": "", - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "items": [ - { - "merchantReference": "MER000005", - "state": "sent to merchant", - "name": "Sony Cyber-shot DSC-W830", - "sku": "018_21081477", - "sumPrice": 31140, - "quantity": 1, - "unitGrossPrice": 31140, - "sumGrossPrice": 31140, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 31140, - "unitTaxAmountFullAggregation": 4972, - "sumTaxAmountFullAggregation": 4972, - "refundableAmount": 31140, - "canceledAmount": 0, - "sumSubtotalAggregation": 31140, - "unitSubtotalAggregation": 31140, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 31140, - "sumPriceToPayAggregation": 31140, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "349f3ce2-0396-5ed4-a2df-c9e053cb3350", - "isReturnable": false, - "idShipment": 11, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "productOfferReference": "offer66", - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "Pink" - }, - "image": "https://d2s0ynfc62ej12.cloudfront.net/b2c/21081477-Sony.jpg" - }, - "salesOrderItemConfiguration": null, - "salesUnit": null, - "calculatedDiscounts": [], - "productOptions": [], - "amount": null - }, - { - "merchantReference": "MER000002", - "state": "delivered", - "name": "Sony Cyber-shot DSC-W830", - "sku": "020_21081478", - "sumPrice": 10051, - "quantity": 1, - "unitGrossPrice": 10051, - "sumGrossPrice": 10051, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 10051, - "unitTaxAmountFullAggregation": 1605, - "sumTaxAmountFullAggregation": 1605, - "refundableAmount": 10051, - "canceledAmount": 0, - "sumSubtotalAggregation": 10051, - "unitSubtotalAggregation": 10051, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 0, - "sumDiscountAmountAggregation": 0, - "unitDiscountAmountFullAggregation": 0, - "sumDiscountAmountFullAggregation": 0, - "unitPriceToPayAggregation": 10051, - "sumPriceToPayAggregation": 10051, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "2b8ded00-2831-5557-83a2-3d29fc7c9ae8", - "isReturnable": true, - "idShipment": 12, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "productOfferReference": "offer27", - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "Black" - }, - "image": "https://d2s0ynfc62ej12.cloudfront.net/b2c/21081478-Sony.jpg" - }, - "salesOrderItemConfiguration": null, - "salesUnit": null, - "calculatedDiscounts": [], - "productOptions": [], - "amount": null - } - ], - "expenses": [ - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Next-Day", - "sumPrice": 1500, - "unitGrossPrice": 1500, - "sumGrossPrice": 1500, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 240, - "sumTaxAmount": 240, - "unitPriceToPayAggregation": 1500, - "sumPriceToPayAggregation": 1500, - "taxAmountAfterCancellation": null, - "idShipment": 12, - "idSalesExpense": 12 - }, - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Premium", - "sumPrice": 1000, - "unitGrossPrice": 1000, - "sumGrossPrice": 1000, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 159, - "sumTaxAmount": 159, - "unitPriceToPayAggregation": 1000, - "sumPriceToPayAggregation": 1000, - "taxAmountAfterCancellation": null, - "idShipment": 11, - "idSalesExpense": 11 - } - ], - "payments": [ - { - "amount": 43691, - "paymentProvider": "DummyMarketplacePayment", - "paymentMethod": "Marketplace Invoice" - } - ], - "shipments": [], - "calculatedDiscounts": [], - "bundleItems": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--6" - } - } -} -``` - -
- - -
-Response sample: retrieve an with the merchants included - -```json -{ - "data": { - "type": "orders", - "id": "DE--2", - "attributes": { - "merchantReferences": [ - "MER000002", - "MER000001" - ], - "itemStates": [ - "new" - ], - "createdAt": "2020-10-19 15:16:21.879286", - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE", - "totals": { - "expenseTotal": 1590, - "discountTotal": 3959, - "taxTotal": 4957, - "subtotal": 39586, - "grandTotal": 37217, - "canceledTotal": 0, - "remunerationTotal": 0 - }, - "billingAddress": { - "salutation": "Ms", - "firstName": "Sonia", - "middleName": null, - "lastName": "Wagner", - "address1": "Kirncher Str.", - "address2": "7", - "address3": "", - "company": "Spryker Systems GmbH", - "city": "Berlin", - "zipCode": "10247", - "poBox": null, - "phone": "4902890031", - "cellPhone": null, - "description": null, - "comment": "", - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "shippingAddress": null, - "items": [ - { - "merchantReference": "MER000002", - "state": "new", - "name": "Toshiba CAMILEO S30", - "sku": "205_6350138", - "sumPrice": 11611, - "quantity": 1, - "unitGrossPrice": 11611, - "sumGrossPrice": 11611, - "taxRate": "7.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 11611, - "unitTaxAmountFullAggregation": 684, - "sumTaxAmountFullAggregation": 684, - "refundableAmount": 10450, - "canceledAmount": 0, - "sumSubtotalAggregation": 11611, - "unitSubtotalAggregation": 11611, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 1161, - "sumDiscountAmountAggregation": 1161, - "unitDiscountAmountFullAggregation": 1161, - "sumDiscountAmountFullAggregation": 1161, - "unitPriceToPayAggregation": 10450, - "sumPriceToPayAggregation": 10450, - "taxRateAverageAggregation": "7.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "d5e948d9-f470-5b9a-b1c7-c1321761312a", - "isReturnable": false, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "Grey" - }, - "image": "https://images.icecat.biz/img/gallery_mediums/img_6350138_medium_1481633011_6285_13738.jpg" - }, - "salesUnit": null, - "calculatedDiscounts": [ - { - "unitAmount": 1161, - "sumAmount": 1161, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ], - "productOptions": [], - "amount": null - }, - { - "merchantReference": "MER000001", - "state": "new", - "name": "Samsung Galaxy Note 4", - "sku": "061_24752508", - "sumPrice": 27975, - "quantity": 1, - "unitGrossPrice": 27975, - "sumGrossPrice": 27975, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 27975, - "unitTaxAmountFullAggregation": 4020, - "sumTaxAmountFullAggregation": 4020, - "refundableAmount": 25177, - "canceledAmount": 0, - "sumSubtotalAggregation": 27975, - "unitSubtotalAggregation": 27975, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 2798, - "sumDiscountAmountAggregation": 2798, - "unitDiscountAmountFullAggregation": 2798, - "sumDiscountAmountFullAggregation": 2798, - "unitPriceToPayAggregation": 25177, - "sumPriceToPayAggregation": 25177, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null, - "orderReference": null, - "uuid": "dedc66da-9af9-504f-bdfc-e45b23118786", - "isReturnable": false, - "bundleItemIdentifier": null, - "relatedBundleItemIdentifier": null, - "salesOrderConfiguredBundle": null, - "salesOrderConfiguredBundleItem": null, - "metadata": { - "superAttributes": { - "color": "Black" - }, - "image": "https://images.icecat.biz/img/norm/medium/24752508-8866.jpg" - }, - "salesUnit": null, - "calculatedDiscounts": [ - { - "unitAmount": 2798, - "sumAmount": 2798, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ], - "productOptions": [], - "amount": null - } - ], - "expenses": [ - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Express", - "sumPrice": 590, - "unitGrossPrice": 590, - "sumGrossPrice": 590, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 94, - "sumTaxAmount": 94, - "unitPriceToPayAggregation": 590, - "sumPriceToPayAggregation": 590, - "taxAmountAfterCancellation": null - }, - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Air Sonic", - "sumPrice": 1000, - "unitGrossPrice": 1000, - "sumGrossPrice": 1000, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 159, - "sumTaxAmount": 159, - "unitPriceToPayAggregation": 1000, - "sumPriceToPayAggregation": 1000, - "taxAmountAfterCancellation": null - } - ], - "payments": [ - { - "amount": 37217, - "paymentProvider": "DummyMarketplacePayment", - "paymentMethod": "Marketplace Invoice" - } - ], - "shipments": [], - "calculatedDiscounts": { - "10% Discount for all orders above": { - "unitAmount": null, - "sumAmount": 3959, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 2 - } - }, - "bundleItems": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/orders/DE--2?include=merchants" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000002" - }, - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000002", - "attributes": { - "merchantName": "Video King", - "merchantUrl": "/en/merchant/video-king", - "contactPersonRole": "Country Manager DE", - "contactPersonTitle": "Ms", - "contactPersonFirstName": "Martha", - "contactPersonLastName": "Farmer", - "contactPersonPhone": "+31 123 345 678", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-logo.png", - "publicEmail": "hi@video-king.nl", - "publicPhone": "+31 123 345 777", - "description": "Video King is a premium provider of video equipment. In business since 2010, we understand the needs of video professionals and enthusiasts and offer a wide variety of products with competitive prices. ", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/videoking-banner.png", - "deliveryTime": "2-4 days", - "latitude": "4.838470", - "longitude": "51.558107", - "faxNumber": "+31 123 345 733", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Video King

Gilzeweg 24
4854SG Bavel
NL

Phone: +31 123 45 6789
Email: hi@video-king.nl

Represented by
Managing Director: Max Mustermann
Register Court: Amsterdam
Register Number: 1234.4567

", - "dataPrivacy": "Video King values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000002" - } - }, - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "latitude": "13.384458", - "longitude": "52.534105", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - } - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - } - ] -} -``` -
- -#### General order information - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------------ | -------- | --------------------- | -| merchantReferences | Array | Unique identifier of the [merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) | -| itemStates | Array | Statuses of the order’s items in the [state machine](/docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.html). | -| createdAt | String | Date and time when the order was created. | -| currencyIsoCode | String | ISO 4217 code of the currency that was selected when placing the order. | -| priceMode | String | Price mode that was active when placing the order. Possible values:
  • **NET_MODE**—prices before tax.
  • **GROSS_MODE**—prices after tax.
| - -#### Totals calculations - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ----------------- | -------- | --------------- | -| totals | Object | Totals calculations. | -| totals.expenseTotal | Integer | Total amount of expenses (for example,shipping costs). | -| totals.discountTotal | Integer | Total amount of discounts applied. | -| totals.taxTotal | Integer | Total amount of taxes paid. | -| totals.subtotal | Integer | Subtotal of the order. | -| totals.grandTotal | Integer | Grand total of the order | -| totals.canceledTotal | Integer | Total canceled amount. | -| totals.remunerationTotal | Integer | Total sum of remuneration. | - -#### Billing and shipping addresses - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ----------------- | -------- | --------------------------------- | -| billingAddress | object | List of attributes describing the billing address of the order. | -| billingAddress.salutation | String | Salutation to use when addressing the customer. | -| billingAddress.firstName | String | Customer's first name. | -| billingAddress.middleName | String | Customer's middle name. | -| billingAddress.lastName | String | Customer's last name. | -| billingAddress.address1 | String | 1st line of the customer's address. | -| billingAddress.address2 | String | 2nd line of the customer's address. | -| billingAddress.address3 | String | 3rd line of the customer's address. | -| billingAddress.company | String | Specifies the customer's company. | -| billingAddress.city | String | Specifies the city. | -| billingAddress.zipCode | String | ZIP code. | -| billingAddress.poBox | String | PO Box to use for communication. | -| billingAddress.phone | String | Specifies the customer's phone number. | -| billingAddress.cellPhone | String | Mobile phone number. | -| billingAddress.description | String | Address description. | -| billingAddress.comment | String | Address comment. | -| billingAddress.email | String | Email address to use for communication. | -| billingAddress.country | String | Specifies the country. | -| billingAddress.iso2Code | String | ISO 2-Letter Country Code to use. | -| shippingAddress | object | Shipment address of the order. This value is returned only if you submit an order without split delivery. To learn how to do that, see [Checking out purchases in version 202009.0](/docs/scos/dev/glue-api-guides/{{page.version}}/checking-out/checking-out-purchases.html).| - -#### Order item information - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --- | --- | --- | -| items | array | Items in the order. | -| merchantReference | String | Merchant reference in the system. | -| state | String | Defines the state of the item in the state machine. | -| items.name | String | Product name. | -| items.sku | String | Product SKU. | -| items.sumPrice | Integer | Sum of all product prices. | -| items.quantity | Integer | Product quantity ordered. | -| items.unitGrossPrice | Integer | Single item gross price. | -| items.sumGrossPrice | Integer | Sum of items gross price. | -| items.taxRate | Integer | Current tax rate, in percent. | -| items.unitNetPrice | Integer | Single item net price. | -| items.sumNetPrice | Integer | Sum total of net prices for all items. | -| items.unitPrice | Integer | Single item price without assuming if it is new or gross. {% info_block warningBox "Note" %}This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects.{% endinfo_block %} | -| items.unitTaxAmountFullAggregation | Integer | Total tax amount for a given item, with additions. | -| items.sumTaxAmountFullAggregation | Integer | Total tax amount for a given sum of items, with additions. | -| items.refundableAmount | Integer | Available refundable amount for an item (order only). | -| items.canceledAmount | Integer | Total canceled amount for this item (order only). | -| items.sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| items.unitSubtotalAggregation | Integer | Subtotal for the given item. | -| items.unitProductOptionPriceAggregation | Integer | Item total product option price. | -| items.sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| items.unitExpensePriceAggregation | Integer | Item expense total for a given item. | -| items.sumExpensePriceAggregation | Integer | Total amount of expenses for the given items. | -| items.unitDiscountAmountAggregation | Integer | Item total discount amount. | -| items.sumDiscountAmountAggregation | Integer | Sum of Item total discount amounts. | -| items.unitDiscountAmountFullAggregation | Integer | Sum of item total discount amount. | -| items.sumDiscountAmountFullAggregation | Integer | Item total discount amount, with additions. | -| items.unitPriceToPayAggregation | Integer | Item total price to pay after discounts, with additions. | -| items.sumPriceToPayAggregation | Integer | Sum of all prices to pay (after discounts were applied). | -| items.taxRateAverageAggregation | Integer | Item tax rate average, with additions. This value is used when recalculating the tax amount after cancellation. | -| items.taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | -| items.uuid | String | Unique identifier of the item in the order. | -| items.isReturnable | Boolean | Defines if the customer can return the item. | -| items.idShipment | Integer | Unique identifier of the shipment to which the item belongs. To retrieve all the shipments of the order, include the `order-shipments` resource into the request.| -| items.bundleItemIdentifier | Integer | Defines the relation between the bundle and its items. The items of the bundle have the same value in the `relatedBundleItemIdentifier` attribute. {% info_block warningBox "Note" %} Bundle products are not supported in the Marketplace environment.{% endinfo_block %} | -| items.relatedBundleItemIdentifier | Integer | Defines the relation between the item and its bundle. The bundle to which this the item belongs has the same value in the bundleItemIdentifier attribute. | -| items.salesOrderConfiguredBundle | Object | Contains information about the purchased configurable bundle.{% info_block warningBox "Note" %} Configured bundles are not supported for the Marketplace environment.{% endinfo_block %} | -| items.idSalesOrderConfiguredBundle |Integer | Unique identifier of the purchased configured bundle.| -| items.idSalesOrderConfiguredBundle.configurableBundleTemplateUuid|String |Unique identifier of the configurable bundle template in the system. | -| items.idSalesOrderConfiguredBundle.name | String|Name of the configured bundle. | -| items.idSalesOrderConfiguredBundle.quantity | Integer| Quantity of the ordered configurable bundles.| -| items.salesOrderConfiguredBundleItem |Object |Contains information about the items of the configured bundle. | -| items.salesOrderItemConfiguration | String | | -| items.salesUnit | String| Sales unit to be used for the item amount calculation.| -| items.amount | String| | -| items.metadata | object | Metadata of the concrete product. | -| items.metadata.superAttributes | String | [Attributes](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.html) of the order item. | -| items.metadata.image | String | Product image URL. | - - - -#### Calculated discounts for items - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------- | -------- | ------------------------------- | -| items.calculatedDiscounts | Array | List of attributes describing the discount calculated for this item. | -| items.calculatedDiscounts.unitAmount | Integer | Discount value applied to this order item. | -| items.calculatedDiscounts.sumAmount | Integer | Sum of the discount values applied to this order item. | -| items.calculatedDiscounts.displayName | String | Name of the discount applied. | -| items.calculatedDiscounts.description | String | Description of the discount. | -| items.calculatedDiscounts.voucherCode | String | Voucher code redeemed. | -| items.calculatedDiscounts.quantity | String | Number of discounts applied to the product. | - -#### Product options - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------ | -------- | -------------------------- | -| items.productOptions | Array | Lst of product options ordered with this item. | -| items.productOptions.optionGroupName | String | Name of the group to which the product option belongs. | -| items.productOptions.sku | String | SKU of the product option. | -| items.productOptions.optionName | String | Name of the product option. | -| items.productOptions.price | Integer | Price of the product option. | - -#### Calculated discounts - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------- | -------- | --------------------------- | -| calculatedDiscounts | Array | Discounts applied to this order item. | -| calculatedDiscounts.unitAmount | Integer | Amount of the discount provided by the given item for each unit of the product, in cents. | -| calculatedDiscounts.sumAmount | Integer | Total amount of the discount provided by the given item, in cents. | -| calculatedDiscounts.displayName | String | Display name of the given discount. | -| calculatedDiscounts.description | String | Description of the given discount. | -| calculatedDiscounts.voucherCode | String | Voucher code applied, if any. | -| calculatedDiscounts.quantity | String | Number of times the discount was applied. | - -#### Expenses - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------------- | -------- | ---------------------- | -| expenses | array | Additional expenses of the order. | -| expenses.type | String | Expense type. | -| expenses.name | String | Expense name. | -| expenses.sumPrice | Integer | Sum of expenses calculated. | -| expenses.unitGrossPrice | Integer | Single item's gross price. | -| expenses.sumGrossPrice | Integer | Sum of items' gross price. | -| expenses.taxRate | Integer | Current tax rate in percent. | -| expenses.unitNetPrice | Integer | Single item net price. | -| expenses.sumNetPrice | Integer | Sum of items' net price. | -| expenses.canceledAmount | Integer | Total canceled amount for this item (order only). | -| expenses.unitDiscountAmountAggregationexpenses. | Integer | Item total discount amount. | -| expenses.sumDiscountAmountAggregation | Integer | Sum of items' total discount amount. | -| expenses.unitTaxAmount | Integer | Tax amount for a single item, after discounts. | -| expenses.sumTaxAmount | Integer | Tax amount for a sum of items (order only). | -| expenses.unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| expenses.sumPriceToPayAggregation | Integer | Sum of items' total price to pay after discounts with additions. | -| expenses.taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | -| expenses.idShipment | Integer | Unique identifier of the shipment to which this expense belongs. To retrieve all the shipments of the order, include the order-shipments resource in the request. | -| expenses.idSalesExpense | Integer | Unique identifier of the expense. | - - -#### Payments - -| ATTRIBUTE | TYPE | DESCRIPTION | -| payments | Array | A list of payments used in this order. | -| amount | Integer | Amount paid via the corresponding payment provider in cents. | -| paymentProvider | String | Name of the payment provider. | -| paymentMethod | String | Name of the payment method. | - -#### Shipments - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------------ | ----------- | ------------------------ | -| shipments | object | Information about the shipments used in this order. This value is returned only if you submit an order without split delivery. To learn how to do that, see [Checking out purchases in version 202009.0](/docs/scos/dev/glue-api-guides/202009.0/checking-out/checking-out-purchases.html). To see all the attributes that are returned when retrieving orders without split delivery, see [Retrieving orders in version 202009.0](/docs/scos/dev/glue-api-guides/202009.0/retrieving-orders.html). To retrieve shipment details, include the order-shipments resource in the request. | - -| INCLUDED RESOURCE | ATTRIBUTE | TYPE | -| ---------------- | --------------------- | ------ | -| order-shipments | itemUuids | String | -| order-shipments | methodName | String | -| order-shipments | carrierName | String | -| order-shipments | requestedDeliveryDate | Date | -| order-shipments | shippingAddress | Object | -| order-shipments | shippingAddress.salutation | String | -| order-shipments | shippingAddress.firstName | String | -| order-shipments | shippingAddress.middleName | String | Customer's middle name. | -| order-shipments | shippingAddress.lastName | String | Customer's last name. | -| order-shipments | shippingAddress.address1 | String | The 1st line of the customer's address. | -| order-shipments | shippingAddress.address2 | String | The 2nd line of the customer's address. | -| order-shipments | shippingAddress.address3 | String | The 3rd line of the customer's address. | -| order-shipments | shippingAddress.company | String | Specifies the customer's company. | -| order-shipments | shippingAddress.city | String | Specifies the city. | -| order-shipments | shippingAddress.zipCode | String | ZIP code. | -| order-shipments | shippingAddress.poBox | String | PO Box to use for communication. | -| order-shipments | shippingAddress.phone | String | Specifies the customer's phone number. | -| order-shipments | shippingAddress.cellPhone | String | Mobile phone number. | -| order-shipments | shippingAddress.description | String | Address description. | -| order-shipments | shippingAddress.comment | String | Address comment. | -| order-shipments | shippingAddress.email | String | Email address to use for communication. | -| order-shipments | shippingAddress.country | String | Specifies the country. | -| order-shipments | shippingAddress.iso2Code | String | ISO 2-Letter Country Code to use. | - - -For the attributes of other included resources, see [Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/searching-the-product-catalog.md b/docs/marketplace/dev/glue-api-guides/202108.0/searching-the-product-catalog.md deleted file mode 100644 index 9bbd0de2375..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/searching-the-product-catalog.md +++ /dev/null @@ -1,7283 +0,0 @@ ---- -title: Search the product catalog -description: Search the product catalog via Glue API -template: glue-api-storefront-guide-template ---- - -The implementation of the search API offers you the same search experience as in the Spryker Demo Shops. The search engine used is Elasticsearch, and search results go beyond the simple listing of products in the results section. The list of search results is paginated according to your configuration, and spelling suggestions are offered when needed. In addition, sorting and facets are supported to narrow down the search results. -In your development, this endpoint can help you to: - -* Implement catalog search functionality, including the category tree, facets, and pagination. -* Retrieve a list of products to be displayed anywhere you want. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Glue API: Catalog feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-catalog-feature-integration.html#install-feature-api). - -## Search by products - -To search by products, send the request: - ---- -`GET` /**catalog-search** - ---- - -### Request - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| ------------------- | ---------------- | ----------------------- | -| include | Adds resource relationships to the request. | abstract-products | -| q | Restricts the set of the returned items to the provided parameter value. |
  • {% raw %}{{null}}{% endraw %} (empty)
  • {% raw %}{{abstract_product_sku}}{% endraw %}
  • {% raw %}{{abstract_product_name}}
  • {% raw %}{{concrete_product_sku}}{% endraw %}
  • {% raw %}{{product_attribute}}{% endraw %} (brand, color)—to provide multiple product attributes, use `+`
| -| price[min] | Specifies minimum prices of the products | {% raw %}{{minimum_price}}{% endraw %} | -| price[max] | Specifies maximum prices of the products | {% raw %}{{maximum_price}}{% endraw %} | -| brand | Specifies the product brand | {% raw %}{{brand_name}}{% endraw %} | -| label | Specifies the product label | {% raw %}{{label}}{% endraw %} | -| weight | Specifies the product weight | {% raw %}{{weight}}{% endraw %} | -| color | Specifies the product color | {% raw %}{{color}}{% endraw %} | -| storage_capacity[] | Specifies the storage capacity of a product |{% raw %}{{storage_capacity}}{% endraw %} | -| rating[min] | Specifies the minimum rating of a product | {% raw %}{{rating}}{% endraw %} | -| category | Specifies the category to search the products in | {% raw %}{{category_node_id}}{% endraw %}For the category node IDs, retrieve the category tree. | -| currency | Sets a currency | {% raw %}{{currency}}{% endraw %} | -| sort | Sorts the search results | For the list of possible values, run the [catalog search request and find the list under sortParamNames in the response. For the default Spryker Demo Shop sorting parameters, see [Sorting parameters](#sorting). | -| page | Sets the number of the search results page from which the results are retrieved | {% raw %}{{page_number}}{% endraw %} | -| ipp | Sets the number of products per page | {% raw %}{{number_of_products}}{% endraw %} | -| merchant_name | Filters the results by a merchant name. | {% raw %}{{merchnat_name}}{% endraw %} | - - -| REQUEST | USAGE | -| --------------- | -------------- | -| `GET https://glue.mysprykershop.com/catalog-search?q=` | Search for all available products. | -| `GET https://glue.mysprykershop.com/catalog-search?q=058` | Search for an abstract product by SKU *058*. | -| `GET https://glue.mysprykershop.com/catalog-search?q=058&include=abstract-products` | Search for an abstract product by SKU *058* with the included product details. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Acer Liquid Jade` | Search for an abstract product by *Acer Liquid Jade* name. | -| `GET https://glue.mysprykershop.com/catalog-search?q=058_261755504` | Search for a concrete product by SKU *058_261755504*. | -| `GET https://glue.mysprykershop.com/catalog-search?q=sony+red` | Search for products by multiple attributes (brand *Sony* and *red* color). | -| `GET https://glue.mysprykershop.com/catalog-search?q=sony&price%5Bmin%5D=99.99&price%5Bmax%5D=150` | Search for products within a minimum (*99.99*) and maximum (*150*) price range. | -| `GET https://glue.mysprykershop.com/catalog-search?q=sony` | Search for products of the *Sony* brand. | -| `GET https://glue.mysprykershop.com/catalog-search?label[]=NEW&label[]=SALE %` | Search for products with the *NEW* and *SALE* labels. | -| `GET https://glue.mysprykershop.com/catalog-search?weight[]=45 g` | Search for products by the *45 g* weight. | -| `GET https://glue.mysprykershop.com/catalog-search?color[]=Blue` | Search for products by the *Blue* color. | -| `GET https://glue.mysprykershop.com/catalog-search?storage_capacity[]=32 GB` | Search for products by the *32 GB* storage capacity. | -| `GET https://glue.mysprykershop.com/catalog-search?rating[min]=4` | Search for products by the rating *4*. | -| `GET https://glue.mysprykershop.com/catalog-search?category=6` | Search for products by the category node ID *6*. | -| `GET https://glue.mysprykershop.com/catalog-search?currency=CHF` | Define the *CHF* currency for the search result products. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&sort=name_asc` | Set sorting order ascending. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc` | Set sorting order descending. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating` | Sort the found products by rating. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc` | Sort the found products by price ascending. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&page=3` | Set a page to retrieve the search results from. | -| `GET https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24` | Set a number of products per page. | -| `GET https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker` | Filter the results by the *Spryker* merchant name. | -| `GET https://glue.mysprykershop.com/catalog-search?q=001&include=abstract-products,concrete-products,product-offers/` | Search for a product by SKU `001` including its concrete products and product offers. -### Response - - -
-Response sample: search for all available products - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 224, - "currentPage": 1, - "maxPage": 23, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "073", - "price": 43458, - "abstractName": "Samsung Galaxy Note 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 43458, - "DEFAULT": 43458 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21927455-7956.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21927455-7956.jpg" - } - ] - }, - ... - { - "abstractSku": "154", - "price": 22240, - "abstractName": "Lenovo Yoga 500 14", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 22240, - "DEFAULT": 22240 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/31980499_9888.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/31980499_9888.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 224 - }, - { - "value": 5, - "doc_count": 72 - }, - { - "value": 18, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 66 - }, - { - "value": "New", - "doc_count": 5 - }, - { - "value": "Discontinued", - "doc_count": 2 - }, - { - "value": "Alternatives available", - "doc_count": 1 - } - ... - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 82 - }, - { - "value": "White", - "doc_count": 38 - }, - ... - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "32 GB", - "doc_count": 5 - }, - { - "value": "128 GB", - "doc_count": 3 - }, - ... - ], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Samsung", - "doc_count": 46 - }, - { - "value": "Sony", - "doc_count": 43 - }, - ... - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [ - { - "value": "Yes", - "doc_count": 5 - }, - { - "value": "No", - "doc_count": 3 - } - ], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "132 g", - "doc_count": 7 - }, - { - "value": "118 g", - "doc_count": 4 - }, - ... - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 111 - }, - ... - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 0, - "max": 345699, - "activeMin": 0, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 5, - "activeMin": 4, - "activeMax": 5, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 72, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 24, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 20, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 28, - "children": [] - } - ] - }, - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "docCount": 67, - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "docCount": 41, - "children": [] - }, - { - "nodeId": 3, - "name": "Camcorders", - "docCount": 26, - "children": [] - } - ] - }, - ... - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=", - "last": "https://glue.mysprykershop.com/catalog-search?q=&page[offset]=216&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=&page[offset]=12&page[limit]=12" - } -} -``` - -
- - -
-Response sample: search for an abstract product by SKU - -```json -{ -    "data": [ -        { -            "type": "catalog-search", -            "id": null, -            "attributes": { -                "spellingSuggestion": null, -                "sort": { -                    "sortParamNames": [ -                        "rating", -                        "name_asc", -                        "name_desc", -                        "price_asc", -                        "price_desc" -                    ], -                    "sortParamLocalizedNames": { -                        "rating": "Sort by product ratings", -                        "name_asc": "Sort by name ascending", -                        "name_desc": "Sort by name descending", -                        "price_asc": "Sort by price ascending", -                        "price_desc": "Sort by price descending" -                    }, -                    "currentSortParam": null, -                    "currentSortOrder": null -                }, -                "pagination": { -                    "numFound": 1, -                    "currentPage": 1, -                    "maxPage": 1, -                    "currentItemsPerPage": 10, -                    "config": { -                        "parameterName": "page", -                        "itemsPerPageParameterName": "ipp", -                        "defaultItemsPerPage": 10, -                        "validItemsPerPageOptions": [ -                            12, -                            24, -                            36 -                        ] -                    } -                }, -                "abstractProducts": [ -                    { -                        "abstractSku": "058", -                        "price": 26432, -                        "abstractName": "Acer Liquid Jade", -                        "prices": [ -                            { -                                "priceTypeName": "DEFAULT", -                                "currency": { -                                    "code": "EUR", -                                    "symbol": "€", -                                    "name": "Euro" -                                }, -                                "grossAmount": 26432, -                                "DEFAULT": 26432 -                            } -                        ], -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" -                            } -                        ] -                    } -                ], -                "valueFacets": [ -                    { -                        "name": "category", -                        "localizedName": "Categories", -                        "docCount": null, -                        "values": [ -                            { -                                "value": 1, -                                "doc_count": 1 -                            }, -                            { -                                "value": 11, -                                "doc_count": 1 -                            }, -                            { -                                "value": 12, -                                "doc_count": 1 -                            }, -                            { -                                "value": 14, -                                "doc_count": 1 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "category", -                            "isMultiValued": false -                        } -                    }, -                    { -                        "name": "label", -                        "localizedName": "Product Labels", -                        "docCount": null, -                        "values": [], -                        "activeValue": null, -                        "config": { -                            "parameterName": "label", -                            "isMultiValued": true -                        } -                    }, -                    { -                        "name": "color", -                        "localizedName": "Color", -                        "docCount": null, -                        "values": [ -                            { -                                "value": "White", -                                "doc_count": 1 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "color", -                            "isMultiValued": true -                        } -                    }, -                    { -                        "name": "storage_capacity", -                        "localizedName": "Storage Capacity", -                        "docCount": null, -                        "values": [], -                        "activeValue": null, -                        "config": { -                            "parameterName": "storage_capacity", -                            "isMultiValued": true -                        } -                    }, -                    { -                        "name": "brand", -                        "localizedName": "Brand", -                        "docCount": null, -                        "values": [ -                            { -                                "value": "Acer", -                                "doc_count": 1 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "brand", -                            "isMultiValued": false -                        } -                    }, -                    { -                        "name": "touchscreen", -                        "localizedName": "Touchscreen", -                        "docCount": null, -                        "values": [], -                        "activeValue": null, -                        "config": { -                            "parameterName": "touchscreen", -                            "isMultiValued": false -                        } -                    }, -                    { -                        "name": "weight", -                        "localizedName": "Weight", -                        "docCount": null, -                        "values": [], -                        "activeValue": null, -                        "config": { -                            "parameterName": "weight", -                            "isMultiValued": true -                        } -                    }, -                    { -                        "name": "merchant_name", -                        "localizedName": "Merchant", -                        "docCount": null, -                        "values": [ -                            { -                                "value": "Spryker", -                                "doc_count": 1 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "merchant_name", -                            "isMultiValued": true -                        } -                    } -                ], -                "rangeFacets": [ -                    { -                        "name": "price-DEFAULT-EUR-GROSS_MODE", -                        "localizedName": "Price range", -                        "min": 26432, -                        "max": 26432, -                        "activeMin": 26432, -                        "activeMax": 26432, -                        "docCount": null, -                        "config": { -                            "parameterName": "price", -                            "isMultiValued": false -                        } -                    }, -                    { -                        "name": "rating", -                        "localizedName": "Product Ratings", -                        "min": 0, -                        "max": 0, -                        "activeMin": 0, -                        "activeMax": 0, -                        "docCount": null, -                        "config": { -                            "parameterName": "rating", -                            "isMultiValued": false -                        } -                    } -                ], -                "categoryTreeFilter": [ -                    { -                        "nodeId": 5, -                        "name": "Computer", -                        "docCount": 0, -                        "children": [ -                            { -                                "nodeId": 6, -                                "name": "Notebooks", -                                "docCount": 0, -                                "children": [] -                            }, -                            { -                                "nodeId": 7, -                                "name": "Pc's/Workstations", -                                "docCount": 0, -                                "children": [] -                            }, -                            { -                                "nodeId": 8, -                                "name": "Tablets", -                                "docCount": 0, -                                "children": [] -                            } -                        ] -                    }, -                   ... -                    { -                        "nodeId": 16, -                        "name": "Fish", -                        "docCount": 0, -                        "children": [ -                            { -                                "nodeId": 18, -                                "name": "Vegetables", -                                "docCount": 0, -                                "children": [] -                            } -                        ] -                    } -                ] -            }, -            "links": { -                "self": "https://glue.69.demo-spryker.com:80/catalog-search?q=058" -            } -        } -    ], -    "links": { -        "self": "glue.mysprykershop.com/catalog-search?q=058", -        "last": "glue.mysprykershop.com/catalog-search?q=058&page[offset]=0&page[limit]=12", -        "first": "https://glue.mysprykershop.com/catalog-search?q=058&page[offset]=0&page[limit]=12" -    } -} -``` - -
- - -
-Response sample: search for an abstract product by SKU with the included abstract product details - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 1, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "058", - "price": 26432, - "abstractName": "Acer Liquid Jade", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 26432, - "DEFAULT": 26432 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 1 - }, - { - "value": 11, - "doc_count": 1 - }, - { - "value": 12, - "doc_count": 1 - }, - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "White", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Acer", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 26432, - "max": 26432, - "activeMin": 26432, - "activeMax": 26432, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "docCount": 0, - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "docCount": 0, - "children": [] - }, - { - "nodeId": 3, - "name": "Camcorders", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 15, - "name": "Cables", - "docCount": 0, - "children": [] - }, - { - "nodeId": 11, - "name": "Telecom & Navigation", - "docCount": 1, - "children": [ - { - "nodeId": 12, - "name": "Smartphones", - "docCount": 1, - "children": [] - } - ] - }, - { - "nodeId": 9, - "name": "Smart Wearables", - "docCount": 0, - "children": [ - { - "nodeId": 10, - "name": "Smartwatches", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=058&include=abstract-products" - }, - "relationships": { - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "058" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=058&include=abstract-products", - "last": "https://glue.mysprykershop.com/catalog-search?q=058&include=abstract-products&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=058&include=abstract-products&page[offset]=0&page[limit]=12" - }, - "included": [ - { - "type": "abstract-products", - "id": "058", - "attributes": { - "sku": "058", - "averageRating": null, - "reviewCount": 0, - "name": "Acer Liquid Jade", - "description": "Edge Handle Assign a colour and place on People Edge to five of your favourite contacts. Reach out to them at any time by simply swiping inwards from the Edge Handle. When words aren’t enough, send a poke or an emoticon to your People Edge contacts. OnCircle lets you communicate in ways that really count. When it comes to your favourite tracks, sound quality matters. Enjoy rich, balanced audio with Bluetooth audio accessories that support UHQ Audio. Celebrations are always better when you are sharing. Livestream the fun straight from your Galaxy S6 edge+ using the camera’s Live Broadcast function. 4GB RAM and LTE Cat.9 support ensure uninterrupted streaming. No more shaky handheld videos. Video Digital Imaging Stabilisation meets Optical Image Stabilisation to ensure you get clear and steady footage every time.", - "attributes": { - "form_factor": "Bar", - "sim_card_type": "NanoSIM", - "display_type": "IPS", - "internal_ram": "2048 MB", - "brand": "Acer", - "color": "White" - }, - "superAttributesDefinition": [ - "form_factor", - "color" - ], - "superAttributes": { - "series": [ - "Jade Plus", - "Jade Z" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "058_24245592", - "058_26175504" - ], - "super_attributes": { - "series": [ - "Jade Plus", - "Jade Z" - ] - }, - "attribute_variants": { - "series:Jade Plus": { - "id_product_concrete": "058_24245592" - }, - "series:Jade Z": { - "id_product_concrete": "058_26175504" - } - } - }, - "metaTitle": "Acer Liquid Jade", - "metaKeywords": "Acer,Communication Electronics", - "metaDescription": "Edge Handle Assign a colour and place on People Edge to five of your favourite contacts. Reach out to them at any time by simply swiping inwards from the E", - "attributeNames": { - "form_factor": "Form factor", - "sim_card_type": "SIM card type", - "display_type": "Display type", - "internal_ram": "Internal RAM", - "brand": "Brand", - "color": "Color", - "series": "Series" - }, - "url": "/en/acer-liquid-jade-58" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/058" - } - } - ] -} -``` - -
- - -
-Response sample: search for a concrete product by SKU - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 1, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "058", - "price": 26432, - "abstractName": "Acer Liquid Jade", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 26432, - "DEFAULT": 26432 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_24245592_medium_1483521161_4318_9985.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24245592-2688.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 1 - }, - { - "value": 11, - "doc_count": 1 - }, - { - "value": 12, - "doc_count": 1 - }, - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "White", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Acer", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 26432, - "max": 26432, - "activeMin": 26432, - "activeMax": 26432, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=058_26175504" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=058_26175504", - "last": "https://glue.mysprykershop.com/catalog-search?q=058_26175504&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=058_26175504&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by multiple attributes - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 70, - "currentPage": 1, - "maxPage": 7, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "108", - "price": 17774, - "abstractName": "Sony SW2 SmartWatch", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 17774, - "DEFAULT": 17774 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_21047360_medium_1482828045_101_30852.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21047360-4814.jpg" - } - ] - }, - { - "abstractSku": "027", - "price": 4900, - "abstractName": "Sony Cyber-shot DSC-WX500", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 4900, - "DEFAULT": 4900 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 5200, - "ORIGINAL": 5200 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/7822599-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/7822599-Sony.jpg" - } - ] - }, - { - "abstractSku": "001", - "price": 9999, - "abstractName": "Canon IXUS 160", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9999, - "DEFAULT": 9999 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 12564, - "ORIGINAL": 12564 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904006-8438.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904006-8438.jpg" - } - ] - }, - ... - { - "abstractSku": "196", - "price": 24940, - "abstractName": "Sony HDR-AS20", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 24940, - "DEFAULT": 24940 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/23120327-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/23120327-Sony.jpg" - } - ] - }, - { - "abstractSku": "197", - "price": 23010, - "abstractName": "Sony HDR-AS20", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 23010, - "DEFAULT": 23010 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21421718-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21421718-Sony.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 70 - }, - { - "value": 2, - "doc_count": 32 - }, - { - "value": 4, - "doc_count": 20 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 21 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 26 - }, - { - "value": "White", - "doc_count": 15 - }, - { - "value": "Red", - "doc_count": 8 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "8 GB", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Sony", - "doc_count": 43 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [ - { - "value": "Yes", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "45 g", - "doc_count": 4 - }, - { - "value": "58 g", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 38 - }, - { - "value": "Video King", - "doc_count": 35 - }, - { - "value": "Sony Experts", - "doc_count": 29 - }, - { - "value": "Budget Cameras", - "doc_count": 20 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 1250, - "max": 345699, - "activeMin": 1250, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 19, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony Red" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony Red", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony Red&page[offset]=60&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony Red&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=Sony Red&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products within a minimum and maximum price range - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 7, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "200", - "price": 13865, - "abstractName": "Sony HXR-MC50E", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 13865, - "DEFAULT": 13865 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/5787536_8636.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/5787536_8636.jpg" - } - ] - }, - { - "abstractSku": "077", - "price": 14554, - "abstractName": "Sony Xperia Z3 Compact", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 14554, - "DEFAULT": 14554 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 15000, - "ORIGINAL": 15000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24584210-216.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24584210-216.jpg" - } - ] - }, - { - "abstractSku": "016", - "price": 9999, - "abstractName": "Sony Cyber-shot DSC-W800", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9999, - "DEFAULT": 9999 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21748907-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21748907-Sony.jpg" - } - ] - } - ... - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 7 - }, - ... - { - "value": 12, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 3 - }, - { - "value": "Blue", - "doc_count": 1 - }, - { - "value": "Purple", - "doc_count": 1 - }, - { - "value": "Silver", - "doc_count": 1 - }, - { - "value": "White", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Sony", - "doc_count": 7 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 6 - }, - { - "value": "Sony Experts", - "doc_count": 5 - }, - { - "value": "Video King", - "doc_count": 5 - }, - { - "value": "Budget Cameras", - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 9999, - "activeMax": 15000, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "docCount": 5, - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "docCount": 4, - "children": [] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&price[min]=99.99&price[max]=150" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&price[min]=99.99&price[max]=150", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony&price[min]=99.99&price[max]=150&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony&price[min]=99.99&price[max]=150&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by brand - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "210", - "price": 100000, - "abstractName": "Sony Bundle", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 100000, - "DEFAULT": 100000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/23120327-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/23120327-Sony.jpg" - } - ] - }, - ... - { - "abstractSku": "093", - "price": 24899, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 24899, - "DEFAULT": 24899 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495843-7844.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495843-7844.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 14 - }, - ... - { - "value": "Purple", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "8 GB", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Samsung", - "doc_count": 46 - }, - ... - { - "value": "Toshiba", - "doc_count": 5 - } - ], - "activeValue": "Sony", - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "45 g", - "doc_count": 4 - }, - { - "value": "58 g", - "doc_count": 2 - }, - { - "value": "63.5 g", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 30 - }, - ... - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "glue.mysprykershop.com/catalog-search?brand=Sony" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?brand=Sony", - "last": "https://glue.mysprykershop.com/catalog-search?brand=Sony&page[offset]=36&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?brand=Sony&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?brand=Sony&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by labels - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 66, - "currentPage": 1, - "maxPage": 7, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "060", - "price": 41837, - "abstractName": "Acer Liquid Jade", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 41837, - "DEFAULT": 41837 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/26027598-6953.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/26027598-6953.jpg" - } - ] - }, - ... - { - "abstractSku": "031", - "price": 40024, - "abstractName": "Canon PowerShot G9 X", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 40024, - "DEFAULT": 40024 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 41000, - "ORIGINAL": 41000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30021637_4678.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30021637_4678.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 66 - }, - ... - { - "value": 15, - "doc_count": 3 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 66 - }, - ... - { - "value": "Alternatives available", - "doc_count": 1 - } - ], - "activeValue": [ - "NEW", - "SALE %" - ], - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 20 - }, - ... - { - "value": "Gold", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 33 - }, - { - "value": "Video King", - "doc_count": 18 - }, - { - "value": "Budget Cameras", - "doc_count": 12 - }, - { - "value": "Sony Experts", - "doc_count": 9 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 162, - "max": 95000, - "activeMin": 162, - "activeMax": 95000, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 20, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 4, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 8, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 8, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?label[0]=NEW&label[1]=SALE %" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?label[0]=NEW&label[1]=SALE %", - "last": "https://glue.mysprykershop.com/catalog-search?label[0]=NEW&label[1]=SALE %&page[offset]=60&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?label[0]=NEW&label[1]=SALE %&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?label[0]=NEW&label[1]=SALE %&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by weight - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 4, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "090", - "price": 20160, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 20160, - "DEFAULT": 20160 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery/26219658_3401.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_mediums/img_26219658_medium_1483953936_4642_16454.jpg" - } - ] - }, - ... - { - "abstractSku": "093", - "price": 24899, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 24899, - "DEFAULT": 24899 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495843-7844.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495843-7844.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 4 - }, - { - "value": 9, - "doc_count": 4 - }, - { - "value": 10, - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Silver", - "doc_count": 2 - }, - { - "value": "Black", - "doc_count": 1 - }, - { - "value": "White", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Sony", - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "132 g", - "doc_count": 7 - }, - ... - { - "value": "22.39 oz", - "doc_count": 2 - } - ], - "activeValue": [ - "45 g" - ], - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 17459, - "max": 24899, - "activeMin": 17459, - "activeMax": 24899, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?weight[0]=45 g" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?weight[0]=45 g", - "last": "https://glue.mysprykershop.com/catalog-search?weight[0]=45 g&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?weight[0]=45 g&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by color - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 10, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "068", - "price": 8005, - "abstractName": "Samsung Galaxy S5", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 8005, - "DEFAULT": 8005 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9000, - "ORIGINAL": 9000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21927453-1632.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21927453-1632.jpg" - } - ] - }, - ... - { - "abstractSku": "005", - "price": 7000, - "abstractName": "Canon IXUS 175", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 7000, - "DEFAULT": 7000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30663301_9631.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30663301_9631.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 10 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 2 - }, - { - "value": "New", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 82 - }, - { - "value": "White", - "doc_count": 38 - }, - { - "value": "Silver", - "doc_count": 20 - }, - { - "value": "Blue", - "doc_count": 10 - }, - ... - ], - "activeValue": [ - "Blue" - ], - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Samsung", - "doc_count": 3 - }, - ... - { - "value": "TomTom", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [ - { - "value": "Yes", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "18 g", - "doc_count": 2 - }, - { - "value": "132 g", - "doc_count": 1 - }, - { - "value": "20 g", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 9 - }, - { - "value": "Budget Cameras", - "doc_count": 2 - }, - { - "value": "Video King", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 6277, - "max": 39353, - "activeMin": 6277, - "activeMax": 39353, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 1, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - ... - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?color[0]=Blue" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?color[0]=Blue", - "last": "https://glue.mysprykershop.com/catalog-search?color[0]=Blue&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?color[0]=Blue&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response: search for products by storage capacity - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 5, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "051", - "price": 12428, - "abstractName": "Samsung Galaxy S6 edge", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 12428, - "DEFAULT": 12428 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 13000, - "ORIGINAL": 13000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29567823_6321.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/29567823_6321.jpg" - } - ] - }, - ... - { - "abstractSku": "053", - "price": 40651, - "abstractName": "Samsung Galaxy S6 edge", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 40651, - "DEFAULT": 40651 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30614390_2538.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30614390_2538.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 5 - }, - { - "value": 11, - "doc_count": 5 - }, - { - "value": 14, - "doc_count": 5 - }, - { - "value": 12, - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - ... - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "32 GB", - "doc_count": 5 - }, - { - "value": "128 GB", - "doc_count": 3 - }, - { - "value": "64 GB", - "doc_count": 3 - }, - { - "value": "16 GB", - "doc_count": 2 - }, - { - "value": "8 GB", - "doc_count": 1 - } - ], - "activeValue": [ - "32 GB" - ], - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 4 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 9002, - "max": 43458, - "activeMin": 9002, - "activeMax": 43458, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?storage_capacity[0]=32 GB" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?storage_capacity[0]=32 GB", - "last": "https://glue.mysprykershop.com/catalog-search?storage_capacity[0]=32 GB&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?storage_capacity[0]=32 GB&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by rating - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 5, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "139", - "price": 3454, - "abstractName": "Asus Transformer Book T200TA", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 3454, - "DEFAULT": 3454 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24699831-1991.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24699831-1991.jpg" - } - ] - }, -... - { - "abstractSku": "093", - "price": 24899, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 24899, - "DEFAULT": 24899 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495843-7844.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495843-7844.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 5 - }, - ... - { - "value": 10, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 4 - }, - { - "value": "Budget Cameras", - "doc_count": 1 - }, - { - "value": "Sony Experts", - "doc_count": 1 - }, - { - "value": "Video King", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3454, - "max": 39353, - "activeMin": 3454, - "activeMax": 39353, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 5, - "activeMin": 4, - "activeMax": 5, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 1, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?rating[min]=4" - } - } - ], - "links": { - "self": "glue.mysprykershop.com/catalog-search?rating[min]=4", - "last": "glue.mysprykershop.com/catalog-search?rating[min]=4&page[offset]=0&page[limit]=12", - "first": "glue.mysprykershop.com/catalog-search?rating[min]=4&page[offset]=0&page[limit]=12" - } -} -``` -
- - -
-Response sample: search for products by the category node ID - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 24, - "currentPage": 1, - "maxPage": 3, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "134", - "price": 1879, - "abstractName": "Acer Aspire S7", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 1879, - "DEFAULT": 1879 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 2000, - "ORIGINAL": 2000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/29759322_2351.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_raw/29759322_2351.png" - } - ] - }, - ... - { - "abstractSku": "142", - "price": 21192, - "abstractName": "Asus Zenbook US303UB", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 21192, - "DEFAULT": 21192 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_lows/30943081_4685.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30943081_4685.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - ... - { - "value": 6, - "doc_count": 24 - }, - ... - { - "value": 18, - "doc_count": 1 - } - ], - "activeValue": "6", - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 1879, - "max": 44182, - "activeMin": 1879, - "activeMax": 44182, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 24, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 24, - "children": [] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?category=6" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?category=6", - "last": "https://glue.mysprykershop.com/catalog-search?category=6&page[offset]=12&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?category=6&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?category=6&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: define the currency for the search result products - -```json -{ -    "data": [ -        { -            "type": "catalog-search", -            "id": null, -            "attributes": { -                "spellingSuggestion": null, -                "sort": { -                    "sortParamNames": [ -                        "rating", -                        "name_asc", -                        "name_desc", -                        "price_asc", -                        "price_desc" -                    ], -                    "sortParamLocalizedNames": { -                        "rating": "Sort by product ratings", -                        "name_asc": "Sort by name ascending", -                        "name_desc": "Sort by name descending", -                        "price_asc": "Sort by price ascending", -                        "price_desc": "Sort by price descending" -                    }, -                    "currentSortParam": null, -                    "currentSortOrder": null -                }, -                "pagination": { -                    "numFound": 220, -                    "currentPage": 1, -                    "maxPage": 22, -                    "currentItemsPerPage": 10, -                    "config": { -                        "parameterName": "page", -                        "itemsPerPageParameterName": "ipp", -                        "defaultItemsPerPage": 10, -                        "validItemsPerPageOptions": [ -                            12, -                            24, -                            36 -                        ] -                    } -                }, -                "abstractProducts": [ -                    { -                        "abstractSku": "060", -                        "price": 48113, -                        "abstractName": "Acer Liquid Jade", -                        "prices": [ -                            { -                                "priceTypeName": "DEFAULT", -                                "currency": { -                                    "code": "CHF", -                                    "symbol": "CHF", -                                    "name": "Swiss Franc" -                                }, -                                "grossAmount": 48113, -                                "DEFAULT": 48113 -                            } -                        ], -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/26027598-6953.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/norm/high/26027598-6953.jpg" -                            } -                        ] -                    }, -                  ... -                            { -                                "priceTypeName": "ORIGINAL", -                                "currency": { -                                    "code": "CHF", -                                    "symbol": "CHF", -                                    "name": "Swiss Franc" -                                }, -                                "grossAmount": 47150, -                                "ORIGINAL": 47150 -                            } -                        ], -                        "images": [ -                            { -                                "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30021637_4678.jpg", -                                "externalUrlLarge": "https://images.icecat.biz/img/gallery/30021637_4678.jpg" -                            } -                        ] -                    } -                ], -                "valueFacets": [ -                    { -                        "name": "category", -                        "localizedName": "Categories", -                        "docCount": null, -                        "values": [ -                            { -                                "value": 1, -                                "doc_count": 220 -                            }, -                           ... -                            { -                                "value": 17, -                                "doc_count": 1 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "category", -                            "isMultiValued": false -                        } -                    }, -                   ... -                    { -                        "name": "merchant_name", -                        "localizedName": "Merchant", -                        "docCount": null, -                        "values": [ -                            { -                                "value": "Spryker", -                                "doc_count": 110 -                            }, -                            { -                                "value": "Video King", -                                "doc_count": 66 -                            }, -                            { -                                "value": "Budget Cameras", -                                "doc_count": 37 -                            }, -                            { -                                "value": "Sony Experts", -                                "doc_count": 26 -                            } -                        ], -                        "activeValue": null, -                        "config": { -                            "parameterName": "merchant_name", -                            "isMultiValued": true -                        } -                    } -                ], -                "rangeFacets": [ -                    { -                        "name": "price-DEFAULT-CHF-GROSS_MODE", -                        "localizedName": "Price range", -                        "min": 0, -                        "max": 397554, -                        "activeMin": 0, -                        "activeMax": 397554, -                        "docCount": null, -                        "config": { -                            "parameterName": "price", -                            "isMultiValued": false -                        } -                    }, -                    { -                        "name": "rating", -                        "localizedName": "Product Ratings", -                        "min": 4, -                        "max": 5, -                        "activeMin": 4, -                        "activeMax": 5, -                        "docCount": null, -                        "config": { -                            "parameterName": "rating", -                            "isMultiValued": false -                        } -                    } -                ], -                "categoryTreeFilter": [ -                    { -                        "nodeId": 5, -                        "name": "Computer", -                        "docCount": 72, -                        "children": [ -                            { -                                "nodeId": 6, -                                "name": "Notebooks", -                                "docCount": 24, -                                "children": [] -                            }, -                            { -                                "nodeId": 7, -                                "name": "Pc's/Workstations", -                                "docCount": 20, -                                "children": [] -                            }, -                            { -                                "nodeId": 8, -                                "name": "Tablets", -                                "docCount": 28, -                                "children": [] -                            } -                        ] -                    }, -                    ... -                    { -                        "nodeId": 16, -                        "name": "Fish", -                        "docCount": 0, -                        "children": [ -                            { -                                "nodeId": 18, -                                "name": "Vegetables", -                                "docCount": 0, -                                "children": [] -                            } -                        ] -                    } -                ] -            }, -            "links": { -                "self": "https://glue.mysprykershop.com/catalog-search?currency=CHF" -            } -        } -    ], -    "links": { -        "self": "https://glue.mysprykershop.com/catalog-search?currency=CHF", -        "last": "https://glue.mysprykershop.com/catalog-search?currency=CHF&page[offset]=216&page[limit]=12", -        "first": "https://glue.mysprykershop.com/catalog-search?currency=CHF&page[offset]=0&page[limit]=12", -        "next": "https://glue.mysprykershop.com/catalog-search?currency=CHF&page[offset]=12&page[limit]=12" -    } -} -``` -
- - -
-Response sample: set sorting order ascending in the search results - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": "name_asc", - "currentSortOrder": "asc" - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "210", - "price": 100000, - "abstractName": "Sony Bundle", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 100000, - "DEFAULT": 100000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/23120327-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/23120327-Sony.jpg" - } - ] - }, - { - "abstractSku": "016", - "price": 9999, - "abstractName": "Sony Cyber-shot DSC-W800", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9999, - "DEFAULT": 9999 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21748907-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21748907-Sony.jpg" - } - ] - }, - { - "abstractSku": "017", - "price": 345699, - "abstractName": "Sony Cyber-shot DSC-W800", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 345699, - "DEFAULT": 345699 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21748906-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21748906-Sony.jpg" - } - ] - }, - { - "abstractSku": "020", - "price": 10580, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10580, - "DEFAULT": 10580 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10599, - "ORIGINAL": 10599 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081478-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081478-Sony.jpg" - } - ] - }, - { - "abstractSku": "019", - "price": 9999, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9999, - "DEFAULT": 9999 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081473-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081473-Sony.jpg" - } - ] - }, - { - "abstractSku": "021", - "price": 10680, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10680, - "DEFAULT": 10680 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081475-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081475-Sony.jpg" - } - ] - }, - ... - { - "abstractSku": "024", - "price": 44500, - "abstractName": "Sony Cyber-shot DSC-WX350", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 44500, - "DEFAULT": 44500 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 45500, - "ORIGINAL": 45500 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21987578-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21987578-Sony.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 14 - }, - ... - { - "value": "Purple", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "8 GB", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=name_asc" - } - } - ], - "links": { - "self": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_asc", - "last": "glue.mysprykershop.comc/atalog-search?q=Sony&sort=name_asc&page[offset]=36&page[limit]=12", - "first": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_asc&page[offset]=0&page[limit]=12", - "next": "glue.mysprykershop.comc/atalog-search?q=Sony&sort=name_asc&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: set sorting order descending in the search results - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": "name_desc", - "currentSortOrder": "desc" - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "077", - "price": 14554, - "abstractName": "Sony Xperia Z3 Compact", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 14554, - "DEFAULT": 14554 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 15000, - "ORIGINAL": 15000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24584210-216.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24584210-216.jpg" - } - ] - }, - { - "abstractSku": "076", - "price": 35711, - "abstractName": "Sony Xperia Z3 Compact", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 35711, - "DEFAULT": 35711 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24394207-3552.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24394207-3552.jpg" - } - ] - }, - ... - { - "abstractSku": "080", - "price": 25214, - "abstractName": "Sony Xperia Z3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 25214, - "DEFAULT": 25214 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 26000, - "ORIGINAL": 26000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24394206-8583.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24394206-8583.jpg" - } - ] - }, - ... - { - "abstractSku": "090", - "price": 20160, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 20160, - "DEFAULT": 20160 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery/26219658_3401.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery_mediums/img_26219658_medium_1483953936_4642_16454.jpg" - } - ] - }, - ... - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc" - } - } - ], - "links": { - "self": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc", - "last": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc&page[offset]=36&page[limit]=12", - "first": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc&page[offset]=0&page[limit]=12", - "next": "glue.mysprykershop.com/catalog-search?q=Sony&sort=name_desc&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: sort the found products by rating - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": "rating", - "currentSortOrder": "desc" - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "093", - "price": 24899, - "abstractName": "Sony SmartWatch 3", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 24899, - "DEFAULT": 24899 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24495843-7844.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24495843-7844.jpg" - } - ] - }, - { - "abstractSku": "078", - "price": 25584, - "abstractName": "Sony Xperia Z3 Compact", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 25584, - "DEFAULT": 25584 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/24602396-8292.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/24602396-8292.jpg" - } - ] - }, - { - "abstractSku": "020", - "price": 10580, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10580, - "DEFAULT": 10580 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10599, - "ORIGINAL": 10599 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081478-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081478-Sony.jpg" - } - ] - }, - { - "abstractSku": "024", - "price": 44500, - "abstractName": "Sony Cyber-shot DSC-WX350", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 44500, - "DEFAULT": 44500 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 45500, - "ORIGINAL": 45500 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21987578-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21987578-Sony.jpg" - } - ] - }, - ... - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating&page[offset]=36&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=rating&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: sort the found products by price ascending - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": "price_asc", - "currentSortOrder": "asc" - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "028", - "price": 3000, - "abstractName": "Sony Cyber-shot DSC-WX500", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 3000, - "DEFAULT": 3000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/7822598-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/7822598-Sony.jpg" - } - ] - }, - { - "abstractSku": "202", - "price": 3918, - "abstractName": "Sony NEX-VG20EH", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 3918, - "DEFAULT": 3918 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 5000, - "ORIGINAL": 5000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/5782479-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/5782479-Sony.jpg" - } - ] - }, - ... - { - "abstractSku": "020", - "price": 10580, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10580, - "DEFAULT": 10580 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10599, - "ORIGINAL": 10599 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081478-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081478-Sony.jpg" - } - ] - }, - { - "abstractSku": "021", - "price": 10680, - "abstractName": "Sony Cyber-shot DSC-W830", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 10680, - "DEFAULT": 10680 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21081475-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21081475-Sony.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc&page[offset]=36&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=Sony&sort=price_asc&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: set a page to retrieve the search results from - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 43, - "currentPage": 3, - "maxPage": 5, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "029", - "price": 41024, - "abstractName": "Sony Cyber-shot DSC-WX500", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 41024, - "DEFAULT": 41024 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 42000, - "ORIGINAL": 42000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/low/7822600-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/medium/7822600-Sony.jpg" - } - ] - }, - ... - { - "abstractSku": "111", - "price": 19568, - "abstractName": "Sony SmartWatch", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 19568, - "DEFAULT": 19568 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/img_12295890_medium_1481715683_8105_13110.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/15743_12295890-6463.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&page=3" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&page=3", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony&page[offset]=36&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=Sony&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: set a number of products per page - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 43, - "currentPage": 1, - "maxPage": 2, - "currentItemsPerPage": 24, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "202", - "price": 3918, - "abstractName": "Sony NEX-VG20EH", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 3918, - "DEFAULT": 3918 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 5000, - "ORIGINAL": 5000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/5782479-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/5782479-Sony.jpg" - } - ] - }, - ... - { - "abstractSku": "023", - "price": 26723, - "abstractName": "Sony Cyber-shot DSC-WX220", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 26723, - "DEFAULT": 26723 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/21758366-Sony.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/21758366-Sony.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 43 - }, - ... - { - "value": 14, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 10 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 14 - }, - { - "value": "White", - "doc_count": 11 - }, - { - "value": "Silver", - "doc_count": 5 - }, - { - "value": "Grey", - "doc_count": 2 - }, - { - "value": "Pink", - "doc_count": 2 - }, - { - "value": "Red", - "doc_count": 2 - }, - { - "value": "Blue", - "doc_count": 1 - }, - { - "value": "Gold", - "doc_count": 1 - }, - { - "value": "Purple", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - ... - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 29 - }, - { - "value": "Sony Experts", - "doc_count": 26 - }, - { - "value": "Video King", - "doc_count": 26 - }, - { - "value": "Budget Cameras", - "doc_count": 14 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 3000, - "max": 345699, - "activeMin": 3000, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 4, - "activeMin": 4, - "activeMax": 4, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 1, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 1, - "children": [] - } - ] - }, - ... - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24", - "last": "https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24&page[offset]=36&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?q=Sony&ipp=24&page[offset]=12&page[limit]=12" - } -} -``` -
- - -
-Response sample: filter the results by the merchant name - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 110, - "currentPage": 1, - "maxPage": 11, - "currentItemsPerPage": 10, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 10, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "060", - "price": 41837, - "abstractName": "Acer Liquid Jade", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 41837, - "DEFAULT": 41837 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/26027598-6953.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/26027598-6953.jpg" - } - ] - }, - ... - { - "abstractSku": "031", - "price": 40024, - "abstractName": "Canon PowerShot G9 X", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 40024, - "DEFAULT": 40024 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 41000, - "ORIGINAL": 41000 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/gallery_mediums/30021637_4678.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/gallery/30021637_4678.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 110 - }, - ... - { - "value": 14, - "doc_count": 8 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 33 - }, - { - "value": "New", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 37 - }, - ... - { - "value": "Purple", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [ - { - "value": "32 GB", - "doc_count": 4 - }, - ... - { - "value": "16 GB", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Samsung", - "doc_count": 32 - }, - ... - { - "value": "Hannspree", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [ - { - "value": "Yes", - "doc_count": 5 - }, - { - "value": "No", - "doc_count": 3 - } - ], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "132 g", - "doc_count": 7 - }, - ... - { - "value": "63.5 g", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Spryker", - "doc_count": 110 - }, - { - "value": "Video King", - "doc_count": 66 - }, - { - "value": "Budget Cameras", - "doc_count": 37 - }, - { - "value": "Sony Experts", - "doc_count": 26 - } - ], - "activeValue": "Spryker", - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 1879, - "max": 345699, - "activeMin": 1879, - "activeMax": 345699, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 4, - "max": 5, - "activeMin": 4, - "activeMax": 5, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "docCount": 41, - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "docCount": 41, - "children": [] - }, - { - "nodeId": 3, - "name": "Camcorders", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 15, - "name": "Cables", - "docCount": 0, - "children": [] - }, - { - "nodeId": 11, - "name": "Telecom & Navigation", - "docCount": 38, - "children": [ - { - "nodeId": 12, - "name": "Smartphones", - "docCount": 38, - "children": [] - } - ] - }, - { - "nodeId": 9, - "name": "Smart Wearables", - "docCount": 31, - "children": [ - { - "nodeId": 10, - "name": "Smartwatches", - "docCount": 31, - "children": [] - } - ] - }, - { - "nodeId": 16, - "name": "Fish", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker", - "last": "https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker&page[offset]=108&page[limit]=12", - "first": "https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker&page[offset]=0&page[limit]=12", - "next": "https://glue.mysprykershop.com/catalog-search?merchant_name=Spryker&page[offset]=12&page[limit]=12" - } -} -``` -
- -
-Response sample: search for a product by SKU including its concrete products and product offers - -```json -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "spellingSuggestion": null, - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc", - "popularity" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending", - "popularity": "Sort by popularity" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 1, - "currentPage": 1, - "maxPage": 1, - "currentItemsPerPage": 12, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 12, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "abstractSku": "001", - "price": 9999, - "abstractName": "Canon IXUS 160", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 9999, - "DEFAULT": 9999 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "symbol": "€", - "name": "Euro" - }, - "grossAmount": 12564, - "ORIGINAL": 12564 - } - ], - "images": [ - { - "externalUrlSmall": "https://images.icecat.biz/img/norm/medium/25904006-8438.jpg", - "externalUrlLarge": "https://images.icecat.biz/img/norm/high/25904006-8438.jpg" - } - ] - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 1 - }, - { - "value": 2, - "doc_count": 1 - }, - { - "value": 4, - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Product Labels", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "merchant_name", - "localizedName": "Merchant", - "docCount": null, - "values": [ - { - "value": "Budget Cameras", - "doc_count": 1 - }, - { - "value": "Spryker", - "doc_count": 1 - }, - { - "value": "Video King", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "merchant_name", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price range", - "min": 9999, - "max": 9999, - "activeMin": 9999, - "activeMax": 9999, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Product Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "categoryTreeFilter": [ - { - "nodeId": 5, - "name": "Computer", - "docCount": 0, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "docCount": 0, - "children": [] - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "docCount": 0, - "children": [] - }, - { - "nodeId": 8, - "name": "Tablets", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 2, - "name": "Cameras & Camcorders", - "docCount": 1, - "children": [ - { - "nodeId": 4, - "name": "Digital Cameras", - "docCount": 1, - "children": [] - }, - { - "nodeId": 3, - "name": "Camcorders", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 11, - "name": "Telecom & Navigation", - "docCount": 0, - "children": [ - { - "nodeId": 12, - "name": "Smartphones", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 15, - "name": "Cables", - "docCount": 0, - "children": [] - }, - { - "nodeId": 16, - "name": "Food", - "docCount": 0, - "children": [ - { - "nodeId": 18, - "name": "Fish", - "docCount": 0, - "children": [] - }, - { - "nodeId": 19, - "name": "Vegetables", - "docCount": 0, - "children": [] - } - ] - }, - { - "nodeId": 9, - "name": "Smart Wearables", - "docCount": 0, - "children": [ - { - "nodeId": 10, - "name": "Smartwatches", - "docCount": 0, - "children": [] - } - ] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/catalog-search" - }, - "relationships": { - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "001" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/access-tokens?q=001&include=abstract-products,concrete-products,product-offers", - "last": "https://glue.mysprykershop.com/access-tokens?q=001&include=abstract-products,concrete-products,product-offers&page[offset]=0&page[limit]=12", - "first": "https://glue.mysprykershop.com/access-tokens?q=001&include=abstract-products,concrete-products,product-offers&page[offset]=0&page[limit]=12" - }, - "included": [ - { - "type": "product-offers", - "id": "offer8", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer8" - } - }, - { - "type": "product-offers", - "id": "offer49", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer49" - } - }, - { - "type": "concrete-products", - "id": "001_25904006", - "attributes": { - "sku": "001_25904006", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "001", - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/001_25904006" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer8" - }, - { - "type": "product-offers", - "id": "offer49" - } - ] - }, - "abstract-products": { - "data": [ - { - "type": "abstract-products", - "id": "001" - } - ] - } - } - }, - { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "merchantReference": "MER000001", - "averageRating": null, - "reviewCount": 0, - "name": "Canon IXUS 160", - "description": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results while framing using Live View Control and enjoy sharing them with friends using the 6.8 cm (2.7”) LCD screen. Combine with a Canon Connect Station and you can easily share your photos and movies with the world on social media sites and online albums like irista, plus enjoy watching them with family and friends on an HD TV. Effortlessly enjoy great shots of friends thanks to Face Detection technology. It detects multiple faces in a single frame making sure they remain in focus and with optimum brightness. Face Detection also ensures natural skin tones even in unusual lighting conditions.", - "attributes": { - "megapixel": "20 MP", - "flash_range_tele": "4.2-4.9 ft", - "memory_slots": "1", - "usb_version": "2", - "brand": "Canon", - "color": "Red" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": { - "color": [ - "Red" - ] - }, - "attributeMap": { - "product_concrete_ids": [ - "001_25904006" - ], - "super_attributes": { - "color": [ - "Red" - ] - }, - "attribute_variants": [], - "attribute_variant_map": { - "1": [] - } - }, - "metaTitle": "Canon IXUS 160", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Add a personal touch Make shots your own with quick and easy control over picture settings such as brightness and colour intensity. Preview the results whi", - "attributeNames": { - "megapixel": "Megapixel", - "flash_range_tele": "Flash range (tele)", - "memory_slots": "Memory slots", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - }, - "url": "/en/canon-ixus-160-1" - }, - "links": { - "self": "https://glue.mysprykershop.com/abstract-products/001" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "001_25904006" - } - ] - } - } - } - ] -} -``` -
- - - -**Sorting parameters** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------------- | -------- | ----------------------- | -| sortParamNames | Array | Sorting parameters. The default Spryker Demo Shop parameters:
  • `rating`—sorting by product rating.
  • `name_asc`—sorting by name, ascending.
  • `name_desc`—sorting by name, descending.
  • `price_asc`—sorting by price, ascending.
  • `price_desc`—sorting by price, descending.
| -| sortParamLocalizedNames | Object | Localized names of the sorting parameters. | -| currentSortParam | String | The currently applied sorting parameter. | -| currentSortOrder | String | The current sorting order. | - -**Pagination** - -| ATTRIBUTE |TYPE | DESCRIPTION | -| --------- | -------- | ---------- | -| pagination.pagination | Object | Attributes that define the pagination. | -| pagination.numFound | Integer | Number of the search results found. | -| pagination.currentPage | Integer | The current search results page. | -| pagination.maxPage | Integer | Total number of the search results pages. | -| pagination.currentItemsPerPage | Integer | Current number of the search results per page. | -| pagination.parameterName | String | Parameter name for setting the page number. | -| pagination.itemsPerPageParameterName | String | Parameter name for setting number of items per page. | -| pagination.defaultItemsPerPage | Integer | Default number of items per one search results page. | -| pagination.validItemsPerPageOptions | Array | Options for numbers per search results page. | - -**Abstract products** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ---------- | -------- | --------------- | -| abstractProducts | Array | Abstract products in the search results. | -| abstractProducts.abstractSku | String | Unique identifier of the abstract product. | -| abstractProducts.price | Integer | Price to pay for that product in cents. | -| abstractProducts.abstractName | String | Abstract product name. | -| abstractProducts.images | Array | Product images of the abstract product. | -| abstractProducts.prices | Integer | Attributes describing the abstract product's price. | -| abstractProducts.prices.priceTypeName | String | Price type. | -| abstractProducts.prices.currency | String | Attributes describing the currency of the abstract product's price. | -| abstractProducts.prices.currency.code | String | Currency code. | -| abstractProducts.prices.currency.name | String | Currency name. | -| abstractProducts.prices.currency.symbol | String | Currency symbol. | -| abstractProducts.prices.grossAmount | Integer | Gross price in cents. | -| abstractProducts.images | Array | Images of the abstract product. | -| abstractProducts.images.externalUrlLarge | URL of the large image. | -| abstractProducts.images.externalUrlSmall | URL of the small image. | - - -**Value facets** - -| ATTRIBUTE| TYPE | DESCRIPTION | -| ------------- | -------- | ------------------ | -| valueFacets | Array | Objects describing the value facets. | -| valueFacets.name | String | Name of the value facet. | -| valueFacets.localizedName | String | Localized name of the value facet. | -| valueFacets.values | Array | Values of the facet for the found items. | -| valueFacets.activeValue | Integer| Value of the facet specified in the current search request. | -| valueFacets.config | Object | Parameters describing the value facet's configuration. | -| valueFacets.config.parameterName | String | Parameter name. | -| valueFacets.config.isMultiValued | Boolean | Defines if several values of the facet can be specified. | - -**Range facets** - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ---------- | -------- | ------------------ | -| rangeFacets | Array | Objects describing the range facets. | -| rangeFacets.name | String | Name of the range facet. | -| rangeFacets.localizedName | String | Localized name of the range facet. | -| rangeFacets.min | Integer | Minimum value of the range for the found items. | -| rangeFacets.max | Integer | Maximum value of the range for the found items. | -| rangeFacets.activeMin | Integer | Minimum value of the range specified in the current search request. | -| rangeFacets.activeMax | Integer | Maximum value of the range specified in the current search request. | -| rangeFacets.config | Object | Parameters describing the range facet's configuration. | -| rangeFacets.config.parameterName | String | Parameter name. | -| rangeFacets.config.isMultiValued | Boolean | Defines if several values of the facet can be specified. | - -**Category tree filter** - -| ATTRIBUTE | TYPE| DESCRIPTION | -| ------------- | -------- | --------------- | -| categoryTreeFilter | Array | Category tree filters. | -| nodeId | Integer | Unique identifier of the category. | -| name | String | Category name. | -| docCount | Integer | Number of the found items in the category. | -| children | Array | Child categories of the category. The child categories have the same parameters. | - -For details of the included resources, see: - -- [Retrieving abstract products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/abstract-products/retrieving-abstract-products.html) -- [Retrieving concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html) -- [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html) - -## Possible errors - -| CODE | REASON | -| -------- | ------------ | -| 501 | Invalid currency. | -| 502 | Invalid price mode. | -| 503 | Invalid type (non-integer) of one of the request parameters:
  • rating
  • rating.min
  • rating.max
  • page.limit
  • page.offset
  • category
| diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlist-items.md b/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlist-items.md deleted file mode 100644 index 093ae36a10a..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlist-items.md +++ /dev/null @@ -1,248 +0,0 @@ ---- -title: Managing wishlist items -description: Retrieve details about wishlist items and learn what else you can do with the resource in the Spryker Marketplace. -template: glue-api-storefront-guide-template ---- - -This endpoint lets you add and remove items from wishlists. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Marketplace Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html). - -## Add an item to a wishlist - -To add an item to a wishlist, send the request: - - -*** -`POST` {% raw %}**/wishlists/*{{wishlist_id}}*/wishlist-items**{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| --------------- | ---------------- | -| {% raw %}***{{wishlist_id}}***{% endraw %} | Unique identifier of the wishlist to add the items to. [Create a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#create-a-wishlist) or [retrieve all wishlists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html) to get it. | - -### Request - -
-Request sample: add an item to a wishlist - -`POST https://glue.mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a/wishlist-items` - -```json -{ - "data": { - "type": "wishlist-items", - "attributes": { - "sku": "064_18404924" - } - } - } -``` -
- -
-Request sample: add a product offer to a wishlist - -`POST https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094/wishlist-items` - -```json -{ - "data": { - "type": "wishlist-items", - "attributes": { - "sku": "092_24495842", - "productOfferReference": "offer5" - } - } -} -``` -
- -
-Request sample: add a marketplace product to a wishlist - -`POST https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094/wishlist-items` - -```json -{ - "data": { - "type": "wishlist-items", - "attributes": { - "sku": "109_19416433" - } - } -} -``` -
- -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| ------------ | ----- | ---| ---------------- | -| sku | String | ✓ | SKU of a concrete product or a merchant concrete product to add.| -| productOfferReference | String | | Unique identifier of the product offer. You can get it by [retrieving the offers available for the concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html).| - -### Response - -
-Response sample: add an item to a wishlist - -```json -{ - "data": { - "type": "wishlist-items", - "id": "064_18404924", - "attributes": { - "sku": "064_18404924" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/c917e65b-e8c3-5c8b-bec6-892529c64b30/wishlist-items/064_18404924" - } - } - } -``` -
- -
-Response sample: add a product offer to a wishlist - -```json -{ - "data": { - "type": "wishlist-items", - "id": "092_24495842_offer5", - "attributes": { - "productOfferReference": "offer5", - "merchantReference": "MER000001", - "id": "092_24495842_offer5", - "sku": "092_24495842", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [ - { - "priceTypeName": "ORIGINAL", - "grossAmount": 17459, - "netAmount": 15713, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 7459, - "netAmount": 5713, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 10000, - "netAmount": 8070, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094/wishlist-items/092_24495842_offer5" - } - } -} -``` -
- -
-Response sample: add a marketplace product to a wishlist - -```json -{ - "data": { - "type": "wishlist-items", - "id": "109_19416433", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "109_19416433", - "sku": "109_19416433", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4/wishlist-items/109_19416433" - } - } -} -``` -
- - - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ----------- | ------ | --------------- | -| productOfferReference | String | Unique identifier of the product offer.| -| merchantReference | String | Unique identifier of the merchant. | -| id | String | Unique identifier of the product offer in the wishlist. It's based on the `sku` and `productOfferReference`. | -| sku | String | SKU of the concrete product in the wishlist. | -| availability | Object | Contains information about the product's availability. | -| availability.isNeverOutOfStock | Boolean | Defines if the product is never out of stock. | -| availability.availability | Boolean | Defines if the product is available. | -| availability.quantity | Integer | Aggregated stock of the item in all [warehouses](/docs/scos/user/features/{{page.version}}/inventory-management-feature-overview.html#warehouse-management). | -| prices | Array | Contains information about prices. | -| prices.priceTypeName | String | Price type. | -| prices.grossAmount | Integer | Gross price in cents. | -| prices.netAmount | Integer | Net price in cents. | -| prices.currency | Object | Currency information of the price | -| prices.currency.code | String | Currency code. | -| prices.currency.name | String | Currency name. | -| prices.currency.symbol | String | Currency symbol. | - -## Delete a wishlist item - -To delete wishlist item, send the request: - - -*** -`DELETE` {% raw %}**/wishlists/*{{wishlist_id}}*/wishlist-items/*{{item_sku}}***{% endraw %} -*** - - -| PATH PARAMETER | DESCRIPTION | -| -------------- | -------------- | -| {% raw %}***{{wishlist_id}}***{% endraw %} | Unique identifier of the wishlist to delete an item from. [Create a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#create-a-wishlist) or [retrieve all wishlists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html) to get it. | -| {% raw %}***{{item_sku}}***{% endraw %} | Unique identifier of the product to delete. | - -### Request - -Request sample: - -`DELETE https://glue.mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a/wishlist-items/064_18404924` - -### Response - -If the item is removed successfully, the endpoint returns the `204 No Content` status code. - -## Possible errors - -| CODE | REASON | -| ------ | --------------- | -| 201 | Cannot find the wishlist. | -| 206 | Cannot add an item to the wishlist. | -| 207 | Cannot remove the item. | -| 208 | An item with the provided SKU does not exist in the wishlist. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlists.md b/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlists.md deleted file mode 100644 index b1212ef0d01..00000000000 --- a/docs/marketplace/dev/glue-api-guides/202108.0/wishlists/managing-wishlists.md +++ /dev/null @@ -1,2311 +0,0 @@ ---- -title: Managing wishlists -description: Retrieve details about wishlists and learn what else you can do with the resource in the Spryker Marketplace. -template: glue-api-storefront-guide-template ---- - -The Marketplace Wishlists API allows creating list and deleting [wishlists](/docs/scos/user/features/{{page.version}}/wishlist-feature-overview.html) in the Marketplace, as well as managing the items in them. - -## Installation - -For detailed information about the modules that provide the API functionality and related installation instructions, see [Marketplace Wishlist feature integration](/docs/marketplace/dev/feature-integration-guides/{{page.version}}/marketplace-wishlist-feature-integration.html) - -## Create a wishlist - -To create a wishlist, send the request: - -*** -`POST` **/wishlists** -*** - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ---------- | -------- | -------- | -------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -Request sample: create a wishlist - -`POST https://glue.mysprykershop.com/wishlists` - -```json -{ - "data": { - "type": "wishlists", - "attributes": { - "name": "My_favourite_wishlist" - } - } -} -``` - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| ------- | ----- | ------- | -------------- | -| name | string | ✓ | Name of the wishlist to create.| - -### Response - -Response sample: create a wishlist - -```json -{ - "data": { - "type": "wishlists", - "id": "57c96d55-8a37-5998-927f-7bb663b69094", - "attributes": { - "name": "My_favourite_wishlist", - "numberOfItems": 0, - "createdAt": "2021-07-13 14:50:08.755124", - "updatedAt": "2021-07-13 14:50:08.755124" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094" - } - } -} -``` - -| ATTRIBUTE | TYPE | DESCRIPTION | -| ------------ | ------ | --------------- | -| name | String | Name of the wishlist. | -| numberOfItems | Integer | Number of items in the wishlist. | -| createdAt | String | Creation date of the wishlist. | -| updatedAt | String | Date when the wishlist was updated. | - -## Retrieve wishlists - -To retrieve all wishlists of a customer, send the request: - - -*** -`GET` **/wishlists** -*** - -### Request - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| -------------- | ------------- | ----------- | -| include | Adds resource relationships to the request. |
  • wishlist-items
  • concrete-products
  • product-labels
| - -| REQUEST SAMPLE | USAGE | -| ------------ | ------------ | -| GET https://glue.mysprykershop.com/wishlists | Retrieve all the wishlists of a customer. | -| GET https://glue.mysprykershop.com/wishlists?include=wishlist-items | Retrieve all the wishlists of a customer with wishlist items. | -| GET https://glue.mysprykershop.com/wishlists?include=wishlist-items,concrete-products | Retrieve all the wishlists of a customer with wishlist items and respective concrete products. | -| GET https://glue.mysprykershop.com/wishlists?include=wishlist-items,concrete-products,product-labels | Retrieve all the wishlists of a customer with wishlist items, respective concrete products, and their product labels. | - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ------------ | ----------- | -------- | --------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -### Response - -
-Response sample: no wishlists found - -```json -{ - "data": [], - "links": { - "self": "https://glue.mysprykershop.com/wishlists" - } - } -``` -
- -
-Response sample: retrieve all the wishlists - - -```json - { - "data": [ - { - "type": "wishlists", - "id": "1623f465-e4f6-5e45-8dc5-987b923f8af4", - "attributes": { - "name": "My Wishlist Name", - "numberOfItems": 0, - "createdAt": "2018-12-16 17:24:12.601033", - "updatedAt": "2018-12-16 17:24:12.601033" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/1623f465-e4f6-5e45-8dc5-987b923f8af4" - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/wishlists" - } - } -``` -
- -
-Response sample: retrieve all the wishlists with wishlist items - -```json -{ - "data": [ - { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-16 15:02:21.121613", - "updatedAt": "2021-02-16 15:02:21.121613" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "149_28346778" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/wishlists?include=wishlist-items" - }, - "included": [ - { - "type": "wishlist-items", - "id": "149_28346778", - "attributes": { - "sku": "149_28346778" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/149_28346778" - } - } - ] -} -``` -
- -
-Response sample: retrieve all the wishlists with wishlist items and respective concrete products - -```json -{ - "data": [ - { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-16 15:02:21.121613", - "updatedAt": "2021-02-16 15:02:21.121613" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "149_28346778" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/wishlists?include=wishlist-items,concrete-products" - }, - "included": [ - { - "type": "concrete-products", - "id": "149_28346778", - "attributes": { - "sku": "149_28346778", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "HP 200 250 G4", - "description": "Durable mobile design Rest assured that the HP 250 can keep up with assignments on the run. The durable chassis protects the notebook so it looks as professional as you do. Get connected with the value-priced HP 250 Notebook PC. Complete business tasks with Intel technology, essential multimedia tools and Windows 8.1 loaded on the HP 250. The durable chassis helps protect the notebook from the rigors of the day. HP, a world leader in PCs and touch technology helps equip you with a fully functional notebook ready to connect to all your peripherals and designed to fit the needs of business. HP, a world leader in PCs and touch technology helps equip you with a fully functional notebook ready to connect to all your peripherals and designed to fit the needs of business.", - "attributes": { - "form_factor": "clamshell", - "processor_cores": "2", - "thermal_design_power": "15 W", - "brand": "HP", - "color": "Black", - "processor_frequency": "1.6 GHz" - }, - "superAttributesDefinition": [ - "form_factor", - "color", - "processor_frequency" - ], - "metaTitle": "HP 200 250 G4", - "metaKeywords": "HP,Entertainment Electronics", - "metaDescription": "Durable mobile design Rest assured that the HP 250 can keep up with assignments on the run. The durable chassis protects the notebook so it looks as profes", - "attributeNames": { - "form_factor": "Form factor", - "processor_cores": "Processor cores", - "thermal_design_power": "Thermal Design Power (TDP)", - "brand": "Brand", - "color": "Color", - "processor_frequency": "Processor frequency" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/149_28346778" - } - }, - { - "type": "wishlist-items", - "id": "149_28346778", - "attributes": { - "sku": "149_28346778" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/149_28346778" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "149_28346778" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve all the wishlists with wishlist items, respective concrete products, and their product labels - -```json -{ - "data": [ - { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-16 15:02:21.121613", - "updatedAt": "2021-02-16 15:02:21.121613" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products,product-labels" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "020_21081478" - } - ] - } - } - } - ], - "links": { - "self": "https://glue.mysprykershop.com/wishlists?include=wishlist-items,concrete-products,product-labels" - }, - "included": [ - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 3, - "frontEndReference": "highlight" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - }, - { - "type": "concrete-products", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Sony Cyber-shot DSC-W830", - "description": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing it, and slip in your pocket. Shooting great photos and videos is easy with the W800. Buttons are positioned for ease of use, while a dedicated movie button makes shooting movies simple. The vivid 2.7-type Clear Photo LCD display screen lets you view your stills and play back movies with minimal effort. Whip out the W800 to capture crisp, smooth footage in an instant. At the press of a button, you can record blur-free 720 HD images with digital sound. Breathe new life into a picture by using built-in Picture Effect technology. There’s a range of modes to choose from – you don’t even have to download image-editing software.", - "attributes": { - "hdmi": "no", - "sensor_type": "CCD", - "display": "TFT", - "usb_version": "2", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony Cyber-shot DSC-W830", - "metaKeywords": "Sony,Entertainment Electronics", - "metaDescription": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing i", - "attributeNames": { - "hdmi": "HDMI", - "sensor_type": "Sensor type", - "display": "Display", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/020_21081478" - }, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/020_21081478" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "020_21081478" - } - ] - } - } - } - ] -} -``` -
- -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------- | ------ | ----------------- | -| name | String | Name of the wishlist. | -| numberOfItems | Integer | Number of items in the wishlist. | -| createdAt | String | Creation date of the wishlist.| -| updatedAt | String | Date when the wishlist was updated.| - -For attributes of the included resources, see: - -- [Add an item to a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlist-items.html#add-an-item-to-a-wishlist) -- [Retrieve a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html#retrieve-a-concrete-product) -- [Retrieve a product label](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) - -## Retrieve a wishlist - -To retrieve a specific wishlist, send the request: - -*** -`GET` {% raw %}**/wishlists/*{{wishlist_id}}***{% endraw %} -*** - -| PATH PARAMETER | DESCRIPTION | -| ---------------- | ------------------------- | -| {% raw %}***{{wishlist_id}}***{% endraw %} | Unique identifier of the wishlist to retrieve the items of. [Create a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#create-a-wishlist) or [retrieve all wishlists](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-wishlists/managing-wishlists.html#retrieve-wishlists) to get it. | - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ------------ | ----------- | ------- | -------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -| QUERY PARAMETER | DESCRIPTION | POSSIBLE VALUES | -| ---------- | -------------------- | --------------------- | -| include | Adds resource relationships to the request. |
  • wishlist-items
  • concrete-products
  • product-labels
  • concrete-product-availabilities
  • concrete-product-prices
  • merchants
| - -| REQUEST SAMPLE | USAGE | -| ------------- | ------------ | -| GET https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1 | Retrieve a wishlist with the `246591f8-4f30-55ce-8b17-8482859b4ac1` identifier. | -| GET https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items | Retrieve the wishlist with the `246591f8-4f30-55ce-8b17-8482859b4ac1` identifier. Include wishlist items in the response. | -| GET https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products | Retrieve the wishlist with the `246591f8-4f30-55ce-8b17-8482859b4ac1` identifier. Include wishlist items and respective concrete products in the response. | -| GET https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products,product-labels | Retrieve the wishlist with the `246591f8-4f30-55ce-8b17-8482859b4ac1` identifier. Include wishlist items, respective concrete products and their product labels in the response. | -| GET https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4?include=wishlist-items,concrete-products,concrete-product-availabilities | Retrieve the wishlist with the `bb7dbe75-d892-582f-b438-d7f6cbfd3fc4`identifier. Include wishlist items, concrete products and concrete product availabilities in the response. | -| GET https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4?include=wishlist-items,concrete-products,concrete-product-prices | Retrieve the wishlist with the `bb7dbe75-d892-582f-b438-d7f6cbfd3fc4`identifier. Include wishlist items, concrete products, and their prices. | -| GET https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items,concrete-products,product-offers | Retrieve the wishlist with the `13c813a3-8916-5444-9f1b-e4d8c56a085d`identifier. Include wishlist items, concrete products and product offers for these products. | -| GET https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d?include=wishlist-items,concrete-products,product-offers,product-offer-availabilities | Retrieve the wishlist with the `13c813a3-8916-5444-9f1b-e4d8c56a085d`identifier. Include wishlist items and product offer availabilities. | -| GET https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d?include=wishlist-items,concrete-products,product-offers,product-offer-prices | Retrieve the wishlist with the `13c813a3-8916-5444-9f1b-e4d8c56a085d`identifier. Include wishlist items and product offer prices. | -| GET https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094?include=wishlist-items,merchants | Retrieve the wishlist with the `57c96d55-8a37-5998-927f-7bb663b69094`identifier. Include wishlist items and merchant information. | - - - -### Response - -
-Response sample: retrieve a wishlist - -```json -{ - "data": { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-24 13:52:34.582421", - "updatedAt": "2021-02-24 13:52:34.582421" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1" - } - } -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items included - -```json -{ - "data": { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-24 13:52:34.582421", - "updatedAt": "2021-02-24 13:52:34.582421" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "020_21081478" - } - ] - } - } - }, - "included": [ - { - "type": "wishlist-items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/020_21081478" - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items and respective concrete products included - -```json -{ - "data": { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-24 13:52:34.582421", - "updatedAt": "2021-02-24 13:52:34.582421" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "020_21081478" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-products", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Sony Cyber-shot DSC-W830", - "description": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing it, and slip in your pocket. Shooting great photos and videos is easy with the W800. Buttons are positioned for ease of use, while a dedicated movie button makes shooting movies simple. The vivid 2.7-type Clear Photo LCD display screen lets you view your stills and play back movies with minimal effort. Whip out the W800 to capture crisp, smooth footage in an instant. At the press of a button, you can record blur-free 720 HD images with digital sound. Breathe new life into a picture by using built-in Picture Effect technology. There’s a range of modes to choose from – you don’t even have to download image-editing software.", - "attributes": { - "hdmi": "no", - "sensor_type": "CCD", - "display": "TFT", - "usb_version": "2", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony Cyber-shot DSC-W830", - "metaKeywords": "Sony,Entertainment Electronics", - "metaDescription": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing i", - "attributeNames": { - "hdmi": "HDMI", - "sensor_type": "Sensor type", - "display": "Display", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/020_21081478" - } - }, - { - "type": "wishlist-items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/020_21081478" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "020_21081478" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, respective concrete products, and product labels included - -```json -{ - "data": { - "type": "wishlists", - "id": "246591f8-4f30-55ce-8b17-8482859b4ac1", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2021-02-24 13:52:34.582421", - "updatedAt": "2021-02-24 13:52:34.582421" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1?include=wishlist-items,concrete-products,product-labels" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "020_21081478" - } - ] - } - } - }, - "included": [ - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 3, - "frontEndReference": "highlight" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-labels/5" - } - }, - { - "type": "concrete-products", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "name": "Sony Cyber-shot DSC-W830", - "description": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing it, and slip in your pocket. Shooting great photos and videos is easy with the W800. Buttons are positioned for ease of use, while a dedicated movie button makes shooting movies simple. The vivid 2.7-type Clear Photo LCD display screen lets you view your stills and play back movies with minimal effort. Whip out the W800 to capture crisp, smooth footage in an instant. At the press of a button, you can record blur-free 720 HD images with digital sound. Breathe new life into a picture by using built-in Picture Effect technology. There’s a range of modes to choose from – you don’t even have to download image-editing software.", - "attributes": { - "hdmi": "no", - "sensor_type": "CCD", - "display": "TFT", - "usb_version": "2", - "brand": "Sony", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony Cyber-shot DSC-W830", - "metaKeywords": "Sony,Entertainment Electronics", - "metaDescription": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing i", - "attributeNames": { - "hdmi": "HDMI", - "sensor_type": "Sensor type", - "display": "Display", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/020_21081478" - }, - "relationships": { - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "020_21081478", - "attributes": { - "sku": "020_21081478" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/246591f8-4f30-55ce-8b17-8482859b4ac1/wishlist-items/020_21081478" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "020_21081478" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, concrete products and their availabilities - -```json -{ - "data": { - "type": "wishlists", - "id": "bb7dbe75-d892-582f-b438-d7f6cbfd3fc4", - "attributes": { - "name": "My_wishlist", - "numberOfItems": 1, - "createdAt": "2021-07-13 14:49:39.635172", - "updatedAt": "2021-07-13 14:49:39.635172" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "109_19416433" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-availabilities", - "id": "109_19416433", - "attributes": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/109_19416433/concrete-product-availabilities" - } - }, - { - "type": "concrete-products", - "id": "109_19416433", - "attributes": { - "sku": "109_19416433", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "109", - "name": "Sony SW2 SmartWatch", - "description": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on top of everything. If you like to get out running, you can use SmartWatch as your phone remote. If it rains, you can keep on going. SmartWatch 2 can take the rain. If it is bright and sunny, SmartWatch 2 has an impressive sunlight-readable display. Take it anywhere. When you are using a wireless Bluetooth® headset for music, you can use SmartWatch 2 as a phone remote to make or receive calls. When a call comes in, you can see who’s calling in your SmartWatch display, press once to answer and enjoy hands-free calling at its easiest. You can also browse recent calls in your call log and use SmartWatch to initiate a call.", - "attributes": { - "display_type": "LCD", - "shape": "square", - "bluetooth_version": "3", - "battery_life": "168 h", - "brand": "Sony", - "color": "Blue" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SW2 SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on", - "attributeNames": { - "display_type": "Display type", - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/109_19416433" - }, - "relationships": { - "concrete-product-availabilities": { - "data": [ - { - "type": "concrete-product-availabilities", - "id": "109_19416433" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "109_19416433", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "109_19416433", - "sku": "109_19416433", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4/wishlist-items/109_19416433" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "109_19416433" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, concrete products and their prices - -```json -{ - "data": { - "type": "wishlists", - "id": "bb7dbe75-d892-582f-b438-d7f6cbfd3fc4", - "attributes": { - "name": "My_wishlist", - "numberOfItems": 1, - "createdAt": "2021-07-13 14:49:39.635172", - "updatedAt": "2021-07-13 14:49:39.635172" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "109_19416433" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-prices", - "id": "109_19416433", - "attributes": { - "price": 12572, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 12572, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/109_19416433/concrete-product-prices" - } - }, - { - "type": "concrete-products", - "id": "109_19416433", - "attributes": { - "sku": "109_19416433", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "109", - "name": "Sony SW2 SmartWatch", - "description": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on top of everything. If you like to get out running, you can use SmartWatch as your phone remote. If it rains, you can keep on going. SmartWatch 2 can take the rain. If it is bright and sunny, SmartWatch 2 has an impressive sunlight-readable display. Take it anywhere. When you are using a wireless Bluetooth® headset for music, you can use SmartWatch 2 as a phone remote to make or receive calls. When a call comes in, you can see who’s calling in your SmartWatch display, press once to answer and enjoy hands-free calling at its easiest. You can also browse recent calls in your call log and use SmartWatch to initiate a call.", - "attributes": { - "display_type": "LCD", - "shape": "square", - "bluetooth_version": "3", - "battery_life": "168 h", - "brand": "Sony", - "color": "Blue" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SW2 SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Anywhere. Any weather SmartWatch 2 is the wireless accessory that has something for everybody. If you are a busy communicator, you will appreciate being on", - "attributeNames": { - "display_type": "Display type", - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/109_19416433" - }, - "relationships": { - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "109_19416433" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "109_19416433", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "109_19416433", - "sku": "109_19416433", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/bb7dbe75-d892-582f-b438-d7f6cbfd3fc4/wishlist-items/109_19416433" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "109_19416433" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, concrete products, and product offers - -```json -{ - "data": { - "type": "wishlists", - "id": "13c813a3-8916-5444-9f1b-e4d8c56a085d", - "attributes": { - "name": "My wish list", - "numberOfItems": 3, - "createdAt": "2021-07-15 08:55:22.109760", - "updatedAt": "2021-07-15 08:55:22.109760" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d?include=wishlist-items,concrete-products,product-offers" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "011_30775359_offer59" - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18" - }, - { - "type": "wishlist-items", - "id": "111_12295890" - } - ] - } - } - }, - "included": [ - { - "type": "product-offers", - "id": "offer59", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer59" - } - }, - { - "type": "product-offers", - "id": "offer18", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer18" - } - }, - { - "type": "concrete-products", - "id": "011_30775359", - "attributes": { - "sku": "011_30775359", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "011", - "name": "Canon IXUS 180", - "description": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control and choose the perfect camera settings for you. Play with your creativity in stills or movies using a range of Creative Filters such as Fish Eye, Miniature and Toy Camera. Enjoy exceptional quality, detailed images ideal for creating stunning poster sized prints thanks to 20.0 Megapixels and DIGIC 4+ processing. An intelligent optical Image Stabilizer ensures sharp stills and steady movies in any situation, while the 6.8 cm (2.7”) LCD screen allows easy viewing and sharing.", - "attributes": { - "megapixel": "20 MP", - "sensor_type": "CCD", - "display": "LCD", - "digital_zoom": "4 x", - "brand": "Canon", - "color": "Blue" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 180", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control", - "attributeNames": { - "megapixel": "Megapixel", - "sensor_type": "Sensor type", - "display": "Display", - "digital_zoom": "Digital zoom", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/011_30775359" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - }, - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer59", - "attributes": { - "productOfferReference": "offer59", - "merchantReference": "MER000001", - "id": "011_30775359_offer59", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 37881, - "netAmount": 34093, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 32940, - "netAmount": 29646, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer59" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18", - "attributes": { - "productOfferReference": "offer18", - "merchantReference": "MER000001", - "id": "011_30775359_offer18", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 39986, - "netAmount": 35987, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 34770, - "netAmount": 31293, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer18" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "111_12295890", - "attributes": { - "sku": "111_12295890", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "111", - "name": "Sony SmartWatch", - "description": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your world’s just a tap, swipe or press away. Want to do more with your SmartWatch? Download compatible applications on Google Play™. And customise your SmartWatch to make it exclusively yours. Customise your SmartWatch with a 20mm wristband. Or wear its stylish wristband. You can even use it as a clip. This ultra-thin Android™ remote was designed to impress. An elegant Android watch that’ll keep you discreetly updated and your hands free.", - "attributes": { - "shape": "square", - "bluetooth_version": "3", - "battery_life": "72 h", - "display_type": "LCD", - "brand": "Sony", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your ", - "attributeNames": { - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "display_type": "Display type", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/111_12295890" - } - }, - { - "type": "wishlist-items", - "id": "111_12295890", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "111_12295890", - "sku": "111_12295890", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/111_12295890" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "111_12295890" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, concrete products, product offers, and product offer availabilities - -```json -{ - "data": { - "type": "wishlists", - "id": "13c813a3-8916-5444-9f1b-e4d8c56a085d", - "attributes": { - "name": "My wish list", - "numberOfItems": 3, - "createdAt": "2021-07-15 08:55:22.109760", - "updatedAt": "2021-07-15 08:55:22.109760" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d?include=wishlist-items,concrete-products,product-offers,product-offer-availabilities" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "011_30775359_offer59" - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18" - }, - { - "type": "wishlist-items", - "id": "111_12295890" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-availabilities", - "id": "offer59", - "attributes": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer59/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer59", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer59" - } - }, - { - "type": "product-offer-availabilities", - "id": "offer18", - "attributes": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer18/product-offer-availabilities" - } - }, - { - "type": "product-offers", - "id": "offer18", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer18" - } - }, - { - "type": "concrete-products", - "id": "011_30775359", - "attributes": { - "sku": "011_30775359", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "011", - "name": "Canon IXUS 180", - "description": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control and choose the perfect camera settings for you. Play with your creativity in stills or movies using a range of Creative Filters such as Fish Eye, Miniature and Toy Camera. Enjoy exceptional quality, detailed images ideal for creating stunning poster sized prints thanks to 20.0 Megapixels and DIGIC 4+ processing. An intelligent optical Image Stabilizer ensures sharp stills and steady movies in any situation, while the 6.8 cm (2.7”) LCD screen allows easy viewing and sharing.", - "attributes": { - "megapixel": "20 MP", - "sensor_type": "CCD", - "display": "LCD", - "digital_zoom": "4 x", - "brand": "Canon", - "color": "Blue" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 180", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control", - "attributeNames": { - "megapixel": "Megapixel", - "sensor_type": "Sensor type", - "display": "Display", - "digital_zoom": "Digital zoom", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/011_30775359" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - }, - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer59", - "attributes": { - "productOfferReference": "offer59", - "merchantReference": "MER000001", - "id": "011_30775359_offer59", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 37881, - "netAmount": 34093, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 32940, - "netAmount": 29646, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer59" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18", - "attributes": { - "productOfferReference": "offer18", - "merchantReference": "MER000001", - "id": "011_30775359_offer18", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 39986, - "netAmount": 35987, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 34770, - "netAmount": 31293, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer18" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "111_12295890", - "attributes": { - "sku": "111_12295890", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "111", - "name": "Sony SmartWatch", - "description": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your world’s just a tap, swipe or press away. Want to do more with your SmartWatch? Download compatible applications on Google Play™. And customise your SmartWatch to make it exclusively yours. Customise your SmartWatch with a 20mm wristband. Or wear its stylish wristband. You can even use it as a clip. This ultra-thin Android™ remote was designed to impress. An elegant Android watch that’ll keep you discreetly updated and your hands free.", - "attributes": { - "shape": "square", - "bluetooth_version": "3", - "battery_life": "72 h", - "display_type": "LCD", - "brand": "Sony", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your ", - "attributeNames": { - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "display_type": "Display type", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/111_12295890" - } - }, - { - "type": "wishlist-items", - "id": "111_12295890", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "111_12295890", - "sku": "111_12295890", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/111_12295890" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "111_12295890" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items, concrete products, product offers, and product offer prices - -```json -{ - "data": { - "type": "wishlists", - "id": "13c813a3-8916-5444-9f1b-e4d8c56a085d", - "attributes": { - "name": "My wish list", - "numberOfItems": 3, - "createdAt": "2021-07-15 08:55:22.109760", - "updatedAt": "2021-07-15 08:55:22.109760" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d?include=wishlist-items,concrete-products,product-offers,product-offer-prices" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "011_30775359_offer59" - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18" - }, - { - "type": "wishlist-items", - "id": "111_12295890" - } - ] - } - } - }, - "included": [ - { - "type": "product-offer-prices", - "id": "offer59", - "attributes": { - "price": 32940, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 32940, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer59/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer59", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000005", - "isDefault": true - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer59" - } - }, - { - "type": "product-offer-prices", - "id": "offer18", - "attributes": { - "price": 34770, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 34770, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "volumePrices": [] - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer18/product-offer-prices" - } - }, - { - "type": "product-offers", - "id": "offer18", - "attributes": { - "merchantSku": null, - "merchantReference": "MER000002", - "isDefault": false - }, - "links": { - "self": "https://glue.mysprykershop.com/product-offers/offer18" - } - }, - { - "type": "concrete-products", - "id": "011_30775359", - "attributes": { - "sku": "011_30775359", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "011", - "name": "Canon IXUS 180", - "description": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control and choose the perfect camera settings for you. Play with your creativity in stills or movies using a range of Creative Filters such as Fish Eye, Miniature and Toy Camera. Enjoy exceptional quality, detailed images ideal for creating stunning poster sized prints thanks to 20.0 Megapixels and DIGIC 4+ processing. An intelligent optical Image Stabilizer ensures sharp stills and steady movies in any situation, while the 6.8 cm (2.7”) LCD screen allows easy viewing and sharing.", - "attributes": { - "megapixel": "20 MP", - "sensor_type": "CCD", - "display": "LCD", - "digital_zoom": "4 x", - "brand": "Canon", - "color": "Blue" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Canon IXUS 180", - "metaKeywords": "Canon,Entertainment Electronics", - "metaDescription": "Effortless creativity Just point and shoot to capture fantastic photos or movies with one touch of the Auto Button, which allows Smart Auto to take control", - "attributeNames": { - "megapixel": "Megapixel", - "sensor_type": "Sensor type", - "display": "Display", - "digital_zoom": "Digital zoom", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/011_30775359" - }, - "relationships": { - "product-offers": { - "data": [ - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - }, - { - "type": "product-offers", - "id": "offer59" - }, - { - "type": "product-offers", - "id": "offer18" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer59", - "attributes": { - "productOfferReference": "offer59", - "merchantReference": "MER000001", - "id": "011_30775359_offer59", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "0.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 37881, - "netAmount": 34093, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 32940, - "netAmount": 29646, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer59" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "wishlist-items", - "id": "011_30775359_offer18", - "attributes": { - "productOfferReference": "offer18", - "merchantReference": "MER000001", - "id": "011_30775359_offer18", - "sku": "011_30775359", - "availability": { - "isNeverOutOfStock": false, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 39986, - "netAmount": 35987, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 34770, - "netAmount": 31293, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/011_30775359_offer18" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "011_30775359" - } - ] - } - } - }, - { - "type": "concrete-products", - "id": "111_12295890", - "attributes": { - "sku": "111_12295890", - "isDiscontinued": false, - "discontinuedNote": null, - "averageRating": null, - "reviewCount": 0, - "productAbstractSku": "111", - "name": "Sony SmartWatch", - "description": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your world’s just a tap, swipe or press away. Want to do more with your SmartWatch? Download compatible applications on Google Play™. And customise your SmartWatch to make it exclusively yours. Customise your SmartWatch with a 20mm wristband. Or wear its stylish wristband. You can even use it as a clip. This ultra-thin Android™ remote was designed to impress. An elegant Android watch that’ll keep you discreetly updated and your hands free.", - "attributes": { - "shape": "square", - "bluetooth_version": "3", - "battery_life": "72 h", - "display_type": "LCD", - "brand": "Sony", - "color": "Silver" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony SmartWatch", - "metaKeywords": "Sony,Smart Electronics", - "metaDescription": "Your world at your fingertips SmartWatch features an easy-to-use, ultra-responsive touch display. Finding your way around SmartWatch is super simple. Your ", - "attributeNames": { - "shape": "Shape", - "bluetooth_version": "Blootooth version", - "battery_life": "Battery life", - "display_type": "Display type", - "brand": "Brand", - "color": "Color" - }, - "productConfigurationInstance": null - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/111_12295890" - } - }, - { - "type": "wishlist-items", - "id": "111_12295890", - "attributes": { - "productOfferReference": null, - "merchantReference": "MER000001", - "id": "111_12295890", - "sku": "111_12295890", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "20.0000000000" - }, - "prices": [ - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 19568, - "netAmount": 17611, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 22503, - "netAmount": 20253, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/13c813a3-8916-5444-9f1b-e4d8c56a085d/wishlist-items/111_12295890" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "111_12295890" - } - ] - } - } - } - ] -} -``` -
- -
-Response sample: retrieve a wishlist with wishlist items and merchant information included - -```json -{ - "data": { - "type": "wishlists", - "id": "57c96d55-8a37-5998-927f-7bb663b69094", - "attributes": { - "name": "My_favourite_wishlist", - "numberOfItems": 1, - "createdAt": "2021-07-13 14:50:08.755124", - "updatedAt": "2021-07-13 14:50:08.755124" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094" - }, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "092_24495842_offer5" - } - ] - } - } - }, - "included": [ - { - "type": "merchants", - "id": "MER000001", - "attributes": { - "merchantName": "Spryker", - "merchantUrl": "/en/merchant/spryker", - "contactPersonRole": "E-Commerce Manager", - "contactPersonTitle": "Mr", - "contactPersonFirstName": "Harald", - "contactPersonLastName": "Schmidt", - "contactPersonPhone": "+49 30 208498350", - "logoUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-logo.png", - "publicEmail": "info@spryker.com", - "publicPhone": "+49 30 234567891", - "description": "Spryker is the main merchant at the Demo Marketplace.", - "bannerUrl": "https://d2s0ynfc62ej12.cloudfront.net/merchant/spryker-banner.png", - "deliveryTime": "1-3 days", - "faxNumber": "+49 30 234567800", - "legalInformation": { - "terms": "

General Terms

(1) This privacy policy has been compiled to better serve those who are concerned with how their 'Personally identifiable information' (PII) is being used online. PII, as used in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.

(2) We do not collect information from visitors of our site or other details to help you with your experience.

Using your Information

We may use the information we collect from you when you register, make a purchase, sign up for our newsletter, respond to a survey or marketing communication, surf the website, or use certain other site features in the following ways:

To personalize user's experience and to let us deliver the type of content and product offerings in which you are most interested.

Protecting visitor information

Our website is scanned on a regular basis for security holes and known vulnerabilities in order to make your visit to our site as safe as possible. Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.

", - "cancellationPolicy": "You have the right to withdraw from this contract within 14 days without giving any reason. The withdrawal period will expire after 14 days from the day on which you acquire, or a third party other than the carrier and indicated by you acquires, physical possession of the last good. You may use the attached model withdrawal form, but it is not obligatory. To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal before the withdrawal period has expired.", - "imprint": "

Spryker Systems GmbH

Julie-Wolfthorn-Straße 1
10115 Berlin
DE

Phone: +49 (30) 2084983 50
Email: info@spryker.com

Represented by
Managing Directors: Alexander Graf, Boris Lokschin
Register Court: Hamburg
Register Number: HRB 134310

", - "dataPrivacy": "Spryker Systems GmbH values the privacy of your personal data." - }, - "categories": [] - }, - "links": { - "self": "https://glue.mysprykershop.com/merchants/MER000001" - } - }, - { - "type": "wishlist-items", - "id": "092_24495842_offer5", - "attributes": { - "productOfferReference": "offer5", - "merchantReference": "MER000001", - "id": "092_24495842_offer5", - "sku": "092_24495842", - "availability": { - "isNeverOutOfStock": true, - "availability": true, - "quantity": "10.0000000000" - }, - "prices": [ - { - "priceTypeName": "ORIGINAL", - "grossAmount": 17459, - "netAmount": 15713, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 7459, - "netAmount": 5713, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "DEFAULT", - "grossAmount": 10000, - "netAmount": 8070, - "currency": { - "code": "CHF", - "name": "Swiss Franc", - "symbol": "CHF" - } - } - ] - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/57c96d55-8a37-5998-927f-7bb663b69094/wishlist-items/092_24495842_offer5" - }, - "relationships": { - "merchants": { - "data": [ - { - "type": "merchants", - "id": "MER000001" - } - ] - } - } - } - ] -} -``` -
- -| ATTRIBUTE | TYPE | DESCRIPTION | -| ---------- | ----- | --------------- | -| name | String | Wishlist name. | -| numberOfItems | Integer | Number of items in the wishlist. | -| createdAt | String | Creation date of the wishlist. | -| updatedAt | String | Date when the wishlist was updated. | - -For the attributes of the included resources, see - -[Adding items to wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlist-items.html#add-an-item-to-a-wishlist) - -[Retrieving concrete products](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-concrete-products.html#concrete-products-response-attributes) - -[Retrieving concrete product availabilities](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-availability.html) - -[Retrieving concrete product prices](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-prices.html) - -[Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html) - -[Retrieving merchants](/docs/marketplace/dev/glue-api-guides/{{page.version}}/merchants/retrieving-merchants.html#merchants-response-attributes) - -## Edit a wishlist - -To edit a wishlist, send the request: - -*** -`PATCH` **/wishlists** -*** - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ------ | ------ | ------ | -------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -Request sample: edit a wishlist - -`PATCH https://glue.mysprykershop.com/wishlists` - -The following sample changes the name of a wishlist. - -```json -{ - "data": { - "type": "wishlists", - "id": "09264b7f-1894-58ed-81f4-d52d683e910a", - "attributes": { - "name": "birthday party" - } - } - } -``` - -| ATTRIBUTE | TYPE | REQUIRED | DESCRIPTION | -| ------ | ---- | ------- | ----------------------- | -| id | string | ✓ | Unique identifier of the wishlist to update the name of. [Create a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#create-a-wishlist) or [retrieve all wishlists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html) to get it. | -| name | string | ✓ | New name of the wishlist. | - -### Response - -| ATTRIBUTE | TYPE | DESCRIPTION | -| --------- | ---- | --------------- | -| name | String | Name of the wishlist. | -| numberOfItems | Integer | Number of items in the wishlist. | -| createdAt | String | Creation date of the wishlist. | -| updatedAt | String | Date when the wishlist was updated. | - -## Delete a wishlist - -To delete a wishlist, send the request: - ------- - -`DELETE` **/wishlists/*{{wishlist_id}}*** - ------- - -| PATH PARAMETER | DESCRIPTION | -| --------- | ------------------- | -| ***{{wishlist_id}}*** | Unique identifier of the wishlist to delete. [Create a wishlist](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html#create-a-wishlist) or [retrieve all wishlists](/docs/marketplace/dev/glue-api-guides/{{page.version}}/wishlists/managing-wishlists.html) to get it. | - -### Request - -| HEADER KEY | HEADER VALUE | REQUIRED | DESCRIPTION | -| ---------- | -------- | ----- | ----------------- | -| Authorization | string | ✓ | Alphanumeric string that authorizes the customer to send requests to protected resources. Get it by [authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html). | - -Request sample: - -`DELETE https://glue.mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a` - -### Response - -If the wishlist is deleted successfully, the endpoint returns the `204 No Content` status code. - -## Possible errors - -| CODE | REASON | -| --- | ------------------------- | -| 201 | Cannot find the wishlist. | -| 202 | A wishlist with the same name already exists. | -| 203 | Cannot create a wishlist. | -| 204 | Cannot update the wishlist. | -| 205 | Cannot remove the wishlist. | - -To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/scos/dev/glue-api-guides/{{page.version}}/reference-information-glueapplication-errors.html). diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/availability/availability-reference-information.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/availability/availability-reference-information.md deleted file mode 100644 index 6a6f869c980..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/availability/availability-reference-information.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "Availability: reference information" -last_updated: Feb 02, 2021 -description: This document contains reference information for working with the Availability section in Back Office. -template: back-office-user-guide-template ---- - -This document includes the information you need to know when working with the **Availability** section in Back Office. - ---- - -## Overview page - -On the **Overview of Products Availability** page, you see the following: - -* The SKUs and names of the abstract products and SKU values are a hyperlink to this product’s **Edit** page. -* The number of products in current stock and the number of reserved products (meaning ordered ones). -* The identifier for the bundled product and those that are *never out of stock* (Yes/No values). - -{% info_block infoBox "Info" %} - -For multi-store projects, you can filter the products according to the store the product is available. - -{% endinfo_block %} - -{% info_block infoBox "Info" %} - -For the [Marketplace](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-concept.html) project, you can also filter the products according to the merchant the product belongs to. - -{% endinfo_block %} - -![merchants-switcher-on-availabilities](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Availability/availability-reference-information/merchants-switcher-on-availabilities.gif) - ---- - -## View product availability page - -On the **View Product Availability** page, you see two sections: - -* Abstract product availability -* Variant availability - -The **Abstract Product availability** section is not modifiable. It only provides basic information. As the abstract product itself does not have any stock, the **Current Stock** value reflects the summarized value of all its variants. - - -{% info_block infoBox "Info" %} - -The **Abstract Product** contains a drop-down list where you can select the store for which you need to view the availability of the product. - -{% endinfo_block %} - -{% info_block infoBox "Info" %} - -For the [Marketplace](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-concept.html) project, a merchant name is available for a specific product. The availability of a certain merchant warehouse is provided. - -{% endinfo_block %} - -Unlike the abstract product availability, the variant availability provides you with an option to edit stock. You invoke the edit stock flow from the **Actions** column. It also has the identifier of the product bundle. - -Both sections contain the following info: - -* The SKU and name of the abstract product/product variant. -* The availability value, the number of products in the current stock, and the number of the reserved products (meaning the ordered ones). -* The identifier for the *never out of stock* (Yes/No values). - ---- - -## Edit stock page - -The following table describes the attributes you see and enter on the **Edit Stock** page: - -| ATTRIBUTE | DESCRIPTION | -|-|-| -| Stock Type | Name of the corresponding warehouse. The field is auto-populated and is not editable. | -| Quantity | Number of products available in the stock for a specific store and warehouse. | -| Never out of stock | Checkbox to set the product to be always available in a specific store and warehouse. Meaning even if the quantity is set to 0, the product will still be available. This option is usually used for digital items, like gift cards, for example. | -| Available in stores | This value is auto-populated according to your store setup and is not modifiable in UI. It just identifies for which store you define the product availability value. | - -## Availability calculation: example - -A good example of availability calculation is a product bundle. -Let's say you have two products: a smartphone and three glass screen protectors for it. They are presented in the store as separate items but also included in a bundle. - -This means that a customer can either buy those separately from their product details pages or buy a "smartphone+3 glass screen protectors" bundle. - -Each product has its own stock and availability value if bought separately. -But in the case of a bundle, the availability is calculated based on each item’s availability taking into account their *quantity in the bundle*. - -Even if each item is available on its own, but the availability does not meet the minimum quantity for a bundle (for example, there are only two glass screen protectors, but the bundle goes with three), then the whole bundle is *unavailable*. diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/creating-product-options.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/creating-product-options.md deleted file mode 100644 index 3e9036f2e21..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/creating-product-options.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Creating product options -last_updated: Apr 21, 2021 -description: Use this procedure to create Marketplace Product Optionsgroups and values in the Back Office. -template: back-office-user-guide-template ---- -This document describes how to create Marketplace product options. - -## Prerequisites - -To start working with product options, go to **Catalog > Product Options**. - -There should be an existing tax set to apply it to the [product option group](/docs/marketplace/user/features/{{page.version}}/marketplace-product-options-feature-overview.html). For detailed instructions about creating tax sets, see [Managing tax sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html). - -Each section in this article contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Creating a product option - -To create a product option, follow these steps: - -1. On the **Product option list** page, select **Create product option** in the top right corner. - This opens the with **General Information** and **Products** tabs. -2. On the **Create new Product Options** page, enter a **Group name translation key**. -3. Select a **Tax set**. -4. In the **Option Values** section, enter an **Option name translation key**. -5. Enter a **SKU** or proceed with the auto-generated one. -6. In the **Prices** section, enter **Gross price** and **Net price** for all the desired stores and currencies. -7. Optional: To add one more product options value, select **Add option**, and repeat step 5. -8. In the **Translation** section, enter **Group name** and **Option name** for all the locales. -9. To save the changes, select **Save**. - This refreshes the page with the success message displayed. -10. [Assign products to the product option](#assigning-products-to-a-product-option). - -**Tips and tricks** -* To remove an option value, next to the **Option name translation key** and **SKU** fields, click **Remove**. -* To copy a **Group name** or **Option name** from one locale to another, select the **Copy** icon next to the desired value. - -### Reference information: Creating a product option - -The following table describes the attributes you enter and select while creating a product option. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -| Group name translation key | Glossary key for the product option group. The format is `product.option.group.name.{your key}`. For example, `product.option.group.name.warranty`. | -| Tax Set | Conditions under which the product option group is to be taxed. To learn how to create tax sets, see [Managing tax sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html). | -| Option name translation key | Glossary key for the product option value. The format is `product.option.{your key}`. For example, `product.option.warranty1`. | -| SKU | Unique identifier for the product option value. This value is autogenerated based on the **Option name translation key**, and you can adjust it per your requirements.| -| Gross price and Net price | Price values of the product option value for gross and net modes. Prices are integer values and, in the database, they are stored in their normalized form. For example, `4EUR` is stored as `400`. If you do not define a price for a product option value, it is considered *inactive* for that specific currency and price mode. If a price is `0`, it is considered *free of charge*.| -| Group name | Option group name that's displayed on the Storefront. | -| Option name | Option name that's displayed on the Storefront. | - - -## Assigning products to a product option - -To assign products to a product option, follow these steps: -1. On the **Edit product option** page, switch to the **Products** tab. -2. Select the desired products. -3. Select **Save**. - This refreshes the page with the success message displayed. - - - -{% info_block infoBox "Activating product options" %} - -To display the product option on the Storefront, in the top right corner of the page, activate it by selecting **Activate** . - -{% endinfo_block %} - -**Tips and tricks** - -* To select all the products on the page, select **Deselect all on the page**. This is usually useful when you filter the products using the search field. -* After selecting products, you can view the products to be assigned on the **Products to be assigned** subtab. To unselect a product from being assigned, select **Remove** next to the desired product. - -## Product option examples on the Storefront - -On the following example, the Warranty and Insurance are the product option groups: -![Product option example](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Options/Product+Options%3A+Reference+Information/product-option-example.png) - -And the values available in the drop-down lists are the product options: -![Select an option](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Options/Product+Options%3A+Reference+Information/select-option-drop-down.png) - -## Next steps - -[Managing product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html) diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/managing-product-options.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/managing-product-options.md deleted file mode 100644 index 257bcfb516b..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/product-options/managing-product-options.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Managing product options -last_updated: Apr 21, 2021 -description: Use this document to manage product options in the Back Office. -template: back-office-user-guide-template ---- - -This document describes how to manage product options. - -## Prerequisites - -To start working with product options, go to **Catalog > Product Options**. - - -Each section in this article contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - - -## Filtering product options by merchants - -You can view product options of all merchants or individual ones. - -To filter the product options by merchants, in the **Merchants** dropdown, select a merchant. The **Product options list** table will display only the product options of the selected merchant. - -## Viewing a product option - -To view a product option, select **View** next to the desired product option. - -## Editing general settings of a product option - -To edit general settings of a product option, follow these steps: -1. Select **Edit** next to the product option you want to edit the general settings of. -2. Update the desired settings. -3. Select **Save**. - This refreshes the page with the success message displayed. - -### Reference information: Editing general settings of a product option - -The following table describes the attributes you enter and select while editing product options. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -| Group name translation key | Glossary key of the product option group. You can enter this value only when [creating product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html). | -| Tax Set | Conditions under which the product option group is taxed. To learn how to create tax sets, see [Managing tax sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html). | -| Option name translation key | Glossary key for the product option value. You can enter this value only when [creating product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html). | -| SKU | Unique identifier of the product option value. You can enter this value only when [creating product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html). | -| Gross price and Net price | Price values of the product option value for gross and net modes. Prices are integer values and, in the database, they are stored in their normalized form. For example, `4EUR` is stored as `400`. If you do not define a price for a product option value, it is considered *inactive* for that specific currency and price mode. If a price is `0`, it is considered *free of charge*.| -| Group name | Option group name that's displayed on the Storefront. | -| Option name | Option name that's displayed on the Storefront. | - - -## Assigning products to a product option - -To assign products to a product option, follow these steps: -1. Select **Edit** next to the product option you want to assign product to. -2. On the **Edit product option** page, switch to **Products** tab. -3. Select the desired products. -4. Select **Save** - This refreshes the page with the success message displayed. - -**Tips and tricks** -* To select all the products on the page, select **Deselect all on the page**. This is usually useful when you filter the products using the search field. -* After selecting products, you can view the products to be assigned in the **Products to be assigned** subtab. To unselect a product from being assigned, select **Remove** next to the desired product. - -## Deassigning products from a product option - -To deassign products from a product option, follow these steps: -1. Select **Edit** next to the product option you want to deassign product from. -2. On the **Edit product option** page, switch to **Products > Assigned products** subtab. -3. Clear the desired products. -4. Select **Save**. - This refreshes the page with the success message displayed. - -**Tips and tricks** -* To clear all the products on the page, select **Deselect all on the page**. This is usually useful when you filter the products using the search field. -* After clearing the products, you can view the products to be deassigned on the **Products to be deassigned** subtab. To unselect a product from being deassigned, select **Remove** next to the desired product. - -## Activating and deactivating a product option - -To activate a product option, select **Activate** next to the desired product option. - -To deactivate a product option, select **Dectivate** next to the desired product option. diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-product-reference-information.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-product-reference-information.md deleted file mode 100644 index 8a32a8dcdac..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-product-reference-information.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: "Abstract product: reference information" -last_updated: Apr 19, 2021 -description: This document contains reference information for creating and editing concrete and abstract products. -template: back-office-user-guide-template ---- - -## Create/edit abstract product - -The following tables describe the attributes that you use when creating and editing concrete and abstract products. - -{% info_block infoBox "Info" %} - -The set of tabs for the **Create** and **Edit** pages, as well as for abstract and concrete products, is different. Hence, the additional columns with identifiers are added for your convenience. - -{% endinfo_block %} - -### General tab - -| ATTRIBUTE | DESCRIPTION | CREATE ABSTRACT PRODUCT | UPDATE ABSTRACT PRODUCT | -|-|-|-|-| -| Store relation | Defines the store for which the product can be available. You can select multiple values. | Yes | Yes | -| SKU Prefix | Number that you assign to the product will help track unique information related to that product. | Yes | Display Only | -| Name | Name of your product that is displayed in the online store for your customers. | Yes | Yes | -| Description | Description of the product that your customer sees in the online store. | Yes | Yes | -| New from New to | Defines the period of time for which a dynamic label New will be assigned to the product. Either no dates can be selected, or both. | Yes | Yes | - -### Price & Stock tab - -| ATTRIBUTE | DESCRIPTION | CREATE ABSTRACT PRODUCT | UPDATE ABSTRACT PRODUCT | -|-|-|-|-| -| Merchant Price Dimension | **B2B Only**
Allows selecting a merchant relation and setting up a specific price for a specific merchant. If the Default value is selected, the prices will be the same for everyone. The values available for selection derive from [Marketplace > Merchant Relations](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/merchant-relations/edit-merchant-relations.html). Only one value can be selected. | Yes | Yes | -| Gross price Net price | Price value for gross and net mode. The price you populate is inherited by all product variants you add during the abstract product creation. | Yes | Yes | -| Default Original | Default prices are prices your customers will pay, whereas original prices are the "previous price" in case you want to display promotions. If you specify only a default price, it will be displayed just like a normal product price. However, if both prices are specified, the original one will appear crossed out in the shop. | Yes | Yes | -| Add Product Volume Price
Edit Product Volume Price | Once selected, the *Add volume price* (*Edit volume price*) page opens. This option lets you define specific prices for a specific quantity of products that a customer selects. It works only in the case of Default prices. The **Add Product Volume Price** button appears only when the gross and/or net prices for a store are set up beforehand and saved. *Edit Product Volume Price* appears only if the volume price has already been set up for a currency. | No | Yes | -| Tax Set | Conditions under which a product is going to be taxed. The values available for selection derive from [Taxes > Tax Sets]/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html). Only one value can be selected. | Yes | Yes | - -### Variants tab - -{% info_block infoBox "Info" %} - -No values are available for selection when you create a product bundle. When you create a bundle, one product variant will be added by default. - -{% endinfo_block %} - -* *While creating* an abstract product, you see a list of super attributes that derive from [Catalog > Attributes](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/managing-product-attributes.html). You can select as many super attributes as you need and define from one to many values for them (those values will define the difference between the product variants). Please keep in mind that moving forward, you will be able to create product variants only based on the selected super attributes. To add more product variants in the future, add at least one super attribute and define at least one value for it. - -* *While editing the abstract product/product bundle*, you see a table that displays the product variants that exist for this abstract product. From this page, you can view, edit, and manage attributes [for the product variant](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/managing-product-attributes.html). - -### SEO tab - -| ATTRIBUTE | DESCRIPTION | CREATE ABSTRACT PRODUCT | UPDATE ABSTRACT PRODUCT | -|-|-|-|-| -| Title | Meta title for your product. | Yes | Yes | -| Keywords | Meta keywords for your product. | Yes | Yes | -| Description | Meta description for your product. | Yes | Yes | - -### Image tab - -| ATTRIBUTE | DESCRIPTION | CREATE ABSTRACT PRODUCT | UPDATE ABSTRACT PRODUCT | -|-|-|-|-| -| Image Set Name | Name of your image set. | Yes | Yes | -| Small | Link of the image that is going to be used in the product catalogs. | Yes | Yes | -| Large | Link to the image that is going to be used on the product details page. | Yes | Yes | -| Sort Order | If you add several images to an active image set, specify the order in which they are to be shown in the frontend and backend using the *Sort Order* fields. The order of the images is defined by order of entered numbers where the image set with the sort order "0" is the first to be shown. | Yes | Yes | - -## Scheduled Prices tab - -On this tab, there is a table with the scheduled prices imported via a CSV file. The following information is available: - -* Currency, store, net, and gross price values. - -* *Start from* (included) and *Finish at* (included) values that identify a period of time when a specific price is going to be set for a product automatically. - -## View Abstract Product page -On this page, you can view all the information entered while creating or editing an abstract product. - -{% info_block infoBox "Info" %} - -For the [Marketplace](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-concept.html) projects, you can check what merchant owns the product on this page. - -{% endinfo_block %} diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/creating-abstract-products.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/creating-abstract-products.md deleted file mode 100644 index 67a4d0ed9ba..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/creating-abstract-products.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Creating abstract products -last_updated: Jul 27, 2021 -description: This guide explains how to create abstract products in Marketplace. -template: back-office-user-guide-template ---- - -## Prerequisites - -To start working with products: -1. To create product variants of abstract products, [create at least one super attribute](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/creating-product-attributes.html). -2. Go to **Catalog > Products**. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -{% info_block warningBox "Warning" %} - -You can add super attributes to product variants only when creating an abstract product. - -{% endinfo_block %} - -{% info_block errorBox "Create at least one product variant" %} - -To be able to add product variants after creating an abstract product, add at least one product variant while creating the abstract product. - -{% endinfo_block %} - - -## Defining general settings - -To create an abstract product: -1. In the top right corner, click **+Create Product**. -The **Create a Product** page opens. -2. On the **General** tab, define general settings: - 1. Select one or more **Store relations**. - 2. In **SKU Prefix**, enter an SKU prefix. - 3. In **Name** and **Description**, enter a name and description for all the locales. - 4. Optional: Select **New from** and **New to** dates. - 5. Click **Next >** and follow [Defining prices](#defining-prices). - This opens the **Prices & Tax** tab. - -### Reference information: Defining general settings - -The following table describes the attributes you enter and select when defining general settings. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -| Store relation | Defines the [stores](/docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-multiple-stores.html) the product will be available in.
You can select multiple values. | -| SKU Prefix | Unique product identifier that will be used to track unique information related to the product. | -| Name | Name that will be displayed for the product on the Storefront. | -| Description | Description that will be displayed for the product on the Storefront. | -| New from
New to | Defines the period of time for which:
  • A [dynamic product label](/docs/scos/user/features/{{page.version}}/product-labels-feature-overview.html) *New* will be assigned to the product.
  • The product will be assigned to the *New* [category](/docs/scos/user/features/{{page.version}}/category-management-feature-overview.html)

You can either select no dates or both. | - - -## Defining prices - -On the **Prices & Tax** tab, define prices: - 1. B2B Shop: Optional: To define prices for a merchant, select a **Merchant Price Dimension**. - 2. Enter **DEFAULT** prices for all the desired locales and currencies. - 3. Optional: To display promotions, enter **ORIGINAL** prices for the desired locales and currencies. - 4. Select a **Tax Set**. - 5. Select **Next >** and follow [Defining product variants](#defining-product-variants). - This opens the **Variants** tab. - - -### Reference information: Defining prices - -The following table describes the attributes you enter and select when defining prices. - -| ATTRIBUTE |DESCRIPTION | -| --- | --- | -|Merchant Price Dimension| B2B only
Defines the [merchant](/docs/scos/user/features/{{page.version}}/merchant-custom-prices-feature-overview.html) the prices will apply to.
If you select **Default prices**, the prices will apply to all customers.
To [manage merchant relations](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/merchant-relations/edit-merchant-relations.html) go to **Marketplace > Merchant Relations**. | -| Gross price
Net price | Gross and net value of the product. A gross prices is a price after tax. A net price is a price before tax.
If a product variant of the abstract product does not have a price, it [inherits](/docs/marketplace/user/features/{{page.version}}/marketplace-product-feature-overview.html) the price you enter here. | -|Default
Original | Default price is the price a customer pays for the product. An original price is a price displayed as a strikethrough beside the default price on the Storefront. The original price is optional and is usually used to indicate a price change. | -| Tax Set | Conditions under which the product will be taxed.
To [manage tax sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html), go to **Taxes** > **Tax Sets**.| - -## Defining product variants - -On the **Variants** tab, define product variants: - 1. Select one or more super attributes that define your product variants. - 2. In the field next to the super attribute you've selected, select one or more product attribute values. - 3. Repeat the previous step until you select at least one value for each selected super attribute. - 4. Select **Save** and follow [Defining meta information](#defining-meta-information). - The page refreshes with the created product variants displayed in the table. - - ![Defining product variants](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+user+guide/Catalog/Products/Abstract+products/Creating+abstract+products/defining-product-variants.gif) - -### Reference information: Defining product variants - -On the **Variants** tab, you can see all the existing [super attributes](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-attributes-overview.html#super-attributes). You can [create](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/creating-product-attributes.html) or [manage](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/managing-product-attributes.html) super attributes in **Catalog > Attributes**. - -You can select as many super attributes as you need and define one or more values for them. For each product attribute value you select, a product variant will be created. After creating the abstract product, you will be able to create new product variants based on the super attributes you select when creating the abstract product. - -## Defining meta information - -Optional: Add meta information: -1. Switch to the **SEO** tab. -2. Enter the following for the desired locales: - * **Title** - * **Keywords** - * **Description** -2. Select **Save** and follow [Adding images](#adding-images). - -### Reference information: Defining meta information - -The following table describes the attributes you enter and select when defining meta information. - -| ATTRIBUTE |DESCRIPTION | -| --- | --- | -|Title| Meta title that will be used for the abstract product.| -|Keywords| Meta keywords that will be used for the abstract product. | -|Description| Meta description that will be used for the abstract product.| - - -## Adding images - -Optional: Add images for the product: -1. Click on the **Image** tab. -2. Select a locale you want to add images for. -3. Select **Add image set**. -4. Enter an **Image Set Name**. -5. Repeat steps *2* and *3* until you add the desired number of image sets. -6. In the desired image set, enter the following: - * **Small Image URL** - * **Large Image URL** - * **Sort order** -7. Optional: Select **Add image** and repeat the previous step until you add all the desired images for this locale. -8. Repeat steps *1* to *6* until you add images for all the desired locales. -9. Select **Save**. -The page refreshes with the success message displayed. - -### Reference information: Adding images - -The following table describes the attributes you enter and select when adding images. - -| ATTRIBUTE |DESCRIPTION | -| --- | --- | -| *Default* locale | Images from this locale will be displayed for the product in the locales images are not added for. | -| Image Set Name | Name of image set.| -| Small | Link to the image that will be displayed for the product in product catalogs.| -|Large| Link to the image that will be displayed for the product on the *Product details* page. | -|Sort Order| Arrenges the images displayed for the product in an ascending order. The smalles number is `0`. | - -**Tips and tricks** -
To delete an image set with all its pictures, select **Delete image set**. - -## Next steps - -[Edit abstract products](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/abstract-products/editing-abstract-products.html) diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/editing-abstract-products.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/editing-abstract-products.md deleted file mode 100644 index 11017fea86d..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/abstract-products/editing-abstract-products.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Editing abstract products -last_updated: Jul 27, 2021 -description: This guide explains how to edit abstract products in Marketplace. -template: back-office-user-guide-template ---- - -This document describes how to edit abstract products. - -## Prerequisites - -To start working with abstract products, go to **Catalog > Products**. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Editing general settings of an abstract product - -To edit general settings of an abstract product: - -1. Next to the product you want to edit, select **Edit**. - This takes you to the **Edit Product Abstract [SKU]** page. -2. On the **General** tab, update **Store relations**. -3. Update **Name** and **Description** for the desired locales. -4. Update **New from** and **New to** dates. -5. Select **Save**. - -### Reference information: Editing general settings of an abstract product - -The following table describes the attributes you enter and select when editing general settings of an abstract product. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -| Store relation | Defines the [stores](/docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-multiple-stores.html) the product is available in.
You can select multiple values. | -| SKU Prefix | Unique product identifier that helps to track unique information related to the product. | -| Name | Name that's displayed for the product on the Storefront. | -| Description | Description that's displayed for the product on the Storefront. | -| New from
New to | Defines the period of time for which:
  • A [dynamic product label](/docs/scos/user/features/{{page.version}}/product-labels-feature-overview.html) *New* is assigned to the product.
  • The product is assigned to the *New* [category](/docs/scos/user/features/{{page.version}}/category-management-feature-overview.html).

You can either select no dates or both. | - -## Editing prices of an abstract product - -To edit prices of an abstract product: - -1. Next to the product you want to edit, select **Edit**. -2. On the **Edit Product Abstract [SKU]** page, click on the **Prices & Tax** tab. -3. B2B Shop: Select a **Merchant Price Dimension**. -4. Enter **DEFAULT** prices for the desired available locales and currencies. -5. Optional: Enter **ORIGINAL** prices for the desired available locales and currencies. -6. Select the **Tax Set**. -7. Select **Save**. - -### Reference information: Editing prices of an abstract product - -The following table describes the attributes you enter and select when editing prices of an abstract product. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -|Merchant Price Dimension| B2B only
Defines the [merchant](/docs/scos/user/features/{{page.version}}/merchant-custom-prices-feature-overview.html) the prices apply to.
If **Default prices** is selected, the prices apply to all customers.
To [manage merchant relations](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/merchant-relations/edit-merchant-relations.html) go to **Marketplace > Merchant Relations**. | -| Gross price
Net price | Gross and net value of the product. A gross prices is a price after tax. A net price is a price before tax.
If a product variant of the abstract product does not have a price, it [inherits](/docs/marketplace/user/features/{{page.version}}/marketplace-product-feature-overview.html) the price you enter here. | -|Default
Original| A default price is the price a customer pays for the product. An original price is a price displayed as a strikethrough beside the default price on the Storefront. The original price is optional and is usually used to indicate a price change. | -|Add Product Volume Price
Edit Product Volume Price| This option lets you define the prices that are based on the quantity of products that a customer selects. Works only with the default prices.
Add Product Volume Price appears only when the price for a currency was set up and saved.
Edit Product Volume Price appears only what the volume price was already set up for a currency.||✓| -|Tax Set|The conditions under which a product is going to be taxed.
The values available for selection derive from **Taxes > Tax Sets**
Only one value can be selected.| - -## Editing volume prices of an abstract product - -To edit volume prices of an abstract product: - -1. Next to the product you want to edit add volume prices of, select **Edit**. -2. On the **Edit Product Abstract [SKU]** page, switch to the **Price & Tax** tab. -3. Next to the store you want to edit volume prices for, select **> Edit Product Volume Price**. -4. On the **Add volume prices** page, enter a **Qunatity**. -5. Enter a **Gross price**. -6. Optional: Enter a **Net price**. -7. Optional: To add more volume prices than the number of the rows displayed on the page, select **Save and add more rows**. -8. Repeat steps 4 to 7 until you edit all the desired volume prices. -9. Select **Save and exit**. This opens the **Edit Product Abstract [SKU]** page with the success message displayed. - - - -## Editing product variants of an abstract product - -To edit a product variant, see [Editing product variants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/abstract-products/editing-abstract-products.html#editing-product-variants-of-an-abstract-product). -To create a product variant, see [Creating product variants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/concrete-products/creating-product-variants.html). - -## Editing meta information of an abstract product - -To edit meta information: -1. Next to the product you want to edit, select **Edit**. -2. On the **Edit Product Abstract [SKU]** page, switch to the **SEO** tab. -3. Update the following for the desired locales: - * **Title** - * **Keywords** - * **Description** -4. Select **Save**. The page refreshes with the success message displayed. - -### Reference information: Editing meta information of an abstract product - -The following table describes the attributes you enter and select when editing meta information of an abstract product. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -|Title|Meta title for your product.| -|Keywords|Meta keywords for your product.| -|Description|Meta description for your product.| - -## Editing product images of an abstract product - -To edit product images: -1. Next to the product you want to edit, select **Edit**. -2. On the **Edit Product Abstract [SKU]** page, switch to the **Image** tab. -3. Select a locale you want to update images for. -4. Update images: - * To add a new image set, select **Add image set** - * To add a new image, select **Add image**. - * To update an image, update the following: - * **Small Image URL** - * **Large Image URL** - * **Sort order** - * To delete large and small images, select **Delete image**. - * To delete an image set with its images, select **Delete image set**. -5. Repeat step *4* until you update images for all the desired locales. -6. Select **Save**. The page refreshes with the success message displayed. - -### Reference information: Editing product images of an abstract product - -The following table describes the attributes you enter and select when editing product images of an abstract product. - -| ATTRIBUTE | DESCRIPTION | -| --- | --- | -|Image Set Name |Name of your image set.| -|Small |Link of the image that is going to be used in the product catalogs.| -|Large |Link to the image that is going to be used on the product details page.| -|Sort Order |If you add several images to an active image set, specify the order in which they are to be shown in the frontend and backend using **Sort Order** fields. The order of images is defined by the order of entered numbers where the image set with sort order "0" is the first to be shown.| diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/concrete-products/creating-product-variants.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/concrete-products/creating-product-variants.md deleted file mode 100644 index a3e72d7d334..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/concrete-products/creating-product-variants.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Creating product variants -last_updated: Jul 27, 2021 -description: This guide explains how to create product variants in Marketplace. -template: back-office-user-guide-template ---- - -This document describes how to add a product variant for an abstract product. - -## Prerequisites - -To create a product variant, navigate to **Catalog > Products** section. - -Review the reference information before you start, or look up the necessary information as you go through the process. - -## Creating a product variant - -To create a product variant: - -1. Next to the abstract product you want to create a variant for, select **Edit**. -2. On the **Edit Abstract** page, select **Add Variant**. -3. On the **General** tab, do the following: - 1. Define a **SKU**: - * Enter a **SKU**.
OR - * Select **Autogenerate SKU**. - 2. Under **Super attributes**, define one or more super attributes: - * Select a value. - * Select **Use custom value** and, in the field the appears below, enter the value. - 3. Add product name and description and select **Searchable** if you want your product to be searchable by its name in the online store. - 4. Optional: Enter **Valid From** and **Valid To** dates to specify when the product should go online in the web-shop. - 5. Go to the **Price & Stock** tab. -4. On the **Price & Tax** tab, set prices and taxes for products: - 1. To take the prices over from the abstract product, select **Use prices from abstract product**. - - {% info_block warningBox "Note" %} - - The merchant relation prices are inherited by Product Variants as well. - - {% endinfo_block %} - - 2. Otherwise, enter Original and eventually Default prices for the product for Gross and Net price modes. - 3. **B2B only:** In **Merchant Price Dimension**, select the merchant relationship to define a special price per merchant relation. - 4. Select **Quantity** for the product and then select **Never out of stock** if you want the product to never go out of stock. -5. Optional: Click **Next** to go to **Image** to add images for the product and define the image order. -6. Optional: Click **Next** of select the **Assign bundled products** tab to create a bundles product. For more information, see [Creating and managing product bundles](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products/creating-abstract-products-and-product-bundles.html). -7. Click **Save**. -The page is refreshed and you can see two additional tabs: *Discontinue* and* Product Alternatives*. See [Discontinuing products](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/discontinuing-products.html) and [Adding product alternatives](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/adding-product-alternatives.html) to know more. - -{% info_block errorBox "Important" %} - -To make sure your product will be shown and searchable in your online store, we highly recommend you to go through the checklist in [HowTo - Make a Product Searchable and Shown on the Storefront](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-make-a-product-searchable-and-shown-on-the-storefront.html). - -{% endinfo_block %} - -### Reference information: Creating a product variant - -This section describes the attributes you enter and select when creating a product variant. - -#### General tab - -| ATTRIBUTE |DESCRIPTION | CREATE CONCRETE PRODUCT | UPDATE CONCRETE PRODUCT| -| --- | --- | --- | --- | -|Store relation | Defines the store for which the product can be available.
You can select multiple values. | **No**|**No**| -| SKU Prefix | A number that you assign to the product will help to track unique information related to that product. | **Yes**|**Display Only**| -| Autogenerate SKU | Allows the system to autogenerate the SKU once you click **Save**. | **Yes**|**No**| -| Super Attributes | This section is only available if you have added more than one super attribute and defined more than one value for it.
For example, if you selected the **color** to be a super attribute and defined **green**, **white**, and **black**, you will see "**color**" in this section and a drop-down with the colors you defined.
Only one value can be selected. |**Yes**|**No**| -| Name | The name of your product that will be displayed in the online store for your customers. | | **Yes**|**Yes** | -| Description | The description of the product that your customer sees in the online store. | **Yes** |**Yes** | -| Searchable | A checkbox that defines if the concrete product can be searched via the Search function in the online store. If not selected, no values will be displayed when searching for this product. | **Yes** | **Yes**| -| Valid from
Valid to | Defines the period of time when the product is in active state. The **Valid from** date triggers the activation, while the **Valid to** date triggers the deactivation. Either no dates can be selected, or both. |**Yes** |**Yes** | - - -#### Price & Stock tab - -| ATTRIBUTE |DESCRIPTION | CREATE CONCRETE PRODUCT | UPDATE CONCRETE PRODUCT| -| --- | --- | --- | --- | -|Use prices from abstract product|Once the checkbox is selected, the prices from the abstract product are taken over.|**Yes**|**No**| -|Merchant Price Dimension|**B2B Only**
The drop-down list that lets you select a merchant relation and set up a specific price for a specific merchant.
If the Default value is selected, the prices will be the same for everyone.
The values available for selection derive from **Merchants > Merchant Relations**.
Only one value can be selected.|**Yes**|**Yes**| -| Gross price
Net price | The price value for gross and net mode.
For concrete products, the prices are inherited from their abstract product and can be updated while editing the concrete product.|**Yes** |**Yes** | -|Default
Original|Default prices are the prices your customers will pay, whereas original prices are the "previous prices" in case you want to display promotions. If you specify only a default price, it will be displayed just like a normal product price. However, if both prices are specified, the original one will appear crossed out in the shop.|**Yes**|**Yes**| -|Add Product Volume Price
Edit Product Volume Price|Once selected, the Add volume price (Edit volume price) page opens. This option lets you define specific prices for a specific quantity of products that a customer selects. Works only in case of Default prices.
**Add Product Volume Price** appears only when the price for a currency was set up and saved.
**Edit Product Volume Price** appears only what the volume price was already set up for a currency.|**No**|**Yes**| -|(Stock) Type|Display-only field that displays warehouses according to your store|**Yes**|**Yes**| -|(Stock) Quantity|The number of items available in the warehouse.|**Yes**|**Yes**| -|(Stock) Never out of stock|The checkbox that once selected will make the product always available to be purchased.|**Yes**|**Yes**| - - -#### Image tab - -| ATTRIBUTE |DESCRIPTION | CREATE CONCRETE PRODUCT | UPDATE CONCRETE PRODUCT| -| --- | --- | --- | --- | -|Image Set Name|The name of your image set.|**Yes**|**Yes**| -|Small|The link of the image that is going to be used in the product catalogs.|**Yes**|**Yes**| -|Large|The link to the image that is going to be used on the product details page.|**Yes**|**Yes**| -|Sort Order|If you add several images to an active image set, specify the order in which they are to be shown in the frontend and backend using Sort Order fields. The order of images is defined by the order of entered numbers where the image set with sort order "0" is the first to be shown.|**Yes**|**Yes**| - -#### Discontinue tab - -Available on the Edit page only. -Once you select to discontinue the product, you can add a note about that on this tab. - - -#### Product Alternatives tab - -The only field available is **Add Product Alternative by Name or SKU**. Here it is enough to enter three characters of a product name or SKU to see the autosuggested product list. From one to many values can be selected. If there is no need to set up an alternative product, you can skip this tab. - -**What's next?** - -Once you have set things up, you will most likely need to know what managing actions you can do with your products. See articles in the [Managing products](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/managing-products/managing-products.html) section. diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/managing-products/managing-products.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/managing-products/managing-products.md deleted file mode 100644 index 0b61bee4e77..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/managing-products/managing-products.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Managing products -last_updated: Jul 28, 2021 -description: This guide explains how to manage abstract and concrete products in Marketplace. -template: back-office-user-guide-template ---- - -This document describes how to manage abstract and concrete products. - -To start managing products, go to **Catalog > **Products**. - -## Activating a product - -The abstract product is inactive until at least one product variant is activated. You should understand that there is no option to activate - -To activate a product: -1. Navigate to the product variant of the product that you want to activate: **Edit abstract product > Variant > Edit product variant**. -2. Click **Activate** on the top of the **Edit Concrete Product** page. -Starting now, the product is visible to the customers of your online store. - -{% info_block infoBox "Note" %} - -Each variant needs to be activated to be visible to your customers. - -{% endinfo_block %} - -**Tips and tricks** -
If you want to hide the product variant from your customers at some point of time, you just deactivate it using the same procedure described above. This deactivates only the product variant. The abstract product is active until at least one its variant is active. - -## Viewing a product - -To review the product details without actually editing them, do the following: -1. In the **Actions** column of the abstract product you want to view, click **View**. -2. On the **View Product** page, you can navigate to the view product variant, initiate the editing flow for it, or manage its attributes. - -**Tips and tricks** -
If you notice something you would like to change for your product, in the top right corner of the page, click **Edit**. - -### Filtering product options by merchants - -You can view product options of all merchants or individual ones. -To filter the product options by merchants, in the **Merchants** dropdown, select a merchant. The **Product options list** table will display only the product options of the selected merchant. - -## Managing product attributes - -When you see the **Manage Attributes** option, keep in mind that you manage the attributes like brand but not the super attributes. Such attributes like brand do not define the product variants differentiation, meaning they are not used while defining the concrete products of an abstract product. They rather go to the details section on the product details page in your online store. You can manage attributes for both abstract and concrete products. - -{% info_block infoBox "Info" %} - -The attributes that you add are taken from the **Products > Attributes** section of the Back Office. So the attribute you want to define should exist in that section. - -{% endinfo_block %} - -To manage the product attributes: -1. Select the **Manage Attributes** option for the concrete or abstract product in the **Actions** column or from the top right corner of the **Edit** page. -2. On the **Manage Attributes for Product** page, start typing the first three letters of the attribute key. -3. Select the suggested value and click **Add**. -4. In the **Attributes** section, define the **Default** value for your attributes and specify the value for the **locales**. -Repeat the procedure if needed. -5. Once done, click **Save**. -Check the **References** section to see the examples of how the attributes look like. - -**What's next?** -
Review the other articles in the **Products** section to know more about product management. Also, review the **References** section to learn more about the attributes you see, select, and enter on the product pages. diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/products-reference-information.md b/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/products-reference-information.md deleted file mode 100644 index a30d5e3607d..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/catalog/products/products-reference-information.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Products: reference information" -last_updated: Feb 02, 2021 -description: This document describes the attributes that you see and enter on different product's pages. -template: back-office-user-guide-template - ---- - -This document describes the attributes that you see and enter on different product pages. - ---- - -## Products page - -On the **Products** page, you see the following: - -* Product ID (autogenerated), name, and SKU. -* The tax set applied to this product. -* The number of variants this product has. -* The status of the product (active/inactive). -* Product type (product, gift card, product bundle). -* Stores where the product is available (in case you have multiple stores in your project). - -{% info_block infoBox "Info" %} - -For the [Marketplace](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-concept.html) project, you can also filter the products belonging to a certain Merchant: - -{% endinfo_block %} - - -![merchants-switcher-on-products](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/products/products-reference-information/merchants-switcher-on-products.gif) - -{% info_block infoBox "Info" %} - -Upon entering the page, all merchants are enabled by default. - -{% endinfo_block %} - ---- - -A set of the following examples will help you understand what your online store customers will see once you set up volume prices, product alternatives, original and default prices, and discontinue a product. You will also find an example of a product bundle. - ---- - -## Volume prices - -Let's say you have a product that you want to sell at a special price if a user wants to buy a specific number of the same product. For example, a Smartphone with a flash memory equals 16GB costs 25 Euros per item, but you have defined that if a user buys three items, the cost will be 23 Euros instead of 25. - -![volume-prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Volume-prices.gif) - -## Discontinued products and their alternatives - -Let's say the Smartphone with a flash memory equals 16GB is no longer popular, and it is more efficient for you to discontinue it. But you need to propose some replacements for it to make sure that the user journey is successful. You discontinue this product variant and set up other products to be displayed as alternatives. - -![discontinued-and-alternative](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Discontinued-and-Alternative.gif) - -## Product bundles - -Let's say you want to simplify the user journey and allow buying a bundle of products that are commonly used together (for example, pens, notebooks, copy paper, and other stationery). You create a bundle for that purpose. - -![bundle](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Bundle.gif) - -## Default and original prices - -If you want to display the price difference to show what the price was before and how it changed, you add both, Default and Original prices. The default prices are displayed in the online store as a current price, while the original one is displayed strikethrough. - -![default-and-original-prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/default-and-original-prices.gif) diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchant-users.md b/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchant-users.md deleted file mode 100644 index 60200c7337f..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchant-users.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Managing merchant users -last_updated: Apr 23, 2021 -description: This guide explains how Marketplace administrator can manage merchant users in the Back Office. -template: back-office-user-guide-template ---- - -A merchant user is a user that performs tasks on behalf of the merchant in the Merchant Portal. Marketplace administrator can manage merchant users in the Back Office. - ---- - -## Prerequisites - -To start managing merchant users: -1. Navigate to the **Marketplace > Merchants**. -2. Next to the merchant you want to create a merchant user for, click **Edit** in the **Actions** column. You are taken to the **Edit Merchant: [Merchant ID]** page. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Creating a merchant user - -{% info_block infoBox "Info" %} - -To create a merchant user, create a merchant first. - -{% endinfo_block %} - -To create a merchant user, do the following: - -1. On the **Edit Merchant [Merchant ID]** page, go to the **Users** tab. - -2. Click **+Add New User**. - -3. Fill in the required information. - -4. Click **Create**. - -By default, each merchant user obtains the role of Merchant Portal Administrator. To change it, [edit the Back Office](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-users/editing-users.html) user record. - -### Reference information: Creating a merchant user - -This section contains the attributes description you see when creating a merchant user. - -#### Users tab - -On the **Users** tab, you see a table with all the merchant users available for the merchant. The following information is included in the table: -* Merchant user ID -* Email -* First Name -* Last Name -* Merchant user status -* Actions - -![merchant-users-page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/Merchants/merchant-users-page.png) - -#### Create Merchant user page - -The following table describes the attributes you enter and select when creating merchant users. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Email | Text field where you specify the email address of the merchant user. The email with the reset password instructions will be sent to this email address. | ✓ | -| First name | Text field where you specify the first name of the merchant user. | ✓ | -| Last name | Text field where you specify the last name of the merchant user. | ✓ | - -## Editing the merchant user - -To edit a merchant user, do the following: - -1. On the **Edit Merchant** page, on the **Users** tab, click **Edit** for a merchant user you want to edit. - -On the **Edit Merchant user** page, edit the merchant user details. - -### Reference information: Editing a merchant user - -The following table describes the attributes you enter and select when editing merchant users. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Email | Text field where you specify the email address of the merchant user. The email with the reset password instructions will be sent to this email address. | ✓ | -| First name | Text field where you specify the first name of the merchant user. | ✓ | -| Last name | Text field where you specify the last name of the merchant user. | ✓ | -| Status | Drop-down menu where you can update the status of the merchant user. Can be: Active, Blocked, Deleted. | ✓ | - -## Activating and deactivating the merchant users - -Once the merchant user is created, they need to be activated in order to be able to access the Merchant Portal. - -{% info_block infoBox "Info" %} - -Make sure that the merchant is approved in the Back Office to be able to proceed with the merchant user activation. You will not be able to activate the merchant user if the merchant is denied. - -{% endinfo_block %} - -To activate the merchant user, click **Activate** in the **Actions** column of the **Merchant Users** page. - -Once the merchant user is activated, they receive the email message with the reset password instructions to the email address specified at the step of [merchant user creation](#creating-a-merchant-user). - -{% info_block infoBox "Info" %} - -To deactivate the merchant user, click **Deactivate** in the **Actions** column of the **Merchant Users** page. - -{% endinfo_block %} - -{% info_block infoBox "Info" %} - -The merchant user gets automatically deactivated when the merchant gets denied. - -{% endinfo_block %} - -Once the merchant user is created and activated, they can log in to the Merchant Portal. - -## Deleting merchant users - -If you do not need a merchant user anymore, you can delete it. - -To delete the merchant user, click **Delete** on the **Edit Merchant** page, on the **Users** tab. - -{% info_block infoBox "Info" %} - -In the current implementation, the **Delete** button only restricts the merchant user’s access to the Merchant Portal. However, you can change the behavior in your project. - -{% endinfo_block %} diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchants.md b/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchants.md deleted file mode 100644 index 3be608f32a2..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/merchants/managing-merchants.md +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: Managing merchants -last_updated: Apr 23, 2021 -description: This guide explains how to create and manage merchant records on the Merchants page. -template: back-office-user-guide-template ---- - -On the **Merchants** page, you can manage the merchants' records and facilitate the merchant registration and approval process, as well as apply any changes to the existing merchants' records. This document describes the procedures of creating and managing merchant records. - ---- - -## Prerequisites - -To start managing merchants, navigate **Marketplace > Merchants**. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Creating merchants - -To create a merchant, do the following: - -1. On the **Merchants** page, in the top right corner, click **+Add Merchant**. -2. Fill in the required information. -3. Click **Save**. - -### Reference information: Creating merchants - -The following table describes the attributes you enter and select when creating merchants. - - -#### General tab - -This tab contains the main merchant information. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Name | Text field where you specify the name of the merchant that you create. | ✓ | -| Registration number | Text field where you specify the number assigned to the company at the point of registration. | | -| Merchant Reference | Text field where you specify a unique identifier between the administrator's ERP and Spryker. | ✓ | -| Email | Field where you specify the email address associated with the merchant.
{% info_block warningBox "Note" %}The email address is unique, meaning one value cannot be used for several merchants. If the merchant with the same email already exists, the following message is displayed for the *Email* field when trying to save the record:
"Email is already used."{% endinfo_block %}
However, the email can be the same as the email of a Marketplace administrator that operates in the administration interface (Back Office).
{% info_block warningBox "Note" %}This email will be used by a merchant to log in to the Merchant Portal{% endinfo_block %}. | ✓ | -| Is Active | Checkbox that gets the merchant profile page on the Storefront online once checked. | | -| Store Relation | List of stores where the merchant is present. | | -| Merchant URL | Text field where, during editing, you can update the URL that is used to access the merchant profile. The profile URL is specified per locale. | ✓ | -| Warehouses | Name of the Warehouse assigned to the merchant. For more details about the warehouses, see [Merchant Warehouse](/docs/marketplace/user/features/{{page.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management). | | - -#### Contact Person Details tab - -This tab contains information about the contact person. The contact person information is going to be used to create a **Merchant Admin User** who will be able to log in to **Merchant Portal**. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Title | Formal salutation for your contact person (for example, Mr, Ms, Mrs, Dr). There is no default value selected. | | -| Role | Text field where you can define the role the contact person performs. | | -| Phone | Text field where you can enter the phone number of the contact person. | | -| First Name | Text field where you can specify the first name of the contact person. | ✓ | -| Last Name | Text field where you can specify the last name of the contact person. | ✓ | - -#### Merchant Profile tab - -This tab includes the public information about the merchant that is displayed in the Storefront). - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Public Email | Text field where you specify the business/public email address for the merchant. | | -| Public Phone | Text field where you specify the merchant's public phone number. | | -| Fax Number | Text field where you specify the merchant's fax number. | | -| Logo URL | Text field where you can specify the logo URL for the merchant profile. | | -| Description | Text field where you can add a description for the merchant for a locale. | | -| Average Delivery Time | Text field where you specify the average time during which the order will be shipped for a locale. | | -| Banner URL | Text field where you can add a link to the merchant's banner for a locale. | | -| Country | Drop-down list where you specify the country of the merchant's business address. There is no value selected by default. | | -| Street | Text field where you specify the street of the merchant's business address. | | -| Number | Text field where you can specify the number included in the merchant's business address. | | -| Zip Code | Text field where you specify the ZIP code of the merchant's business address. | | -| City | Text field where you specify the city of the merchant's business address. | | -| Addition to Address | Text field where you can specify any additional information included in the merchant's business address. | | -| Longitude | Text field that will be used to identify the merchant location. | | -| Latitude | Text field that will be used to identify the merchant location. | | - -#### Legal Information tab - -This tab contains legal information that is displayed on the **Merchant Profile** page in the Storefront. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Cancellation Policy | Standard WYSIWYG editor with text formatting options where you specify the cancellation policy for the merchant for a locale. | | -| Data Privacy | Standard WYSIWYG editor with text formatting options where you specify the data privacy statement for a locale. | | -| Imprint | Standard WYSIWYG editor with text formatting options where you specify imprint information for a locale. | | -| Terms and Conditions | Standard WYSIWYG editor with text formatting options where you specify the terms and conditions for the merchant for a locale. | | - -#### Users tab - -This tab contains information about creating and editing [merchant users](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) for the merchant. - -{% info_block infoBox "Info" %} - -To restrict access to the Merchant Portal, on the **Merchants** page, in **Actions**, you can create merchant users only after the merchant is created. During the merchant creation process, this tab exists, but all the actions are disabled." - -{% endinfo_block %} - -## Editing merchants - -To edit a merchant, do the following: - -1. On the **Merchants** page, in the **Actions** column, for a merchant you want to edit, click **Edit**. -2. On the **Edit Merchant** page, edit the merchant details. -3. To save the changes, click **Save**. - -### Reference information: Editing merchants - -The following table describes the attributes you enter and select when editing merchants. - -#### Overview of Merchants page - -On the **Overview of Merchants** page, you see a table with all the merchants. The following information is included in the table: -* Merchant ID -* Merchant Name -* Approval status. For more details about the statuses a merchant profile may have, check the [merchant statuses](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) section. -* Status (active/inactive). For more details about the statuses a merchant profile may have, check the [merchant statuses](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) section. -* Stores -* Actions - -![approving-and-denying-merchants](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/Merchants/merchants-page.png) - - -By default, the table is sorted by the merchant Id value. - -You can sort the table by other values (Name and Status) using the respective sort icon in the needed column. - - -#### General tab - -This tab contains the main merchant information. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Name | Text field where you specify the name of the merchant that you edit. | ✓ | -| Registration number | Text field where you specify the number assigned to the company at the point of registration. | | -| Merchant Reference | Text field where you specify a unique identifier between the administrator's ERP and Spryker. | ✓ | -| Email | Field where you specify the email address associated with the merchant.
{% info_block warningBox "Note" %}The email address is unique, meaning one value cannot be used for several merchants. If the merchant with the same email already exists, the following message is displayed for the *Email* field when trying to save the record:
"Email is already used."{% endinfo_block %}
However, the email can be the same as the email of a Marketplace administrator that operates in the administration interface (Back Office).
{% info_block warningBox "Note" %}This email will be used by a merchant to log in to the Merchant Portal"{% endinfo_block %}. | ✓ | -| Is Active | Checkbox that gets the merchant profile page on the Storefront online once checked. | | -| Store Relation | List of stores where the merchant is present. | | -| Merchant URL | Text field where, during editing, you can update the URL that is used to access the merchant profile. The profile URL is specified per locale. | ✓ | -| Warehouses | Name of the Warehouse assigned to the merchant. For more details about the warehouses, see [Merchant Warehouse](/docs/marketplace/user/features/{{page.version}}/marketplace-inventory-management-feature-overview.html#marketplace-warehouse-management). | | - -#### Contact Person Details tab - -This tab contains information about the contact person. The contact person information is going to be used to create a **Merchant Admin User** who will be able to log in to Merchant Portal. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Title | Formal salutation for your contact person (for example, Mr, Ms, Mrs, Dr). There is no default value selected. | | -| Role | Text field where you can define the role the contact person performs. | | -| Phone | Text field where you can enter or change the phone number of the contact person. | | -| First Name | Text field where you can specify the first name of the contact person. | ✓ | -| Last Name | Text field where you can specify the last name of the contact person. | ✓ | - -#### Merchant Profile tab - -This tab includes the public information about the merchant that is displayed in the Storefront). - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Public Email | Text field where you specify the business/public email address for the merchant. | | -| Public Phone | Text field where you specify the merchant's public phone number. | | -| Fax Number | Text field where you specify the merchant's fax number. | | -| Logo URL | Text field where you can specify the logo URL for the merchant profile. | | -| Description | Text field where you can add a description for the merchant for a locale. | | -| Average Delivery Time | Text field where you specify the average time during which the order is shipped for a locale. | | -| Banner URL | Text field where you can add a link to the merchant's banner for a locale. | | -| Country | Drop-down list where you specify the country of the merchant's business address. There is no value selected by default. | | -| Street | Text field where you specify the street of the merchant's business address. | | -| Number | Text field where you can specify the number included in the merchant's business address. | | -| Zip Code | Text field where you specify the ZIP code of the merchant's business address. | | -| City | Text field where you specify the city of the merchant's business address. | | -| Addition to Address | Text field where you can specify any additional information included in the merchant's business address. | | -| Longitude | Text field that is used to identify the merchant location. | | -| Latitude | Text field that is used to identify the merchant location. | | - -#### Legal Information tab - -This tab contains legal information that is displayed on the **Merchant Profile** page in the Storefront. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Cancellation Policy | Standard WYSIWYG editor with text formatting options where you specify the cancellation policy for the merchant for a locale. | | -| Data Privacy | Standard WYSIWYG editor with text formatting options where you specify the data privacy statement for a locale. | | -| Imprint | Standard WYSIWYG editor with text formatting options where you specify imprint information for a locale. | | -| Terms and Conditions | Standard WYSIWYG editor with text formatting options where you specify the terms and conditions for the merchant for a locale. | | - -#### Users tab - -This tab contains information about creating and editing [merchant users](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) for the merchant. - -{% info_block infoBox "Info" %} - -To restrict access to the Merchant Portal, on the **Merchants** page, in **Actions**, you can create merchant users only after the merchant is created. During the merchant creation process, this tab exists, but all the actions are disabled. - -{% endinfo_block %} - -## Approving and denying merchants - -Merchant approval is the process when a Marketplace administrator changes the status of the merchant record according to the flow described in the [Merchant statuses](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses) section. After the initial merchant registration, the status is always set to **Waiting for Approval** and is subject to change by a Marketplace administrator after their review. To approve the merchant, click **Approve Access** in the **Actions** column of the **Merchants** page. - -{% info_block infoBox "Info" %} - -To restrict access to the Merchant Portal, on the **Merchants** page, in the **Actions** column, click **Deny Access**. - -{% endinfo_block %} - -![approving-and-denying-merchants](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/Merchants/approving-and-denying-merchants.png) - -## Activating and deactivating merchants - -Activating or deactivating the merchant indicates whether the merchant profile page, product offers, and marketplace products are available in the Storefront or not. To activate the merchant, click **Activate** in the *Actions* column of the *Merchants* page. - -{% info_block infoBox "Info" %} - -You can deactivate the merchant by clicking Deactivate on the **Merchants** page in the **Actions** column. - -{% endinfo_block %} - -![activating-and-deactivating-merchants](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/Merchants/activating-mechants.png) - -{% info_block infoBox "Note" %} - -You can not delete merchants, you can only deactivate them. - -{% endinfo_block %} - -**What's next?** - -Once you have the merchant record available in the system, you can proceed with creating a merchant user to log in to the Merchant Portal. - -To know how to create those, see the [Managing merchant users](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html). diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/offers/managing-merchant-product-offers.md b/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/offers/managing-merchant-product-offers.md deleted file mode 100644 index f2e140bc5a1..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/offers/managing-merchant-product-offers.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Managing merchant product offers -last_updated: Apr 19, 2021 -description: This document describes how to view and manage merchant product offers in the Back Office. -template: back-office-user-guide-template ---- - -This document describes how to view and manage [merchant product offers](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html) in the Back Office. - -## Prerequisites - -To start working with offers, go to **Marketplace > Offers**. - -These instructions assume that there is an existing offer created by the Merchant in the Merchant Portal. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Approving or denying offers - -Only approved and active offers are available for purchase on the Storefront. - -To approve an offer, on the **Offers** page, in the **Actions** column, click **Approve** next to the offer you want to approve. - -You can deny the offer by clicking **Deny** on the **Offers** page in the **Actions** column. - -**Tips and tricks** - -You can sort by offers belonging to a certain Merchant: - -![filter-offers-by-merchant](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/offers/offers/filter-offers-by-merchant.gif) - -### Reference information: Approving or denying offers - -On the **Offers** page, there is a table with all the offers available in the Marketplace. The table includes: - -* Offer ID -* Reference -* Merchant -* SKU -* Name -* Status -* Visibility -* Stores -* Actions - -By default, the table is sorted by the **Offer ID** value. - -You can sort the table by other values (*Name* and *Status*) using the sorting icon in the needed column. - -![sort-by-other-values](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Marketplace/offers/offers-reference-information/back-office-offers.png) - -## Viewing an offer - -To view an offer, on the **Offers** page, in the **Actions** column, next to the offer you want to view, click **View**. - -### Reference information: Viewing an offers - -The following table describes the attributes on the **View Offer: _[Offer Reference]_** page: - -| SECTION | ATTRIBUTE | DESCRIPTION | -|-|-|-| -| Offer | Reference | Unique identifier of the merchant product offer in the system. | -| | Status | Current status of the offer. Can be:
  • waiting for approval
  • approved
  • denied
For details about the statuses flow, see [Product offer status](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html#product-offer-status). | -| | Visibility | Visibility state of the offer. Can be
  • active
  • inactive
For details about the visibility flow, see [Product offer status](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html#product-offer-status). | -| | Stores | Stores for which the offer is assigned. | -| Product | SKU | SKU of the product. | -| | Type | Type of the item. | -| | Name | Name of the product for every locale. | -| | Description | Description of the product for every locale. | -| Merchant | Merchant | Name of the merchant who owns the product. | -| | Merchant SKU | Product SKU of this offer in the Merchant system. | -| Price | | Table with the default and volume prices defined for the product offer in NET and GROSS mode. | -| Stock | | Stock for product offers in every store. | - - -## Related articles - -[Merchant Product Offer feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html) diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/orders/managing-marketplace-orders.md b/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/orders/managing-marketplace-orders.md deleted file mode 100644 index cc6bccee8a1..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/marketplace/orders/managing-marketplace-orders.md +++ /dev/null @@ -1,341 +0,0 @@ ---- -title: Managing marketplace orders -last_updated: Jul 15, 2021 -description: This document describes how to manage marketplace orders in the Back Office. -template: back-office-user-guide-template ---- - -This document describes how to manage marketplace orders. - -## Prerequisites - -To start managing marketplace orders, navigate to **Marketplace > Orders**. - -The instructions assume that there is an existing order with the *New* status. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Viewing marketplace orders - -To view a marketplace order, in the **List of orders** table, next to the order you want to check, click **View**. -You are taken to the **View Order: _[Order ID]_** page. - -![view-marketplace-orders](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Back+Office+user+guides/Marketplace/Orders/Managing+marketplace+orders/view-marketplace-orders.gif) - -Every marketplace order contains information about the merchant orders it is split into. - -### Reference information: Viewing marketplace orders - -This section holds reference information related to viewing marketplace orders. - -#### Orders page - -The last created order goes on top of the table by default. However, you can sort the table by the order number, order reference, date of creation, customer emails, or the number of items ordered. - -On the **Orders** page, you see the following: -* Order number, reference, and the creation date. -* Customer name and email. -* Order state, the grand total of the order, and the number of items ordered. -* Actions that you can do on this page. - -By default, the last created order goes on top of the table. However, you can sort and search **List of orders**. - -All columns with headers having arrows in **List of orders** are sortable. - -**Actions column** -
All the order management options that you can invoke from the **Actions** column in List of orders are described in the following table. - -| ACTION | DESCRIPTION | -|---|---| -| View | Takes you to the **View Order: _[Return ID]_** page. Here, you can find all the information about the chosen order. | -| Claim | Takes you to the **Create reclamation** page, where you can [create a reclamation](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html#claiming-marketplace-orders) for the order. | - -**View Order: _[Order ID]_** -
The following table describes the attributes on the **View Order: _[Order ID]_** page when you view an order. - -| SECTION | ATTRIBUTE | DESCRIPTION | -|---|---|---| -| Order Overview | | Section with the general information about the order. | -| | Order reference | Reference number of the order. | -| | Order date | Date when the order was placed. | -| | Unique Product Quantity | Number of unique products in the order. | -| | Totals | Contains information about the order totals. | -| | Subtotal | Subtotal of the order. | -| | Grand Total | Grand total of the order. | -| | Total taxes | Total tax amount. | -| | Refund total | Available refundable amount for the order. | -| | Trigger all matching states inside this order | Action button for changing the available states for all the items in the order. For details, see [Changing marketplace order states](#changing-marketplace-order-states). | -| Custom Order Reference | | Custom number that can be added to the order. | -| Customer | | Section with the information about the customer who has submitted the order. | -| | Reference | Unique reference of the customer in the system. The reference is clickable and leads to the *[View Customer](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customers/view-customers.html)* page. | -| | Name | Name of the customer. | -| | Email | Customer’s email address. | -| | Previous orders count | Number of orders the customer has submitted. | -| | Billing address | Address that is used for billing purposes. | -| Merchant orders | | Section with details about every merchant order with its products and Shipment information. | -| | Fulfilled by Merchant | Contains the name of the Merchant this order belongs to. | -| | Order Reference | Merchant order reference. | -| | Delivery Address | Address used for delivery. | -| | Delivery Method | Delivery method chosen for the shipment. | -| | Shipping Method | Method used to ship the order. | -| | Shipping Costs | Price for shipping service. | -| | Request delivery date | Requested delivery date. | -| | Trigger all matching states of order inside this shipment | Action button for changing the available states for all the items in the shipment. For details, see [Changing marketplace order states](#changing-marketplace-order-states). | -| Cart Notes | | Section where the cart notes added by the customer are displayed (if there are any). | -| Returns | | Section with information related to returns (if there are any). | -| Comments to Order | | Section with comments added to the order by the customer when submitting it. | -| Bundle Items Cart Notes | | Section with the notes for the bundled items. | -| Payments | | Section with the information about payment performed y the customer (payment provider, payment method, and the amount paid). | -| Gift cards | | Section with the information about the gift cards. | -| Discounts & Vouchers | | Section with the information about discounts and vouchers applied to the order. | -| Refunds | | Section with information about refunds issued. | -| Order Source | | Source of the order. | -| Comments | | Section for the Back Office users to add comments to the order. These comments are not visible to the customer. | - -## Changing marketplace order states - -To change the state of several items in the order: - -1. In the **List of orders** table, in the **Actions** column, click **View** next to the order you want to change the state of. -You are taken to the **View Order: _[Order ID]_** page. -2. In the **Trigger all matching states inside this order** section, click **the next available state**. For details about the available states, see [Marketplace and Merchant state machines feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). -The page refreshes to show the message about the successful state change. The order will obtain the updated state. In the **Trigger all matching states inside this order** section, you can see the **Cancel** button. -3. Repeat step 2 until you get the desired order state. - -To change the state of the order items in a shipment: - -1. In **List of orders**, click **View** next to the order possessing the items you want to change the state of. -You are taken to the **View Order: _[Order ID]_** page. -2. Scroll down to the desired shipment. -3. Select the checkbox next to the products you want to change the state of. -4. In the **Trigger all matching states of order inside this shipment** section, click **the next available state**. For details about the available states, see [Marketplace and Merchant state machines feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). -The page refreshes to show the message about the successful state change. In the **Trigger all matching states of order inside this shipment** section of the modified shipment, you can see the updated state. -5. Repeat step 4 until you get the desired shipment state. - -To change the state of an item in the merchant order: - -1. In **List of orders**, click **View** next to the order possessing the items you want to change the state of. -You are taken to the **View Order: _[Order ID]_** page. -2. Scroll down to the desired item. -3. In the **Trigger event** column next to the desired product, click **the next available state**. For details about the available states, see [Marketplace and Merchant state machines feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). -The page refreshes to show the message about the successful state change. In the **Trigger event** column next to the product, you can see the **Cancel** button. - -### Reference information: Changing marketplace order states - -You can set different states for your order by clicking the action buttons. The following describes the triggers you can call: - -| ORDER STATE | DESCRIPTION | -|---|---| -| Pay | Click this button once you receive the payment for the order from your customer. | -| Cancel | Click this button to cancel the order on the customer’s behalf. | -| Close | Click this button when your customer has successfully received the ordered items and is satisfied with their quality. | -| Refund | Click this button in case of a refund. | -| Return | Click this button if the customer returns you either all or several items from the order. | - -Marketplace order states flow: - -* **New**—the initial order state. -* **Canceled**—the state of the order after it is canceled by the customer on the Storefront or by a Back Office user. -* **Sent to Merchant**—the state of the order when the payment is made and the marketplace order was successfully split into the merchant orders. The corresponding merchant got notified about the new order. -* When you select **Pay**, the order state becomes *Paid*. After a while, the status of the order changes to *Sent to Merchant*. -* When you select **Cancel**, the order state becomes *Canceled*. -* When you select **Close**, the order state becomes *Closed*. -* If the customer returns the ordered items: when you select **Return**, the state becomes *Waiting for return*. The merchant needs to execute the return in the Merchant Portal. -* Once the return is executed for the merchant order in the Merchant Portal, the state becomes *Refunded*. - -**Tips & tricks** -
To change the state of all the items inside a shipment at once, in the **Trigger all matching states of order inside this shipment** section of the corresponding shipment, click **the next available state**. - -For reference information about the **Orders** and **View Order: _[Order ID]_** pages, on this page, see: - -* [Orders page](#orders-page) -* [View Order: [Order ID](#view-order-order-id) - - -## Creating a marketplace return - -{% info_block warningBox "Note" %} - -To be able to create a return, your marketplace state machine should have the return subprocess set up. - -{% endinfo_block %} - -If an order item is **[returnable](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html)**, you can create a return for it. - -To create a return: - -1. On the **View Order: _[Order ID]_** page, click **Return** in the top right corner. This opens the **Create Return** page. -2. On the **Create Return** page, select the items you want to return and optionally the return reason for the items. The following return reasons are provided out of the box: - * Damaged - * Wrong item - * No longer needed - * Custom reason - -{% info_block infoBox "Info" %} - -The products from one merchant can be returned at a time. - -{% endinfo_block %} - -3. Click **Create return**. This creates the return and takes you to the **Overview of Return _[Return reference]_** page, where you can change the return states. For details about the return states you can trigger, see Marketplace return item states. - -{% info_block infoBox "Info" %} - -You can create returns for the items that are in Shipped or Delivered states only. - -{% endinfo_block %} - - -### Reference information: Creating a marketplace return - -| SECTION | ATTRIBUTE | DESCRIPTION | -|---|---|---| -| General information | | | -| | Order reference | Reference of the order the return will be created for. Takes you to the View Order: [Order ID] page, where you can view and manage the order. | -| Select Items to Return | | | -| | Fulfilled by merchant | Name of the merchant the item belongs to. Takes to the *Edit Merchant: [Merchant ID]* page, where you can view and edit information about this merchant. | -| | Merchant Order Reference | Reference of the merchant order in the system. | -| | Product | List of all items included in the return. | -| | Quantity | Product quantity. | -| | Price | Product price. | -| | Total | Total amount paid for the item. | -| | Return policy | Return policy an item is controlled by. | -| | State | Return state for the item. | - -Once a return has been created, it acquires the *Waiting for return* state. You can trigger the following states for the returns on the **Overview of Returns [Return ID]** page. - For more details, see [Marketplace and merchant state machines feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). - - | RETURN STATE | DESCRIPTION | -|---|---| -| execute-return | Select this state if you accept the return. When triggering this state, the return status is changed to *Returned*. | -| refund | Select this state if you have refunded the returned items. When triggering this state, the return status is changed to *Refunded*. | -| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return due to the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | -| ship-return | You can trigger this state after the *Cancel* return state. Select this state if you shipped the canceled return back to the customer. The return status is changed to *Shipped to customer*. | -| delivery-return | You can trigger this state after the *Shipped to customer*. Select this state if the return has been delivered to the customer. The return status is changed to *Delivered*. | -| close | You can trigger this state after the *Delivered* state. Select this state to close the return. The return status is changed to *Closed*. | - -## Viewing the returns for marketplace orders - -If returns have been created for a marketplace order, they are displayed on the **View Order: _[Order ID]_** page, in the **Returns** section. - -To view details about a return, navigate to the **Returns** page, and in the **Actions** column of the **List of Returns** table, click **View**. -This takes you to the **Overview of Return: [Return ID]** page. -For information about how you can manage the returns on this page, see Managing marketplace returns. - -### Reference information: Viewing the returns for marketplace orders - -The following tables describe the attributes on the **Overview of Return: _[Return reference]_** page when you view a return. - -![reference-information-marketplace-return-back-office](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Back+Office+user+guides/Marketplace/Orders/Managing+marketplace+orders/reference-information-marketplace-return-back-office.png) - -#### Returned items section - -The returned items section displays information about the returned items. - -| ATTRIBUTE | DESCRIPTION | -|---|---| -| Product | List of all items included in the return. | -| Quantity | Product quantity. | -| Price | Product price. | -| Total | Total amount paid for the item. | -| State | Return state for the item. | -| Trigger event | List of the events to trigger for the return. | -| Trigger all matching states | States that you can trigger for all items in the return at once. | - -#### Total section - -The **Total** section displays the total amount of items to be returned. - -| ATTRIBUTE | DESCRIPTION | -|---|---| -| Order Reference | Reference number of the order. | -| Return Reference | Reference number of the return. | -| Return Date | Date when the return was created. | -| Returned Items | Number of items to be returned. | -| State | State of the return. | - -#### Marketplace section - -| TTRIBUTE | DESCRIPTION | -|---|---| -| Merchant Order References | Merchant order reference number. | -| Merchant | Name of the merchant that sold the item. | - -#### Customer section - -| ATTRIBUTE | DESCRIPTION | -|---|---| -| Customer reference | Reference of the customer. | -| Name | Customer name. | -| Email | Customer’s email address. | - -## Editing a Custom Order Reference for a marketplace order - -To edit a custom order reference: - -1. In the **List of orders** table, next to the order you want to update the custom order reference of, click **View**. -2. In the **Custom Order Reference** section of the **View Order: _[Order ID]_** page, click **Edit Reference**. -3. Update the custom order reference. -4. Click **Save**. - -![edit-a-custom-order-reference-for-a-marketplace-order](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Back+Office+user+guides/Marketplace/Orders/Managing+marketplace+orders/edit-a-custom-order-reference-for-a-marketplace-order.png) - -**Tips and tricks** -
To remove the custom order reference, clear the Custom Order Reference field and click **Save**. - -## Claiming marketplace orders - -To claim a marketplace order: - -1. On the **Overview of Orders** page, click **Claim** next to the order you want to create a reclamation for. -2. On the **Create reclamation** page, select one or more products you want to create the reclamation for. -3. Click **Create Reclamation**. -
The page refreshes to show the success message about reclamation creation. - -**Tips and tricks** -
Claiming an order does not change the state of the order or the items inside the order. When a reclamation is created, a sales team member processes the order manually. - -### Reference information: Create reclamation page - -| ATTRIBUTE | DESCRIPTION | -|---|---| -| Product | Contains information about the product: the product image, name, SKU, color. Clicking the product name takes you to the **View Product Abstract: _[Product ID]_** page. | -| Unit Price (GROSS_MODE) | Item price without taxes. | -| Item total | Total amount paid for the item. | -| State | Current state of the item. Clicking the state shows the state machine diagram. | - -## Commenting on marketplace orders - -To comment on the marketplace order: - -1. Click **View** next to the order you want to comment on. -2. On the **View Order: _[Order ID]_** page, scroll down to the **Comments** section. -3. Enter the comment in the **Message** field. -4. Click **Send Message**. -The page refreshes to show the success message about comment creation. Your message is displayed in the **Comments** section. - -**Tips and tricks** - -* To send an email to a customer, on the **Overview of Orders** page, click the hyperlinked customer email in the Email column. -* To view customer details: - * On the **Overview of Orders** page, click the hyperlinked customer name in the **Customer Full Name** column. - * On the **View Order** page, scroll down to the **Customer** section and click the hyperlinked **Reference**. - -## Editing a billing address in the marketplace order - -To edit a billing address: -1. Next to the order you want to edit the billing address of, click **View**. -2. On the **View Order** page, scroll down to the **Customer** section. -3. Under the **Billing address**, click **Edit**. The **Edit Address for Order** page opens. -4. Make the updates and click **Save**. - -### Reference information: Editing a billing address in the marketplace order - -| ATTRIBUTE | DESCRIPTION | -|---|---| -| Salutation First Name Middle name Last Name | Customer's salutation. If the other person is the point of contact for this new address, you need to populate the fields with the respective data. If the customer is the same, populate the fields with the same values. | -| Email Country Address line 1 Address line 2 | Fields where you enter the email and address information of the customer. | -| Company City Zip Code Po box | Customer's company, city, zip code, and post office box number. | -| Phone Cell phone | Customer's phone numbers. | -| Description | Description of the order. | -| Comment | Any specific comment regarding the customer or customer address (for example, "*This address is going to be used only if the order costs less than 900 euros.*"). | diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-orders.md b/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-orders.md deleted file mode 100644 index d0d8662a059..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-orders.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: Managing main merchant orders -last_updated: Jul 22, 2021 -description: This guide explains how to manage main merchant orders in the Back Office. -template: back-office-user-guide-template ---- - -*My Orders* is a dedicated page for managing the orders that customers completed from the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html) (Marketplace owner) within the Marketplace. - -## Prerequisites - -To start managing merchant orders for the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html), navigate to **Sales > My orders**. - -The instructions assume that there is an existing order with the *New* status. - -Each section in this article contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Viewing main merchant orders - -To view the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html) orders, in the **List of Orders** table, click **View** next to the order you want to check. -This takes you to the **Merchant Order Overview** page. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Back+Office+user+guides/Sales/main-merchant-order-back-office.png) - -### Reference information: Viewing main merchant orders - -This section holds reference information related to viewing the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html) orders. - -#### Overview of Orders page - -By default, the last created order goes on top of the table. However, you can sort the table by the order number, order reference, created date, customer emails, or the number of items ordered. - -On the **Overview of Orders** page, you see the following: - -- Merchant order reference -- Marketplace order reference, where the merchant order belongs -- Creation date -- Customer name and email -- Order state, the grand total of the order, and the number of items ordered -- Actions that you can do on this page - -By default, the last created order goes on top of the table. However, you can sort and search the **List of Orders** table. - -All columns with headers having arrows in **List of Orders** are sortable. - -##### Actions column - -All the order management options that you can invoke from the **Actions** column in **List of Orders** are described in the following table. - -| ACTION | DESCRIPTION | -| --------- | --------------- | -| View | Takes you to the *Merchant Order Overview* page. Here, you can find all the information about the chosen order. | - -#### Merchant Order Overview page - -The following table describes the attributes on the **View Order _[Order ID]_** page when you *view* an order. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SECTIONATTRIBUTEDESCRIPTION
Order OverviewSection with the general information about the order.
Merchant Order referenceReference number of the merchant order.
Marketplace Order ReferenceReference number of the marketplace order where the merchant order belongs.
Order dateDate when the merchant order was placed.
TotalsContains information about the order totals.
SubtotalSubtotal of the order.
Shipment priceTotal price for the shipment.
Cancelled amountCanceled total.
Grand TotalGrand total of the order.
Total taxesTotal tax amount.
Trigger all matching states inside this orderAction button for changing the available states for all the items in the order. See
Changing marketplace order states for details.
CustomerSection with the information about the customer who has submitted the order.
ReferenceUnique customer reference in the system. The reference is clickable and leads to the View Customer page.
NameCustomer’s name.
EmailCustomer’s email address.
Previous orders countNumber of merchant orders the customer has created for this merchant.
Billing addressCustomer’s address used for billing purposes.
Merchant order itemsSection with details about every merchant order item with its products and shipment information.
Shipment 1 of 1Number of shipments in the order.
Delivery AddressAddress used for delivery.
Delivery MethodDelivery method chosen for the shipment.
Shipping MethodMethod used to ship the order.
Shipping CostsPrice for shipping service.
Request delivery dateRequested delivery date.
Trigger all matching states of order inside this shipmentAction button for changing the available states for all the items in the shipment. See
Changing main merchant order states for the details.
Cart NotesSection where the cart notes added by the customer are displayed (if any).
Discounts & VouchersSection with the information about discounts and vouchers applied to the order.
- -## Changing main merchant order states - -To change the state of the order items in a shipment: -1. In the **List of Orders** table, next to the order with items you want to change the state of, click **View**. This takes you to the **Merchant Order Overview** page. -2. Scroll down to the desired shipment. -3. Select the checkbox next to the products you want to change the state of. -4. In the **Trigger all matching states of order inside this shipment** section, click **the next available state**. For details about the available states, see [Reference information: Changing main merchant order states](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-main-merchant-orders.html#reference-information-changing-main-merchant-order-states). - The page refreshes to show the message about the successful state change. In the **Trigger all matching states of order inside this shipment** section of the modified shipment, you can see the updated state. -5. Repeat step 4 until you get the desired shipment state. - -### Reference information: Changing main merchant order states - -You can set different states for your order by clicking the action buttons. The following table describes the triggers you can call: - -| MAIN MERCHANT ORDER ITEM STATE | DESCRIPTION | -| ----------------------- | --------------------- | -| Send to distribution | Choose this state once you receive the payment for the order from your customer. | -| Cancel | Choose this state to cancel the order on the customer’s behalf. | -| Confirm at center | Choose this state when the order is confirmed at the distribution center. | -| Ship | Choose this state when the order is shipped to the customer. | -| Deliver | Choose this state when the order reached the customer. | -| Refund | Choose this state in case of a refund. | - -## Creating a shipment for the main merchant order - - - -You can create a new shipment for the merchant orders where there is more than one merchant order item. - -You can create a new shipment for one or several merchant order items. To create a new shipment: - -1. In the **List of Orders** table, next to the order you want to edit the shipment of, click **View**. -2. In the **Merchant Order Items** section of the **Merchant Order Overview** page, click **Create Shipment**. -3. Fill in all the required fields. -4. Click **Save**. - -### Reference information: Creating a shipment for the main merchant order - -The following table describes the attributes you enter and select when creating or editing customer’s shipment details. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -| ----------------------- | ---------------- | ----------- | -| Delivery Address | Dropdown menu where you can select the delivery address. By default, *New Address* is selected. | | -| Salutation | Salutation to use when addressing the customer. | ✓ | -| First Name | Customer's first name. | ✓ | -| Middle name | Customer's middle name. | | -| Last name | Customer's last name. | ✓ | -| Email | Customer’s email address. | ✓ | -| Country | Drop-down menu with the list of countries to select. | ✓ | -| Address 1 | 1st line of the customer's address. | ✓ | -| Address 2 | 2nd line of the customer's address. | ✓ | -| Company | Customer’s company name. | | -| City | Customer’s city. | ✓ | -| ZIP code | ZIP code. | ✓ | -| Phone | Customer’s phone number. | | -| Cell Phone | Customer’s cell phone number. | | -| Description | Description of the shipping address. | | -| Comment | Comment to the shipping address. | | -| Shipment method | Drop-down menu with the list of all the available shipment methods in the system. You can select only one. | ✓ | -| Requested delivery date | Date by which the order should be delivered. | | -| Order items inside this shipment | Check the order items you create or edit the shipment for. | ✓ | - -## Editing main merchant shipment - -You can edit the existing details for the shipment in the Back Office. To do that: - -1. In the **List of Orders** table, click **View** next to the order you want to edit the shipment of. -2. In the **Merchant Order Items** section of the **Merchant Order Overview** page, click **Edit Shipment**. This takes you to the **Edit shipment for Order: _[Order ID]_** page. -3. Update the main merchant shipment. -4. Click **Save**. - -For reference information, on this page, see [Reference information: Creating a shipment for the main merchant order](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-main-merchant-orders.html#reference-information-creating-a-shipment-for-the-main-merchant-order). diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-returns.md b/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-returns.md deleted file mode 100644 index 5e47b55b0be..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-main-merchant-returns.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Managing main merchant returns -last_updated: Aug 09, 2021 -description: This guide explains how to manage main merchant returns in the Back Office. -template: back-office-user-guide-template ---- - -**My Returns** lets you manage the returns as follows: - -- Create a return for the customer. -- Set the return states. -- Print the return slip. - -## Prerequisites - -To start managing the returns for the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html), navigate to **Sales > My Returns**. - -Each section contains reference information. Make sure to review it before you start or look up the necessary information as you go through the process. - -## Viewing returns for the main merchant - -To view details about a return, in the **Actions** column of the return, click **View**. - -This takes you to the **Overview of Return: _[Return reference]_** page, where you can view the return details, set the return statuses, and [print the return slip](#printing-a-main-merchant-return-slip). - -## Setting the main merchant return states - -To set and track the return statuses, you trigger the return states. - -To trigger the return states: - -1. On the **Returns** page, click **View** in the **Actions** column. This takes you to the **Return Overview _[Return reference]_**. -2. In the **Trigger all matching state section** of the **Overview of Return: _[Return reference]_** page, click the necessary state. The return state changes, and the new states that you can trigger appear. For information about the return item states and the flow, see Main merchant return item states. - - - -**Info** - -The triggered return states are reflected in the Customer Account on the Storefront, informing customers about the statuses of their returns. - ------- - -**Tips and tricks** - -To trigger the return states for all the items in the return, click the states at the **Trigger all matching states** field. To trigger the return states for individual items of the return, trigger the states in the **Trigger event** column for the necessary items. - ------- - -### Reference information: Setting the main merchant return states - -This section holds reference information related to setting the marketplace return states. - -#### My Returns page - -On the **Returns** page, you see the following: - -- Return ID -- Return reference -- Marketplace order reference -- Returned Products (number of the sales order items that were returned) -- Return Date -- State -- Actions - -By default, the last created return goes on top of the table. However, you can sort and search the **List of Returns** table. - -All columns with headers having arrows in the **My Returns** table are sortable. - -##### Actions column - -All the return management options that you can invoke from the **Actions** column on the **My Returns** page are described in the following table. - -| ACTION | DESCRIPTION | -| --------- | ---------- | -| View | Takes you to the **Overview of Return: _[Return reference]_** page. Here, you can find all the information about the chosen review. | -| Print Slip | Takes you to the print version of the return slip. | - -#### Overview of Return: [Return Reference] page - -The following tables describe the attributes on the **Overview of Return: _[Return reference]_** page when you view a return. - -##### Returned items section - -The returned items section displays information about the returned items. - -| ATTRIBUTE | DESCRIPTION | -| -------------------- | ----------- | -| Product | List of all items included in the return. | -| Quantity | Product quantity. | -| Price | Product price. | -| Total | Total amount paid for the item. | -| State | Return state for the item. For more details, see [Main merchant return states](#main-merchant-return-item-states). | -| Trigger event | List of the events to trigger for the return. | -| Trigger all matching states | States that you can trigger for all items in the return at once. | - -##### Total section - -The Total section displays the total amount of items to be returned. - -##### General information section - -| ATTRIBUTE | DESCRIPTION | -| ------------------------- | ------------------------------------ | -| Order Reference | Reference number of the main merchant order. | -| Marketplace order reference | Reference number of the marketplace order. | -| Return Reference | Reference number of the return. | -| Return Date | Date when the return was created. | -| Returned Items | Number of items to be returned. | -| State | State of the return. | - -##### Customer section - -| ATTRIBUTE | DESCRIPTION | -| --------------- | -------------------- | -| Customer reference | Reference of the customer. | -| Name | Customer name. | -| Email | Customer’s email address. | - -##### Main merchant return item states - -You can trigger the following states for the returns on the **Overview of Return: _[Return reference]_** page: - - -| RETURN STATE | DESCRIPTION | -| ----------------- | ----------------------- | -| waiting for return | Initial status of the return. | -| Execute return | Select this state when you want to perform the return. When triggering this state, the return status is changed to *returned*. | -| Refund | Select this state when you want to refund the returned item. When triggering this state, the return status is changed to *refunded*. | -| Cancel return | Select this state when you want to cancel the submitted return. When triggering this state, the return status is changed to *return canceled*. | -| Send return back to customer | Select this state when you shipped the returned item back to the customer. When triggering this state, the return status is changed to *shipped to customer*. | -| Deliver return | Select this state when the return was delivered to customer. When triggering this state, the return status is changed to *delivered*. | - -## Printing a main merchant return slip - -For all returns, irrespective of their statuses, you can print the automatically generated [return slip](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html#marketplace-return-slip). - -To print the return slip, take one of the following steps: - -- In the **Actions** column on the **My Returns** page, click **Print slip**. -- On the **Overview of Return: _[Return reference]_** page, click **Print Return Slip**. - -Any of these steps take you to the page with the print version of the return slip. diff --git a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-marketplace-returns.md b/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-marketplace-returns.md deleted file mode 100644 index 9cb3739a524..00000000000 --- a/docs/marketplace/user/back-office-user-guides/202108.0/sales/managing-marketplace-returns.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Managing marketplace returns -last_updated: Aug 09, 2021 -description: This guide explains how to manage marketplace returns in the Back Office. -template: back-office-user-guide-template ---- - -After a [marketplace return](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html) has been created by a Back Office user or by a [shop user](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html#marketplace-return-management-on-the-storefront), it appears on the **Sales > Returns** page. On this page, you can manage the returns as follows: -- Set the return states. -- Print the return slip. - -## Prerequisites - -To start managing the marketplace returns, navigate to **Sales* > Returns**. - -Review the reference information before you start, or look up the necessary information as you go through the process. - -## Setting the marketplace return states - -You can close the marketplace returns fulfilled by the merchant in the Merchant Portal. - -To set and track the return statuses, you trigger the return states. - -To trigger the return states: - -1. On the **Returns** page, in the **Actions** column, click **View**. This takes you to the **Overview of Return: _[Return reference]_**. -2. In the **Trigger all matching state section** of the **Overview of Return: _[Return reference]_** page, click the necessary state. The return state changes, and the new states that you can trigger appear. For information about the return item states and the flow, see [Marketplace return item states](#marketplace-return-item-states). - - {% info_block infoBox "Info" %} - -The triggered return states are reflected in the Customer Account on the Storefront, informing customers about the statuses of their returns. - - {% endinfo_block %} - -**Tips and tricks** -
To trigger the return states for all the items in the return, click the states at the **Trigger all matching states** field. To trigger the return states for individual items of the return, trigger the states in the **Trigger event** column for the necessary items. - ------- - -### Reference information: Setting the marketplace return states - -This section holds reference information related to setting the marketplace return states. - -#### List of Returns page - -On the **Returns** page, you see the following: -- Return ID -- Return reference -- Order reference -- Returned Products (number of the sales order items that were returned) -- Return Date -- State -- Actions - -By default, the last created return goes on top of the table. However, you can sort and search the list of returns. - -All columns with headers having arrows in the **List of Returns** table are sortable. - -##### Actions column - -All the return management options that you can invoke from the **Actions** column on the **List of Returns** page are described in the following table. - -| ACTION | DESCRIPTION | -| --------- | ------------ | -| View | Takes you to the *Overview of Return: [Return reference]* page. Here, you can find all the information about the chosen review. | -| Print Slip | Takes you to the print version of the return slip. | - -#### Overview of Return: [Return Reference] page - -The following table describes the attributes on the **Overview of Return: _[Return reference]_** page when you view a return. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Back+Office+user+guides/Sales/marketplace-return-back-office.png) - -##### Returned items section - -The returned items section displays information about the returned items. - -| ATTRIBUTE | DESCRIPTION | -| --------------------- | ------------------------------ | -| Product | List of all items included in the return. | -| Quantity | Product quantity. | -| Price | Product price. | -| Total | Total amount paid for the item. | -| State | Return state for the item. | -| Trigger event | List of the events to trigger for the return. | -| Trigger all matching states | States that you can trigger for all items in the return at once. | - -##### Marketplace return item states - -You can trigger the following states for the returns on the **Overview of Returns [Return ID]** page: - -| RETURN STATE | DESCRIPTION | -| ---------------------- | ------------------------------------- | -| close | Select this state when you want to close the completed return. When triggering this state, the return status is changed to *Closed*. | -| Deliver return back to customer | Select this state when you shipped the returned item back to the customer. When triggering this state, the return status is changed to *Delivered*. | -| Refund | Select this state if you have refunded the returned items. When triggering this state, the return status is changed to *Refunded***.** | - -##### Total section - -The **Total** section displays the total amount of items to be returned. - -##### General information section - -| ATTRIBUTE | DESCRIPTION | -| --------------- | -------------------------------- | -| Order Reference | Reference number of the order. | -| Return Reference | Reference number of the return. | -| Return Date | Date when the return was created. | -| Returned Items | Number of items to be returned. | -| State | State of the return. | - -##### Marketplace section - -| ATTRIBUTE | DESCRIPTION | -| ---------------------- | -------------------------------------- | -| Merchant Order References | Merchant order reference number. | -| Merchant | Name of the merchant that sold the item. | - -##### Customer section - -| ATTRIBUTE | DESCRIPTION | -| --------------- | ----------------------- | -| Customer reference | Reference of the customer. | -| Name | Customer name. | -| Email | Customer’s email address. | - -## Printing a marketplace return slip - -For all returns, irrespective of their statuses, you can print the automatically generated [return slip](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-marketplace-returns.html#marketplace-return-item-states). - -To print the return slip: -- In the **Actions** column on the **List of Returns** page, click **Print slip**. -- On the **Return Overview _[Return reference]_** page, click **Print Return Slip**. - -This takes you to the page with the print version of the return slip. - -For reference information about **the List of Returns** and **Return Overview _[Return reference]_** pages, on this page, see [List of Returns](#list-of-returns-page) and [Overview [Return reference](#list-of-returns-page), respectively. diff --git a/docs/marketplace/user/features/202108.0/index.md b/docs/marketplace/user/features/202108.0/index.md deleted file mode 100644 index 6883b5ab4a6..00000000000 --- a/docs/marketplace/user/features/202108.0/index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Features overview -description: The feature guides provide details about features available in the Spryker Marketplace. -template: concept-topic-template ---- -The Marketplace feature guides provide details about features available in the Spryker Marketplace. The feature guides highlight functional abilities, business values, and use-case examples of the features. This information might be useful for: - -- Business owners -- Product owners -- Anyone looking to learn more about the Spryker features or add new functionality to a Spryker-based project diff --git a/docs/marketplace/user/features/202108.0/marketplace-cart-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-cart-feature-overview.md deleted file mode 100644 index 432ca95cca5..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-cart-feature-overview.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Marketplace Cart feature overview -description: This document contains concept information for the Marketplace Cart Notes feature. -template: concept-topic-template -redirect_from: - - docs/marketplace/user/features/page.version/marketplace-cart-notes-feature-overview.html ---- - -The *Marketplace Cart* feature lets you include a "Notes" field on the cart page. Buyers can add notes to a particular item or the whole cart, for example, some special instructions about preparing and delivering an order. - -Cart and item notes on the Storefront: - -![Marketplace Cart Notes on the Storefront](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Cart+Notes/mp-cart-notes-on-the-storefront.png) - -Item notes in the Merchant Portal: - -![Items notes in the Merchant Portal](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Cart+Notes/mp-item-notes-merchant-portal.png) - -The Marketplace administrator can see the special request in the [order details section of the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-main-merchant-orders.html#merchant-order-overview-page): - -![Cart Notes in Back Office](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart+Notes/cart-notes-admin.png) - -## Current constraints - -In a situation where the same product variants are added to the cart with different notes, the variants get merged with the same note. - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Cart feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-cart-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-inventory-management-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-inventory-management-feature-overview.md deleted file mode 100644 index f84e252f00d..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-inventory-management-feature-overview.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Marketplace Inventory Management feature overview -description: This document contains concept information for the Marketplace Products feature. -template: concept-topic-template ---- - -The *Marketplace Inventory Management* feature enables maintaining stock and availability of merchant products and product offers that are sold in the Marketplace. -In the context of inventory management, the *warehouse* is the physical place where your products are stored, and stock is the number of products available in the warehouse. - -## Marketplace warehouse management - -When a merchant is created, the corresponding warehouse is created for this merchant. The warehouse name is composed of the following parts: `merchant name` + `merchant reference` + `warehouse` + `index` (starting with 1, 2). - -{% info_block infoBox "Example" %} - -"Spryker MER000001 Warehouse 1" where `Spryker` is the merchant name, `MER000001` is a merchant reference, and the index is `1` as it is the first warehouse created. - -{% endinfo_block %} - -A warehouse can be assigned to a single store or shared between several stores. For details about how you can manage warehouses and stores in the Back Office, see [Managing warehouses](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/warehouses/managing-warehouses.html). - -## Marketplace stock management - -The stock for product offers is defined in the corresponding merchant warehouse. The stock does not reflect the actual availability of products, as not all the items available in stock are available for sale. For example, when there are pending orders with offers, these order items are *reserved*, so they are not available for ordering, even if they are physically on hand. - -Merchants can define product offer stock in the Merchant Portal. For details, see [Managing product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html). - -Also, you can do the following using the data import: -* Manage stock of product offers for a merchant by importing the product offer and stock data separately: [File details: product_offer_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-product-offer-stock.csv.html). -* Define stock when importing the product offer data: [File details: combined_merchant_product_offer.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-combined-merchant-product-offer.csv.html). -* Import merchant stock data: [File details: merchant_stock.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-stock.csv.html). -* Import stock of merchant products: [File details: product_stock.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/stocks/file-details-product-stock.csv.html). - -## Marketplace availability management - -The difference between the current quantity of items in stock and the quantity of these items in the pending orders is called the *availability* of products. - -Product offer availability calculation differs from the calculation of concrete products availability: - -| CONCRETE PRODUCT AVAILABILITY | PRODUCT OFFER AVAILABILITY | -| --------------------- | ------------------------ | -| Formula: Concrete product availability = Concrete product quantity - Concrete product reservations | Formula: Offer availability = Offer quantity - Offer reservations | - -Offer availability is considered on the Storefront:  -* On the product details page: While adding the offer to cart. -* On the cart page: The product stays in the cart if the attached offer is not available anymore, and a hint is shown. -* During the checkout: When clicking **Buy now**, the availability is rechecked. - -{% info_block infoBox "Example" %} - -Let's assume that a merchant has defined quantity 10 for product offer 1. A customer adds 8 items of the product offer 1 to cart and later updates the quantity to 12. In such a situation, the availability of the product offer 1 is checked, and the customer is notified to update the quantity of the product offer to the available number to proceed with the purchase.  - -{% endinfo_block %} - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Inventory Management feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-inventory-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} - -## Related Business User documents - -| MERCHANT PORTAL USER GUIDES | BACK OFFICE USER GUIDES | -| --------------------------- | ----------------------- | -| [Managing product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html) | |[Create warehouses](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/warehouses/create-warehouses.html) | [Edit warehouses](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/warehouses/edit-warehouses.html) | diff --git a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/main-merchant-concept.md b/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/main-merchant-concept.md deleted file mode 100644 index 13978242c0d..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/main-merchant-concept.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Main merchant concept -description: This document contains concept information for the main merchant in the Spryker Commerce OS. -template: concept-topic-template ---- - -The Spryker Marketplace platform offers sales opportunities to everyone. To help support the [Enterprise Marketplace](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-concept.html) model, not only the 3rd party merchants but also the company owner of the Marketplace store can sell their products and offers online. We call this company the *main merchant*. - -Thus, the main merchant acts as a common [marketplace merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html) having all its characteristics. - -## Main merchant orders and returns - -Being both a [marketplace operator](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-personas.html) and a seller and already performing tasks in the Back Office, the main merchant manages their [merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) also in the Back Office. For details, see [Managing main merchant orders](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html). - -## Main merchant state machine - -To manage merchant orders of the main merchant, the *main merchant state machine* exists. Out of the box, the main merchant state machine provides the following states: -- Created -- New -- Canceled -- Left the merchant location -- Arrived at the distribution center -- Shipped -- Delivered -- Closed - -The workflow of the main merchant state machine is schematically displayed in the following diagram: - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Merchant/Main+merchant+concept/main-merchant-state-machine-new.png) - -## Main merchant returns - -If the [Marketplace Return Management](/docs/marketplace/user/features/{{page.version}}/marketplace-return-management-feature-overview.html) feature is integrated into the project, the main merchant state machine obtains an additional return subprocess, and the flow looks like this: - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Merchant/Main+merchant+concept/marketplace-main-merchant-return-process.png) diff --git a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.md deleted file mode 100644 index 7e0169b6b6a..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Marketplace Merchant feature overview -description: This document contains concept information for the Merchants feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -A *merchant* is a seller of goods or services, either a business or a private person working in the Marketplace environment. Merchants manage their business in the *Merchant Portal*. The *Merchant Portal* lets merchants upload and manage merchant products and [offers](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html), define prices and stock, fulfill orders, and edit merchant profile information. Merchant can have employees who can access the Merchant Portal and perform actions on the merchant's behalf there. These employees are referred to as [*merchant users*](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html). - -Merchant is the core entity of the Spryker Marketplace and the second main entity after customers since the Marketplace connects the buying customers and the selling customers. -Every merchant in the Spryker Marketplace has a unique identifier in the system called *Merchant SKU*.  -You can [create merchants in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#creating-merchants) or [import merchants](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant.csv.html). - -{% info_block infoBox "Note" %} - -After you create a merchant, you can not delete it completely. You can only [deactivate](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants) the merchant. - -{% endinfo_block %} - -## Merchant statuses - -The Marketplace administrator manages merchants and sets their statuses in the Back Office. Merchant statuses define the level of access of the specific merchant to: - -* The Merchant Portal: - * *Waiting for approval*. Once the merchant record is created, this status is applied. - * *Approved*. Once the record is approved, the merchant receives an email with the password information required to access the Merchant Portal. When the merchant is approved, merchant users can log in and create offers and products in the Merchant Portal. - * *Denied*. A Marketplace administrator can deny access to the approved merchant. If denied, the merchant cannot log in to the Merchant Portal. - - - -* The merchant profile page, product offers and marketplace products on the Storefront: - * *Active*. This status can be set only for the approved merchants. It indicates that the merchant's profile page is online, and the merchant can create offers and products. A merchant can also create offers and products and manage their sales activity. - * *Inactive*. This status indicates that the merchant's profile page, products, and offers are offline. It is the default status for the created merchant. With this status, the merchant can not perform their selling online. - - -| STATUS | MERCHANT PORTAL ACCESS | STOREFRONT PROFILE PAGE, OFFERS, AND PRODUCTS | -| --- | --- | --- | -| Waiting For Approval | ✗ | N/A | -| Approved | ✓ | N/A | -| Denied | ✗ | N/A | -| Active | N/A | ✓ | -| Inactive | N/A | ✗ | - -For details about how to change the merchant statuses and activate or deactivate merchants in the Back Office, see [approving and denying merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#approving-and-denying-merchants) and [activating and deactivating merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants). - -{% info_block infoBox "Info" %} - -Whenever a merchant is denied, all the users (/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) of this merchant get deactivated. Upon re-approval, the merchant users must be manually activated one by one. - -{% endinfo_block %} - -Schematically, the merchant status change flow looks like this: - -![Merchant status flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-status-flow.png) - -## Merchant category - -You can group merchants by categories to make your working process more efficient and simplify merchants' search for customers. For details, see [Merchant Category](/docs/marketplace/user/features/{{page.version}}/merchant-category-feature-overview.html). - -## Merchants on the Storefront - -### Merchant profile - -On the Storefront, customers can check the relevant merchant information on the **Merchant Profile** page. - -{% info_block infoBox "Note" %} - -The merchant profile page is available only if the merchant is [Active](#merchant-statuses). - -{% endinfo_block %} - -The information for a merchant profile can be defined: - -* By the Marketplace administrator in the Back Office when [creating merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#creating-merchants) or [editing merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#editing-merchants). -* By importing the merchant profile data. For more information, see [File details: merchant_profile.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile.csv.html) and [File details: merchant_profile_address.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-profile-address.csv.html). -* By the merchant in the Merchant Portal: -![Merchant profile page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-profile-page.png) - -![Viewing merchant profile](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/view-merchant-profile.gif) - - -### Merchant opening hours - -To make the selling activity efficient, merchants can provide their working schedule that will display to buyers on the Storefront. For details, see [Merchant Opening Hours feature overview](/docs/marketplace/user/features/{{page.version}}/merchant-opening-hours-feature-overview.html). - -### Merchant links on the Storefront pages - -Marketplace Storefront lets buyers check what merchants are the owners of the offers and products the customers are buying. The respective merchant names with the link to the merchant profile page are available: - -* On the product detail page - -![Merchant link on the PDP](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-link-on-pdp.png) - -* On the cart page - -![Merchant link on the cart page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-link-on-the-cart-page.png) - -* On the summary checkout page - -![Merchant link on the summary checkout page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-link-on-summary-page.png) - -* On the order details page - -![Merchant link on the order details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-link-on-order-details.png) - -### Searching and filtering by merchant name - -In the Spryker Marketplace, you can search for the products sold by a specific merchant by entering the merchant name in the search field. The search results contain the marketplace products and/or the abstract products the merchant product offers are related to. The search suggestions and the auto-completion functionality provide the marketplace products and offers by the merchant name. -![Search by merchant name](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/search-by-merchant-name.gif) - -In the catalog and search results pages, there is the merchant multi-select filter. This filter lets shoppers see only the products with the product offers belonging to the selected merchant. For more details about filters available in the Spryker Commerce O, see [Standard Filters](/docs/scos/user/features/{{page.version}}/search-feature-overview/standard-filters-overview.html) documentation. - -![Merchant search filter](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Merchants/Merchants+feature+overview/merchant-filter.gif) - - -If the merchant is not active, their products and offers are not displayed in the search suggestions, search results, and the merchant filter. - -## Next steps - -Learn about [merchant users](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) - -## Related Business User documents - -|FEATURE OVERVIEWS |MERCHANT PORTAL USER GUIDES |BACK OFFICE USER GUIDES | -|---------|---------|---------| -|[Merchant users overview](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) | [Editing merchant's profile details](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/profile/editing-merchants-profile-details.html) |[Managing merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html)| -|[Main merchant concept](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html)| | [Managing merchant users](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html)| - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Merchant feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-merchant-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/merchant-users-overview.md b/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/merchant-users-overview.md deleted file mode 100644 index 076c24e8bdb..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-merchant-feature-overview/merchant-users-overview.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Merchant users overview -description: This document contains concept information for The Merchant users feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -The merchant concept presupposes having employees with access to the Merchant Portal that will perform various actions on behalf of the merchants. To enable that, the *merchant user* entity is introduced. -From the technical point of view, Merchant Portal is a subset of modules in Zed functioning separately from the Back Office application. As in the Back Office, there are users performing different types of actions (they are further on called *Back Office users*); the Merchant Portal has merchant users that function similarly within a merchant account. - -{% info_block infoBox "Example" %} - -For example, there can be a person responsible only for creating and managing product offers; the other person takes care of shipping merchant orders to their buyers. It means that two merchant users need to be created for these purposes. - -{% endinfo_block %} - -To add merchant users for a merchant, the merchant must be created first. When the merchant record exists, a Marketplace administrator can set up one or several merchant users to manage the merchant account. - -The merchant users concept follows certain rules: - -* Every merchant user has a unique email address in the system. -* A merchant user belongs to one merchant, and the same merchant user can't be assigned to two or more merchants. - -## Merchant user statuses - -The following table explains all the statuses that may apply to a merchant user. - - -| STATUS | DESCRIPTION | -| --- | --- | -| Active | When the merchant user has the `Active` status, it means that the merchant is approved, the merchant user account is activated, the email with reset password instructions has been sent, and the merchant user has access to the Merchant Portal. | -| Deactivated | Access to the Merchant Portal is revoked for a deactivated merchant user. A merchant user can be deactivated when:
  • A merchant or Marketplace administrator deactivates the merchant user.
  • The merchant to whom the merchant user belongs has been [denied](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses).
| -| Deleted | Access to the Merchant Portal is revoked for the deleted merchant user. In the current implementation, both statuses `Deactivated` and `Deleted` have the same functionality—they restrict access to the Merchant Portal. However, this can be changed and adapted on the project level. | - -## Merchant user access - -Both merchant and typical Back Office users have a common entry point, but the login URLs to the Back Office and Merchant Portal are different. The exemplary login link to the Merchant Portal is `https://os.de.marketplace.demo-spryker.com/security-merchant-portal-gui/login`. - -To log in to the Merchant Portal, both a merchant and merchant user need to be activated in the Back Office. - -{% info_block infoBox "Info" %} - -If a merchant is [denied](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-statuses), all their merchant users get deactivated automatically. If the merchant is re-approved again, their merchant users need to be re-activated one by one manually. - -{% endinfo_block %} - -Upon entering the Merchant Portal, a separate area with a different navigation menu is displayed to a merchant user. -Merchant users have access only to the information related to their organization through the Merchant Portal application (profile, products, offers, orders); that is, merchant users have their own area and do not access the Back Office. - -## Merchant user workflow - -1. A Marketplace administrator creates a merchant and approves it. -2. When the merchant is approved, corresponding merchant users can be created in **Back Office > Merchant > Users**. -3. After the merchant user is created, they need to be [activated](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html#activating-and-deactivating-the-merchant-users) to log in to the Merchant Portal. -4. The "Reset Password" email is sent to the activated merchant user. -5. After the password is reset, the merchant user can log in to the Merchant Portal. diff --git a/docs/marketplace/user/features/202108.0/marketplace-merchant-portal-product-offer-management-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-merchant-portal-product-offer-management-feature-overview.md deleted file mode 100644 index b61b1278951..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-merchant-portal-product-offer-management-feature-overview.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Marketplace Merchant Portal Product Offer Management feature overview -description: This document describes product offer management in the Merchant Portal. -template: concept-topic-template ---- - -In a marketplace environment, merchants manage [product offers](/docs/marketplace/user/features/{{page.version}}/marketplace-product-offer-feature-overview.html) in the Merchant Portal. - - -## Managing product offers - -Merchants create product offers based on the products that exist in the marketplace. When creating an offer, they can see full information about products, including the number of existing offers for each of them. - -One merchant can create multiple offers for the same product. When creating product offers, the number of product offers for a product includes their own existing product offers. - -Merchants define the following settings when creating product offers: - -|SETTING|DESCRIPTION| -|---|---| -| Status| Active or Inactive. | -| Merchnat SKU | Unique identifier of the offer in the merchants' system. | -| Stores| Spryker Marketplace is a multi-store environment, and merchants can define which stores to display their offers in. | -|Stock | Offer's own stock that's not dependent on the respective product's stock. | -|Prices | Product offers support all types of Spryker Commerce OS prices: [volume](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html), [default and original](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html). | -| Validity dates | Defines the period when an offer is displayed on the Storefront. Even if the respective product is no longer available, the offer can still be displayed. | - - - -## Related Business User documents - -|MERCHANT PORTAL USER GUIDES |BACK OFFICE USER GUIDES | -|---------|---------| -| [Managing product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html) |[Managing merchant product offers](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/offers/managing-merchant-product-offers.html)| - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Merchant Portal Product Offer Management feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-merchant-portal-product-offer-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.md b/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.md deleted file mode 100644 index f75e4f641d7..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Marketplace and merchant state machines interaction -description: This document contains details about how the Marketplace and merchant state machines interact with each other in the Spryker Commerce OS. -template: concept-topic-template ---- - -When viewed independently of each other, the Marketplace and Merchant State Machines workflows look like this: - -Marketplace State Machine workflow: -![Marketplace state machine workflow](https://confluence-connect.gliffy.net/embed/image/f0eb1f48-ae89-47ca-8f48-42e37c63f4ba.png) - -Merchant State Machine workflow: -![Merchant state machine workflow](https://confluence-connect.gliffy.net/embed/image/b938441d-1a4a-4fe3-903d-580965b1bfea.png?utm_medium=live&utm_source=custom) - -In this article, we'll look into the process of how Marketplace and merchant state machines interfere and check what statuses are displayed in the Back Office to a Marketplace administrator, in the Merchant Portal to a merchant, and on the Storefront to a buyer. - -## Order item’s status progress: New -The process starts when a customer places an order. The Marketplace order obtains state *New*. -![State: New](https://confluence-connect.gliffy.net/embed/image/630bbd7b-66ee-475f-9d79-50a258b994b2.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------------------ | -------------- | ------------------- | -| Marketplace administrator | Back Office | New | -| Merchant | Merchant Portal | N/A | -| Customer | Storefront | Confirmed / Accepted | - -## Order item’s status progress: Paid -Once the Marketplace administrator receives the payment, the state of the marketplace order item becomes *Paid*. The event could be triggered automatically when the payment was made in the marketplace system, or the payment confirmation is uploaded with data importers or manually in other circumstances. - -![Order item’s status progress: Paid](https://confluence-connect.gliffy.net/embed/image/98582508-84a7-4fc5-ad6e-73ace5772daa.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------------------ | -------------- | ---------- | -| Marketplace administrator | Back Office | Paid | -| Merchant | Merchant Portal | N/A | -| Customer | Storefront | In Progress | - -## Order item’s status progress: Canceled -After the payment has been made, the customer can still cancel the order during the period outlined by the Marketplace policies. The Marketplace provides the customer with a button on the Storefront to carry out that action. When the customer cancels the order, the state of the marketplace order item becomes *Canceled*. - -{% info_block infoBox "Note" %} - -The Marketplace administrator can also cancel the order under exceptional circumstances. - -{% endinfo_block %} - - - - -![Order item’s status progress: Canceled](https://confluence-connect.gliffy.net/embed/image/d6ceb379-7990-4bf1-b2d4-a46a80230d58.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------------------ | -------------- | --------- | -| Marketplace administrator | Back Office | Canceled | -| Merchant | Merchant Portal | N/A | -| Customer | Storefront | Canceled | - -## Order item’s status progress: Refunded -When the order is canceled after the payment has been made, the Marketplace administrator has to refund the payment for the canceled order to the customer in full or partially. Once the refund has been made, the state of the Marketplace order item becomes *Refunded*. After issuing the refund, the Marketplace policies set time to elapse before the state of the order is automatically transferred to *Closed*. - -![Order item’s status progress: Refunded](https://confluence-connect.gliffy.net/embed/image/fafabe65-1339-48d7-88b3-b83bf54ccf09.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------------------ | -------------- | --------- | -| Marketplace administrator | Back Office | Refunded | -| Merchant | Merchant Portal | N/A | -| Customer | Storefront | Refunded | - -## Order item’s status progress: Sent to Merchant -When the system has payment confirmation, it performs the operations to split the marketplace order into one or several merchant orders. The state of the marketplace order item becomes *Sent to Merchant*. The merchant orders are created, and each of the items that they contain shows a state according to each Merchant’s state machine. The first state is *New*. - -![Order item’s status progress: Sent to Merchant](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Order+Management/sent-to-merchant.png) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ----------------- | -------------- | --------- | -| Marketplace administrator | Back Office | Sent to Merchant | -| Merchant | Merchant Portal | New | -| Customer | Storefront | In Progress | - -## Order item’s status progress: Canceled by Merchant -Merchant can cancel the order for various reasons. The state of the merchant order item, in this case, will change to *Canceled by Merchant*. The Marketplace administrator also sees the updated state in the Back Office. - -![Order item’s status progress: Canceled by Merchant](https://confluence-connect.gliffy.net/embed/image/c141bb84-9abe-48c7-8ca4-5ea508435480.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ----------- | -------------- | --------- | -| Marketplace administrator | Back Office | Canceled | -| Merchant | Merchant Portal | Canceled by Merchant| -| Customer | Storefront | Canceled | - -## Order item’s status progress: Shipped by Merchant -The merchant ships the item to the customer's address. To input this information on Merchant Portal, the merchant triggers the event manually (the **Shipped** action button) or by importing of the new state via a CSV file. The item’s state on the merchant state machine moves to *Shipped*. The Marketplace administrator also needs to make use of this info. They need to see that the item was also shipped in the Marketplace state machine. - -![Order Item’s Status Progress: Shipped by Merchant](https://confluence-connect.gliffy.net/embed/image/6cea2d2f-1797-47ba-8a99-938aef05fc90.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------- | -------------- | --------- | -| Marketplace administrator | Back Office | Shipped by Merchant | -| Merchant | Merchant Portal | Shipped | -| Customer | Storefront | Shipped Expected by \ | - -## Order item’s status progress: Delivered -After the shipment, the merchant tracks the delivery with the shipment carrier. When the item is delivered, the carrier notifies the merchant. The merchant triggers the *Deliver* event manually (**Delivered** action button) or automatically by uploading a CSV with the new state to the Merchant Portal. The Marketplace administrator also needs to be aware of this information. The state is also updated on the Marketplace state machine. - -![Order item’s status progress: Delivered](https://confluence-connect.gliffy.net/embed/image/04b08764-f5c4-4de7-9725-b12557e2ea61.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION | STATUS | -| ------------- | -------------- | --------- | -| Marketplace administrator | Back Office | Delivered | -| Merchant | Merchant Portal | Delivered | -| Customer | Storefront | Delivered on \ | - -## Order item’s status progress: Closed -Marketplace applies a series of policies that let customers return items during a given period of time. When that period expires, the marketplace order item gets the *Closed* state. The Merchant administrator must also be aware of that expiration, and the state closed is also used on the Merchant state machine for the item. - -![Order item’s status progress: Closed](https://confluence-connect.gliffy.net/embed/image/d4583bab-dda6-4ecc-bd92-94388f5e8710.png?utm_medium=live&utm_source=custom) - -The following table provides an overview of the statuses that are displayed at this step: - -| ROLE | APPLICATION| STATUS | -| --------- | ------------- | --------------- | -| Marketplace administrator | Back Office | Delivered | -| Merchant | Merchant Portal | Delivered | -| Customer | Storefront | Delivered on \ | diff --git a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.md b/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.md deleted file mode 100644 index 37c9c487a86..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Marketplace and merchant state machines overview -description: This document contains concept information about the Marketplace and merchant state machines in the Spryker Commerce OS. -template: concept-topic-template ---- - -The basic concept of state machines allows creating a patterned behavior and automation for complicated processes defined by the business, for example, order processes. -With the help of the state machine, a business owner can coordinate the process of changing the statuses of orders and order items according to the business logic. -To provide the algorithm of dealing with orders for Marketplace administrators and merchants simultaneously, there are multiple state machine templates. These templates help the Marketplace owners to make the order management process flexible and corresponding to the business logic. As the process of managing marketplace orders is different from that of managing the merchant orders, there are two separate state machine engine templates: *Marketplace state machine* and *Merchant state machine*. - -{% info_block infoBox "Info" %} - -You can set up as many state machines as you need and let your Marketplace administrator decide which state machine to use for specific payment methods or countries and stores with different processes. You can also set up different merchant state machines to apply to different merchants according to their processes. - -{% endinfo_block %} - -![Marketplace and merchant state machines](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+order+management/Marketplace+and+merchant+state+machines+overview/Marketplace-Merchant+state+machine+schema.png) - -## Marketplace state machine - -The Marketplace can have one or several state machines assigned to the marketplace orders. Marketplace State Machine processes marketplace order items. -Our exemplary Marketplace state machine provides the following states: - -* New -* Paid -* Canceled -* Refunded -* Sent to Merchant -* Shipped by Merchant -* Delivered -* Closed - -To learn more about states, see [State Machine Fundamentals](/docs/scos/dev/best-practices/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.html). - -{% info_block warningBox "Note" %} - -You can set up the states according to your business requirements. -The status of the Marketplace order is an aggregated state of the Marketplace order items. - -{% endinfo_block %} - -
- -Marketplace state machine flow - -![Merchant state machine](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+and+Merchant+State+Machines+feature+overview/marketplace-state-machine.png) - -
- -### Marketplace state machine in the Back Office - -Marketplace administrators manage the orders in the Back Office. For details, see [Managing marketplace orders](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html). In the Back Office, the Marketplace administrators can change the state of the marketplace order by triggering the states. However, they can do that only if there are manually executable events related to the marketplace order items. Triggering the states executes the corresponding event and moves the marketplace order item to the next state. There can be multiple triggering buttons corresponding to several items in the marketplace order. When you click one of those buttons, only the items with such a manually executable event execute it. The rest stay in the same state and need their trigger to be performed to move to the next state. - -If there are no manually executable events applicable to any of the items, there is no button to click in the Back Office interface. In this case, the action is performed automatically. - -## Merchant state machine -The Marketplace administrator can define one or several state machines for merchants: -* One as the default, which applies automatically to merchant order items in every merchant order. -* Another state machine for a specific merchant. - -Merchant state machine processes merchant order items and works in parallel with the Marketplace state machine. -The status of the merchant order is aggregated from the merchant order item statuses. The merchant order status gets properly updated when the state of the items changes. -Our exemplary merchant state machine provides the following states: -1. New -2. Canceled by merchant -3. Shipped -4. Delivered -5. Closed - -
- -Merchant state machine flow - -![Merchant state machine](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+and+Merchant+State+Machines+feature+overview/merchant-state-machine.png) - -
- -## Next steps - -[Learn how the marketplace and merchant state machines interact with each other](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html) diff --git a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md deleted file mode 100644 index c5007bcc7b8..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Marketplace Order Management feature overview -description: This document contains concept information for the Marketplace order feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -When a customer places an order on the Marketplace, the *Marketplace order* is created in the system. Compared to a regular order in Spryker Commerce OS, the Marketplace order contains information about merchants and one or several [merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html). Thus, the Marketplace order represents a list of items a customer has bought from one or multiple merchants in a single order. - -![Marketplace order](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/marketplace-order.png) - -Each Marketplace order has a set of properties such as order number, order summary, payment information, date, state, shipping methods, and others. - -For example, let’s consider the case when a customer purchased four items from three different merchants in one order. -From the customer perspective, the Marketplace order is a single order with products from one or multiple merchants: - -![Marketplace order structure](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+order+management/Marketplace+Order+Management+feature+overview/Marketplace+Order+schema.png) - -The items in the Marketplace order are grouped by merchant and split into different shipments automatically by default. However, you can change this behavior on the project level according to your business requirements. During the checkout, customers can check how many shipments to expect and select different delivery addresses or methods based on their items. To learn more about multiple shipments, see the [Split Delivery feature overview](/docs/scos/user/features/{{page.version}}/order-management-feature-overview/split-delivery-overview.html). - -As the Marketplace order contains details about offers and products a customer has bought from multiple merchants, the Marketplace order list with the related information is only available to the Marketplace administrator in the Back Office. See [Managing marketplace orders](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html) for details about how Marketplace administrators can manage Marketplace orders in the Back Office. Each [merchant order](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) can be accessed and managed by the relevant merchant in the Merchant Portal.See [Managing merchant orders](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html) for details about how merchants can manage their orders in the Merchant Portal. - -![Merchant order in the Merchant Portal](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/merchant-order-in-merchant-portal.png) - -## Marketplace and merchant order states machines -You can coordinate the Marketplace and merchant orders processing by triggering the state machine events. - -For details about the Marketplace and merchant order state machines, see [Marketplace and merchant state machines](/docs/marketplace/user/features/{{page.version}}//marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). - -For details about how the two state machines interact, see [Marketplace and merchant state machine interactions](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html). - -## Marketplace order calculation -By default, calculations for the Marketplace order items are performed using the item price (product offer price or the price inherited from the concrete or abstract product), their totals, subtotal aggregation, and tax information. - -The Marketplace order contains all the [totals from the Merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) and is defined by the following formula: - -{% info_block infoBox "Info" %} - -Marketplace Sales Order Total = ∑ Merchant Order Totals + ∑ Marketplace Sales Order Expense Totals. - -{% endinfo_block %} - -At the same time, each Marketplace Order Total includes the sum of the respective Merchant Order Totals, for example: - -* Marketplace Sales Order Subtotal = Merchant Order Subtotal 1 + Merchant Order Subtotal 2 + Merchant Order Subtotal n. -* Marketplace Sales Order Discount Total = ∑ Discount Totals included in all Merchant Orders. Check [Marketplace Promotions and Discounts feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-promotions-and-discounts-feature-overview.html) to learn how the discounts are calculated. -* Marketplace Sales Order Tax Total= ∑ Merchant Order Tax Totals. -* Marketplace Sales Order Grand Total = ∑ Merchant Order Grand Totals. -* Marketplace Sales Order Refund Total = ∑ Merchant Order Refund Totals. -* Marketplace Sales Order Canceled Total = ∑ Merchant Order Canceled Totals. - -The sum of Merchant Order Expense Totals may not equal the Marketplace Sales Order Expense Total, as the Marketplace order itself may have additional expenses or fees that do not relate to Merchant orders. - -![Marketplace order calculation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/marketplace-order-calculation.png) - -### Rounding -Rounding rules for a regular SCOS sales order also apply to the Marketplace order. The rules imply: - -* The rounding is performed on the third decimal number. -* If the number you are rounding is followed by 5, 6, 7, 8, or 9, round the number up. Example: The number 325.78721 will be rounded to 325.79. -* If the number you are rounding is followed by 0, 1, 2, 3, or 4, round the number down. Example: The number 62.5347 will be rounded to 62.53. - -{% info_block warningBox "Warning" %} - -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. - -{% endinfo_block %} - -## Next steps -* [Learn about the merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) -* [Learn about the Marketplace and merchant state machines](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html) - -## Related Business User documents - -|FEATURE OVERVIEWS |MERCHANT PORTAL USER GUIDES |BACK OFFICE USER GUIDES | -|---------|---------|---------| -|[Merchant order overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) |[Managing merchant orders](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html) | [Managing main merchant orders](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-main-merchant-orders.html)| -|[Marketplace and merchant state machines overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html) | | | -|[Marketplace and merchant state machines interaction](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html) | | | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Order Management feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-overview.md b/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-overview.md deleted file mode 100644 index 4094bc34751..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/marketplace-order-overview.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Marketplace Order Management feature overview -description: This document contains concept information for the Marketplace order feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -When a customer places an order on the Marketplace, the *Marketplace order* is created in the system. The Marketplace order, in comparison to a regular order in Spryker Commerce OS, contains information about merchants and one or several [merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html). Thus, the Marketplace order represents a list of items a customer has bought from one or multiple merchants in a single order. - -![Marketplace order](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/marketplace-order.png) - -Each Marketplace order has a set of properties such as order number, order summary, payment information, date, state, shipping methods, and others. - -For example, let’s consider the case when a customer purchased 4 items from 3 different merchants in 1 order. -From the customer perspective, the Marketplace order is a single order with products from one or multiple merchants: - -![Marketplace order structure](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+order+management/Marketplace+Order+Management+feature+overview/Marketplace+Order+schema.png) - -The items in the Marketplace order are grouped by merchant and split into different shipments automatically by default. However, you can change this behavior on the project level according to your business requirements. During the checkout, customers can check how many shipments to expect and select different delivery addresses or methods based on their items. To learn more about multiple shipments, the see [Split Delivery feature overview](/docs/scos/user/features/{{page.version}}/order-management-feature-overview/split-delivery-overview.html). - -As the Marketplace order contains details about offers and products a customer has bought from multiple merchants, the Marketplace order list with the related information is only available to the Marketplace administrator in the Back Office. Each [merchant order](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) can be accessed and managed by the relevant merchant in the Merchant Portal. - -![Merchant order in the Merchant Portal](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/merchant-order-in-merchant-portal.png) - -## Marketplace and merchant order states machines -You can coordinate the Marketplace and merchant orders processing by triggering the state machine events. - -For details about the Marketplace and merchant order state machines, see [Marketplace and merchant state machines](/docs/marketplace/user/features/{{page.version}}//marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html). - -For details about how the two state machines interact with each other, see [Marketplace and merchant state machine interactions](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html). - -## Marketplace order calculation -By default, calculations for the Marketplace order items are performed using the item price (product offer price or the price inherited from the concrete or abstract product), their totals, subtotal aggregation, and tax information. - -The Marketplace order contains all the [totals from the Merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) and is defined by the following formula: - -{% info_block infoBox "Info" %} - -Marketplace Sales Order Total = ∑ Merchant Order Totals + ∑ Marketplace Sales Order Expense Totals - -{% endinfo_block %} - -At the same time, each Marketplace Order Total includes the sum of the respective Merchant Order Totals, for example: - -* Marketplace Sales Order Subtotal = Merchant Order Subtotal 1 + Merchant Order Subtotal 2 + Merchant Order Subtotal n. -* Marketplace Sales Order Discount Total = ∑ Discount Totals included in all Merchant Orders. Check [Marketplace Promotions and Discounts feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-promotions-and-discounts-feature-overview.html) to learn how the discounts are calculated. -* Marketplace Sales Order Tax Total= ∑ Merchant Order Tax Totals. -* Marketplace Sales Order Grand Total = ∑ Merchant Order Grand Totals. -* Marketplace Sales Order Refund Total = ∑ Merchant Order Refund Totals. -* Marketplace Sales Order Canceled Total = ∑ Merchant Order Canceled Totals. - -The sum of Merchant Order Expense Totals may not equal the Marketplace Sales Order Expense Total, as the Marketplace order itself may have additional expenses or fees that do not relate to Merchant orders. - -![Marketplace order calculation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Marketplace+and+Merchant+orders/Marketplace+order+feature+overview/marketplace-order-calculation.png) - -### Rounding -Rounding rules for a regular SCOS sales order also apply to the Marketplace order. The rules imply: - -* The rounding is performed on the third decimal number. -* If the number you are rounding is followed by 5, 6, 7, 8, or 9, round the number up. Example: The number 325.78721 will be rounded to 325.79. -* If the number you are rounding is followed by 0, 1, 2, 3, or 4, round the number down. Example: The number 62.5347 will be rounded to 62.53. - -{% info_block warningBox "Warning" %} - -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. - -{% endinfo_block %} - -## Next steps -* [Learn about the merchant orders](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) -* [Learn about the Marketplace and merchant state machines](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html) - -## Related Business User documents - -|FEATURE OVERVIEWS |MERCHANT PORTAL USER GUIDES |BACK OFFICE USER GUIDES | -|---------|---------|---------| -|[Merchant order overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/merchant-order-overview.html) |[Managing merchant orders](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html) | | -|[Marketplace and merchant state machines overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html) | | | -|[Marketplace and merchant state machines interaction](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-interaction.html) | | | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Order Management feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-order-management-feature-walkthrough/marketplace-order-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/merchant-order-overview.md b/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/merchant-order-overview.md deleted file mode 100644 index a6dab64a7b6..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-order-management-feature-overview/merchant-order-overview.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Merchant order overview -description: This document contains concept information for the Merchant order feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -In the marketplace, when a buyer goes through checkout, the [Marketplace order](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.html) is created. Such an order can contain offers and products from different merchants. The part of the order that belongs to a certain merchant is called *merchant order*. The merchant order created in the system after the Marketplace order has been placed. Thus, each merchant order contains at least one item from the Marketplace order. - -![Merchant order](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+order+management/Marketplace+Order+Management+feature+overview/Merchant+Order+overview/Merchant+Order+schema.png) - - - -## Merchant order calculation - -A merchant order consists of merchant order items, which are items (products) purchased by a customer. All the calculations for merchant order items are performed using the product offer, merchant products price, and *merchant order totals*. These are the [initial totals](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/calculation-3-0.html) that are calculated according to the product offer purchased: - -| TOTAL | DESCRIPTION | -| -------- | -------------- | -| Canceled total | Amount to be returned in case the order was canceled. `Canceled total = Merchant Order grand total - Merchant Order expense total` | -| Discount total | Total discount amount. | -| Merchant Order grand total | Total amount the customer needs to pay after the discounts have been applied. | -| Merchant Order expense total | Total expenses amount (for example, shipping). | -| Merchant Order refund total | Total refundable amount. | -| Merchant Order subtotal | Total amount before taxes and discounts. | -| Merchant Order tax total | Total tax amount from the grand total. | -| Marketplace Operator fees total | Total amount of fees paid to the Marketplace administrator. | - -The rounding logic for the calculations is the same as the one used for the Marketplace order. For details, see [Rounding in the Marketplace Order feature overview](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.html#rounding). diff --git a/docs/marketplace/user/features/202108.0/marketplace-product-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-product-feature-overview.md deleted file mode 100644 index e7539da3be0..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-product-feature-overview.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Marketplace Product feature overview -description: This document contains concept information for the Marketplace Products feature. -template: concept-topic-template ---- - -In the Marketplace, products that a merchant owns are referred to as *marketplace products*. Besides creating offers for products of other merchants or the ones that the Marketplace administrator suggests, a merchant can also create their own unique products. These products possess the same characteristics the usual abstract and concrete products have, but in addition, every such product has merchant-related information such as merchant reference. Merchants can [create their products in the Merchant Portal](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/creating-marketplace-abstract-product.html) or [import the marketplace products data](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product.csv.html), or merchants manage stock and set prices for their products in the Merchant Portal. For details, see [Managing marketplace abstract products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html). - -Merchants can let other merchants create offers for their unique products. This possibility is defined with the help of the `is_shared` parameter of the [marketplace product data importer](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product.csv.html). - -## Marketplace products on the Storefront - -The marketplace products are displayed on the Storefront when the following conditions are met: - -1. The product status is *Active*. -2. The merchant who owns the product is [*Active*](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants). -3. The product visibility state is *Online*. -4. The product is defined for the current store. -5. The product has stock or is always in stock. -6. The current day is within the range of the product validity dates. - -### Marketplace product on the product details page - -Marketplace product appears on top of the **Sold by** list together with the product offers from other merchants. For a buyer, it doesn't matter whether they are buying a product offer or a marketplace product; however, in the system, different entities are defined. - -Product price on top of the product details page is taken from the marketplace product or the product offer. It depends on the option selected in the **Sold by** field. - -![marketplace product on PDP](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product/merchant-product-on-pdp.png) - -The marketplace product is also displayed with the **Sold By** field defining the merchant on the following pages: - -- Cart page -- Wishlist -- Shipment page of the Checkout -- Summary page of the Checkout -- Order Details of the customer account - -![marketplace product on PDP](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product/add-merchant-product-to-wl-and-from-wh-to-cart.gif) - - -### Searching and filtering marketplace products - -When the merchant name is entered in the catalog search, not only the offers but also the products belonging to this merchant are displayed. By selecting a merchant name in the filter, products from this merchant are also displayed. - -![Search for marketplace products](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product/search-for-products-by-name-and-sku.gif) - - -## Marketplace products in the Back Office - -Before new marketplace products become visible on the Storefront, they must be [activated either by the merchant](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html#activating-and-deactivating-a-concrete-product) in the Merchant Portal or [by the Marketplace administrator in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/managing-products/managing-products.html#activating-a-product). - -A Marketplace administrator can filter the products belonging to certain merchants in the Back Office. - -![merchants-switcher-on-products](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product/filter-merchant-productsby-merchant-back-office.gif) - -Also, Marketplace administrators can edit products, if needed, and create products when acting as the [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html). - - -## Marketplace products in the Merchant Portal - -Merchants [create](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/creating-marketplace-concrete-product.html) and [manage their products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html) in the Merchant Portal. They can [define prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html), stock, and [attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) for their products. - -## Related Business User documents - -| MERCHANT PORTAL USER GUIDES | BACK OFFICE USER GUIDES | -| -------------------- | ----------------------- | -| [Creating marketplace abstract products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) | | -| [Creating marketplace concrete products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/creating-marketplace-concrete-product.html) | | -| [Managing marketplace abstract products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) | [Editing abstract products](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/abstract-products/editing-abstract-products.html) | -| [Managing marketplace concrete products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html)| [Editing a product variant](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/products/abstract-products/editing-abstract-products.html) | -| [Managing marketplace abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) | | -| [Managing marketplace concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html) | | -| [Managing marketplace abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) | | -| [Managing marketplace concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html) | | -| [Managing marketplace abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) | | -| [Managing marketplace concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html) | | -| [Managing marketplace abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) | | -| | | - - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Products feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-feature-walkthrough.html) for developers. - -{% endinfo_block %} \ No newline at end of file diff --git a/docs/marketplace/user/features/202108.0/marketplace-product-offer-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-product-offer-feature-overview.md deleted file mode 100644 index 6a53452e1c8..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-product-offer-feature-overview.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Marketplace Product Offer feature overview -description: This document contains concept information for the Product offers feature in the Spryker Commerce OS. -template: concept-topic-template ---- - -The *Product Offer* entity is created when multiple merchants need to sell the same product on the Marketplace. - -A product offer is created per concrete product and contains product-specific information, information about the merchant selling this product, and the offer price. Any concrete product can have one or many offers from different merchants. Therefore, a unique *product offer reference* is defined per each product offer and is used to identify the offer in the system. Offer reference is mandatory and can only be defined once. - -Merchants can [create product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html#creating-a-product-offer) in the Merchant Portal or [import the product offers](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer.csv.html). - - Marketplace administrators can view and approve or deny merchants' product offers in the Back Office. For details, see [Managing merchant product offers](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/offers/managing-merchant-product-offers.html). - - Every merchant can have multiple offers for the same concrete product. However, a product offer is related to a single merchant and cannot be shared between other merchants: - -![Multiple product offers per product](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/product-offers-per-product.png) - -![Product offers on PDP](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/product-offers-on-pdp.png) - -{% info_block infoBox "Note" %} - -You can retrieve product offer details via Glue API. For details, see [Retrieving product offers](/docs/marketplace/dev/glue-api-guides/{{page.version}}/product-offers/retrieving-product-offers.html) and [Retrieving product offers for a concrete product](/docs/marketplace/dev/glue-api-guides/{{page.version}}/concrete-products/retrieving-product-offers-of-concrete-products.html). - -{% endinfo_block %} - -## Product offer structure -To define the visibility of a product offer on the Storefront, the following details are attached to the product offer entity: - -| OFFER PARAMETER | DESCRIPTION | -| ------------------- | ----------------------------- | -| Concrete product SKU | Defines the concrete product the offer is created for. | -| Merchant SKU | Lets the merchant identify the product offer in the ERP system. | -| Offer Reference | Unique ID that helps to identify the product offer in the Marketplace. Offer reference is mandatory. | -| Store | Defines the store where the product offer is available. | -| Price | Lets the merchant set their price for the offer. {% info_block infoBox "Info" %} You can also set [volume prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) for a product offer. For now, you can only [import volume prices for product offers](/docs/marketplace/dev/data-import/{{page.version}}/file-details-price-product-offer.csv.html). {% endinfo_block %} | -| Stock | Lets the merchant define stock for the product offer. The stock can be reserved and available. | -| Status | Approval status:
  • Approval status (Waiting for approval, Approved, Denied).
  • Visibility: Visibility (Active, Inactive).
| -| Validity Dates | Specifies the period during which the product offer is visible on the Storefront. Concrete product validity dates have higher priority over the Offer validity dates. | - - -## Product offer status -Product offer status defines whether the offer is active and displayed on the Storefront. Based on this, the product offer may have offer approval status and visibility status. - -### Offer approval status - -* *Waiting for Approval*: Default status that is applied to the offer after it has been created. - -* *Approved*: The approved offer can be displayed on the Storefront. Only the Marketplace administrator can approve the offer. For details about how a Marketplace administrator can approve offers in the Back Office, see [Approving or denying offers](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/offers/managing-merchant-product-offers.html#approving-or-denying-offers). - -* *Denied*: If the offer is denied, it cannot be displayed on the Storefront. Only the Marketplace administrator can deny the offer. For details about how a Marketplace administrator can deny offers in the Back Office, see [Approving or denying offers](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/offers/managing-merchant-product-offers.html#approving-or-denying-offers). - -### Visibility - -* *Active*: When an offer is active, it is displayed on the Storefront. Either merchant or Marketplace administrator can make the offer active. - -* *Inactive*: When an offer is inactive, it is not displayed on the Storefront. Either merchant or Marketplace administrator can make the offer inactive. - -![Offer approval flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/offer-approval-flow.png) - -## Product offer price - -On the product detail page, a customer sees a list of product offers from one or several merchants. Each offer has its own price. This price is represented as the *product offer price* price dimension. -The product offer prices support: - -* Mode (Net/Gross) -* Volume -* Store -* Currency - -Product offer price follows the [concrete product price inheritance model](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html#price-inheritance). So if the Merchant doesn't set a price in the offer, it is taken from the concrete product. Otherwise, the product offer price has a higher priority and substitutes the concrete product price if it is indicated. If at least one price is defined for the offer (for example, original), it is valid for this offer even if the concrete product has a default price (sales price), but the offer does not. For details about price types, see [Price types](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html#price-inheritance). - -Merchants can define product offer prices in the Merchant Portal when they [create product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html#creating-a-product-offer) or [import product offer prices](/docs/marketplace/dev/data-import/{{page.version}}/file-details-price-product-offer.csv.html). - -## Product offer stores - -A merchant product offer is defined per store. Merchants set their own prices per store for the product offer. -However, defining the right store for the product offer affects its visibility. When setting the stores for the product offer, merchants need to pay attention to the stores where their abstract products are available. -The following table illustrates the logic according to which the product offer is displayed in the Storefront. - -| Characteristics | DE | AT | US | -| ----------------------------------------- | ---- | ---- | ---- | -| Store where the abstract product is added | ✓ | ✓ | x | -| Store where the product offer is added | x | ✓ | ✓ | -| Is product offer visible? | no | yes | no | - -Merchants can define product offer stores in the Merchant Portal when they create [product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html), or [import the product offer store](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-offer-store.csv.html). - -## Product offers on the Storefront - -Merchant product offer with all the related offer information is visible on the product detail page, and further on the shopping cart page and checkout pages when the following conditions are met: - -1. The merchant who owns the offer is [*Active*](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#activating-and-deactivating-merchants). -2. The product offer status is: - - Approved - - Active -3. The product offer is defined for the current store. -4. The current store is defined for the provided offer. -5. The current day is within the range of the product offer validity dates. - -The decision of whether the product offer can be purchased depends on the offer availability. But availability has no influence on offer visibility on the Storefront. - -### Product offers on the product details page - -All available product offers are listed in the *Sold by* area of the product details page. The offers are sorted by price from the lowest to the highest. An offer with the lowest price is selected by default if there are multiple offers for the product. - -![Product offers on product details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/product-offers-on-pdp.gif) - -### Product offers in the shopping cart - -Offers from different merchants are added as separate cart items, each with its quantity. You can add a note to the offer on the cart page. -A customer can review the merchant information by clicking the link in the *Sold By* hint. - -![Product offers in cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/add-offers-to-cart.gif) - -### Product offers during checkout - -During the checkout, offers from the same merchant are grouped for delivery so that the customer can always know how many shipments to expect and the merchants can smoothly fulfill the orders. - -![Product offers during checkout](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/product-offers-during-checkout.gif) - -### Product offers in the wishlist - -Customers can add product offers to a wishlist for future purchase. Merchant information is kept for the offer when it is added to a wishlist. Further, customers can add the offer from the wishlist to cart. - -![Product offers in wishlist](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Marketplace/Products+and+offers/Product+offer+feature+overview/add-product-offer-to-wl-and-from-wl-to-cart.gif) - -## Current constraints - -* B2B Merchant-specific prices do not work with product offer prices. -* All cart-related B2B features (for example, Quick Order, RFQ, Approval Process) will be supported later. -* Availability Notification is not supported. - -## Related Business User documents - -| MERCHANT PORTAL USER GUIDES |BACK OFFICE USER GUIDES | -|---------|---------| -| [Managing product offers](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/offers/managing-product-offers.html) |[Managing merchant product offers](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/offers/managing-merchant-product-offers.html)| - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Product Offer feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}//marketplace-product-offer-feature-walkthrough/marketplace-product-offer-feature-walkthrough.html) and [Marketplace Product Offer Prices feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-offer-prices-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-product-options-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-product-options-feature-overview.md deleted file mode 100644 index 6335871405e..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-product-options-feature-overview.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Marketplace Product Options feature overview -description: The Marketplace Product Options feature lets merchants and Marketplace administrators create product option groups. -template: concept-topic-template ---- - -With the *Marketplace Product Options* feature, merchants and Marketplace administrators can create *product options* for marketplace products. - -Product options are product additions that a customer can select on the product detail page before adding the product to the cart. For example, the product options can be gift wrappings for products, insurance, or warranty. Product options do not have stock but an SKU linked to product abstracts. Thus, you cannot purchase them without buying a corresponding product. - -Each product option is defined by the following: - -* Product option group name -* Tax set assigned on the product option group -* Option value -* Translation - -A *product option group* holds all available options or *option values* that buyers select. For example, you can have the *Warranty* product option group and create *1-year warranty* and *2-year warranty* values for it. - -{% info_block infoBox "Info" %} - -Currently, you can create and manage general product options via the Back Office. However, you can only import merchant product options. - -* For details about how you can create product options in the Back Office, see [Creating a product option](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html). -* For details about how you can manage the product options in the Back Office, see [Managing product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html). -* For details about how you can import merchant product options, see [File details: merchant product option group](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-option-group.csv.html). - -{% endinfo_block %} - -## Marketplace product options approval statuses - -Product option groups created by merchants can have the following statuses: - -* *Waiting for approval*: The product option group was created by a merchant and waits for the Marketplace administrator's approval. This is the default status assigned to all Marketplace product options that do not have a different approval status set. -* *Approved*: The product option group was approved by the Marketplace administrator. Merchants can use it for their products and offers, so if it is [active](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html#activating-a-product-option), the product option is displayed on the Storefront. -* *Denied*: The Marketplace administrator rejected the product option, and merchants cannot use it for their products and offers. If they still use it, it will not be applied and will not be displayed on the Storefront. - - -Currently, you can only import the Marketplace options approval statuses. For details, see [File details: merchant product option group](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-product-option-group.csv.html). - -## Marketplace product options in the Back Office -In the Back Office, a Marketplace administrator can: -* [create general product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html); -* [manage general product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html); -* [view product options for all or individual merchants](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/managing-product-options.html#filtering-product-options-by-merchants). - -## Marketplace product options on the Storefront - -On the product detail page, the product option group (1) is displayed as a drop-down list with its option values (2). - -![Product options on the Storefront](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product+options/product-options-on-the-storefront.png) - -The merchant product option groups are displayed on the Storefront only when: -* The product option group status is [active](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html#activating-a-product-option). -* The product option group approval status is [approved](#marketplace-product-options-approval-statuses). - -After a merchant creates a product option group and assigns it to their products, the product option group is displayed for all the offers of the products, including offers of other merchants. For example, in the following image, the Video King merchant's offer is selected, but the Spryker merchant's product option group is still displayed: - -![Marketplace product options on the Storefront](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+product+options/merchant-prodcut-options-on-the-storefront.png) - -## Marketplace product options in the Merchant Portal - -In the Merchant Portal, the product options are displayed on the order details page as part of the order: - -Product options on the order details page - -## Current constraints - -Currently, the feature has the following functional constraints which are going to be resolved in the future: - -* Product option values of a product option group can be only from one merchant. -* Product options of a merchant can be used with all offers from all merchants. -* There is no Back Office UI for approving or denying merchant product options. -* [Glue API](/docs/scos/dev/glue-api-guides/{{page.version}}/glue-rest-api.html) does not support merchant product option groups and values. -* Merchants can not create and manage product option groups and values in the Merchant Portal. - -## Related Business User documents - -|BACK OFFICE USER GUIDES | -|---------| -| [Creating a product option](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html) -| [Managing product options](/docs/marketplace/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-product-options.html)| - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Product Options feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-product-options-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-promotions-and-discounts-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-promotions-and-discounts-feature-overview.md deleted file mode 100644 index 6bb13f6416f..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-promotions-and-discounts-feature-overview.md +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Marketplace Promotions and Discounts feature overview -description: This document contains concept information for the Marketplace Promotions and Discounts feature. -template: concept-topic-template -lust_udpated: Jul 17, 2023 -related: - - title: Discount - link: docs/marketplace/dev/feature-walkthroughs/page.version/marketplace-promotions-and-discounts-feature-walkthrough.html ---- - -The *Marketplace Promotions and Discounts* feature ensures that discounts are applied to orders. - -There are two discount types: - -* Voucher -* Cart rule - -A product catalog manager selects a discount type when [creating a discount](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). - -{% info_block warningBox "Warning" %} - -In current implementation, it is impossible to create cart rules or vouchers based on any merchant parameters, such as merchant or product offer. However, it is still possible to create cart rules and vouchers for the marketplace products. See [Create discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html) for more details. - -{% endinfo_block %} - -Based on the business logic, discounts can be applied in the following ways: - -* The discount is applied to the whole Marketplace order. In such a scenario, the discount is distributed among all the merchant orders and calculated according to the total volume of each of the items. - -![Merchant discount 1](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Order+Management/mp-discount-1.png) - -* The discount is related to a single product item in the Marketplace order. In this case, the whole discount is assigned only to the merchant order that contains the discounted item. - -![Merchant discount 2](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Order+Management/mp-discount-2.png) - - -## Voucher - -A *Voucher* is a discount that applies when a customer enters an active voucher code on the *Cart* page. -![Cart voucher](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Promotions+and+Discounts+feature+overview/voucher-storefront.png) - -Once the customer clicks **Redeem code**, the page refreshes to show the discount name, discount value, and available actions: **Remove** and **Clear all**. The **Clear all** action disables all the applied discounts. The **Remove** action disables a single discount. -![Cart voucher applied](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Promotions+and+Discounts+feature+overview/voucher-cart.png) - -Multiple voucher codes can be generated for a single voucher. The code has a **Max number of uses** value which defines how many times the code can be redeemed. - -You can enter codes manually or use the code generator in the Back Office. -![Generate codes](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/generate_codes.png) - -To learn how a product catalog manager can create a voucher in the Back Office, see [Creating a voucher](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). - -## Cart Rule - -A *cart rule* is a discount that applies to cart once all the [decision rules](#decision-rule) linked to the cart rule are fulfilled. - - -The cart rule is applied automatically. If the decision rules of a discount are fulfilled, the customer can see the discount upon entering the cart. Unlike with [vouchers](#voucher), the **Clear all** and **Remove** actions are not displayed. -![Cart rule](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Promotions+and+Discounts+feature+overview/cart-rule-storefront.png) - -To learn how a product catalog manager can create a cart rule in the Back Office, see [Create discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). - -### Decision rule -A decision rule is a condition assigned to a discount that should be fulfilled for the discount to be applied. - -A discount can have one or more decision rules. Find an exemplary combination below: - -| Parameter | RELATION OPERATOR | VALUE | -| --- | --- | --- | -| total-quantity | equal | 3 | -| day-of-week| equal | 5 | - -In this case, the discount is applied if the cart contains three items and the purchase is made on the fifth day of the week (Friday). - -Multiple decision rules form a query. A query is a request for information based on the defined parameters. In the Discount feature, a query requests information from a cart to check if it is eligible for the discount. By specifying decision rules, you define the parameters of the query. - -In the Back Office, a product catalog manager creates decision rules in a Query Builder. The decision rules created in the Query Builder are transformed into a single query. - -The decision rules from the previous example look as follows in the Query Builder: - -
- -![Query builder](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/query-builder.png) - -
- -A product catalog manager can enter the query manually as well. - -The same decision rules look as follows as a plain query: - -
- -![Plain query](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/plain-query.png) -
- -You can switch between Query Builder and Plain query modes to see how the specified decision rules look in either of them. - - -Decision rules are combined with *AND* and *OR* combination operators. With the AND operator, all the rules should be fulfilled for the discount to be applied. With the OR operator, at least one of them should be fulfilled for the discount to be applied. - - -In the following example, for the discount to be applied, a cart should contain three items, and the purchase should be made on Wednesday. -![AND operator](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/and-operator.png) - -In the following example, for the discount to be applied, a cart should contain three items, or the purchase should be made on Wednesday. -![OR operator](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/or-operator.png) - -{% info_block infoBox "Info" %} - -When rules are combined by the OR operator, they do not exclude each other. If a cart fulfills both such rules, the discount is still applied. - -{% endinfo_block %} - - -#### Decision rule group - -A rule group is a separate set of rules with its own combination operator. - -![Decision rule group](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+%26+Discounts/Discount/Discount+Feature+Overview/decision-rule-group.png) - -With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it is evaluated on all the levels of the hierarchy. On each level, there can be both rules and rule groups. - -![Decision rule hierarchy](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+%26+Discounts/Discount/Discount+Feature+Overview/decision-rule-hierarchy.png) - -When a cart is evaluated on a level that has a rule and a rule group, the rule group is treated as a single rule. The following diagram shows how a cart is evaluated against the rules on the previous screenshot. - -### Discount threshold -A *threshold* is a minimum number of items in the cart that should fulfill all the specified decision rules for the discount to be applied. -The default value is *1* . It means that a discount is applied if at least one item fulfills the discount's decision rules. - -In the following example, the discount is applied if there are four items with the Intel Core processor in the cart. -![Threshold](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/threshold.png) - - -## Discount application - -Discount application is a discount configuration option that defines the products to which a discount is applied. - -The Marketplace discounts are applied based on the query string. - -The *query string* is a discount application type that uses [decision rules](#decision-rule) to dynamically define what products a discount applies to. - -The discount in the following example applies to white products. - -![Query collection](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/collection-query.png) - -The product selection based on the query string is dynamic: -* If at some point, the color attribute of a product changes from white to anything else, the product is no longer eligible to be discounted. -* If at some point, a product receives the white color attribute, it becomes eligible for the discount. - - -## Discount calculation - -Calculation defines the value to be deducted from a product's original price. There are two types of discount calculation: - -* Calculator percentage -* Calculator fixed - -{% info_block infoBox "Info" %} - -With the calculator fixed type, the currency of the respective shop is used for calculation. - -{% endinfo_block %} - -See examples in the following table. - -| PRODUCT PRICE | CALCULATION TYPE | AMOUNT | DISCOUNT APPLIED | PRICE TO PAY | -| --- | --- | --- | --- | --- | -| €50 | Calculator percentage | 10 | €5 | €45 | -| €50 | Calculator fixed | 10 | €10 | €40 | - -A product catalog manager defines calculation when [creating a voucher](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html) or [Create discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). -![Discount calculation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/discount_calculation.png) - -## Discount exclusiveness - -Discount exclusiveness defines if a discount value of a discount can be combined with the discount value of other discounts in a single order. - -A product catalog manager defines calculation when [creating a voucher](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html) or [Create discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). -![Exclusive discount](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/exclusivity.png) - -### Exclusive discount - -An exclusive discount is a discount that, when applied to a cart, discards all the other discounts applied to it. If a cart is eligible for multiple exclusive discounts, the highest-value discount is applied. - -In the following example, a cart with the order total amount of €100 contains the following discounts. - -| DISCOUNT NAME | DISCOUNT AMOUNT | DISCOUNT TYPE | EXCLUSIVENESS | DISCOUNTED AMOUNT | -| --- | --- | --- | --- | --- | -| D1 | 15 | Calculator percentage | Exclusive | €15 | -|D2|5| Calculator fixed | Exclusive | €5 | -|D3|10| Calculator percentage | Non-exclusive | €10 | - -The discount exclusivity is resolved as follows: -1. The discounts D1 and D2 are exclusive, so the non-exclusive discount D3 is discarded. -2. The discount D1 provides more free value than the discount D2. -3. As a result, the discount D1 is applied. - - -### Non-exclusive discount - -A non-exclusive discount is a discount that can be combined with other non-exclusive discounts in a single order. - -In the following example, a cart with the order total amount of €30 contains the following discounts. - -| DISCOUNT NAME | DISCOUNT AMOUNT | DISCOUNT TYPE | EXCLUSIVENESS | DISCOUNTED AMOUNT | -| --- | --- | --- | --- | --- | -| D1 | 15 | Calculator percentage | Non-exclusive | €15 | -| D2 | 5 | Calculator fixed | Non-exclusive | €5 | -| D3 | 10 |Calculator percentage | Non-exclusive | €10 | - -As all the discounts are non-exclusive, they are applied together. - -## Discount validity interval - -A *validity interval* is a time period during which a discount is active and can be applied. - - -If a cart is eligible for a discount outside of its validity interval, the cart rule is not applied. If a customer enters a voucher code outside of its validity interval, they get a "Your voucher code is invalid." message. - - -A product catalog manager defines calculation when [creating a discount](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/create-discounts.html). -![Validity interval](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/validity-interval.png) - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Promotions and Discounts feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-promotions-and-discounts-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-return-management-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-return-management-feature-overview.md deleted file mode 100644 index 92284b6d0a6..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-return-management-feature-overview.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Marketplace Return Management feature overview -description: This document contains concept information for the Marketplace Return Management feature. -template: concept-topic-template ---- - -*Marketplace Return Management* feature lets you create and manage returns for a merchant order in a Spryker Marketplace Demo Shop. - -Once an order has been shipped, the registered buyer or a Back Office user can initiate a return of the whole marketplace order or its individual items. For information about what items can be returned, see [Returnable items and a return policy](/docs/scos/user/features/{{page.version}}/return-management-feature-overview/return-management-feature-overview.html#returnable-items-and-a-return-policy). For information about how a Back Office user can create returns, see [Managing marketplace orders](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html). - - -{% info_block warningBox "Note" %} - -You can also create and manage returns via Glue API. For details, see [Managing the returns](/docs/marketplace/dev/glue-api-guides/{{page.version}}/managing-the-returns.html). - -{% endinfo_block %} - -## Marketplace return items states - -The return items can have the following states in the Marketplace Order Management System (Marketplace OMS): -* *Waiting for return*: a buyer created a return, but a merchant user has not confirmed it in the Merchant Portal yet. -* *Returned*: the return has been received and confirmed by the merchant user. -* *Refunded*: A merchant user has made a refund for the returned items. -* *Return Canceled*: the return has been canceled by a merchant user because of the return policy or for any other reason. -* *Shipped to customer*: the canceled return has been shipped back to the buyer. -* *Delivered*: the buyer has received the shipped return. - -The relation of the sales order items statuses and the return states is as follows: - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Return+Management/marketplace-merchant-return-process.png) - -## Marketplace return slip - -Buyers and Back Office users (Marketplace administrator and [main merchant](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/main-merchant-concept.html)) can have a paper version of the return by printing the automatically generated *return slip*. The return slip contains: -* The return and marketplace sales order references. -* Details about the returnable marketplace sales order items. -* A barcode generated based on the return reference. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Return+Management/marketplace-return-slip.png) - -## Marketplace Return Management on the Storefront - -The registered buyers can return entire orders or individual merchant order items as soon as they have been delivered to them. When returning, the buyers can select or enter a return reason. - -The guest users can not initiate returns of their orders, as the return management is done via the Customer Account on the Storefront. Returns of the guest orders can be initiated only via the Back Office by the Back Office user. - -{% info_block infoBox "Info" %} - -One return can include products only from one merchant. - -{% endinfo_block %} - -Once a return request has been submitted, it acquires the *Waiting for return* state. The return states change as the merchant [processes the return](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html#creating-a-marketplace-return). For details about the return states, see [Return items states](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html#reference-information-creating-a-marketplace-return). - -All the returns created by the buyer or by the Back Office user for the buyer are listed on the *Returns* page in the *Customer Account*. From here, the buyer can view the return details and print the return slip. - -The following figure shows how to create a return, view its details, and print a slip: - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Return+Management/create-a-return-marketplace.gif) - -## Marketplace Return Management in the Back Office - -A Back Office user can create returns for the [returnable items](/docs/scos/user/features/{{page.version}}/return-management-feature-overview/return-management-feature-overview.html#returnable-items-and-a-return-policy) from the order details page of the Back Office. For details, see [Back Office user guide: Managing orders](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/orders/managing-marketplace-orders.html). Also, a Back Office user can view returns, close fulfilled returns, print a return slip, and cancel returns. - -## Marketplace Return Management in the Merchant Portal - -Merchants process their returns in the Merchant Portal. For details about how to manage the merchant returns, see [Merchant Portal guide: Managing merchant orders ](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html). - -## Related Business User documents - -| MERCHANT PORTAL USER GUIDES | BACK OFFICE USER GUIDES | -| --- | --- | -| [Managing merchant returns](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/orders/managing-merchant-orders.html#managing-merchant-returns) | [Managing marketplace returns](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-marketplace-returns.html) | -| | [Managing main merchant returns](/docs/marketplace/user/back-office-user-guides/{{page.version}}/sales/managing-main-merchant-returns.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Return Management feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-return-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-shipment-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-shipment-feature-overview.md deleted file mode 100644 index f706d26c7f2..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-shipment-feature-overview.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Marketplace Shipment feature overview -description: This document contains concept information for the Marketplace Shipment feature. -template: concept-topic-template ---- - -The *Marketplace Shipment* feature allows splitting the [marketplace order](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.html) into different shipments based on merchants who will process them. - -A *shipment* is a set of two or more products combined by the same delivery address. - -With the Marketplace Shipment feature, every merchant can define delivery price and expected delivery time, tax sets, and availability of the delivery method per store. Thus, a [marketplace order](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-order-overview.html) has multiple delivery methods from different merchants. - -## Marketplace Shipment on the Storefront -In the *Address* checkout step, buyers can define a common delivery address where all the shipments are to be delivered. -Then, in the *Shipment* checkout step, buyers can see that the products are grouped by a merchant into different shipments by default. For each shipment, they can select a shipping method and a delivery date (optional). - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Shipment/shipment-to-single-address.png) - -Alternatively, buyers can use the **Deliver to multiple addresses** drop-down option to assign a delivery address per cart item. By doing that, even items from the same merchant have separate shipments. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Shipment/deliver-shipment.png) - - -## Marketplace Shipment in the Back Office -In the Back Office, the shipments are displayed in the **Order Items** section on the **View Order: _[Order ID]_** page. A Marketplace administrator can view them. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Shipment/shipments-back-office.png) - -## Marketplace Shipment in the Merchant Portal -On the **Order _[Order ID]_** drawer, every merchant can view only the shipment of their product offers and products. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Shipment/shipment-merchant-portal.png) - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Shipment](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-shipment-feature-walkthrough.html) feature walkthrough for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/marketplace-wishlist-feature-overview.md b/docs/marketplace/user/features/202108.0/marketplace-wishlist-feature-overview.md deleted file mode 100644 index 39d5b501f00..00000000000 --- a/docs/marketplace/user/features/202108.0/marketplace-wishlist-feature-overview.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Marketplace Wishlist feature overview -description: This document contains concept information for the Marketplace Wishlist feature. -template: concept-topic-template ---- - -Wishlists are collections of products that a customer saves for further reference. - -The *Marketplace Wishlist* feature lets customers add product offers and merchant products to a wishlist in the Marketplace Storefront. This way, customers save time without having to browse favorite items all over the marketplace shop. - -![Adding products and offers to wishlist](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Wishlist/add-products-and-offers-to-wishlist.gif) - -Merchant information is displayed in the *Sold by* field so that a customer can always know which merchant is the owner of the product. - -Once the customer decides to buy a product, they can add it to cart directly from the wishlist. - -![Adding merchant product offer from wishlist to cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Features/Marketplace+Wishlist/add-merchant-product-offer-from-wishlist-to-cart.gif) - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Marketplace Wishlist feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/marketplace-wishlist-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/merchant-category-feature-overview.md b/docs/marketplace/user/features/202108.0/merchant-category-feature-overview.md deleted file mode 100644 index b4437093246..00000000000 --- a/docs/marketplace/user/features/202108.0/merchant-category-feature-overview.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Merchant Category feature overview -last_updated: Apr 23, 2021 -description: Merchant categories help you easily find relevant merchants. -template: concept-topic-template ---- - -As the Marketplace environment presupposes having a lot of sellers—merchants, classification and categorization of merchants arise at some point. For this purpose, the Merchant Category entity exists. By defining merchant categories for merchants, you add flexibility to the working process and let customers implement different business logic on your project. -For shoppers, it's convenient to find the necessary and relevant merchants and their products according to certain merchant categories. - -To create merchant categories, you should import them. For details, see [File details: merchant_category.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-category.csv.html). - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Merchant Category feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/merchant-category-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/features/202108.0/merchant-opening-hours-feature-overview.md b/docs/marketplace/user/features/202108.0/merchant-opening-hours-feature-overview.md deleted file mode 100644 index 684b48168b6..00000000000 --- a/docs/marketplace/user/features/202108.0/merchant-opening-hours-feature-overview.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Merchant Opening Hours feature overview -last_updated: Jul 27, 2021 -description: The Merchant Opening Hours feature lets you define opening hours for a merchant. -template: concept-topic-template ---- - -To provide maximum selling activity, merchants can provide their working schedule, by defining the opening hours on weekdays, holidays and exceptional cases. - -A merchant has the following: - -* Default opening hours—defined per weekday and time including: - * Lunch break time - * Open/Closed state - -* Special opening hours are relevant for cases: - - * Merchant is opened on a usually closed day—for example, Sunday. - * Merchant has different opening hours in comparison to a normal schedule—for example, December 31th has shorter opening hours. - -* Public holidays—special days when the Merchant is not available due to the public holidays - -To display merchant opening hours on the Storefront, you should import the open hours information. For information about how to do that, see [File details: merchant_open_hours_date_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-date-schedule.csv.html) and [File details: merchant_open_hours_week_day_schedule.csv](/docs/marketplace/dev/data-import/{{page.version}}/file-details-merchant-open-hours-week-day-schedule.csv.html). - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Merchant Opening Hours feature walkthrough](/docs/marketplace/dev/feature-walkthroughs/{{page.version}}/merchant-opening-hours-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/dashboard/managing-merchants-performance-data.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/dashboard/managing-merchants-performance-data.md deleted file mode 100644 index f2bc2e5ab53..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/dashboard/managing-merchants-performance-data.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Managing merchant's performance data -last_updated: Nov 13, 2020 -description: This document describes what information you can check in Dashboard of the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes what information you can check in the dashboard of the Merchant Portal. - -*Dashboard* is a hub for merchants' important business and performance data. It lets merchants monitor their own store inside the Marketplace by having a snapshot view of the most crucial information. - -**Dashboard** is the first page a merchant sees after logging into the Merchant Portal. - -## Prerequisites - -To start working with the dashboard, navigate to **Merchant Portal > Dashboard**. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - - -## Managing offers in Dashboard - -To manage the existing offers in the system, click **Manage Offer**. This takes you to the **Offers** page of the Merchant Portal. - -To create a new offer, click **Add Offer**. For more detailed instructions on how to create a new offer in the Merchant Portal, see creating a product offer - -### Reference information: Managing offers in Dashboard - -This section contains the attributes description you see when managing offers in **Dashboard**. - -#### Offers widget - -![offers-widget](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/merchant+portal+user+guides/dashboard+reference+information/offers-widget.png) - -The **Offers** widget provides the following information: - -`Offers 4`—the total number of offers in the Merchant Portal. - -#### Stock - -With Stock—the total number of offers with stock. - -Low on Stock—the total number of offers that have less than 5 in the stock. - -#### Validity - -Valid—the total number of valid offers, that is, offers that have no validity dates or **Valid From & Valid To** includes today's date. - -Expiring in 5 days—the total number of offers that will expire in the next 5 days. - -#### Visibility - -Online—the total number of online offers. - -Offline—the total number of offline offers. - -#### On Marketplace - -The total number of offers that are available on the Storefront, that is, all of the orders that meet the following criteria: - -* Have no validity dates or **Valid From & Valid To** includes today's date. -* Are online. -* Have stock. - -## Managing orders in Dashboard - -To manage orders, click **Manage Orders**. The **Orders** page of the Merchant Portal opens. - - -### Reference information: Managing orders in Dashboard - -This section contains the attributes description you see when managing orders in **Dashboard**. - -#### Orders widget - -![orders-widget](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/merchant+portal+user+guides/dashboard+reference+information/orders-widget.png) - -The **Orders** widget provides the following information: - -`Orders 2`—the total number of orders in the Merchant Portal. - -#### Per Store - -The total number of orders that are available for each store. - -#### New -The total number of orders that were placed in the last 5 days. diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/index.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/index.md deleted file mode 100644 index 541975486bf..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Merchant Portal user guides -template: concept-topic-template ---- -The Merchant Portal user guides describe how merchant users can accomplish their tasks in the Merchant Portal. - -{% info_block warningBox "Note" %} - -Only active merchant users of [approved](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#approving-and-denying-merchants) merchants have access to the Merchant Portal. - -{% endinfo_block %} diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/logging-in-to-the-merchant-portal.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/logging-in-to-the-merchant-portal.md deleted file mode 100644 index a3b6b3620c0..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/logging-in-to-the-merchant-portal.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Logging in to the Merchant Portal -last_updated: Aug 31, 2022 -description: This document describes how to log in and log out of the Merchant Portal. -template: back-office-user-guide-template ---- - -To use the Merchant Portal, you have to log in. This document describes how you can do that. - - -## Prerequisites - -To log in to the Merchant Portal, a [merchant user](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) needs to be [created](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html#creating-a-merchant-user) and [activated in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html#activating-and-deactivating-the-merchant-users) by the Marketplace administrator. - -Each section in this guide contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -{% info_block warningBox %} - -A [marketplace administrator](/docs/marketplace/user/intro-to-spryker-marketplace/marketplace-personas.html#marketplace-administrator) cannot log in to Merchant Portal. - -{% endinfo_block %} - -## Creating a password - -Once the merchant user is [activated](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchant-users.html#activating-and-deactivating-the-merchant-users), an email with the password reset link is sent. To reset the password: - -1. Click the link provided in the email. The **Reset Password** page opens. - - ![Reset password page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Login+and+logout/set-password-for-merchant-portal.png) - -2. In the **Password** field, enter the new password. -3. In **Repeat Password**, enter the new password again to confirm it. -4. Click **Reset** to update the password. - -The password is reset and you can use it for login. - -## Logging in - -To log in to the Merchant Portal, on the login page, enter your email and password and click **Login**. - -![Merchant Portal login](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Login+and+logout/merchant-portal-login.png) - -### Reference information: Logging in to the Merchant Portal - -This section describes the attributes you enter when logging into the Merchant Portal. - -| ATTRIBUTE | DESCRIPTION | -| --------- | --------------- | -| Email | Email address associated with the merchant user. The Password Reset link is sent to this email. | -| Password | Password for the merchant user account. | - -## Restoring the password - -If you forgot your Merchant Portal password: -1. In the login form, click **Forgot password?**. - The **Reset Password** page opens. -2. Enter the email that was used for your Merchant Portal account registration and click **Send email**. -You should receive an email with the link to restore your password. -3. In the email, click the restore password link. -The **Reset Password** page opens. -4. In the **Password** and **Repeat password** fields, enter your new password. -5. Click **Reset**. - -Your password is now updated. To log in, enter the new password in the login form. - - - - -**What’s Next?** - -To have a quick overview of Merchant performance, see [Managing merchant's performance data](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/dashboard/managing-merchants-performance-data.html). - -To learn how to manage a Merchant Profile in the Merchant Portal, see [Editing merchant's profile details](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/profile/editing-merchants-profile-details.html) page. diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/my-account/managing-account-details-and-settings.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/my-account/managing-account-details-and-settings.md deleted file mode 100644 index 8a51cfe45d4..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/my-account/managing-account-details-and-settings.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Managing account details and settings -description: This document describes what you can do in the My account area of the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage merchant user account details in the Merchant Portal. - -## Prerequisites - -To start working with the merchant user’s account, go to **Merchant Portal > My account**. - -To open the **My account** page, in the top right corner of the Merchant Portal, click the user icon and then click **My account**. - -Some sections contain reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Changing personal details - -To update the personal details, on the **My account** page, in the **Personal Details** section, update the necessary fields and click **Save**. - -## Changing the email address - -To update the merchant user email address, on the **My account** page, in the **Email** section, change the email address and click **Save**. - -## Changing the password for the Merchant Portal - -To update the password for the Merchant Portal: - -1. On the **My account** page, in the **Password** section, click **Change Password**. The **Change Password** drawer opens. -2. In the **Current password** field, the current password. -3. In the **New password** field, enter the new password. -4. To confirm the change, in the **Repeat new password** field, enter the new password. -5. Click **Save**. - - -**Tips and tricks** - -Click on the show/hide password icon in the corresponding password field to double-check that you entered the right information. - -### Reference information: Changing the password for the Merchant Portal - -On the **Change password** drawer, you see the following attributes: - -| ATTRIBUTE | DESCRIPTION | -| ---------------- | ---------------------- | -| Current password | Field to enter the current password.| -| New password | Field to enter the new password for the Merchant Portal user account. | -| Repeat new password | Field to confirm the new password.| - - -## Changing the interface language for the Merchant Portal - -To change the interface language of the Merchant Portal, on **My account** page, in the **Language** section, select the necessary language and click **Save**. - -## Reference information - -This section describes attributes you see when performing the following actions: -* Accessing **My account** in the Merchant Portal. -* Changing the personal details. -* Changing the email address. -* Changing the interface language for the Merchant Portal. - -### My account page - -The following table describes the attributes on the **My account** page: - -| SECTION | ATTRIBUTE | DESCRIPTION | -| ---------------- | ---------------- | ---------------------- | -| Personal Details | First name | First name of the merchant user. | -| Personal Details | Last name | Last name of the merchant user. | -| Email | Email field | Email address of the merchant user. | -| Password | Change password | Opens *Change password* drawer. | -| Language | Language drop-down menu | Drop-down menu to select the interface language of the Merchant Portal. | diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/offers/managing-product-offers.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/offers/managing-product-offers.md deleted file mode 100644 index d2210d63491..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/offers/managing-product-offers.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Managing product offers -description: This document describes the actions a Merchant can do in the Offers section in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes the actions a merchant can do in the **Offers** section of the Merchant Portal. - -## Prerequisites - -To start managing product offers, navigate to the **Merchant Portal > Offers**. - -Review the reference information in this article before you start, or look up the necessary information as you go through the process. - -## Creating a product offer - -To create a product offer, take the following steps: -1. Click **Add Offer**. -2. From the list of concrete products, select the product you want to create an offer for. - The **Create Offer** drawer opens. -3. Optional: To make the offer active after creating it, select **Offer is Active**. -4. Optional: Enter a **Merchant SKU**. -5. Select one or more **Stores**. -6. Enter a **Quantity**. -7. Optional: To always display the product offer as available on the Storefront, select **Always in Stock**. -8. To add prices, in the **Price** section, do the following: - 1. Select **Add**. - 2. Select a **STORE**. - 3. Select a **CURRENCY**. - 4. Optional: Enter any of the prices: - * **NET DEFAULT** - * **GROSS DEFAULT** - * **NET ORIGINAL** - * **GROSS ORIGINAL** - 5. Optional: Enter a **VOLUME QUANTITY**. - 6. Repeat sub-steps 1-5 of step 5 until you add all the desired prices. -9. Optional: Select **Validity Dates**. -10. Scroll up and select **Create**. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Offers/creating-product-offers.gif) - -## Editing a product offer - -To edit an existing product offer: -1. From the list of offers, select the offer you want to edit. -2. In the drawer, change the desired fields -3. Select **Save**. - -![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Offers/edit-offers.gif) - -## Reference information: Creating and editing product offers - -This section describes attributes you see when creating and editing product offers. - -On all the pages described below, you can rearrange, hide, and show columns by clicking the settings cogwheel next to the tables. - -### Offers page - -On the **Offers** page you do the following: -* Filter product offers using the filtering menu at the top of the page. -* Sort product offers by clicking on the desired column name. -* Using the search field in the top right corner, search product offers by the criteria: offer reference, merchant reference, and product SKU. - -### Create Offer page - -On the **Create Offer** page, you see the list of products you can create an offer for. On this page, you can do the following: -* Filter products using the filtering menu at the top of the page. -* Sort products by clicking on the desired column name. -* Using the search field in the top right corner, search products by the criteria: product name and product SKU. - - -### Create and edit offer drawers - -The following table describes the attributes on the **Create offer** and **Edit offer** drawers: - -| ATTRIBUTE | DESCRIPTION | -| ------------- | ------------- | -| Offer status | Defines if the offer is displayed on the Storefront. By default, the offer is online. | -| Merchant SKU | Unique identifier of product offer in the merchant's ERP. | -| Offer Reference | Unique identifier of the product offer in the Marketplace. | -| Stores | Defines the stores where the product offer is available. | -| Quantity | Defines the stock of the product offer. | -| Price | Prices of the product offer per store, currency, and volume quantity. Volume quantity defines the minimum product offer quantity to be added to cart for the price to apply. | -| Validity Dates | Defines the period during which the product offer is visible on the Storefront. | diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/orders/managing-merchant-orders.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/orders/managing-merchant-orders.md deleted file mode 100644 index e4ec30b3a2e..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/orders/managing-merchant-orders.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Managing merchant orders -description: This document describes the actions a merchant can do in the Orders section of the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes the actions a merchant can do in the Orders section of the Merchant Portal. - -## Prerequisites - -To start managing merchant orders, navigate to **Merchant Portal > Orders**. - -You manage merchant orders by changing the states of the items inside the order. This way, you can see that item was delivered or returned. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Changing merchant order states - -To change the state of items in a merchant order: - -1. In the list of orders, click the order you want to change the state for or click **Details** next to it. You are taken to the **Order *[Order ID]*** page. -2. In the upper right corner, click the corresponding trigger button to update the state. The page refreshes to show the message about the successful state change. -3. Repeat step 2 until you get the desired order state. The succession of the steps depends on the merchant state machine that is set up. - -**Tips & tricks** -
Merchant order items can have multiple trigger buttons. When you click one of those buttons, only items with a manually executable event are updated. All other items remain in that state until their trigger has been performed. For more details, see [Marketplace state machine](/docs/marketplace/user/features/{{page.version}}/marketplace-order-management-feature-overview/marketplace-and-merchant-state-machines-overview/marketplace-and-merchant-state-machines-overview.html#marketplace-state-machine) - -### Changing merchant order item states - -To change the state of a single item in a merchant order: - -1. In the list of orders, click the order line or click **Details** next to the order you want to change the status for. You are taken to the **Order *[Order ID]*** page. -2. Switch to the **Items** tab. -3. Next to the item you want to change the state for, click the corresponding state. The page refreshes to show the message about the successful state change. - -![change-the-states-of-a-single-item](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Orders/change-the-states-of-a-single-item.gif) - -**Tips and tricks** -
To update the states of the merchant order items in bulk: - -1. In the list of orders, click the order you want to change the state for or click **Details** next to it. You are taken to the **Order *[Order ID]*** page. - -2. Navigate to the **Items** tab of the **Order *[Order ID]*** page. - -3. Select in checkboxes the products you want to update the state of, and click the available button state that appeared after the selection. You can also click a button state on the top right of the drawer to update the state of all the items that match this state. - -![update-the-states-of-the-merchant-order-items-in-bulk](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Orders/update-the-states-of-the-merchant-order-items-in-bulk.gif) - -{% info_block warningBox "Note" %} - -Bulk updates can only be done for items that share the same state. - -{% endinfo_block %} - -### Reference information: Changing merchant order states - -This section describes attributes you see when you change merchant order states. - -#### Orders table - -**Orders** is the table that appears when you open the Orders section in the navigation menu in the Merchant Portal. - -By default, the last created order goes on top of the table. However, you can sort the table by: - -* Marketplace order reference -* Merchant order reference -* Created date -* Customer’s name -* Customer’s email address -* Merchant order grand total -* No. of items -* Store - -**Tips and tricks** -
You can rearrange the order of the columns, hide and show the columns again by clicking the settings cogwheel next to the table. - -![rearrange-the-order-of-the-columns](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Orders/rearrange-the-order-of-the-columns.png) - -#### Order [Order ID] page - -The **Order *[Order ID]*** page is the page that opens in the drawer when you click one of the orders in the Orders table. - -The following table describes the sections on the ***[Order ID]*** page: - -| TAB | SECTION | DESCRIPTION | -|---|---|---| -| Details | Overview | Contains the merchant order date, number of products purchased, number of items in the merchant order, and the number of shipments. | -| Details | Totals | Contains information about the merchant order totals. | -| Details | Customer | Contains the customer’s name, email, and the number of orders the customer has made from this merchant. | -| Items | Shipments | Contains information about shipments, such as the number of shipments, delivery address, shipment carrier and delivery method, and the requested date. | -| Items | Order Items | Contains information about every item in the merchant order, including:
  • Item SKU
  • Image
  • Name
  • Quantity
  • Current state
  • Merchant SKU (if exists)
  • Offer reference
  • Included product options (if exist)
  • Comment
  • States that can be triggered
| - -**Tips and tricks** -
You can search the items in the merchant order and filter them according to their state by selecting the necessary state in the *State* drop-down menu. - -#### Merchant order states - -The merchant can set different states for the order depending on the state machine that is configured for this merchant. The following table describes the states a merchant can select: - -| ORDER STATE | DESCRIPTION | -|---|---| -| new | Initial order state. | -| Cancel | Select this state to cancel the order. When triggering this state, the item status becomes `canceled by merchant`. | -| Ship | Select this state once the order is shipped. When you trigger this state, the item status becomes `shipped`. | -| Deliver | Select this state once the order is delivered to the shopper. When you select **deliver**, the state becomes `delivered`. | -| Send to distribution | Select this state once the order is at the distribution center. When you trigger this state, the item status becomes `left the merchant location`. | -| Confirm at center | Select this state when the distribution center confirmed the order arrival. When you trigger this state, the item status becomes `arrived at distribution center`. | -| Execute return | Select this state when you want to execute the return. When you trigger this state, the item status becomes `returned`. | -| Refund | Select this state if a refund was issued to the customer for the order. When you trigger this state, the item status becomes `refunded`. | -| Cancel the return | Select this state when the return cannot be fulfilled. When you trigger this state, the item status becomes `return canceled`. | -| Send return back to customer | Select this state when you shipped the returned item back to the customer. When you trigger this state, the item status becomes `shipped to customer`. | -| Deliver return | Select this state when the returned item is delivered back to the customer. When you trigger this state, the item status becomes `delivered`. | -| Closed | Order becomes `closed` when the Back Office user closes it in the Back Office. | - -## Managing merchant returns - -Once the return is created by the customer in the Storefront or by the Back Office user in the Back Office, the order obtains the `waiting for return` state. - -### Executing returns - -To execute a return: - -1. In the list of orders, click Details next to the order you want to return. You are taken to the **Order *[Order ID]*** page. -2. In the upper right corner, click **Execute return**. The page refreshes to show the message about the successful state change. - -### Canceling returns - -To cancel a return: - -1. In the list of orders, click **Details** next to the order you want to cancel the return for. You are taken to the **Order *[Order ID]*** page. -2. In the upper right corner, click **Cancel return**. The page refreshes to show the message about the successful state change. - -## Canceling merchant orders - -{% info_block infoBox "Info" %} - -**Your content** - -{% endinfo_block %} - -To cancel an order: - -1. In the list of orders, click the order you want to cancel or click **Details** next to it. You are taken to the **Order *[Order ID]*** drawer. -2. In the upper left corner, click **Cancel**. - The page refreshes to show the updated merchant order state. - -**Tips and tricks** -
You can filter the existing merchant orders by: -* Creation date -* Stores where the order belongs -* Merchant order states diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/creating-marketplace-abstract-product.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/creating-marketplace-abstract-product.md deleted file mode 100644 index d3cb5fb2cd8..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/creating-marketplace-abstract-product.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Creating marketplace abstract product -last_updated: Aug 11, 2021 -description: This document describes how to create marketplace abstract products in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to create marketplace abstract products. - -## Prerequisites - -To start working with marketplace abstract products, go to **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Creating a marketplace abstract product - -To create a new abstract product: - -1. On the **Products** page, click **Create Product**. The **Create Abstract Product** drawer opens. -2. Enter an **SKU Prefix**. -3. Enter a **Name** for the default locale. The rest of the locales are defined once the product is created. -4. Depending on whether your abstract product requires adding variants or no, take one of the following steps: - - If you are creating an abstract product that doesn't require variants, select **Abstract product has 1 concrete product**. The **Create an Abstract Product with 1 Concrete Product** drawer opens. - 1. On the **Create an Abstract Product with 1 Concrete Product** drawer, enter a **Concrete Product SKU**. - 2. Enter a **Concrete Product Name**. - 3. To finish the product creation, click **Create**. - - ![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/merchant+portal+user+guides/Products/create-abstract-product-with-one-variant-mp.gif) - - - {% info_block warningBox "Warning" %} - - You can not save an abstract product unless it is accompanied by at least one concrete product. - - {% endinfo_block %} - - - If the abstract product that you are creating requires variants, select **Abstract product has multiple concrete products**. - 1. Select a super attribute that defines the variation of your concrete products. - 2. In the field next to the super attribute you've selected, select one or more values for each super attribute. Upon adding the super attribute values, the preview of the concrete products is displayed. - - {% info_block infoBox "Info" %} - - Removing a super attribute or its value removes the related concrete products or concrete product values from the preview. - - {% endinfo_block %} - - 3. Optional: Add more super attributes by clicking the **Add** button. Repeat this step until you select at least one value for each selected super attribute. - - ![img](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/merchant+portal+user+guides/Products/create-abstract-product-with-multiple-variants-mp.gif) - - {% info_block infoBox "Info" %} - - You can remove a concrete product from the preview list by clicking the **Remove** icon. - - {% endinfo_block %} - -5. Сlick **Create**. - -6. Click **Next**. - -Only active marketplace products are displayed on the Marketplace Storefront. To activate your marketplace product, see [Managing marketplace concrete products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html#activating-and-deactivating-a-concrete-product). - -### Reference information: Create Abstract Product drawer - -The following table describes attributes you select and enter on the **Create Abstract Product** drawer. - -| ATTRIBUTE | DESCRIPTION | -| ----------------------------- | ------------------------------------ | -| SKU prefix | Unique abstract product identifier that is used to track unique information related to the product.| -| Name | The name of the abstract product that is displayed for the product on the Storefront. | -| Abstract product has 1 concrete product | Select this option when you want your abstract product to have a single concrete product. | -| Abstract product has multiple concrete products | Select this option when you want your abstract product to have multiple concrete products. | - -### Reference information: Create an Abstract Product with 1 Concrete Product drawer - -The following table describes attributes you select and enter on the **Create an Abstract Product with 1 Concrete Product** drawer. - -| ATTRIBUTE | DESCRIPTION | -| --------------------- | ------------------------------------ | -| Concrete Product SKU | Unique product identifier that is used to track unique information related to the product. | -| Autogenerate SKU | Select the attribute if you want the SKU to be generated automatically. By default, -1 is added to the abstract product SKU prefix. For example, `product-1` | -| Concrete Product Name | The name of the concrete product that is displayed for the product on the Storefront. | -| Same as Abstract Product | Select the attribute if you want the name of the abstract product to be used for the concrete product as well. | - -### Reference information: Create an Abstract Product with Multiple Concrete Products drawer - -This section describes attributes you select and enter on the **Create an Abstract Product with 1 Concrete Product** drawer. - -You can select as many super attributes as you need and define one or more values for them. When you select a product attribute value, a concrete product based on this value is displayed. In the **Concrete Products’ Preview** pane you can view the products to be created. - -By selecting **Autogenerate SKUs**, the SKU numbers for the variants are generated automatically, based on the SKU prefix of their abstract product. - -By selecting **Same Name as Abstract Product**, the name of the abstract product is used for the concrete products as well. - -## Next steps - -- [Manage abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-attributes.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-attributes.md deleted file mode 100644 index c2b97cae111..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-attributes.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Managing marketplace abstract product attributes -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace abstract product attributes in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage attributes of the marketplace abstract products in the Merchant Portal. - -## Prerequisites - -To start working with marketplace abstract products, go to **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding marketplace abstract product attributes - -To add an attribute to a marketplace abstract product: - -1. Next to the abstract product you want to create an attribute for, hover over the three dots and click **Manage Product**, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, click **+Add**. The empty cells appear in the following table. -4. From the drop-down menu **Attribute**, select a predefined value or enter your own when allowed by the Marketplace operator. -5. Depending on the attribute selected in step 3, for the **Default** cell, select or enter the predefined value. Use the **Default** cell if no translations are needed. -6. Add or select translations for the attribute values for the desired locales. - -**Tips and tricks** -
Click **Cancel** if a new attribute should not be added to an abstract product. - - -## Editing marketplace abstract product attributes - -To edit attributes for a marketplace abstract product: - -1. Next to the abstract product you want to edit an attribute for, hover over the three dots, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, hover over the table and update the necessary cells. - -**Tips and tricks** - -You can rearrange the columns' order, hide and show the columns by clicking the settings cogwheel next to the table. - - -## Deleting marketplace abstract product attributes - -To remove an attribute from an abstract product: - -1. Next to the abstract product you want to delete an attribute for, hover over the three dots, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, next to the attribute you want to delete, hover over the three dots and click **Delete**. - -## Reference information: Attributes pane - -The following table describes attributes you select and enter in the **Attributes** pane. - -| ATTRIBUTE | DESCRIPTION | -| ---------------- | --------------------------- | -| Attribute | Name of the attribute, for example, *color*. | -| Default | Values of you attribute, for example, if the attribute is `color`, its values can be `red`, `green`, or `black`. This value is used for all locales without a specific value. | -| Locale value (for example, DE_DE) | Translation of the attribute values for other locales. | - -## Next steps - -- [Edit abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) -- [Manage abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) -- [Manage abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) -- [Manage abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-image-sets.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-image-sets.md deleted file mode 100644 index a7a9b74e409..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-image-sets.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Managing marketplace abstract product image sets -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace abstract product image sets in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage image sets of the marketplace abstract products in the Merchant Portal. - -## Prerequisites - -To start working with marketplace abstract products, go to **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding images for marketplace abstract products - -To add an image set for a marketplace abstract product: - -1. Next to the abstract product, you want to create an image set for, hover over the three dots, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Images** pane. -3. Click **+Add Image Set**. The empty cells appear. -4. In **SET NAME**, enter the name of the set. -5. In **IMAGE ORDERED**, enter the number which defines the order of the images to be displayed. -6. In **SMALL IMAGE URL**, enter the image URL. -7. In **LARGE IMAGE URL**, enter the image URL. -8. Click **Save**. - -## Editing images for marketplace abstract products - -To edit an image of a marketplace abstract product: - -1. Next to the abstract product, which image you want to edit, hover over the three dots, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Images** pane. -3. Select a default or specific locale you want to update images for. -4. Update the following: - - SET NAME - - IMAGE ORDERED - - SMALL IMAGE URL - - LARGE IMAGE URL -5. Click **Save**. - -## Deleting images for marketplace abstract products - -To delete an image in an image set for a marketplace abstract product: - -1. Next to the abstract product, which image you want to delete, hover over the three dots, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Images** pane. -3. Select a default or specific locale you want to delete the image for. -4. Click the **Delete** icon. - -To delete an image set with its images for the abstract product, click **Delete Image Set**. - -## Reference information: Images pane - -| ATTRIBUTE | DESCRIPTION | -| --------------- | ------------------------------------------------------------ | -| Set name | Name of your image set. | -| Image ordered | If you add several images to an image set, specify the order in which they are to be shown on the Storefront and in the Back Office using *Image ordered* field. The order of images is defined by the order of entered numbers where the image set with "0" is the first to be shown. | -| Small image URL | Link of the image that is going to be used in the product catalogs. | -| Large image URL | Link to the image that is going to be used on the product details page. | - -## Next steps - -- [Edit abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) -- [Manage abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) -- [Manage abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) -- [Manage abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-meta-information.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-meta-information.md deleted file mode 100644 index bee5aeb7e13..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-meta-information.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Managing marketplace abstract product meta information -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace abstract product meta information in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage marketplace abstract product meta information in the Merchant Portal. - -## Prerequisites - -To start working with marketplace abstract products, go to **Merchant Portall > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding abstract product meta information - -To add meta information for a product: - -1. Next to the abstract product, you want to add meta information for, hover over the three dots and click **Manage Product**, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **SEO** pane. -3. Fill the following fields for the desired locales: - * Meta title - * Meta keywords—separate keywords with comma. - * Meta description -4. Click **Save**. - -## Editing abstract product meta information - -To modify meta information for a product: - -1. Next to the abstract product you want to edit meta information for hover over the three dots and click **Manage Product**, or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **SEO** pane. -3. Update the following fields for the desired locales: - - Meta title - - Meta keywords—separate keywords with comma. - - Meta description - -4. Click **Save**. - -## Reference information: SEO pane - -| ATTRIBUTE | DESCRIPTION | -| ---------------- | ---------------------------------- | -| Meta title | Meta title for your product. | -| Meta keywords | Meta keywords for your product. | -| Meta description | Meta description for your product. | - -## Next steps - -- [Edit abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) -- [Manage abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) -- [Manage abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) -- [Manage abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-prices.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-prices.md deleted file mode 100644 index 300e0eff618..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product-prices.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Managing marketplace abstract product prices -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace abstract product prices in the Merchant Portal. -template: back-office-user-guide-template ---- - - -This document describes how to manage marketplace abstract product prices in the Merchant Portal. - -## Prerequisites - -To start working with marketplace abstract products, go to **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding a marketplace abstract product price - -To add a new price for a marketplace abstract product: - -1. Next to the abstract product, where you want to add a price for, hover over the three dots, or just click the line, and then click **Manage Product**. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Price** pane. -3. In the **Price** pane, click **+Add**. The empty cells appear in the following table. -4. From the drop-down menu **Store**, select the store for which the price is created. -5. From the drop-down menu **Currency**, select the currency in which the price is defined. -6. For the **NET DEFAULT** cell, enter a price. Use `.` or `,` separators. -7. For the **GROSS DEFAULT** cell, enter a price. Use `.` or `,` separators. -8. Optional: For the **NET ORIGINAL** cell, enter a price. Use `.` or `,` separators. -9. Optional: For the **GROSS ORIGINAL** cell, enter a price. Use `.` or `,` separators. -10. For the **QUANTITY** cell, enter the number of items. By default, the quantity is 1. For an example, see [Adding volume prices](#adding-volume-prices). - -**Tips and tricks** -
Click **Cancel** to stop creating a new price. - - -## Editing abstract product prices - -To edit prices of a marketplace abstract product: - -1. Next to the abstract product, the price of which you want to edit, hover over the three dots, or just click the line, and then click **Manage Product**. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Price** pane. -3. Next to the price you want to edit, hover over the table and update the necessary cells. - -**Tips and tricks** - -You can sort the prices by stores and currencies. To do that, in the **Price** pane, in the **Stores** drop-down menu, select the stores for which the price is defined, and in the **Currencies** drop-down menu, select the currencies in which the price is defined. - - -## Deleting abstract product prices - -To remove price of an abstract product: - -1. Next to the abstract product, the price of which you want to delete, hover over the three dots, or just click the line, and then click **Manage Product**. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. Scroll down to the **Price** pane. -3. Next to the price you want to remove, hover over the three dots in the table, and click **Delete**. - - -## Reference information: Price pane - -|ATTRIBUTE | DESCRIPTION | -| ------------- | --------------------- | -| Store | [Store](/docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-multiple-stores.html) in which the price will be displayed. | -| Currency | Currency in which the abstract product price is defined. | -| Net default | Default item price before tax. | -| Gross default | Item price after tax. | -| Net original | Item price before tax displayed as a strikethrough beside the default price on the Storefront. It is usually used to indicate a price change. | -| Gross original | Item price after tax displayed as a strikethrough beside the default price on the Storefront. It is usually used to indicate a price change. | -| Quantity | Quantity of the product to which the prices from the *Gross price* and *Net price* fields apply. | - -### Adding volume prices - -Let's say you have a product that you want to sell with a special price if a user wants to buy a specific number of the same product. For example, a laptop costs €354.35, but you have defined that if a user buys three items, the cost will be €340 instead of €354.35. In this case, you can define a product quantity starting from which a special [volume price](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) applies. - -![Volume prices - marketplace product](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Products/volume-prices-merchant-products.gif) - -## Next steps - -- [Edit abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) -- [Manage abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) -- [Manage abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) -- [Manage abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product.md deleted file mode 100644 index a5881a50e9c..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/abstract-products/managing-marketplace-abstract-product.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Managing marketplace abstract products -last_updated: Aug 11, 2021 -description: This document describes how to modify marketplace abstract products in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage marketplace abstract products in the Merchant Portal. - -## Prerequisites - -To start working with marketplace abstract products, go to the **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - - -## Filtering and sorting marketplace abstract products - -The following drop-down menus can be used to filter the marketplace abstract products on the **Products** page: -- Categories where the abstract product belongs. -- Visibility (defines whether the product is online or offline). -- Stores where the abstract product is available. - -The page refreshes and displays the available options as soon as the filter parameters are selected. - -To sort the existing abstract products, select one or more sorting parameters from the drop-down menu on the **Products** page. Choose among the following sort criteria: -- SKU -- Name -- Number of variants -- Visibility status - -By default, the table is sorted descendingly by SKU. - -## Editing abstract product details - -To edit the existing marketplace abstract product: - -1. Next to the abstract product, you want to edit, hover over the three dots and click **Manage Product** or just click the line. This takes you to the **_[Product name]_**, **Abstract Product Details** tab. -2. In the **Name & Description** pane, edit **Name** and **Description** for every locale. -3. In the **Stores** pane, in the drop-down menu select the stores where the product is available. -4. In the **Tax Set** pane, in the drop-down menu, select the necessary tax set. -5. In the **Categories** pane, in the drop-down menu, select the categories where your product belongs. - - -### Reference information: [Product name] drawer, Abstract Product Details tab - -The following table describes attributes you select and enter in the ***[Product name]*** drawer, on the **Abstract Details** tab - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -| ----------- | -------------- | --------- | -| Name | Name of your product displayed on the Storefront. It is set per locale. | ✓ | -| Description | Description of the product displayed on the Storefront. It is set per locale. | | -| Stores | Defines the [stores](/docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-multiple-stores.html) the product is available in.
You can select multiple values. | | -| Price | In this pane, you can manage prices for your abstract product. For more details, see [Managing abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html). | | -| Tax Set | The conditions under which a product is going to be taxed.
The values available for selection derive from **Taxes > Tax Sets**
Only one value can be selected. | ✓ | -| Images | In this pane, you can manage image sets for your abstract product. For more details, see [Managing abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html). | | -| Attributes | In this pane, you can manage attributes for your product. For more details, see [Managing abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html). | | -| Categories | Defines the [categories](/docs/scos/user/features/{{page.version}}/category-management-feature-overview.html) the product is displayed in. | | -| SEO | In this pane, you can manage meta information for your product. For more details, see [Managing abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html). | | - -## Next steps - -- [Manage abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) -- [Manage abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) -- [Manage abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) -- [Manage abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/creating-marketplace-concrete-product.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/creating-marketplace-concrete-product.md deleted file mode 100644 index 3e0600b04bc..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/creating-marketplace-concrete-product.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Creating marketplace concrete products -last_updated: Aug 11, 2021 -description: This document describes how to create a marketplace concrete product in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to create marketplace concrete products. - -## Prerequisites - -To start working with marketplace concrete products, go to **Merchant Portal > Products**. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Creating a marketplace concrete product - -You can create a marketplace concrete product in two ways: - -- While [creating an abstract marketplace product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/creating-marketplace-abstract-product.html). -- By adding a concrete product to the existing abstract product. - -To add a concrete product to the existing abstract product: - 1. Hover over the three dots next to the abstract product for which you will create a concrete product and click **Manage Product** or just click the line. The **[Product name]** drawer opens. - 2. Navigate to the **Concrete Products** tab. - 3. On the **Concrete Products** page, click **Add Concrete Products**. The **Create Concrete Products for [Abstract product name SKU]** drawer opens. - 4. Based on the super attributes selected while [creating an abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/creating-marketplace-abstract-product.html), add or select values to the existing super attributes. Upon adding the super attribute values, the preview of the concrete products is displayed. - - {% info_block infoBox "Info" %} - - Removing a super attribute or its value removes the appropriate concrete products or concrete product values from the preview. - - {% endinfo_block %} - - 4. Click **Save**. - - {% info_block infoBox "Info" %} - - You can remove a concrete product from the preview list by clicking the **Remove** icon. - - {% endinfo_block %} - -Once the product is created, it needs to be [activated](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html#activating-and-deactivating-a-concrete-product). Only the active marketplace products are displayed on the Marketplace Storefront. - -### Reference information: Create Concrete Products for [Abstract product name SKU] - -This page contains a drop-down menu that displays super attribute values based on a super attribute selected while [creating a marketplace abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/creating-marketplace-abstract-product.html). When you select a product attribute value, a concrete product based on this value is displayed. In the **Concrete Products’ Preview** pane, you can view the products to be created. - -By selecting **Autogenerate SKUs**, the SKU numbers for the concrete products are generated automatically, based on the SKU prefix of their abstract product. - -By selecting **Same Name as Abstract Product**, the name of the abstract product is used for the concrete products as well. - - -## Next steps - -[Manage concrete product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-attributes.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-attributes.md deleted file mode 100644 index 9856086d2b6..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-attributes.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing marketplace concrete product attributes -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace concrete product attributes in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage attributes of the marketplace concrete products in the Merchant Portal. - -## Prerequisites - -To start working with marketplace concrete products, go to the **Merchant Portal > Products**. Hover over the three dots next to the abstract product for which you manage a concrete product and click **Manage Product** or just click the line. The **[Product name]** drawer opens. Navigate to the **Concrete Products** tab. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding marketplace concrete product attributes - -To add an attribute for a marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, click **+Add**. The empty cells appear in the following table. -4. From the drop-down menu **Attribute**, select a predefined value or enter your own when allowed by the Marketplace operator. -5. Depending on the attribute selected in the step 3, for the **Default** cell, select or enter the predefined value. Use the **Default** cell if no translations are needed. -6. Add/select translations for the attribute values for the desired locales. - -**Tips and tricks** - -Click **Cancel** if a new attribute should not be added to a concrete product. - -## Editing marketplace concrete product attributes - -To edit attributes for a marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, hover over the table and update the necessary cells. - -**Tips and tricks** - -You can rearrange the columns' order, hide and show the columns by clicking the settings cogwheel next to the table. - -## Deleting marketplace concrete product attributes - -To remove an attribute from a concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Attributes** pane. -3. In the **Attributes** pane, next to the attribute you want to delete, hover over the three dots and click **Delete**. - -### Reference information: Attributes pane - -| ATTRIBUTE | DESCRIPTION | -| ------------------ | ------------------ | -| Attribute | Name of the attribute, for example, `color`. | -| Default | Values of you attribute, for example, if the attribute is `color`, its values can be `red`, `green`, or `black`. This value is used for all locales without a specific value. | -| Locale value (for example, DE_DE) | Translation of the attribute values for other locales. | - -## Next steps - -- [Manage concrete product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html) -- [Manage concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html) -- [Manage concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-prices.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-prices.md deleted file mode 100644 index ff5884cb5f9..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product-prices.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Managing marketplace concrete product prices -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace concrete product prices in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage marketplace concrete product prices in the Merchant Portal. - -## Prerequisites - -To start working with the marketplace concrete products, take the following steps: -1. Go to **Merchant Portal > Products**. -2. Hover over the three dots next to the abstract product for which you manage a concrete product and click **Manage Product** or just click the line. The ***[Product name]*** drawer opens. -3. Navigate to the **Concrete Products** tab. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding a marketplace concrete product price - -To add a new price for a marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Price** pane. -3. In the **Price** pane, click **+Add**. The empty cells appear in the following table. -4. From the drop-down menu **Store**, select the store for which the price is created. -5. From the drop-down menu **Currency**, select the currency in which the price is defined. -6. For the **NET DEFAULT** cell, enter a price. Use `.` or `,` separators. -7. For the **GROSS DEFAULT** cell, enter a price. Use `.` or `,` separators. -8. Optional: For the **GROSS DEFAULT** cell, enter a price. Use `.` or `,` separators. -9. Optional: For the **NET ORIGINAL** cell, enter a price. Use `.` or `,` separators. -10. Optional: For the **GROSS ORIGINAL** cell, enter a price. Use `.` or `,` separators. -11. For the **QUANTITY** cell, enter the number of items. By default, the quantity is 1. For an example, see [Adding volume prices](#adding-volume-prices). - -**Tips and tricks** - -To stop creating a new price, click **Cancel**. - -To keep the prices of the abstract product, select **Use Abstract Product price for all locales**. - -## Editing marketplace concrete product prices - -To edit prices of a marketplace concrete product: -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Price** pane. -2. Hover over the table and update the necessary cells. - -**Tips and tricks** - -You can sort the prices by stores and currencies. To do that, in the **Price** pane, in the **Stores** drop-down menu, select the stores for which the price is defined, and in the **Currencies** drop-down menu, select the currencies in which the price is defined. - -## Deleting marketplace concrete product prices - -To remove price of a marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Price** pane. -3. Next to the price you want to remove, hover over the three dots in the table, and click **Delete**. - -### Reference information: Price pane - -|ATTRIBUTE | DESCRIPTION | -| ------------- | --------------------- | -| Store | [Store](/docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-multiple-stores.html) in which the price will be displayed. | -| Currency | Currency in which the concrete product price is defined. | -| Net default | Default item price before tax. | -| Gross default | Item price after tax. | -| Net original | Item price before tax displayed as a strikethrough beside the default price on the Storefront. It is usually used to indicate a price change. | -| Gross original |Item price after tax displayed as a strikethrough beside the default price on the Storefront. It is usually used to indicate a price change. | -| Quantity | Number of items for which the price is defined. This field ID used to define the volume prices for the concrete product. | - -### Adding volume prices - -Let's say you have a product that you want to sell with a special price if a user wants to buy a specific number of the same product. For example, a laptop costs €354.35, but you have defined that if a user buys three items, the cost will be €340 instead of €354.35. In this case, you can define a product quantity starting from which a special [volume price](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html) applies. - -![Volume prices - marketplace product](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/user+guides/Merchant+Portal+user+guides/Products/volume-prices-merchant-products.gif) - -## Next steps - -- [Manage concrete product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html) -- [Manage concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html) -- [Manage concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html) \ No newline at end of file diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product.md deleted file mode 100644 index 9347b3f86cf..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-product.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Managing marketplace concrete products -last_updated: Aug 11, 2021 -description: This document describes how to modify marketplace concrete products in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to edit a marketplace concrete product in the Merchant Portal. - -## Prerequisites - -To start working with marketplace concrete products, take the following steps: -1. Go to the **Merchant Portal > Products**. -2. Hover over the three dots next to the abstract product for which you manage a concrete product and click **Manage Product** or just click the line. The **[Product name]** drawer opens. -3. Navigate to the **Concrete Products** tab. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Filtering and sorting concrete products - -The following drop-down menus can be used to filter the marketplace concrete products on the **Concrete Products** page: -- Status of the concrete product -- Validity dates - -To sort the existing concrete products, on the **Concrete Products** page, from the drop-down menu, select one or more sorting parameters. Choose among the following sort criteria: -- SKU -- Name -- Status -- Valid from -- Valid to - -By default, the table is sorted descendingly by SKU. - -## Activating and deactivating a concrete product - -To activate a marketplace concrete product: -1. On the **Concrete Products** page, next to the concrete product you want to activate, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. In the **Status** pane, select **Concrete Product is online** to make the concrete product online. -3. Click **Save**. - -To deactivate the product, clear **Concrete Product is online** to make the concrete product offline. - -## Editing marketplace concrete product details - -To edit an existing marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. The **Concrete Product SKU, Name** page opens. -2. In the **Stock** pane, populate the **Quantity** field. -3. In the **Name** pane, edit **Name** for every locale. -4. In the **Description** pane, edit **Description** for every locale. -5. In the **Validity Dates & Time** pane, populate the **Valid from** and **Valid to** fields. -6. In the **Searchability** pane, from the drop-down menu, select the locales where the product is searchable. -7. Click **Save**. - -### Reference information: Concrete Product SKU, Name page - -| PANE | ATTRIBUTE | DESCRIPTION | REQUIRED | -| -------------- | ---------------- | ----------- | --------- | -| Status | | Defines the status of the concrete product. | | -| | Concrete Product is online | The selected checkbox makes the product active and available in store. | | -| Stock | | Defines the stock of the concrete product. | | -| | Reserved Stock | Number of items of this concrete product that are reserved according to *Orders*. | | -| | Quantity | Number of items available in the warehouse. The default is 0. | ✓ | -| | Always in Stock | The selected checkbox makes the product always available for purchase. | | -| Name | | Name of your product displayed on the Storefront. | ✓ | -| | Use Abstract Product name for all locales | Select the checkbox to take over the name of the abstract. | | -| Description | | Product description. | | -| | Use Abstract Product description for all locales | Select the checkbox to take over the description of the abstract.. | | -| Validity Dates & Time | | Defines the period of time when the product is in active state. The **Valid from** date triggers the activation, while the **Valid to** date triggers the deactivation. Either no dates can be selected, or both. | | -| Price | | In this pane, you can manage prices for your concrete product. For more details, see [Managing marketplace concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing marketplace-concrete-product-prices.html). | | -| Images | | In this pane, you can manage image sets for your concrete product. For more details, see [Managing concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html). | | -| Attributes | | In this pane, you can manage attributes for your product. For more details, see [Managing concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html). | | -| Searchability | | Defines the stores where the concrete product can be searched via the Search function in the online store. If not selected, no values will be displayed when searching for this product. | | - -## Next steps - -- [Manage concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html) -- [Manage concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html) -- [Manage concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-products-image-sets.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-products-image-sets.md deleted file mode 100644 index 5979b3eadf0..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/concrete-products/managing-marketplace-concrete-products-image-sets.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Managing marketplace concrete product image sets -last_updated: Aug 11, 2021 -description: This document describes how to manage marketplace concrete product image sets in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to manage image sets of the marketplace concrete products in the Merchant Portal. - -## Prerequisites - -To start working with marketplace concrete products, take the following steps: -1. Go to the **Merchant Portal > Products**. -2. Next to the abstract product for which you want to create a concrete product, hover over the three dots and click **Manage Product** or just click the line. - The ***[Product name]*** drawer opens. -3. Navigate to the **Concrete Products** tab. - -This document contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - -## Adding images for marketplace concrete products - -To add an image for a marketplace concrete product: -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. - The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Images** pane. -3. Click **+Add Image Set***. The empty cells appear. -4. In **SET NAME**, enter the name of the set. -5. In **IMAGE ORDER**, enter the number which defines the order of the images displayed. -6. In **SMALL IMAGE URL**, enter the URL. -7. In **LARGE IMAGE URL**, enter the URL. -8. Click **Save**. - -## Editing images for marketplace concrete products - -To edit an image of the marketplace concrete product: -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. - The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Images** pane. -3. Select a default or a specific locale you want to update images for. -4. Update the following: - - SET NAME - - IMAGE ORDER - - SMALL IMAGE URL - - LARGE IMAGE URL -5. Click **Save**. - -## Deleting images for marketplace concrete products - -To delete an image in the image set for a marketplace concrete product: - -1. On the **Concrete Products** page, next to the concrete product you want to edit, hover over the three dots and click **Manage Product** or just click the line. - The **Concrete Product SKU, Name** page opens. -2. Scroll down to the **Images** pane. -3. Select a default or a specific locale you want to delete the image for. -4. Click the **Delete** icon. - -To delete an image set with its images for the concrete product, click **Delete Image Set**. - -### Reference information: Images pane - -| ATTRIBUTE | DESCRIPTION | -| --------------- | ------------------------------------------------------------ | -| Set name | Name of your image set. | -| Image ordered | If you add several images to an image set, specify the order in which they are to be shown on the Storefront and in the Back Office using *Image ordered* field. The order of images is defined by the order of entered numbers where the image set with `0` is the first to be shown. | -| Small image URL | Link of the image that is going to be used in the product catalogs. | -| Large image URL | Link to the image that is going to be used on the product details page. | - -## Next steps - -- [Manage a concrete product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/creating-marketplace-concrete-product.html) -- [Manage concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html) -- [Manage concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html) diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/products.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/products.md deleted file mode 100644 index 83299a72b58..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/products/products.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Products -last_updated: Apr 4, 2023 -description: This section describes how to manage abstract and concrete products. -template: back-office-user-guide-template ---- - -In this section, you can learn how to manage abstract and concrete products. - -For specific instructions, see the following guides: - -* Abstract products guides: - * [Creating marketplace abstract product](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/creating-marketplace-abstract-product.html) - * [Managing marketplace abstract product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-attributes.html) - * [Managing marketplace abstract product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-image-sets.html) - * [Managing marketplace abstract product meta information](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-meta-information.html) - * [Managing marketplace abstract product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product-prices.html) - * [Managing marketplace abstract products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/abstract-products/managing-marketplace-abstract-product.html) - -* Concrete products guides: - * [Creating marketplace concrete products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/creating-marketplace-concrete-product.html) - * [Managing marketplace concrete product attributes](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-attributes.html) - * [Managing marketplace concrete product prices](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product-prices.html) - * [Managing marketplace concrete products](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-product.html) - * [Managing marketplace concrete product image sets](/docs/marketplace/user/merchant-portal-user-guides/{{page.version}}/products/concrete-products/managing-marketplace-concrete-products-image-sets.html) - diff --git a/docs/marketplace/user/merchant-portal-user-guides/202108.0/profile/editing-merchants-profile-details.md b/docs/marketplace/user/merchant-portal-user-guides/202108.0/profile/editing-merchants-profile-details.md deleted file mode 100644 index 78e41d2f893..00000000000 --- a/docs/marketplace/user/merchant-portal-user-guides/202108.0/profile/editing-merchants-profile-details.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Editing merchant's profile details -last_updated: Jul 24, 2020 -description: This document describes how to edit merchant's profile details in the Merchant Portal. -template: back-office-user-guide-template ---- - -This document describes how to edit merchant's profile details in the Merchant Portal. - -## Prerequisites - -To start managing a merchant profile, navigate to the **Merchant Portal > Profile**. - -This section lets [merchant users](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/merchant-users-overview.html) check and update the merchant profile information. - -Each section contains reference information. Make sure to review it before you start, or look up the necessary information as you go through the process. - - -## Editing merchant's business info - -{% info_block infoBox "Info" %} - -The merchant's **Business Info** includes the details about contact person and general merchant company information. - -{% endinfo_block %} - -To edit the merchant's business info, on the **Business Info** tab, edit the merchant details and click **Save**. - -### Reference information: Editing merchant's business info - -This section describes the attributes you enter and select when editing the merchant's business info on the **Business Info** tab. This tab includes business details that are not displayed in the Storefront. This information is needed for the initial merchant setup and further collaboration between the merchant and Marketplace administrator. - -#### Contact Person Details section - -The contact person is the only contact of the merchant with the Marketplace administrator. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Role | Role in the company/organization the contact person performs. | | -| Title | Formal salutation for your contact person (for example, Mr, Ms, Mrs, Dr). | | -| First Name | First name of the contact person. The first name is taken from the [General tab of the Merchant Profile in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#general-tab) but can be edited in the Merchant Portal too. | ✓ | -| Last Name | Last name of the contact person. The last name is taken from the [General tab of the Merchant Profile in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#general-tab) but can be edited in the Merchant Portal too. | ✓ | -| Email | Email address of the contact person. This email is taken from the [General tab of the Merchant Profile in the Back Office](/docs/marketplace/user/back-office-user-guides/{{page.version}}/marketplace/merchants/managing-merchants.html#general-tab) but can be edited in the Merchant Portal too. | ✓ | -| Phone Number | Phone number of the contact person. | | - -#### Company - -This section contains general information about the company the merchant has. - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Company Name | Name of the merchant. It is also displayed as the merchant name in the Storefront. | ✓ | -| Registration Number | Number assigned to the company at the point of registration. | | -| Merchant Reference | Unique identifier of the merchant in the system. | | - -## Editing merchant's online profile - -{% info_block infoBox "Info" %} - -The **Online Profile** section lets you manage information displayed on the **Merchant Profile** page in the Storefront. - -{% endinfo_block %} - -To edit the merchant's online profile, in the **Online Profile** tab, edit the necessary details and click **Save**. - -### Reference information: Editing merchant's online profile - -This section describes attributes you see when editing the merchant's online profile on the **Online Profile** tab. This tab contains the information displayed on the [Merchant Profile page on the Storefront](/docs/marketplace/user/features/{{page.version}}/marketplace-merchant-feature-overview/marketplace-merchant-feature-overview.html#merchant-profile). - -#### Store Profile URL - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Store Profile URL | Field where you can specify the URL of the Merchant Profile in the Marketplace Storefront for every locale. | ✓ | -| About Your Store | Description of the merchant company/store. It’s provided for every locale. | | - -#### Visual assets - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Logo URL | You can add a logo for your Merchant Profile. Provide a link to your logo here. | | -| Banner URL | You can add a banner for your Merchant Profile. Provide a link to your banner for every locale. | | - -#### Contact Details & Address - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Street | Street of the merchant's business address. | | -| Number | Number of the building in the merchant's business address. | | -| Zip Code | ZIP code of the merchant's business address. | | -| Addition to Address | In this field, you can specify any additional information included in the merchant's business address. | | -| City | City of the merchant's business address. | | -| Country | Drop-down list where you specify the country of the merchant's business address. | | -| Longitude | In this field, you can identify the exact location of the merchant. | | -| Latitude | In this field, you can identify the exact location of the merchant. | | -| Phone Number | Merchant's public phone number. | | -| Fax Number | Merchant's tax number. | | -| Email | Business/public email address for the merchant. | | - -#### Average Delivery Time - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Average Delivery Time | Average time during which the order is shipped. It is defined per a locale. | | - -#### Legal Information - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Terms & Conditions | In this field, you can specify the terms and conditions for the merchant. | | -| Return Policy | In this field, you can specify the return policy for the merchant. | | -| Imprint | In this field, you can specify imprint information. | | -| Data Privacy | In this field, you can specify the data privacy statement. | | - -#### Shop Status - -| ATTRIBUTE | DESCRIPTION | REQUIRED | -|-|-|-| -| Your Store is online | By selecting this option, you can define whether the merchant store (with the profile, marketplace products and offers) should be displayed on the Marketplace Storefront. | | - -### What’s Next? - -Review the **My Offers** section to know more about product offers you can create. diff --git a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/delete-stores.md b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/delete-stores.md index 11c7cb8b16f..6f07fd49e7c 100644 --- a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/delete-stores.md +++ b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/delete-stores.md @@ -7,7 +7,7 @@ template: howto-guide-template {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/dynamic-multistore-feature-overview.md b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/dynamic-multistore-feature-overview.md index 3f090dee374..30ad5eccfae 100644 --- a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/dynamic-multistore-feature-overview.md +++ b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/dynamic-multistore-feature-overview.md @@ -7,7 +7,7 @@ template: concept-topic-template {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-availability-notification-feature.md b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-availability-notification-feature.md index 34b6a70c74d..da1c63596ed 100644 --- a/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-availability-notification-feature.md +++ b/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-availability-notification-feature.md @@ -1,6 +1,6 @@ --- -title: Install Dynamic Multistore + Avalability Notification feature -description: Learn how to integrate the Dynamic multiple stores & Avalability Notification feature into a Spryker project. +title: Install Dynamic Multistore + Availability Notification feature +description: Learn how to integrate the Dynamic multiple stores & Availability Notification feature into a Spryker project. last_updated: Apr 25, 2023 template: feature-integration-guide-template --- diff --git a/docs/pbc/all/dynamic-multistore/202307.0/dynamic-multistore.md b/docs/pbc/all/dynamic-multistore/202307.0/dynamic-multistore.md index d8bb0e29705..2d4eef6d2ba 100644 --- a/docs/pbc/all/dynamic-multistore/202307.0/dynamic-multistore.md +++ b/docs/pbc/all/dynamic-multistore/202307.0/dynamic-multistore.md @@ -7,7 +7,7 @@ template: concept-topic-template {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/docs/pbc/all/offer-management/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-feature.md b/docs/pbc/all/offer-management/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-feature.md index 75949e36e26..9eee19d6e12 100644 --- a/docs/pbc/all/offer-management/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-feature.md +++ b/docs/pbc/all/offer-management/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-feature.md @@ -1,7 +1,7 @@ --- title: Install the Product Offer + Service Points feature description: Learn how to integrate the Product Offer + Service Points feature into your project -last_updated: July 04, 2023 +last_updated: Sep 04, 2023 template: feature-integration-guide-template --- diff --git a/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-availability-feature.md b/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-availability-feature.md new file mode 100644 index 00000000000..4f6f91b2aa1 --- /dev/null +++ b/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-service-points-availability-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Product Offer Service Points Availability feature +description: Learn how to integrate the Product Offer Service Points Availability feature into your project +last_updated: Sep 04, 2023 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/install-the-product-offer-service-points-availability-feature.md %} diff --git a/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-shipments-availability-feature.md b/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-shipments-availability-feature.md new file mode 100644 index 00000000000..f3a668a33b5 --- /dev/null +++ b/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-shipments-availability-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Product Offer Shipment Availability feature +description: Learn how to integrate the Product Offer Shipment Availability feature into your project +last_updated: Sep 04, 2023 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/install-the-product-offer-shipments-availability-feature.md %} diff --git a/docs/pbc/all/warehouse-management-system/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md b/docs/pbc/all/warehouse-management-system/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md index 1021807f31e..a2e8132f5e4 100644 --- a/docs/pbc/all/warehouse-management-system/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md +++ b/docs/pbc/all/warehouse-management-system/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md @@ -17,16 +17,13 @@ This document describes the `merchant_stock.csv` file to configure [merchant sto ## Import file dependencies -<<<<<<<< HEAD:docs/pbc/all/warehouse-management-system/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md +- [merchant-stock.csv](/docs/pbc/all/warehouse-management-system/{{page.version}}/marketplace/import-data/file-details-merchant-stock.csv.html) - [merchant.csv](/docs/marketplace/dev/data-import/{{site.version}}/file-details-merchant.csv.html) - [warehouse.csv](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/import-and-export-data/file-details-warehouse.csv.html) ======== - [merchant.csv](/docs/pbc/all/merchant-management/{{site.version}}/marketplace/import-data/file-details-merchant.csv.html) - [warehouse.csv](/docs/pbc/all/warehouse-management-system/{{page.version}}/import-and-export-data/file-details-warehouse.csv.html) - ->>>>>>>> master:docs/pbc/all/merchant-management/202307.0/marketplace/import-data/file-details-merchant-stock.csv.md - ## Import file parameters diff --git a/docs/scos/dev/back-end-development/data-manipulation/queue/queue.md b/docs/scos/dev/back-end-development/data-manipulation/queue/queue.md index 128c9e3cc8f..49ec8e730a0 100644 --- a/docs/scos/dev/back-end-development/data-manipulation/queue/queue.md +++ b/docs/scos/dev/back-end-development/data-manipulation/queue/queue.md @@ -208,9 +208,3 @@ $jobs[] = [ ?> ``` - -{% info_block infoBox %} - -For more information and examples of how to get started with the Queue module, see [Tutorial: Set Up a "Hello World" Queue](/docs/scos/dev/legacy-demoshop/201811.0/set-up-a-hello-world-queue-legacy-demoshop.html). - -{% endinfo_block %} \ No newline at end of file diff --git a/docs/scos/dev/developers-corner/201811.0/developers-corner.md b/docs/scos/dev/developers-corner/201811.0/developers-corner.md deleted file mode 100644 index 9924f102537..00000000000 --- a/docs/scos/dev/developers-corner/201811.0/developers-corner.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Developer's Corner -last_updated: Sep 26, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/developers-corner -originalArticleId: 34512d92-99bd-42cc-a12c-4bdf9c827311 -redirect_from: - - /v1/docs/developers-corner - - /v1/docs/en/developers-corner ---- - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/agent-assist-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/agent-assist-feature-integration.md deleted file mode 100644 index 6c0ac1dcf91..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/agent-assist-feature-integration.md +++ /dev/null @@ -1,306 +0,0 @@ ---- -title: Agent Assist feature integration -description: This guide describes how to install the Agent Assist feature in your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/agent-assist-feature-integration -originalArticleId: ee66ce01-0196-4a85-b5d6-f71f34794f08 -redirect_from: - - /v1/docs/agent-assist-feature-integration - - /v1/docs/en/agent-assist-feature-integration ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.11.0 | -| Spryker Core Back Office | 2018.11.0 | -| Customer Account Management | 2018.11.0 | - -### 1) Install the required modules using Composer -Run the following command(s) to install the required modules: -```bash -composer require spryker-feature/agent-assist:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected Directory
`Agent``vendor/spryker/agent`
`AgentGui``vendor/spryker/agent-gui`
-{% endinfo_block %} - -### 2) Set up Database Schema -Run the following commands to apply database changes and to generate entity and transfer changes. -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Verify the following changes by checking your database:
Database EntityTypeEvent
`spy_user.is_agent`columncreated
-{% endinfo_block %} - -### 3) Set up Behavior -Enable the following behaviors by registering the plugins: - -| Plugin | Description | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `UserAgentFormExpanderPlugin` | Adds "is an agent" checkbox to the Zed User form. | None | `Spryker\Zed\AgentGui\Communication\Plugin` | -| `UserAgentTableConfigExpanderPlugin` | Adds "is an agent" column to the Zed Users table. | None | `Spryker\Zed\AgentGui\Communication\Plugin` | -| `UserAgentTableDataExpanderPlugin` | Fills "is an agent" column in the Zed Users table. | None | `Spryker\Zed\AgentGui\Communication\Plugin` | - -
-src/Pyz/Zed/User/UserDependencyProvider.php - -```php - -
- -{% info_block warningBox “Verification” %} - -Make sure that the following plugins have been registered:
PluginDescriptionPrerequisitesNamespace
`UserAgentFormExpanderPlugin`Adds "is an agent" checkbox to the Zed User form.None`Spryker\Zed\AgentGui\Communication\Plugin`
`UserAgentTableConfigExpanderPlugin`Adds "is an agent" column to the Zed Users table.None`Spryker\Zed\AgentGui\Communication\Plugin`
`UserAgentTableDataExpanderPlugin`Fills "is an agent" column in the Zed Users table.None`Spryker\Zed\AgentGui\Communication\Plugin`
-{% endinfo_block %} - -## Install feature frontend -### Prerequisites -Install the required features: -| Name | Version | -| --- | --- | -| Spryker Core E-commerce | 2018.11.0 | - -### 1) Install the required modules using Composer - -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/agent-assist:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Verify that the following modules were installed:
ModuleExpected Directory
`AgentPage``vendor/spryker-shop/agent-page`
`AgentWidget``vendor/spryker-shop/agent-widget`
-{% endinfo_block %} - -### 2) Add Translations - -Append glossary according to your configuration: - -
-src/data/import/glossary.csv - - ```yaml -agent.authentication.failed,Authentication failed,en_US -agent.authentication.failed,Authentifizierung fehlgeschlagen,de_DE -agent.login.title,Access your account,en_US -agent.login.title,Ich bin bereits Kunde,de_DE -agent.confirm_user_selection,Confirm,en_US -agent.confirm_user_selection,Bestätigen,de_DE -agent.login.email,Email,en_US -agent.login.email,E-Mail,de_DE -agent.login.password,Password,en_US -agent.login.password,Passwort,de_DE -agent.control_bar.username,Agent: %username%,en_US -agent.control_bar.username,Agent: %username%,de_DE -agent.control_bar.customer_name,Customer: %username%,en_US -agent.control_bar.customer_name,Kunde: %username%,de_DE -agent.control_bar.logout_as_customer,End Customer Assistance,en_US -agent.control_bar.logout_as_customer,Kunden-Assistenz beenden,de_DE -agent.control_bar.logout,Logout,en_US -agent.control_bar.logout,Abmelden,de_DE -agent.autocomplete.no_results,No results found,en_US -agent.autocomplete.no_results,Keine Ergebnisse gefunden,de_DE -autocomplete.placeholder,Search,en_US -autocomplete.placeholder,Suche,de_DE -``` -
-
- -Run the following command(s) to add the glossary keys: -```bash -console data:import:glossary -``` - -{% info_block warningBox “Verification” %} - -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} - -### 3) Enable Controllers -#### Service Provider List - -Register service provider(s) to Yves application: - -| Provider | Namespace | Specification | -| --- | --- | --- | -| `AgentPageSecurityServiceProvider` | `SprykerShop\Yves\AgentPage\Plugin\Provider` | Registers security firewalls, access rules, impersonate rules and login/logout handlers for Agent users. | - -
-src/Pyz/Yves/ShopApplication/YvesBootstrap.php - -```php -application->register(new AgentPageSecurityServiceProvider()); # AgentFeature - } -} -``` -
-
- -{% info_block warningBox “Verification” %} - -Verify the following changes:
-Try to open the link: `http://mysprykershop.com/agent/secured`
-You should be redirected to `http://mysprykershop.com/agent/login` -{% endinfo_block %} - -#### Controller Provider List - -Register controller provider(s) to Yves application: - -| Provider | Namespace | Enabled Controller | Controller Specification | -| --- | --- | --- | --- | -| `AgentPageControllerProvider` | `SprykerShop\Yves\AgentPage\Plugin\Provider` | `AgentPage\AuthController` | Login/Logout actions for the Agent user. | -| `AgentWidgetControllerProvider` | `SprykerShop\Yves\AgentWidget\Plugin\Provider` | `AgentWidget\CustomerAutocompleteController`| Customer autocomplete action for the Agent control bar. | - -
src/Pyz/Yves/ShopApplication/YvesBootstrap.php - - ```php - -
- -{% info_block warningBox “Verification” %} - -Verify the `AgentPageControllerProvider` opening the agent login page by the link: `http://mysprykershop.com/agent/login` -{% endinfo_block %} - -{% info_block warningBox “Verification” %} - -Verify the `AgentWidgetControllerProvider` searching customers from Agent control bar after Agent login. -{% endinfo_block %} - -### 4) Set up Widgets -Register the following global widget(s): -| Widget | Specification | Namespace | -| --- | --- | --- | -| `AgentControlBarWidget` | Allows agents to select customers and impersonate. | `SprykerShop\Yves\AgentWidget\Widget` | - -
src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - - ```php - -
- -Run the following command to enable Javascript and CSS changes - -In case if you have custom layout template, please place the agent widget above the site header: - -```html -{% raw %}{%{% endraw %} widget 'AgentControlBarWidget' only {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} -``` -{% info_block warningBox “Verification” %} - -Make sure that the following widgets were registered:
ModuleTest
`AgentControlBarWidget`Login as an Agent. The control bar widget should appear above the site header.
-{% endinfo_block %} - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/business-on-behalf-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/business-on-behalf-feature-integration.md deleted file mode 100644 index 998d9f9d07f..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/business-on-behalf-feature-integration.md +++ /dev/null @@ -1,246 +0,0 @@ ---- -title: Business on Behalf feature integration -description: The guide walks you through the process of installing the Business on Behalf feature into the project. -last_updated: Nov 26, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/business-on-behalf-feature-integration -originalArticleId: 2288cede-f50a-43d6-ac91-7d58b0a96e21 -redirect_from: - - /v1/docs/business-on-behalf-feature-integration - - /v1/docs/en/business-on-behalf-feature-integration ---- - -## Install Feature Core - -### Prerequisites - -To start Business on Behalf feature integration, overview and install the necessary features: - -| Name | Version | -|---|---| -| Spryker Core | 2018.11.0 | -| Company Account | 2018.11.0 | - -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected Directory
`BusinessOnBehalf``vendor/spryker/business-on-behalf`
`BusinessOnBehalfDataImport``vendor/spryker/business-on-behalf-data-import`
-{% endinfo_block %} - -### 1) Set up Database Schema and Transfer Objects - -Run the following commands to apply database changes and generate entity and transfer changes: -```shell -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database EntityTypeEvent
`spy_company_user.is_default`columncreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changes in transfer objects have been applied:
TransferTypeEventPath
`Customer.isOnBehalf`propertycreated`src/Generated/Shared/Transfer/CustomerTransfer`
`CompanyUser.isDefault`propertycreated`src/Generated/Shared/Transfer/CompanyUserTransfer`
-{% endinfo_block %} - -### 2) Import Data - -#### Import Business On Behalf Company Users - -{% info_block infoBox "Info" %} -Company user data import and business on behalf data import have currently very similar structure, however, both importers represent a different concept.
Include only business on behalf company users in the current data import step and do not mix data with company user data importer. -{% endinfo_block %} - - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/business-on-behalf-data-import/data/import/company_user.csv - - ```yaml - customer_reference,company_key,business_unit_key,default -DE--6,BoB-Hotel-Mitte,business-unit-mitte-1,0 -DE--6,BoB-Hotel-Mitte,business-unit-mitte-2,0 -DE--6,BoB-Hotel-Mitte,business-unit-mitte-3,0 -DE--7,BoB-Hotel-Jim,business-unit-jim-1,0 -DE--7,BoB-Hotel-Mitte,business-unit-mitte-1,0 -DE--7,BoB-Hotel-Kudamm,business-unit-kudamm-1,0 -DE--7,spryker_systems,spryker_systems_HQ,0 -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -|---|---|---|---|---| -| `customer_reference` | mandatory | string | DE--6 | The company user will be connected to this customer. | -| `company_key` | mandatory | string | BoB-Hotel-Mitte | The company user will be connected to this company. | -| `business_unit_key` | mandatory | string | business-unit-mitte-1 | The company user will be connected to this business unit. | -| `default` | mandatory | bool integer | 0 | Decides if this is the default company user of the customer. | - -Register the following plugins to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -|---|---|---|---| -| `BusinessOnBehalfCompanyUserDataImportPlugin` | Imports business on behalf company users. |
  • Expects customers to be in database already
  • Expects companies to be in the database already
  • Expects business units to be in the database already
| `Spryker\Zed\BusinessOnBehalfDataImport\Communication\Plugin\DataImport` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -```bash -console data:import company-user-on-behalf -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured data are added to the `spy_company_user table`. -{% endinfo_block %} - -### 3) Set up Behavior - -#### Set up Customer Transfer Expanders - -Enable the following behaviors by registering the plugins: - -| Plugin | Specification | Prerequisites | Namespace | -|---|---|---|---| -| `DefaultCompanyUserCustomerTransferExpanderPlugin` | Sets default company user for a business on behalf customer if no company user was selected yet. | None | `Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer` | -| `IsOnBehalfCustomerTransferExpanderPlugin` | Sets `CustomerTransfer.IsOnBehalf` property so other features can determine if the selected company user is a business on behalf company user. | None | `Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer` | - -
-src/Pyz/Zed/Stock/StockDependencyProvider.php - - ```php - -
- -{% info_block warningBox "Verification" %} -To check that the step has been completed correctly:
Log in with a customer who has multiple company users and a default company user.
Check in the session if the default company user was assigned to the customer.
Check in the session if the IsOnBehalf property is set correctly for the customer. -{% endinfo_block %} - -## Install feature frontend - -### Prerequisites - -To start Business on Behalf feature integration, overview and install the necessary features: - -| Name | Version | -|---|---| -| Spryker Core E-commerce | 2018.11.0 | -| Customer Account Management | 2018.11.0 | -| Company Account | 2018.11.0 | - -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected Directory
`BusinessOnBehalfWidget``vendor/spryker-shop/business-on-behalf-widget`
-{% endinfo_block %} - -### 1) Add Translations - -Append glossary according to your configuration: - -
-src/data/import/glossary.csv - -```yaml -business_on_behalf_widget.no_selected_company,No selected company,en_US -business_on_behalf_widget.no_selected_company,Kein Unternehmen ausgewählt,de_DE -business_on_behalf_widget.change_company_user,Change Company User,en_US -business_on_behalf_widget.change_company_user,Firmenbenutzer Profil ändern,de_DE -company_user.business_on_behalf.error.company_not_active,"You can not select this company user, company is not active.",en_US -company_user.business_on_behalf.error.company_not_active,"Sie können diesen Firmennutzer nicht auswählen da die Firma inaktiv ist",de_DE -company_user.business_on_behalf.error.company_user_invalid,"You can not select this company user, it is invalid.",en_US -company_user.business_on_behalf.error.company_user_invalid,"Sie können diesen Firmennutzer nicht auswählen da er ungültig ist",de_DE -``` -
-
- -Run the following console command to import the data: -```bash -console data:import glossary -``` -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} - -### 2) Set up Widgets -Enable the following global widget: - -|Widget|Description|Namespace| -|---|---|---| -|`BusinessOnBehalfStatusWidget`|Displays the selected company users and allows for business on behalf customers to change it through a link.|`SprykerShop\Yves\BusinessOnBehalfWidget| - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- -Run the following command to enable Javascript and CSS changes: -```bash -console frontend:yves:build -``` -{% info_block warningBox "Verification" %} -Log in with a business on behalf customer and see the selected company user status widget in the top menu. -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/cart-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/cart-integration.md deleted file mode 100644 index 29fe6d50fef..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/cart-integration.md +++ /dev/null @@ -1,817 +0,0 @@ ---- -title: Cart Integration -description: The guide describes the process of integrating the Cart feature into your project. -last_updated: Jul 31, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cart-integration -originalArticleId: 1c67a649-0def-4891-a592-283dce8e845f -redirect_from: - - /v1/docs/cart-integration - - /v1/docs/en/cart-integration ---- - -{% info_block infoBox %} -This article describes how to add product variants and product images to an existing cart. -{% endinfo_block %} -## Prerequisites: -Before starting make sure you are familiar with the concept of Spryker Super Attributes. - -## UI Changes: -Cart now supports changing the items in the cart by modifying their attributes. If we have a wrong T-Shirt size in the cart we will be able to change it. - -Cart now also supports product images out of the box. -![cart_product_images](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/feature-integration-guides/cart-integration.md/cart_product_images.png){height="" width=""} - -If we have products with multiple super attributes we can now, narrowing-down in the cart. -![product_super_attributes](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/feature-integration-guides/cart-integration.md/product_super_attributes.png){height="" width=""} - -## Installation -### Item images in cart -To support images in a cart, install the optional module `ProductImageCartConnector` by running: - -```bash -composer require spryker/product-image-cart-connector -``` - -This module will provide the `ProductImageCartPlugin` that you will have to register later in your shop `CartDependencyProvider` like in a snippet below: - -```php -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Cart\Dependency\ItemExpanderPluginInterface[] - */ -protected function getExpanderPlugins(Container $container) -{ - return [ - // your existing plugins ... - new ProductImageCartPlugin(), - ]; -} -``` - -If your shop uses product bundles, register `ExpondBundleItemsWithImagesPlugin` in your shop's `CartDependencyProvider` as follows: - -```php -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Cart\Dependency\ItemExpanderPluginInterface[] - */ -protected function getExpanderPlugins(Container $container) -{ - return [ - //your existing plugins - new ExpandBundleItemsWithImagesPlugin(), - ]; -} -``` - -{% info_block warningBox "Verification" %} -Make sure the `ExpandBundleItemsWithImagesPlugin` is registered after the `ExpandBundleItemsPlugin` plugin. -{% endinfo_block %} - -#### Cart variants -Spryker provides the `CartVariant` module for this purpose. -To install the `CartVariant` module, run: - -```bash -composer require spryker/cart-variant -``` - - -### AttributeMapCollector -To support the mapping between attributes and availability, we need to collect additional data in our attribute map collector. You can do that by adding a single line with `SpyProductTableMap::COL_SKU` to the `getConreteProducts` function. - -The full function is as follows: - -```php -/** - * @param int $idProductAbstract - * - * @return \Orm\Zed\Product\Persistence\SpyProduct[]|\Propel\Runtime\Collection\ObjectCollection - */ -protected function getConcreteProducts($idProductAbstract) -{ - return SpyProductQuery::create() - ->select([ - SpyProductTableMap::COL_ID_PRODUCT, - SpyProductTableMap::COL_ATTRIBUTES, - SpyProductTableMap::COL_SKU, - ]) - ->withColumn(SpyProductLocalizedAttributesTableMap::COL_ATTRIBUTES, 'localized_attributes') - ->useSpyProductLocalizedAttributesQuery() - ->filterByFkLocale($this->locale->getIdLocale()) - ->endUse() - ->filterByFkProductAbstract($idProductAbstract) - ->filterByIsActive(true) - ->find() - ->toArray(null, false, TableMap::TYPE_CAMELNAME); -} -``` - -The `filterConcreteProductIds` function was changed to the following: - -```php -/** - * @param array $concreteProducts - * - * @return array - */ -protected function filterConcreteProductIds(array $concreteProducts) -{ - $concreteProductIds = array_map(function ($product) { - return $product[SpyProductTableMap::COL_ID_PRODUCT]; - }, $concreteProducts); - foreach ($concreteProducts as $product) { - $concreteProductIds[$product[SpyProductTableMap::COL_SKU]] = $product[SpyProductTableMap::COL_ID_PRODUCT]; - } - asort($concreteProductIds); - return $concreteProductIds; -} -``` - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/category-filters-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/category-filters-feature-integration.md deleted file mode 100644 index d6b1aac247c..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/category-filters-feature-integration.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Category Filters feature integration -description: The Category Filters Feature allows arranging items into categories and customizing filters. This guide describes how to integrate the feature into your project. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/category-filter-feature-integration -originalArticleId: 654091b2-d1ca-4d55-b9e4-f3405f714aae -redirect_from: - - /v1/docs/category-filter-feature-integration - - /v1/docs/en/category-filter-feature-integration -related: - - title: Managing Category Filters - link: docs/scos/user/back-office-user-guides/page.version/merchandising/category-filters/assign-and-deassign-filters-from-categories.html ---- - -## Prerequisites -To prepare your project to work with Category Filters: - -1. Require the Category Filters modules in your composer by running: -* `composer require spryker/product-category-filter` -* `composer require spryker/product-category-filter-collector` -* `composer require spryker/product-category-filter-gui` - -2. Install the new database tables by running `vendor/bin/console propel:diff`. Propel should generate a -migration file with the changes. - -3. Run `vendor/bin/console propel:migrate` to apply the database changes. -4. Generate ORM models by running `vendor/bin/console propel:model:build`. -This command will generate some new classes in your project under the ` \Orm\Zed\ProductCategoryFilter\Persistence namespace`. -It is important to make sure that they extend the base classes from the Spryker core, for example: - -* `\Orm\Zed\ProductCategoryFilter\Persistence\SpyProductCategoryFilter` extends `\Spryker\Zed\ProductCategoryFilter\Persistence\Propel\AbstractSpyProductCategoryFilter` - -* `\Orm\Zed\ProductReview\Persistence\SpyProductCategoryFilterQuery` extends `\Spryker\Zed\ProductCategoryFilter\Persistence\Propel\AbstractSpyProductCategoryFilterQuery` - -5. Run `vendor/bin/console transfer:generate` to generate the new transfer objects. -6. Activate the product category filters collector by adding `ProductCategoryFilterCollectorPlugin` to the Storage Collector plugin stack. - -
- Example: collector plugin list extension - -```php - new ProductCategoryFilterCollectorPlugin(), - ]; - }; - - - // ... - } - } -``` - -
-
- -7. Make sure the new Zed user interface assets are built. Run `npm run zed` (or antelope build zed - for older versions) for that. -8. Update Zed’s navigation cache to show the new items for the Product Category Filter management user interface by running `vendor/bin/console application:build-navigation-cache`. - -You should now be able to use the Zed UI of Category Filters to re-order, remove or add search filters to specific categories, and the collectors should also be able to push those category settings to storage. -Check out our [Demoshop implementation](https://github.com/spryker/demoshop) for frontend implementation example and the general idea. - -### Updating Filters For a Category -To use the setup category filter, `CatalogController::indexAction` needs to call `ProductCategoryFilterClient::updateFacetsByCategory`. - -For example, it might look like this: - -```php -query->get('q', ''); - - $parameters = $request->query->all(); - $parameters[PageIndexMap::CATEGORY] = $categoryNode['node_id']; - - $searchResults = $this - ->getClient() - ->catalogSearch($searchString, $parameters); - - $currentLocale = $this - ->getFactory() - ->getLocaleClient() - ->getCurrentLocale(); - - $productCategoryFilterClient = $this->getFactory()->getProductCategoryFilterClient(); - - $searchResults[FacetResultFormatterPlugin::NAME] = $productCategoryFilterClient - ->updateFacetsByCategory( - $searchResults[FacetResultFormatterPlugin::NAME], - $productCategoryFilterClient->getProductCategoryFiltersForCategoryByLocale($parameters[PageIndexMap::CATEGORY], $currentLocale) - ); //This line here is the one that updates the facets with the category filters. - - $pageTitle = ($categoryNode['meta_title']) ?: $categoryNode['name']; - $metaAttributes = [ - 'idCategory' => $parameters['category'], - 'category' => $categoryNode, - 'page_title' => $pageTitle, - 'page_description' => $categoryNode['meta_description'], - 'page_keywords' => $categoryNode['meta_keywords'], - 'searchString' => $searchString, - ]; - - $searchResults = array_merge($searchResults, $metaAttributes); - - return $this->envelopeResult($searchResults, $categoryNode['node_id']); - } -} -``` - -It is also necessary to add `ProductCategoryFilterClient` to `CatalogFactory`: - -```php -getProvidedDependency(CatalogDependencyProvider::CLIENT_PRODUCT_CATEGORY_FILTER); - } -} -``` - -Add an additional dependency to `CatalogDependencyProvider` to look like this: - -```php -addProductCategoryFilterClient($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addProductCategoryFilterClient(Container $container) - { - $container[static::CLIENT_PRODUCT_CATEGORY_FILTER] = function (Container $container) { - return $container->getLocator()->productCategoryFilter()->client(); - }; - - return $container; - } -} -``` - - - -[//]: # (by Ahmed Sabaa) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/checkout-workflow-integration-guide.md b/docs/scos/dev/feature-integration-guides/201811.0/checkout-workflow-integration-guide.md deleted file mode 100644 index ec8a9b31311..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/checkout-workflow-integration-guide.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Checkout Workflow Integration Guide -last_updated: Jul 31, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/checkout-workflow-integration -originalArticleId: 85187314-1111-4935-b342-7fac18b78ad0 -redirect_from: - - /v1/docs/checkout-workflow-integration - - /v1/docs/en/checkout-workflow-integration ---- - -For example let's create alternative checkout workflow which would only save order in database without any additional checks or calculations. - -To define an alternative checkout workflow, add a constant to `\Pyz\Shared\Checkout\CheckoutConstants`: - -```bash -const KEY_WORKFLOW_ALTERNATIVE_CHECKOUT = 'alternative-checkout'; -``` - -Modify the `getCheckoutWorkflows()` method in `\Pyz\Zed\Checkout\CheckoutDependencyProvider` to define plugins for new workflow: - -```php -protected function getCheckoutWorkflows(Container $container) -{ - return [ - CheckoutConstants::KEY_WORKFLOW_MULTISTEP_CHECKOUT => (new CheckoutWorkflowPluginContainer( - $this->getCheckoutPreConditions($container), - $this->getCheckoutOrderSavers($container), - $this->getCheckoutPostHooks($container), - $this->getCheckoutPreSaveHooks($container) - )), - CheckoutConstants::KEY_WORKFLOW_ALTERNATIVE_CHECKOUT => (new CheckoutWorkflowPluginContainer( - [], - [ - new SalesOrderSaverPlugin(), - ], - [], - [] - )), - ]; -} -``` - -After this, pass workflow id as a second parameter in the `placeOrder()` call of `CheckoutFacade`. - -```bash -$this->getCheckoutFacade()->placeOrder($quoteTransfer, CheckoutConstants::KEY_WORKFLOW_ALTERNATIVE_CHECKOUT); -``` diff --git a/docs/scos/dev/feature-integration-guides/201811.0/discount-promotion-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/discount-promotion-feature-integration.md deleted file mode 100644 index 94d6f66e47b..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/discount-promotion-feature-integration.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -title: Discount Promotion feature integration -description: This guides provides you with a set of steps needed to be performed in order to integrate the Discount Promotion feature into your project. -last_updated: Jul 31, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discount-promotion-feature-integration -originalArticleId: 0e08a3b5-49f1-4372-936a-8fdd8d239010 -redirect_from: - - /v1/docs/discount-promotion-feature-integration - - /v1/docs/en/discount-promotion-feature-integration ---- - -To start using the Discount Promotion feature, you have to do some configuration in your Zed application. - -## Prerequisites - -1. First make sure you have the latest `DiscountPromotion` module. -Usecthe `composer require spryker/discount-promotion` command to install it. -2. You also need at least `"spryker/discount": "^4.5.0"` for the discount module. -* Run `vendor/bin/console transfer:generate` to generate the latest transfer object. -* Run `vendor/bin/console propel:diff` to generate migration file for the database. Inspect this new file and check if only `spy_discount_promotion` has been created there. -* Run `vendor/bin/console propel:migrate` to migrate the latest generate migration file. -* Run `vendor/bin/console propel:model:build` to generate new propel Entities and Query classes. - -## Enabling Discount Promotions - -To enable Discount promotions, you have to add a number of plugins to the `Discount` module so that `DiscountPromotion` can extend it. -Below there is the example of the `DiscountDependencyProvider` class. - -```php -setIsPromotion((bool)$this->request->request->get('isPromo'));` -3. Inject `ProductPromotionMapperPlugin` to Cart Module: - -```php -getProvidedDependency(CartDependencyProvider::PLUGIN_PROMOTION_PRODUCT_MAPPER); - } -} -``` - -5. Add call to plugin in `CartController`. - -```php -getFactory() - ->getProductPromotionMapperPlugin() - ->mapPromotionItemsFromProductStorage( - $quoteTransfer, - $this->getRequest() - ); - - $this->viewResponse([ - //other data - 'promotionStorageProducts' => $promotionStorageProducts, - ]); - -} -``` - -Change twig templates to render promotion products. Since we've changed how quantity is rendered for promotion products, some cart templates in our demoshop were reorganized. - -Firstly, make sure a promotion item twig template is called in `Pyz/Yves/Cart/Theme/default/cart/index.twig`. This usually should be placed after cart items as in the example below: - -```php -{% raw %}{%{% endraw %} for cartItem in cartItems {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if cartItem.bundleProduct is defined {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@cart/cart/parts/cart-item.twig' with { - cartItem: cartItem.bundleProduct, - bundleItems: cartItem.bundleItems - } {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@cart/cart/parts/cart-item.twig' {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} //existing code - -{% raw %}{%{% endraw %} include '@DiscountPromotion/discount-promotion/item-list.twig' {% raw %}%}{% endraw %} //new include -``` - -`Pyz/Yves/Cart/Theme/default/cart/parts/cart-item.twig` was also heavily modified to work with promotion products (please check our demoshop version), as the cart page can be different per project. - -The key points that were changed: the "Add to cart" button extracted to `Pyz/Yves/Cart/Theme/default/cart/parts/cart-add-to-cart.twig`, item price information extracted to `Pyz/Yves/Cart/Theme/default/cart/parts/cart-item-prices.twig`, cart product variants extracted to `Pyz/Yves/Cart/Theme/default/cart/parts/cart-product-variants.twig`. - -Below there is the demoshop `Pyz/Yves/Cart/Theme/default/cart/parts/cart-item.twig` file for reference. - -```php -
- - {% raw %}{%{% endraw %} include '@Cart/cart/parts/cart-images.twig' {% raw %}%}{% endraw %} - -
    - {# General data #} -
  • {% raw %}{{{% endraw %} cartItem.name {% raw %}}}{% endraw %}
  • {% raw %}{{{% endraw %} 'cart.item.sku' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} cartItem.sku {% raw %}}}{% endraw %}
  • - - {% raw %}{%{% endraw %} if bundleItems is defined {% raw %}%}{% endraw %} - {# Product Bundles #} -
  • {% raw %}{{{% endraw %} 'cart.item.bundle.description' | trans {% raw %}}}{% endraw %}
      - {% raw %}{%{% endraw %} for bundleItem in bundleItems {% raw %}%}{% endraw %} -
    • {% raw %}{{{% endraw %} bundleItem.quantity {% raw %}}}{% endraw %} x {% raw %}{{{% endraw %} bundleItem.name {% raw %}}}{% endraw %}
    • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@Cart/cart/parts/cart-product-variants.twig' {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} include '@Cart/cart/parts/cart-item-prices.twig' {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} include '@Cart/cart/parts/cart-add-to-cart.twig' {% raw %}%}{% endraw %} -
-``` - -Make sure `CartOperationHandler` sets ID of `idDiscountPromotion`. - -``` -public function add($sku, $quantity, $optionValueUsageIds = []) - { - $itemTransfer = new ItemTransfer(); - $itemTransfer->setSku($sku); - $itemTransfer->setQuantity($quantity); - $itemTransfer->setIdDiscountPromotion($this->getIdDiscountPromotion()); //new setter - - $this->addProductOptions($optionValueUsageIds, $itemTransfer); - - $quoteTransfer = $this->cartClient->addItem($itemTransfer); - $this->cartClient->storeQuote($quoteTransfer); - } - -protected function getIdDiscountPromotion() -{ - return (int)$this->request->request->get('idDiscountPromotion'); -} -``` -When using promotion discount with voucher code, you will get the error message that voucher is not correct. It’s because voucher code is a product offered as promotion and not yet added to cart. - -You have to modify `\Pyz\Yves\Discount\Handler\VoucherHandler::addFlashMessages` to handle discounts with promotions. - -Add the following condition: - -```php -namespace Pyz\Yves\Discount\Handler; - -class VoucherHandler extends BaseHandler implements VoucherHandlerInterface -{ - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param string $voucherCode - * - * @return void - */ - protected function addFlashMessages($quoteTransfer, $voucherCode) - { - - //---new code - if ($this->isVoucherFromPromotionDiscount($quoteTransfer, $voucherCode)) { - return; - } - //----- - - if ($this->isVoucherCodeApplied($quoteTransfer, $voucherCode)) { - $this->setFlashMessagesFromLastZedRequest($this->calculationClient); - return; - } - - $this->flashMessenger->addErrorMessage('cart.voucher.apply.failed'); - } - - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param string $voucherCode - * - * @return bool - */ - protected function isVoucherFromPromotionDiscount(QuoteTransfer $quoteTransfer, $voucherCode) - { - foreach ($quoteTransfer->getUsedNotAppliedVoucherCodes() as $voucherCodeUsed) { - if ($voucherCodeUsed === $voucherCode) { - return true; - } - } - - return false; - } -} -``` - -After this you should be able to use the new discounts with promotion. diff --git a/docs/scos/dev/feature-integration-guides/201811.0/enabling-gift-cards.md b/docs/scos/dev/feature-integration-guides/201811.0/enabling-gift-cards.md deleted file mode 100644 index 6815eef4acc..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/enabling-gift-cards.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Enabling Gift Cards -description: The guide walks you through the process of installing the Gift Cards feature in the project. -last_updated: Nov 21, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/enabling-gift-cards -originalArticleId: cf250cbf-70f4-4c4f-923e-8fe3054ed817 -redirect_from: - - /v1/docs/enabling-gift-cards - - /v1/docs/en/enabling-gift-cards ---- - -The Gift Cards feature is shipped with the following modules: - -* **GiftCard**: implements the basic functionality of the Gift Cards feature as well as the Replacement value-checking strategy. - -* **GiftCardBalance**: implements gift card Balance value-checking strategy. - -* **GiftCardMailConnector**: responsible for sending e-mails on gift cards usage (balance change) as well as gift cards codes delivery. - -* **Nopayment**: implements payment methods if the price to pay is fully covered by a gift card. - -To enable the gift cards in your project, do the following: - -1. Make sure you have the correct versions of the required modules. To automatically update to the latest non-BC breaking versions, run `composer update "spryker/*"` -2. Require the modules in your `composer.json` by running: - -```bash -composer require spryker/gift-card:"^1.0.0" spryker/gift-card-balance:"^1.0.0" -spryker/gift-card-mail-connector:"^1.0.0" spryker/nopayment:"^4.0.0" -spryker/product-management:"^0.12.0" -``` - -3. Enable necessary plugins. See the table below for information on available plugins, where to install them and value checking strategies they are used for. - - -| Plugin | Description | Where to Install | Strategy | -| --- | --- | --- | --- | -| `GiftCardCalculatorPlugin` | Splits applicable and non-applicable Gift Cards. Creates payment methods for applicable Gift Cards. |`CalculationDependencyProvider::getQuoteCalculatorPluginStack` | - | -| `GiftCardCurrencyMatchDecisionRulePlugin` |Doesn’t allow using a Gift Card with a different currency rather than the one the customer has used while performing the payment. | `GiftCardDependencyProvider::getDecisionRulePlugins` | - | -| `GiftCardIsActiveDecisionRulePlugin` | Doesn’t allow using inactive Gift Cards. |`GiftCardDependencyProvider::getDecisionRulePlugins` | - | -| `GiftCardDiscountableItemFilterPlugin` |Restricts using a Gift Card for another Gift Cards in a cart. The plugin filters out Gift Cards from discountable items. |`DiscountDependencyProvider::getDiscountableItemFilterPlugins` | - | -| `GiftCardIsUsedDecisionRulePlugin` | As a part of the replacement strategy, this plugin does not allow using a Gift Card twice. |`GiftCardDependencyProvider::getDecisionRulePlugins` | Replacement | -| `GiftCardMetadataExpanderPlugin` | Populates Gift Card information when it is in the cart. | `CartDependencyProvider::getExpanderPlugins` | - | -| `GiftCardOrderItemSaverPlugin` | Saves a Gift Card with populated data when an order is placed. | `CheckoutDependencyProvider::getCheckoutOrderSavers` | - | -| `GiftCardOrderSaverPlugin` | Keeps Gift Card as an order payment method. | `PaymentDependencyProvider::extendPaymentPlugin` with a key `PaymentDependencyProvider::CHECKOUT_ORDER_SAVER_PLUGINS`| - | -| `GiftCardPaymentMethodFilterPlugin` | Now, every payment method is compatible with a Gift Card in the cart. The plugin filters out all incompatible payment methods from available ones during checkout payment methods step. | `PaymentDependencyProvider::getPaymentMethodFilterPlugins` | - | -| `GiftCardPreCheckPlugin` | Confirms that a Gift Card is not used at the moment and that payment method amount assigned to the Gift Card is no more than the Gift Card amount itself. | `PaymentDependencyProvider::extendPaymentPlugin` with a key `PaymentDependencyProvider::CHECKOUT_PRE_CHECK_PLUGINS` | - | -| `GiftCardRecreateValueProviderPlugin` |For replacement: defines a Gift Card leftover. It’s simply a Gift Card amount for this strategy. | `GiftCardDependencyProvider::getValueProviderPlugin` | Replacement | -| `CreateGiftCardCommandPlugin` | It is an order management system command to create a Gift Card based on a paid order item (a Gift Card item). | `OmsDependencyProvider::extendCommandPlugins` | - | -| `ReplaceGiftCardsCommandPlugin` | For placement strategy: creates a new Gift Card based on leftover from the previous one. | `OmsDependencyProvider::extendCommandPlugins` | Replacement | -| `IsGiftCardConditionPlugin` | This plugin is used to define an order management system state machine process routing. | `OmsDependencyProvider::extendConditionPlugins` | - | -| `OnlyGiftCardShipmentMethodFilterPlugin` | Filters out shipment methods that are incompatible with Gift Cards. | `ShipmentDependencyProvider::getMethodFilterPlugins` | - | -| `BalanceCheckerApplicabilityPlugin` | For balance strategy: checks positive balance on a Gift Card. | `GiftCardDependencyProvider::getDecisionRulePlugins` | Balance | -| `BalanceTransactionLogPaymentSaverPlugin` | For balance strategy: persists a Gift Card during a payment processing. | `GiftCardDependencyProvider::getPaymentSaverPlugins` | Balance | -| `GiftCardBalanceValueProviderPlugin` | For balance strategy: provides available Gift Card amount. Gift Card amount equals to logged transactions. | `GiftCardDependencyProvider::getValueProviderPlugin` | Balance | -| `GiftCardDeliveryMailTypePlugin` | Sends an e-mail about a successfully issued Gift Card to a buyer. | `MailDependencyProvider::MAIL_TYPE_COLLECTION` | - | -| `GiftCardUsageMailTypePlugin` | Sends an e-mail on Gift Card usage to its user. | `MailDependencyProvider::MAIL_TYPE_COLLECTION` | - | -| `ShipGiftCardByEmailCommandPlugin` | An order management system command which triggers Gift Card electronic shipment. |`OmsDependencyProvider::extendCommandPlugins` | - | -| `NopaymentHandlerPlugin` | A payment method placeholder that is used when an order is paid by only a Gift Card without a real payment method. | `CheckoutDependencyProvider::extendPaymentMethodHandler` | - | -| `NopaymentPreCheckPlugin` | Doesn’t allow placing an order with a price to pay more than 0 with a NoPayment payment method. | `PaymentDependencyProvider::extendPaymentPlugins` with a key `PaymentDependencyProvider::CHECKOUT_ORDER_SAVER_PLUGINS` | - | -| `PriceToPayPaymentMethodFilterPlugin` | Filters payment methods based on cart totals. | `PaymentDependencyProvider::getPaymentMethodFilterPlugins` | - | -| `PaymentFormFilterPlugin` | Each payment method provides its subforms. The plugin filters them out based on an available payment method list. | `CheckoutDependencyProvider::getPaymentFormFilterPlugins` | - | -| `PaymentCalculatorPlugin` | Distributes total prices to payment methods. Calculates price to pay to quote totals. | `CalculationDependencyProvider::getQuoteCalculatorPluginStack` | - | diff --git a/docs/scos/dev/feature-integration-guides/201811.0/enabling-the-content-widget.md b/docs/scos/dev/feature-integration-guides/201811.0/enabling-the-content-widget.md deleted file mode 100644 index 515fd1519d5..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/enabling-the-content-widget.md +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Enabling the Content Widget -description: The guide walks you through the process of installing the Content Widget feature in the project. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/enabling-cms-widget -originalArticleId: 7a658c6c-f0b5-4b59-a44f-11b3d43eb1d6 -redirect_from: - - /v1/docs/enabling-cms-widget - - /v1/docs/en/enabling-cms-widget ---- - -CMS content widgets is a CMS feature for adding dynamic content to CMS pages/blocks. - -For example, you can list a single product, product lists, product groups or product sets. - -## Integration -First of all you need to install the `cms-content-widget` module with Composer (update composer.json with `"cms-content-widget": "^1.0.0"` or use Composer require). - -To enable the feature, configure it in your project. - -Integration of CMS widget consists of three main parts: - -1. Registering twig function in Yves. -2. Providing configuration in module shared directory so that Yves and Zed can read it. -3. (Optionally) Providing CMS content function parameter mapper plugins. - -### Step 1: Registering twig function in Yves. -The CMS content widget is a twig function. Therefore, twig syntax rules apply and must be followed when including the inside content. -For example, `{% raw %}{{{% endraw %} product(['012', '013', '321']) {% raw %}}}{% endraw %}` will include carousel component with three products. - -To register a new function, you need to create a plugin which implements the `\Spryker\Yves\CmsContentWidget\Dependency\CmsContentWidgetPluginInterface` interface and place it in Yves application. Plugins are registered in `\Pyz\Yves\CmsContentWidget\CmsContentWidgetependencyProvider::getCmsContentWidgetPlugins` which is an array stored as key => value pairs, -where **key** is the function name you want to use in a template and **value** is a specific plugin instance. This plugin needs configuration which is explained in the next paragraph. - -To enable the feature for CMS blocks, you have to configure twig rendering plugin `\Spryker\Yves\CmsContentWidget\Plugin\CmsTwigContentRendererPlugin` and add it to `\Pyz\Yves\CmsBlock\CmsBlockDependencyProvider::getCmsBlockTwigContentRendererPlugin`. This will enable twig function rendering in CMS blocks. - -### Step 2: Providing CMS content widget configuration. - -Some information needs to be shared between Yves and Zed. Therefore, the configuration plugin must be placed in a shared namespace. - -**The new plugin must implement:** `\Spryker\Shared\CmsContentWidget\Depedency\CmsContentWidgetConfigurationProviderInterface` which is used by Yves and Zed. - -When used in Yves, inject this plugin directly to your plugin and use configuration when building twig callable. When used in Zed, it should be added to the `\Pyz\Zed\CmsContentWidget\CmsContentWidgetConfig::getCmsContentWidgetConfigurationProviders` plugin array where key is the function name and value is the plugin instance. Providing it to Zed allows rendering usage information below the content editor. - -The configuration provider requires implementation of the following methods: - -* `getFunctionName` is the name of function when used in CMS content. -* `getAvailableTemplates` is the list of supported templates, it's a key value pair where key is the template identifier which is passed to function and value is a path to twig template. -* `getUsageInformation` is a plain text usage information, displayed when rendering help pane below the content editor. - -### Step 3: Function mapping plugins - optional. - -When defining functions, you may want to accept "natural identifiers", such as "sku" for products or "set_key" for product sets. It is preferable that the content manager provides the identifiers instead of relying on surrogate keys. The problem arises when you need to read data from the Yves data store as the Yves data store uses "surrogate key/primary keys". Therefore, to read data, convert/map those natural identifiers to surrogate keys. - -We provide mappers to help map the identifiers. Each mapper must implement: `\Spryker\Zed\CmsContentWidget\Dependency\Plugin\CmsContentWidgetParameterMapperPluginInterface` and be added to `\Pyz\Zed\Cms\CmsDependencyProvider::getCmsContentWidgetParameterMapperPlugins` where **key** is the function name and **value** is a specific mapper. - -The mapper receives unmapped values where your plugin is responsible for mapping and returning it as an array. Mapper plugins are invoked by CMS and block collectors. To export this data, you must register two plugins one for CMS pages and one for CMS blocks. - -For `CmsBlockCollector`, add plugin `\Spryker\Zed\CmsContentWidget\Communication\Plugin\CmsBlockCollector\CmsBlockCollectorParameterMapExpanderPlugin` to `\Pyz\Zed\CmsBlockCollector\CmsBlockCollectorDependencyProvider::getCollectorDataExpanderPlugins`. - -For `CmsCollector`, add plugin `\Spryker\Zed\CmsContentWidget\Communication\Plugin\CmsPageCollector\CmsPageCollectorParameterMapExpanderPlugin` to `\Pyz\Zed\CmsCollector\CmsCollectorDependencyProvider::getCollectorDataExpanderPlugins`. - -Make sure to update the `CmsBlockCollector` and `CmsCollector` modules as expander plugins were added during this feature release. It's exported to `\Spryker\Shared\CmsContentWidget\CmsContentWidgetConstants::CMS_CONTENT_WIDGET_PARAMETER_MAP`. You can access parameter mapping inside the ` $contex` variable when implementing the CMS content function plugin in Yves. - -The `$context` is a special twig function variable that uses twig to pass the data you normally send to the template. This variable has a `cmsContent` key. This key has data from the Yves store. This can be either a CMS page or block data. - -The parameter mapping can be read from: - -```bash -$context['cmsContent'][CmsContentWidgetConstants::CMS_CONTENT_WIDGET_PARAMETER_MAP][$this->widgetConfiguration->getFunctionName()]; -``` - -For example, you can use this method as a basis when implementing `\Spryker\Yves\CmsContentWidget\Dependency\CmsContentWidgetPluginInterface`. - -```php -namespace Spryker\Yves\Module\Plugin; - -class CmsWidgetPlugin extends AbstractPlugin implements CmsContentWidgetPluginInterface -{ - /** - * @return \Callable - */ - public function getContentWidgetFunction() - { - return function (Twig_Environment $twig, array $context, $parameters, $templateIdentifier = null) { - return $twig->render( - $this->resolveTemplatePath($templateIdentifier), - $this->getContent($context, $parameters) - ); - }; - } - - /** - * @param null|string $templateIdentifier - * - * @return string - */ - protected function resolveTemplatePath($templateIdentifier = null) - { - return '@Module/partials/function_template.twig' - } - - /** - * @param array $context - * @param array|string $parameters - * - * @return array - */ - protected function getContent(array $context, $parameters) - { - return []; //return data to be inserted into template - } - - } -``` - -## Provided Plugins -We provide three CMS content widget plugins . All are currently implemented in the demoshop so you can take them from our repository and integrate in your project. - -Plugin configuration is described below. - -### Zed Plugins: - -```php -namespace Pyz\Zed\CmsContentWidget; -class CmsContentWidgetConfig extends SprykerCmsContentConfig -{ - /** - * {@inheritdoc} - * - * @return array|\Spryker\Shared\CmsContentWidget\CmsContentWidget\CmsContentWidgetConfigurationProviderInterface[] - */ - public function getCmsContentWidgetConfigurationProviders() - { - return [ - \Spryker\Shared\CmsContentWidgetProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider(), - \Spryker\Shared\CmsContentWidgetProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider(), - \Spryker\Shared\CmsContentWidgetProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider(), - ]; - } -} -``` - -### Zed CMS Configuration Providers: - -```php -namespace Pyz\Zed\CmsContentWidget; -class CmsContentWidgetConfig extends SprykerCmsContentConfig -{ - /** - * {@inheritdoc} - * - * @return array|\Spryker\Shared\CmsContentWidget\CmsContentWidget\CmsContentWidgetConfigurationProviderInterface[] - */ - public function getCmsContentWidgetConfigurationProviders() - { - return [ - \Spryker\Shared\CmsContentWidgetProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider(), - \Spryker\Shared\CmsContentWidgetProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider(), - \Spryker\Shared\CmsContentWidgetProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Shared\CmsProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider(), - ]; - } -} -``` - -### Zed CMS Collector Parameter Mapper Plugins: - -```php -namespace Pyz\Zed\CmsContentWidget; - -class CmsContentWidgetDependencyProvider extends SprykerCmsContentWidgetDependencyProvider -{ - - /** - * {@inheritdoc} - * - * @param \Spryker\Zed\Kernel\Container $container - * - * @return array|\Spryker\Zed\CmsContentWidget\Dependency\Plugin\CmsContentWidgetParameterMapperPluginInterface[] - */ - protected function getCmsContentWidgetParameterMapperPlugins(Container $container) - { - return [ - \Spryker\Shared\CmsProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Zed\CmsProductConnector\Communication\Plugin\Cms\CmsProductSkuMapperPlugin(), - \Spryker\Shared\CmsProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Zed\CmsProductSetConnector\Communication\Plugin\Cms\CmsProductSetKeyMapperPlugin(), - \Spryker\Shared\CmsProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider::FUNCTION_NAME => new \Spryker\Zed\CmsProductConnector\Communication\Plugin\Cms\CmsProductSkuMapperPlugin(), - ]; - } - -} -``` - -### Yves Plugin Dependencies - -```php -namespace Pyz\Zed\CmsContentWidget; - -use Spryker\Shared\CmsContentWidgetProductConnector\ContentWidgetConfigurationProvider\CmsProductContentWidgetConfigurationProvider; -use Spryker\Shared\CmsContentWidgetProductGroupConnector\ContentWidgetConfigurationProvider\CmsProductGroupContentWidgetConfigurationProvider; -use Spryker\Shared\CmsContentWidgetProductSetConnector\ContentWidgetConfigurationProvider\CmsProductSetContentWidgetConfigurationProvider; -use Spryker\Zed\CmsContentWidget\CmsContentWidgetConfig as SprykerCmsContentConfig; - -class CmsContentWidgetConfig extends SprykerCmsContentConfig -{ - /** - * {@inheritdoc} - * - * @return array|\Spryker\Shared\CmsContentWidget\Dependency\CmsContentWidgetConfigurationProviderInterface[] - */ - public function getCmsContentWidgetConfigurationProviders() - { - return [ - CmsProductContentWidgetConfigurationProvider::FUNCTION_NAME => new CmsProductContentWidgetConfigurationProvider(), - CmsProductSetContentWidgetConfigurationProvider::FUNCTION_NAME => new CmsProductSetContentWidgetConfigurationProvider(), - CmsProductGroupContentWidgetConfigurationProvider::FUNCTION_NAME => new CmsProductGroupContentWidgetConfigurationProvider(), - ]; - } -} -``` - - - -### Version Check When Using the Widget for CMS Blocks -If you use this widget for CMS Blocks, then check that you have proper versions of your modules as follows: `cms-block >= 1.2.0, cms-block-collector >= 1.1.0, cms-block-gui >= 1.1.0`. - - - -[//]: # (by Denis Turkov) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/feature-integration-guides.md b/docs/scos/dev/feature-integration-guides/201811.0/feature-integration-guides.md deleted file mode 100644 index 1d2d7f991fc..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/feature-integration-guides.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: About Integration -last_updated: Oct 7, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/about-integration -originalArticleId: 34f5eb39-407e-4880-b1a7-de0cff062cfe -redirect_from: - - /v1/docs/about-integration - - /v1/docs/en/about-integration ---- - -The integration guides provide step-by-step instructions on how to enable individual Spryker features for your project. - -Please keep in mind, that since Spryker Commerce OS is a highly modular system, you have total freedom in choosing what features to add to your project. When making a decision to install new features, we recommend not to bloat your project by installing everything, but opt for the features that are really justified in terms of your business needs. - -If you have spotted an issue with either of the guides, please feel free to [create an issue](https://github.com/spryker/spryker-docs/issues) or pull request by using the Edit on GitHub option. - -Not found an integration guide you are looking for? Let us know about it by [creating an issue on Github](https://github.com/spryker/spryker-docs/issues) or dropping an email to academy@spryker.com. diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/catalog-search-api-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/catalog-search-api-feature-integration.md deleted file mode 100644 index 5c120581671..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/catalog-search-api-feature-integration.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Glue API - Catalog Search feature integration -description: This guide will navigate you through the process of installing and configuring the Search API feature in Spryker OS. -last_updated: Oct 24, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/catalog-search-api-feature-integration -originalArticleId: bc4f8fd7-4354-4f9f-8c7a-8029f52d6d43 -redirect_from: - - /v1/docs/catalog-search-api-feature-integration - - /v1/docs/en/catalog-search-api-feature-integration - - /docs/scos/dev/glue-api-guides/201811.0/(/docs/scos/dev/feature-integration-guides/201811.0/glue-api/catalog-search-api-feature-integration.html) ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name |Version | -| --- | --- | -| Spryker Core |2018.12.0 | -| Search | 2018.12.0 | - -## 1) Install the required modules - -Run the following command to install the required modules: -`composer require spryker/catalog-search-rest-api:"^2.1.0" spryker/catalog-search-products-resource-relationship:"^1.1.0" --update-with-dependencies` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module | Expected Directory | -| --- | --- | -| `CatalogSearchRestApi` | `vendor/spryker/catalog-search-rest-api` | -| `CatalogSearchProductsResourceRelationship` | `vendor/spryker/catalog-search-products-resource-relationship` | - -## 2) Set up Transfer objects - -Run the following commands to generate transfer changes: -`console transfer:generate` - -{% info_block infoBox "Verification" %} -Make sure that the following changes in transfer objects have occurred: -{% endinfo_block %} - -| Transfer |Type | Event | Path | -| --- | --- | --- | --- | -| `RestCatalogSearchAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchAttributesTransfer ` | -| `RestCatalogSearchSortTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchSortTransfer ` | -| `RestCatalogSearchPaginationTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchPaginationTransfer ` | -| `RestCatalogSearchAbstractProductsTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchAbstractProductsTransfer` | -| `RestCatalogSearchProductImageTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchProductImageTransfer` | -| `RestRangeSearchResultTransfer` | class | created | `src/Generated/Shared/Transfer/RestRangeSearchResultTransfer` | -| `RestFacetSearchResultTransfer` | class | created | `src/Generated/Shared/Transfer/RestFacetSearchResultTransfer` | -| `RestCatalogSearchSuggestionsAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchSuggestionsAttributesTransfer` | -| `RestCatalogSearchSuggestionAbstractProductsTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchSuggestionAbstractProductsTransfer` | -| `RestCatalogSearchSuggestionProductImageTransfer` | class | created | `src/Generated/Shared/Transfer/RestCatalogSearchSuggestionProductImageTransfer` | -| `RestPriceProductTransfer` | class | created | `src/Generated/Shared/Transfer/RestPriceProductTransfer` | -| `PriceModeConfigurationTransfer` | class | created | `src/Generated/Shared/Transfer/PriceModeConfigurationTransfer` | -| `RestCurrencyTransfer` | class | created | `src/Generated/Shared/Transfer/RestCurrencyTransfer` | -| `RestFacetConfigTransfer` | class | created | `src/Generated/Shared/Transfer/RestFacetConfigTransfer ` | - -## 3) Set up behavior -### Enable resources and relationships -**Implementation** -Activate the following plugins: - -| Plugin|Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `CatalogSearchAbstractProductsResourceRelationshipPlugin` | Adds the abstract product resource relationship to search results. | None | `Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin` | -| `CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin` | Adds the abstract product resource relationship to search suggestions results. | None | `Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin` | -| `CatalogSearchResourceRoutePlugin` | Registers the `search` resource. | None | `Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchResourceRoutePlugin` | -| `CatalogSearchSuggestionsResourceRoutePlugin` | Registers the `search-suggestions` resource. | None | `Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchSuggestionsResourceRoutePlugin` | - -**`src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php`** -```php -addRelationship( - CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH, - new CatalogSearchAbstractProductsResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH_SUGGESTIONS, - new CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -**Verification** -{% info_block infoBox %} -Make sure the following endpoints are available: -{% endinfo_block %} -* `https://glue.mysprykershop.com/catalog-search?q={% raw %}{{{% endraw %}q_term{% raw %}}}{% endraw %}` -* `https://glue.mysprykershop.com/catalog-search-suggestions?q={% raw %}{{{% endraw %}q_term{% raw %}}}{% endraw %}` -{% info_block infoBox %} -Make a request to `https://glue.mysprykershop.com/catalog-search?q={% raw %}{{{% endraw %}q_term{% raw %}}}{% endraw %}&include=abstract-products`. Make sure the response includes relationships to `abstract-products` resources. -{% endinfo_block %} - -{% info_block infoBox %} -Make a request to `https://glue.mysprykershop.com/catalog-search-suggestions?q={% raw %}{{{% endraw %}q_term{% raw %}}}{% endraw %}&include=abstract-products`. Make sure the response includes relationships to `abstract-products` resources. -{% endinfo_block %} - -_Last review date: Apr 10, 2019_ diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/documentationgeneratorrestapi-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/documentationgeneratorrestapi-feature-integration.md deleted file mode 100644 index f709c2ed771..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/documentationgeneratorrestapi-feature-integration.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: DocumentationGeneratorRestApi feature integration -description: This guide will navigate you through the process of installing and configuring the DocumentationGeneratorRestApi feature in Spryker OS. -last_updated: May 2, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/documentationreneratorrestapi-feature-integration -originalArticleId: 5b5f840a-86b9-4dfc-93dc-694436784745 -redirect_from: - - /v1/docs/documentationreneratorrestapi-feature-integration - - /v1/docs/en/documentationreneratorrestapi-feature-integration ---- - -## Install feature API -### Prerequisites -Install the required features: - -|Name | Version | -| --- | --- | -| Spryker Core|2018.12.0 | -| Glue Application| 2018.12.0| - -### 1) Install the required modules using Composer - -Run the following command to install the required modules: -`composer require spryker/documentation-generator-rest-api:"^1.2.0" spryker/documentation-generator-rest-api-extension:"^1.0.0" --update-with-dependencies` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module|Expected directory | -| --- | --- | -|`DocumentationGeneratorRestApi` | `vendor/spryker/documentation-generator-rest-api` | -|`DocumentationGeneratorRestApiExtension` | `vendor/spryker/documentation-generator-rest-api-extension` | - -### 2) Set up Transfer objects - -Run the following command to generate transfer changes: -`console transfer:generate` - -{% info_block infoBox "Verification" %} -Make sure that the following changes are present in transfer objects: -{% endinfo_block %} - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `PathMethodDataTransfer` | class | created | `src/Generated/Shared/Transfer/PathMethodDataTransfer` | -| `PathParameterTransfer` | class | created | `src/Generated/Shared/Transfer/PathParameterTransfer` | -| `PathSchemaDataTransfer` | class | created | `src/Generated/Shared/Transfer/PathSchemaDataTransfer` | -| `SchemaDataTransfer` | class | created | `src/Generated/Shared/Transfer/SchemaDataTransfer` | -| `SchemaPropertyTransfer` | class | created | `src/Generated/Shared/Transfer/SchemaPropertyTransfer` | -| `SecuritySchemeTransfer` | class | created | `src/Generated/Shared/Transfer/SecuritySchemeTransfer` | -| `PathMethodComponentTransfer` | class | created | `src/Generated/Shared/Transfer/PathMethodComponentTransfer` | -| `PathParameterComponentTransfer` | class | created | `src/Generated/Shared/Transfer/PathParameterComponentTransfer` | -| `PathRequestComponentTransfer` | class | created | `src/Generated/Shared/Transfer/PathRequestComponentTransfer` | -| `PathRequestComponentTransfer` | class | created | `src/Generated/Shared/Transfer/PathRequestComponentTransfer` | -| `PathResponseComponentTransfer` | class | created | `src/Generated/Shared/Transfer/PathResponseComponentTransfer` | -| `SchemaComponentTransfer` | class | created | `src/Generated/Shared/Transfer/SchemaComponentTransfer` | -| `SchemaPropertyComponentTransfer` | class | created | `src/Generated/Shared/Transfer/SchemaPropertyComponentTransfer` | -| `SecuritySchemeComponentTransfer` | class | created | `src/Generated/Shared/Transfer/SecuritySchemeComponentTransfer` | -| `PathAnnotationsTransfer` | class | created | `src/Generated/Shared/Transfer/PathAnnotationsTransfer` | -| `AnnotationTransfer` | class | created | `src/Generated/Shared/Transfer/AnnotationTransfer` | - -### 3) Set up behavior -#### Configure REST attributes transfers -**Implementation** -Update all the needed `RestAttributes` transfer objects definitions on the project level to add `restRequestParameter` to the properties that should be included in the request object for the endpoint. For example: -```xml - - - - - - - - -``` -`restRequestParameter` can accept one of the three values: - -* required - property will be marked as required in the request body schema. -* yes - property will be marked as optional in the request body schema. -* no - property will be skipped in the request body schema. - -By default, every property is considered as not needed and will be skipped in the schema definition. -Run the following command to generate the transfer changes: -`console transfer:generate` - -**Verification** -{% info_block infoBox %} -Make sure that the generated transfers have adefined property in metadata with the correct value, for example: -{% endinfo_block %} -**`src/Generated/Shared/Transfer/RestAccessTokensAttributesTransfer.php`** -```yaml -self::PASSWORD => [ - 'type' => 'string', - 'name_underscore' => 'password', - 'is_collection' => false, - 'is_transfer' => false, - 'rest_request_parameter' => 'required', - 'is_nullable' => false, -], -self::TOKEN_TYPE => [ - 'type' => 'string', - 'name_underscore' => 'token_type', - 'is_collection' => false, - 'is_transfer' => false, - 'rest_request_parameter' => 'no', - 'is_nullable' => false, -], -``` -#### Configure additional specification data for your actions -You may need to add annotations to the endpoint's controller actions to generate more accurate documentation. Annotations are written in the JSON format. For example: -``` -/** - * @Glue({ - * "getResource": { - * "summary": [ - * "Summary example." - * ], - * "parameters": [ - * { - * name: "Accept-Language", - * in: "header", - * }, - * { - * name: "X-Anonymous-Customer-Unique-Id", - * in: "header", - * required: true, - * description: "Guest customer unique ID" - * }, - * ], - * "responses": { - * "400": "Bad Response.", - * "404": "Item not found.", - * } - * } - * }) - * ... - */ -public function getAction(RestRequestInterface $restRequest) -``` - -The annotation object should consist of a top-level object with one property that represents the request method used. It can be one of these: - -* getCollection, getResource - for the GET requests -* post, patch, delete - respectively for the POST, PATCH, DELETE requests - -Currently supported annotation properties: - -* summary - summary of an endpoint. If not specified, summary will be generated from the resource type. -* parameters - parameters that can be passed with the request. (see https://swagger.io/specification/#parameterObject). -* responses - all the possible response codes and their descriptions for a given endpoint. -* responseClass - defines a custom transfer class that represents a response object (in cases when the request and response objects are different); FQCN needed. -* isEmptyResponse - should be set to true when a method does not have a response body (no need to set it in the delete methods as they have an empty response body by default) - -#### Enable console command -Activate the following plugin: - -| Plugin| Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `GenerateRestApiDocumentationConsole` | Registers the rest-api:generate:documentation console command. | None | `Spryker\Zed\DocumentationGeneratorRestApi\Communication\Console` | - -**`src/Pyz/Zed/Console/ConsoleDependencyProvider.php`** -```php -
- Make sure that the following module is installed: - -| Module | Expected Directory | -| --- | --- | -| `AlternativeProductsRestApi` | `vendor/spryker/alternative-products-rest-api` | -
- -## 2) Set up Behavior - -Activate the following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `AbstractAlternativeProductsResourceRoutePlugin` | Registers the abstract alternative products resource. | None | `Spryker\Glue\AlternativeProductsRestApi\Plugin\GlueApplication` | -| `ConcreteAlternativeProductsResourceRoutePlugin` | Registers the concrete alternative products resource. | None | `Spryker\Glue\AlternativeProductsRestApi\Plugin\GlueApplication` | - -**`src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php`** -```php - - src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php -```bash - namespace Pyz\Glue\GlueApplication; - -use Spryker\Glue\CategoriesRestApi\Plugin\CategoriesResourceRoutePlugin; -use Spryker\Glue\CategoriesRestApi\Plugin\CategoryResourceRoutePlugin; -use Spryker\Glue\GlueApplication\GlueApplicationDependencyProvider as SprykerGlueApplicationDependencyProvider; - -class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider -{ - /** - * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface[] - */ - protected function getResourceRoutePlugins(): array - { - return [ - new CategoriesResourceRoutePlugin(), - new CategoryResourceRoutePlugin(), - ]; - } -} - ``` -
- - Make sure the following endpoints are available: -* `http://mysprykershop.com/category-trees` -* `http://mysprykershop.com/category-nodes/{% raw %}{{{% endraw %}category_node_id{% raw %}}}{% endraw %}` - -_Last review date: Feb 26, 2019_ - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-customer-account-management-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-customer-account-management-feature-integration.md deleted file mode 100644 index c05fda4a493..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-customer-account-management-feature-integration.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: Glue API - Customer feature integration -description: This guide will navigate through the process of installing and configuring of the Customer API feature used in Spryker OS. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/customer-api-feature-integration -originalArticleId: b12600d8-4921-49d4-8409-eb4cdc02ce5e -redirect_from: - - /v1/docs/customer-api-feature-integration - - /v1/docs/en/customer-api-feature-integration -related: - - title: Managing Customers - link: docs/scos/dev/glue-api-guides/page.version/managing-customers/managing-customers.html ---- - -## Install feature API -### Prerequisites -Install the required features: - - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Customer Account Management | 2018.12.0 | - -## 1) Install the required modules -Run the following command to install the required modules: - -```bash -composer require spryker/customers-rest-api:"^1.6.2" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module| Expected Directory | -| --- | --- | -| `CustomersRestApiExtensions` | `vendor/spryker/customers-rest-api-extension` | -| `CustomersRestApi ` | `vendor/spryker/customers-rest-api` | - -## 2) Set up Database Schema and Transfer objects -Run the following commands to apply database changes and also generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following changes have occurred in the database: -{% endinfo_block %} - -| Transfer | Type | Event | -| --- | --- | --- | -|`spy_customer_address.uuid` | column | created | -| `spy_customer_address.spy_customer_address-unique-uuid` | index| created | - -{% info_block infoBox %} -Make sure that the following changes have occurred in transfer objects: -{% endinfo_block %} - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `Address.uuid` |column |created | `src/Generated/Shared/Transfer/Address` | -| `RestCustomersAttributes` |class | created |`src/Generated/Shared/Transfer/RestCustomersAttributes` | -|`RestCustomersResponseAttributes` |class | created | `src/Generated/Shared/Transfer/RestCustomersResponseAttributes` | -| `RestCustomersRegisterAttributes` | class|created | `src/Generated/Shared/Transfer/RestCustomersRegisterAttributes` | -| `RestAddressAttributes` | class| created| `src/Generated/Shared/Transfer/RestAddressAttributes` | -| `RestCustomerPasswordAttributes`| class| created| `src/Generated/Shared/Transfer/RestCustomerPasswordAttributes`| -|`RestCustomerForgottenPasswordAttributes` | class | created | `src/Generated/Shared/Transfer/RestCustomerForgottenPasswordAttributes` | - -## 3) Set up behavior -### Enable console command -Register the following console command in `ConsoleDependencyProvider`: - -```php - ```console list```
Make sure that `customer-addresses:uuid:generate appears` in the list. -{% endinfo_block %} - -### Migrate data in database -Run the following command to generate the UUIDs for all the existing records in the `spy_customer_address` table: - -```bash -console customer-addresses:uuid:generate -``` - -{% info_block infoBox "Verification" %} -Make sure that the `uuid` field is filled for all the records in the `spy_customer_address` table. You can run the following SQL query and make sure that the result is 0 records.
```select count(* -{% endinfo_block %} from spy_customer_address where uuid is NULL;```) - -{% info_block infoBox "Verification" %} -Make sure that the `uuid` field is filled with all the records from the `spy_wishlist` table. You can run the following SQL query and make sure that the result is 0 records.
```select count(* -{% endinfo_block %} from spy_wishlist where uuid is NULL;```) - -### Enable resources and relationships -Activate the following plugins: - - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `SetCustomerBeforeActionPlugin.uuid` | Sets customer data to session.| It is expected that the `user` field will be set in the REST requests. |`Spryker\Glue\CustomersRestApi\Plugin` | -| `CustomersResourceRoutePlugin` |Registers the `customers` resource. | None | `Spryker\Glue\CustomersRestApi\Plugin` | -| `AddressesResourceRoutePlugin` | Registers the `addresses` resource. |None | `Spryker\Glue\CustomersRestApi\Plugin` | -| `CustomerForgottenPasswordResourceRoutePlugin`| Registers the `customer-forgotten-password`resource. | None | `Spryker\Glue\CustomersRestApi\Plugin` | -| `CustomerRestorePasswordResourceRoutePlugin` | Registers the `customer-restore-password`resource. | None | `Spryker\Glue\CustomersRestApi\Plugin` | -|`CustomerPasswordResourceRoutePlugin` | Registers the `customer-password`resource. | None |`Spryker\Glue\CustomersRestApi\Plugin` | -| `CustomersToAddressesRelationshipPlugin` | Adds the `addresses` resource as a relationship to the `customers` resource. | None | `Spryker\Glue\CustomersRestApi\Plugin` | - -
- src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - - -```php - -
- -**Verification** -{% info_block infoBox %} -Make sure that the following endpoints are available: -{% endinfo_block %} - -* `https://glue.mysprykershop.com/customers` - -* `https://glue.mysprykershop.com/addresses` - -* `https://glue.mysprykershop.com/customer-password` - -* `https://glue.mysprykershop.com/customer-forgotten-password` - -* `https://glue.mysprykershop.com/customer-restore-password` - -{% info_block infoBox %} -Send a request to `https://glue.mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}?include=addresses`. Make sure that the response includes relationships to the `addresses` resources.
*The Customer with the given ID should have at least one address.* -{% endinfo_block %} - - - -[//]: # (by Karoly Gerner and Volodymyr Volkov) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-glue-application-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-glue-application-feature-integration.md deleted file mode 100644 index 2839ce445a4..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-glue-application-feature-integration.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: Glue API - Glue application feature integration -description: This guide will navigate you through the process of installing and configuring the Glue Application feature in Spryker OS. -last_updated: Jul 29, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/glue-application-feature-integration -originalArticleId: dc2179bf-ffa7-49b2-8ca2-ce6565fbd767 -redirect_from: - - /v1/docs/glue-application-feature-integration - - /v1/docs/en/glue-application-feature-integration ---- - -## Install feature API - -### Prerequisites - -To start feature integration, review and install the necessary features: -|Name|Version| -|---|---| -|Spryker Core|{{page.version}}| - -### 1) Install the required modules using Composer - -Run the following command to install the required modules: -```yaml -composer require spryker/glue-application:"^1.9.1" spryker/glue-application-extension:"^1.1.0" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} - -Make sure that the following modules are installed: - -|Module|Expected Directory| -|---|---| -|`GlueApplication`|`vendor/spryker/glue-application`| -|`GlueApplicationExtension`|`vendor/spryker/glue-application-extension`| - -{% endinfo_block %} - -### 2) Set up Configuration - -{% info_block infoBox "Info" %} -`GLUE_APPLICATION_DOMAIN` should be configured for every domain used in project. -{% endinfo_block %} - -Add the required parameters to `config/Shared/config_default.php`: -```php -$config[GlueApplicationConstants::GLUE_APPLICATION_DOMAIN] = 'http://glue.example.com'; -$config[GlueApplicationConstants::GLUE_APPLICATION_REST_DEBUG] = false; -``` - -### 3) Set up Transfer objects - -Run the following command to generate transfer objects: -```yaml -console transfer:generate -``` - -{% info_block infoBox "Verification" %} -Make sure that the following changes are present in transfer objects: -{% endinfo_block %} -|Transfer|Type|Event|Path| -|---|---|---|---| -|`RestPageOffsetsTransfer`|class|created|`src/Generated/Shared/Transfer/RestPageOffsetsTransfer`| -|`RestErrorMessageTransfer`|class|created|`src/Generated/Shared/Transfer/RestErrorMessageTransfer`| -|`RestErrorCollectionTransfer`|class|created|`src/Generated/Shared/Transfer/RestErrorCollection`| -|`TransferRestVersionTransfer`|class|created|`src/Generated/Shared/Transfer/RestVersionTransfer`| - -### 4) Set up Behavior - -#### Set up front controller - -**Implementation** -Activate the following plugins: -|Plugin|Specification|Prerequisites|Namespace| -|---|---|---|---| -|`GlueResourceBuilderService`|Registers the resource builder service in the Glue application.|None|`Spryker\Glue\GlueApplication\Plugin\Rest\ServiceProvider`| -|`GlueApplicationServiceProvider`|Registers the pimple plugin, controller resolver and configures the debug mode in the Glue application.|None|`Spryker\Glue\GlueApplication\Plugin\Rest\ServiceProvider`| -|`SessionServiceProvider`|Registers the session services in the Glue application.|None|`Silex\Provider`| -|`ServiceControllerServiceProvider`|Registers the service controller resolver in the Glue application.|None|`Silex\Provider`| -|`GlueServiceProviderPlugin`|Registers the `onKernelController` event listeners in the Glue application.|None|`Spryker\Glue\GlueApplication\Plugin\Rest`| -|`GlueRoutingServiceProvider`|Registers the url matcher and router services in the Glue application.|None|`Spryker\Glue\GlueApplication\Plugin\Rest\ServiceProvider`| - -Create a GlueBootstrap file for your project and register all the needed plugins: -**`src/Pyz/Glue/GlueApplication/Bootstrap/GlueBootstrap.php`** -```php -Install GLUE -* Enable GLUE - - -## 1. Installing GLUE - -GLUE infrastructure is shipped with the following modules: - -| Module |Description | -| --- | --- | -| [GlueApplication](https://github.com/spryker/glue-application) | Provides API infrastructure for Spryker features.| -| [GlueApplicationExtension](https://github.com/spryker/glue-application-extension) |Provides extension point/plugin interfaces for the Glue Application module. | -| [AuthRestApi](https://github.com/spryker/auth-rest-api) (optional)| Provides API endpoints to obtain an authentication token to use for subsequent requests. | - -To install it, you need to do the following: -{% info_block warningBox "Note" %} -Spryker Shop Suite contains GLUE out of the box. If your project has the latest Shop Suite master merged, you can proceed directly to step 2. Enable GLUE. -{% endinfo_block %} - -1. Install the necessary modules using composer: - - ```yaml - composer update "spryker/*" "spryker-shop/*" --update-with-dependencies - composer require spryker/glue-application --update-with-dependencies - ``` - - 2. Add a Front Controller for GLUE: - * In the directory where your code is installed, locate directory public and create subdirectory Glue in it. - * Create file index.php in the Glue directory with the following content: - -```php -initialize(); - -$bootstrap = new GlueBootstrap(); -$bootstrap - ->boot() - ->run(); -``` - -3. Create GLUE application bootstrap: - * In the `src/Pyz` directory of your Spryker code installation, create folder Glue, then create subfolder `GlueApplication/Bootstrap` in it. - * In the GlueApplication/Bootstrap folder, create file GlueBootstrap.php with the following content: - -```php -application - ->register(new GlueResourceBuilderService()) - ->register(new GlueApplicationServiceProvider()) - ->register(new SessionServiceProvider()) - ->register(new ServiceControllerServiceProvider()) - ->register(new GlueServiceProviderPlugin()) - ->register(new GlueRoutingServiceProvider()); - } -} -``` -4. Create GLUE dependency provider: - - In the `src/Pyz/GlueApplication` directory of your Spryker code installation, create file `GlueApplicationDependencyProvider.php` and add the following code: -```php -'; -$config[GlueApplicationConstants::GLUE_APPLICATION_REST_DEBUG] = false; -``` -where **** is the URL domain you want to use for GLUE. If you want to use the default domain of the Spryker shop, you can leave it empty. -{% info_block infoBox "Tip" %} -If you want to enable GLUE application debugging, set the `GLUE_APPLICATION_REST_DEBUG` variable to true. -{% endinfo_block %} -6. Enable customer authentication via OAuth tokens (optional) - -GLUE provides the possibility to authenticate customer users with the help of OAuth tokens. If you are going to use customer authentication, you will also need to perform the following additional steps: - -* Install the `AuthRestApi` and `OauthCustomerConnector` modules: -```yaml -composer require spryker/auth-rest-api spryker/oauth-customer-connector --update-with-dependencies -``` - -* Add OAuth plugins to the GLUE dependency provider. To do this, open file `src/Pyz/GlueApplication/GlueApplicationDependencyProvider.php` and make the following changes: -Add use closes for the required OAuth plugins: -```php -... -namespace Pyz\Glue\GlueApplication; - -use Spryker\Glue\AuthRestApi\Plugin\AccessTokensResourceRoutePlugin; -use Spryker\Glue\AuthRestApi\Plugin\AccessTokenValidatorPlugin; -use Spryker\Glue\AuthRestApi\Plugin\FormatAuthenticationErrorResponseHeadersPlugin; -use Spryker\Glue\AuthRestApi\Plugin\RefreshTokensResourceRoutePlugin;... -``` -Add OAuth resource plugins: -```php -protected function getResourceRoutePlugins(): array -{ - return [ - new AccessTokensResourceRoutePlugin(), - new RefreshTokensResourceRoutePlugin(), - ]; -} -``` -Add token validation plugin: -```php -protected function getValidateRestRequestPlugins(): array -{ - return [ - new AccessTokenValidatorPlugin(), - ]; -} -``` -Add error response plugin: -```php -protected function getFormatResponseHeadersPlugins(): array -{ - return [ - new FormatAuthenticationErrorResponseHeadersPlugin(), - ]; -} -``` - -* Add OAuth dependency provider. To do this, create file `Pyz/Zed/Oauth/OauthDependencyProvider.php` as follows: -```php - 2. Enabling GLUE -To be able to use GLUE in your project, you need to configure a Nginx host to serve REST API requests: - -**1. Create Nginx VHOST configuration** - -```yaml -sudo nano /etc/nginx/sites-enabled/DE_development_glue -``` -In the _nano_ console that opens, paste the following: -```php -server { - # Listener for production/staging - requires external LoadBalancer directing traffic to this port - listen 10001; - - # Listener for testing/development - one host only, doesn't require external LoadBalancer - listen 80; - - server_name ~^glue\\.de\\..+\\.local$; - - keepalive_timeout 0; - access_log /data/logs/development/glue-access.log extended; - - root /data/shop/development/current/public/Glue; - - set $application_env development; - set $application_store DE; - include "spryker/zed.conf"; -} -``` -Restart nginx -```yaml -sudo /etc/init.d/nginx restart -``` -**2. Change the machine hosts configuration** -```yaml -sudo nano /etc/hosts -``` -add the following line to the end of the file: -``` -ip glue.de.project-name.local -``` -After performing this change, you should be able to access `https://glue.mysprykershop.com` with a 404 error and JSON response indicating that resource is not found. - -**3. Set correct OAuth key permissions** - -If you are using the OAuth module for user authentication, change permissions for the OAuth keys: -```yaml -chmod 660 config/Zed/dev_only_public.key -chmod 660 config/Zed/dev_only_private.key -``` -## Integrate REST API resources - -After installing and enabling GLUE, you can integrate various REST API resources with it. It is not required to integrate all modules for REST API to work. You can integrate only the modules you need. - -### Login API -Provides the possibility to authenticate customer users. -The API is provided by the following module: -|Module|Description| -|---|---| -|[AuthRestApi](https://github.com/spryker/auth-rest-api)|Provides API endpoints to obtain an authentication token to use for subsequent requests.| -Installation steps: see **1.6. Enable customer authentication via OAuth tokens**. - -### Registration API -Provides the possibility to register new customers. -The API is provided by the following module: -|Module|Description| -|---|---| -|[CustomersRestApi](https://github.com/spryker/customers-rest-api)|Provides API endpoints to manage customers.| - -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/customers-rest-api --update-with-dependencies -``` -2. Add a resource route plugin to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new CustomersResourceRoutePlugin(), - ]; - } -``` -3. Run the following command: -```yaml -console transfer:generate -``` - -### Products API -Provides endpoints to retrieve information about products. -The API is provided by the following modules: - - |Module |DescriptionEndpoints Provided| - |---|---|---| -|[ProductsRestApi](https://github.com/spryker/products-rest-api)|Provides REST access to products.|/`abstract-products`
/`concrete-products`| -|[ProductAvailabilitiesRestApi](https://github.com/spryker/product-availabilities-rest-api)|Provides API endpoints to get abstract and concrete product availability.|`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-availabilities`
/`concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-availabilities`| -|[ProductsProductAvailabilitiesResourceRelationship](https://github.com/spryker/products-product-availabilities-resource-relationship)|Provides relationship between products (abstract and concrete) and product availabilities resources.|-| -|[ProductPricesRestApi](https://github.com/spryker/product-prices-rest-api)|Provides API endpoints to retrieve abstract and concrete product prices.|`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-prices`
/`concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-prices`| -|[ProductsProductPricesResourceRelationship](https://github.com/spryker/products-product-prices-resource-relationship)|Provides relationship between products (abstract and concrete) and product prices resources.|-| -|[ProductTaxSetsRestApi](https://github.com/spryker/product-tax-sets-rest-api)|Provides API endpoints to retrieve product tax sets.|`/abstract-products/{% raw %}{{{% endraw %}SKU{% raw %}}}{% endraw %}/product-tax-sets`| -|[ProductsProductTaxSetsResourceRelationship](https://github.com/spryker/products-product-tax-sets-resource-relationship)|Provides relationship between abstract products and tax sets resources.|-| -|[ProductImageSetsRestApi](https://github.com/spryker/product-prices-rest-api)|Provides API endpoints to retrieve product image sets.|`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-image-sets`
`/concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-image-sets`| - -You can chose whether to install all modules of the API to retrieve full Products API functionality, or install any of the modules individually to get only the endpoints you need. -{% info_block infoBox "Relationship Modules" %} -Relationship modules provide relationship between products and related entities (e.g. between products and the tax sets available for them). This means that, when a module is installed, a request for information on a certain product will also return information on the related resource by default. If the module is not installed, you need to query the related resource explicitly. In other words, if the `ProductsProductTaxSetsResourceRelationship` module is installed, a query for an abstract product will also return full data of the tax sets related to them. If it is not installed, you will need to query the `/abstract-products/{% raw %}{{{% endraw %}SKU{% raw %}}}{% endraw %}/product-tax-sets` explicitly. -{% endinfo_block %} - -Installation steps: -**`ProductsRestApi`**: -1. Install the module using Composer: -```yaml -composer require spryker/products-rest-api --update-with-dependencies -``` - -2. Add resource route plugins to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new AbstractProductsResourceRoutePlugin(), - new ConcreteProductsResourceRoutePlugin(), - ]; - } - ``` -3. Run the following command: - ```bash -console transfer:generate - ``` -**`ProductAvailabilitiesRestApi`**: -1. Install the module using Composer: - ```bash -composer require spryker/product-availabilities-rest-api --update-with-dependencies - ``` -2. Add resource route plugins to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new AbstractProductAvailabilitiesRoutePlugin(), // Abstract product avaialbilities - new ConcreteProductAvailabilitiesRoutePlugin(), // Concrete product avaialbilities - ]; - } - ``` -3. Run the following command: -```bash -console transfer:generate -``` -**`ProductsProductAvailabilitiesResourceRelationship`**: -1. Install the module using Composer: -```bash -composer require spryker/products-product-availabilities-resource-relationship --update-with-dependencies -``` -2. Add resource route plugins to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRelationshipPlugins()`: -```php -protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface - { - ... - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new ProductsProductAvailabilitiesResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } - ``` - -### Stores API -Provides API endpoints to retrieve current store configuration. -The API is provided by the following module: -|Modules|Description| -|---|---| -|[StoresRestApi](https://github.com/spryker/stores-rest-api)|Provides REST API endpoints to stores.| -Installation steps: -1. Install the module using Composer: -```bash -composer require spryker/stores-rest-api --update-with-dependencies -``` -2. Add resource route plugin to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new StoresResourceRoutePlugin(), - ]; - } -``` -3. Run the following command: -```bash -console transfer:generate -``` - -### Search API -Provides the possibility to perform searches and retrieve search suggestions via the REST API. -The API is provided by the following module: -|Modules|Description| -|---|---| -|[CatalogSearchRestApi](https://github.com/spryker/catalog-search-rest-api)|Provides REST API endpoints to search products and search suggestions.| - -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/catalog-search-rest-api --update-with-dependencies -``` -2. Add plugins for catalog search and search suggestions to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new SearchResourceRoutePlugin(), - new SuggestionsResourceRoutePlugin(), - ]; - } -``` -3. Run the following command: -```yaml -console transfer:generate -``` -4. If your store also provides the Products API, you need to add relationship between the Search and Products APIs: -```yaml -composer require spryker/catalog-search-products-resource-relationship --update-with-dependencies -``` -After this, add the products resource relation plugins to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRelationshipPlugins()`: -```php -protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH, - new CatalogSearchAbstractProductsResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH_SUGGESTIONS, - new CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -``` - -### Category API -Provides the possibility to retrieve the category tree and category nodes. -The API is provided by the following module: -|Modules|Description| -|---|---| -|[CategoriesRestApi](https://github.com/spryker/categories-rest-api)|Provides REST API endpoints to fetch category tree and category nodes by node ID.| -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/categories-rest-api --update-with-dependencies -``` -2. Add plugins for category-trees and category-nodes resources to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new CategoriesResourceRoutePlugin(), - new CategoryResourceRoutePlugin(), - ]; - } - ``` -3. Run the following command: -```yaml -console transfer:generate -``` - -### Carts API -Provides the possibility to manage customer carts and cart items. -The API is provided by the following module: -|Modules|Description| -|---|---| -|[CartsRestApi](https://github.com/spryker/carts-rest-api)|Provides REST API endpoints to create, get, delete carts for registered customers (using persistent storage), as well as manage cart items.| -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/cart-items-products-relationship:"^1.0.0" spryker/carts-rest-api:"^1.0.0" --update-with-dependencies -``` -2. Add carts and cart items resource route plugin to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ... - new CartsResourceRoutePlugin(), - new CartItemsResourceRoutePlugin(), - ]; - } - ``` -3. Run Propel install to add the UUID functionality: -```yaml -console propel:install -``` -4. Generate Propel transfer objects: -```yaml -console transfer:generate -``` -5. Run the following command to update all existing customers carts with a UUID value. -```yaml -console quote:uuid:generate -``` - -### Product Labels API -Provides the possibility to retrieve product labels. -The API is provided by the following module: -|Modules|Description|Endpoints Provided| -|---|---|---| -|[ProductLabelsRestApi](https://github.com/spryker/product-labels-rest-api)|Provides REST API endpoints for product labels.|`/product-labels/{% raw %}{{{% endraw %}label-id{% raw %}}}{% endraw %}`| - -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/product-labels-rest-api --update-with-dependencies -``` -2. Add plugin declaration to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php:getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ..., - new ProductLabelsResourceRoutePlugin(), - ..., - ``` -3. Run the following command: -```yaml -console transfer:generate -``` - -**Retrieving Labels for Products** -Out of the box, the API provides the possibility to access labels by their ID. If you also want to retrieve labels assigned to a product together with product information, you need to install an additional relationship module: -1. Install the module using Composer: -```yaml -composer require spryker/product-labels-rest-api --update-with-dependencies -``` -2. Add the products resource relation plugin to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRelationshipPlugins()`: -```php -protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new ProductLabelsRelationshipByResourceIdPlugin() - ); - - return $resourceRelationshipCollection; - } -``` -3. Run the following command: -```yaml -console transfer:generate -``` - -### Checkout API -Provides the possibility to place orders and retrieve checkout information. -The API is provided by the following module: -|Modules|Description|Endpoints Provided| -|---|---|---| -|CheckoutRestApi|||  -Installation steps: -**Placing an Order** -1. Install the module using Composer: -```php -composer require spryker/product-labels-rest-api --update-with-dependencies -``` -2. Add plugin declaration to `src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php:getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ..., - new CheckoutResourcePlugin(), - ..., -``` -3. Add relationship to the order to `src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php:getResourceRelationshipPlugins()`: -```php -protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection - ): ResourceRelationshipCollectionInterface { - ... - $resourceRelationshipCollection->addRelationship( - CheckoutRestApiConfig::RESOURCE_CHECKOUT, - new OrderRelationshipByOrderReferencePlugin() - ); - ... -``` -**Retrieving Checkout Data** -1. Install the module using Composer: -```yaml -composer require spryker/product-labels-rest-api --update-with-dependencies -``` -2. Add plugin declaration to `src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php:getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array - { - return [ - ..., - new CheckoutDataResourcePlugin(), - ..., -``` - -### Customers API -Provides the possibility to retrieve product labels. -The API is provided by the following module: -|Modules|Description|Endpoints Provided| -|---|---|---| -|CustomersRestApi|Provides endpoints that allow you to manage customers.|/customers
/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}
/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses
/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}address_id{% raw %}}}{% endraw %}| -Installation steps: -1. Install the module using Composer: -```yaml -composer require spryker/customers-rest-api --update-with-dependencies -composer require spryker/wishlists-rest-api --update-with-dependencies -``` -2. Add plugin declaration to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRoutePlugins()`: -```php -protected function getResourceRoutePlugins(): array -{ - return [ - ... - new CustomersResourceRoutePlugin(), - new AddressesResourceRoutePlugin(), - ]; -} -``` -3. Add `CustomersToAddressesRelationshipPlugin` and `WishlistRelationshipByResourceIdPlugin` to `/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php::getResourceRelationshipPlugins()`: -```php -protected function getResourceRelationshipPlugins( - ResourceRelationshipCollectionInterface $resourceRelationshipCollection -): ResourceRelationshipCollectionInterface { - $resourceRelationshipCollection->addRelationship( - CustomersRestApiConfig::RESOURCE_CUSTOMERS, - new CustomersToAddressesRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - CustomersRestApiConfig::RESOURCE_CUSTOMERS, - new WishlistRelationshipByResourceIdPlugin() - ); - return $resourceRelationshipCollection; -} -``` -4. Run the following command: -```yaml -console transfer:generate -console propel:install -console customer-addresses:uuid:generate -``` - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-feature-integration.md deleted file mode 100644 index 63cf97cbd93..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-feature-integration.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Glue API - Product feature integration -description: This guide will navigate you through the process of installing and configuring the Product API feature in Spryker OS. -last_updated: May 2, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-api-feature-integration-201812 -originalArticleId: 010d45ee-40e1-4ff4-82fe-3551786af605 -redirect_from: - - /v1/docs/product-api-feature-integration-201812 - - /v1/docs/en/product-api-feature-integration-201812 ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Product Management | 2018.12.0 | - -### 1) Install the required modules using Composer - -Run the following command to install the required modules: -`composer require spryker/products-rest-api:"^2.2.3" --update-with-dependencies` - -{% info_block infoBox "Verification" %} -Make sure that the following module is installed: -{% endinfo_block %} - -| Module | Expected directory | -| --- | --- | -| `ProductsRestApi` | `vendor/spryker/products-rest-api` | - -### 2) Set up Database Schema and Transfer objects -**Implementation** -Run the following commands to apply database changes and generate entity and transfer changes: -``` -console transfer:generate -console propel:install -console transfer:generate -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following modules are installed: -{% endinfo_block %} -|Transfer | Type | Event |Path | -| --- | --- | --- | --- | -| `ConcreteProductsRestAttributesTransfer`| class | created | `src/Generated/Shared/Transfer/ConcreteProductsRestAttributesTransfer` | -|`AbstractProductsRestAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/AbstractProductsRestAttributesTransfer`| - -{% info_block infoBox %} -Make sure that `SpyProductAbstractStorage` and `SpyProductConcreteStorage` are extended by synchronization behavior with these methods: -{% endinfo_block %} - -|Entity | Type| Event | Path | Methods | -| --- | --- | --- | --- | --- | -| `SpyProductAbstractStorage` |class | extended | `src/Orm/Zed/ProductStorage/Persistence/Base/SpyProductAbstractStorage` |
  • `syncPublishedMessageForMappings()`
  • `syncUnpublishedMessageForMappings()`
| -| `SpyProductConcreteStorage` |class | extended | `src/Orm/Zed/ProductStorage/Persistence/Base/SpyProductConcreteStorage` |
  • `syncPublishedMessageForMappings()`
  • `syncUnpublishedMessageForMappings()`
| - -### 3) Set up behavior -#### Reload data to storage - -Run the following commands to reload abstract and product data to storage. -``` -console event:trigger -r product_abstract -console event:trigger -r product_concrete -``` - -{% info_block infoBox "Verification" %} -Make sure that there are data in Redis with these keys: -{% endinfo_block %} -``` -kv:product_abstract:{% raw %}{{{% endraw %}store_name{% raw %}}}{% endraw %}:{% raw %}{{{% endraw %}locale_name{% raw %}}}{% endraw %}:sku:{% raw %}{{{% endraw %}sku_product_abstract{% raw %}}}{% endraw %} -kv:product_concrete:{% raw %}{{{% endraw %}locale_name{% raw %}}}{% endraw %}:sku:{% raw %}{{{% endraw %}sku_product_concrete{% raw %}}}{% endraw %} -``` - -#### Enable resources -**Implementation** -Activate the following plugin: - -| Plugin | Specification | Prerequisites | Namespace| -| --- | --- | --- | --- | -| `AbstractProductsResourceRoutePlugin` | Registers an abstract product resource. | None | `Spryker\Glue\ProductsRestApi\Plugin` | -|`ConcreteProductsResourceRoutePlugin`|Registers an concrete product resource.|None|`Spryker\Glue\ProductsRestApi\Plugin`| - -```php -addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new AbstractProductsProductImageSetsResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS, - new ConcreteProductsProductImageSetsResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following endpoints are available: -{% endinfo_block %} - -* `http://mysprykershop.com//abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}/abstract-product-image-sets` -* `http://mysprykershop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}/concrete-product-image-sets` - -{% info_block infoBox %} -Make the request to `http://mysprykershop.com/abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}?include=abstract-product-image-sets`. The abstract product with the given SKU should have at least one image set. Make sure that the response includes relationships to the `abstract-product-image-sets` resources. -{% endinfo_block %} -{% info_block infoBox %} -Make the request to `http://mysprykershop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}?include=abstract-product-image-sets`. The concrete product with the given SKU should have at least one image set. Make sure that the response includes relationships to the `concrete-product-image-sets` resources. -{% endinfo_block %} - -_Last review date: Feb 21, 2019_ - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-labels-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-labels-feature-integration.md deleted file mode 100644 index 3498ea1fccf..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-labels-feature-integration.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Glue API - Product Labels feature integration -description: This guide will navigate you through the process of installing and configuring the Product Labels API feature in Spryker OS. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-labels-api-feature-integration -originalArticleId: 327e406f-7874-49c7-ba1a-fd20d76120e0 -redirect_from: - - /v1/docs/product-labels-api-feature-integration - - /v1/docs/en/product-labels-api-feature-integration ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Product Management | 2018.12.0 | -| Product Label | 2018.12.0 | -| ProductsRestApi | 2.2.3 | - -## 1) Install the required modules using Composer - -Run the following command to install the required modules: - -```bash -composer require spryker/product-labels-rest-api:"^1.0.1" --update-with-dependencies -``` - -{% info_block warningBox “Verification” %} - -Make sure that the following module is installed: - -| Module | Expected Directory | -| --- | --- | -| `ProductLabelsRestApi` | `vendor/spryker/product-labels-rest-api` | - -{% endinfo_block %} - -## 2) Set up Transfer Objects - -Run the following commands to generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox “Verification” %} - -Make sure that the following changes are present in transfer objects: - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `RestProductLabelsAttributesTransfer` | class | created | ` src/Generated/Shared/Transfer/RestProductLabelsAttributesTransfer` | -{% endinfo_block %} - -## 3) Set up Behavior -### Enable resources and relationships - -**Implementation** - -Activate the following plugin: - -| Plugin | Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `ProductLabelsRelationshipByResourceIdPlugin` | Adds the product labels resource as a relationship to an abstract product resource. | None | `Spryker\Glue\ProductLabelsRestApi\Plugin\GlueApplication\ProductLabelsRelationshipByResourceIdPlugin` | -| `ProductLabelsResourceRoutePlugin` |Registers the product labels resource. | None | `Spryker\Glue\ProductLabelsRestApi\Plugin\GlueApplication\ProductLabelsResourceRoutePlugin` | - -
-src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php -addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new ProductLabelsRelationshipByResourceIdPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -
-
- -{% info_block infoBox %} - -Make sure the following endpoint is available: `http://mysprykershop.com/product-labels/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}` - -{% endinfo_block %} - -{% info_block infoBox %} - -Make a request to `http://mysprykershop.com/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}?include=product-labels`. An abstract product with the given SKU should have at least one assigned product label. Make sure the response includes relationships to the `product-labels` resources. - -{% endinfo_block %} - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-price-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-price-feature-integration.md deleted file mode 100644 index 924ac1cbe2b..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-product-price-feature-integration.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Glue API - Product Price feature integration -description: This guide will navigate you through the process of installing and configuring the Product Price API feature in Spryker OS. -last_updated: May 2, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-price-api-feature-integration -originalArticleId: 734dc840-f523-469c-b986-2e0b2a5ec83f -redirect_from: - - /v1/docs/product-price-api-feature-integration - - /v1/docs/en/product-price-api-feature-integration ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Product Management | 2018.12.0 | -| Price | 2018.12.0 | -| ProductsRestApi | 2.2.3 | - -## 1) Install the required modules - -Run the following commands to install the required modules: -```yaml -composer require spryker/product-prices-rest-api:"^1.1.0" --update-with-dependencies -composer require spryker/products-product-prices-resource-relationship:"^1.0.0" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module | Expected Directory | -| --- | --- | -| `ProductPricesRestApi` | `vendor/spryker/product-prices-rest-api` | -|`ProductsProductPricesResourceRelationship`|`vendor/spryker/products-product-prices-resource-relationship`| - -## 2) Set up Transfer object - -Run the following command to generate transfer changes: -```yaml -console transfer:generate -``` - -{% info_block infoBox "Verification" %} -Make sure that the following changes are present in the transfer objects: -{% endinfo_block %} - -| Transfer |Type | Event | Path | -| --- | --- | --- | --- | -| `RestProductPriceAttributesTransfer` | column | created | `src/Generated/Shared/Transfer/RestProductPriceAttributesTransfer` | -| `RestProductPricesAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestProductPricesAttributesTransfer` | -| `RestCurrencyTransfer` | class | created | `src/Generated/Shared/Transfer/RestCurrencyTransfer` | - -## 3) Set up behavior -### Enable resources and relationships -**Implementation** -Activate the following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `AbstractProductPricesRoutePlugin` | Registers an abstract product prices resource. | None | `Spryker\Glue\ProductPricesRestApi\Plugin` | -| `ConcreteProductPricesRoutePlugin` | Registers a concrete product prices resource. | None | `Spryker\Glue\ProductPricesRestApi\Plugin` | -| `AbstractProductsProductPricesResourceRelationshipPlugin` | Adds an abstract product prices resource as a relationship to an abstract product resource. | None | `Spryker\Glue\ProductsProductPricesResourceRelationship\Plugin` | -| `ConcreteProductsProductPricesResourceRelationshipPlugin` | Adds a concrete product prices resource as a relationship to a concrete product resource. | None | `Spryker\Glue\ProductsProductPricesResourceRelationship\Plugin` | - -**`src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php`** -```php -addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new AbstractProductsProductPricesResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS, - new ConcreteProductsProductPricesResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following endpoints are available: -{% endinfo_block %} - -* `http://mysprykershop.comop.com/abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}/abstract-product-prices` -* `http://mysprykershop.comop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}/concrete-product-prices` -{% info_block infoBox %} -Make the request to `http://mysprykershop.comop.com/abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}?include=abstract-product-prices`. Make sure that the response includes relationships to the `abstract-product-prices` resources. -{% endinfo_block %} -{% info_block infoBox %} -Make the request to `http://mysprykershop.comop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}?include=concrete-product-prices`. Make sure that the response includes relationships to the `concrete-product-prices` resources. -{% endinfo_block %} - -_Last review date: Feb 21, 2019_ diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-rest-schema-validation-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-rest-schema-validation-feature-integration.md deleted file mode 100644 index 85f1f6cf977..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-rest-schema-validation-feature-integration.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Glue API - REST Schema Validation feature integration -description: This guide will navigate you through the process of installing and configuring the REST Schema Validation feature in Spryker OS. -last_updated: Oct 28, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/rest-schema-validation-feature-integration-v2018110 -originalArticleId: c2b05043-130d-4ff4-b6e4-9d11021f79b9 -redirect_from: - - /v1/docs/rest-schema-validation-feature-integration-v2018110 - - /v1/docs/en/rest-schema-validation-feature-integration-v2018110 ---- - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-wishlist-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-wishlist-feature-integration.md deleted file mode 100644 index cd027c0192c..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/glue-api-wishlist-feature-integration.md +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: Glue API - Wishlist feature integration -description: This guide will navigate you through the process of installing and configuring the Wishlist API feature in Spryker OS. -last_updated: May 19, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/wishlist-api-feature-integration -originalArticleId: bb8921e2-a8cd-4fe7-97f5-cdbd3a990f0d -redirect_from: - - /v1/docs/wishlist-api-feature-integration - - /v1/docs/en/wishlist-api-feature-integration ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core| 2018.12.0 | -| Product Management | 2018.12.0| -| Wishlist | 2018.12.0 | -|ProductsRestApi |2.2.3 | - -### 1) Install the required modules using Composer -Run the following commands to install the required modules: - -```bash -composer require spryker/wishlists-rest-api:"^1.3.0" --update-with-dependencies -composer require spryker/wishlist-items-products-resource-relationship:"^1.0.0" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module | Expected directory | -| --- | --- | -|`WishlistsRestApi` | `vendor/spryker/wishlists-rest-api` | -| `WishlistItemsProductsResourceRelationship` |`vendor/spryker/wishlist-items-products-resource-relationship` | - -### 2) Set up Database Schema and Transfer objects -Run the following commands to apply database changes, and also generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following changes have occurred in the database: -{% endinfo_block %} - -| Database entity | Type | Event | -| --- | --- | --- | -| `spy_wishlist.uuid` | column |added | - -{% info_block infoBox %} -Make sure that the following changes have occurred in transfer objects: -{% endinfo_block %} - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `RestWishlistItemsAttributesTransfer` | class| created |`src/Generated/Shared/Transfer/RestWishlistItemsAttributesTransfer` | -| `RestWishlistsAttributesTransfer` | class | created |`src/Generated/Shared/Transfer/RestWishlistsAttributesTransfer` | -| `WishlistTransfer.uuid` | property |added | `src/Generated/Shared/Transfer/WishlistTransfer` | - -### 3) Set up behavior -#### Generate UUIDs for existing whishlist records that have no UUID -Run the following command: - -```bash -console wishlists:uuid:update -``` - -{% info_block infoBox "Verification" %} -Make sure that the `uuid` field is populated for all the records in the spy_wishlist table. You can run the following SQL query and make sure that the result is 0 records.
```select count(* -{% endinfo_block %} from spy_wishlist where uuid is NULL;```) - -#### Enable resources and relationships -Activate the following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `WishlistsResourceRoutePlugin` | Registers the `wishlists` resource. | None - |`Spryker\Glue\WishlistsRestApi\Plugin` | -| `WishlistItemsResourceRoutePlugin` | Registers the `wishlist-items` resource. | None | `Spryker\Glue\WishlistsRestApi\Plugin` | -| `WishlistItemsConcreteProductsResourceRelationshipPlugin` | Adds the `concrete-products` resource as a relationship to the `wishlist-items` resource. | None | `Spryker\Glue\WishlistItemsProductsResourceRelationship\Plugin` | -| `WishlistRelationshipByResourceIdPlugin` | Adds the `wishlists` resource as a relationship to the `customers` resource. | None | `Spryker\Glue\WishlistsRestApi\Plugin` | - -
- src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - -```php - -
- -**Verification** -{% info_block infoBox %} -Make sure that the following endpoints are available: -{% endinfo_block %} - -* `http:///glue.mysprykershop.com/wishlists` -* `http:///glue.mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}/wishlists-items` - -{% info_block infoBox %} -Make a request to `https://glue.mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}/wishlists-items?include=concrete-products` and make sure that the given wishlist has at least one product added. Make sure that the response includes relationships to the `concrete-products` resources. -{% endinfo_block %} - -{% info_block infoBox %} -Make a request to `https://glue.mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}?include=wishlists` and make sure that the given customer has at least one wishlist. Make sure that the response includes relationships to the `wishlists` resources. -{% endinfo_block %} - -**See also:** - -[Managing Wishlists](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-wishlists.html) - -_Last review date: Apr 11, 2019_ - -[//]: # (by Karoly Gerner and Volodymyr Volkov) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/order-history-api-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/order-history-api-feature-integration.md deleted file mode 100644 index 0488d389c1c..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/order-history-api-feature-integration.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Glue API - Order History feature integration -description: This guide will navigate through the process of installing and configuring of the Order History API feature used in Spryker OS. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/order-history-api-feature-integration -originalArticleId: e550e031-ff30-4382-98a5-c0868e304b53 -redirect_from: - - /v1/docs/order-history-api-feature-integration - - /v1/docs/en/order-history-api-feature-integration -related: - - title: Retrieving Customer's Order History - link: docs/scos/dev/glue-api-guides/page.version/managing-customers/retrieving-customer-orders.html ---- - -## Install feature API -### Prerequisites -To start feature integration, review and install all these necessary features: -|Name|Version| -|---|---| -|Spryker Core|2018.12.0| -|Order Management|2018.12.0| -|AuthRestApi|2.2.2| -### 1) Install the required modules using Composer - -Run the following command to install the required modules: -```yaml -composer require spryker/auth-rest-api:"^2.2.2" spryker/orders-rest-api:"^1.2.2" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} -Make sure that the following module is installed: -{% endinfo_block %} -|Module|Expected Directory| -|---|---| -|`OrdersRestApi`|`vendor/spryker/orders-rest-api`| -### 2) Set up Transfer objects - -Run the following command to generate the transfer changes: -```yaml -composer transfer:generate -``` - -{% info_block infoBox "Verification" %} -Make sure that the following changes are present in the transfer objects: -{% endinfo_block %} -|Transfer|Type|Event|Path| -|---|---|---|---| -|`RestOrdersAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrdersAttributesTransfer`| -|`RestOrderDetailsAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderDetailsAttributesTransfer`| -|`RestOrderItemsAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderItemsAttributesTransfer`| -|`RestOrderTotalsAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderTotalsAttributesTransfer`| -|`RestOrderExpensesAttributesTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderExpensesAttributesTransfer`| -|`RestOrderAddressTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderAddressTransfer`| -|`RestOrderPaymentTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderPaymentTransfer`| -|`RestOrderItemMetadataTransfer`|class|created|`src/Generated/Shared/Transfer/RestOrderItemMetadataTransfer`| -|`RestCalculatedDiscountTransfer`|class|created|`src/Generated/Shared/Transfer/RestCalculatedDiscountTransfer`| - -### 3) Set up behavior -#### Enable resource - -Activate the following plugin: -|Plugin|Specification|Prerequisites|Namespace| -|---|---|---|---| -|`OrdersResourceRoutePlugin`|Registers orders resource.|None|`Spryker\Glue\OrdersRestApi\Plugin`| - -```php -
- Make sure that the following endpoints are available: - -* http://mysprykershop.com/orders -* http://mysprykershop.com/orders/`{% raw %}{{{% endraw %}order_reference{% raw %}}}{% endraw %}` - 
-  - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-availability-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-availability-feature-integration.md deleted file mode 100644 index 7c604ec60b3..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-availability-feature-integration.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Glue API - Product Availability feature integration -description: This guide will navigate you through the process of installing and configuring the Product Availability feature in Spryker OS. -last_updated: May 2, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-availability-feature-integration -originalArticleId: cdd936dc-c376-4fae-9cba-36d43ced869a -redirect_from: - - /v1/docs/product-availability-feature-integration - - /v1/docs/en/product-availability-feature-integration ---- - -## Install feature API -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Product Management| 2018.12.0 | -| Availability | 2018.12.0 | -| ProductsRestApi | 2.2.3 | -### 1) Install the required modules using Composer - -Run the following commands to install the required modules: -``` -composer require spryker/product-availabilities-rest-api:"^1.0.3" --update-with-dependencies -composer require spryker/products-product-availabilities-resource-relationship:"^1.0.0" --update-with-dependencies -``` - -{% info_block infoBox "Verification" %} -Make sure that the following modules are installed: -{% endinfo_block %} - -| Module | Expected directory | -| --- | --- | -| `ProductAvailabilitiesRestApi` | `vendor/spryker/product-availabilities-rest-api` | -| `ProductsProductAvailabilitiesResourceRelationship` | `vendor/spryker/products-product-availabilities-resource-relationship` | - -### 2) Set up Transfer objects -#### Implementation -Run the following commands to generate transfer changes: -`console transfer:generate -` - -{% info_block infoBox "Verification" %} -Make sure that the following changes in transfer objects are present: -{% endinfo_block %} - -|Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `RestAbstractProductAvailabilityAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestAbstractProductAvailabilityAttributesTransfer` | -| `RestConcreteProductAvailabilityAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestConcreteProductAvailabilityAttributesTransfer` | - -### 3) Set up behavior -#### Enable resources and relationships -**Implementation** -Activate the following plugin: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `AbstractProductAvailabilitiesRoutePlugin` | Registers the abstract product availabilities resource. | None | `Spryker\Glue\ProductAvailabilitiesRestApi\Plugin` | -| `ConcreteProductAvailabilitiesRoutePlugin` | Registers the concrete product availabilities resource. | None | `Spryker\Glue\ProductAvailabilitiesRestApi\Plugin` | -| `AbstractProductAvailabilitiesResourceRelationshipPlugin` | Adds the abstract product availability resource as a relationship to the abstract product resource. | None | `Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\Plugin` | -| `ConcreteProductAvailabilitiesResourceRelationshipPlugin` | Adds the concrete product availability resource as a relationship to the concrete product resource. | None | `Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\Plugin` | - -**`src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php`** -```php -addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new AbstractProductAvailabilitiesResourceRelationshipPlugin() - ); - $resourceRelationshipCollection->addRelationship( - ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS, - new ConcreteProductAvailabilitiesResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -**Verification** -{% info_block infoBox %} -Make sure that the following endpoints are available: -{% endinfo_block %} - -* `http://mysprykershop.com/abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}/abstract-product-availabilities` -* `http://mysprykershop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}/concrete-product-availabilities` -{% info_block infoBox %} -Make a request to `http://mysprykershop.com/abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}?include=abstract-product-availabilities`. Make sure that the response includes relationships to the `abstract-product-availabilities` resource. -{% endinfo_block %} -{% info_block infoBox %} -Make a request to `http://mysprykershop.com/concrete-products/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %}?include=concrete-product-availabilities`. Make sure that the response includes relationships to the `concrete-product-availabilities` resource. -{% endinfo_block %} - -_Last review date: Feb 19, 2019_ diff --git a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-tax-sets-api-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-tax-sets-api-feature-integration.md deleted file mode 100644 index 1fe49b87876..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/glue-api/product-tax-sets-api-feature-integration.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Glue API - Product Tax Sets feature integration -description: This guide will navigate you through the process of installing and configuring the Product Tax Sets API feature in Spryker OS. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-tax-sets-api-feature-integration -originalArticleId: ad00daf1-7c6f-4a1b-b358-9fc415a3a093 -redirect_from: - - /v1/docs/product-tax-sets-api-feature-integration - - /v1/docs/en/product-tax-sets-api-feature-integration ---- - -## Install feature API - -### Prerequisites - -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.12.0 | -| Product Management | 2018.12.0 | -| Tax | 2018.12.0 | -| ProductsRestApi | 2.2.3 | - -## 1) Install the required modules using Composer - -Run the following commands to install the required modules: - -```bash -composer require spryker/product-tax-sets-rest-api:"^1.0.6" --update-with-dependencies -composer require spryker/products-product-tax-sets-resource-relationship:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox “Verification” %} - -Make sure that the following modules have been installed: -{% endinfo_block %} - -| Module | Expected Directory | -| --- | --- | -| `ProductTaxSetsRestApi` | `vendor/spryker/product-tax-sets-rest-api` | -| `ProductsProductTaxSetsResourceRelationship` | `vendor/spryker/products-product-tax-sets-resource-relationship` | - - -## 2) Set up Database Schema and Transfer Objects - -Run the following commands to apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -
- Make sure that the following changes are present by checking your database: - -| Database entity | Type | Event | -| --- | --- | --- | -| `spy_tax_set.uuid` | column | added | -
- -
Make sure that the following changes are present in the transfer objects: - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `RestProductTaxRateTransfer` | class | created | `src/Generated/Shared/Transfer/RestProductTaxRateTransfer` | -| `RestProductTaxSetsAttributesTransfer` | class | created | `src/Generated/Shared/Transfer/RestProductTaxSetsAttributesTransfer` | -| `TaxSetTransfer.uuid` | property | added | `src/Generated/Shared/Transfer/TaxSetTransfer` | -
- -## 3) Set up Behavior - -### Generate UUIDs for the existing `spy_tax_set records` without UUID: - -Run the following command: - -```bash -console tax-sets:uuid:update -``` - -
- Make sure that the UUID field is filled out for all the records in the `spy_tax_set` table. You can run the following SQL query to make sure the result equals to 0 records: - -```sql -select count(*) from spy_tax_set where uuid is NULL; -``` -
- -### Enable resource and relationship - -Activate the following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductTaxSetsResourceRoutePlugin` | Registers the product tax resource. | None | `Spryker\Glue\ProductTaxSetsRestApi\Plugin` | -| `ProductsProductTaxSetsResourceRelationshipPlugin` | Adds the product tax sets resource as a relationship to an abstract product resource. | None | `Spryker\Glue\ProductsProductTaxSetsResourceRelationship\Plugin` | - -
- src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php - - ```php - addRelationship( - ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS, - new ProductsProductTaxSetsResourceRelationshipPlugin() - ); - - return $resourceRelationshipCollection; - } -} -``` - -
-
- - - {% info_block warningBox “Verification” %} - -Make sure that the following endpoint is available: `http://mysprykershop.comop.com//abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}/product-tax-sets ` -{% endinfo_block %} - -{% info_block warningBox “Verification” %} - -Send a request to `http://mysprykershop.comop.com//abstract-products/{% raw %}{{{% endraw %}abstract_sku{% raw %}}}{% endraw %}?include=product-tax-sets`. Make sure that the response includes relationships to the `product-tax-sets` resources. -{% endinfo_block %} - - - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/installing-the-category-cms-blocks.md b/docs/scos/dev/feature-integration-guides/201811.0/installing-the-category-cms-blocks.md deleted file mode 100644 index 51b77e98980..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/installing-the-category-cms-blocks.md +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Installing the Category CMS Blocks -description: The guide describes the process of installing the Category CMS Block in your project. -last_updated: Jul 31, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/enabling-category-cms-block -originalArticleId: 686fc463-68cb-4301-aa70-f955f7077804 -redirect_from: - - /v1/docs/enabling-category-cms-block - - /v1/docs/en/enabling-category-cms-block -related: - - title: CMS Block - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/cms-block.html - - title: Migration Guide - CMS Block - link: docs/pbc/all/content-management-system/page.version/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmsblock-module.html ---- - -Category blocks are blocks that can be embedded into the category template. -To enable the Category CMS Block in your project, do the following: -1. Install CMS Block Category Connector module by composer. - -```bash -"spryker/cms-block-category-connector": "^2.0.0" -``` - -2. Register the CMS block form plugin. -3. Add `CmsBlockCategoryFormPlugin` to the CMS Block GUI dependency provider (`\Pyz\Zed\CmsBlockGui\CmsBlockGuiDependencyProvider`). - -```php - new CmsBlockCategoryConnectorCollectorPlugin(), - ]; - }; - } -} -``` - -7. Register Category form and form handler plugins. - -```php - new CmsBlockCategoryConnectorCollectorPlugin(), - ]; - }; - } -} -``` - -12. Register Category form and form handler plugins. - -```php - - - -**To configure the block:** -1. In the Zed UI, go to the CMS section and navigate to the blocks section. -2. Click Create CMS Block to create a new block. -3. From the template drop-down, select the new template and name the new block. -4. Set the "Category" and enter the category URL in the Category field. While typing, the product search will offer suggestions from the product list. -5. View on a CMS Block edit page. - -6. View on a Category edit page. - - -7. Set the block to active to use it straight away. -8. After clicking **Save**, you will be prompted to provide glossary keys for the placeholders included in the Twig template. -9. Embed the block into the category page by adding the following code in the `catalog.twig` template: - -``` -{% raw %}{%{% endraw %} if category is defined {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} spyCmsBlock({category: category.id}) {% raw %}}}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -``` -10. To see the page in Yves, the client data storage (Redis) must be up-to-date. This is handled through `cronjobs`. -11. To manually execute this step, run the collectors to update the frontend data storage: - -```bash -vendor/bin/console collector:storage:export -``` - -**To configure block positions** -Usually you don't want to change Twig templates for each block assignment, but still be able to manage CMS Blocks from Zed GUI. In this case we recommend to use positioning. - -CMS Block positioning means that you can predefine some of the useful places in your Twig templates once and then manage your CMS Blocks based on relations to categories and position. For example, you could define "header", "body", "footer" positions to manage your CMS Blocks in those places independently. - - By default we provide the following positions: "Top", "Middle", "Bottom", but you can easily change them in the module configuration on a project level (put your extension of `CmsBlockCategoryConnectorConfig` with the replaced method `getCmsBlockCategoryPositionList` to `Pyz\Zed\CmsBlockCategoryConnector\CmsBlockCategoryConnectorConfig` as in the example below). - -```php - new CmsBlockProductConnectorCollectorPlugin(), - ]; - }; - } -} -``` - -5. Register the product list plugin (optional). -To show which product abstracts are assigned to a block on a block view page, add `CmsBlockProductAbstractListViewPlugin` to the CMS Block GUI dependency provider. - -```php - - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/measurement-units-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/measurement-units-feature-integration.md deleted file mode 100644 index 73e1ec6a71b..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/measurement-units-feature-integration.md +++ /dev/null @@ -1,910 +0,0 @@ ---- -title: Measurement Units feature integration -description: The Measurement Units feature allows defining specific units of measure for products. The guide describes how to integrate the feature into your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-measurement-units-feature-integration-201811 -originalArticleId: 87885373-7be5-4321-9c07-2d839ae47819 -redirect_from: - - /v1/docs/product-measurement-units-feature-integration-201811 - - /v1/docs/en/product-measurement-units-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Cart | 2018.11.0 | -|Product|2018.11.0| -|Order Management|2018.11.0| -|Spryker Core|2018.11.0| - -### 1) Install the required modules using Composer - -Run the following command(s) to install the required modules: -``` -composer require spryker-feature/measurement-units: "^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules have been installed:
ModuleExpected Directory
`ProductMeasurementUnit``vendor/spryker/product-measurement-unit`
`ProductMeasurementUnitDataImport``vendor/spryker/product-measurement-unit-data-import`
`ProductMeasurementUnitStorage``vendor/spryker/product-measurement-unit-storage`
-{% endinfo_block %} - -### 2) Set up Database Schema and Transfer objects -Adjust the schema definition so entity changes will trigger events. - -|Module |Triggered events | -| --- | --- | -| `spy_product_measurement_unit` |
  • `Entity.spy_product_measurement_unit.create`
  • `Entity.spy_product_measurement_unit.update`
  • `Entity.spy_product_measurement_unit.delete`
| -| `spy_product_measurement_base_unit` |
  • `Entity.spy_product_measurement_base_unit.create`
  • `Entity.spy_product_measurement_base_unit.update`
  • `Entity.spy_product_measurement_base_unit.delete`
| -| `spy_product_measurement_sales_unit` |
  • `Entity.spy_product_measurement_sales_unit.create`
  • `Entity.spy_product_measurement_sales_unit.update`
  • `Entity.spy_product_measurement_sales_unit.delete`
| -| `spy_product_measurement_sales_unit_store` |
  • `Entity.spy_product_measurement_sales_unit_store.create`
  • `Entity.spy_product_measurement_sales_unit_store.update`
  • `Entity.spy_product_measurement_sales_unit_store.delete`
| - -
-src/Pyz/Zed/ProductMeasurementUnit/Persistence/Propel/Schema/spy_product_measurement_unit.schema.xml - -```html - - - - - - - -
- - - - - -
- - - - - -
- - - - - -
-
-``` -
-
- -Run the following commands to apply database changes and generate entity and transfer changes: -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes by checking your database:
Database entityTypeEvent
`spy_product_measurement_unit`tablecreated
`spy_product_measurement_base_unit`tablecreated
`spy_product_measurement_sales_unit`tablecreated
`spy_product_measurement_sales_unit_store`tablecreated
`spy_product_measurement_unit_storage`tablecreated
`spy_product_concrete_measurement_unit_storage`tablecreated
`spy_sales_order_item.quantity_base_measurement_unit_name`columncreated
`spy_sales_order_item.quantity_measurement_unit_name`columncreated
`spy_sales_order_item.quantity_measurement_unit_precision`columncreated
`spy_sales_order_item.quantity_measurement_unit_conversion`columncreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changeshave been apllied in transfer objects:
TransferTypeEventPath
`ProductMeasurementUnit`classcreated`src/Generated/Shared/Transfer/ProductMeasurementUnitTransfer`
`ProductMeasurementBaseUnit`classcreated`src/Generated/Shared/Transfer/ProductMeasurementBaseUnitTransfer`
`ProductMeasurementSalesUnit`classcreated`src/Generated/Shared/Transfer/ProductMeasurementSalesUnitTransfer`
`SpyProductMeasurementUnitEntityTransfer`classcreated`src/Generated/Shared/Transfer/SpyProductMeasurementUnitEntityTransfer`
`SpyProductMeasurementBaseUnitEntityTransfer`classcreated`src/Generated/Shared/Transfer/SpyProductMeasurementBaseUnitEntityTransfer`
`SpyProductMeasurementSalesUnitEntityTransfer`classcreated`src/Generated/Shared/Transfer/SpyProductMeasurementSalesUnitEntityTransfer`
`SpyProductMeasurementSalesUnitStoreEntityTransfer`classcreated`src/Generated/Shared/Transfer/SpyProductMeasurementSalesUnitStoreEntityTransfer`
`ProductMeasurementUnitStorage`classcreated`src/Generated/Shared/Transfer/ProductMeasurementUnitStorageTransfer`
`ProductConcreteMeasurementBaseUnit`classcreated`src/Generated/Shared/Transfer/ProductConcreteMeasurementBaseUnitTransfer`
`ProductConcreteMeasurementSalesUnit`classcreated`src/Generated/Shared/Transfer/ProductConcreteMeasurementSalesUnitTransfer`
`ProductConcreteMeasurementUnitStorage`classcreated`src/Generated/Shared/Transfer/ProductConcreteMeasurementUnitStorageTransfer`
`SpyProductMeasurementUnitStorageEntity`classcreated`src/Generated/Shared/Transfer/SpyProductMeasurementUnitStorageEntityTransfer`
`SpyProductConcreteMeasurementUnitStorageEntity`classcreated`src/Generated/Shared/Transfer/SpyProductConcreteMeasurementUnitStorageEntityTransfer`
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the changes were implemented successfully. For this purpose, trigger the following methods and make sure that the above events have been triggered:
PathMethod name
`src/Orm/Zed/ProductMeasurementUnit/Persistence/Base/SpyProductMeasurementUnit.php`
  • `prepareSaveEventName( -{% endinfo_block %}`
  • `addSaveEventToMemory()`
  • `addDeleteEventToMemory()`
`src/Orm/Zed/ProductMeasurementUnit/Persistence/Base/SpyProductMeasurementBaseUnit.php`
  • `prepareSaveEventName()`
  • `addSaveEventToMemory()`
  • `addDeleteEventToMemory()`
`src/Orm/Zed/ProductMeasurementUnit/Persistence/Base/SpyProductMeasurementSalesUnit.php`
  • `prepareSaveEventName()`
  • `addSaveEventToMemory()`
  • `addDeleteEventToMemory()`
`src/Orm/Zed/ProductMeasurementUnit/Persistence/Base/SpyProductMeasurementSalesUnitStore.php`
  • `prepareSaveEventName()`
  • `addSaveEventToMemory()`
  • `addDeleteEventToMemory()`
) - -### 3) Add Translations - -{% info_block infoBox "Info" %} -All measurement units need to have glossary entities for the configured locales. -{% endinfo_block %} -Infrastructural record's glossary keys: -
-src/data/import/glossary.csv - -```yaml -measurement_units.item.name,Item,en_US -measurement_units.item.name,Stück,de_DE -``` -
-
- -Demo data glossary keys: -
-src/data/import/glossary.csv - -```yaml -measurement_units.standard.weight.kilo.name,Kilo,en_US -measurement_units.standard.weight.gram.name,Gram,en_US -measurement_units.standard.length.metre.name,Meter,en_US -measurement_units.standard.length.centimetre.name,Centimeter,en_US -measurement_units.standard.length.feet.name,Feet,en_US -measurement_units.standard.weight.kilo.name,Kilo,de_DE -measurement_units.standard.weight.gram.name,Gramm,de_DE -measurement_units.standard.length.metre.name,Meter,de_DE -measurement_units.standard.length.centimetre.name,Centimeter,de_DE -measurement_units.standard.length.feet.name,Fuß,de_DE -``` -
-
- -Run the following console command to import data: -``` -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} - -### 4) Configure Export to Redis -This step will publish tables on change (create, edit, delete) to the `spy_product_measurement_unit_storage` and `spy_product_concrete_measurement_unit_storage` and synchronise the data to Storage. - -#### Set up Event Listeners - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductMeasurementUnitStorageEventSubscriber` | Registers listeners that are responsible to publish product measurement unit storage entity changes when a related entity change event occurs. | None | `Spryker\Zed\ProductMeasurementUnitStorage\Communication\Plugin\Event\Subscriber` | - -
-src/Pyz/Zed/Event/EventDependencyProvider.php - -```php - add(new ProductMeasurementUnitStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` -
-
- -#### Set up Re-Generate and Re-Sync Features - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductConcreteMeasurementUnitEventResourceRepositoryPlugin` | Allows populating empty storage table with data. | None | `Spryker\Zed\ProductMeasurementUnitStorage\Communication\Plugin\Event` | -| `ProductMeasurementUnitEventResourceRepositoryPlugin` | Allows populating empty storage table with data. | None | `Spryker\Zed\ProductMeasurementUnitStorage\Communication\Plugin\Event` | -| `ProductConcreteMeasurementUnitSynchronizationDataPlugin` | Allows synchronizing the whole storage table content into Storage. | None | `Spryker\Zed\ProductMeasurementUnitStorage\Communication\Plugin\Synchronization` | -| `ProductMeasurementUnitSynchronizationDataPlugin` | Allows synchronizing the whole storage table content into Storage. | None | `Spryker\Zed\ProductMeasurementUnitStorage\Communication\Plugin\Synchronization` | - -
-src/Pyz/Zed/EventBehavior/EventBehaviorDependencyProvider.php -
- -
-src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.ph - -```php - -
- -### 5) Import Data -#### Add Infrastructural Data - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductMeasurementUnitInstallerPlugin` | Installs the configured infrastructural measurement units. | None | `Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\Installer` | - -
-src/Pyz/Zed/Installer/InstallerDependencyProvider.php - -```php - -
- -Run the following console command to execute registered installer plugins and install infrastructural data: -``` -console setup:init-db -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured infrastructural measurement units are added to the `spy_product_measurement_unit` table. -{% endinfo_block %} - -#### Import Product Measurement Unit - -{% info_block infoBox "Info" %} -The following imported entities will be used as measurement units in the Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/product-measurement-unit-data-import/data/import/product_measurement_unit.csv - -```yaml -name,code,default_precision -measurement_units.standard.weight.kilo.name,KILO,1 -measurement_units.standard.weight.gram.name,GRAM,1 -measurement_units.standard.weight.tone.name,TONE,1000 -measurement_units.standard.weight.gbou.name,GBOU,10 -measurement_units.standard.weight.usou.name,USOU,10 -measurement_units.standard.weight.pund.name,PUND,100 -measurement_units.standard.weight.huwg.name,HUWG,1000 -measurement_units.standard.weight.gbtn.name,GBTN,1000 -measurement_units.standard.weight.ustn.name,USTN,1000 -measurement_units.standard.weight.oztr.name,OZTR,10 -measurement_units.standard.weight.ucwt.name,UCWT,1000 -measurement_units.standard.length.metr.name,METR,100 -measurement_units.standard.length.cmet.name,CMET,10 -measurement_units.standard.length.mmet.name,MMET,1 -measurement_units.standard.length.kmet.name,KMET,1000 -measurement_units.standard.length.inch.name,INCH,10 -measurement_units.standard.length.yard.name,YARD,100 -measurement_units.standard.length.foot.name,FOOT,100 -measurement_units.standard.length.mile.name,MILE,1000 -measurement_units.standard.area.smet.name,SMET,100 -measurement_units.standard.area.sqki.name,SQKI,100 -measurement_units.standard.area.smil.name,SMIL,100 -measurement_units.standard.area.scmt.name,SCMT,100 -measurement_units.standard.area.sqin.name,SQIN,100 -measurement_units.standard.area.sqfo.name,SQFO,100 -measurement_units.standard.area.sqmi.name,SQMI,100 -measurement_units.standard.area.sqya.name,SQYA,100 -measurement_units.standard.area.acre.name,ACRE,100 -measurement_units.standard.area.ares.name,ARES,100 -measurement_units.standard.area.hect.name,HECT,100 -measurement_units.standard.litr.name,LITR,100 -measurement_units.standard.celi.name,CELI,10 -measurement_units.standard.mili.name,MILI,1 -measurement_units.standard.gbga.name,GBGA,10 -measurement_units.standard.gbpi.name,GBPI,10 -measurement_units.standard.uspi.name,USPI,10 -measurement_units.standard.gbqa.name,GBQA,10 -measurement_units.standard.usqa.name,USQA,10 -measurement_units.standard.usga.name,USGA,10 -measurement_units.standard.barl.name,BARL,100 -measurement_units.standard.bcuf.name,BCUF,100 -measurement_units.standard.bdft.name,BDFT,100 -measurement_units.standard.cbme.name,CBME,100 -measurement_units.standard.miba.name,MIBA,100 -measurement_units.standard.dgeu.name,DGEU,100 -measurement_units.standard.ggeu.name,GGEU,100 -measurement_units.standard.busl.name,BUSL,100 -measurement_units.standard.box.name,BOX,1 -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| name| mandatory|string |measurement_units.standard.cbme.name | The glossary key that will be used for displaying. Each name needs glossary key definition for all configured locales. | -|code|mandatory|unique, string|CBME|A unique identifier used by the Spryker OS to identify measurement units.| -|default_precision|mandatory|integer, power of ten|100|A property that affects how detailed to render a float measurement unit. Affects visual only, not used in calculations.| - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data -``` -console data:import product-measurement-unit -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured data are added to the `spy_product_measurement_unit` table. -{% endinfo_block %} - -#### Import Product Measurement Base Units - -{% info_block infoBox "Info" %} -Imports data that defines the base measurement unit of each product abstract. -{% endinfo_block %} -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/product-measurement-unit-data-import/data/import/product_measurement_base_unit.csv - -```yaml -code,abstract_sku -METR,215 -KILO,216 -ITEM,217 -ITEM,218 -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| code | mandatory | string | METR | An existing measurement unit code that will be the base of measurement unit calculations for this product abstract. | -|abstract_sku|mandatory|virtual-unique, string|215|An existing product abstract SKU. 1 product abstract can have only 1 base unit; multiple occurrences will override older ones.| -Register the following plugin to enable data import: - -| Plugin |Specification | Prerequisites |Namespace | -| --- | --- | --- | --- | -|`ProductMeasurementBaseUnitDataImportPlugin` |Imports base measurement unit definitions into the database. |
  • Referred product abstracts to be imported
  • Referred measurement units to be imported
|`Spryker\Zed\ProductMeasurementUnitDataImport\Communication\Plugin` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-measurement-base-unit -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured data are added to the `spy_product_measurement_base_unit` table. -{% endinfo_block %} - -#### Import Product Measurement Sales Units - -{% info_block infoBox "Info" %} -Imports sales measurement unit definitions to product concretes. -{% endinfo_block %} - -```yaml -sales_unit_key,concrete_sku,code,conversion,precision,is_displayed,is_default -sales_unit_1,215_123,METR,1,100,1,1 -sales_unit_2,215_123,CMET,,,1,0 -sales_unit_3,215_124,METR,1,100,1,0 -sales_unit_4,215_124,CMET,0.01,1,1,0 -sales_unit_5,215_124,FOOT,0.328084,100,1,1 -sales_unit_6,216_123,ITEM,5,1,1,1 -sales_unit_7,217_123,ITEM,1,1,1,1 -sales_unit_8,217_123,KILO,2,100,1,0 -sales_unit_9,217_123,GRAM,0.01,1,1,0 -sales_unit_10,218_123,ITEM,1,1,1,1 -sales_unit_11,218_123,KILO,10,1,1,0 -sales_unit_12,218_123,GRAM,0.01,1,1,0 -sales_unit_13,218_1231,ITEM,1,1,1,1 -sales_unit_14,218_1231,KILO,2,1,1,0 -sales_unit_15,218_1231,GRAM,0.01,1,1,0 -sales_unit_16,218_1233,METR,1,100,1,1 -sales_unit_17,218_1234,METR,1,100,1,1 -sales_unit_18,217_1231,ITEM,1,1,1,1 -sales_unit_19,218_1232,ITEM,1,1,1,1 -``` - -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| sales_unit_key | mandatory | unique, string | sales_unit_1 | A unique identifier that allows referring to this record from other data importers. | -|concrete_sku|mandatory|string|215_123|An already existing product concrete SKU.| -|code|mandatory|string|METR |An already existing measurement unit code that will be used to convert back and forth with the base unit defined in product abstract.| -|conversion|mandatory|float, empty|5|

A custom multiplier that is used to calculate base unit. This field can be empty if both base and sales unit code is defined in the general [conversion ratios](https://github.com/spryker/util-measurement-unit-conversion/blob/1ae26cf8e629d25157e273097941bde438a24ddc/src/Spryker/Service/UtilMeasurementUnitConversion/UtilMeasurementUnitConversionConfig.php).

Example: 5 means that 1 quantity of this sales unit represents 5 of the base unit.

| -|precision|mandatory|integer, power of ten, empty|100|A property that affects how detailed to render a float measurement unit. Affects visual only, not used in calculations.
When left empty, the precision of the measurement unit is used.| -|is_displayed|mandatory|integer|0|Controls if the sales unit can be displayed for customers.| -|is_default|mandatory|integer|1|Controls if this sales unit is preferred as the default sales unit when offered for customers.
Takes no effect if is_displayed set as 0.
1 product concrete can have up to 1 default sales unit.| -Register the following plugin: - -| Plugin | Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `ProductMeasurementSalesUnitDataImportPlugin` | Imports sales measurement unit definitions into the database. |
  • Referred product concretes to be imported
  • Related product abstracts to be imported
  • Related product abstracts' base units to be imported
  • Referred measurement units to be imported
| `Spryker\Zed\ProductMeasurementUnitDataImport\Communication\Plugin` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-measurement-sales-unit -``` -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured data are added to the `spy_product_measurement_sales_unit` table. -{% endinfo_block %} - -#### Import Product Measurement Sales Unit Stores: -{% info_block infoBox "Info" %} -Contains the Store configuration for each defined sales unit.
Proceed with this step even if you have only 1 Store. -{% endinfo_block %} -Prepare your data according to your requirements using our demo data: -
-vendor/spryker/product-measurement-unit-data-import/data/import/product_measurement_sales_unit_store.csv - -```yaml -sales_unit_key,store_name -sales_unit_1,DE -sales_unit_1,US -sales_unit_1,AT -sales_unit_2,DE -sales_unit_2,US -sales_unit_2,AT -sales_unit_3,DE -sales_unit_3,US -sales_unit_3,AT -sales_unit_4,DE -sales_unit_4,AT -sales_unit_5,US -sales_unit_6,DE -sales_unit_6,US -sales_unit_6,AT -sales_unit_7,DE -sales_unit_7,US -sales_unit_7,AT -sales_unit_8,DE -sales_unit_8,US -sales_unit_8,AT -sales_unit_9,DE -sales_unit_9,US -sales_unit_9,AT -sales_unit_10,DE -sales_unit_10,US -sales_unit_10,AT -sales_unit_11,DE -sales_unit_11,US -sales_unit_11,AT -sales_unit_12,DE -sales_unit_12,AT -sales_unit_12,US -sales_unit_13,DE -sales_unit_13,US -sales_unit_13,AT -sales_unit_14,DE -sales_unit_14,US -sales_unit_14,AT -sales_unit_15,DE -sales_unit_15,US -sales_unit_15,AT -sales_unit_16,DE -sales_unit_16,US -sales_unit_16,AT -sales_unit_17,DE -sales_unit_17,US -sales_unit_17,AT -sales_unit_18,DE -sales_unit_18,US -sales_unit_18,AT -sales_unit_19,DE -sales_unit_19,US -sales_unit_19,AT -``` -
-
- -| Column |Is obligatory? |Data type | Data example |Data explanation | -| --- | --- | --- | --- | --- | -| `sales_unit_key` |mandatory | string | sales_unit_1 |A reference used for the product measurement sales unit data import. | -|`store_name`|mandatory|string|DE|Contains the store name where the sales unit is available.| -Register the following plugin: - -|Plugin | Specification | Prerequisites|Namespace | -| --- | --- | --- | --- | -|`ProductMeasurementSalesUnitStoreDataImportPlugin` |Imports sales measurement units' Store configuration into the database. |
  • Referred sales units to be imported.
  • Referred Stores to be imported.
| `Spryker\Zed\ProductMeasurementUnitDataImport\Communication\Plugin` | -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-measurement-sales-unit-store -``` -{% info_block warningBox "Verification" %} -Make sure that in the database that the configured data are added to the `spy_product_measurement_sales_unit_store` table. -{% endinfo_block %} - -### 6) Set up Behavior -#### Set up Checkout Workflow -Enable the following behaviors by registering the plugins: - -| Plugin | Specification | Prerequisites |Namespace | -| --- | --- | --- | --- | -| `SingleItemQuantitySalesUnitCartChangeRequestExpanderPlugin` |Stores the sales unit ID of the selected measurement unit for the given product. |None | `Spryker\Client\ProductMeasurementUnit\Plugin\Cart` | -|`QuantitySalesUnitGroupKeyItemExpanderPlugin`|Appends group key with sales unit information if the product was added to the cart with a sales unit.|Expects sales unit ID to be set for the related products.|`Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\Cart`| -|`QuantitySalesUnitItemExpanderPlugin`|Expands cart item with general sales unit information when the product was added to the cart with a sales unit.|Expects sales unit ID to be set for the related products.|`Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\Cart`| -|`QuantitySalesUnitValuePostSavePlugin`|Calculates sales unit value that was selected by the customer for later usage.|Expects general sales unit information to be set for the related products.|`Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\Cart`| -|`QuantitySalesUnitOrderItemExpanderPreSavePlugin`|Prepares sales unit information to be saved to the database.|Expects general sales unit information to be set for the related products.|`Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\SalesExtension`| -|`QuantitySalesUnitHydrateOrderPlugin`|Adds quantity sales unit information when Order is retrieved from database.|Expects sales order ID and sales order item IDs to be set.|`Spryker\Zed\ProductMeasurementUnit\Communication\Plugin\Sales`| - -
-src/Pyz/Client/Cart/CartDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Cart/CartDependencyProvider.php - -```php - -
- - -
-src/Pyz/Zed/Sales/SalesDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that `` action works with measurement units by adding an item to cart with sales unit and checking if `QuoteTransfer.items[].quantitySalesUnit` record gets populated. -{% endinfo_block %} -{% info_block warningBox "Verification" %} -Make sure that checkout workflow works with measurement unit by ordering item with sales unit and checking the `spy_sales_order_item` contains `quantity_base_measurement_unit_name`, `quantity_measurement_unit_name`, `quantity_measurement_unit_code`, `quantity_measurement_unit_precision` and `quantity_measurement_unit_conversion` fields populated -{% endinfo_block %} - -## Install feature frontend -### Prerequisites -Please overview and install the necessary features before beginning the integration step. - -|Name | Version | -| --- | --- | -| Spryker Core E-commerce | 2018.11.0 | -|Checkout|2018.11.0| -### 1) Install the required modules using Composer - -Run the following command(s) to install the required modules: -```bash -composer require spryker-feature/measurement-units: "^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules are installed:
ModuleExpected directory
`ProductMeasurementUnitWidget``vendor/spryker-shop/product-measurement-unit-widget`
-{% endinfo_block %} - -### 2) Add Translations - -Append glossary according to your configuration: -
-src/data/import/glossary.csv - -```yaml -cart.item_quantity,Quantity,en_US -product.measurement.sales_unit,Sales Unit,en_US -page.detail.add-to-cart,Add to Cart,en_US -measurement_units.recommendation.between-units-info,The quantity you have chosen is in between 2 base units,en_US -measurement_units.recommendation.min-violation,Minimum quantity requirements for product are not fulfilled,en_US -measurement_units.recommendation.max-violation,Maximum quantity requirements for product are not fulfilled,en_US -measurement_units.recommendation.suggestion,Would you like to add,en_US -cart.pre.check.quantity.min.failed,Minimum quantity requirements for product SKU '%sku%' are not fulfilled.,en_US -cart.pre.check.quantity.max.failed,Maximum quantity for product SKU '%sku%' is exceeded.,en_US -cart.pre.check.quantity.interval.failed,Quantity interval requirements for product SKU '%sku%' are not fulfilled.,en_US -cart.item_quantity,Anzahl,de_DE -product.measurement.sales_unit,Maßeinheit,de_DE -page.detail.add-to-cart,In den Warenkorb,de_DE -measurement_units.recommendation.between-units-info,Ihre gewählte Anzahl liegt zwischen 2 basis Einheiten,de_DE -measurement_units.recommendation.min-violation,Minimale Mengenanforderungen für das Produkt sind nicht erfüllt,de_DE -measurement_units.recommendation.max-violation,Maximale Mengenanforderungen für das Produkt sind nicht erfüllt,de_DE -measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? ,de_DE -cart.pre.check.quantity.min.failed,Die Mindestanzahl für Produkt SKU '%sku%' ist nicht erreicht.,de_DE -cart.pre.check.quantity.max.failed,Die Maximalanzahl für Produkt SKU '%sku%' ist überschritten.,de_DE -cart.pre.check.quantity.interval.failed,Die Anzahl für Produkt SKU '%sku%' liegt nicht innerhalb des vorgegebenen Intervals.,de_DE -``` -
-
- -Run the following console command to import data: -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} - - -### 3) Set up Widgets - -Register the following plugins to enable widgets: - -| Plugin | Description | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductMeasurementUnitWidgetPlugin` | Allows customers to select sales units for the product when adding to cart. |None | `SprykerShop\Yves\ProductMeasurementUnitWidget\Plugin\ProductDetailPage` | -|`QuantitySalesUnitWidgetPlugin`|Displays selected sales unit information for products on the cart overview page.|None|`SprykerShop\Yves\ProductMeasurementUnitWidget\Plugin\CartPage`| -
-src/Pyz/Yves/ProductDetailPage/ProductDetailPageDependencyProvider.php - -```php - -
- -
-src/Pyz/Yves/CartPage/CartPageDependencyProvider.php - -```php - -
- -`ProductMeasurementUnitWidget` uses Javascript for some functionality: - -|Functionality | Path | -| --- | --- | -|Controls base unit => sales unit calculations. Applies product quantity restrictions on sales unit level. Offers recommendation when invalid quantity is selected. Maintains stock-based quantity and sales unit information for posting |`vendor/spryker-shop/product-measurement-unit-widget/src/SprykerShop/Yves/ProductMeasurementUnitWidget/Theme/default/components/molecules/measurement-quantity-selector/measurement-quantity-selector.ts` | - -Run the following command to enable Javascript and CSS changes: -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} -Make sure that the following widgets were registered:
ModuleTest
`ProductMeasurementUnitWidgetPlugin`Go to the product detail page where the product has sales units and add a product to the cart with a sales unit.
`QuantitySalesUnitWidgetPlugin`Go to the cart overview page and see if the sales unit information appears for a product.
-{% endinfo_block %} - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/merchant-custom-prices-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/merchant-custom-prices-feature-integration.md deleted file mode 100644 index 120542872d8..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/merchant-custom-prices-feature-integration.md +++ /dev/null @@ -1,493 +0,0 @@ ---- -title: Merchant Custom Prices feature integration -description: The Merchant Custom Price Feature allows setting specific prices for merchants. The guide describes the process of integrating the feature into your project. -last_updated: Nov 21, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/merchant-custom-prices-feature-integration-201811 -originalArticleId: f748c242-bbf9-4178-a035-51ae4cf49235 -redirect_from: - - /v1/docs/merchant-custom-prices-feature-integration-201811 - - /v1/docs/en/merchant-custom-prices-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.11.0 | -|Merchant | 2018.11.0| -|Merchant Contracts | 2018.11.0 | -| Prices | 2018.11.0 | -| Product |2018.11.0 | - -### 1) Install the required modules using Composer -Run the following command to install the required modules: - -```bash -composer require spryker-feature/merchant-custom-prices:"^2018.11.0" spryker/price-product-merchant-relationship-gui:"^1.0.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules have been installed:
ModuleExpected directory
`PriceProductMerchantRelationship``vendor/spryker/price-product-merchant-relationship`
`PriceProductMerchantRelationshipDataImport``vendor/spryker/price-product-merchant-relationship-data-import`
`PriceProductMerchantRelationshipGui``vendor/spryker/price-product-merchant-relationship-gui`
`PriceProductMerchantRelationshipStorage``vendor/spryker/price-product-merchant-relationship-storage`
-{% endinfo_block %} - - -### 2) Set up Database Schema - -Adjust the schema definition so that entity changes can trigger events: - -| Affected entity | Triggered events | -| --- | --- | -| `spy_price_product_merchant_relationship` | `Entity.spy_price_product_merchant_relationship.create` `Entity.spy_price_product_merchant_relationship.update` `Entity.spy_price_product_merchant_relationship.delete` | - -
-src/Pyz/Zed/PriceProductMerchantRelationship/Persistence/Propel/Schema/spy_price_product_merchant_relationship.schema.xml - -```html - - - - - - - -
- -
-``` -
-
- -Run the following commands: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes in transfer objects have been applied:
TransferTypeEventPath
`PriceProductMerchantRelationshipStorageTransfer`classcreated`src/Generated/Shared/Transfer/PriceProductMerchantRelationshipStorageTransfer.php`
`PriceProductDimensionTransfer.idMerchantRelationship`propertyadded`src/Generated/Shared/Transfer/PriceProductDimensionTransfer.php`
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
TransferTypeEvent
`spy_price_product_merchant_relationship`tablecreated
`spy_price_product_concrete_merchant_relationship_storage`tablecreated
`spy_price_product_abstract_merchant_relationship_storage`tablecreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the changes were implemented successfully. For this purpose, trigger the following methods and check that the above events have been triggered as well:
Class pathMethod name
`src/Orm/Zed/PriceProductMerchantRelationship/Persistence/Base/SpyPriceProductMerchantRelationship.php``prepareSaveEventName( -{% endinfo_block %}`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`
) - -### 3) Configure Export to Redis -With this step you will be able to publish prices on change (create, edit, delete) to `spy_price_product_abstract_merchant_relationship_storage`, `spy_price_product_concrete_merchant_relationship_storage` and synchronize the data to Storage. - -#### Set up Event Listeners - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `PriceProductMerchantRelationshipStorageEventSubscriber` | Registers listeners that are responsible to publish merchant prices to storage when a related entity changes. | None |`Spryker\Zed\ProductListStorage\Communication\Plugin\Event\Subscriber` | - -
-src/Pyz/Zed/Event/EventDependencyProvider.php - -```php - -
- - -{% info_block warningBox "Verification" %} -Make sure when prices are exported, created, updated, or deleted manually in Zed UI, they are exported (or removed -{% endinfo_block %} to Redis accordingly.
Storage typeTarget entityExample expected data fragment
RedisProduct Abstract Price`kv:price_product_concrete_merchant_relationship:de:1:1`
RedisProduct Concrete Price`kv:price_product_abstract_merchant_relationship:de:1:1`
) - -
-Example expected data fragment: Product Abstract Price - -```php -{ - "prices": { - "2": { - "EUR": { - "priceData": null, - "GROSS_MODE": { - "DEFAULT": 9922 - }, - "NET_MODE": { - "DEFAULT": 8922 - } - }, - "CHF": { - "priceData": null, - "GROSS_MODE": { - "DEFAULT": 11422 - }, - "NET_MODE": { - "DEFAULT": 10322 - } - } - } - } -} -``` -
-
- -
-Example expected data fragment: Product Concrete Price - -```php -{ -"prices": { - "2": { - "EUR": { - "priceData": null, - "GROSS_MODE": { - "DEFAULT": 12322 - }, - "NET_MODE": { - "DEFAULT": 11222 - } - }, - "CHF": { - "priceData": null, - "GROSS_MODE": { - "DEFAULT": 10122 - }, - "NET_MODE": { - "DEFAULT": 12522 - } - } - } - } -} -``` -
-
- -Add synchronization plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `PriceProductAbstractMerchantRelationSynchronizationDataPlugin` | Can be executed to synchronize all price_product_abstract_merchant_relationship entries from the database to Redis. | None |`Spryker\Zed\PriceProductMerchantRelationshipStorage\Communication\Plugin\Synchronization` | -|`PriceProductConcreteMerchantRelationSynchronizationDataPlugin` | Can be executed to synchronize all `price_product_concrete_merchant_relationship` entries from the database to Redis. | None | `Spryker\Zed\PriceProductMerchantRelationshipStorage\Communication\Plugin\Synchronization` | - -
- src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Verify if "console sync:data --help" has `price_product_abstract_merchant_relationship` and `price_product_concrete_merchant_relationship` as an available resource in the list. -{% endinfo_block %} - -### 4) Import data -#### Import Price Product Merchant Relationships -Prepare your prices data according to your requirements using our demo data: - -
-vendor/spryker/price-product-merchant-relationship-data-import/data/import/price_product_merchant_relationship.csv - -```yaml -merchant_relation_key,abstract_sku,concrete_sku,price_type,store,currency,price_net,price_gross - mr-002,205,,DEFAULT,DE,EUR,9022,10022 - mr-002,205,,DEFAULT,DE,CHF,11022,12522 - mr-002,001,,DEFAULT,DE,EUR,8922,9922 - mr-002,001,,DEFAULT,DE,CHF,10322,11422 - mr-002,,001_25904006,DEFAULT,DE,EUR,11222,12322 - mr-002,,001_25904006,DEFAULT,DE,CHF,12522,10122 - mr-002,051,,DEFAULT,DE,EUR,11022,12322 - mr-002,,051_29567823,DEFAULT,DE,EUR,10822,12022 - mr-002,,051_30107816,DEFAULT,DE,EUR,11222,12222 - mr-002,051,,DEFAULT,DE,CHF,12022,14022 - mr-002,,051_29567823,DEFAULT,DE,CHF,12422,13822 - mr-002,,051_30107816,DEFAULT,DE,CHF,12522,10322 - mr-003,205,,DEFAULT,DE,EUR,9033,10033 - mr-003,205,,DEFAULT,DE,CHF,11533,13033 - mr-003,001,,DEFAULT,DE,EUR,8933,9933 - mr-003,001,,DEFAULT,DE,CHF,10333,11433 - mr-003,,001_25904006,DEFAULT,DE,EUR,11233,12333 - mr-003,,001_25904006,DEFAULT,DE,CHF,12533,10133 - mr-003,051,,DEFAULT,DE,EUR,11033,12333 - mr-003,,051_29567823,DEFAULT,DE,EUR,10833,12033 - mr-003,,051_30107816,DEFAULT,DE,EUR,11233,12233 - mr-003,051,,DEFAULT,DE,CHF,12033,14033 - mr-003,,051_29567823,DEFAULT,DE,CHF,12433,13833 - mr-003,,051_30107816,DEFAULT,DE,CHF,12533,10333 -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `merchant_relation_key` | mandatory | string | mr-001 | Unique identifier used to identify a merchant contract. | -| `abstract_sku` | mandatory (optional if `concrete_sku` provided) | string (unique) | 051 | Existing abstract product SKU to assign to the product list. | -| `concrete_sku` | mandatory (optional if abstract_sku provided) | string (unique) | 051_29567823 | Existing concrete product SKU to assign to the product list. | -| `price_type` | mandatory | string | DEFAULT | Name of the price type. By default it's 'DEFAULT', but could be project specific (strike, sale, ...). | -| `store` | mandatory | string | DE | Store name. | -| `currency` | mandatory | string | EUR | Currency ISO code. | -| `price_net` | optional | number | 100 | Net price in cents. | -| `price_gross` | optional | number | 120 | Gross price in cents. | - -Register the following plugin to enable data import: - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -```bash -console data:import product-price-merchant-relationship -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data is added to the `spy_price_product_merchant_relationship` table. -{% endinfo_block %} - -### 5) Set up Behavior -#### Set up Merchant Relationship Related Price Handling -Enable the following behaviors by registering the plugins: - - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `MerchantRelationshipPriceQueryCriteriaPlugin` | Extends `PriceProduct` select prices SQL query for selecting prices from merchant relationship dimension if they are requested in `PriceProductCriteriaTransfer→priceDimension` or `PriceProductFilterTransfer→priceDimension` equals `PriceProductMerchantRelationshipConfig::PRICE_DIMENSION_MERCHANT_RELATIONSHIP` or `PriceProductFilterTransfer→priceDimension→idMerchantRelationship` is provided. |None | `Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct`| -| `MerchantRelationshipPriceDimensionAbstractWriterPlugin` | Enables saving product abstract prices to the `spy_price_product_merchant_relationship` table. | Expects `PriceProductTransfer.priceDemnsion.idMerchantRelationshop`, otherwise skips element. | `Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct` | -| `MerchantRelationshipPriceDimensionConcreteWriterPlugin` | Enables saving product concrete prices to the `spy_price_product_merchant_relationship` table. | Expects `PriceProductTransfer.priceDemnsion.idMerchantRelationshop`, otherwise skips element. | `Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct` | -| `MerchantRelationshipPriceProductDimensionExpanderStrategyPlugin` | Sets `PriceProductTransfer.PriceDimension.idMerchantRelationship` and `PriceProductTransfer.PriceDimension.name`. | None | `Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct` | -| `MerchantRelationshipPriceProductFilterPlugin` | Selects min prices from the MR prices available for the current customer (company business can be assigned for multiple MRs). | None | `Spryker\Service\PriceProductMerchantRelationship\Plugin\PriceProductExtension` | -| `PriceProductMerchantRelationshipStorageDimensionPlugin` |Adds MR prices to the list of available prices for the current customer when they are read from Redis. | None | `Spryker\Client\PriceProductMerchantRelationshipStorage\Plugin\PriceProductStorageExtension`| -| `MerchantRelationshipProductAbstractFormExpanderPlugin` | Adds select control to PIM (abstract products) where an admin can choose Merchant Relationship on the Prices tab to manage prices for a concrete Merchant Relationship. | None | `Spryker\Zed\PriceProductMerchantRelationshipGui\Communication\Plugin\ProductManagement` | -| `MerchantRelationshipProductConcreteFormExpanderPlugin` | Adds select control to PIM (product variants) where an admin can choose Merchant Relationship on the Prices tab to manage prices for a concrete Merchant Relationship. | None | `Spryker\Zed\PriceProductMerchantRelationshipGui\Communication\Plugin\ProductManagement` | - -
-src/Pyz/Zed/ProductManagement/ProductManagementDependencyProvider.php - -```php - -
- - -
-src/Pyz/Zed/PriceProduct/PriceProductDependencyProvider.php - -```php - -
- -
-src/Pyz/Service/PriceProduct/PriceProductDependencyProvider.php - -```php - -
- -
-src/Pyz/Client/PriceProductStorage/PriceProductStorageDependencyProvider.php - -```php - -
- -**** -{% info_block warningBox "Verification" %} -Make sure that there is the **Merchant Price Dimension** drop-down in Zed UI on the Product Abstract and Concrete (variants -{% endinfo_block %} edit page (on the Price & Tax tab). When you select some MR, the current page should be reloaded and prices table should display prices from the selected MR if they exist or an empty table is they do not exist.

Make sure that when you added/changed prices for some MR, they appear after sending the submit form and reloading the page.

Make sure that Redis keys are updated/created for this product and business units are assigned to the selected MR.) - -{% info_block warningBox "Verification" %} -Make sure that a logged in user, who belongs to a company business unit and that business unit is assigned to some MR with specified prices, sees MR prices on the Catalog and on Product page.

Make sure that this user sees MIN price if their business unit is assigned to multiple MRs with different prices for the same product. -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/merchant-product-restrictions-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/merchant-product-restrictions-feature-integration.md deleted file mode 100644 index 2f432a242a1..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/merchant-product-restrictions-feature-integration.md +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: Merchant Product Restrictions feature integration -description: Merchant Product Restrictions allows setting access to particular products. This guide describes the process of integrating the feature into a project. -last_updated: Nov 18, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/merchant-product-restrictions-feature-integration-201811 -originalArticleId: 750664b9-7a32-42b7-8c19-084f8044cc32 -redirect_from: - - /v1/docs/merchant-product-restrictions-feature-integration-201811 - - /v1/docs/en/merchant-product-restrictions-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -|Product Lists |2018.11.0 | - -### 1) Install the required modules using Composer - -Run the following command(s) to install the required modules: -```bash -composer require spryker-feature/merchant-product-restrictions:"^2018.11.0" --update-with-dependencies -``` -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected Directory
`MerchantRelationshipProductList``vendor/spryker/merchant-relationship-product-list`
`MerchantRelationshipProductListDataImport``vendor/spryker/merchant-relationship-product-list-data-import`
`MerchantRelationshipProductListGui``vendor/spryker/merchant-relationship-product-list-gui`
-{% endinfo_block %} - - -### 2) Set up Database Schema -Run the following commands to apply database changes, as well as generate entity and transfer changes: -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database entityTypeEvent
spy_product_list.fk_merchant_relationshipcolumncreated
-{% endinfo_block %} - -### 3) Import Data -#### Import Merchant Relationship to Product Lists -Prepare your data according to your requirements using our demo data: -```yaml -merchant_relation_key,product_list_key -mr-008,pl-001 -mr-008,pl-002 -mr-008,pl-003 -mr-009,pl-004 -mr-010,pl-005 -mr-011,pl-006 -mr-011,pl-007 -mr-011,pl-00 -``` - - -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `merchant_relation_key` | mandatory| string | mr-008| Identifier of merchant relations. The merchant relations must exist already. | -| `product_list_key` |mandatory | string | pl-001 | Identifier of product lists. The product lists must exist already. | -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites |Namespace | -| --- | --- | --- | --- | -|`MerchantRelationshipProductListDataImportPlugin` |Imports basic product list data into the database. |
  • Merchant relations must be imported first.
  • Product lists must be imported first.
| `Spryker\Zed\MerchantRelationshipProductListDataImport\Communication\Plugin` | - -
- src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: - -```bash -console data:import merchant-relationship-product-list -``` -{% info_block warningBox "Verification" %} -Make sure that the configured data are added to the `spy_product_list` table in the database. -{% endinfo_block %} - -### 4) Set up Behaviour -Activate the following plugins: - -| Plugin |Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -|`ProductListCustomerTransferExpanderPlugin` |
  • Expands the customer transfer object with their assigned product lists.
  • The product list information is based on the customer's merchant relationship.
| None | `Spryker\Zed\MerchantRelationshipProductList\Communication\Plugin\Customer` | -| `MerchantRelationshipProductListOwnerTypeFormExpanderPlugin` |
  • Provides the merchant relationship product list owner type.
  • Provides selectable merchant relationship options to assign to product lists.
| None |`Spryker\Zed\MerchantRelationshipProductListGui\Communication\Plugin\ProductListGuiExtension` | -|`MerchantRelationshipTableExpanderPlugin` | Provides table header, config and data extensions for product lists with merchant relationship owner type. | None| `Spryker\Zed\MerchantRelationshipProductListGui\Communication\Plugin\ProductListGuiExtension` | - -
-src/Pyz/Zed/Customer/CustomerDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/ProductListGui/ProductListGuiDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that when creating or editing a product list in Zed, you can select the merchant relationship as an owner type and see the selected value in the list of product lists.

Also make sure that when a customer (with an assigned merchant relationship that has assigned product lists -{% endinfo_block %} logs in, they see products only according to their product list restrictions.) - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/merchants-and-merchant-relations-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/merchants-and-merchant-relations-feature-integration.md deleted file mode 100644 index 64c0b4737f4..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/merchants-and-merchant-relations-feature-integration.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Merchants and Merchant Relations feature integration -last_updated: Apr 22, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/merchant-merchant-relations-feature-integration -originalArticleId: 00856f61-a7c8-468b-9edf-c1895daddce0 -redirect_from: - - /v1/docs/merchant-merchant-relations-feature-integration - - /v1/docs/en/merchant-merchant-relations-feature-integration ---- - -The Merchants and Merchant Relations feature is shipped with following modules: - -| Module | Description | -| --- | --- | -| [Merchant](https://github.com/spryker/spryker/tree/master/Bundles/Merchant) | Implements logic of Merchants (adding, editing, removal). | -| [MerchantGui](https://github.com/spryker/spryker/tree/master/Bundles/MerchantGui) | Provides table with merchants along with the Create and Edit merchants pages in the Administration Interface. | -| [MerchantRelationship](https://github.com/spryker/spryker/tree/master/Bundles/MerchantRelationship) | Implements logic of merchant relations. | -| [MerchantRelationshipGui](https://github.com/spryker/spryker/tree/master/Bundles/MerchantRelationshipGui) | Provides a table with merchant relations along with the Create and Edit merchant relations pages in the Administration Interface. | -| [MerchantDataImport](https://github.com/spryker/spryker/tree/master/Bundles/MerchantDataImport) | Implements an importer for merchants. | -| [MerchantRelationshipDataImport](https://github.com/spryker/spryker/tree/master/Bundles/MerchantRelationshipDataImport) | Implements an importer for merchant relations. | - -To install the Merchants and Merchant relations feature, follow the steps below: - -1. Install necessary modules using composer: -Update existing and install the required modules: - -```bash -composer update "spryker/*" "spryker-shop/*" -``` - -```bash -composer require spryker/company-business-unit-data-import:"^0.2.0" spryker/merchant:"^1.0.0" spryker/merchant-data-import:"^0.1.0" spryker/merchant-gui:"^1.0.0" spryker/merchant-relationship:"^1.0.0" spryker/merchant-relationship-data-import:"^0.1.0" spryker/merchant-relationship-gui:"^1.0.0" --update-with-dependencies -``` - -2. Run the commands: - -```bash -console transfer:generate -console propel:install -navigation:build-cache -``` - -3. Add plugins to Zed `DataImportDependencyProvider`: - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `DataImport` | `MerchantDataImportPlugin` | Imports merchants. | `getDataImporterPlugins` | -| `DataImport` | `MerchantRelationshipDataImportPlugin` | Imports merchant relations. | `getDataImporterPlugins` | - -**src\Pyz\Zed\DataImport\DataImportDependencyProvider.php** - -```php -... -use Spryker\Zed\MerchantDataImport\Communication\Plugin\MerchantDataImportPlugin; -use Spryker\Zed\MerchantRelationshipDataImport\Communication\Plugin\MerchantRelationshipDataImportPlugin; -... -protected function getDataImporterPlugins(): array -{ - return [ - ... - new MerchantDataImportPlugin(), - new MerchantRelationshipDataImportPlugin(), - ... - ]; -} -``` - -_Last reivew date: Jul 9, 2018_ - -[//]: # (by Valeriy Pravoslavny) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/minimum-order-value-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/minimum-order-value-feature-integration.md deleted file mode 100644 index f1e27f70950..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/minimum-order-value-feature-integration.md +++ /dev/null @@ -1,490 +0,0 @@ ---- -title: Minimum Order Value feature integration -description: The Minimum Order Value Feature allows setting a minimum threshold for customer's orders. The guide describes how to integrate the feature into your project. -last_updated: Nov 21, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/minimum-order-value-feature-integration-201811 -originalArticleId: 7e69b682-ec56-446f-824c-863bab61e078 -redirect_from: - - /v1/docs/minimum-order-value-feature-integration-201811 - - /v1/docs/en/minimum-order-value-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Cart | 2018.11.0 | -|Checkout | 2018.11.0 | -| Spryker Core |2018.11.0 | -|Prices| 2018.11.0 | -| Order Management | 2018.11.0 | - -### 1) Install the required modules using Composer -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/order-threshold:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules have been installed:
ModuleExpected Directory
`SalesOrderThreshold``vendor/spryker/sales-order-threshold`
`SalesOrderThresholdDataImport``vendor/spryker/sales-threshold-data-import`
`SalesOrderThresholdGui`<`vendor/spryker/sales-threshold-gui`
-{% endinfo_block %} - -### 2) Set up Database Schema -Run the following commands to apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database entityType
`spy_sales_order_threshold`table
`spy_sales_order_threshold_tax_set`table
`spy_sales_order_threshold_type`table
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changes in transfer objects have been applied:
TransferTypePath
`SalesOrderThresholdType`class`src/Generated/Shared/Transfer/SalesOrderThresholdTypeTransfer`
`SalesOrderThresholdValue`class`src/Generated/Shared/Transfer/SalesOrderThresholdValueTransfer`
`SalesOrderThreshold`class`src/Generated/Shared/Transfer/SalesOrderThresholdTransfer`
`SalesOrderThresholdLocalizedMessage`class`src/Generated/Shared/Transfer/SalesOrderThresholdLocalizedMessageTransfer`
`SpySalesOrderThresholdEntity`class`src/Generated/Shared/SpySalesOrderThresholdEntityTransfer`
`SpySalesOrderThresholdTypeEntity`class`src/Generated/Shared/SpySalesOrderThresholdTypeEntityTransfer`
`SpySalesOrderThresholdTaxSetEntity`class`src/Generated/Shared/SpySalesOrderThresholdTaxSetEntityTransfer`
-{% endinfo_block %} - -### 3) Add Translations -Append glossary for core feature of shopping lists: - -
-src/data/import/glossary.csv - -```yaml -sales-order-threshold.strategy.soft-minimum-threshold-fixed-fee,Zuschlag,de_DE -sales-order-threshold.strategy.soft-minimum-threshold-fixed-fee,Surcharge,en_US -sales-order-threshold.strategy.soft-minimum-threshold-flexible-fee,Zuschlag,de_DE -sales-order-threshold.strategy.soft-minimum-threshold-flexible-fee,Surcharge,en_US -``` -
-
- -Demo data glossary keys are as follows: -
-src/data/import/glossary.csv - -```yaml -sales-order-threshold.hard-minimum-threshold.de.eur.message,"You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout",en_US -sales-order-threshold.hard-minimum-threshold.de.eur.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können nicht mit der Bestellung fortfahren",de_DE -sales-order-threshold.hard-minimum-threshold.de.chf.message,"You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout",en_US -sales-order-threshold.hard-minimum-threshold.de.chf.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können nicht mit der Bestellung fortfahren",de_DE -sales-order-threshold.soft-minimum-threshold.de.eur.message,"You need to add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold, but if you want can proceed to checkout.",en_US -sales-order-threshold.soft-minimum-threshold.de.eur.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können trotzdem weiter zur Kasse.",de_DE -sales-order-threshold.soft-minimum-threshold.de.chf.message,"You need to add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold, but if you want can proceed to checkout.",en_US -sales-order-threshold.soft-minimum-threshold.de.chf.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können trotzdem weiter zur Kasse.",de_DE -``` -
-
- -### 4) Import Data -#### Adding Infrastructural Data - -| Plugin |Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -|`SalesOrderThresholdTypeInstallerPlugin` | Installs sales order threshold types. |None| `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Installer` | - -
-src/Pyz/Zed/Installer/InstallerDependencyProvider.php - -```php - -
- -Run the following console command to execute registered installer plugins and install infrastructural data: - -```bash -console setup:init-db -``` - -{% info_block warningBox "Verification" %} -Make sure that sales order threshold types are added to the `spy_sales_order_threshold_type` table in the database. -{% endinfo_block %} - -#### Importing Sales Order Thresholds - -{% info_block infoBox "Info" %} -The following imported entities will be used as sales order thresholds in Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/sales-order-threshold-data-import/data/import/sales_order_threshold.csv - -```yaml -store,currency,threshold_type_key,threshold,fee,message_glossary_key -DE,EUR,hard-minimum-threshold,40000,, -DE,EUR,soft-minimum-threshold,100000,, -DE,CHF,hard-minimum-threshold,120000,, -DE,CHF,soft-minimum-threshold,200000,, -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `store` |mandatory |string | DE | Store for which the sales order threshold will be applied. | -| `currency` |mandatory | string | EUR | Currency for which the sales order threshold will be applied. | -| `threshold_type_key` | mandatory |string | soft-minimum-threshold | Threshold type that would be imported; it has to be one of the keys of `configured/installed` plugins from the above step. | -| `threshold` | mandatory | int, in cents | 1000 | Amount (in cents) that will need to be met by an order to pass the threshold check. | -| `fee` | optional | integer, in cents| 50 |Amount in cents (or the percentage of order subtotal that will be calculated) of the fee that will be added automatically if the order threshold is not met. | -| `message_glossary_key` | optional | string | sales-order-threshold.hard-minimum-threshold.de.eur.message | Glossary key that will be used to show a notification message to customers if they did not meet the order threshold. | - -Register the following plugin to enable data import: - -| Plugin | Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `SalesOrderThresholdDataImportPlugin` | Imports demo sales order threshold data into a database. |None| `Spryker\Zed\SalesOrderThresholdDataImport\Communication\Plugin\DataImport`| - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: - -```bash -console data:import sales-order-threshold -``` - -{% info_block warningBox "Verification" %} -Make sure that the configured data is added to the `spy_sales_order_threshold` table in the database. -{% endinfo_block %} - -#### Importing Sales Order Threshold Taxes -Add the following data to the imported tax sets to have Sales Order Threshold expenses tax sets. - -
-data/import/tax.csv - -```yaml -MOV Taxes,Austria,Austria Standard,20 -MOV Taxes,Belgium,Belgium Standard,21 -MOV Taxes,Bulgaria,Bulgaria Standard,20 -MOV Taxes,Czech Republic,Czech Republic Standard,21 -MOV Taxes,Denmark,Denmark Standard,25 -MOV Taxes,France,France Standard,20 -MOV Taxes,Germany,Germany Standard,19 -MOV Taxes,Hungary,Hungary Standard,27 -MOV Taxes,Italy,Italy Standard,22 -MOV Taxes,Luxembourg,Luxembourg Standard,17 -MOV Taxes,Netherlands,Netherlands Standard,21 -MOV Taxes,Poland,Poland Standard,23 -MOV Taxes,Romania,Romania Standard,20 -MOV Taxes,Slovakia,Slovakia Standard,20 -MOV Taxes,Slovenia,Slovenia Standard,22 -``` -
-
- -Run the following console command to import data: - -```bash -console data:import:tax -``` - -{% info_block warningBox "Verification" %} -Make sure that the configured data is added to the `spy_tax_set` and `spy_tax_rate` table in the database. -{% endinfo_block %} - -### 5) Set up Behavior -Enable the behavior by registering the following plugins: - -| Plugin |Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `RemoveSalesOrderThresholdExpenseCalculatorPlugin` |Removes order expenses added by failing to meet the threshold. | None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Calculation` | -| `AddSalesOrderThresholdExpenseCalculatorPlugin` | Calculates and adds extra expenses to an order if the threshold is not met. | Expects Items to be in `QuoteTransfer` as well as calculated `QuoteTransfer::SubTotal`. Also, expects `QuoteTransfer` to contain a Store and a Currency. | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Calculation` | -| `AddThresholdMessagesCartPreReloadItemsPlugin` | Adds messages attached to thresholds that were not met by an order to notify the customer. | Expects Items to be in `QuoteTransfer` as well as calculated `QuoteTransfer::SubTotal`. Also, expects `QuoteTransfer` to contain a Store and a Currency. | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Cart` | -| `SalesOrderThresholdCheckoutPreConditionPlugin` | Blocks checkout if the threshold of a hard type was not met in an order. |Expects Items to be in `QuoteTransfer` as well as calculated `QuoteTransfer::SubTotal`. Also, expects `QuoteTransfer` to contain a Store and a Currency. | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Checkout` | -| `SalesOrderThresholdExpenseSavePlugin` | Saves the threshold added fees as expenses to the order in the database. |None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Checkout` | -|`GlobalSalesOrderThresholdDataSourceStrategyPlugin` | Provides the ability to fetch and apply thresholds globally across all customers. | Expects Items to be in `QuoteTransfer` as well as calculated `QuoteTransfer::SubTotal`. Also, expects `QuoteTransfer` to contain a Store and a Currency. | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\SalesOrderThresholdExtension` | -| `HardMinimumThresholdStrategyPlugin` | Strategy that provides a hard threshold type which fails if the order value is less than the threshold. | None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Strategy` | -| `SoftMinimumThresholdWithFixedFeeStrategyPlugin` | Strategy that provides a soft threshold type which fails if the order value is less than the threshold; it also sets a fee that wiil be saved in the database as a fee. | None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Strategy` | -|`SoftMinimumThresholdWithFlexibleFeeStrategyPlugin` | Strategy that provides a soft threshold type which fails if the order value is less than the threshold; it also calculates a fee to be a percentage of the order subtotal. | None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Strategy`| -| `SoftMinimumThresholdWithMessageStrategyPlugin`| Strategy that provides a soft threshold type which fails if the order value is less than the threshold. |None | `Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Strategy`| - -
-src/Pyz/Zed/Calculation/CalculationDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Cart/CartDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Checkout/CheckoutDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/SalesOrderThreshold/SalesOrderThresholdDependencyProvider.php - -```php - -
- -## Install feature frontend -### Prerequisites -Please overview and install the necessary features before beginning the integration step. - -| Name | Version | -| --- | --- | -| Spryker Core E-commerce | 2018.11.0 | - -### 1) Install the required modules using Composer -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/order-threshold:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected directory
`SalesOrderThresholdWidget``vendor/spryker-shop/sales-order-threshold-widget`
-{% endinfo_block %} - -### 2) Add Translations -Append glossary according to your configuration: - -
-src/data/import/glossary.csv - -```yaml -sales-order-threshold.expense.name,Zuschlag,de_DE -sales-order-threshold.expense.name,Surcharge,en_US -sales-order-threshold.strategy.soft-minimum-threshold-fixed-fee,Zuschlag,de_DE -sales-order-threshold.strategy.soft-minimum-threshold-fixed-fee,Surcharge,en_US -sales-order-threshold.strategy.soft-minimum-threshold-flexible-fee,Zuschlag,de_DE -sales-order-threshold.strategy.soft-minimum-threshold-flexible-fee,Surcharge,en_US -sales-order-threshold.hard-minimum-threshold.de.eur.message,"You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout",en_US -sales-order-threshold.hard-minimum-threshold.de.eur.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können nicht mit der Bestellung fortfahren",de_DE -sales-order-threshold.hard-minimum-threshold.de.chf.message,"You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout",en_US -sales-order-threshold.hard-minimum-threshold.de.chf.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können nicht mit der Bestellung fortfahren",de_DE -sales-order-threshold.soft-minimum-threshold.de.eur.message,"You need to add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold, but if you want can proceed to checkout.",en_US -sales-order-threshold.soft-minimum-threshold.de.eur.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können trotzdem weiter zur Kasse.",de_DE -sales-order-threshold.soft-minimum-threshold.de.chf.message,"You need to add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold, but if you want can proceed to checkout.",en_US -sales-order-threshold.soft-minimum-threshold.de.chf.message,"Sie sollten Waren im Wert von {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} dem Warenkorb hinzufügen um die empfohlene Schwelle zu erreichen. Sie können trotzdem weiter zur Kasse.",de_DE -``` -
-
- -### 3) Set up Widgets -Enable global widgets: - -| Widget |Description | Namespace | -| --- | --- | --- | -|`SalesOrderThresholdWidget` | Shows the expenses added to the quote transfer related to the sales order threshold. | `SprykerShop\Yves\SalesOrderThresholdWidget\Widget` | - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- -Run the following command to enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} -Make sure that the following widgets have been registered:
ModuleTest
`SalesOrderThresholdWidget`Create a cart with a subtotal that does not meet the defined sales order threshold and you will see the expense automatically added to the cart.
-{% endinfo_block %} - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/multi-store-cms-block-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/multi-store-cms-block-feature-integration.md deleted file mode 100644 index 078e5df99ac..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/multi-store-cms-block-feature-integration.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Multi-store CMS Block feature integration -description: The guide describes the process of installing multi-store CMS Blocks into the project. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-block-multistore-feature-integration -originalArticleId: 1068a0ec-b65f-47f9-a02b-7f18a3af335e -redirect_from: - - /v1/docs/cms-block-multistore-feature-integration - - /v1/docs/en/cms-block-multistore-feature-integration -related: - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html - - title: Migration Guide - CMS Block - link: docs/pbc/all/content-management-system/page.version/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmsblock-module.html - - title: Migration Guide - CMS Block Collector - link: docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-migration-guide-cms-block-collector.html - - title: Migration Guide - CMS Block GUI - link: docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmsblockgui-module.html ---- - -To prepare your project to work with multi-store CMS Blocks, the following minimum module versions are required: - - -|Module | Version | -| --- | --- | -| `spryker/cms-block` | 2.0.0 | -| `spryker/cms-block-collector` |2.0.0 | -| `spryker/cms-block-gui` | 2.0.0 | -| `spryker/store` | 1.2.0 | -|`spryker/kernel` | 3.13.0 | -| `spryker/collector`|6.0.0 | -| `spryker/touch` | 4.0.0 | - -To enable multi-store management within the CMS Block Zed Admin UI, override `Spryker\Zed\Store\StoreConfig::isMultiStorePerZedEnabled()` in your project to return `true`. - -This will enable the store management inside the CMS Block Zed Admin UI. - -**Example override** - -```php - - - [//]: # (by Karoly Gerner, Anastasija Datsun) diff --git a/docs/scos/dev/feature-integration-guides/201811.0/multi-store-products-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/multi-store-products-feature-integration.md deleted file mode 100644 index 75e710b44fd..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/multi-store-products-feature-integration.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Multi-Store Products feature integration -description: The guide describes the process of installing the Multi-Store Products into your project. -last_updated: Jul 29, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-store-relation-feature-integration -originalArticleId: 091f07e0-bd44-4f13-b936-86b6c03f91c1 -redirect_from: - - /v1/docs/product-store-relation-feature-integration - - /v1/docs/en/product-store-relation-feature-integration -related: - - title: Migration Guide - Collector - link: docs/scos/dev/module-migration-guides/migration-guide-collector.html - - title: Migration Guide - Touch - link: docs/scos/dev/module-migration-guides/migration-guide-touch.html - - title: Migration Guide - Product - link: docs/scos/dev/module-migration-guides/migration-guide-product.html - - title: Migration Guide - ProductManagement - link: docs/scos/dev/module-migration-guides/migration-guide-productmanagement.html ---- - -By default abstract products are available in all stores. This feature provides additional configuration when: - -* you have multiple stores -* you want to manage the appearance of abstract products per store. - -## Prerequisites -To prepare your project to work with multi-store abstract products: - -1. Update/install `spryker/collector` to at least 6.0.0 version. You can find additional help for feature migration in [Migration Guide - Collector](/docs/scos/dev/module-migration-guides/migration-guide-collector.html). -2. Update/install `spryker/touch` to at least 4.0.0 version. You can find additional help for feature migration in [_Migration Guide - Touch_](/docs/scos/dev/module-migration-guides/migration-guide-touch.html). -3. Update/install `spryker/store` to at least 1.3.0 version. -4. Update/install `spryker/product` to at least 6.0.0 version. You can find additional help for feature migration in [Migration Guide - Product](/docs/scos/dev/module-migration-guides/migration-guide-product.html). -5. If you want to have Zed Admin UI support for the multi-store abstract product management: -* Update/install `spryker/productmanagement` to at least 0.10.0 version. You can find additional help for feature migration in [Migration Guide - ProductManagement](/docs/scos/dev/module-migration-guides/migration-guide-productmanagement.html). -* Override `Spryker\Zed\Store\StoreConfig::isMultiStorePerZedEnabled()` in your project to return `true`. This will enable the store management inside the Product Information Management (PIM) Zed Admin UI. - -
- Example override - - -```php - -
- -* You should now be able to use the Product Information Management (PIM) Zed Admin UI to manage abstract product store relation. - -Check out our [Legacy Demoshop implementation](https://github.com/spryker/demoshop) for implementation example and idea. -  diff --git a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-feature-integration.md deleted file mode 100644 index 3ddb0322e4b..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-feature-integration.md +++ /dev/null @@ -1,634 +0,0 @@ ---- -title: Multiple Carts feature integration -description: Multiple Carts allows customers to manage multiple shopping carts in one account. The guide describes how to integrate the feature into your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-carts-feature-integration-201811 -originalArticleId: b67b5107-0ec1-4a8a-93ba-887e5885a314 -redirect_from: - - /v1/docs/multiple-carts-feature-integration-201811 - - /v1/docs/en/multiple-carts-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: -| Name | Version | -| --- | --- | -| Cart | 2018.11.0 | -| Persistent Cart | 2018.11.0 | -| Spryker Core | 2018.11.0 | -### 1) Install the required modules using Composer -Run the following command(s) to install the required modules: -```bash -composer require spryker-feature/multiple-carts: "^2018.11.0" --update-with-dependencies -``` - {% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected directory
`MultiCart``vendor/spryker/multi-cart`
`MultiCartDataImport``vendor/spryker/multi-cart-data-import`
-{% endinfo_block %} - -### 2) Set up Database Schema and Transfer Objects -Run the following commands to apply database changes and generate entity and transfer changes: -```bash -console transfer:generate -console propel:install -console transfer:generate -``` -{% info_block warningBox "Verification" %} -Make sure that the following changes by checking your database:
Database entityTypeEvent
`spy_quote.name`columncreated
`spy_quote.is_default`columncreated
`spy_quote.key`columncreated
`spy_quote-unique-name-customer_reference`indexcreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changes in transfer objects:
TransferTypeEventPath
`QuoteTransfer.name`columncreated`src/Generated/Shared/Transfer/QuoteTransfer`
`QuoteTransfer.isDefault`columncreated`src/Generated/Shared/Transfer/QuoteTransfer`
`QuoteTransfer.key`columncreatedsrc/Generated/Shared/Transfer/QuoteTransfer
`QuoteResponseTransfer.customQuotes`columncreated`src/Generated/Shared/Transfer/QuoteResponseTransfer`
`QuoteUpdateRequestAttributesTransfer.name`.columncreated`src/Generated/Shared/Transfer/QuoteUpdateRequestAttributesTransfer`
`QuoteUpdateRequestAttributesTransfer.totals`columncreated`src/Generated/Shared/Transfer/QuoteUpdateRequestAttributesTransfer`
`QuoteActivationRequestTransfer`classcreated`src/Generated/Shared/Transfer/QuoteActivationRequestTransfer`
-{% endinfo_block %} - -### 3) Add Translations -Append glossary for feature: -
- src/data/import/glossary.csv - - ```yaml -multi_cart.cart.set_default.success,"Cart '%quote%' was successfully set as active.",en_US -multi_cart.cart.set_default.success,"Warenkorb '%quote%' wurde erfolgreich auf aktiv gesetzt.",de_DE -``` -
-
- - Run the following console command to import data: - ```bash - console data:import glossary - ``` - {% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} - - ### 4) Import Data - #### Import multi carts - -{% info_block infoBox "Info" %} -The following imported entities will be used as carts in Spryker OS. -{% endinfo_block %} -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/spryker/multi-cart-data-import/data/import/multi_cart.csv - - ```yaml -key,name,customer_reference,store,is_default,quote_data -quote-1,My Cart,DE--1,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-2,My Cart,DE--2,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-3,My Cart,DE--3,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-4,My Cart,DE--4,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-5,My Cart,DE--5,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-6,My Cart,DE--6,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-7,My Cart,DE--7,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-8,My Cart,DE--8,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-9,My Cart,DE--9,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-10,My Cart,DE--10,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-11,My Cart,DE--11,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-12,My Cart,DE--12,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-13,My Cart,DE--13,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-14,My Cart,DE--14,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-15,My Cart,DE--15,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-16,My Cart,DE--16,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-17,My Cart,DE--17,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-18,My Cart,DE--18,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-19,My Cart,DE--19,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-20,My Cart,DE--20,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" -quote-21,My Cart,DE--21,DE,1,"{""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""}" - ``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| key | mandatory | string | quote-19 | The key that will identify the quote to be referred in future imports. | -| name | mandatory | string | My Cart | The name of the quote. | -| customer_reference | mandatory | string | DE--21 | The customer reference of the owner of the quote. | -| store | mandatory | string | DE | Store name that the quote relates to. | -| is_default | mandatory | string | 1 | Flag to show that the quote is default for customer. | -| quote_data | mandatory | string | {""currency"":{""code"":""EUR"",""name"":""Euro"",""symbol"":""\u20ac"",""isDefault"":true,""fractionDigits"":2},""priceMode"":""GROSS_MODE""} | Quote data params serialized as json. | - -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `MultiCartDataImportPlugin` | Imports customer's quotes to database. | Make sure that customers were already imported. | `Spryker\Zed\MultiCartDataImport\Communication\Plugin` | - -
- src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -```bash -console data:import multi-cart -``` - -{% info_block warningBox "Verification" %} -Open `spy_quote` and make sure that all data was imported. -{% endinfo_block %} - -### 5) Set up Behavior - -{% info_block infoBox "Info" %} -This feature requires database storage strategy enabled in quote module. -{% endinfo_block %} - -#### Setup Quote integration - -Register following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `AddSuccessMessageAfterQuoteCreatedPlugin` | Adds success message to messenger after. | | `Spryker\Zed\MultiCart\Communication\Plugin` | -| `AddDefaultNameBeforeQuoteSavePlugin` | Set default quote name if quote does not have name. | | `Spryker\Zed\MultiCart\Communication\Plugin` | -| `ResolveQuoteNameBeforeQuoteCreatePlugin` | Resolve quote name to make it unique for customer before quote save. | If `AddDefaultNameBeforeQuoteSavePlugin` used, this plugin should be added after. | `Spryker\Zed\MultiCart\Communication\Plugin` | -| `DeactivateQuotesBeforeQuoteSavePlugin` | Mark quote as default. -Makes SQL request to mark all customers quote as not default. | | `Spryker\Zed\MultiCart\Communication\Plugin` | -| `InitDefaultQuoteCustomerQuoteDeleteAfterPlugin` | Activates any customer quote, if active customer quote was removed. | | `Spryker\Zed\MultiCart\Communication\Plugin` | -| `NameQuoteTransferExpanderPlugin` | Set default quote name if quote does not have name. Default guest quote name will be used for guest customer quotes. | | Spryker\Client\MultiCart\Plugin | - -
-src/Pyz/Zed/Quote/QuoteDependencyProvider.php - -```php - -
- -
-src/Pyz/Client/Quote/QuoteDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that customer carts have unique names. Make sure if customer creates cart with name that already used in another cart of the customer, cart name will be extended with iteratable suffix. -{% endinfo_block %} - -{% info_block infoBox "Example:" %} -If Shopping cart already exists:
Shopping cart → Shopping cart 1
Shopping cart → Shopping cart 2 -{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that customer has only one active cart at ones. If customer updates inactive cart it becomes active, previous active cart becomes inactive. -{% endinfo_block %} - -#### Set up Persistent Cart Integration -Register the following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `CustomerCartQuoteResponseExpanderPlugin` | Adds customer quote collection to quote response transfer after cart operation handling. Replace quote with active quote if it exist. | |`Spryker\Zed\MultiCart\Communication\Plugin` | -| `SaveCustomerQuotesQuoteUpdatePlugin` | Extracts Customer Quote Collection from quote response object and saves them to customer session. | | `Spryker\Client\MultiCart\Plugin` | -| `DefaultQuoteUpdatePlugin` | Finds Customer Default Quote in customer quote collection and saves it to customer session. | | `Spryker\Client\MultiCart\Plugin` | -| `QuoteSelectorPersistentCartChangeExpanderPlugin` | Takes quote ID form parameters and replaces it in quote change request. | | `Spryker\Client\MultiCart\Plugin` | - -
-src/Pyz/Client/PersistentCart/PersistentCartDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/PersistentCart/PersistentCartDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that adding items to cart will update customer's cart list in multi cart session. -{% endinfo_block %} - -#### Set up Customer Integration -Register following plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `GuestCartSaveCustomerSessionSetPlugin` | Executed after customer added to session. Saves guest customer quote to database if it is not empty. Takes active customer quote from database if guest cart is empty. | Should be added before `GuestCartUpdateCustomerSessionSetPlugin`. | `Spryker\Client\MultiCart\Plugin` | - -
-src/Pyz/Client/Customer/CustomerDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that not empty guest cart will be saved in database in customer login. -{% endinfo_block %} - - - -## Install feature frontend -### Prerequisites -Please overview and install the necessary features before beginning the integration step. - -| Name | Version | -| --- | --- | -| Product | 2018.11.0 | -| Cart | 2018.11.0 | -| Persistent Cart | 2018.11.0 | -| Customer Account Management | 2018.11.0 | - -### 1) Install the required modules using Composer -Run the following command(s) to install the required modules: -```bash -composer require spryker-feature/multiple-carts: "^2018.11.0" --update-with-dependencies -``` -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected directory
MultiCartPage`vendor/spryker-shop/multi-cart-page`
MultiCartWidget`vendor/spryker-shop/multi-cart-widget`
-{% endinfo_block %} - -### 2) Add Translations -Append glossary according to your configuration: -
-src/data/import/glossary.csv - -```yaml -page.multi_cart.shopping_cart.list.title,Shopping cart,en_US -page.multi_cart.shopping_cart.list.title,Einkaufswagen,de_DE -page.multi_cart.shopping_cart.list.create_link,Create,en_US -page.multi_cart.shopping_cart.list.create_link,Erstellen,de_DE -page.multi_cart.shopping_cart.list.label.name,Name,en_US -page.multi_cart.shopping_cart.list.label.name,Name,de_DE -page.multi_cart.shopping_cart.list.label.num_of_products,Number of products,en_US -page.multi_cart.shopping_cart.list.label.num_of_products,Anzahl der Produkte,de_DE -page.multi_cart.shopping_cart.list.label.prices,Prices,en_US -page.multi_cart.shopping_cart.list.label.prices,Preise,de_DE -page.multi_cart.shopping_cart.list.label.total,Total,en_US -page.multi_cart.shopping_cart.list.label.total,Gesamt,de_DE -page.multi_cart.shopping_cart.list.label.actions,Actions,en_US -page.multi_cart.shopping_cart.list.label.actions,Aktionen,de_DE -page.multi_cart.shopping_cart.list.link.edit_name,Edit name,en_US -page.multi_cart.shopping_cart.list.link.edit_name,Namen bearbeiten,de_DE -page.multi_cart.shopping_cart.list.link.duplicate,Duplicate,en_US -page.multi_cart.shopping_cart.list.link.duplicate,Duplikat,de_DE -page.multi_cart.shopping_cart.list.link.delete,Delete,en_US -page.multi_cart.shopping_cart.list.link.delete,Löschen,de_DE -page.multi_cart.shopping_cart.list.label.item,"Item",en_US -page.multi_cart.shopping_cart.list.label.item,"Artikel",de_DE -page.multi_cart.shopping_cart.list.label.items,"Items",en_US -page.multi_cart.shopping_cart.list.label.items,"Artikel",de_DE -customer.account.shopping_cart.list.title,Manage Shopping carts,en_US -customer.account.shopping_cart.list.title,Verwalten Sie Einkaufswagen,de_DE -page.multi_cart.shopping_cart.list.label.access,Access,en_US -page.multi_cart.shopping_cart.list.label.access,Zugriff,de_DE -page.multi_cart.shopping_cart.update.title,Edit,en_US -page.multi_cart.shopping_cart.update.title,Bearbeiten,de_DE -page.multi_cart.shopping_cart.create.title,Create,en_US -page.multi_cart.shopping_cart.create.title,Erstellen,de_DE -multi_cart.form.create_cart,"Add new cart",en_US -multi_cart.form.create_cart,"Füge einen neuen Warenkorb hinzu",de_DE -multi_cart.form.quote.name,"Cart Name",en_US -multi_cart.form.quote.name,"Name des Einkaufswagens",de_DE -multi_cart.form.edit_cart,"Change Name",en_US -multi_cart.form.edit_cart,"Namen ändern",de_DE -multi_cart.form.edit_cart_information,"Edit Cart information",en_US -multi_cart.form.edit_cart_information,"Einkaufswageninformationen bearbeiten",de_DE -multi_cart.cart.set_default.success,"Cart '%quote%' was successfully set as active.",en_US -multi_cart.cart.set_default.success,"Warenkorb '%quote%' wurde erfolgreich auf aktiv gesetzt.",de_DE -multi_cart_page.cart_clear.success,"Cart was successfully cleared",en_US -multi_cart_page.cart_clear.success,"Einkaufswagen wurde erfolgreich gelöscht",de_DE -multi_cart_page.cart_delete_confirmation.warning,Warning,en_US -multi_cart_page.cart_delete_confirmation.warning,Warnung,de_DE -multi_cart_page.cart_delete_confirmation.trying_to_delete,You are trying to delete Cart,en_US -multi_cart_page.cart_delete_confirmation.trying_to_delete,Sie versuchen den Warenkorb zu löschen,de_DE -multi_cart_page.cart_delete_confirmation.shared_with,It is shared with the following users,en_US -multi_cart_page.cart_delete_confirmation.shared_with,Der Warenkorb ist mit den folgenden Personen geteilt,de_DE -multi_cart_page.cart_delete_confirmation.from_all_of_them,It will be deleted from all of them,en_US -multi_cart_page.cart_delete_confirmation.from_all_of_them,Der Warenkorb wird für alle Nutzer gelöscht,de_DE -multi_cart_page.cart_delete_confirmation.cancel,Cancel,en_US -multi_cart_page.cart_delete_confirmation.cancel,Abbrechen,de_DE -multi_cart_page.cart_delete_confirmation.delete,Delete,en_US -multi_cart_page.cart_delete_confirmation.delete,Löschen,de_DE -multi_cart_page.cart_delete_confirmation.breadcrumbs.shopping_carts,Shopping carts,en_US -multi_cart_page.cart_delete_confirmation.breadcrumbs.shopping_carts,Warenkörbe,de_DE -multi_cart_widget.cart.cart_name,"Cart Name",en_US -multi_cart_widget.cart.cart_name,"Name des Einkaufswagens",de_DE -multi_cart_widget.cart.add,"Create New Cart",en_US -multi_cart_widget.cart.add,"Neuen Warenkorb erstellen",de_DE -multi_cart_widget.cart.action.change_name,"Change Name",en_US -multi_cart_widget.cart.action.change_name,"Namen ändern",de_DE -multi_cart_widget.cart.action.duplicate,"Duplicate",en_US -multi_cart_widget.cart.action.duplicate,"Duplikat",de_DE -multi_cart_widget.cart.action.clear,"Clear cart",en_US -multi_cart_widget.cart.action.clear,"Leerer Warenkorb",de_DE -multi_cart_widget.cart.action.delete,"Delete cart",en_US -multi_cart_widget.cart.action.delete,"Warenkorb löschen",de_DE -multi_cart_widget.cart.action.view,"View details",en_US -multi_cart_widget.cart.action.view,"Warenkorb ansehen",de_DE -multi_cart_widget.cart.action.set_default,"Set active",en_US -multi_cart_widget.cart.action.set_default,"Aktiv setzen",de_DE -multi_cart_widget.cart.default,"Active",en_US -multi_cart_widget.cart.default,"Aktiv",de_DE -multi_cart_widget.cart.item,"Item",en_US -multi_cart_widget.cart.item,"Artikel",de_DE -multi_cart_widget.cart.items,"Items",en_US -multi_cart_widget.cart.items,"Artikel",de_DE -multi_cart_widget.cart.view_all,"View all carts",en_US -multi_cart_widget.cart.view_all,"Alle Warenkörbe anzeigen",de_DE -multi_cart_widget.cart.cart,"Cart",en_US -multi_cart_widget.cart.cart,"Warenkorb",de_DE -multi_cart_widget.cart.carts,"Carts",en_US -multi_cart_widget.cart.carts,"Warenkorb",de_DE -multi_cart_widget.cart.list,"Cart List",en_US -multi_cart_widget.cart.list,"Warenkorb-Liste",de_DE -multi_cart_widget.cart.status,"Status",en_US -multi_cart_widget.cart.status,"Status",de_DE -multi_cart_widget.cart.sub_total,"Sub Total",en_US -multi_cart_widget.cart.sub_total,"Zwischensumme",de_DE -multi_cart_widget.cart.actions,"Actions",en_US -multi_cart_widget.cart.actions,"Aktionen",de_DE -multi_cart_widget.cart.created.success,"Cart '%quoteName%' was created successfully",en_US -multi_cart_widget.cart.created.success,"Warenkorb '%quoteName%' wurde erfolgreich erstellt",de_DE -multi_cart_widget.cart.updated.success,"Cart updated successfully",en_US -multi_cart_widget.cart.updated.success,"Einkaufswagen wurde erfolgreich aktualisiert",de_DE -multi_cart_widget.cart.was-deleted-before,Dieser Warenkorb wurde bereits gelöscht,de_DE -multi_cart_widget.cart.was-deleted-before,This cart was already deleted,en_US -``` -
-
- -Run the following console command to import data: -```bash -console data:import glossary -``` -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the `spy_glossary` table. -{% endinfo_block %} -### 3) Enable Controllers -#### Controller Provider List -Register controller provider(s) to Yves application: - -| Provider | Namespace | Enabled Controller | Controller specification | -| --- | --- | --- | --- | -| `MultiCartPageControllerProvider` | `SprykerShop\Yves\MultiCartPage\Plugin\Provider` | `MultiCartController` | Provides functionality to manage multi carts. | - -
-src/Pyz/Yves/ShopApplication/YvesBootstrap.php - -```php - -
- -{% info_block warningBox "Verification" %} -Verify the changes by opening the customer cart list page with a logged in customer on `http://mysprykershop.com/multi-cart/` -{% endinfo_block %} - -### 4) Set up Widgets -Register the following global widgets: - -| Widget | Description | Namespace | -| --- | --- | --- | -| `AddToMultiCartWidget` | Shows cart list for add to cart functionality. | `SprykerShop\Yves\MultiCartWidget\Widget` | -| `CartOperationsWidget` | Shows multi cart functionalities in cart page. | `SprykerShop\Yves\MultiCartWidget\Widget` | -| `MiniCartWidget` | Shows Mini cart in header. | `SprykerShop\Yves\MultiCartWidget\Widget` | -| `MultiCartMenuItemWidget` | Shows link to cart list page in customer account navigation. | `SprykerShop\Yves\MultiCartWidget\Widget` | - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- -Run the following command to enable Javascript and CSS changes: -```bash -console frontend:yves:build -``` -{% info_block warningBox "Verification" %} -Make sure that the following widgets were registered:
ModuleTest
`AddToMultiCartWidget`Go to the product detail page. A shopping cart list should be added to the cart form.
`CartOperationsWidget`Go to the cart overview page and see a title with the cart name and the Clear all button.
`MiniCartWidget`Minicart with all customer's carts should be in the header.
`MultiCartMenuItemWidget`Go to the customer account overview page. A shopping cart link should be in the customer navigation links.
-{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-quick-order-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-quick-order-feature-integration.md deleted file mode 100644 index ee67df853d7..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-quick-order-feature-integration.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Multiple Carts- Quick Order feature integration -description: The Quick Order Feature allows ordering products by entering SKU and quantity in one page. The guide describes how to integrate the feature into your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-carts-quick-order-integration-201811 -originalArticleId: 0296c2ce-7046-4f07-b5bb-e5642ff90935 -redirect_from: - - /v1/docs/multiple-carts-quick-order-integration-201811 - - /v1/docs/en/multiple-carts-quick-order-integration-201811 ---- - -## Install Feature Core - -### Prerequisites - -Install the required features: - -| Name | Version | -| --- | --- | -| Multiple Carts | 2018.11.0 | -| Quick Add To Cart | 2018.11.0 | -| Spryker Core | 2018.11.0 | - -### 1) Set up Behavior - -Register the following plugin: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `QuickOrderQuoteNameExpanderPlugin` | Adds a default quick order name and add it to add item request. | | `Spryker\Client\MultiCart\Plugin` | - -
- src/Pyz/Client/PersistentCart/PersistentCartDependencyProvider.php - - ```php - -
- -{% info_block warningBox "Verification" %} -If items have been added to the cart with param `createOrder`, a new customer cart must be created with the name "Quick order {date of creation}". -{% endinfo_block %} - -## Install feature frontend - -### Prerequisites - -Please overview and install the necessary features before beginning the integration step. - -| Name | Version | -| --- | --- | -| Multiple Carts | 2018.11.0 | -| Quick Add To Cart | 2018.11.0 | -| Spryker Core | 2018.11.0 | - -### 1) Set up Widgets - -Register the following global widget: - -| Widget | Description | Namespace | -| --- | --- | --- | -| `QuickOrderPageWidget` | Shows a cart list in the quick order page. | `SprykerShop\Yves\MultiCartWidget\Widget` | - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- -Run the following command to enable Javascript and CSS changes: - -{% info_block warningBox "Verification" %} -Make sure that the following widgets have been registered:
ModuleTest
`QuickOrderPageWidget`Go to the quick order page. A shopping cart list should be added to the Add to cart form.
-{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-reorder-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-reorder-feature-integration.md deleted file mode 100644 index eb189f1e307..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/multiple-carts-reorder-feature-integration.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Multiple Carts- Reorder feature integration -description: The Reorder Feature allows reordering previous orders. This guide will walk you through the process of integrating the feature into your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-carts-reorder-feature-integration-201811 -originalArticleId: 7c4a1406-56e4-4dde-9e19-5d1919ff858f -redirect_from: - - /v1/docs/multiple-carts-reorder-feature-integration-201811 - - /v1/docs/en/multiple-carts-reorder-feature-integration-201811 ---- - -## Install Feature Core - -### Prerequisites - -Install the required features: - -| Name | Version | -| --- | --- | -| Multiple Carts | 2018.11.0 | -| Reorder | 2018.11.0 | -| Spryker Core | 2018.11.0 | - -### 1) Set up Behavior - -Register the following plugin: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ReorderPersistentCartChangeExpanderPlugin` | Adds a default reorder name and adds it to add item request. | 1 | `Spryker\Client\MultiCart\Plugin`| - -
-src/Pyz/Client/PersistentCart/PersistentCartDependencyProvider.php - -```php - -
- -{% info_block warningBox “Verification” %} - -When using the reorder feature, a new customer quote must be created with the name "Cart from order {Order reference}". -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/navigation-module-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/navigation-module-integration.md deleted file mode 100644 index bf92423157f..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/navigation-module-integration.md +++ /dev/null @@ -1,248 +0,0 @@ ---- -title: Navigation Module Integration -description: The guide walks you through the process of installing the Navigation Module into your project. -last_updated: Nov 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/navigation-module-integration -originalArticleId: 337c761c-835b-4610-929b-79f998532f25 -redirect_from: - - /v1/docs/navigation-module-integration - - /v1/docs/en/navigation-module-integration - - /docs/scos/dev/feature-integration-guides/201811.0/navigation-feature-integration.html ---- - -## Prerequisites -To prepare your project to work with Navigation: - -1. Require the Navigation modules in your `composer.json`. -2. Install the new database tables By running `vendor/bin/console propel:diff`. Propel will generate a migration file with the changes. -3. Apply the database changes by running `vendor/bin/console propel:migrate`. -4. Generate ORM models by running `vendor/bin/console propel:model:build`. -5. After running this command you’ll find some new classes in your project under `\Orm\Zed\Navigation\Persistence` namespace. - - It’s important to make sure that they extend the base classes from the Spryker core, e.g.: - - * `\Orm\Zed\Navigation\Persistence\SpyNavigation` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigation` - * `\Orm\Zed\Navigation\Persistence\SpyNavigationNode` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigationNode` - * `\Orm\Zed\Navigation\Persistence\SpyNavigationNodeLocalizedAttributes` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigationNodeLocalizedAttributes` - * `\Orm\Zed\Navigation\Persistence\SpyNavigationQuery` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigationQuery` - * `\Orm\Zed\Navigation\Persistence\SpyNavigationNodeQuery` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigationNodeQuery` - * `\Orm\Zed\Navigation\Persistence\SpyNavigationNodeLocalizedAttributesQuery` extends `\Spryker\Zed\Navigation\Persistence\Propel\AbstractSpyNavigationNodeLocalizedAttributesQuery` - -6. To get the new transfer objects, run `vendor/bin/console transfer:generate`. -7. Make sure that the new Zed UI assets are also prepared for use by running the `npm run zed` command (or `antelope build zed` for older versions). -8. To make the navigation management UI available in Zed navigation, run the `vendor/bin/console application:build-navigation-cache` command. -9. Activate the navigation menu collector by adding the `NavigationMenuCollectorStoragePlugin` to the storage collector plugin stack. To do that, see the following example: - -```php - new NavigationMenuCollectorStoragePlugin(), - ]; - }; - - // ... - } -} -``` -### Data Setup -You should now be able to manage navigation menus from Zed UI, and the collectors should also be able to export the navigation menus to the KV storage. This is a good time to implement an installer in your project to install a selection of frequently used navigation menus. - -### Usage in Yves -The KV storage should by now have some navigation menus we can display in our frontend. - -The `Navigation` module ships with a twig extension that provides the `spyNavigation()` twig function which renders a navigation menu. - -`spyNavigation()` accepts two parameters: - -* `$navigationKey`: Reference of a navigation menu by its key field (for example, "MAIN_NAVIGATION"). -* `$template`: Template path used to render the navigation menu (for example, `"@application/layout/navigation/main.twig"`). - -To enable the navigation twig function, register `\Spryker\Yves\Navigation\Plugin\Provider\NavigationTwigServiceProvider` in your application’s bootstrap. - -```php -application->register(new NavigationTwigServiceProvider()); - } -} -``` - -Example of rendering navigation in an Yves twig template: - -``` -{% raw %}{{{% endraw %} spyNavigation('MAIN_NAVIGATION', '@application/layout/navigation/main.twig') {% raw %}}}{% endraw %} -``` - -### Rendering Navigation Templates -The templates used to render a navigation menu use the `navigationTree` template variable to traverse the navigation tree. The variable contains an instance of `\Generated\Shared\Transfer\NavigationTreeTransfer` with only one localized attribute per node for the current locale. - -The following code examples show the Demoshop implementation of how to render `MAIN_NAVIGATION` which is a multi-level navigation menu. For styling we used the [Menu](https://foundation.zurb.com/sites/docs/menu.html) and [Dropdown](https://foundation.zurb.com/sites/docs/dropdown.html) components from Foundation framework. - -In `Pyz/Yves/Application/Theme/default/layout/navigation/main.twig` we traverse the root navigation nodes of the navigation tree and for each root node we render their children nodes as well. - -
-Code sample: - -``` -
-
-
- - - {% raw %}{%{% endraw %} for node in navigationTree.nodes {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if node.navigationNode.isActive {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if node.children|length {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
-
-
-``` - -
-
- -The children nodes are rendered recursively by `Pyz/Yves/Application/Theme/default/layout/navigation/_partials/nodes.twig`. - -
-Code sample: - -``` - -``` - -
-
- -To prevent code duplication we implemented the `Pyz/Yves/Application/Theme/default/layout/navigation/_partials/base-node.twig` template which we use to render a node by embedding it in the templates above. - -This is also the place where we take the visibility controller parameters into account : `valid_from`, `valid_to`, and `is_active`. - -
-Code sample: - -``` -{% raw %}{%{% endraw %} set class = node.navigationNode.navigationNodeLocalizedAttributes[0].cssClass {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} set url = node.navigationNode.navigationNodeLocalizedAttributes[0].url {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} set externalUrl = node.navigationNode.navigationNodeLocalizedAttributes[0].externalUrl {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} set link = node.navigationNode.navigationNodeLocalizedAttributes[0].link {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} set title = node.navigationNode.navigationNodeLocalizedAttributes[0].title {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} set today = "now"|date("Ymd") {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if node.navigationNode.isActive and - (node.navigationNode.validFrom is empty or node.navigationNode.validFrom|date("Ymd") ‹= today) and - (node.navigationNode.validTo is empty or node.navigationNode.validTo|date("Ymd") >= today) -{% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block nodeContainer {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if url {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block url {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elseif link {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block link {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elseif externalUrl {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block externalUrl {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block other {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -``` - -
-
diff --git a/docs/scos/dev/feature-integration-guides/201811.0/packaging-units-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/packaging-units-feature-integration.md deleted file mode 100644 index f2318cc7175..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/packaging-units-feature-integration.md +++ /dev/null @@ -1,983 +0,0 @@ ---- -title: Packaging Units feature integration -description: The Product Packaging Unit Feature allows defining packaging units per abstract product. This guide describes how to integrate the feature into your project. -last_updated: Nov 22, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-packaging-unit-feature-integration-201811 -originalArticleId: ed9202f3-fbd2-49c6-b1ed-a1bfe4548f9c -redirect_from: - - /v1/docs/product-packaging-unit-feature-integration-201811 - - /v1/docs/en/product-packaging-unit-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Inventory Management | 2018.11.0 | -|Spryker Core|2018.11.0| -|Order Management|2018.11.0| -|Product|2018.11.0| -|Measurement Units|2018.11.0| - -### 1) Install the required modules using Composer - -Run the following command(s) to install the required modules: -``` -composer require spryker-feature/packaging-units: "^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following modules were installed: - -|Module|Expected directory| -|--- |--- | -|`ProductPackagingUnit`|`vendor/spryker/product-packaging-unit`| -|`ProductPackagingUnitDataImport`|`vendor/spryker/product-packaging-unit-data-import`| -|`ProductPackagingUnitStorage`|`vendor/spryker/product-packaging-unit-storage`| - -{% endinfo_block %} - -### 2) Set up Configuration -Adjust synchronization queue pools in configuration: - -**src/Pyz/Zed/ProductPackagingUnitStorage/ProductPackagingUnitStorageConfig.php** - -```php - -|Affected entity | Triggered events | -| --- | --- | -| `spy_product_packaging_unit` |
  • `Entity.spy_product_packaging_unit.create`
  • `Entity.spy_product_packaging_unit.update`
  • `Entity.spy_product_packaging_unit.delete`
| -| `spy_product_packaging_unit_type` |
  • `Entity.spy_product_packaging_unit_type.creat`
  • `Entity.spy_product_packaging_unit_type.update`
  • `Entity.spy_product_packaging_unit_type.delete`
| -| `spy_product_packaging_unit_amount` |
  • `Entity.spy_product_packaging_unit_amount.create`
  • `Entity.spy_product_packaging_unit_amount.update`
  • `Entity.spy_product_packaging_unit_amount.delete`
| -| `spy_product_packaging_lead_product` |
  • `Entity.spy_product_packaging_lead_product.create`
  • `Entity.spy_product_packaging_lead_product.update`
  • `Entity.spy_product_packaging_lead_product.delete`
| - - -**src/Pyz/Zed/ProductPackagingUnit/Persistence/Propel/Schema/spy_product_packaging_unit.schema.xml** - -```xml - - - - - - - -
- - - - - -
- - - - - -
- - - - - -
-
-``` - -Set up synchronization queue pools so that non-multi-store entities (not store specific entities) can be synchronized among stores: - -**src/Pyz/Zed/ProductPackagingUnitStorage/Persistence/Propel/Schema/spy_product_abstract_packaging_storage.schema.xml** - -```xml - - - - - - - -
- -
-``` - -Run the following commands to apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` -{% info_block warningBox "Verification" %} - -Make sure that the following changes have been applied by checking your database: - -|Database entity|Type|Event| -|--- |--- |--- | -|`spy_product_packaging_unit`|table|created| -|`spy_product_packaging_unit_type`|table|created| -|`spy_product_packaging_unit_amount`|table|created| -|`spy_product_packaging_lead_product`|table|created| -|`spy_product_abstract_packaging_storage`|table|created| -|`spy_sales_order_item.amount`|column|created| -|`spy_sales_order_item.amount_sku`|column|created| - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - -Make sure that the following changes in transfer objects have been applied: - -|Transfer|Type|Event|Path| -|--- |--- |--- |--- | -|`ProductPackagingUnitType`|class|created|`src/Generated/Shared/Transfer/ProductPackagingUnitTypeTransfer`| -|`ProductPackagingUnitTypeTranslation`|class|created|`src/Generated/Shared/Transfer/ProductPackagingUnitTypeTranslationTransfer`| -|`ProductPackagingUnit`|class|created|`src/Generated/Shared/Transfer/ProductPackagingUnitTransfer`| -|`ProductPackagingUnitAmount`|class|created|`src/Generated/Shared/Transfer/ProductPackagingUnitAmountTransfer`| -|`ProductPackagingLeadProduct`|class|created|`src/Generated/Shared/Transfer/ProductPackagingLeadProductTransfer`| -|`Item`|class|created|`src/Generated/Shared/Transfer/ItemTransfer`| -|`ProductConcretePackagingStorage`|class|created|`src/Generated/Shared/Transfer/ProductConcretePackagingStorageTransfer`| -|`ProductAbstractPackagingStorage`|class|created|`src/Generated/Shared/Transfer/ProductAbstractPackagingStorageTransfer`| -|`SpyProductPackagingLeadProductEntity`|class|created|`src/Generated/Shared/Transfer/SpyProductPackagingLeadProductEntityTransfer`| -|`SpyProductPackagingUnitAmountEntity`|class|created|`src/Generated/Shared/Transfer/SpyProductPackagingUnitAmountEntityTransfer`| -|`SpyProductPackagingUnitEntity`|class|created|`src/Generated/Shared/Transfer/SpyProductPackagingUnitEntityTransfer`| -|`SpyProductPackagingUnitTypeEntity`|class|created|`src/Generated/Shared/Transfer/SpyProductPackagingUnitTypeEntityTransfer`| -|`SpyProductAbstractPackagingStorageEntity`|class|created|`src/Generated/Shared/Transfer/SpyProductAbstractPackagingStorageEntityTransfer`| -|`SpySalesOrderItemEntityTransfer.amount`|property|created|`src/Generated/Shared/Transfer/SpySalesOrderItemEntityTransfer`| -|`SpySalesOrderItemEntityTransfer.amountSku`|property|created|`src/Generated/Shared/Transfer/SpySalesOrderItemEntityTransfer`| - -{% endinfo_block %} - -{% info_block warningBox “Verification” %} - -Make sure that the changes have been implemented successfully. For this purpose, trigger the following methods and make sure that the above events have been triggered: - -|Path|Method name| -|--- |--- | -|`src/Orm/Zed/ProductPackagingUnit/Persistence/Base/SpyProductPackagingLeadProduct.php`|`prepareSaveEventName()``addSaveEventToMemory()``addDeleteEventToMemory()`| -|`src/Orm/Zed/ProductPackagingUnit/Persistence/Base/SpyProductPackagingUnit.php`|`prepareSaveEventName()``addSaveEventToMemory()``addDeleteEventToMemory()`| -|`src/Orm/Zed/ProductPackagingUnit/Persistence/Base/SpyProductPackagingUnitAmount.php`|`prepareSaveEventName()``addSaveEventToMemory()``addDeleteEventToMemory()`| -|`src/Orm/Zed/ProductPackagingUnit/Persistence/Base/SpyProductPackagingUnitType.php`|`prepareSaveEventName()``addSaveEventToMemory()``addDeleteEventToMemory()`| -|`src/Orm/Zed/ProductPackagingUnitStorage/Persistence/Base/SpyProductAbstractPackagingStorage.php`|`sendToQueue()`| - -{% endinfo_block %} - -### 4) Add Translations -Append glossary according to your language configuration: - -**src/data/import/glossary.csv** - -```yaml -cart.pre.check.availability.failed.lead.product,Products inside the item 'sku' are not available at the moment.,en_US -cart.pre.check.availability.failed.lead.product,Produkte im Artikel 'sku' sind momentan nicht verfügbar.,de_DE -product.unavailable,Product '%sku%' is not available at the moment,en_US -product.unavailable,Das Produkt '%sku%' ist momentan nicht verfügbar,de_DE -cart.pre.check.amount.min.failed,Die minimale Mengenanforderung für Produkt SKU '%sku%' ist nicht erreicht.,de_DE -cart.pre.check.amount.min.failed,Minimum amount requirements for product SKU '%sku%' are not fulfilled.,en_US -cart.pre.check.amount.max.failed,Die maximale Mengenanforderung für Produkt SKU '%sku%' ist überschritten.,de_DE -cart.pre.check.amount.max.failed,Maximum amount for product SKU '%sku%' is exceeded.,en_US -cart.pre.check.amount.interval.failed,Die Anzahl für Produkt SKU '%sku%' liegt nicht innerhalb des vorgegebenen Intervals.,de_DE -cart.pre.check.amount.interval.failed,Amount interval requirements for product SKU '%sku%' are not fulfilled.,en_US -cart.pre.check.amount.is_not_variable.failed,Standardbetrag für Produkt SKU '%sku%' ist überschritten.,de_DE -cart.pre.check.amount.is_not_variable.failed,Default amount requirements for product SKU '%sku%' are not fulfilled.,en_US -``` - - -{% info_block infoBox "Info" %} - -All packaging unit type needs to have glossary entities for the configured locales. - -{% endinfo_block %} - -Infrastructural record's glossary keys: - -**src/data/import/glossary.csv** - -```yaml -packaging_unit_type.item.name,Item,en_US -packaging_unit_type.item.name,Stück,de_DE -``` - - -Demo data glossary keys: - -**src/data/import/glossary.csv** - -```yaml -packaging_unit_type.ring_500.name,"Ring (500m)",en_US -packaging_unit_type.ring_500.name,"Ring (500m)",de_DE -packaging_unit_type.box.name,Box,en_US -packaging_unit_type.box.name,Box,de_DE -packaging_unit_type.palette.name,Palette,en_US -packaging_unit_type.palette.name,Palette,de_DE -packaging_unit_type.giftbox.name,Giftbox,en_US -packaging_unit_type.giftbox.name,Geschenkbox,de_DE -packaging_unit_type.valentines_special.name,"Valentine's special",en_US -packaging_unit_type.valentines_special.name,Valentinstag Geschenkbox,de_DE -packaging_unit_type.pack_20.name,Pack 20,en_US -packaging_unit_type.pack_20.name,Pack 20,de_DE -packaging_unit_type.pack_500.name,Pack 500,en_US -packaging_unit_type.pack_500.name,Pack 500,de_DE -packaging_unit_type.pack_100.name,Pack 100,en_US -packaging_unit_type.pack_100.name,Pack 100,de_DE -packaging_unit_type.pack_mixed.name,Mixed Screws boxes,en_US -packaging_unit_type.pack_mixed.name,Gemischte Schraubenkästen,de_D -``` - - -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that the configured data in the database has been added to the `spy_glossary` table. -{% endinfo_block %} - -### 5) Configure Export to Redis - -This step will publish tables on change (create, edit, delete) to `spy_product_abstract_packaging_storage` and synchronise the data to Storage. - -#### Set up Event Listeners - -|Plugin |Specification | Prerequisites | Namespace| -| --- | --- | --- | --- | -| `ProductPackagingUnitStorageEventSubscriber` | Registers listeners that are responsible for publishing product abstract packaging unit storage entity changes when a related entity change event occurs. | None | `Spryker\Zed\ProductPackagingUnitStorage\Communication\Plugin\Event\Subscriber` | - -**src/Pyz/Zed/Event/EventDependencyProvider.php** - -```php -add(new ProductPackagingUnitStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` - - -#### Set up Re-Generate and Re-Sync Features - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductPackagingUnitSynchronizationDataPlugin` | Allows synchronizing the whole storage table content into Storage. | None | `Spryker\Zed\ProductPackagingUnitStorage\Communication\Plugin\Synchronization` | - -**src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php** - -```php - -| Column |Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `concrete_sku` | mandatory | string |218_123 | Glossary key that will be used for display. Each name needs glossary key definition for all configured locales. | -|`is_lead_product`|mandatory|bool
integer|1|
  • Decides if the current `concrete_sku` is the lead concrete product of the product abstract.
  • Important: Exactly 1 concrete product has to be a lead product in a packaging unit-based product abstract.
| -|`has_lead_product`|optional|bool
integer|0|
  • Relevant for non-lead product concretes only.
  • Decides if the current product concrete has "amount" options. (The amount represents the lead product.)
  • Default value is 0 when not provided.
| -|`packaging_unit_type_name`|mandatory|string|`packaging_unit_type.ring_500.name`|Type name of the current concrete product.| -|`default_amount`|optional|positive integer|5|
| -|`is_variable`|optional|bool
integer|1|
  • Allows customers to override the default_amount and decide how many lead products will be ordered for each quantity of this product concrete.
  • Effective only if current product concrete has_lead_product = 1.
  • Default value is 0 when not provided.
| -|`amount_min`|optional|positive integer|3|
  • Restricts a customer to buy at least this amount of lead products.
  • Effective only if is_variable = 1.
  • Default value is 1 when not provided.
| -|`amount_max`|optional|positive integer|5|
  • Restricts a customer not to not buy more than this value.
  • Effective only if is_variable = 1.
  • Default value remains empty (unlimited) when not provided.
| -|`amount_interval`|optional|positive integer|2|
  • Restricts customers to buy an amount that fits into the interval beginning with amount_min.
  • Effective only if is_variable = 1.
  • Default value is amount_min when not provided.

Min = 3; Max = 10; Interval = 2
Choosable: 3, 5, 7, 9

| - - -Register the following plugin to enable data import: - -
-| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductPackagingUnitDataImportPlugin` | Imports packaging unit type data into the database. |
  • Requires related product concretes and product abstract to be present in the database already.
  • Requires related packaging unit types to be present in the database already.
| `Spryker\Zed\ProductPackagingUnitDataImport\Communication\Plugin\DataImport` | -
- -**src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** - -```php - -src/Pyz/Client/Cart/CartDependencyProvider.php - -```php - - -**src/Pyz/Zed/Checkout/CheckoutDependencyProvider.php** - -```php - -src/data/import/glossary.csv - -```yaml -packaging-units.recommendation.amount-min-violation,Minimum amount requirements for product are not fulfilled,en_US -packaging-units.recommendation.amount-min-violation,Mindestmengenanforderungen für das Produkt sind nicht erfüllt,de_DE -packaging-units.recommendation.amount-max-violation,Maximum amount requirements for product are not fulfilled,en_US -packaging-units.recommendation.amount-max-violation,Maximale Mengenanforderungen für das Produkt sind nicht erfüllt,de_DE -packaging-units.recommendation.amount-interval-violation,Amount interval requirements for product are not fulfilled,en_US -packaging-units.recommendation.amount-interval-violation,Mengenintervallanforderungen für das Produkt sind nicht erfüllt,de_DE -packaging_units.recommendation.suggestion,Would you like to add:,en_US -packaging_units.recommendation.suggestion,Möchten Sie hinzufügen:,de_DE -packaging_units.recommendation.between-units-info,The amount you have chosen is in between 2 base units,en_US -packaging_units.recommendation.between-units-info,Ihre gewählte Anzahl liegt zwischen 2 basis Einheiten,de_DE -packaging_units.cart.quantity,Quantity,en_US -packaging_units.cart.quantity,Anzahl,de_DE -packaging_units.cart.amount,Amount,en_US -packaging_units.cart.amount,Betrag,de_DE -packaging_units.cart.item,Items,en_US -packaging_units.cart.item,Artikel,de_DE -page.detail.add-to-cart,In den Warenkorb,de_DE -page.detail.add-to-cart,Add to Cart,en_US -product.measurement.sales_unit,Sales Unit,en_US -product.measurement.sales_unit,Maßeinheit,de_DE -cart.item_quantity,Anzahl,de_DE -cart.item_quantity,Quantity,en_US -measurement_units.new-price,New price,en_US -measurement_units.new-price,Neuer Preis,de_DE -measurement_units.recommendation.between-units-info,The quantity you have chosen is in between 2 base units,en_US -measurement_units.recommendation.between-units-info,Ihre gewählte Anzahl liegt zwischen 2 basis Einheiten,de_DE -measurement_units.recommendation.min-violation,Minimum quantity requirements for product are not fulfilled,en_US -measurement_units.recommendation.min-violation,Minimale Mengenanforderungen für das Produkt sind nicht erfüllt,de_DE -measurement_units.recommendation.max-violation,Maximum quantity requirements for product are not fulfilled,en_US -measurement_units.recommendation.max-violation,Maximale Mengenanforderungen für das Produkt sind nicht erfüllt,de_DE -measurement_units.recommendation.suggestion,Would you like to add,en_US -measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? ,de_DE -``` -
- -Run the following console command to import data: -``` -console data:import glossary -``` -{% info_block warningBox "Verification" %} -Make sure that the configured data in the database has been added to the `spy_glossary` table. -{% endinfo_block %} - -### 3) Set up Widgets -Enable the following global widget(s): - -| Widget | Description | Namespace | -| --- | --- | --- | -| `ProductPackagingUnitWidget` | Displays product packaging options for quantity and amount. | `SprykerShop\Yves\ProductPackagingUnitWidget\Widget` | - -**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** - -```php - -| Functionality | Path | -| --- | --- | -|
  • Controls base unit => sales unit calculations
  • Applies product quantity and amount restrictions on sales unit level
  • Offers recommendation when invalid quantity or amount is selected
  • Maintains stock-based quantity, amount and sales unit information for posting
| `vendor/spryker-shop/product-packaging-unit-widget/src/SprykerShop/Yves/ProductPackagingUnitWidget/Theme/default/components/molecules/packaging-unit-quantity-selector/packaging-unit-quantity-selector.ts` | - - -Run the following command to enable Javascript and CSS changes: -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} -- Check if the amount field appears on the Product Detail page for items with packaging units. -- Check if the amount field appears correctly with measurement unit information on the Cart page. -- Check if the amount field appears correctly with measurement unit information on the Checkout Summary page. -- Check if the amount field appears correctly with measurement unit information on the previous Orders page. -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/payment-provider-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/payment-provider-integration.md deleted file mode 100644 index 071b9fd89e3..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/payment-provider-integration.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Payment Provider Integration -last_updated: Oct 4, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/payment-provider-integration-guide -originalArticleId: eed77b9e-8585-4399-974d-3054ad0cb239 -redirect_from: - - /v1/docs/payment-provider-integration-guide - - /v1/docs/en/payment-provider-integration-guide ---- - -The Spryker Commerce OS offers integrations with several payment providers that can be used in the checkout and order management. Easily define the availability of a provider based on customer preferences and local regulations and specify the order the providers are displayed in during checkout. - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/permissions-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/permissions-feature-integration.md deleted file mode 100644 index 6ea7be78278..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/permissions-feature-integration.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Permissions feature integration -description: The guide provides a step-by-step procedure to install the Permissions feature into your project. -last_updated: Jan 28, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/permissions-feature-integration -originalArticleId: dcbe1c81-4321-4a83-aa41-e8b154f1eaa0 -redirect_from: - - /v1/docs/permissions-feature-integration - - /v1/docs/en/permissions-feature-integration ---- - -The Permissions feature is shipped with following modules: - -| Module | Description | -| --- | --- | -| [Permission](https://github.com/spryker/spryker/tree/master/Bundles/Permission) | Provides permissions support that can be used as a part of ACL / RBAC. | -| [PermissionExtension](https://github.com/spryker/spryker/tree/master/Bundles/PermissionExtension) | Holds a set of plugin interfaces that can be used as extension points of the Permission module. | - -To install the feature, follow the steps below: -1. Install necessary modules using composer: - -```bash -composer update "spryker/*" "spryker-shop/*" -composer require spryker/permission-extension:"^1.0.0" spryker/permission:"^1.0.0" -``` - -2. Add plugins to Zed `CustomerDependencyProvider`: - - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `CompanyRole` | `PermissionCustomerExpanderPlugin` | Adds permissions to the company user. | `getCustomerTransferExpanderPlugins` | -| `CompanyUser` | `CustomerTransferCompanyUserExpanderPlugin` | Adds company user information to customer transfer. | `getCustomerTransferExpanderPlugins` | - -**src/Pyz/Zed/Customer/CustomerDependencyProvider.php** - -```php -namespace Pyz\Zed\Customer; - -use Spryker\Zed\CompanyUser\Communication\Plugin\Customer\CustomerTransferCompanyUserExpanderPlugin; -use Spryker\Zed\CompanyRole\Communication\Plugin\PermissionCustomerExpanderPlugin; -use Spryker\Zed\Customer\CustomerDependencyProvider as SprykerCustomerDependencyProvider; - -class CustomerDependencyProvider extends SprykerCustomerDependencyProvider -{ - - /** - * @return \Spryker\Zed\Customer\Dependency\Plugin\CustomerTransferExpanderPluginInterface[] - */ - protected function getCustomerTransferExpanderPlugins() - { - return [ - new PermissionCustomerExpanderPlugin(), - new CustomerTransferCompanyUserExpanderPlugin() - ]; - } -} -``` - -3. Synchronize permission plugins with storage: - -Go to the Administration interface, **Maintenance** menu and click **Sync permissions**. diff --git a/docs/scos/dev/feature-integration-guides/201811.0/prices-per-merchant-relation-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/prices-per-merchant-relation-feature-integration.md deleted file mode 100644 index e24f89d6e90..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/prices-per-merchant-relation-feature-integration.md +++ /dev/null @@ -1,370 +0,0 @@ ---- -title: Prices per Merchant Relation feature integration -description: The guide walks you through the process of installing the Prices per Merchant feature in your project. -last_updated: Nov 19, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/prices-per-merchant-relation-integration -originalArticleId: 79207ebd-13cf-4bd0-8c6e-b1f9f36f0298 -redirect_from: - - /v1/docs/prices-per-merchant-relation-integration - - /v1/docs/en/prices-per-merchant-relation-integration ---- - -The Price per Merchant Relation feature is shipped with the following modules: - - -| Module | Description | -| --- | --- | -| [PriceProductMerchantRelationship](https://github.com/spryker/price-product-merchant-relationship) | Bears the logic for setting specific product prices per merchant relationship. | -| [PriceProductExtension](https://github.com/spryker/price-product-extension) | Provides plugin interfaces to extend the `PriceProduct` module. | -| [PriceProductMerchantRelationshipDataImport](https://github.com/spryker/price-product-merchant-relationship-data-import) | Contains demo data and importer for price products for merchant relations. | -| [PriceProductMerchantRelationshipStorage](https://github.com/spryker/price-product-merchant-relationship-storage) | Saves prices for merchant relations into Storage and contains plugins for reading them. | -| [PriceProductStorageExtension](https://github.com/spryker/price-product-storage-extension) | Provides plugin interfaces to extend the `PriceProductStorage` module. | -| [PriceProductPriceProduct](https://github.com/spryker/price-product) | Provides product price related functionality, price persistence, current price resolvers per currency/price mode. | - -To install the Price per Merchant Relation feature, follow the steps below: -1. Install the necessary modules using composer: - -Update the existing and install the required modules: - -```bash -composer update "spryker/*" -``` - -```bash -composer require spryker/price-product:"^2.0.0" spryker/price-product-data-import:"^0.1.0" spryker/price-product-extension:"^1.0.0" -spryker/price-product-merchant-relationship:"^1.0.0" spryker/price-product-merchant-relationship-data-import:"^0.1.0" -spryker/price-product-merchant-relationship-storage:"^1.0.0" spryker/price-product-storage:"^2.0.0" spryker/price-product-storage-extension:"^1.0.0" --update-with-dependencies -``` - -2. Add a plugin to Client's `PriceProductStorageDependencyProvider`: - - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `PriceProductStorage` | `PriceProductMerchantRelationshipStorageDimensionPlugin` | Reads prices for merchant relations from Redis to show them in catalog. | `getPriceDimensionPlugins` | - -**src/Pyz/Client/PriceProductStorage/PriceProductStorageDependencyProvider.php** - -```php - - - - - - - -
- -
-``` - -9. Add the event subscriber to Zed `EventDependencyProvider`: - - -| Module | Event Subscriber Name | Method in EventDependencyProvider | -| --- | --- | --- | -| `Event` | `PriceProductMerchantRelationshipStorageEventSubscriber` | `getEventSubscriberCollection` | - -**src/Pyz/Zed/Event/EventDependencyProvider.php** - -```php -namespace Pyz\Zed\Event; -... -use Spryker\Zed\PriceProductMerchantRelationshipStorage\Communication\Plugin\Event\Subscriber\PriceProductMerchantRelationshipStorageEventSubscriber; -use Spryker\Zed\PriceProductStorage\Communication\Plugin\Event\Subscriber\PriceProductStorageEventSubscriber; -use Spryker\Zed\ProductCategoryFilterStorage\Communication\Plugin\Event\Subscriber\ProductCategoryFilterStorageEventSubscriber; -use Spryker\Zed\ProductCategoryStorage\Communication\Plugin\Event\Subscriber\ProductCategoryStorageEventSubscriber; -... -class EventDependencyProvider extends SprykerEventDependencyProvider -{ - /** - * @return \Spryker\Zed\Event\Dependency\EventCollectionInterface - */ - public function getEventListenerCollection() - { - return parent::getEventListenerCollection(); - } - /** - * @return \Spryker\Zed\Event\Dependency\EventSubscriberCollectionInterface - */ - public function getEventSubscriberCollection() - { - $eventSubscriberCollection = parent::getEventSubscriberCollection(); - /** - * Storage Events - */ -... - $eventSubscriberCollection->add(new ProductLabelStorageEventSubscriber()); - $eventSubscriberCollection->add(new ProductSetStorageEventSubscriber()); - $eventSubscriberCollection->add(new ProductSearchConfigStorageEventSubscriber()); - $eventSubscriberCollection->add(new PriceProductMerchantRelationshipStorageEventSubscriber()); -... -``` - -10. `Change/create` class in Zed `PriceProduct` module: `PriceProductDependencyProvider` - -**src/Pyz/Zed/PriceProduct/PriceProductDependencyProvider.php** - -```php -namespace Pyz\Zed\PriceProduct; -use Spryker\Zed\PriceProduct\PriceProductDependencyProvider as SprykerPriceProductDependencyProvider; -use Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct\MerchantRelationshipPriceDimensionAbstractWriterPlugin; -use Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct\MerchantRelationshipPriceDimensionConcreteWriterPlugin; -use Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct\MerchantRelationshipPriceProductDimensionExpanderStrategyPlugin; -use Spryker\Zed\PriceProductMerchantRelationship\Communication\Plugin\PriceProduct\MerchantRelationshipPriceQueryCriteriaPlugin; -/** - * Copyright © 2017-present Spryker Systems GmbH. All rights reserved. - * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file. - */ -class PriceProductDependencyProvider extends SprykerPriceProductDependencyProvider -{ - /** - * {@inheritdoc} - * - * @return \Spryker\Zed\PriceProductExtension\Dependency\Plugin\PriceDimensionQueryCriteriaPluginInterface[] - */ - protected function getPriceDimensionQueryCriteriaPlugins(): array - { - return array_merge(parent::getPriceDimensionQueryCriteriaPlugins(), [ - new MerchantRelationshipPriceQueryCriteriaPlugin(), - ]); - } - /** - * {@inheritdoc} - * - * @return \Spryker\Zed\PriceProductExtension\Dependency\Plugin\PriceDimensionAbstractSaverPluginInterface[] - */ - protected function getPriceDimensionAbstractSaverPlugins(): array - { - return [ - new MerchantRelationshipPriceDimensionAbstractWriterPlugin(), - ]; - } - /** - * {@inheritdoc} - * - * @return \Spryker\Zed\PriceProductExtension\Dependency\Plugin\PriceDimensionConcreteSaverPluginInterface[] - */ - protected function getPriceDimensionConcreteSaverPlugins(): array - { - return [ - new MerchantRelationshipPriceDimensionConcreteWriterPlugin(), - ]; - } - /** - * @return \Spryker\Service\PriceProductExtension\Dependency\Plugin\PriceProductDimensionExpanderStrategyPluginInterface[] - */ - protected function getPriceProductDimensionExpanderStrategyPlugins(): array - { - return [ - new MerchantRelationshipPriceProductDimensionExpanderStrategyPlugin(), - ]; - } -} -``` - -{% info_block infoBox %} -See [Migration Guide - PriceProduct](/docs/pbc/all/price-management/{{site.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-priceproduct-module.html) for information on how to migrate to a newer version of the `PriceProduct` module with price dimensions support. -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/product-groups-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/product-groups-feature-integration.md deleted file mode 100644 index 988b44c5152..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/product-groups-feature-integration.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Product Groups feature integration -description: The guide describes the process of installing the Product Group feature in your project. -last_updated: Jul 31, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-group-feature-integration -originalArticleId: e70308c7-52c5-4bd6-be72-a158a2317b8d -redirect_from: - - /v1/docs/product-group-feature-integration - - /v1/docs/en/product-group-feature-integration ---- - -## Prerequisites - -To prepare your project to work with Product groups: - -1. Require the Product Group modules in your `composer.json` by running `composer require spryker/product-group spryker/product-group-collector`. -2. Install the new database tables by running `vendor/bin/console propel:diff`. Propel should generate a migration file with the changes. -3. Apply the database changes: run `vendor/bin/console propel:migrate`. -4. Generate ORM models: run `vendor/bin/console propel:model:build`. -* After running this command, you’ll find some new classes in your project under the `\Orm\Zed\ProductGroup\Persistence` namespace. It’s important that you make sure that they extend the base classes from the Spryker core, e.g.: -* `\Orm\Zed\ProductGroup\Persistence\SpyProductGroup` extends `\Spryker\Zed\ProductGroup\Persistence\Propel\AbstractSpyProductGroup` -* `\Orm\Zed\ProductGroup\Persistence\SpyProductAbstractGroup` extends `\Spryker\Zed\ProductGroup\Persistence\Propel\AbstractSpyProductAbstractGroup` -* `\Orm\Zed\ProductGroup\Persistence\SpyProductGroupQuery` extends `\Spryker\Zed\ProductGroup\Persistence\Propel\AbstractSpyProductGroupQuery` -* `\Orm\Zed\ProductGroup\Persistence\SpyProductAbstractGroupQuery` extends `\Spryker\Zed\ProductGroup\Persistence\Propel\AbstractSpyProductAbstractGroupQuery` - -5. Run `vendor/bin/console transfer:generate` to get the new transfer objects. -6. Activate the product group collectors by adding the `ProductGroupCollectorStoragePlugin` and `ProductAbstractGroupsCollectorStoragePlugin` to the storage collector plugin stack, see example below: - -```php - new ProductGroupCollectorStoragePlugin(), - ProductGroupConfig::RESOURCE_TYPE_PRODUCT_ABSTRACT_GROUPS => new ProductAbstractGroupsCollectorStoragePlugin(), - ]; - }; - - // ... - } -} -``` - -## Data Setup -You should now be able to use the Zed API of the `ProductGroup` module to manage product groups, and the collectors should also be able to export them to the KV storage. This is a good time to implement an installer in your project to group products in a way how you’ll want to show them in your shop frontend. Check out our [Demoshop](https://github.com/spryker/demoshop) implementation for examples and ideas. - -## Usage in Yves -The KV storage should by now have some product groups we can display in our frontend. -The `ProductGroup` module is shipped with a twig extension that provides the `spyProductGroupItems() twig` function. This function collects necessary data from the KV storage and renders it in the specified way. - -`spyProductGroupItems()` accepts two parameters: -1. **$idProductAbstract**: Reference of an abstract product by its ID field. -2. **$template**: Template path used to render the product group items (for example, `"@ProductGroup/partials/product-group-items.twig"`). - -To enable this twig function, you’ll need to register `\Spryker\Yves\ProductGroup\Plugin\Provider\ProductGroupTwigServiceProvider` in your application’s bootstrap. - -```php -application->register(new ProductGroupTwigServiceProvider()); - } -} -``` - -Below there is an example of rendering product group items in a Yves twig template (for example, on catalog and product detail pages): - -```php -{% raw %}{{{% endraw %} spyProductGroupItems(idProductAbstract, '@ProductGroup/partials/product-group-items.twig') {% raw %}}}{% endraw %} -``` - -## Rendering Product Group Items Templates -The templates used to render product group items use the `productGroupItems` template variable. The variable is an array that contains abstract products from the same group(s) that the subject product is in. The abstract products are read from the KV storage (as they were stored by the storage product collector) for the current locale. - -The following code examples show the Demoshop implementation of how to render product group items. Our demo products have a `colorCode` attribute that we use as the group item selector in the shop. You could use any other attribute as well for group selector. - -In `Pyz/Yves/ProductGroup/Theme/default/partials/product-group-items.twig` we simply traverse the product group items and display a list of links to the PDP of each product in the group. The links represent the color of each product. - -```xml -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if productGroupItems|length {% raw %}%}{% endraw %} -
-
    - {% raw %}{%{% endraw %} for productGroupItem in productGroupItems {% raw %}%}{% endraw %} -
  • - -
  • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
-
- {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -In the catalog pages of our Demoshop we also added custom styling and Javascript to display the image of an item on mouseover, but what and how you want to display for each item in the group is entirely up to your implementation. diff --git a/docs/scos/dev/feature-integration-guides/201811.0/product-label-1.0-feature-integrtion.md b/docs/scos/dev/feature-integration-guides/201811.0/product-label-1.0-feature-integrtion.md deleted file mode 100644 index ea7d6b0592f..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/product-label-1.0-feature-integrtion.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: Product Label 1.0 Feature Integrtion -description: The Product Label feature allows highlighting specific products in your online shop. The guide describes how to integrate the feature in the project. -last_updated: Jan 28, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-label-feature-integration-1-0 -originalArticleId: 23b61d30-47d4-49a6-981d-add02b7c736d -redirect_from: - - /v1/docs/product-label-feature-integration-1-0 - - /v1/docs/en/product-label-feature-integration-1-0 ---- - -## Overview - -Product labels are used to show additional information for abstract products in shop front-ends. They can be managed through a dedicated Zed user interface and rendered in various ways in project implementations. - -## feature integration - -### Prerequisites - -To prepare your project for using Product Labels: - -1. Require the Product Label module in your `composer.json` by running `composer require spryker/product-label spryker/product-label-collector spryker/product-label-gui` -2. Install the required changes to the data structure by running console `propel:diff && console propel:migrate && console propel:model:build`. This will generate a migration file, run the migration against your database, and build all new Propel models. -3. Generate the new transfer objects by running `console transfer:generate` -4. Make sure the new Zed user interface assets are built by running `npm run zed` (or `antelope build zed` for older versions) -5. Update Zed's navigation cache to show the new items for the Product Label management user interface by running console `application:build-navigation-cache` -6. Activate the Product Label collectors by adding `\Spryker\Zed\ProductLabelCollector\Communication\Plugin\ProductLabelDictionaryCollectorStoragePlugin` and `\Spryker\Zed\ProductLabelCollector\Communication\Plugin\ProductLabelProductAbstractRelationCollectorStoragePlugin` to the storage collector plugin stack in your project implementation: - -```php - new ProductLabelDictionaryCollectorStoragePlugin(), - ProductLabelConstants::RESOURCE_TYPE_PRODUCT_ABSTRACT_PRODUCT_LABEL_RELATIONS => new ProductLabelProductAbstractRelationCollectorStoragePlugin(), - ]; - }; - - // ... - } -} -``` - -### Data Setup - -The Zed user interface can be used to manage product labels. The collectors that were enabled before will take care of exporting active labels to the key-value storage. Product labels can also be imported using the - -### Usage in Yves - -The Product Label module ships with a Twig extension to easily access and render product labels in templates. The extension registers a new Twig function called `spyProductLabels` that excepts two parameters: - -1. **$idProductAbstract**: ID of the abstract product to render labels for -2. **$templateName**: The name of a template to use for rendering the labels - -To enable the Twig extension it is necessary to register it as a new service provider in `\Pyz\Yves\Application\YvesBootstrap` - -```php -application->register(new ProductLabelTwigExtension()); - } -} -``` - -An example implementation of template rendering labels for an abstract product looks like this (e.g. on a product detail page): - -```php -
- {% raw %}{{{% endraw %} spyProductLabels(product.getIdProductAbstract(), '@ProductLabel/partials/group.twig') {% raw %}}}{% endraw %} -
-``` - -### Creating a Custom Template for Rendering Product Labels - -The template specified in the second parameter in the `spyProductLabels` Twig function receives a collection of transfer objects, each representing a product label containing data from the key-value storage. This collection will be empty for abstract products that are not assigned any product labels. All locale-specific label fields will be returned for the currently active store locale. - -Here's a simple example of a possible template: - -```php -
- {% raw %}{%{% endraw %} for productLabelTransfer in productLabelTransferCollection {% raw %}%}{% endraw %} - - - {% raw %}{{{% endraw %} productLabelTransfer.getName() {% raw %}}}{% endraw %} - - - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
-``` - -A more detailed example implementation is available in the [demo-shop](https://github.com/spryker/demoshop). - -### Checking Validity - -Product labels can be configured to have a validity date range. They will only be represented in the key-value storage if they fall between the `valid_from` and `valid_to` dates. - -{% info_block warningBox "Verification" %} -To make sure that invalid product labels become valid when the specified validity date range is entered, run the console command `console product-label:validity`. It will also handle labels that are currently valid but become invalid due to exceeding the `valid_to` date. The command checks validity date ranges for all active labels and "touch" the ones for which the validity state changes. -{% endinfo_block %} - -The [demo-shop](https://github.com/spryker/demoshop) ships with a Cronjob triggers this command once a day. - -## Under the hood - -### Database schema -![product_label_db.png](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/product_label_db%281%29.png) - -The `Product Label` module adds three new tables: - -1. **spy_product_label** -This table stores the main product label information such as its name, validity dates, flags, etc. -2. **spy_product_label_localized_attributes** -This tables stores all localized information. Currently it only stores the translated product label names. -3. **spy_product_label_product_abstract** -This table stores the relations between product labels and abstract products. - -### Representation In The Key-Value Storage - -Product labels are exported in two parts, a dictionary that contains all active and valid product-labels and a list of product label IDs for each abstract product. - -#### Product Label Dictionary - -The dictionary contains only active and valid product labels. The active state is derived from the `is_active` flag and validity is checked against the `valid_from` and `valid_to` fields. There is a dedicated transfer object that represents the structure of each product label in the dictionary, called `ProductLabelStorageTransfer`. - -#### Abstract Product to Product Label Relations - -All relations between an abstract product and a product label will be exported not taking into account active state and validity. - -When using `\Spryker\Client\ProductLabel\ProductLabelClient::findLabelsByIdProductAbstract()` (or the Twig function `spyProductLabels`) each relation is checked against the dictionary and only a collection of active and valid product labels will be returned for a single abstract product. This prevents having to update each product relation in the key-value storage whenever a product label changes thus reducing the number of required "touches". - -## Feature Extensions - -### Discounts Based on Product Labels - -It's possible to create discount rules based on products that have specific label(s). On the discount UI select the `product-label` rule for **Discount calculation** to define that the discount will be apply to the selected predefined labels. You can also select the `product-label` rule for **Conditions** to define that your discount is applied when the selected labels are present. - -Follow the steps below to activate this feature: - -1. Install `ProductLabelDiscountConnector` module in your project. -2. Activate the Decision rule and Collector plugins in `\Pyz\Zed\Discount\DiscountDependencyProvider`: - -```php - new ProductLabelDictionaryCollectorStoragePlugin(), - ProductLabelConstants::RESOURCE_TYPE_PRODUCT_ABSTRACT_PRODUCT_LABEL_RELATIONS => new ProductLabelProductAbstractRelationCollectorStoragePlugin(), - ]; - }; - - // ... - } -} -``` - -To provide product label information for Search documents, you need to extend your product search collector by adding a new `search-result-data` entry (for example, `id_product_labels`) for products. The data of this field can be easily read with the `ProductLabelFacade::findLabelIdsByIdProductAbstract()` method. - -### Data Setup - -The Zed user interface can be used to manage product labels. The collectors that were enabled before will take care of exporting active labels to the key-value storage. Product labels can also be imported using the demo-shop's importer infrastructure. Spryker provides a couple of example installer implementations in the [demo-shop](https://github.com/spryker/demoshop) that can be used for ideas. - -### Usage in Yves - -The Product Label module ships with a Twig extension to easily access and render product labels in templates. The extension provides the `spyProductLabels` twig function that renders labels based on the label dictionary. The function excepts the following parameters: - -1. **$idProductLabels**: an array of product label IDs to render labels -2. **$templateName**: The name of a template to use for rendering the labels - -It also provides the `spyProductAbstractLabels` Twig function. This function is **deprecated** - to use due to performance reasons. It first needs to read product label relation information from Storage and only then renders product labels based on the label dictionary. Use this only when it's not possible to have the list of product label IDs for the rendered product. The function excepts the following parameters: - -1. **$idProductAbstract**: ID of the abstract product to render labels for -2. **$templateName**: The name of a template to use for rendering the labels - -To enable the Twig extension it is necessary to register it as a new service provider in `\Pyz\Yves\Application\YvesBootstrap` -```php - -application->register(new ProductLabelTwigServiceProvider()); - } -} - -``` - -An example implementation of template rendering labels for an abstract product looks like this (e.g. on a product details page): - -```php -
- {% raw %}{{{% endraw %} spyProductLabels(product.getIdProductLabels(), '@ProductLabel/partials/group.twig') {% raw %}}}{% endraw %} -
-``` - -### Creating a Custom Template for Rendering Product Labels - -The template specified in the second parameter in the `spyProductLabels` Twig function receives a collection of transfer objects, each representing a product label containing data from the key-value storage. This collection will be empty for abstract products that are not assigned any product labels. All locale-specific label fields will be returned for the currently active store locale. - -Here's a simple example of a possible template: - -```php -
- {% raw %}{%{% endraw %} for productLabelTransfer in productLabelTransferCollection {% raw %}%}{% endraw %} - - - {% raw %}{{{% endraw %} productLabelTransfer.getName() {% raw %}}}{% endraw %} - - - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
-``` - -A more detailed example implementation is available in the [demo-shop](https://github.com/spryker/demoshop). - -### Checking Validity - -Product labels can be configured to have a validity date range. They will only be represented in the key-value storage if they fall between the `valid_from` and `valid_to` dates. - -To make sure that invalid product labels become valid when the specified validity date range is entered, run the console command `console product-label:validity`. It will also handle labels that are currently valid but become invalid due to exceeding the `valid_to` date. The command checks validity date ranges for all active labels and "touch" the ones for which the validity state changes. - -The [demo-shop](https://github.com/spryker/demoshop) ships with a Cronjob triggers this command once a day. - -### Dynamic Labels -It's possible to manage product label relations dynamically based on some custom business logic. The custom logic can be implemented with a set of `\Spryker\Zed\ProductLabel\Dependency\Plugin\ProductLabelRelationUpdaterPluginInterface` plugins. - -By registering the necessary plugins in `\Pyz\Zed\ProductLabel\ProductLabelDependencyProvider::getProductLabelRelationUpdaterPlugins()`you will be able to run the `vendor/bin/console product-label:relations:update` command from your project to update the dynamic labels of the products. - -To enable this console command add `\Spryker\Zed\ProductLabel\Communication\Console\ProductLabelRelationUpdaterConsole`to `\Pyz\Zed\Console\ConsoleDependencyProvider::getConsoleCommands()`. It's also suggested to set a cron job -to run this command periodically. In demoshop we've set this to run every minute so it's aligned with collectors and less likely to experience inconsistency with product data and its labels. - -## Under the Hood - -### Database Schema -![product_label_db](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/product_label_db.png) - -The `Product Label` module adds three new tables: - -1. **spy_product_label** -This table stores the main product label information such as its name, validity dates, flags, etc. -2. **spy_product_label_localized_attributes** -This tables stores all localized information. Currently it only stores the translated product label names. -3. **spy_product_label_product_abstract** -This table stores the relations between product labels and abstract products. - -### Representation in the Key-Value Storage - -Product labels are exported in two parts, a dictionary that contains all active and valid product-labels and a list of product label IDs for each abstract product. - -#### Product Label Dictionary - -The dictionary contains only active and valid product labels. The active state is derived from the `is_active` flag and validity is checked against the `valid_from` and `valid_to` fields. There is a dedicated transfer object that represents the structure of each product label in the dictionary, called `ProductLabelStorageTransfer`. - -#### Abstract Product to Product Label Relations - -All relations between an abstract product and a product label will be exported not taking into account active state and validity. - -When using `\Spryker\Client\ProductLabel\ProductLabelClient::findLabelsByIdProductAbstract()` (or the `spyProductLabels` and `spyProductAbstractLabels` Twig functions) each relation is checked against the dictionary and only a collection of active and valid product labels will be returned for a single abstract product. This prevents having to update each product relation in the key-value storage whenever a product label changes thus reducing the number of required "touches". - -## Feature Extensions - -### Discounts Based on Product Labels - -It's possible to create discount rules based on products that have specific label(s). On the discount UI -select the `product-label` rule for **Discount calculation** to define that the discount will be apply to the selected predefined labels. You can also select the `product-label` rule for **Conditions** to define that your discount is applied when the selected labels are present. - -Follow the steps below to activate this feature: - -1. Install `ProductLabelDiscountConnector` module in your project. -2. Active the Decision rule and Collector plugins in `\Pyz\Zed\Discount\DiscountDependencyProvider`: - -```php -ModuleExpected Directory`CustomerCatalog``vendor/spryker/customer-catalog``ProductList``vendor/spryker/product-list``ProductListDataImport``vendor/spryker/product-list-data-import``ProductListGui``vendor/spryker/product-list-gui``ProductListGuiExtension``vendor/spryker/product-list-gui-extension``ProductListSearch``vendor/spryker/product-list-search``ProductListStorage``vendor/spryker/product-list-storage``ProductStorageExtension``vendor/spryker/product-storage-extension` -{% endinfo_block %} - -### 2) Set up Database Schema and Transfer Objects -Adjust the schema definition so that entity changes trigger events. - -| Affected entity | Triggered events | -| --- | --- | -| `spy_product_list` | `Entity.spy_product_list.create`
`Entity.spy_product_list.update`
`Entity.spy_product_list.delete` | -| `spy_product_list_product_concrete` | `Entity.spy_product_list_product_concrete.create`
`Entity.spy_product_list_product_concrete.update`
`Entity.spy_product_list_product_concrete.delete` | -| `spy_product_list_category` | `Entity.spy_product_list_category.create`
`Entity.spy_product_list_category.update`
`Entity.spy_product_list_category.delete` | - -Make the following changes in `spy_product_list.schema.xml`. -
-src/Pyz/Zed/ProductList/Persistence/Propel/Schema/spy_product_list.schema.xml - -``` html - - - - - - -
- - - - -
- - - - -
-
-``` -
-
- -Set up synchronization queue pools so that non-multi-store entities (not store specific entities) can be synchronized among stores: - -
-src/Pyz/Zed/ProductList/Persistence/Propel/Schema/spy_product_list.schema.xml - -``` html - - - - - - -
- - - - -
-
-``` -
-
- -Run the following commands to apply database changes and generate entity and transfer changes: -``` -console transfer:generate -console propel:install -console transfer:generate -``` -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database EntityTypeEvent
spy_product_listtablecreated
spy_product_list_product_concretetablecreated
spy_product_list_categorytablecreated
spy_product_abstract_product_list_storagetablecreated
spy_product_concrete_product_list_storagetablecreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that propel entities were generated successfully by checking their existence. Also, change the generated entity classes to extend from Spryker core classes:
Class pathExtends
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductList.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductList`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListQuery.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductListQuery`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListProductConcrete.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductListProductConcrete`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListProductConcreteQuery.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductListProductConcreteQuery`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListCategory.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductListCategory`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListCategoryQuery.php``Spryker\Zed\ProductList\Persistence\Propel\AbstractSpyProductListCategoryQuery`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductAbstractProductListStorage``Spryker\Zed\ProductListStorage\Persistence\Propel\AbstractSpyProductAbstractProductListStorage`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductAbstractProductListStorageQuery``Spryker\Zed\ProductListStorage\Persistence\Propel\AbstractSpyProductAbstractProductListStorageQuery`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductConcreteProductListStorage``Spryker\Zed\ProductListStorage\Persistence\Propel\AbstractSpyProductConcreteProductListStorage`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductConcreteProductListStorageQuery``Spryker\Zed\ProductListStorage\Persistence\Propel\AbstractSpyProductConcreteProductListStorageQuery`
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the changes were implemented successfully. For this purpose, trigger the following methods and make sure that the above events have been triggered:
PathMethod name
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductList.php``prepareSaveEventName( -{% endinfo_block %}`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListProductConcrete.php``prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`
`src/Orm/Zed/ProductList/Persistence/Base/SpyProductListCategory.php``prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductAbstractProductListStorage.php``sendToQueue()`
`src/Orm/Zed/ProductListStorage/Persistence/Base/SpyProductConcreteProductListStorage.php``sendToQueue()`
) - -## 3) Add Translations - -Append glossary according to your language configuration: -
-src/data/import/glossary.csv - -```yaml -product-cart.info.restricted-product.removed,"Unavailable item %sku% was removed from your shopping cart.",en_US -product-cart.info.restricted-product.removed,"Der nicht verfügbare Artikel% sku% wurde aus Ihrem Einkaufswagen entfernt.",de_DE -``` -
-
- -Run the following console command to import data: -``` -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that the configured data are added to the `spy_glossary` table in the database. -{% endinfo_block %} - -## 4) Configure Export to Redis and Elasticsearch -### Set up Event Listeners -With this step, you will be able to publish tables on change (create, edit, delete) to the `spy_product_abstract_product_list_storage`, `spy_product_concrete_product_list_storage` and synchronize the data to Storage and Search. - -| Plugin | Specification |Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductListStorageEventSubscriber` | Registers listeners that are responsible for publishing product list information to storage when a related entity changes. | None | `Spryker\Zed\ProductListStorage\Communication\Plugin\Event\Subscriber` | -|`ProductListSearchEventSubscriber`|egisters listeners that are responsible for publishing product list information to search when a related entity changes.|None|`Spryker\Zed\ProductListSearch\Communication\Plugin\Event\Subscriber`| - -
-src/Pyz/Zed/Event/EventDependencyProvider.php - -```php -add(new ProductListStorageEventSubscriber()); - $eventSubscriberCollection->add(new ProductListSearchEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` -
-
- -{% info_block warningBox "Verification" %} -your content goes hereMake sure when a product list is created, updated or deleted, they are exported (or removed -{% endinfo_block %} to Redis and Elasticsearch accordingly.
Storage typeTarget entityExample expected data identifier
RedisProduct Abstract Product Listkv:product_abstract_product_lists:1
RedisProduct Concrete Product Listkv:product_concrete_product_list:1
ElasticsearchProduct Abstractproduct_abstract:de:en_us:1
) - -
-Example expected data fragment for Product Abstract Product List - -```yaml -{ -"id_product_abstract": 1, -"id_whitelists": [1,2], -"id_blacklists": [3] -} -``` -
-
- -
-Example expected data fragment for Product Concrete Product List - -```yaml -{ -"id_product_concrete": 1, -"id_whitelists": [1,2], -"id_blacklists": [3] -} -``` -
-
- -
-Example expected data fragment for Product Abstract - -```yaml -{ -"product-lists": { -"whitelists": [1,2], -"blacklists": [3] -} -} -``` -
-
- -### Prepare search data for export -With this step, we are extending Elasticsearch documents with product list data. Add the following plugins to your project: - -| Plugin | Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `ProductListDataLoaderPlugin` |Loads product list data as payload for the publishing process. | None|`Spryker\Zed\ProductListSearch\Communication\Plugin\ProductPageSearch\DataLoader` | -|`ProductListDataLoadExpanderPlugin`|Expands product page data with all its product lists for publishing based on the previously collected product information.|Product list data should be available in the product payload. Suggestion: use `ProductListDataLoaderPlugin` (see above).|`Spryker\Zed\ProductListSearch\Communication\Plugin\ProductPageSearch\DataExpander`| -|`ProductListMapExpanderPlugin`|Maps product list data to Elasticsearch document structure.|Product list data should be available. Suggestion: use `ProductListDataLoadExpanderPlugin` (see above).|`Spryker\Zed\ProductListSearch\Communication\Plugin\ProductPageSearch`| -|`ProductAbstractProductListSynchronizationDataPlugin`|Can be executed to synchronize all product_abstract_product_list entries from database to Redis.|None|`Spryker\Zed\ProductListStorage\Communication\Plugin\Synchronization`| -|`ProductConcreteProductListSynchronizationDataPlugin`|Can be executed to synchronize all product_concrete_product_list entries from database to Redis.|None|`Spryker\Zed\ProductListStorage\Communication\Plugin\Synchronization`| - -
-src/Pyz/Zed/ProductPageSearch/ProductPageSearchDependencyProvider.php - -```php - new ProductListDataLoadExpanderPlugin(), - ]; - } - - /** - * @return \Spryker\Zed\ProductPageSearch\Dependency\Plugin\ProductPageMapExpanderInterface[] - */ - protected function getMapExpanderPlugins() - { - return [ - new ProductListMapExpanderPlugin(), - ]; - } - - /** - * @return \Spryker\Zed\ProductPageSearchExtension\Dependency\Plugin\ProductPageDataLoaderPluginInterface[] - */ - protected function getDataLoaderPlugins() - { - return [ - new ProductListDataLoaderPlugin(), - ]; - } -} -``` -
-
- -
-src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php - -```php - -
- -### Prepare the Search Queries - -Once the product list data is exported to Elasticsearch, make sure to extend your search queries to filter out restricted products by adding the following query expander plugin to your search queries where necessary. - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductListQueryExpanderPlugin` |
  • Expands an Elasticsearch query with blacklist and whitelist filters based on the customer session.
  • The result of the query will contain only products that were on the given whitelists, but not on the given blacklists.
|
  • The Customer session must contain product list information.
  • Suggestion: See "Merchant Product Lists" integration guide, for example, implementation.
| `Spryker\Client\CustomerCatalog\Plugin\Search` | - -{% info_block infoBox "Note" %} -The order of the query expander plugins matters for the search result. Make sure that your query expanders are in the appropriate order. I.e. the `FacetQueryExpanderPlugin` needs to follow all other plugins that filter down the result, otherwise, it can't generate the proper query fragment for itself. -{% endinfo_block %} - -
-src/Pyz/Client/Catalog/CatalogDependencyProvider.php - -```php - -
-{% info_block warningBox "Verification" %} -Make sure that you haven't missed the expansion of any product search queries in your project where you need to consider product lists. -{% endinfo_block %} -{% info_block warningBox "Verification" %} -Once you are done with this step, you should only be able to see those products in your search results, which are on the product lists of your customer's session. -{% endinfo_block %} - -## 5) Import Data -### Import Product Lists -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/product-list-data-import/data/import/product_list.csv - -```yaml -"product_list_key","name","type" -"pl-001","All computers","whitelist" -"pl-002","No ASUS","blacklist" -"pl-003","All tablets","blacklist" -"pl-004","Cameras, Wearables & Phones","whitelist" -"pl-005","Camcorders over 400€","blacklist" -"pl-006","All cameras","whitelist" -"pl-007","Tablets with enough storage","whitelist" -"pl-008","No Smartwatches","blacklist" -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| product_list_key | mandatory | string (unique) | pl-001 | Unique identifier used to identify a product list. | -|name|mandatory|string|All computers|Custom product list name used to provide a readable title or sentence of what the list contains. Used only for internal representation.| -|type|mandatory|string ("blacklist"/"whitelist")|whitelist|Defines whether the list is a blacklist or a whitelist.| -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductListDataImportPlugin` | Imports basic product list data into the database. | None | `Spryker\Zed\ProductListDataImport\Communication\Plugin` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-list -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data are added to the spy_product_list table. -{% endinfo_block %} - -### Import Product List Category Assignments -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/product-list-data-import/data/import/product_list_to_category.csv - -```yaml -product_list_key,category_key -pl-001,computer -pl-003,tablets -pl-004,cameras-and-camcorder -pl-004,smart-wearables -pl-004,smartphones -pl-008,smartwatches -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `product_list_key` | mandatory | string | pl-001 | An existing product list identifier for the assignment. | -|`category_key`|mandatory|string|computer|An existing category identifier to be assigned to the product list.| -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductListCategoryDataImportPlugin` | Imports category assignments for product lists. | Product list data and category data must exist before this installer plugin runs. | `Spryker\Zed\ProductListDataImport\Communication\Plugin` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-list-category -``` -{% info_block warningBox "Verificaton" %} -Make sure that the configured data are added to the spy_product_list_category table in the database. -{% endinfo_block %} - -### Import Product List Concrete Product Assignments - -Prepare your data according to your requirements using our demo data: -
-vendor/spryker/product-list-data-import/data/import/product_list_to_concrete_product.csv - -```yaml -product_list_key,concrete_sku -pl-002,166_30230575 -pl-002,166_29565389 -pl-002,165_29879507 -pl-002,165_29879528 -pl-002,099_27207215 -pl-002,114_29911081 -pl-002,114_30580483 -pl-002,139_24699831 -pl-002,140_22766487 -pl-002,141_29380410 -pl-002,142_30943081 -pl-002,143_31035196 -pl-002,144_29804740 -pl-002,144_30312874 -pl-002,144_29804741 -pl-002,157_29525342 -pl-002,158_29885222 -pl-002,159_29885260 -pl-002,159_29885269 -pl-002,160_29533301 -pl-002,161_29533300 -pl-002,162_29533299 -pl-002,163_29728850 -pl-002,164_29565390 -pl-002,165_29879507 -pl-002,165_29879528 -pl-002,166_30230575 -pl-002,166_29565389 -pl-002,215_123 -pl-002,215_124 -pl-005,204_29851280 -pl-005,187_26306352 -pl-005,188_26306353 -pl-005,194_25904145 -pl-005,195_25904159 -pl-007,161_29533300 -pl-007,177_24867659 -pl-007,177_25913296 -``` -
-
- -| Column | Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `product_list_key` | mandatory | string | pl-002 | An existing product list identifier for the assignment. | -|`concrete_sku`|mandatory|string|166_30230575|An existing concrete product SKU to assign to the product list.| - -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductListProductConcreteDataImportPlugin` | Imports concrete product assignments for product lists. | Product list data and concrete product data must exist before this importer plugin runs. | `vendor/spryker/product-list-data-import/src/Spryker/Zed/ProductListDataImport/Communication/Plugin/ProductListProductConcreteDataImportPlugin.php` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: -``` -console data:import product-list-product-concrete -``` -{% info_block warningBox "Verification" %} -Make sure that the configured data are added to the `spy_product_list_product_concrete` table in the database. -{% endinfo_block %} - -## 6) Set up Behavior -### Reading From Product Storage -Add the following plugins to your project: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ProductAbstractRestrictionPlugin` | Responsible for determining if an abstract product is restricted for the current customer or not. | None | `Spryker\Client\ProductListStorage\Plugin\ProductStorageExtension` | -|`ProductConcreteRestrictionPlugin`|Responsible for determining if a concrete product is restricted for the current customer or not.|None|`Spryker\Client\ProductListStorage\Plugin\ProductStorageExtension`| -|`ProductViewVariantRestrictionPlugin`|Responsible for filtering out product variants of a product view object.|The product view object should contain all available variant information.
Suggestion: use `ProductViewVariantExpanderPlugin`before, to collect variant data.|`Spryker\Client\ProductListStorage\Plugin\ProductStorageExtension`| - -
-src/Pyz/Client/ProductStorage/ProductStorageDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that features which use Redis to read product data (for example, Product Details Page, Product relations, etc. -{% endinfo_block %} don't show it when a product is restricted for the customer.) - -### Product Restrictions in the Cart -Add the following plugins to handle product restrictions for cart items: - -| Plugin |Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `ProductListRestrictedItemsPreCheckPlugin` | Checks all cart items and adds violations to the cart precheck response when they are restricted for the current customer. | None | `Spryker\Zed\ProductList\Communication\Plugin\CartExtension` | -|`RemoveRestrictedItemsPreReloadPlugin`|Checks and removes restricted cart items from the quote and adds a message for each removed item.|None|`Spryker\Zed\ProductList\Communication\Plugin\CartExtension`| - -
-Spryker\Zed\ProductList\Communication\Plugin\CartExtension - -```php - -
- -{% info_block warningBox "Verification" %} - -Make sure that no restricted products can be added to a cart and if they were already in a cart, they get properly removed once a product became restricted for the customer. - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - -After completing the integration of this feature, you need to further extend it to provide one or many owner types for product lists to be able to assign them. A product list can only be fully functional when a user who browses the catalog gets product lists assigned and this can be done by providing owners for product lists.Check out our Merchant Relationship Product Restrictions integration guide that adds this functionality for merchant relationships: [Merchant Product Restrictions feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/merchant-product-restrictions-feature-integration.html). - -{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/product-rating-and-reviews-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/product-rating-and-reviews-feature-integration.md deleted file mode 100644 index d941ee868ce..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/product-rating-and-reviews-feature-integration.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Product Rating and Reviews feature integration -description: The guide walks you through the process of installing the Product Reviews feature in your project. -last_updated: Nov 26, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-review-feature-integration -originalArticleId: 70376d67-bd83-4461-a0c6-1506aaaa22ad -redirect_from: - - /v1/docs/product-review-feature-integration - - /v1/docs/en/product-review-feature-integration ---- - -## Prerequisites -To prepare your project to work with Product Reviews: -1. Require the Product Review modules in your composer by running - * `composer require spryker/product-review` - * `composer require spryker/product-review-collector` - * `composer require spryker/product-review-gui` -2. Install the new database tables by running `vendor/bin/console propel:diff`. Propel should generate a migration file with the changes. -3. Run `vendor/bin/console propel:migrate` to apply the database changes. -4. Generate ORM models by running `vendor/bin/console propel:model:build`. -This command will generate some new classes in your project under `\Orm\Zed\ProductReview\Persistence` namespace. It is important to make sure that they extend the base classes from the Spryker core, e.g.: - * `\Orm\Zed\ProductReview\Persistence\SpyProductReview` extends `\Spryker\Zed\ProductReview\Persistence\Propel\AbstractSpyProductReview` - * `\Orm\Zed\ProductReview\Persistence\SpyProductReviewQuery` extends `\Spryker\Zed\ProductReview\Persistence\Propel\AbstractSpyProductReviewQuery` -5. Run `vendor/bin/console transfer:generate` to generate the new transfer objects. -6. Activate the product review collectors by adding the `ProductReviewCollectorSearchPlugin` and the `ProductAbstractReviewCollectorStoragePlugin` to the Storage and Search Collector plugin stack. - -
-Example: collector plugin list extension - -```php - new ProductReviewCollectorSearchPlugin(), - ]; - }; - - $container[static::STORAGE_PLUGINS] = function (Container $container) { - return [ - // ... - ProductReviewConfig::RESOURCE_TYPE_PRODUCT_ABSTRACT_REVIEW => new ProductAbstractReviewCollectorStoragePlugin(), - ]; - }; - - - // ... - } - } -``` -
-
- - -7. Run `vendor/bin/console setup:search` to set up Search before you run Search collectors. -8. Make sure the new Zed user interface assets are built by running `npm run zed` (or antelope build zed for older versions). -9. Update Zed’s navigation cache to show the new items for the Product Review management user interface by running `vendor/bin/console application:build-navigation-cache`. - -You should now be able to use the Zed API of Product Reviews to approve, reject and delete reviews, and the collectors should also be able to push approved reviews and ratings into Storage and Search. Check out our [Demoshop implementation](https://github.com/spryker/demoshop) for frontend implementation example and idea. - -## Usage in Yves -### Submitting a Product Review -To store an already validated product review, populate a `\Generated\Shared\Transfer\ProductReviewTransfer` transfer object and send it to Zed by calling the `\Spryker\Client\ProductReview\ProductReviewClientInterface::submitCustomerReview` method. -This action will create a new pending product review in your persistent storage. The saved product review will be exported to Search and Storage after it was approved on Zed UI. -Make sure that the provided rating value does not exceed [the configured maximum rating](/docs/pbc/all/ratings-reviews/{{site.version}}/tutorials-and-howtos/howto-configure-product-reviews.html#configuring-the-maximum-rating) limit. -Example of how to store a validated customer review: -```php -getFactory()->getCustomerClient()->getCustomer()->getCustomerReference(); - - $this->getFactory()->getProductReviewClient()->submitCustomerReview( - (new ProductReviewRequestTransfer()) - ->setCustomerReference($customerReference) - ->setLocaleName($this->getLocale()) - ->setIdProductAbstract($request->attributes->get('idProductAbstract')) - ->setSummary($request->attributes->get('summary')) - ->setDescription($request->attributes->get('description')) - ->setRating($request->attributes->get('rating')) - ->setNickname($request->attributes->get('nickname')) - ); - } - } -``` - -### Displaying an Average Rating -To display the average rating stored in Storage, you will need to use `spyProductAbstractReview` and `spyProductAbstractReviewMaximumRating` twig extensions shipped by `ProductReview` module. - -* `spyProductAbstractReview` twig extension takes product abstract ID as first argument and injects the corresponding `ProductAbstractReviewTransfer` transfer object into the twig template provided as the second argument. - -* `spyProductAbstractReviewMaximumRating` twig extension allows you to retrieve the configured maximum rating on demand. - -To register these plugins, you need to add `ProductAbstractReviewTwigServiceProvider` service provider to your` \Pyz\Yves\Application\YvesBootstrap.php`. - -Example of how to register twig extensions: -```php -application->register(new ProductAbstractReviewTwigServiceProvider()); - } - - } -``` -Now you will be able to call the registered `spyProductAbstractReview` and `spyProductAbstractReviewMaximumRating` twig extensions in your twig templates. - -Below is the example `spyProductAbstractReview` call. -`@ProductReview/index/index.twig`: -```yaml -
Product name: {% raw %}{{{% endraw %}product.name{% raw %}}}{% endraw %}
-{% raw %}{{{% endraw %} spyProductAbstractReview(product.idProductAbstract, '@ProductReview/partials/average-rating.twig') {% raw %}}}{% endraw %} -``` -The `spyProductAbstractReview` twig extension will render the template provided as a second argument and inject the productAbstractReviewTransfer variable. - -Below is the example average-rating.twig implementation. -`@ProductReview/partials/average-rating.twig:` - -```yaml -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if productAbstractReviewTransfer {% raw %}%}{% endraw %} - Average product rating is {% raw %}{{{% endraw %} productAbstractReviewTransfer.averageRating {% raw %}}}{% endraw %} out of {% raw %}{{{% endraw %} spyProductAbstractReviewMaximumRating() {% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -### Displaying Reviews and Rating Summary -To display previously posted and already approved reviews from Search, you will need to call `\Spryker\Client\ProductReview\ProductReviewClientInterface::findProductReviewsInSearch` method. - -To alter the retrieved number of product reviews per page, change the Client configuration. - -Example of product review retrieval: -```php -namespace Pyz\Yves\ProductReview\Controller; - -use Generated\Shared\Transfer\ProductReviewSearchRequestTransfer; -use Pyz\Yves\Application\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Request; - -/** - * @method \Spryker\Client\ProductReview\ProductReviewClientInterface getClient() - */ -class IndexController extends AbstractController -{ - - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * - * @return array - */ - public function indexAction(Request $request) - { - $productReviews = $this->getClient()->findProductReviewsInSearch( - (new ProductReviewSearchRequestTransfer()) - ->setIdProductAbstract($request->attributes->get('idProductAbstract')); - ->setRequestParams($request->query->all()) - ); - - return [ - 'productReviews' => $productReviews['productReviews'], - 'pagination' => $productReviews['pagination'], - 'ratingAggregation' => $productReviews['ratingAggregation'], - ]; - } - -} -``` - - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/product-relations-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/product-relations-feature-integration.md deleted file mode 100644 index 458dadc9078..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/product-relations-feature-integration.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Product Relation Integration -description: The guide walks you through the process of installing the Product Relation feature in your project. -last_updated: Nov 26, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-relation-integration -originalArticleId: 93c167da-65fa-4a4f-961d-aa63b815e8e1 -redirect_from: - - /v1/docs/product-relation-integration - - /v1/docs/en/product-relation-integration ---- - - -1. Register a new collector plugin. How to is in . -2. Then register a new twig service plugin -`\Spryker\Yves\ProductRelation\Plugin\ProductRelationTwigServiceProvider` inside the `\Pyz\Yves\Application\YvesBootstrap::registerServiceProviders` plugin stack. This will allow to use the UI carousel component to display relations. -3. Add this new twig extension to your templates. By default, it is included in the product detail and cart overview pages of our demoshop. - -**To render the component, include the provided twig function as shown bellow**: - -* **Product detail**- `product_relation("related-products", {idProductAbstract : product.idProductAbstract}, 'Similar products', '@ProductRelation/partial/product_relation_carousel.twig') ` . -* **Cart Overview** - `product_relation("up-selling", {quote : quoteTransfer}, 'You might also be interested in these products', '@ProductRelation/partial/product_relation_carousel.twig')`. - -Each type accepts a number of parameters: - -"up-selling" - `abstractProductIds` which is an array of abstract product ids `(['abstractProductIds' => [1,2,3]])` or `quote `which is quote transfer object `(['quote' => $quoteTransfer])`. - -"related-products" - i`dProductAbstract (['idProductAbstract' => 1])`. - -* Include javascript carousel component `slick.js` In `package.json `include - -```php -"dependencies": { -... -"slick-carousel": "~1.6.0", -} -``` - -and run `npm install` - -Create a new component under `assets/Yves/default/app/components/carousel/_carousel.scss` with contents. - -```css -.carousel { - font-size:14px; - - .image-container { - width: 150px; - height: 180px; - } - - .slick-slide { - margin-left: 10px; - } - - .product-name { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - } - ``` - -include this style file in `/assets/Yves/default/app/style/index.scss` like `@import '../components/carousel/carousel';assets/Yves/default/app/components/carousel/index.js` - configures the slick.js javascript carousel component. - -```css -var $ = require('jquery'); -var carousel = require('slick-carousel'); - -module.exports = { -name: 'carousel', - view: { - init: function($root) { - this.$root = $root; - this.$root.slick({ - infinite: true, - slidesToShow: 6, - slidesToScroll: 6, - responsive: [ - { - breakpoint: 1024, - settings: { - slidesToShow: 3, - slidesToScroll: 3 - } - }, - { - breakpoint: 600, - settings: { - slidesToShow: 2, - slidesToScroll: 2 - } - }, - { - breakpoint: 480, - settings: { - slidesToShow: 1, - slidesToScroll: 1 - } - } - ] - }); - }, - } -}; - -``` - -Include this `js` file in` assets/Yves/default/app/index.js`: - -```css -run([ - ... - require('./components/carousel') - ]); -``` - -Create file `/assets/Yves/default/vendor/slick-carousel.scss` with contents. - -```css -$slick-assets-relative-path: "../../../../node_modules/slick-carousel/slick/"; - - $slick-font-path: "#{$slick-assets-relative-path}fonts/"; - $slick-font-family: "slick"; - $slick-loader-path: $slick-assets-relative-path; - $slick-arrow-color: black; - $slick-dot-color: black; - $slick-dot-color-active: black; - $slick-prev-character: "\2190"; - $slick-next-character: "\2192"; - $slick-dot-character: "\2022"; - $slick-dot-size: 30px; - $slick-opacity-default: 0.75; - $slick-opacity-on-hover: 1; - $slick-opacity-not-active: 0.25; - - @import '~slick-carousel/slick/slick.scss'; - @import '~slick-carousel/slick/slick-theme.scss'; - - .slick-list { - .slick-loading & { - background: none !important; - } - } - ``` - - Run `npm run yves` to generate javascript and css. - -{% info_block warningBox "Note" %} -To reference an example implementation, see the latest demoshop . -{% endinfo_block %} - -Add template for rendering html `src/Pyz/Yves/ProductRelation/Theme/default/partial/product_relation_carousel.twig` - -```html -{% raw %}{%{% endraw %} if productRelations {% raw %}%}{% endraw %} -
-
-
-

{% raw %}{{{% endraw %} name {% raw %}}}{% endraw %}

-
-
- -
-
-
-
-
- {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - ``` -This is sample a template and has to be updated for the project. - -You may also want to adjust the product relations updater script (how often it should run). The relations have a periodic updater `product-relation:update` which is started by Jenkins. diff --git a/docs/scos/dev/feature-integration-guides/201811.0/product-set-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/product-set-feature-integration.md deleted file mode 100644 index fb56b1a10ba..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/product-set-feature-integration.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Product Set feature integration -description: The Product Sets feature allows you to put together multiple products for the purpose of emphasizing that the set of products can be bought together. -last_updated: Nov 26, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-set-feature-integration -originalArticleId: b247a92a-628b-431b-9213-93fb77daf909 -redirect_from: - - /v1/docs/product-set-feature-integration - - /v1/docs/en/product-set-feature-integration ---- - -The Product Sets feature allows you to put together multiple products for the purpose to emphasize that the set of products can be bought together. Product Sets usually have their separate list and detail pages in the shop frontend where customers can add containing products to the cart. - -## Prerequisites -To prepare your project to work with Product Sets: -1. Require the Product Set modules in your `composer.json` by running: - -```bash -composer require spryker/product-set spryker/product-set-collector spryker/product-set-gui -``` -2. Install the new database tables by running: - -```bash -vendor/bin/console propel:diff -``` -Propel should generate a migration file with the changes. - -3. Apply the database changes. For this, run: - -```bash -vendor/bin/console propel:migrate -``` -4. To generate ORM models, run: - -```bash -vendor/bin/console propel:model:build -``` - -5. After running this command, new classes are added. - -The classes are located in your project under the `\Orm\Zed\ProductSet\Persistence` namespace. - -{% info_block warningBox “Verification” %} - -Make sure that they extend the base classes from the Spryker core, for example: - -* `\Orm\Zed\ProductSet\Persistence\SpyProductSet` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductSet` - -* `\Orm\Zed\ProductSet\Persistence\SpyProductSetData` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductSetData` - -* `\Orm\Zed\ProductSet\Persistence\SpyProductAbstractSet` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductAbstractSet` - -* `\Orm\Zed\ProductSet\Persistence\SpyProductSetQuery` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductSetQuery` - -* `\Orm\Zed\ProductSet\Persistence\SpyProductSetDataQuery` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductSetDataQuery` - -* `\Orm\Zed\ProductSet\Persistence\SpyProductAbstractSetQuery` extends `\Spryker\Zed\ProductSet\Persistence\Propel\AbstractSpyProductAbstractSetQuery` - -{% endinfo_block %} - -6. To get the new transfer objects, run the following command: - -```bash -vendor/bin/console transfer:generate -``` - -7. To rebuild Zed navigation, run the following command: - -```bash -vendor/bin/console navigation:build-cache -``` - -8. Activate the Product Set collectors: - -Adding `ProductSetCollectorStoragePlugin` to the storage collector plugin stack and `ProductSetCollectorSearchPlugin` to the search collector plugin stack, see the example below. - -```php - new ProductSetCollectorSearchPlugin(), - ]; - }; - - $container[self::STORAGE_PLUGINS] = function (Container $container) { - return [ - // ... - ProductSetConfig::RESOURCE_TYPE_PRODUCT_SET => new ProductSetCollectorStoragePlugin(), - ]; - }; - - // ... - } -} -``` - -## Data Setup - -You should now be able to use the `ProductSet` module Zed API to manage Product Sets, and the collectors should also be able to export them to the KV storage and Elasticsearch. In Zed you can also manage Product Sets under Products > Product Sets menu point. - -This is a good time to implement an installer in your project to put products together in sets representing how you want them to be displayed in your shop frontend. Check out our [Demoshop](https://github.com/spryker/demoshop) implementation for examples and ideas. - -### Listing Products Sets in Yves -The KV storage and Elasticsearch should by now have some Product Sets you can list and display in your shop. The exported documents in Search by default do not support the configurable search features as products (full-text search, faceted navigation, sorting, and pagination). However, since their data structure is the same it is possible to implement the same features with a custom implementation. - -For simple listing the `ProductSet` module provides a Client API to list Product Sets from Elasticsearch. By calling the `ProductSetClient::getProductSetList()` method, a limited set of documents can be listed in Yves. The results are sorted in descending order by the Product Set’s weight attribute. - -The executed search query works the same way as described in Search Query. -If you need to extend the query, for example, by filtering current store and locale, you will need to add the necessary query expander plugins, like in the example below. Also, to format the raw response from Elasticsearch we also need to provide a result formatter plugin that is also provided by the `ProductSet` module. - -Take a look at the following example to see how to activate the plugins: - -```php - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/quick-add-to-cart-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/quick-add-to-cart-feature-integration.md deleted file mode 100644 index ce1d410ad04..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/quick-add-to-cart-feature-integration.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Quick Add to Cart feature integration -description: Quick Add to Cart allows customers to buy products in a few clicks. This guide will walk you through the process of integrating this feature into your project. -last_updated: Nov 22, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/quick-order-feature-integration-201811 -originalArticleId: ea9ad960-c5c0-465b-847c-cdbe16dd4eb6 -redirect_from: - - /v1/docs/quick-order-feature-integration-201811 - - /v1/docs/en/quick-order-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -To start the feature integration, overview and install the necessary features: - -| Name | Version | -| --- | --- | -| Spryker Core E-commerce |2018.11.0 | -| Cart|2018.11.0 | -| Product |2018.11.0 | -| Checkout | 2018.11.0| - -## Install the required modules using Composer - -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/quick-add-to-cart:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox “Verification” %} - -Make sure that the module listed in the following table has been installed: - -| Module |Expected Directory | -| --- | --- | -| `QuickOrderPage` | `vendor/spryker-shop/quick-order-page`| - -{% endinfo_block %} - -## Set up Transfer Objects - -Run the following commands to generate transfer changes: - -```bash -console transfer:generate -``` - -{% info_block warningBox “Verification” %} - -Make sure that the modules listed in the following table have been installed: - -| Module |Type |Event |Path | -| --- | --- |--- |--- | -| `QuickOrderTransfer`|class |created| `vendor/spryker-shop/quick-order-page`| -| `QuickOrderItemTransfer`|class |created| `src/Generated/Shared/Transfer/QuickOrderItemTransfer`| - -{% endinfo_block %} - -## Add Translations - -Feature specific glossary keys: - -
src/data/import/glossary.csv - -```yaml -quick-order.page-title,Quick Order,en_US -quick-order.page-title,Schnellbestellung,de_DE -quick-order.input-label.qty,"# Qty",en_US -quick-order.input-label.qty,"# Anzahl",de_DE -quick-order.input-label.sku,SKU,en_US -quick-order.input-label.sku,Artikelnummer,de_DE -quick-order.button.add-more-rows,Add More Rows,en_US -quick-order.button.add-more-rows,Reihen hinzufügen,de_DE -quick-order.button.create-order,Create Order,en_US -quick-order.button.create-order,Bestellen,de_DE -quick-order.errors.items-required,Please enter at least one product SKU,en_US -quick-order.errors.items-required,Bitte geben Sie mindestens eine Produkt-Artikelnummer,de_DE -quick-order.errors.quantity-required,Quantity must be at least 1,en_US -quick-order.errors.quantity-required,Die Anzahl muss mindestens 1 sein,de_DE -quick-order.paste-order.title,Paste your order,en_US -quick-order.paste-order.title,Bestellung einfügen,de_DE -quick-order.paste-order.description,"Copy and paste your order with the item # and quantity separated by spaces, semicolons or commas. One sku per line.",en_US -quick-order.paste-order.description,"Kopieren Sie und fügen Sie Ihre Bestellung bestehend aus Artikel # und Anzahl, getrennt durch Leerzeichen, Semikolon oder Komma, hier ein. Eine Artikel # pro Reihe.",de_DE -quick-order.paste-order.input-placeholder.copy-paste-order,Paste your order here,en_US -quick-order.paste-order.input-placeholder.copy-paste-order,Bestellung hier einfügen,de_DE -quick-order.paste-order.button.verify,Verify,en_US -quick-order.paste-order.button.verify,Prüfen,de_DE -quick-order.paste-order.errors.text-order-format-incorrect,"Order format is incorrect.",en_US -quick-order.paste-order.errors.text-order-format-incorrect,"Falsches Bestellungsformat.",de_DE -quick-order.paste-order.errors.parser.separator-not-detected,"Separator is not defined.",en_US -page.detail.add-to-cart,In den Warenkorb,de_DE -page.detail.add-to-cart,Add to Cart,en_US -``` -
-
- -Run the following command to import glossary changes: - -```bash -console data:import:glossary -``` - -{% info_block warningBox “Verification” %} - -Make sure that in the database the configured data are added to the `spy_glossary` table. - -{% endinfo_block %} - -## Enable Controllers - -### Controller Provider List - -Register controller provider(s) to Yves application: - -| Provider | Namespace | Enable Controller|Controller Specification | -| --- | --- | --- | --- | -| ` QuickOrderPageControllerProvider` | ` SprykerShop\Yves\QuickOrderPage\Plugin\Provider` | ` QuickOrderController` |Provides functionality to display and process Quick Order table. | - -**src/Pyz/Yves/ShopApplication/YvesBootstrap.php** - -```php - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/shared-carts-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/shared-carts-feature-integration.md deleted file mode 100644 index 6a22f874d28..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/shared-carts-feature-integration.md +++ /dev/null @@ -1,753 +0,0 @@ ---- -title: Shared Carts feature integration -description: The Shared Carts Feature allows sharing shopping carts within an entire business unit. The guide describes how to integrate the feature into your project. -last_updated: Nov 25, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shared-carts-feature-integration-201811 -originalArticleId: 3459b42e-9e0b-47a0-8774-5755e00c9353 -redirect_from: - - /v1/docs/shared-carts-feature-integration-201811 - - /v1/docs/en/shared-carts-feature-integration-201811 - - /docs/scos/dev/feature-integration-guides/201811.0/glue-api/shared-carts-feature-integration.html ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Cart| 2018.11.0 | -| Persistent Cart |2018.11.0 | -|Multiple Carts | 2018.11.0| -| Company Account | 2018.11.0| -| Spryker Core |2018.11.0 | - -### 1) Install Require Modules Using Composer - -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/shared-carts: "^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules have been installed:
ModuleExpected directory
`SharedCart``vendor/spryker/shared-cart`
`SharedCartDataImport``vendor/spryker/shared-cart-data-import`
-{% endinfo_block %} - -### 2) Set up the Database Schema - -Run the following commands to apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database entityTypeEvent
spy_quote_company_usertablecreated
spy_quote_permission_grouptablecreated
spy_quote_permission_group_to_permissiontablecreated
-{% endinfo_block %} - -{% info_block warningBox "Verification" %} -Make sure that the following changes in transfer objects have been applied:
TransferTypeEventPath
`QuoteResponseTransfer.sharedCustomerQuotes`columnadded`src/Generated/Shared/Transfer/QuoteResponseTransfer`
`QuoteTransfer.shareDetails`columnadded`src/Generated/Shared/Transfer/QuoteTransfer`
`QuoteUpdateRequestAttributesTransfer.shareDetails`columnadded`src/Generated/Shared/Transfer/QuoteUpdateRequestAttributesTransfer`
`ShareDetailTransfer`ClassCreated`src/Generated/Shared/Transfer/ShareDetailTransfer`
`ShareDetailCollectionTransfer`ClassCreated`src/Generated/Shared/Transfer/ShareDetailCollectionTransfer`
`QuotePermissionGroupTransfer`ClassCreated`src/Generated/Shared/Transfer/QuotePermissionGroupTransfer`
`QuotePermissionGroupCriteriaFilterTransfer`ClassCreated`src/Generated/Shared/Transfer/QuotePermissionGroupCriteriaFilterTransfer`
`QuotePermissionGroupResponseTransfer`ClassCreated`src/Generated/Shared/Transfer/QuotePermissionGroupResponseTransfer`
`ShareCartRequestTransfer`ClassCreated`src/Generated/Shared/Transfer/ShareCartRequestTransfer`
-{% endinfo_block %} - -### 3) Add Translations - -Glossary keys for flash messages: - -
-src/data/import/glossary.csv - -```yaml -shared_cart.share.error.already_exist,Cart was already shared with this customer,en_US -shared_cart.share.error.already_exist,Der Warenkorb wurde bereits mit diesem Kunden geteilt,de_DE -``` -
-
- -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data has been added to the `spy_glossary` table. -{% endinfo_block %} - -### 4) Import Data - -#### Add Infrastructural Data - -Register the following plugins: - -| Plugin |Specification|Prerequisites|Namespace | -| --- | --- |--- |--- | -|`SharedCartPermissionInstallerPlugin` |Installs the registered infrastructural quote permissions. |None|`Spryker\Zed\SharedCart\Communication\Plugin`| -| `ReadSharedCartPermissionPlugin` | Quote permission to check read shared cart permissions in client layer. |None |`Spryker\Client\SharedCart\Plugin`| -|`WriteSharedCartPermissionPlugin`| Quote permission to check write shared cart permissions in client layer. |None |`Spryker\Client\SharedCart\Plugin`| -|`ReadSharedCartPermissionPlugin`| Quote permission to check read shared cart permissions in zed layer. |None |`Spryker\Zed\SharedCart\Communication\Plugin`| -| `WriteSharedCartPermissionPlugin` | Quote permission to check write shared cart permissions in zed layer. |None |`Spryker\Zed\SharedCart\Communication\Plugin` | - -
-src/Pyz/Zed/Installer/InstallerDependencyProvider.php - -```php - -
- -
-src/Pyz/Client/Permission/PermissionDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Permission/PermissionDependencyProvider.php - -```php - -
- -Run the following console command to execute registered installer plugins and install infrastructural data: - -```bash -console setup:init-db -``` - -{% info_block warningBox "Verification" %} -Make sure that records with the keys `ReadSharedCartPermissionPlugin` and `WriteSharedCartPermissionPlugin` have been added to the `spy_permission` table.
-Make sure that in the database the configured infrastructural quote permission groups have been added to the `spy_quote_permission_group` and `spy_quote_permission_group_to_permission` tables. -{% endinfo_block %} - -#### Import Carts sharing -{% info_block infoBox "Info" %} -The following imported entities will be used as carts to the company user relation in the Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/shared-cart-data-import/data/import/shared_cart.csv - -```yaml -quote_key,company_user_key,permission_group_name -quote-22,Spryker--1,FULL_ACCESS -quote-23,Spryker--1,FULL_ACCESS -quote-23,Spryker--2,FULL_ACCESS -quote-23,Spryker--3,FULL_ACCESS -quote-23,Spryker--6,FULL_ACCESS -quote-23,Spryker--4,READ_ONLY -quote-23,Spryker--5,READ_ONLY -``` -
-
- -| Column |REQUIRED | Data Type |Data Example |Data explanation | -| --- | --- | --- | --- | --- | -| `quote_key` |mandatory | string|quote-22 | Key that will identify the quote to add data to. | -| `company_user_key` | mandatory | string| Spryker--1|Key that will identify the company user that the quote is shared with. | -|`permission_group_name` | mandatory | string| FULL_ACCESS | Permission group that will be assigned to the shared company user. | - -Register the following plugin to enable data import: - -| Plugin |Specification |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `SharedCartDataImportPlugin` |Imports customer's quotes sharing to database. | Make sure that customers have been already imported.
Make sure that company users have been already imported.
Make sure that a cart has been already imported.| `Spryker\Zed\SharedCartDataImport\Communication\Plugin` |`src/Pyz/Zed/DataImport/DataImportDependencyProvider.php` - -```php - It is executed after the cart has been created or updated. | None | `Spryker\Zed\SharedCart\Communication\Plugin` | -| `RemoveSharedQuoteBeforeQuoteDeletePlugin` | Removes the sharing relation for the current cart before the cart has been removed. | None |`Spryker\Zed\SharedCart\Communication\Plugin `| -| `UpdateShareDetailsQuoteAfterSavePlugin`| Updates the cart sharing relations after the cart has been created or updated. |None |`Spryker\Zed\SharedCart\Communication\Plugin `| -| `SharedQuoteSetDefaultBeforeQuoteSavePlugin `| Marks the cart sharing relation for the current customer as active if the quote has been marked as active. |None |`Spryker\Zed\SharedCart\Communication\Plugin` | - -{% info_block infoBox "Info" %} -All shared cart plugins must be added after multicart plugins have been registered. -{% endinfo_block %} - -
-src/Pyz/Zed/Quote/QuoteDependencyProvider.php - -```php - -
- -{% info_block infoBox "Info" %} -A shared quote can be marked as default for a customer that has access. The `is_default` field in the `spy_quote_company_user` DB table must be set to true in the corresponding record.
A new record will be added to `spy_quote_company_user` if the sharing quote functionality is used. -{% endinfo_block %} - -#### Persistent Cart Integration - -Register the following plugins: - -| Plugin |Specification |Prerequisites |Namespase | -| --- | --- | --- | --- | -| `SharedCartsUpdateQuoteUpdatePlugin` | Adds shared cart list to multi cart collection.
Sorts the collection by name.
Saves the multicart collection in the session. | `SharedCartQuoteResponseExpanderPlugin` should be included.
It should be executed after `\Spryker\Client\MultiCart\Plugin\SaveCustomerQuotesQuoteUpdatePlugin` has been registered and before `\Spryker\Client\MultiCart\Plugin\DefaultQuoteUpdatePlugin` has been registered. |`Spryker\Client\SharedCart\Plugin` | -| `ProductSeparatePersistentCartChangeExpanderPlugin` | Allows adding a product as a separate item if the product with the same sku already exists in the cart. | 1 | `Spryker\Client\SharedCart\Plugin` | -| `PermissionUpdateQuoteUpdatePlugin` | Takes a permission list from `QuoteResponseTransfer` and updates a customer from the session. | `SharedCartQuoteResponseExpanderPlugin` should be included. | `Spryker\Client\SharedCart\Plugin`| -| `SharedCartQuoteResponseExpanderPlugin`| Expands `QuoteResponseTransfer` with the following shared cart related data:
  • Carts shared with the customer.
  • Customer permission list.
  • Expands a customer cart with the sharing data.
|1 | `Spryker\Zed\SharedCart\Communication\Plugin` | - -
-src/Pyz/Client/PersistentCart/PersistentCartDependencyProvider.php - -```php - -
- - -
-src/Pyz/Zed/PersistentCart/PersistentCartDependencyProvider - -```php - -
- -{% info_block infoBox "Info" %} -After adding items to the cart, the following things must be done:
  • Quotes shared with the current customer must be added to the multicart session;
  • `CustomerTransfer::$permissions` must contain permissions and be updated in the customer session.
-{% endinfo_block %} - -#### Set up Permission Integration - -Register the following plugin: - -| Plugin |Specification | Prerequisites |Namespace | -| --- | --- | --- | --- | -| `QuotePermissionStoragePlugin`| Shared cart permission provider. | None | `Spryker\Zed\SharedCart\Communication\Plugin` | - -
-src/Pyz/Zed/Permission/PermissionDependencyProvider.php - -```php - -
- -{% info_block warningBox "Note" %} -A customer cannot add an item to read only shared quote. -{% endinfo_block %} - -#### Set up Customer Integration - -Register the following plugin: - -| Plugin| Specification| Prerequisites |Namespace | -| --- | --- | --- | --- | -|`QuotePermissionCustomerExpanderPlugin`| Expands customer with shared cart permissions. |None | `Spryker\Zed\SharedCart\Communication\Plugin`| - -
-src/Pyz/Zed/Customer/CustomerDependencyProvider.php - -```php - -
- -{% info_block warningBox "Note" %} -Logged in customer's `CustomerTransfer::$permissions` must contain such permissions as `ReadSharedCartPermissionPlugin` and `WriteSharedCartPermissionPlugin`. -{% endinfo_block %} - -#### Set up Company User Integration - -Register the following plugin: - -|Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `SharedCartCompanyUserPreDeletePlugin` | Removes all company users from the cart relations before a company user has been removed.| None | `Spryker\Zed\SharedCart\Communication\Plugin\CompanyUserExtension` | - -
-src/Pyz/Zed/CompanyUser/CompanyUserDependencyProvider.php - -```php - -
- -{% info_block warningBox "Note" %} -Before removing a company user, all records from the `spy_quote_company_user` DB table related to the company user must be removed. -{% endinfo_block %} - -## Install feature frontend - -### Prerequisites - -Please review and install the necessary features before beginning the integration step. - -| Name |Version | -| --- | --- | -| Cart | 2018.11.0 | -|Persistent Cart |2018.11.0 | -| Multiple Carts |2018.11.0 | -| Spryker Core E-commerce | 2018.11.0 | - -### 1) Install Require Modules Using Composer - -Run the following command(s) to install the required modules: - -```bash -composer require spryker-feature/shared-carts: "^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules have been installed:
ModuleExpected directory
`SharedCartPage`<`vendor/spryker-shop/shared-cart-page`
`SharedCartWidget``vendor/spryker-shop/shared-cart-widget`
-{% endinfo_block %} - -### 2) Add Translations - -Append glossary according to your configuration: - -
-src/data/import/glossary.csv - -```yaml -shared_cart_widget.add_product.separate,"Add as separate item",en_US -shared_cart_widget.add_product.separate,"Als separaten Artikel hinzufügen",de_DE -shared_cart_widget.cart.share,"Share cart",en_US -shared_cart_widget.cart.share,"Warenkorb teilen",de_DE -shared_cart_widget.cart.unshare,"Unshare cart",en_US -shared_cart_widget.cart.unshare,"Freigabewagen wird aufgehoben",de_DE -shared_cart_widget.cart.dismiss,Dismiss,en_US -shared_cart_widget.cart.dismiss,Ablehnen,de_DE -shared_cart_widget.share_list.shared_with,Cart shared with,en_US -shared_cart_widget.share_list.shared_with,Warenkorb geteilt mit,de_DE -shared_cart_widget.share_list.customer_name,Customer name,en_US -shared_cart_widget.share_list.customer_name,Kundenname,de_DE -shared_cart_widget.share_list.permission,Access level,en_US -shared_cart_widget.share_list.permission,Zugriffsebene,de_DE -shared_cart_widget.share_list.actions,Actions,en_US -shared_cart_widget.share_list.actions,Aktionen,de_DE -shared_cart_widget.share_list.action.unshare,Unshare cart,en_US -shared_cart_widget.share_list.action.unshare,Freigabe des Einkaufswagens,de_DE -shared_cart.share_list.permissions.NO_ACCESS,No access,en_US -shared_cart.share_list.permissions.NO_ACCESS,Kein Zugang,de_DE -shared_cart.share_list.permissions.READ_ONLY,Read-only,en_US -shared_cart.share_list.permissions.READ_ONLY,Schreibgeschützt,de_DE -shared_cart.share_list.permissions.FULL_ACCESS,Full access,en_US -shared_cart.share_list.permissions.FULL_ACCESS,Ohne Einschränkung,de_DE -shared_cart.share_list.permissions.OWNER_ACCESS,Owner access,en_US -shared_cart.share_list.permissions.OWNER_ACCESS,Eigentümer Zugriff,de_DE -shared_cart.form.share_cart,"Share cart",en_US -shared_cart.form.share_cart,"Warenkorb teilen",de_DE -shared_cart.form.share_cart.title,"Share cart ""cart_name""",en_US -shared_cart.form.share_cart.title,"Warenkorb teilen ""cart_name""",de_DE -shared_cart.form.customer,"Customer name",en_US -shared_cart.form.customer,Kundenname,de_DE -shared_cart.form.select_customer,Select customer,en_US -shared_cart.form.select_customer,"Wählen Sie den Kunden aus",de_DE -shared_cart.form.select_permissions,Select access level,en_US -shared_cart.form.select_permissions,"Wählen Sie Zugriffsebene",de_DE -shared_cart.form.share_button,Share,en_US -shared_cart.form.share_button,Aktie,de_DE -shared_cart.form.save_button,Save,en_US -shared_cart.form.save_button,Sparen,de_DE -shared_cart.form.data_empty,"There are no Users with whom you can share shopping cart.",en_US -shared_cart.form.data_empty,"Es gibt keine Benutzer, mit denen Sie den Einkaufswagen teilen können.",de_DE -shared_cart.share.breadcrumbs.share,Share,en_US -shared_cart.share.breadcrumbs.share,Teilen,de_DE -shared_cart.share.breadcrumbs.shopping_carts,Shopping carts,en_US -shared_cart.share.breadcrumbs.shopping_carts,Warenkörbe,de_DE -shared_cart.share.form.users,Users,en_US -shared_cart.share.form.users,Benutzer,de_DE -shared_cart_page.share.success,Cart was successfully shared,en_US -shared_cart_page.share.success,Warenkorb wurde erfolgreich geteilt,de_DE -shared_cart_page.unshare.success,Cart was successfully unshared,en_US -shared_cart_page.unshare.success,Teilen des Warenkorbs wurde erfolgreich aufgehoben ,de_DE -shared_cart_page.dismiss_confirmation.warning,Warning,en_US -shared_cart_page.dismiss_confirmation.warning,Warnung,de_DE -shared_cart.dismiss.title,Dismiss shared cart ‘quote_name’,en_US -shared_cart.dismiss.title,Warenkorb ‘quote_name’ ablehnen,de_DE -shared_cart_page.share.breadcrumbs.dismiss,Dismiss,en_US -shared_cart_page.share.breadcrumbs.dismiss,Ablehnen,de_DE -shared_cart_page.cart.dismiss,Dismiss,en_US -shared_cart_page.cart.dismiss,Ablehnen,de_DE -shared_cart_page.dismiss_confirmation.trying_to_dismiss,Are you sure that you what to dismiss shopping cart?,en_US -shared_cart_page.dismiss_confirmation.trying_to_dismiss,"Sind Sie sicher, dass Sie den Warenkorb ablehnen wollen?",de_DE -shared_cart_page.dismiss.success,Shopping cart was dismissed successfully.,en_US -shared_cart_page.dismiss.success,Warenkorb wurde erfolgreich abgelehnt.,de_DE -``` -
-
- -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data has been added to the `spy_glossary` table. -{% endinfo_block %} - -### 3) Set up Widgets - -Register the following global widgets: - -| Plugin |Description |Prerequisistes |Namespace | -| --- | --- | --- | --- | -|`SharedCartPermissionGroupWidget`| Adds a cart access level for the multicart list to the header.| None |`SprykerShop\Yves\SharedCartWidget\Widget` | -| `CartListPermissionGroupWidget` | Adds the cart access level column and share/dismiss links to the action column for the multicart list page. |None | `SprykerShop\Yves\SharedCartWidget\Widget` | -| `CartDeleteCompanyUsersListWidget` |Renders a list, shared with the customer, for the cart confirm delete page. | None | `SprykerShop\Yves\SharedCartWidget\Widget` | - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- -Run the following command to enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} -Make sure that the following plugin has been registered:
Open Yves and log in with customer. -{% endinfo_block %} - -| Module |Test | -| --- | --- | -| `SharedCartPermissionGroupWidget `| Hover over the multicart list in the header: it should contain the access column.| -| `CartListPermissionGroupWidget` |Open https://example.url/multi-cart/ - the page should contain the access column and share cart link. | -| `CartDeleteCompanyUsersListWidget` |Open https://example.url/multi-cart/. Click on the share cart link.
Share the cart and click on the delete link.
The list of customers whom this cart is shared with should appear on the delete confirmation page.| - - -### 4) Enable Controllers - -| Plugin |Description |Prerequisites |Namespace | -| --- | --- | --- | --- | -| `SharedCartPageControllerProvider` |Provides routes used in SharedCartPage. |None | `SprykerShop\Yves\SharedCartPage\Plugin\Provider` | - -
-src/Pyz/Yves/ShopApplication/YvesBootstrap.php - -```php - -
- -{% info_block warningBox "Verification" %} -Make sure that the following plugin has been registered:
  1. Open Yves and log in with customer.
  2. Open `https://mysprykershop.com/multi-cart/` - the page should contain all customer's quotes.
  3. Click on the share link. The share cart page should open.
-{% endinfo_block %} diff --git a/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-feature-integration.md deleted file mode 100644 index 0a5e7290ad5..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-feature-integration.md +++ /dev/null @@ -1,1163 +0,0 @@ ---- -title: Shopping Lists feature integration -description: This guide walks you through the process of installing the Shopping lists feature into your project. -last_updated: Jan 28, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-lists-feature-integration-201811 -originalArticleId: d8898b5e-8b5e-42ac-b44e-b644f3878d42 -redirect_from: - - /v1/docs/shopping-lists-feature-integration-201811 - - /v1/docs/en/shopping-lists-feature-integration-201811 ---- - -## Install Feature Core -### Prerequisites -To start Shopping Lists feature integration, review and install the necessary features: - -| Name |Version | -| --- | --- | -| Company Account | 2018.11.0 | -| Customer Account Management | 2018.11.0 | -|Spryker Core | 2018.11.0 | -| Cart| 2018.11.0 | -| Prices| 2018.11.0| -| Product |2018.11.0| - -### 1) Install Require Modules using Composer - -Run the following command to install the required modules: - -```yaml -composer require spryker-feature/shopping-lists:"^2018.11.0" --update-with-dependencies -``` - -{% info_block warningBox "Verification" %} -Make sure that the following modules were installed:
ModuleExpected Directory
`ShoppingList``vendor/spryker/shopping-list`
`ShoppingListNote``vendor/spryker/shopping-list-note`
`ShoppingListSession``vendor/spryker/shopping-list-session`
-{% endinfo_block %} - -### 2) Set up the Database Schema - -Adjust the schema definition so that entity changes will trigger events. - -| Affected Entity |Triggered Events | -| --- | --- | -| `spy_shopping_list`| `Entity.spy_shopping_list.create`
`Entity.spy_shopping_list.update`
`Entity.spy_shopping_list.delete` | -| `spy_shopping_list_item` | `Entity.spy_shopping_list_item.create`
`Entity.spy_shopping_list_item.update`
`Entity.spy_shopping_list_item.delete` | -| `spy_shopping_list_company_user` | `Entity.spy_shopping_list_company_user.create`
`Entity.spy_shopping_list_company_user.update`
`Entity.spy_shopping_list_company_user.delete` | -|`spy_shopping_list_company_business_unit `|`Entity.spy_shopping_list_company_business_unit.create`
`Entity.spy_shopping_list_company_business_unit.update`
`Entity.spy_shopping_list_company_business_unit.delete` | - -
-src/Pyz/Zed/ShoppingList/Persistence/Propel/Schema/spy_shopping_list.schema.xml - -```html - - - - - - - -
- - - - - -
- - - - - -
- - - - - -
- -
-``` -
-
- -Run the following commands to apply database changes and generate entity and transfer changes: - -```bash -console transfer:generate -console propel:install -console transfer:generate -``` - -{% info_block warningBox "Verification" %} -Make sure that the following changes have been applied by checking your database:
Database EntityTypeEvent
`spy_shopping_list`tablecreated
`spy_shopping_list_item`tablecreated
`spy_shopping_list_company_user`tablecreated
`spy_shopping_list_company_business_unit`tablecreated
`spy_shopping_list_company_business_unit_blacklist`tablecreated
`spy_shopping_list_permission_group`tablecreated
`spy_shopping_list_permission_group_to_permission`tablecreated
`spy_shopping_list_item_note`tablecreated
-{% endinfo_block %} - -| Database Entity |Type | Event | -| --- | --- | --- | -| `spy_shopping_list` |table |created | -| `spy_shopping_list_item` |table |created | -| `spy_shopping_list_company_user` |table |created | -| `spy_shopping_list_company_business_unit` |table |created | -| `spy_shopping_list_company_business_unit_blacklist` |table |created | -| `spy_shopping_list_permission_group` |table |created | -| `spy_shopping_list_permission_group_to_permission` |table |created | -| `spy_shopping_list_item_note` |table |created | - -{% info_block warningBox "Verification" %} - -Verify the following changes in transfer objects - -|Transfer|Type|Event|Path| -|--- |--- |--- |--- | -|`ShoppingList`|class|created|`src/Generated/Shared/Transfer/ShoppingListTransfer`| -|`ShoppingListCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListCollectionTransfer`| -|`ShoppingListOverviewRequest`|class|created|`src/Generated/Shared/Transfer/ShoppingListOverviewRequestTransfer`| -|`ShoppingListOverviewResponse`|class|created|`src/Generated/Shared/Transfer/ShoppingListOverviewResponseTransfer`| -|`ShoppingListResponse`|class|created|`src/Generated/Shared/Transfer/ShoppingListResponseTransfer`| -|`ShoppingListCompanyUser`|class|created|`src/Generated/Shared/Transfer/ShoppingListCompanyUserTransfer`| -|`ShoppingListCompanyUserCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListCompanyUserCollectionTransfer`| -|`ShoppingListCompanyBusinessUnit`|class|created|`src/Generated/Shared/Transfer/ShoppingListCompanyBusinessUnitTransfer`| -|`ShoppingListCompanyBusinessUnitCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListCompanyBusinessUnitCollectionTransfer`| -|`ShoppingListPermissionGroup`|class|created|`src/Generated/Shared/Transfer/ShoppingListPermissionGroupTransfer`| -|`ShoppingListPermissionGroupCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListPermissionGroupCollectionTransfer`| -|`ShoppingListAddToCartRequest`|class|created|`src/Generated/Shared/Transfer/ShoppingListAddToCartRequestTransfer`| -|`ShoppingListAddToCartRequestCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListAddToCartRequestCollectionTransfer`| -|`ShoppingListShareRequest`|class|created|`src/Generated/Shared/Transfer/ShoppingListShareRequestTransfer`| -|`ShoppingListShareResponse`|class|created|`src/Generated/Shared/Transfer/ShoppingListShareResponseTransfer`| -|`ShoppingListDismissRequest`|class|created|`src/Generated/Shared/Transfer/ShoppingListDismissRequestTransfer`| -|`ShoppingListCompanyBusinessUnitBlacklist`|class|created|`src/Generated/Shared/Transfer/ShoppingListCompanyBusinessUnitBlacklistTransfer`| -|`ShoppingListFromCartRequest`|class|created|`src/Generated/Shared/Transfer/ShoppingListFromCartRequestTransfer`| -|`ShoppingListItem`|class|created|`src/Generated/Shared/Transfer/ShoppingListItemTransfer`| -|`ShoppingListItemCollection`|class|created|`src/Generated/Shared/Transfer/ShoppingListItemCollectionTransfer`| -|`ShoppingListItemResponse`|class|created|`src/Generated/Shared/Transfer/ShoppingListItemResponseTransfer`| -|`ShoppingListPreAddItemCheckResponse`|class|created|`src/Generated/Shared/Transfer/ShoppingListPreAddItemCheckResponseTransfer`| -|`ItemCollection`|class|created|`src/Generated/Shared/Transfer/ItemCollectionTransfer`| -|`SpyShoppingListEntity`|class|created|`src/Generated/Shared/SpyShoppingListEntityTransfer`| -|`SpyShoppingListCompanyUserEntity`|class|created|`src/Generated/Shared/SpyShoppingListCompanyUserEntityTransfer`| -|`SpyShoppingListCompanyBusinessUnit`|class|created|`src/Generated/Shared/SpyShoppingListCompanyBusinessUnitTransfer`| -|`SpyShoppingListCompanyBusinessUnitBlacklist`|class|created|`src/Generated/Shared/SpyShoppingListItemEntityTransfer`| -|`SpyShoppingListPermissionGroupEntity`|class|created|`src/Generated/Shared/SpyShoppingListPermissionGroupEntityTransfer`| -|`SpyShoppingListPermissionGroupToPermissionEntity`|class|created|`src/Generated/Shared/SpyShoppingListPermissionGroupToPermissionEntityTransfer`| -|`SpyShoppingListItemEntity`|class|created|`src/Generated/Shared/SpyShoppingListItemEntityTransfer`| -|`SpyShoppingListItemNoteEntity`|class|created|`src/Generated/Shared/SpyShoppingListItemEntityTransfer`| - -{% endinfo_block %} - -{% info_block warningBox "Verification" %} - -Make sure that the changes were implemented successfully. For this purpose, trigger the following methods and make sure that the above events have been triggered: - -|Path|Method Name| -|--- |--- | -|`src/Orm/Zed/ShoppingList/Persistence/Base/SpyShoppingList.php`|`prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`| -|`src/Orm/Zed/ShoppingList/Persistence/Base/SpyShoppingListItem.php`|`prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`| -|`src/Orm/Zed/ShoppingList/Persistence/Base/SpyShoppingListCompanyUser.php`|`prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`| -|`src/Orm/Zed/ShoppingList/Persistence/Base/SpyShoppingList.php`|`prepareSaveEventName()`
`addSaveEventToMemory()`
`addDeleteEventToMemory()`| - -{% endinfo_block %} - -### 3) Add Translations - -Append glossary for feature: - -
-src/data/import/glossary.csv - -```yaml -customer.account.shopping_list.item.add.success,Item %sku% was added to the List.,en_US -customer.account.shopping_list.item.add.success,Artikel %sku% wurde zu der Liste hinzugefügt.,de_DE -customer.account.shopping_list.item.add.failed,Item %sku% could not be added to the List.,en_US -customer.account.shopping_list.item.add.failed,Artikel %sku% konnte der Liste nicht hinzugefügt werden.,de_DE -customer.account.shopping_list.create.success,"List '%name%' was created successfully.",en_US -customer.account.shopping_list.create.success,"Einkaufsliste '%name%' wurde erfolgreich erstellt.",de_DE -customer.account.shopping_list.error.cannot_update,Cannot update shopping list.,en_UScustomer.account.shopping_list.error.cannot_update,Die Liste konnte nicht aktualisiert werden.,de_DE -customer.account.shopping_list.share.share_shopping_list_fail,This shopping list has been shared before with this entity,en_US -customer.account.shopping_list.share.share_shopping_list_fail,Diese Einkaufsliste wurde bereits mit dieser Entität geteilt,de_DE -``` - -
-
- -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database the configured data are added to the `spy_glossary` table. - -{% endinfo_block %} - -### 4) Configure Export to Redis - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -|`ShoppingListStorageEventSubscriber` | Registers listeners that are responsible for publishing shopping list data based on changes to shopping lists or related entities|None | `Spryker\Zed\ShoppingListStorage\Communication\Plugin\Event\Subscriber` | - -
-src/Pyz/Zed/Event/EventDependencyProvider.php - -```php -add(new ShoppingListStorageEventSubscriber()); - - return $eventSubscriberCollection; - } -} -``` - -
-
- -#### Set up Re-Sync Features - -| Plugin| Specification| Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ShoppingListSynchronizationDataPlugin`| Allows populating empty storage table with data. | None| `Spryker\Zed\ShoppingListStorage\Communication\Plugin\Synchronization` | - -
-src/Pyz/Zed/Synchronization/SynchronizationDependencyProvider.php - -```php - -
- -### 5) Import Data -Add Infrastructural Data - -| Plugin | Specification | Prerequisites |Namespace | -| --- | --- | --- | --- | -| `ShoppingListPermissionsInstallerPlugin`| Installs infrastructural shopping list permissions and permission groups| None |`Spryker\Zed\ShoppingList\Communication\Plugin` | - -
-src/Pyz/Zed/Installer/InstallerDependencyProvider.php - -```php - -
- -Run the following console command to execute registered installer plugins and install infrastructural data: - -```bash -console setup:init-db -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database the permission groups are added to `spy_shoppping_list_permission_group` table and the permissions are added to `spy_permission` table and the relations between them are added to `spy_shopping_list_permission_group_to_permission` table. - -{% endinfo_block %} - -#### Import Shopping Lists - -{% info_block infoBox "Info" %} -The following imported entities will be used as shopping lists in Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/shopping-list-data-import/data/import/shopping_list.csv - -```yaml -shopping_list_key,name,owner_customer_reference -Laptops,Laptops,DE--21 -Cameras,Cameras,DE--21 -Workstations,Workstations,DE--21 -``` -
-
- - -| Column |Is obligatory? |Data Type | Data Example | Data Explanation | -| --- | --- | --- | --- | --- | -|`shopping_list_key |mandatory` | string |Laptops | The key that will identify the shopping list to be referred in future imports| -|`name` |mandatory | string | Laptops | The name of the shopping list | -| `owner_customer_reference` |mandatory | string | DE--21 |The customer reference of the owner of the shopping list | - -Register the following plugin to enable the data import: - -| Plugin| Specification | Prerequisites |Data Explanation | -| --- | --- | --- | --- | -|`ShoppingListDataImportPlugin`| Imports demo shopping lists into database.| None | `Spryker\Zed\ShoppingListDataImport\Communication\Plugin\DataImport`| - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import the data: - -```bash -console data:import shopping-list -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database that the configured data is added to the `spy_shopping_list` table. - -{% endinfo_block %} - -#### Import Shopping List Items - -{% info_block infoBox "Information" %} -The following imported entities will be used as shopping list items in Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/shopping-list-data-import/data/import/shopping_list_item.csv - -```bash -shopping_list_key,product_sku,quantity -Laptops,134_29759322,1 -Laptops,136_24425591,1 -Laptops,135_29836399,3 -Laptops,138_30657838,1 -Laptops,139_24699831,1 -Laptops,141_29380410,1 -Laptops,145_29885473,1 -Laptops,152_27104941,1 -Laptops,137_29283479,1 -Laptops,142_30943081,1 -Laptops,140_22766487,1 -Cameras,013_25904584,1 -Cameras,184_17365820,1 -Cameras,035_17360369,1 -Cameras,017_21748906,1 -Cameras,185_25904533,1 -Cameras,187_26306352,1 -Cameras,015_25904009,5 -Cameras,001_25904006,1 -Cameras,198_19692589,5 -Cameras,027_26976107,2 -Cameras,186_25904506,1 -Cameras,033_32125568,1 -Workstations,115_27295368,1 -Workstations,118_29804739,1 -Workstations,124_31623088,1 -Workstations,126_26280142,1 -Workstations,119_29804808,1 -Workstations,128_29955336,1 -Workstations,127_20723326,1 -Workstations,117_30585828,1 -Workstations,129_30706500,1 -``` - -
-
- -| Column |Is obligatory? |Data Type |Data Example |Data Explanation | -| --- | --- | --- | --- | --- | -|`shopping_list_key` | mandatory | string |Laptops | The key that will identify the shopping list to add data to| -|`product_sku` | mandatory | string | 187_26306352 | The SKU of the concrete product variant that will be added to the shopping list | -| `quantity` | mandatory | integer | 3 | The number of products that will be added to the shopping list| - -Register the following plugin to enable the data import: - -| Plugin | Specification| Prerequisites | Namespace| -| --- | --- | --- | --- | -|`ShoppingListItemDataImportPlugin` |Imports demo shopping list items into database. | Assumes that the shopping list keys exist in database |`Spryker\Zed\ShoppingListDataImport\Communication\Plugin\DataImport` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import the data - -```bash -console data:import shopping-list-item -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database that the configured data is added to the `spy_shopping_list_item` table. - -{% endinfo_block %} - -#### Import Shopping List Company Users - -{% info_block infoBox "Information" %} -The following imported entities will be used as shopping lists being directly shared with specific company users in Spryker OS. -{% endinfo_block %} -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/shopping-list-data-import/data/import/shopping_list_company_user.csv - -```bash -shopping_list_key,company_user_key,permission_group_name -Laptops,Spryker--7,FULL_ACCESS -Cameras,Spryker--7,READ_ONLY -Workstations,Spryker--7,READ_ONLY -Laptops,Spryker--1,FULL_ACCESS -Workstations,Spryker--1,FULL_ACCESS -Workstations,Spryker--2,READ_ONLY -Workstations,Spryker--3,READ_ONLY -Workstations,Spryker--6,READ_ONL -``` -
-
- - -| Column|Is obligatory? | Data Type | Data Example | Data Explanation | -| --- | --- | --- | --- | --- | -|`shopping_list_key` | mandatory |string |Laptops |The key that will identify the shopping list to add data to | -| `company_user_key` |mandatory | string | Spryker--7 | The key that will identify the company user that the shopping list is shared with | -| `permission_group_name` | mandatory | integer| READ_ONLY | The permission group that will be assigned to the shared company user| - -Register the following plugin to enable the data import: - -| Plugin | Specification |Prerequisites | Namespace | -| --- | --- | --- | --- | -| `ShoppingListCompanyUserDataImportPlugin` | Imports demo shopping lists sharing data with company users | Assumes that the shopping list keys, company user keys and the permission groups exist in database | `Spryker\Zed\ShoppingListDataImport\Communication\Plugin\DataImport` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import the data: - -```bash -console data:import shopping-list-company-user -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database that the configured data is added to the `spy_shopping_list_company_user` table. - -{% endinfo_block %} - -#### Import Shopping List Company Business Units - -{% info_block infoBox "Information" %} -The following imported entities will be used as shopping lists being directly shared with specific company business units in Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-vendor/spryker/shopping-list-data-import/data/import/shopping_list_company_business_unit.csv - -```yaml -shopping_list_key,business_unit_key,permission_group_name -Laptops,spryker_systems_HR,FULL_ACCESS -Cameras,spryker_systems_Zurich,FULL_ACCESS -Workstations,spryker_systems_Berlin,READ_ONLY -``` -
-
- - -| Column |Is obligatory? | Data Type | Data Example| Data Explanation | -| --- | --- | --- | --- | --- | -|`shopping_list_key` |mandatory | string| Laptops |The key that will identify the shopping list to add data to | -|`business_unit_key` | mandatory | string |spryker_systems_HR | The key that will identify the company business unit that the shopping list is shared with | -| `permission_group_name` | mandatory | integer|FULL_ACCESS | The permission group that will be assigned to the shared company business unit | - -Register the following plugin to enable the data import: - -|Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -|`ShoppingListCompanyBusinessUnitDataImportPlugin`| Imports demo shopping lists sharing data with company business units| Assumes that the shopping list keys, company business unit keys and the permission groups exist in database | `Spryker\Zed\ShoppingListDataImport\Communication\Plugin\DataImport`| - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import the data - -```bash -console data:import shopping-list-company-business-unit -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database that the configured data is added to the `spy_shopping_list_company_busines_unit` table. - -{% endinfo_block %} - -### 6) Set up Behavior - -#### Implementation -Enable the following behaviors by registering the plugins: - -|Plugin|Specification|Prerequisites|Namespace| -|--- |--- |--- |--- | -|`ReadShoppingListPermissionPlugin`|Provides the ability to read a certain set of shopping lists on the Client side using twig function `can()`|None|`Spryker\Client\ShoppingList\Plugin`| -|`WriteShoppingListPermissionPlugin`|Provides the ability to write to a certain set of shopping lists on the Client side using twig function `can()`|None|`Spryker\Client\ShoppingList\Plugin`| -|`ReadShoppingListPermissionPlugin`|Provides the ability to read a certain set of shopping lists on the Zed side using `PermissionAwareTrait`|None|`Spryker\Zed\ShoppingList\Communication\Plugin`| -|`WriteShoppingListPermissionPlugin`|Provides the ability to write to a certain set of shopping lists on the Zed side using `PermissionAwareTrait`|None|`Spryker\Zed\ShoppingList\Communication\Plugin`| -|`ShoppingListPermissionStoragePlugin`|Retrieves a set of shopping lists permissions related to a certain company user|None|`Spryker\Zed\ShoppingList\Communication\Plugin`| -|`ShoppingListPermissionCustomerExpanderPlugin`|Expands `CustomerTransfer::PERMISSIONS` data with a set of permissions that allow the customer to read or write to shopping lists|Expects `CustomerTransfer` to contain a `CompanyUserTransfer` with `idCompanyUser`.
(hint: CompanyUser.CustomerTransferCompanyUserExpanderPlugin)|`Spryker\Zed\ShoppingList\Communication\Plugin`| -|`ShoppingListItemNoteToItemCartNoteMapperPlugin`|Maps shopping list item notes to cart item notes when creating a cart out of a shopping list|None|`Spryker\Client\ShoppingListNote\Plugin`| -|`ItemCartNoteToShoppingListItemNoteMapperPlugin`|Maps cart item notes to shopping list notes when creating shopping list out of a cart|None|`Spryker\Zed\ShoppingListNote\Communication\Plugin`| -|`ShoppingListItemNoteBeforeDeletePlugin`|Deletes shopping list item note before deleting shopping list item|None|`Spryker\Zed\ShoppingListNote\Communication\Plugin`| -|`ShoppingListItemNoteExpanderPlugin`|Expands `ShoppingListItemTransfer` with `ShoppingListItemNoteTransfer`|None|`Spryker\Zed\ShoppingListNote\Communication\Plugin`| -|`ShoppingListItemNotePostSavePlugin`|Saves shopping list item note when saving shopping list item|None|`Spryker\Zed\ShoppingListNote\Communication\Plugin`| - -
-src/Pyz/Client/Permission/PermissionDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Permission/PermissionDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/Customer/CustomerDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/ShoppingList/ShoppingListDependencyProvider.php - -```php - -
- -
-src/Pyz/Zed/ShoppingList/ShoppingListDependencyProvider.php - -```php - -
- -{% info_block warningBox "Verification" %} - - -Share User A's shopping list with User B, then change the shopping list from User A's profile, User B should get the updated shopping list. Also make sure that sharing shopping lists should have correct permission group (the ones you had in your installation). -Make sure that shopping list item notes are being saved on shopping list item save and deleted on shopping list item delete. Also make sure that shopping list item notes are transferred to cart item notes when creating a cart from a shopping list. - -{% endinfo_block %} - - - - -## Install feature frontend -### Prerequisites - -Please overview and install the necessary features before beginning the integration step. - -| Name |Version | -| --- | --- | -|Spryker Core | 2018.11.0 | -|Company Account | 2018.11.0 | -|Multiple Carts |2018.11.0 | -|Product |2018.11.0 | -|Customer Account Management | 2018.11.0 | - -### 1) Install Require Modules using Composer - -Run the following command to install the required modules: - -```bash -composer require spryker-feature/shopping-lists:"^2018.11.0" --update-with-dependencie -``` -{% info_block warningBox "Verification" %} - -Make sure that he following modules were installed: - -| Module |Expected Directory | -| --- | --- | -|`ShoppingListPage` |`vendor/spryker-shop/shopping-list-page`| -|`ShoppingListWidget`| `vendor/spryker-shop/shopping-list-widget`| -|`ShoppingListNoteWidget` |`vendor/spryker-shop/shopping-list-note-widget`| - -{% endinfo_block %} - -### 2) Add Translations - -#### Implementation -Append glossary according to your configuration: - -
-src/data/import/glossary.csv - -```yaml -customer.account.shopping_list.overview.edit,Edit,en_US -customer.account.shopping_list.overview.edit,Bearbeiten,de_DE -shopping_list.item_note,Note:,en_US -shopping_list.item_note,Hinweis:,de_DE -shopping_list.item_note.add,"Add a note +",en_US -shopping_list.item_note.add,"Füg ein Notiz hinzu +",de_DE -customer.account.shopping_list.overview.share,Share,en_US -customer.account.shopping_list.overview.share,Teilen,de_DE -customer.account.shopping_list.overview.print,Print,en_US -customer.account.shopping_list.overview.print,Drucken,de_DE -customer.account.shopping_list.overview.delete,Delete,en_US -customer.account.shopping_list.overview.delete,Löschen,de_DE -customer.account.shopping_list.overview.owner,Owner,en_US -customer.account.shopping_list.overview.owner,Inhaber,de_DE -customer.account.shopping_list.access,Access,en_US -customer.account.shopping_list.access,Zugriff,de_DE -company.account.company_user,Users,en_US -company.account.company_user,Benutzer,de_DE -customer.account.shopping_list.delete.warning,Warning,en_US -customer.account.shopping_list.delete.warning,Warnung,de_DE -customer.account.shopping_list.delete.you_are_trying_to_delete_shopping_list,"You are trying to delete shopping list %name%",en_US -customer.account.shopping_list.delete.you_are_trying_to_delete_shopping_list,"Sie versuchen die Einkaufsliste %name% zu löschen",de_DE -customer.account.shopping_list.delete.it_belongs_to_follow,It belongs to following,en_US -customer.account.shopping_list.delete.it_belongs_to_follow,Es gehört zu folgenden,de_DE -company.account.business_unit,Business Units,en_US -company.account.business_unit,Geschäftseinheiten,de_DE -customer.account.shopping_list.delete.it_wll_be_deleted_from_all_of_them,It will be deleted from all of them,en_US -customer.account.shopping_list.delete.it_wll_be_deleted_from_all_of_them,Es wird von allen gelöscht,de_DE -customer.account.shopping_list.overview.name,Name,en_US -customer.account.shopping_list.overview.name,Name,de_DE -customer.account.shopping_list.overview.created_date,Date of creation,en_US -customer.account.shopping_list.overview.created_date,Erstelldatum,de_DE -customer.account.shopping_list.overview.item_count,Number of Items,en_US -customer.account.shopping_list.overview.item_count,Anzahl der Teile,de_DE -customer.account.shopping_list.overview.actions,Actions,en_US -customer.account.shopping_list.overview.actions,Aktion,de_DE -customer.account.shopping_list.overview.add_shopping_list_to_cart,Add selected to,en_US -customer.account.shopping_list.overview.add_shopping_list_to_cart,Hinzufügen zu,de_DE -customer.account.shopping_list.product,Product,en_US -customer.account.shopping_list.product,Produkt,de_DE -customer.account.shopping_list.price,Price,en_US -customer.account.shopping_list.price,Preis,de_DE -customer.account.shopping_list.quantity,Quantity,en_US -customer.account.shopping_list.quantity,Anzahl,de_DE -customer.account.shopping_list.availability,Availability,en_US -customer.account.shopping_list.availability,Verfügbarkeit,de_DE -product_alternative_widget.not_applicable,N/A,en_US -product_alternative_widget.not_applicable,N/A,de_DE -customer.account.shopping_list.available,Available,en_US -customer.account.shopping_list.available,Verfügbar,de_DE -customer.account.shopping_list.not_available,Currently not available,en_US -customer.account.shopping_list.not_available,Nicht verfügbar,de_DE -customer.account.shopping_list.remove,Remove,en_US -customer.account.shopping_list.remove,Löschen,de_DE -customer.account.shopping_list.permissions.FULL_ACCESS,Full access,en_US -customer.account.shopping_list.permissions.FULL_ACCESS,Voller Zugriff,de_DE -customer.account.shopping_list.permissions.READ_ONLY,Read only,en_US -customer.account.shopping_list.permissions.READ_ONLY,Schreibgeschützt,de_DE -customer.account.shopping_list.permissions.NO_ACCESS,No access,en_US -customer.account.shopping_list.permissions.NO_ACCESS,Kein Zugriff,de_DE -customer.account.shopping_list,Shopping lists,en_US -customer.account.shopping_list,Einkaufslisten,de_DE -customer.account,Customer Account,en_US -customer.account,Mein Konto,de_DE -customer.account.shopping_list.create_from_cart.title,Add to shopping list,en_US -customer.account.shopping_list.create_from_cart.title,Auf die Merkliste,de_DE -customer.account.shopping_list.shopping_cart,Shopping cart,en_US -customer.account.shopping_list.shopping_cart,Einkaufswagen,de_DE -customer.account.shopping_list.create_from_cart.form_title,'%cart_name%' add to shopping list,en_US -customer.account.shopping_list.create_from_cart.form_title,'%cart_name%' auf die Merkliste,de_DE -customer.account.shopping_list.share.from.share,Share,en_US -customer.account.shopping_list.share.from.share,Teilen,de_DE -customer.account.shopping_list.share.from.share_with,Share Shopping List with:,en_US -customer.account.shopping_list.share.from.share_with,Einkaufsliste teilen mit:,de_DE -customer.account.shopping_list.share.select_company_business_unit,Select business unit,en_US -customer.account.shopping_list.share.select_company_business_unit,Wählen Sie die Geschäftseinheit aus,de_DE -customer.account.shopping_list.share.select_company_user,Select user,en_US -customer.account.shopping_list.share.select_company_user,Benutzer wählen,de_DE -customer.account.print_shopping_list.title.shopping_list_id,Shopping List ID,en_US -customer.account.print_shopping_list.title.shopping_list_id,Einkaufslisten-ID,de_DE -customer.account.print_shopping_list.title.shopping_list_name,Shopping List Name,en_US -customer.account.print_shopping_list.title.shopping_list_name,Name der Einkaufsliste,de_DE -customer.account.print_shopping_list.table.barcode,Barcode,en_US -customer.account.print_shopping_list.table.barcode,Barcode,de_DE -customer.account.print_shopping_list.table.product_sku,Product SKU,en_US -customer.account.print_shopping_list.table.product_sku,Produkt Artikelnummer,de_DE -customer.account.print_shopping_list.table.product_name,Product name,en_US -customer.account.print_shopping_list.table.product_name,Produktname,de_DE -customer.account.print_shopping_list.table.default_price,Default price,en_US -customer.account.print_shopping_list.table.default_price,Standardpreis,de_DE -customer.account.print_shopping_list.table.note,Note,en_US -customer.account.print_shopping_list.table.note,Notiz,de_DE -customer.account.shopping_list.print_shopping_list,Print,en_US -customer.account.shopping_list.print_shopping_list,Drucken,de_DE -customer.account.shopping_list.add_selected_items_to_cart,Add selected items to cart,en_US -customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel in den Warenkorb legen,de_DE -customer.account.shopping_list.add_all_available_to_cart,Add all available products to cart,en_US -customer.account.shopping_list.add_all_available_to_cart,Alle Produkte zum Warenkorb hinzufügen,de_DE -customer.account.shopping_list.empty,Currently there are no items in your shopping list.,en_US -customer.account.shopping_list.empty,Zurzeit ist kein Produkt auf deiner Einkaufsliste.,de_DE -customer.account.shopping_list.overview.dismiss,Dismiss,en_US -customer.account.shopping_list.overview.dismiss,Ablehnen,de_DE -customer.account.shopping_list.overview.warning,Warning,en_US -customer.account.shopping_list.overview.warning,Warnung,de_DE -shopping_list_page.dismiss_confirmation.trying_to_dismiss,"Are you sure that you what to dismiss shopping list?",en_US -shopping_list_page.dismiss_confirmation.trying_to_dismiss,"Sind Sie sicher, dass Sie den Einkaufsliste ablehnen wollen?",de_DE -shopping_list_page.dismiss.failed,Shopping list was not dismissed.,en_US -shopping_list_page.dismiss.failed,Einkaufsliste wurde nicht abgelehnt,de_DE -shopping_list_page.dismiss.success,Shopping list was dismissed successfully.,en_US -shopping_list_page.dismiss.success,"Einkaufsliste wurde erfolgreich abgelehnt.",de_DE -general.cancel.button,Cancel,en_US -general.cancel.button,Abbrechen,de_DE -customer.account.shopping_list.overview.add_new,Add new shopping list,en_US -customer.account.shopping_list.overview.add_new,Neue Einkaufsliste hinzufügen,de_DE -forms.submit-btn,Submit,en_US -forms.submit-btn,Speichern,de_DE -general.back.button,Back,en_US -general.back.button,Zurück,de_DE -shopping_list.cart.items_add.success,Items were added to the List,en_US -shopping_list.cart.items_add.success,Artikel wurden zu der Liste hinzugefügt,de_DE -shopping_list.cart.items_add.failed,Items could not be added to the List,en_US -shopping_list.cart.items_add.failed,Artikel konnten der Liste nicht hinzugefügt werden,de_DE -customer.account.shopping_list.item.remove.success,Product removed successfully.,en_US -customer.account.shopping_list.item.remove.success,Produkt erfolgreich entfernt.,de_DE -customer.account.shopping_list.item.remove.failed,Product was not removed from shopping list.,en_US -customer.account.shopping_list.item.remove.failed,Artikel wurde nicht von der Einkaufsliste entfernt,de_DE -customer.account.shopping_list.item.added_to_cart.failed,Item was not added to cart.,en_US -customer.account.shopping_list.item.added_to_cart.failed,Produkt konnte nicht in den Warenkorb gelegt werden.,de_DE -customer.account.shopping_list.item.added_to_cart,Item added to cart successfully.,en_US -customer.account.shopping_list.item.added_to_cart,Produkt erfolgreich in den Warenkorb gelegt.,de_DE -customer.account.shopping_list.item.added_all_available_to_cart.failed,Not all items are added to cart successfully,en_US -customer.account.shopping_list.item.added_all_available_to_cart.failed,Nicht alle Artikel konnten erfolgreich in den Warenkorb gelegt werden.,de_DE -customer.account.shopping_list.item.added_all_available_to_cart,Available items added to cart successfully.,en_US -customer.account.shopping_list.item.added_all_available_to_cart,Verfügbare Produkte wurden erfolgreich in den Warenkorb gelegt.,de_DE -customer.account.shopping_list.item.select_item,At least one product should be selected.,en_US -customer.account.shopping_list.item.select_item,Mindestens ein Produkt sollte ausgewählt werden.,de_DE -customer.account.shopping_list.delete.success,Shopping list deleted successfully.,en_US -customer.account.shopping_list.delete.success,Einkaufsliste erfolgreich gelöscht.,de_DE -customer.account.shopping_list.delete.failed,Shopping list was not deleted.,en_US -customer.account.shopping_list.delete.failed,Einkaufsliste konnte nicht gelöscht.,de_DE -shopping_list_page.dismiss.failed,Shopping list was not dismissed.,en_US -shopping_list_page.dismiss.failed,Einkaufsliste wurde nicht abgelehnt,de_DE -shopping_list_page.dismiss.success,Shopping list was dismissed successfully.,en_US -shopping_list_page.dismiss.success,"Einkaufsliste wurde erfolgreich abgelehnt.",de_DE -customer.account.shopping_list.updated,Shopping list updated successfully,en_US -customer.account.shopping_list.updated,Einkaufsliste erfolgreich aktualisiert.,de_DE -customer.account.shopping_list.items.added_to_cart.not_found,There are no products available for adding to cart.,en_US -customer.account.shopping_list.items.added_to_cart.not_found,Es sind keine Produkte zum Hinzufügen in den Warenkorb verfügbar.,de_DE -customer.account.shopping_list.items.added_to_cart.failed,Items were not added to cart.,en_US -customer.account.shopping_list.items.added_to_cart.failed,Produkte konnten nicht in den Warenkorb gelegt werden.,de_DE -customer.account.shopping_list.items.added_to_cart,Items added to cart successfully.,en_US -customer.account.shopping_list.items.added_to_cart,Produkte erfolgreich in den Warenkorb gelegen.,de_DE -customer.account.shopping_list.share.share_shopping_list_successful,Sharing shopping list was successful,en_US -customer.account.shopping_list.share.share_shopping_list_successful,Einkaufsliste wurde erfolgreich geteilt,de_DE -customer.account.shopping_list.clear.success,Shopping list was successfully cleared.,en_US -customer.account.shopping_list.clear.success,Einkaufsliste wurde erfolgreich gelöscht.,de_DE -customer.account.shopping_list.share.error.one_id_required,Please choose either customer or business unit to share the shopping list with,en_US -customer.account.shopping_list.share.error.one_id_required,"Bitte wählen Sie entweder einen Kunden oder eine Geschäftseinheit aus, mit welchem Sie die Einkaufsliste teilen möchten.",de_DE -cart.add-to-shopping-list.form.add_new,Add new shopping list,en_US -cart.add-to-shopping-list.form.add_new,Einkaufsliste erstellen,de_DE -cart.add-to-shopping-list.form.placeholder,Enter name of a new shopping list,en_US -cart.add-to-shopping-list.form.placeholder,Geben Sie den Namen einer neuen Einkaufsliste ein,de_DE -cart.add-to-shopping-list.form.error.empty_name,"Please, enter shopping list name",en_US -cart.add-to-shopping-list.form.error.empty_name,Bitte geben Sie den Namen der Einkaufsliste ein,de_DE -customer.account.shopping_list.create_from_cart.choose_shopping_list,Choose shopping list,en_US -customer.account.shopping_list.create_from_cart.choose_shopping_list,Wählen Sie die Einkaufsliste,de_DE -customer.account.shopping_list.create_from_cart.name,Name,en_US -customer.account.shopping_list.create_from_cart.name,Name,de_DE -customer.account.shopping_list.item.not_added,Failed to add product to shopping list.,en_US -customer.account.shopping_list.item.not_added,Hinzufügen zur Einkaufsliste fehlgeschlagen.,de_DE -widget.shopping_list.multi_cart.to_shopping_list,To shopping list,en_US -widget.shopping_list.multi_cart.to_shopping_list,Zur Einkaufsliste,de_DE -shopping_list_widget.items,Items,en_US -shopping_list_widget.items,Artikel,de_DE -shopping_list_widget.full_access,Full access,en_US -shopping_list_widget.full_access,Ohne Einschränkung,de_DE -shopping_list_widget.read_only,Read only,en_US -shopping_list_widget.read_only,Schreibgeschützt,de_DE -widget.shopping_list.multi_cart.to_shopping_list,To shopping list,en_US -widget.shopping_list.multi_cart.to_shopping_list,Zur Einkaufsliste,de_DE -shopping_list.item_quantity,Anzahl,de_DE -shopping_list.item_quantity,Quantity,en_US -page.detail.add-to-shopping-list,Add to Shopping list,en_US -page.detail.add-to-shopping-list,In die Einkaufsliste,de_DE -shopping_list.shopping_list,Shopping list,en_US -shopping_list.shopping_list,Einkaufsliste,de_DE -shopping_list.no_lists_created,You do not have any shopping lists yet.,en_US -shopping_list.no_lists_created,Du hast noch keine Einkaufslisten.,de_DE -shopping_list.create_new_list,Create new list,en_US -shopping_list.create_new_list,Erstelle eine neue Liste,de_DE -``` -
-
- -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} - -Make sure that in the database the configured data are added to the `spy_glossary` table. - -{% endinfo_block %} - -### 3) Set up Widgets - -Enable global widgets: - -|Widget|Description|Namespace| -|--- |--- |--- | -|`ShoppingListNavigationMenuWidget`|Shows a top-navigation sub-menu containing all of the current logged-in customer shopping lists|`SprykerShop\Yves\ShoppingListWidget\Widget`| -|`ShoppingListMenuItemWidget`|Shows customer shopping lists in customer account navigation side menu.|`SprykerShop\Yves\ShoppingListWidget\Widget`| -|`AddToShoppingListWidget`|Allows customer to be able to add a product with an sku to one of the shopping lists they have write access for|`SprykerShop\Yves\ShoppingListWidget\Widget`| -|`ShoppingListItemNoteWidget`|Allows customer to create/save/remove notes from shopping list items|`SprykerShop\Yves\ShoppingListNoteWidget\Widget`| - -
-src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php - -
- - -{% info_block infoBox "Additional Information" %} -`ShoppingListWidget` uses Javascript for some functionality: -{% endinfo_block %} - -| Functionality | Path | -| --- | --- | -| Injects item quantity from item quantity dropdown into shopping list save form. |`vendor/spryker/spryker-shop/Bundles/shopping-list-widget/src/SprykerShop/Yves/ShoppingListWidget/Theme/default/components/molecules/form-data-injector/form-data-injector.ts` | - -Run the following command to enable Javascript and CSS changes: - -```bash -console frontend:yves:build -``` - -{% info_block warningBox "Verification" %} - -Make sure that the following widgets were registered: - -|Module|Test| -|--- |--- | -|`AddToShoppingListWidget`|Go to the product detail page and add a product to a shopping list| -|`ShoppingListItemNoteWidget`|Go to a shopping list save a note to an item| -|`ShoppingListMenuItemWidget`|Login with a customer with a company account that has a shopping and you should see the shopping list widget in the top navigation bar| -|`ShoppingListNavigationMenuWidget`|Login with a customer with a company account and go to My Account page, the shopping list side navigation should show on the left side| - -{% endinfo_block %} - - - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-product-options-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-product-options-feature-integration.md deleted file mode 100644 index 9565ca617a1..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/shopping-lists-product-options-feature-integration.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Shopping Lists + Product Options feature integration -last_updated: Apr 24, 2020 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-lists-product-options-feature-integration-2018-11 -originalArticleId: 258508f1-0ce9-4f7c-92af-94ba0eb70016 -redirect_from: - - /v1/docs/shopping-lists-product-options-feature-integration-2018-11 - - /v1/docs/en/shopping-lists-product-options-feature-integration-2018-11 -related: - - title: Shopping Lists feature integration - link: docs/scos/dev/feature-integration-guides/page.version/shopping-lists-feature-integration.html ---- - -## Install Feature Core -### Prerequisites -To start feature integration, review and install the necessary features. -|Name|Version| -|---|---| -|Product Options|2018.11.0| -|Shopping Lists|2018.11.0| -### 1) Install the Required Modules by Using Composer -#### Implementation -Run the following command to install the required modules: -```bash -composer require spryker-feature/shopping-list-product-option-connector:"^1.0.0" --update-with-dependencies -``` -#### Verification -Verify if the following modules were installed: -|Module|Expected Directory| -|---|---| -|`ShoppingListProductOptionConnector`|`vendor/spryker/shopping-list-product-option-connector`| -### 2) Set up the Database Schema and Transfer Objects -#### Implementation -Run the following commands to apply database changes and generate entity and transfer changes: -```yaml -console transfer:generate -console propel:install -console transfer:generate -``` -#### Verification -Make sure that the following changes are applied by checking your database: -|Module|Type|Event| -|---|---|---| -|`spy_shopping_list_product_option`|`table`|`created`| -Make sure that the following changes are applied in transfer objects: -|Module|Type|Event|Path| -|---|---|---|---| -|`ProductOption`|`class`|`created`|`src/Generated/Shared/Transfer/ProductOptionTransfer`| -|`ProductOptionCriteria`|`class`|`created`|`src/Generated/Shared/Transfer/ProductOptionCriteriaTransfer`| -|`ProductOptionCollection`|`class`|`created`|`src/Generated/Shared/Transfer/ProductOptionCollectionTransfer`| -|`ProductOptionValueStorage`|`class`|`created`|`src/Generated/Shared/Transfer/ProductOptionValueStorageTransfer`| -|`ShoppingListItem`|`class`|`created`|`src/Generated/Shared/Transfer/ShoppingListItemTransfer`| -### 3) Set up Behavior -#### Implementation -Enable the following behavior be registering the plugins: -|Plugin|Specification|Prerequisites|Namespaces| -|---|---|---|---| -|`ShoppingListItemProductOptionRequestMapperPlugin`|Provides the ability to map product options from request parameters to `ShoppingListItemTransfer`.|None|S`pryker\Client\ShoppingListProductOptionConnector\ShoppingList`| -|`ProductOptionQuoteItemToItemMapperPlugin`|Provides the ability to map an item product option to a shopping list item product option when transferring items from a shopping list to a cart.|None|`Spryker\Client\ShoppingListProductOptionConnector\ShoppingList`| -|`ShoppingListItemProductOptionToItemProductOptionMapperPlugin`|Provides the ability to map a shopping list item product option to an item product option when transferring items from a shopping list to a cart.|None|`Spryker\Client\ShoppingListProductOptionConnector\ShoppingList`| - -
-src/Pyz/Client/ShoppingList/ShoppingListDependencyProvider.php - - -```php - -
- -#### Verification -Add an item with a product option to a shopping list, make sure that the corresponding table row has been created in `spy_shopping_list_product_option`. -Make sure that when creating a cart from a shopping list, the product options are transferred to cart. The other way around should also work, having a cart with an item with product options in it, when creating a shopping list out of should contain the selected product options. - -## Install feature frontend -### Prerequisites -Please review and install the necessary features before beginning the integration step. -|Name|Version| -|---|---| -|Spryker Core| 2018.11.0| -|Product Options|2018.11.0| -### 1) Add Translations -#### Implemenation -Append glossary according to your configuration: -
-src/data/import/glossary.csv - -```yaml -customer.account.shopping_list.remove_all,Remove all,en_US -customer.account.shopping_list.remove_all,Alles entfernen,de_D -``` -
-
- -Run the following console command to import data: -```yaml -console data:import glossary -``` -#### Verification - -Make sure that in the database the configured data are added to the `spy_glossary` table. - -### 2) Set up Behavior -Enable the following behaviors by registering the plugins: -|Plugin|Specification|Prerequisites|Namespaces| -|---|---|---|---| -|`ShoppingListItemProductOptionFormExpanderPlugin`|Provides the ability to have the ability to product option form elements to shopping list item form.|None|`SprykerShop\Yves\ProductOptionWidget\Plugin\ShoppingListPage`| -|`ShoppingListItemProductOptionToItemProductOptionMapperPlugin`|Provides the ability to populate the shopping list with product option data.|None|`SprykerShop\Yves\ProductOptionWidget\Plugin\ShoppingListPage`| -
-src/Pyz/Yves/ShoppingListPage/ShoppingListPageDependencyProvider.php - -```php - -
- -#### Verification -Make sure that items with product options attached to them in shopping list have the dropdown menu of product options next to them. Also make sure that the saved product option is the one that is saved on page reload. - -### 3) Set up Widgets -#### Implementation -Register the following plugins to enable widgets: -|Plugin|Specification|Prerequisites|Namespaces| -|---|---|---|---| -|`ShoppingListItemProductOptionWidgetPlugin`|Shows a drop-down of product options when showing a shopping list item with the selected product option as the selected one.|None|`SprykerShop\Yves\ProductOptionWidget\Plugin\ShoppingListPage`| - -
-Yves/ShoppingListPage/ShoppingListPageDependencyProvider.php - -```php - -
- -Run the following console command to import data: -```yaml -console frontend:yves:build -``` -#### Verification -Make sure that the following changes are applied by checking your database: -|Module|Test| -|---|---| -|`ShoppingListItemProductOptionWidgetPlugin`|Go to the shopping list page and check a product added to it with product options| - diff --git a/docs/scos/dev/feature-integration-guides/201811.0/splittable-order-items-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/splittable-order-items-feature-integration.md deleted file mode 100644 index 428f9de67a6..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/splittable-order-items-feature-integration.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Splittable Order Items feature integration -last_updated: Oct 11, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/splittable-order-items-integration -originalArticleId: 8b3b87f9-9237-4630-845c-46495f0d61e8 -redirect_from: - - /v1/docs/splittable-order-items-integration - - /v1/docs/en/splittable-order-items-integration ---- - -The Splittable Order Items feature is shipped with following modules: - -| Module | Description | -| --- | --- | -| [DiscountExtension](https://github.com/spryker/spryker/tree/master/Bundles/DiscountExtension) | Provides extension plugins for the `Discount` module. | -| [SalesQuantity](https://github.com/spryker/spryker/tree/master/Bundles/SalesQuantity)| Provides support in handling and configuring quantity for sales orders and items. | - -To install the Merchants and Merchant relations feature, follows the steps below: - -1. Install necessary modules using composer -Update existing and install the required modules: - -```bash -composer update "spryker/*" "spryker-shop/*" -``` - -```bash -composer require spryker/discount-extension:"^1.0.0" spryker/sales-quantity:"^1.0.0" --update-with-dependencies -``` - -2. Run the commands: - -```bash -console transfer:generate -console propel:install -``` - -3. Add a plugin to Zed `CartDependencyProvider`: - - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `Cart` | `IsQuantitySplittableItemExpanderPlugin` | Adds a new `isQuantitySplittable` attribute for products | `getExpanderPlugins` | - -**src/Pyz/Zed/Cart/CartDependencyProvider.php** - -```php -... -use Spryker\Zed\SalesQuantity\Communication\Plugin\Cart\IsQuantitySplittableItemExpanderPlugin; -... -protected function getExpanderPlugins(Container $container) - { - return [ - ... - new IsQuantitySplittableItemExpanderPlugin(), - ... - ]; - } -``` - -4. Add a plugin to Zed `SalesDependencyProvider`: - - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `Sales` | `NonSplittableItemTransformerStrategyPlugin` | Defines order item breakdown strategy for cart items depending on if the product is splittable or non-splittable. | `getItemTransformerStrategyPlugins` | - -**src/Pyz/Zed/Sales/SalesDependencyProvider.php** - -```php -... -use Spryker\Zed\Sales\Communication\Plugin\SalesExtension\SingleQuantityBasedItemTransformerStrategyPlugin; -... -use Spryker\Zed\SalesQuantity\Communication\Plugin\SalesExtension\NonSplittableItemTransformerStrategyPlugin; -... - /** - * @return \Spryker\Zed\SalesExtension\Dependency\Plugin\ItemTransformerStrategyPluginInterface[] - */ - public function getItemTransformerStrategyPlugins(): array - { - return [ - ... - new NonSplittableItemTransformerStrategyPlugin(), - ... - ]; - } -``` - -5. Add plugins to Zed `DiscountDependencyProvider`: - - -| Module | Plugin | Description | Method in Dependency Provider | -| --- | --- | --- | --- | -| `Discount` |`NonSplittableDiscountableItemTransformerStrategyPlugin and` | Defines discountable item transformation strategy for splittable and non-splittable items to adjust the discount calculation item breakdown according to the corresponding order item breakdown. | `getDiscountableItemTransformerStrategyPlugins` | - -**src/Pyz/Zed/Discount/DiscountDependencyProvider.php** - -```php -... -use Spryker\Zed\Discount\Communication\Plugin\DiscountExtension\SingleQuantityBasedDiscountableItemTransformerStrategyPlugin; -... -use Spryker\Zed\SalesQuantity\Communication\Plugin\DiscountExtension\NonSplittableDiscountableItemTransformerStrategyPlugin; -... - /** - * @return \Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemTransformerStrategyPluginInterface[] - */ - protected function getDiscountableItemTransformerStrategyPlugins(): array - { - return [ - new NonSplittableDiscountableItemTransformerStrategyPlugin(), - ... - ]; - } -``` diff --git a/docs/scos/dev/feature-integration-guides/201811.0/volume-prices-feature-integration.md b/docs/scos/dev/feature-integration-guides/201811.0/volume-prices-feature-integration.md deleted file mode 100644 index 9359f3b5ba9..00000000000 --- a/docs/scos/dev/feature-integration-guides/201811.0/volume-prices-feature-integration.md +++ /dev/null @@ -1,323 +0,0 @@ ---- -title: Volume Prices feature integration -description: The Volume Prices Feature allows setting specific prices for units based on quantities. The guide describes how to integrate the feature into your project. -last_updated: Nov 26, 2019 -template: feature-integration-guide-template -originalLink: https://documentation.spryker.com/v1/docs/volume-prices-feature-integration -originalArticleId: 672326c2-ded8-4d9a-9ea2-3ffcfece9f34 -redirect_from: - - /v1/docs/volume-prices-feature-integration - - /v1/docs/en/volume-prices-feature-integration -related: - - title: Volume Prices Feature Overview - link: docs/scos/user/features/page.version/prices-feature-overview/volume-prices-overview.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html ---- - -## Install Feature Core -### Prerequisites -Install the required features: - -| Name | Version | -| --- | --- | -| Spryker Core | 2018.11.0 | -| Prices | 2018.11.0 | - -
- -**Verification** - -Make sure that the following modules have been installed: - -| Module | Expected directory | -| --- | --- | -| `PriceProductVolume` | `vendor/spryker/price-product-volume` | - -
- -### 1) Set up Transfer Objects -Run the following commands to generate transfer changes: - -```bash -console transfer:generate -``` -
- -**Verification** -Make sure that the following changes in transfer objects have been applied: - -| Transfer | Type | Event | Path | -| --- | --- | --- | --- | -| `MoneyValue` | class | created | `src/Generated/Shared/Transfer/MoneyValueTransfer` | -| `PriceProduct` |class |created | `src/Generated/Shared/Transfer/PriceProductTransfer` | -| `PriceProductVolume` |class | created | `src/Generated/Shared/Transfer/PriceProductVolumeTransfer` | -| `PriceProductVolumeCollection` |class | created |`src/Generated/Shared/Transfer/PriceProductVolumeCollectionTransfer` | -| `PriceProductFilter` |class | created | `src/Generated/Shared/Transfer/PriceProductFilterTransfer` | -| `PriceProductCriteria` | class | created | `src/Generated/Shared/Transfer/PriceProductCriteriaTransfer` | - -
- -### 2) Import Data -#### Import Volume Prices - -{% info_block infoBox "Info" %} -The following imported entities will be used as _productvol_ in Spryker OS. -{% endinfo_block %} - -Prepare your data according to your requirements using our demo data: - -
-src/data/import/product_price.csv - -```bash -abstract_sku,concrete_sku,price_type,store,currency,value_net,value_gross,price_data.volume_prices -193,,DEFAULT,DE,EUR,16195,17994,"[{""quantity"":5,""net_price"":150,""gross_price"":165}, {""quantity"":10,""net_price"":145,""gross_price"":158}, {""quantity"":20,""net_price"":140,""gross_price"":152}]" -195,,DEFAULT,DE,CHF,40848,45387,"[{""quantity"":3,""net_price"":350,""gross_price"":385}, {""quantity"":8,""net_price"":340,""gross_price"":375}]" -194,,DEFAULT,AT,EUR,20780,23089,"[{""quantity"":5,""net_price"":265,""gross_price"":295}, {""quantity"":10,""net_price"":275,""gross_price"":310}, {""quantity"":20,""net_price"":285,""gross_price"":320}]" -``` - -
-
- -| Column| Is obligatory? | Data type | Data example | Data explanation | -| --- | --- | --- | --- | --- | -| `abstract_sku` | optional | string | 193 | Either `abstract_sku` or `concrete_sku` should be present to attach the given prices to the correct product. | -| `concrete_sku` | optional | string | 117_29890338 |Either `abstract_sku` or `concrete_sku` should be present to attach the given prices to the correct product. | -| `price_type` | mandatory |string | DEFAULT | None | -| `store` |mandatory | string |DE |Store in which the specific product has that specific price. | -|`currency` | mandatory |string | EUR | Currency in which the specific product has that specific price. | -| `value_net` | mandatory | integer |10200 | Net (after tax is paid) price in cents. | -| `value_gross` | mandatory | integer |12000 | Gross (before tax is paid) price in cents. | -|`price_data.volume_prices` | optional| json string|`"[{""quantity"":5,""net_price"":150,""gross_price"":165}]"` |A json description of prices when the quantity changes (volume based pricing). In the example given, the product bought, when it has a quantity of less than 5, it uses the normal price, but uses this volume price when the quantity is greater than 5. | - -Register the following plugin to enable data import: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `PriceProductDataImportPlugin` | Imports demo product price data into the database. | None | `Spryker\Zed\PriceProductDataImport\Communication\Plugin` | - -
-src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php - -
- -Run the following console command to import data: - -```bash -console data:import price-product -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data has been added to the `spy_product_price` table. -{% endinfo_block %} - -### 3) Set up Behavior -Enable the following behaviors by registering the plugins: - -| Plugin | Specification | Prerequisites | Namespace | -| --- | --- | --- | --- | -| `PriceProductVolumeExtractorPlugin` | Provides the ability to extract volume prices from an array of `PriceProductTransfers` for abstract or concrete products to show them on Frontend side to the customer while buying. | None | `Spryker\Client\PriceProductVolume\Plugin\PriceProductStorageExtension` | -| `PriceProductVolumeExtractorPlugin` | Provides the ability to extract volume prices from an array of `PriceProductTransfers` for abstract or concrete products to validate prices when adding items to cart or to validate prices on the backend side. | None | `Spryker\Zed\PriceProductVolume\Communication\Plugin\PriceProductExtension` | -| `PriceProductVolumeFilterPlugin` |Provides the ability to decide, based on selected product quantity, which `PriceProduct` should be chosen based on the set volume prices. | None | `Spryker\Service\PriceProductVolume\Plugin\PriceProductExtension` | - -
-src/Pyz/Zed/PriceProduct/PriceProductDependencyProvider.php - -```php - -
- -
-src/Pyz/Client/PriceProductStorage/PriceProductStorageDependencyProvider.php - -```php - -
- -
-src/Pyz/Service/PriceProduct/PriceProductDependencyProvider.php - -```php - -
- -## Install feature frontend - -### Prerequisites - -Please overview and install the necessary features before beginning the integration step. - -| Name | Version | -| --- | --- | -| Spryker Core E-commerce |2018.11.0 | -| Prices | 2018.11.0 | - -
- -**Verification** -Make sure that the following modules have been installed: - -| Module | Expected directory | -| --- | --- | -|`PriceProductVolumeWidget` |`vendor/spryker-shop/price-product-volume-widget` | - -
- -### 1) Add Translations -Append glossary according to your configuration: - -src/data/import/glossary.csv - -```bash -page.detail.volume_price.quantity,Quantity,en_US -page.detail.volume_price.quantity,Anzahl,de_DE -page.detail.volume_price.price,Price,en_US -page.detail.volume_price.price,Preis,de_DE -``` - -Run the following console command to import data: - -```bash -console data:import glossary -``` - -{% info_block warningBox "Verification" %} -Make sure that in the database the configured data has been added to the `spy_glossary` table. -{% endinfo_block %} - -### 2) Set up Widgets -Enable global widgets: - -| Widget | Description | Namespace | -| --- | --- | --- | -| `ProductPriceVolumeWidget` | Shows a table of volume prices for a product that contains the columns: quantity and price for that quantity threshold. | `SprykerShop\Yves\PriceProductVolumeWidget\Widget` | - -src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php -
- -**Verification** -Make sure that the following widgets have been registered: - -| Module | Test | -| --- | --- | -| `ProductPriceVolumeWidget` | Go to the product detail page for a product with volume prices set, and observe the table in the detail area that contains the volume prices data. | - -
- - - -[//]: # (by Ahmed Sabaa, Yuliia Boiko) diff --git a/docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/dynamic-data-api-integration.md b/docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/data-exchange-api-integration.md similarity index 73% rename from docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/dynamic-data-api-integration.md rename to docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/data-exchange-api-integration.md index 82f256b711a..b79d2a16721 100644 --- a/docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/dynamic-data-api-integration.md +++ b/docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/data-exchange-api-integration.md @@ -1,18 +1,18 @@ --- -title: Dynamic Data API integration -description: Integrate the Dynamic Data API into a Spryker project. -last_updated: June 22, 2023 +title: Data Exchange API integration +description: Integrate the Data Exchange API into a Spryker project. +last_updated: Aug 21, 2023 template: feature-integration-guide-template redirect_from: - - /docs/scos/dev/feature-integration-guides/202304.0/glue-api/dynamic-data-api/dynamic-data-api-integration.html - - /docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api-integration.html + - /docs/scos/dev/feature-integration-guides/202304.0/glue-api/dynamic-data-api/data-exchange-api-integration.html + - /docs/scos/dev/feature-integration-guides/202307.0/glue-api/data-exchange-api-integration.html --- -This document describes how to integrate the Dynamic Data API into a Spryker project. +This document describes how to integrate the Data Exchange API into a Spryker project. --- -The Dynamic Data API is a powerful tool that allows seamless interaction with your database. +The Data Exchange API is a powerful tool that allows seamless interaction with your database. You can easily access your data by sending requests to the API endpoint. @@ -20,7 +20,7 @@ It enables you to retrieve, create, update, and manage data in a flexible and ef ## Install feature core -Follow the steps below to install the Dynamic Data API core. +Follow the steps below to install the Data Exchange Data API core. ### Prerequisites @@ -94,7 +94,7 @@ class DynamicEntityBackendApiConfig extends SprykerDynamicEntityBackendApiConfig } ``` -3. The Dynamic Data API provides a logging mechanism to capture important information about requests and any thrown exceptions. +3. The Data Exchange API provides a logging mechanism to capture important information about requests and any thrown exceptions. Logging is enabled by default. Adjust `DynamicEntityBackendApiConfig` in order to disable this option or change the path for the log file. **src/Pyz/Glue/DynamicEntityBackendApi/DynamicEntityBackendApiConfig.php** @@ -136,6 +136,109 @@ class DynamicEntityBackendApiConfig extends SprykerDynamicEntityBackendApiConfig } ``` +### Configure Data Exchange installation + +1. Optional: To install default configuration data, create a configuration file: + +
src/Pyz/Zed/DynamicEntity/data/installer/configuration.json + +```json +[ + { + "tableName": "spy_country", + "tableAlias": "countries", + "isActive": true, + "definition": { + "identifier": "id_country", + "fields": [ + { + "fieldName": "id_country", + "fieldVisibleName": "id_country", + "isCreatable": true, + "isEditable": true, + "type": "integer", + "validation": { "isRequired": false } + }, + { + "fieldName": "iso2_code", + "fieldVisibleName": "iso2_code", + "isCreatable": true, + "isEditable": true, + "type": "string", + "validation": { "isRequired": true } + }, + { + "fieldName": "iso3_code", + "fieldVisibleName": "iso3_code", + "isCreatable": true, + "isEditable": true, + "type": "string", + "validation": { "isRequired": false } + }, + { + "fieldName": "name", + "fieldVisibleName": "name", + "isCreatable": true, + "isEditable": true, + "type": "string", + "validation": { "isRequired": false } + }, + { + "fieldName": "postal_code_mandatory", + "fieldVisibleName": "postal_code_mandatory", + "isCreatable": true, + "isEditable": true, + "type": "string", + "validation": { "isRequired": false } + }, + { + "fieldName": "postal_code_regex", + "fieldVisibleName": "postal_code_regex", + "isCreatable": true, + "isEditable": true, + "type": "string", + "validation": { "isRequired": false } + } + ] + } + } +] +``` +
+ +2. Add file path to `DynamicEntityConfig`: + +**src/Pyz/Zed/DynamicEntity/DynamicEntityConfig.php** + +```php + -src/Pyz/Glue/Console/ConsoleDependencyProvider.php +**src/Pyz/Glue/Console/ConsoleDependencyProvider.php** ```php -
-src/Pyz/Glue/DocumentationGeneratorApi/DocumentationGeneratorApiDependencyProvider.php +**src/Pyz/Glue/DocumentationGeneratorApi/DocumentationGeneratorApiDependencyProvider.php** ```php -
-src/Pyz/Glue/DocumentationGeneratorOpenApi/DocumentationGeneratorOpenApiDependencyProvider.php +**src/Pyz/Glue/DocumentationGeneratorOpenApi/DocumentationGeneratorOpenApiDependencyProvider.php** ```php -
-src/Pyz/Glue/GlueBackendApiApplication/GlueBackendApiApplicationDependencyProvider.php +**src/Pyz/Glue/GlueBackendApiApplication/GlueBackendApiApplicationDependencyProvider.php** ```php + + +**src/Pyz/Zed/Installer/InstallerDependencyProvider.php** + +```php + + */ + public function getInstallerPlugins(): array + { + return [ + new DynamicEntityInstallerPlugin(), + ]; + } +} +``` + +{% info_block warningBox %} + +When `DynamicEntityInstallerPlugin` is enabled, run the following command: + +```bash +console setup:init-db +``` + +{% endinfo_block %} {% info_block warningBox "Verification" %} -If everything is set up correctly, you can operate with the data. Follow this link to discover how to perform it:[How to send request in Dynamic Data API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.html) +If everything is set up correctly, you can operate with the data. Follow this link to discover how to perform it:[How to send request in Data Exchange API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.html) {% endinfo_block %} diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/calculation-3.0.md b/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/calculation-3.0.md deleted file mode 100644 index 6c2a6ec1a06..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/calculation-3.0.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -title: Calculation 3.0 -description: The Calculation module is used to calculate the cart totals displayed in the cart/checkout or when the order is placed. The article describes its workflow. -last_updated: May 19, 2020 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/calculation-3-0 -originalArticleId: de8670c2-8f5e-463b-8527-3cc073ca78b8 -redirect_from: - - /v1/docs/calculation-3-0 - - /v1/docs/en/calculation-3-0 - - /docs/scos/user/features/201811.0/cart-feature-overview/calculation/calculation-3.0.html - - /docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/calculation-3-0.html -related: - - title: Cart Functionality - link: docs/scos/dev/feature-walkthroughs/page.version/cart-feature-walkthrough/cart-functionality.html - - title: Calculation Data Structure - link: docs/scos/dev/feature-walkthroughs/page.version/cart-feature-walkthrough/calculation-data-structure.html ---- - -Spryker uses the Calculation module to calculate the cart totals that are displayed in the cart/checkout or when the order is placed. - -The calculation module extensively uses plugins to inject calculation algorithms. - -## How Calculation Works - -{% info_block infoBox "Quote Transfer" %} -The quote transfer object is used to store data and plugins that calculate the amounts. -{% endinfo_block %} - -There is already a list of plugins which populate quote transfer with corresponding data. Calculations are executed every time the content of the cart is updated. - -{% info_block infoBox %} -For more details, check [Cart Data Flow](/docs/scos/user/features/{{page.version}}/cart-feature-overview/cart-functionality-and-calculations/cart-functionality.html#cart-data-flow -{% endinfo_block %} in the *Cart Functionality* section.) -If manual recalculation of cart is required, then `CalculationFacade::recalculate` can be called from Zed or `CalculationClient::recalculate` from Yves with prepared [Calculation Data Structure](/docs/scos/user/features/{{page.version}}/cart-feature-overview/calculation/calculation-data-structure.html). When the recalculation operation is called, the calculator runs the calculator plugin stack and each plugin modifies the `QuoteTransfer` (calculates discounts, adds sum gross prices, calculates taxes, etc.). Most plugins require the `unitGrossPrice` and the `quantity` to be provided. - -{% info_block infoBox "Calculated amounts" %} -Each amount is being calculated and stored in cents. -{% endinfo_block %} - -## Calculator Plugins - -Calculator plugins are registered in the `CalculationDependencyProvider::getCalculatorStack()` method. This method can be extended on the project level and the plugin stack can be updated with your own plugins. Each calculator must implement `CalculatorPluginInterface`. - -For more information see: - -```php - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-feature-walkthrough.md deleted file mode 100644 index c7bef0d295d..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-feature-walkthrough.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Cart feature walkthrough -last_updated: Aug 12, 2021 -description: The Cart feature provides functionality of the shopping cart and cart total calculations -template: concept-topic-template ---- - -The _Cart_ feature provides functionality of the shopping cart and cart total calculations. - - -To learn more about the feature and to find out how end users use it, see [Cart](/docs/scos/user/features/{{page.version}}/cart-feature-overview/cart-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | TUTORIALS AND HOWTOS | REFERENCES | -|---------|---------|---------|---------| -| [Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cart-feature-integration.html) | [Managing guest carts](/docs/marketplace/dev/glue-api-guides/{{page.version}}/guest-carts/managing-guest-carts.html) | [HowTo: Define if a cart should be deleted after placing an order](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/tutorials-and-howtos/howto-define-if-a-cart-should-be-deleted-after-placing-an-order.html) | [Calculation 3.0](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/calculation-3-0.html) | -| [Glue API: Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html) | [Managing carts of registered users](/docs/marketplace/dev/glue-api-guides/{{page.version}}/carts-of-registered-users/managing-carts-of-registered-users.html) | | [Calculation data structure](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/calculation-data-structure.html) | -| [Product Bundles + Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-bundles-cart-feature-integration.html) | [Retrieving customer carts](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/retrieving-customer-carts.html) | | [Calculator plugins](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/calculator-plugins.html) | -| [Inventory Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/inventory-management-feature-integration.html) | | | [Cart module: Reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/cart-module-reference-information.html) | -| [Product feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-feature-integration.html) | | | | -| [Product Measurement feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-measurement-unit-feature-integration.html) | | | | -| [Product Packaging Unit feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/packaging-units-feature-integration.html) | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality-and-calculations.md b/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality-and-calculations.md deleted file mode 100644 index 4342b4e94cb..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality-and-calculations.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Cart Functionality and Calculations -description: The extensive Cart allows your customers to add products to their Cart by simply selecting the desired quantity. -last_updated: Jan 13, 2020 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/cart-functionality-calculations -originalArticleId: 85ee84a7-555e-4748-a5f2-18740aa6948c -redirect_from: - - /v1/docs/cart-functionality-calculations - - /v1/docs/en/cart-functionality-calculations -related: - - title: Cart Functionality - link: docs/scos/dev/feature-walkthroughs/page.version/cart-feature-walkthrough/cart-functionality.html - - title: Calculation Data Structure - link: docs/scos/dev/feature-walkthroughs/page.version/cart-feature-walkthrough/calculation-data-structure.html - - title: Calculator Plugins - link: docs/scos/dev/feature-walkthroughs/page.version/cart-feature-walkthrough/calculator-plugins.html ---- - -The extensive Cart allows your customers to add products to their Cart by simply selecting the desired quantity. Inside the Cart, customers can change the quantity of items, switch between different Variants of the product, add personal notes, apply vouchers and remove items. The total price is immediately adjusted whenever changes are made to the Cart. Additionally, logged-in customers can see and edit their Cart from any device. As an additional option, the Persistent Cart functionality lets logged-in customers store their Cart throughout multiple sessions. The Cart features also ensures that your business rules, such as discounts, taxes or shipping, will be applied, based on the customer's final choice of items. With the Mini-Cart symbol in the header of the page your customers can easily check the contents of their Cart via a flyout box. - -## If you are: - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality.md b/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality.md deleted file mode 100644 index 072daf91e5a..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-functionality.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Cart Functionality -description: Our Cart consists of a few components in Yves and Zed. Cart operations are invoked in CartClient, which contains methods for all common operations. -last_updated: Oct 17, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/cart-functionality -originalArticleId: a5f44efc-1d57-46f9-86e2-fe479b619aad -redirect_from: - - /v1/docs/cart-functionality - - /v1/docs/en/cart-functionality - - /docs/scos/dev/feature-walkthroughs/201811.0/cart-feature-walkthrough/cart-module-reference-information.html ---- - -Our Cart consists of a few components in Yves and Zed. The Yves components create the cart requests and persist the cart into the session. The Zed components persist the data into the database and expand the items with data obtained from plugins. - -Cart operations are invoked in `CartClient`, which contains methods for all common operations (add, update, remove). - -Each cart operation uses `CartChangeTransfer` objects. Each transfer holds the current quote transfer and the items that are being modified. Current `QuoteTransfer` is read from current session and is provided by the `QuoteSession` session adapter. - -When an operation is invoked, `CartClient` makes an HTTP request to Zed Cart module. The cart module gateway controller forwards the request to the `CartFacade` where a corresponding operation is handled and modified; `QuoteTransfer` is returned to Yves and persisted into the session. - -## Cart Data Flow - -![Cart Data Flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Cart+Functionality/cart_data_flow.png) - -## Cart Operations -The Cart module in Zed has a cart operation class that handles cart operation requests. Each operation does the following: - -* **Expand cart items** - augment cart items with additional data (prices, product details, ProductOptions, …) -* **Persisting** - storage provider stores items into the database, merges items if same item was added, by default it uses a NonPersistentProvider. -* **Item grouping** - cart uses the item grouper to group items in the cart using a specially crafted group key, which is provided by cart Expander (e.g.: a list containing the same item coming from different merchants should be split into separate groups and shipped separately). -* **Log operation message** - Cart writes to messenger messages which should be returned to Yves (for example: validation messages, success, failure messages). -* **Cart recalculation** - happens for each operation in cart recalculation. Cart amounts are reset and recalculated with new added items. - -## Cart Persistence Providers -The Cart has different persistence providers in Zed. By default, it only modifies current QuoteTransfer and it doesn’t persists the data. An example for use case for this is building a cart where the cart items are persisted between log-ins. In this case the `StorageProviderInterface` needs to be implemented and the operation dependency must be changed. - -## Cart Expanders -Zed Cart modules can have expander plugins registered. Expander plugins expand the cart with additional data such as price information, product information and add product options. - -Currently we ship with a couple of plugins: - -| Cart Expander | Description | -| --- | --- | -| ProductCartPlugin | Adds product information to ItemTransfer (idConcreteProduct, idAbstractProduct, abstractSku, name and taxRate). | -| CartItemPricePlugin | Adds unitGrossPrice into itemTransfer. | -| CartItemProductOptionPlugin | Adds productOption collection into ItemTransfer. | -| SkuGroupKeyPlugin | Appends SKU to the group key so item's int are grouped by SKU. | -| CartItemGroupKeyOptionPlugin | Creates product option group key from option ids, so items with different option combinations would be placed separated. | - -## Cart Pre-Checks -The Zed Cart module has a list of Pre-Checks. These are validators which run when adding a new item to the cart. We have a list of default Pre-Checks and of course you might want to add your own. To do so just add a new plugin to `Pyz\Zed\Cart\CartDependencyProvider::getCartPreCheckPlugins()`. - -Currently we ship a couple of default Pre-Checks: - -| Cart Pre-Check | Description | -| --- | --- | -| ProductExistsCartPreCheckPlugin | Checks that passed products exist in the DB. This plugin is provided by ProductCartConnector module. | -| CartBundleAvailabilityPreCheckPlugin | Check availability of new cart items (products and product bundles). Provided by ProductBundle module. | -| CheckAvailabilityPlugin | Check availability of new cart items (only products). Provided by AvailabilityCartConnector module. | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/catalog-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/catalog-feature-walkthrough.md deleted file mode 100644 index 19066dc70d2..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/catalog-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Catalog feature walkthrough -last_updated: Aug 12, 2021 -description: The Catalog feature allows building and organizing products to meet your and your customer's demands, primarily to make sure everyone can quickly find what they are looking for -template: concept-topic-template ---- - -The _Catalog_ feature allows building and organizing products to meet your and your customer's demands, primarily to make sure everyone can quickly find what they are looking for. - -To learn more about the feature and to find out how end users use it, see [Catalog feature overview](/docs/scos/user/features/{{page.version}}/catalog-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | -|---------|---------| -| [Glue API: Catalog feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-catalog-feature-integration.html) | [Searching the product catalog](/docs/scos/dev/glue-api-guides/{{page.version}}/searching-the-product-catalog.html) | -| | [Retrieving autocomplete and search suggestions](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-autocomplete-and-search-suggestions.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/category-management-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/category-management-feature-walkthrough.md deleted file mode 100644 index f3d7479fb5b..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/category-management-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Category Management feature walkthrough -last_updated: Aug 12, 2021 -description: The Category Management feature allows you to manage your product catalog with customized categories, category pages, and filters. -template: concept-topic-template ---- - -The _Category Management_ feature allows managing your product catalog with customized categories, category pages, and filters. All products can be categorized into logical clusters so that customers can filter them on the Storefront. - -To learn more about the feature and to find out how end users use it, see [Category Management feature overview](/docs/scos/user/features/{{page.version}}/category-management-feature-overview.html) for business users. - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| GLUE API GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | -|---------|---------|---------|---------|---------| -| [Category Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/category-management-feature-integration.html) | CategoryGui migration| [Retrieving category trees](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-trees.html) | [File details: category.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/categories/file-details-category.csv.html) | [HowTo: Manage a big number of categories](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-manage-a-big-number-of-categories.html) | -| [Product + Category feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-category-feature-integration.html) | Category migration | [Retrieving category nodes](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-categories/retrieving-category-nodes.html) | [File details: category_template.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/categories/file-details-category-template.csv.html) | | -| [CMS + Category Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cms-category-management-feature-integration.html) |CategoryPageSearch migration| | [File details: category_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/categories/file-details-category-store.csv.html) | | -| [Catalog + Category Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/catalog-category-management-feature-integration.html) | CategoryStorage migration | | | | -| [Glue API: Category Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-category-management-feature-integration.html) | ProductCategoryStorag migration | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-extension-points-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-extension-points-reference-information.md deleted file mode 100644 index e08e99557cf..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-extension-points-reference-information.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: CMS Extension Points -description: The CMS module provides an extension point for post activation and deactivation of CMS pages. -last_updated: Jan 24, 2020 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/cms-extension-points -originalArticleId: 9e994f24-1266-4344-9373-13502dfa1a04 -redirect_from: - - /v1/docs/cms-extension-points - - /v1/docs/en/cms-extension-points -related: - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: Migration Guide - CMS - link: docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cms-module.html - - title: Migration Guide - CMS Collector - link: docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmscollector-module.html ---- - -The CMS module provides an extension point for post activation and deactivation of CMS pages. The plugin interface set for this extension point is as follows: - -```php -getFacade()->updateCmsPageNavigationNodesIsActive($cmsPageTransfer); - } -} -``` - -And then in the `CmsDependencyProvider`, in the function `getCmsPagePostActivatorPlugins`, you can register this plugin (or any plugin implementing the above interface) for it to execute post activation or deactivation of CMS pages. - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-feature-walkthrough.md deleted file mode 100644 index 23e87a5ec54..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/cms-feature-walkthrough/cms-feature-walkthrough.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: CMS feature walkthrough -last_updated: Aug 13, 2021 -description: The CMS feature adds a content management system that allows creating and managing the content of custom pages that are not part of the product catalog -template: concept-topic-template ---- - -The _CMS_ feature adds a content management system that allows creating and managing the content of custom pages that are not part of the product catalog. - - -To learn more about the feature and to find out how end users use it, see [CMS](/docs/scos/user/features/{{page.version}}/cms-feature-overview/cms-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| GLUE API GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | TECHNICAL ENHANCEMENTS | REFERENCES | -|---------|---------|---------|---------|---------|---------|---------| -| [CMS feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cms-feature-integration.html) | CMS migration guide | [Retrieving CMS pages](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-cms-pages.html) | [File details: cms_page.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-page.csv.html) | [HowTo: Create CMS templates](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/cms/howto-create-cms-templates.html) | [Enabling the category CMS blocks](/docs/scos/dev/technical-enhancement-integration-guides/integrating-category-cms-blocks.html) | [CMS extension points: Reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cms-feature-walkthrough/cms-extension-points-reference-information.html) | -| [CMS + product lists + catalog feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cms-product-lists-catalog-feature-integration.html) | CmsStorage migration guide | [Retrieving autocomplete and search suggestions](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-autocomplete-and-search-suggestions.html) | [File details: cms_block.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-block.csv.html) | [HowTo: Define the maximum size of content fields](/docs/scos/dev/tutorials-and-howtos/howtos/howto-define-the-maximum-size-of-content-fields.html) | [Enabling the product CMS block](/docs/scos/dev/technical-enhancement-integration-guides/integrating-product-cms-blocks.html) | | -| [Content Items feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/content-items-feature-integration.html) | CmsGui migration guide | [Retrieving abstract product list content items](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-content-items/retrieving-abstract-product-list-content-items.html) | [File details: cms_block_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-block-store.csv.html) | [HowTo: Create a visibility condition for CMS blocks](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/cms/howto-create-a-visibility-condition-for-cms-blocks.html) | [Enabling CMS block widget](/docs/scos/dev/technical-enhancement-integration-guides/integrating-cms-block-widgets.html) | | -| [CMS + Catalog feature integration](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cms-feature-walkthrough/cms-feature-walkthrough.html) | CmsPageSearch migration guide | [Retrieving banner content items](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/manage-using-glue-api/retrieve-banner-content-items.html) | [File details: cms_template.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-template.csv.html) | [HowTo: Create a custom content item](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/cms/howto-create-a-custom-content-item.html) | | | -| [Content Items feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/content-items-feature-integration.html) | CmsCollector migration guide | | [File details: cms_slot.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-slot.csv.html) | [Learn about the CoreMedia technology partner integration](/docs/scos/user/technology-partners/{{page.version}}/content-management/coremedia.html) | | | -| [Glue API: Content items API feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-content-items-feature-integration.html) | CmsBlock migration guide | | [File details: cms_slot_template.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-slot-template.csv.html) | | | | -| [Glue API: CMS feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cms-feature-integration.html) | CMS Block Category Connector migration guide| | [File details: cms_slot_block.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-cms-slot-block.csv.html) | | | | -| | CMS Block Category Connector Migration Console migration guide| | [File details: content_navigation.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-content-navigation.csv.html) | | | | -| | CMS Block Collector migration guide| | [File details: content_banner.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-content-banner.csv.html) | | | | -| | CmsBlockGui migration guide | | [File details: content_product_set.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-content-product-set.csv.html) | | | | -| | CMSBlockStorage migration guide | | [File details: content_product_abstract_list.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/content-management/file-details-content-product-abstract-list.csv.html) | | | | -| | CmsBlockWidget migration guide | | | | | | -| | ContentBannerGui migration guide | | | | | | -| | ContentBanner migration guide | | | | | | -| | ContentStorage migration guide | | | | | | -| | Content migration guide | | | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-feature-walkthrough.md deleted file mode 100644 index aa57fd1229a..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-feature-walkthrough.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Company Account feature walkthrough -last_updated: Sep 2, 2021 -description: The Company Account feature allows controlling user access to the system within an organization by configuring different permissions and roles for the company's entities (units) and users. -template: concept-topic-template ---- - -The _Company Account_ feature allows controlling user access to the system within an organization by configuring different permissions and roles for the company's entities (units) and users. - - -To learn more about the feature and to find out how end users use it, see [Company Account](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-account-feature-overview.html) for business users. - - -## Entity diagram - -The following schema illustrates relations between a company, business unit, company unit address and customer. - -
- -![schema_1.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+Account/Company+Account:+Module+Relations/schema_1.png) - -
- -The following schema illustrates relations between modules in of the business on behalf functionality: - -
- -![business-on-behalf-module-relations.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+on+Behalf/Business+on+Behalf+Feature+Overview/business-on-behalf-module-relations.png) - -
- -The `BusinessOnBehalfGui` module provides the `BusinessOnBehalfGuiAttachToCompanyButtonCustomerTableActionExpanderPlugin` plugin for the `Customer` module, and `CompanyUserTableAttachToBusinessUnitActionLinksExpanderPlugin` as well as `ReplaceDeleteButtonCompanyUserTableActionLinksExpanderPlugin` plugins for the `CompanyUserG` module. Also, `BusinessOnBehalfGui` takes user information from the `CompanyUser` module. - -The following schema represents module relations of the Customer Login by Token feature: - -
- -![Module relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Workflow+&+Process+Management/Customer+Login+by+Token/Customer+Login+by+Token+Feature+Overview/customer-login-by-token-module-relations.png) - -
- -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| GLUE API GUIDES | TUTORIALS AND HOWTOS | REFERENCES | -|---------|---------|---------|---------|---------| -| [Company Account feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/company-account-feature-integration.html)| CompanyUser migration guide | [Retrieving companies](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/retrieving-companies.html) |[ HowTo - Generate a token for login](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-generate-a-token-for-login.html) | [Customer Login by Token reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/company-account-feature-walkthrough/customer-login-by-token-reference-information.html) | -| [Glue API: Company Account feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-company-account-feature-integration.html) | BusinessOnBehalfDataImport migration guide | [Retrieving business units](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/retrieving-business-units.html) | | | -| | | [Retrieving business unit addresses](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/retrieving-business-unit-addresses.html) | | | -| | | [Retrieving company users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/retrieving-company-users.html) | | | -| | | [Retrieving company roles](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/retrieving-company-roles.html) | | | -| | | [Authenticating as a company user](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/authenticating-as-a-company-user.html) | | | -| | | [Managing company user authentication tokens](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-b2b-account/managing-company-user-authentication-tokens.html) | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-module-relations.md b/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-module-relations.md deleted file mode 100644 index 5d18eba0613..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/company-account-module-relations.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Company account- module relations -description: Explore the module relations of the Company Account features -last_updated: May 28, 2021 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v6/docs/company-account-module-relations -originalArticleId: 215d5a46-f558-40cf-90b6-7820804cac85 -redirect_from: - - /v6/docs/company-account-module-relations - - /v6/docs/en/company-account-module-relations ---- - -The schema below illustrates relations between company, business unit, company unit address and company user (customer). - -![schema_1.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+Account/Company+Account:+Module+Relations/schema_1.png) - - -The schema below illustrates relations between modules in of the business on behalf functionality: - -![business-on-behalf-module-relations.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+on+Behalf/Business+on+Behalf+Feature+Overview/business-on-behalf-module-relations.png) - -`BusinessOnBehalfGui` module provides plugin `BusinessOnBehalfGuiAttachToCompanyButtonCustomerTableActionExpanderPlugin` for Customer module, and `CompanyUserTableAttachToBusinessUnitActionLinksExpanderPlugin` as well as `ReplaceDeleteButtonCompanyUserTableActionLinksExpanderPlugin` plugins for `CompanyUserG` module. Also, `BusinessOnBehalfGui` takes user information from `CompanyUser` module. diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/customer-login-by-token-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/customer-login-by-token-reference-information.md deleted file mode 100644 index e3dd62131d4..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/company-account-feature-walkthrough/customer-login-by-token-reference-information.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Customer Login by Token reference information -description: This document describes the token structure. -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/2021080/docs/customer-login-by-token-overview ---- - -A *token* is a unique identifier that contains all the information needed for authentication to fetch a specific resource without using a username and password. The tokens are JSON strings that are encoded in base64url format. - -The lifetime of the token is 8 hours by default, but this value can be changed on the project level. - -## Token structure -Every token consists of the three sections separated by periods. - -![Token struc](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Workflow+&+Process+Management/Customer+Login+by+Token/Customer+Login+by+Token+Feature+Overview/token-structure.png) - -* **Header** contains the information about the token type (JWT) and the encryption algorithm (RS256). For example: - -```json -{ - "typ": "JWT", - "alg": "RS256", - "jti": "9ced66ac5cefe17681576bf95b800078e3020142faaa524da871ffb2a63508952045e10453136bde" -} -``` -Once the header is encoded, we get the part of the token: - -``` -eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjljZWQ2NmFjNWNlZmUxNzY4MTU3NmJmOTViODAwMDc4ZTMwMjAxNDJmYWFhNTI0ZGE4NzFmZmIyYTYzNTA4OTUyMDQ1ZTEwNDUzMTM2YmRlIn0 -``` - -* **Payload** is the part where multiple claims (statements) about the user identity and additional data, for example, permissions are stored. Here we put the information that we need to transmit. _id_customer_ and _idcompanyuser_ are included by default, however, you can extend the payload with any data according to your project requirements. - -Example payload: - -```json -{ - "aud": "frontend", - "jti": "9ced66ac5cefe17681576bf95b800078e3020142faaa524da871ffb2a63508952045e10453136bde", - "iat": 1557926620, - "nbf": 1557926620, - "exp": 1557955420, - "sub": " {/"customer_reference/":null,/"id_customer/":6,/"id_company_user/":/"1/",/"permissions/":null}", - "scopes": [] -} -``` -The example above contains six [registered claims](https://www.iana.org/assignments/jwt/jwt.xhtml) that, when encoded, correspond to: - -``` -eyJhdWQiOiJmcm9udGVuZCIsImp0aSI6IjljZWQ2NmFjNWNlZmUxNzY4MTU3NmJmOTViODAwMDc4ZTMwMjAxNDJmYWFhNTI0ZGE4NzFmZmIyYTYzNTA4OTUyMDQ1ZTEwNDUzMTM2YmRlIiwiaWF0IjoxNTU3OTI2NjIwLCJuYmYiOjE1NTc5MjY2MjAsImV4cCI6MTU1Nzk1NTQyMCwic3ViIjoie1wiY3VzdG9tZXJfcmVmZXJlbmNlXCI6bnVsbCxcImlkX2N1c3RvbWVyXCI6NixcImlkX2NvbXBhbnlfdXNlclwiOlwiMVwiLFwicGVybWlzc2lvbnNcIjpudWxsfSIsInNjb3BlcyI6W119 -``` - -* **Signature** contains the hash of the header, the payload and the secret needed - -The example signature is the following: - -```json -RSASHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - secret -) -``` - -The final part of the encoded token will look like this: -``` -v6kvCtNMM-_x-sRWugigT2j7qXVXQ9Ds5a-65sD_d4Oaun0toGnM_A-458mCyV1FCdyOHU572hdz7w3SFcIHzFw4zGGr_cqMdBmCF6VJS21lcOK401j2Li4NJB-8TmOHMk1XmjrJ92EyBScvycTg8TCkY3w4jcIGN7TPGAwzvEWaJhIwqYGjEUcTWtsiIemeWijTWVYd4qE6gnXdzMeyekFLon9syLnXdxeAQ8qNM7BML5QfvazvuMBvFQWfatDcRd2SFfIkNmMrxEQ6daEaPEfyqpdXpHfhpzvuQpA0hQQ9BfYBrwvTskpH_CWTht7IsOqlY4KYRNIg-t3tcZYt6Q -``` -Combining the three parts, an exemplary URL with the full token will look like: - -``` -http://mysprykershop.com/access-token/eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjljZWQ2NmFjNWNlZmUxNzY4MTU3NmJmOTViODAwMDc4ZTMwMjAxNDJmYWFhNTI0ZGE4NzFmZmIyYTYzNTA4OTUyMDQ1ZTEwNDUzMTM2YmRlIn0.eyJhdWQiOiJmcm9udGVuZCIsImp0aSI6IjljZWQ2NmFjNWNlZmUxNzY4MTU3NmJmOTViODAwMDc4ZTMwMjAxNDJmYWFhNTI0ZGE4NzFmZmIyYTYzNTA4OTUyMDQ1ZTEwNDUzMTM2YmRlIiwiaWF0IjoxNTU3OTI2NjIwLCJuYmYiOjE1NTc5MjY2MjAsImV4cCI6MTU1Nzk1NTQyMCwic3ViIjoie1wiY3VzdG9tZXJfcmVmZXJlbmNlXCI6bnVsbCxcImlkX2N1c3RvbWVyXCI6NixcImlkX2NvbXBhbnlfdXNlclwiOlwiMVwiLFwicGVybWlzc2lvbnNcIjpudWxsfSIsInNjb3BlcyI6W119.v6kvCtNMM-_x-sRWugigT2j7qXVXQ9Ds5a-65sD_d4Oaun0toGnM_A-458mCyV1FCdyOHU572hdz7w3SFcIHzFw4zGGr_cqMdBmCF6VJS21lcOK401j2Li4NJB-8TmOHMk1XmjrJ92EyBScvycTg8TCkY3w4jcIGN7TPGAwzvEWaJhIwqYGjEUcTWtsiIemeWijTWVYd4qE6gnXdzMeyekFLon9syLnXdxeAQ8qNM7BML5QfvazvuMBvFQWfatDcRd2SFfIkNmMrxEQ6daEaPEfyqpdXpHfhpzvuQpA0hQQ9BfYBrwvTskpH_CWTht7IsOqlY4KYRNIg-t3tcZYt6Q - -``` - -In Spryker Commerce OS, token generation is performed using a facade method, that is why no GUI is present. To generate a token, see [HowTo: Generate a token for login](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-generate-a-token-for-login.html). - -Token-based authentication works closely with the [Punch Out](/docs/scos/user/technology-partners/{{page.version}}/order-management-erpoms/punchout-catalogs/punchout-catalogs.html) feature. It allows B2B buyers to log in from their ERP system to a Spryker company user account using a token without entering the username and password and buy the products from Spryker e-commerce shop. - -To make the feature more flexible, we have implemented the functionality that allows you to disable switching between the Business-on Behalf accounts. E.g., if the user logs in to the pre-defined company account that has Business-on-Behalf feature integrated, the shop owner can disable the ability to switch between the accounts. In case the Business-on-Behalf is disabled, the company user will log in to the default account and will not be able to switch between the company users within their company account. diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/customer-account-management-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/customer-account-management-feature-walkthrough.md deleted file mode 100644 index 24c89bdf379..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/customer-account-management-feature-walkthrough.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Customer Account Management feature walkthrough -last_updated: Aug 13, 2021 -description: The Customer Account Management feature enables a wide range of management options for customer accounts and additional functionalities -template: concept-topic-template -redirect_from: - - /docs/scos/dev/feature-walkthroughs/201907.0/customer-account-management-feature-walkthrough/customer-module-overview-reference-information.html ---- - -The _Customer Account Management_ feature enables a wide range of management options for customer accounts and additional functionalities. - - -To learn more about the feature and to find out how end users use it, see [Customer Account Management](/docs/scos/user/features/{{page.version}}/customer-account-management-feature-overview/customer-account-management-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | GLUE API GUIDES | DATA IMPORT | REFERENCES | -|---|---|---|---|---| -| [Agent Assist feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/agent-assist-feature-integration.html) | CompanyUser migration guide | [Authenticating as a customer](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/authenticating-as-a-customer.html) | [File details: customer.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-customer.csv.html) | [Reference information: Customer module overview](/docs/scos/dev/feature-walkthroughs/{{page.version}}/customer-account-management-feature-walkthrough/reference-information-customer-module-overview.html)| -| [Company Account feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/company-account-feature-integration.html) | | [Confirming customer registration](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/confirming-customer-registration.html) | || -| [Customer Account Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/customer-account-management-feature-integration.html) | | [Managing customer addresses](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/managing-customer-addresses.html) | | | -| [Glue API: Customer Account Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-customer-account-management-feature-integration.html) | | [Managing customer authentication tokens](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/managing-customer-authentication-tokens.html) | | | -| [Spryker Сore feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | | [Managing customer authentication tokens via OAuth 2.0](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/managing-customer-authentication-tokens-via-oauth-2.0.html) | | | -| [Glue API: Spryker Сore feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-spryker-core-feature-integration.html) | | [Managing customer passwords](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/managing-customer-passwords.html) | | | -| | | [Managing customers](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-customers/managing-customers.html) | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/reference-information-customer-module-overview.md b/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/reference-information-customer-module-overview.md deleted file mode 100644 index 8077f5bc174..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/reference-information-customer-module-overview.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Customer Module Overview -description: This article describes how new customers can be created and managed and how to enable specific features related to customers. -last_updated: May 19, 2020 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/customer-module-overview -originalArticleId: ed1e9f56-eab5-490c-9ace-3969c82c9839 -redirect_from: - - /v1/docs/customer-module-overview - - /v1/docs/en/customer-module-overview -related: - - title: Customers - link: docs/scos/user/back-office-user-guides/page.version/customer/customers.html - - title: Customer Groups - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-groups-overview.html ---- - -The Customer entity wraps data around registered customers. Customer data is managed from the Administration Interface by the shop administration and from the shop website itself by customers. This article describes how new customers can be created and managed and how to enable specific features related to customers. - -## Customer Registration -Customer registration requires two steps: - -1. Creating a new customer: This step can be done from both the back-end and front-end applications. Customers are created in the database if the entered details are valid. A registration key is generated for each customer and used as a token for customer registration confirmation. The key is embedded in the confirmation link sent by email. -2. Confirming customer registration: Only customer can confirm registration through the front-end application. The customer accesses the link received in the email sent after the customer creation. When opening the link, an update is triggered that sets the customer as registered. - -After these two steps are performed, the customer can use the account. - -![customer.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Customer+Relationship+Management/Customer+Groups/Customer+Module+Overview/customer.png) - -## Customer Address - -One customer can have many customer addresses stored in the database. - -There are two types of customer addresses: - -* Billing Address: the address to which the invoice or bill is registered -* Shipping Address: the address to where the order is shipped - -Customers are assigned a default billing and a default shipping address. Customers can update their addresses through their account (from Yves) or have them updated by the Back Office user (from the Back Office). - -## Password Restore - -Similar to the customer registration flow, password restore makes use of a token that acts as a temporary password for the customer. An email is sent to the user to reset the password. The mail contains a link where password restore token is embedded. This token is generated specifically for this request. After the customer accesses the URL and enters necessary confirmation data, the customer password is updated. - -Out of the box Spryker provides the plugin `CustomerRestorePasswordMailTypePlugin` (Customer module) to handle a restore password email template. To enable it, register this plugin in your `MailDependencyProvider` (eg. `Pyz\Zed\Mail\MailDependencyProvider`). - -{% info_block infoBox "Token link generation" %} -By default Customer module will lead to `'‹YVES HOST›/password/restore?token='`. If it's different in your project, you should configure generation of restore links in `Spryker\Zed\Customer\CustomerConfig::getCustomerPasswordRestoreTokenUrl( -{% endinfo_block %}`) - -## Delete Customer -Customers can remove themselves by clinking the Delete Account button in the Yves Profile page. In addition, this functionality is also available in the Back Office (Customer > View > Delete). - -Complete removal from the customer table is strictly prohibited as it could affect the database consistency of e-commerce projects or even be illegal in terms of tax reporting and auditing. In Spryker we don't remove identifiers from a customer table, but anonymize private information. Information related to orders and bills will stay untouched. - -{% info_block errorBox %} -We use irreversible algorithms to make it impossible to repair deleted data. -{% endinfo_block %} - -After the deletion, customers can use an old email for registration, as the new registration does not have any connections to an old one (anonymized). - -To prevent missing any customer related information, do the following: - -1. Process removal for related customer objects. Here you could take care of information stored in dependent bundles or custom relations. To do so, implement the `CustomerAnonymizerPluginInterface`. As an example, take a look at the Newsletter module plugin for unsubscribing a customer from newsletters before removal `Spryker\Zed\Newsletter\Business\Anonymizer\SubscriptionAnonymizer`. -2. Anonymize customer address information. -3. Anonymize customer private information. Information directly related to customer fields (first name, last name, date of birth etc.). - -{% info_block errorBox "Information privacy law " %} -When creating a custom implementation, check and follow the applicable legislation in your country. -{% endinfo_block %} - -## Customer Experience - -Spryker consistently delivers the scalable operating system without coupling it to a project infrastructure. As a consequence, the project should take care of impact of the **Customer Delete** functionality on customer experience. Read more about session sensitive actions in [Migration Guide - Customer](/docs/scos/dev/module-migration-guides/migration-guide-customer.html). - -### Case insensitive queries for email - -From version 7.0.0 on case insensitive queries using filterByEmail conditions are enabled by default. If your version of the Customer module is lower you are still able to use this feature. - -To enable case insensitive fields in Propel for filtering queries update PropelOrm module to 1.5.0 version. - -When feature is enabled, add an attribute `caseInsensitive="true"` into customer schema file on project level (usually `src/Pyz/Zed/Customer/Persistence/Propel/Schema/spy_customer.schema.xml`). - -Finally run `vendor/bin/console propel:diff` and `vendor/bin/console propel:model:build` to update Propel models. - -### Orders Display on Customer View Page - -From Customer module 7.6.0 (along with Sales module version 8.7.0) we support display of customer orders in the Customers section of the Administration Interface. The Customers View page now has Orders table listing all the orders of a respective customer. - -To enable the feature to see extra blocks on the Customer View page in the Administration Interface, go to the `CustomerConfig` class in the `Customer` module and add `getCustomerDetailExternalBlocksUrls` function . This function should return an array where the key is the block name and the value is the URL where this block exists. As for the orders, they are in `/sales/customer/customer-orders` which in our routing architecture points to Sales `module` -> `CustomerController` -> `CustomerOrdersAction`. If this behavior needs to be extended further, all that’s needed is more key-value pairs for more controller actions that provide the data. - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/gift-cards-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/gift-cards-feature-walkthrough.md deleted file mode 100644 index 2a595fe1915..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/gift-cards-feature-walkthrough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Gift Cards feature walkthrough -last_updated: Sep 28, 2021 -description: The Gift Cards feature enables you to create a virtual product (a gift card) with a chosen value amount -template: concept-topic-template ---- - -The _Gift Cards_ feature enables you to create a virtual product (a gift card) with a chosen value amount. The purchase of a gift card generates an individual code that is used as a payment method during checkout. - - -To learn more about the feature and to find out how end users use it, see [Gift Cards feature overview](/docs/scos/user/features/{{page.version}}/gift-cards-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | GLUE API GUIDES | DATA IMPORT | -|---|---|---|---| -| [Gift Cards feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/gift-cards-feature-integration.html) | Upgrade the CheckoutPage module | [Managing gift cards of guest users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-gift-cards-of-guest-users.html) | [File details: gift_card_abstract_configuration.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/gift-cards/file-details-gift-card-abstract-configuration.csv.html) | -| | | [Managing gift cards of registered users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/carts-of-registered-users/managing-gift-cards-of-registered-users.html) | [File details: gift_card_concrete_configuration.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/gift-cards/file-details-gift-card-concrete-configuration.csv.html) | \ No newline at end of file diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/inventory-management-feature-walkthrough/inventory-management-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/inventory-management-feature-walkthrough/inventory-management-feature-walkthrough.md deleted file mode 100644 index 6c9f50f6e80..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/inventory-management-feature-walkthrough/inventory-management-feature-walkthrough.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Inventory Management feature walkthrough -last_updated: Aug 13, 2021 -description: The Inventory Management feature adds stock and availability management as well as multiple warehouse stock management for products -template: concept-topic-template -redirect_from: - - /docs/scos/dev/feature-walkthroughs/201811.0/nventory-management-feature-walkthrough/inventory-management-feature-walkthrough.html ---- - -The _Inventory Management_ feature adds stock and availability management as well as multiple warehouse stock management for products. - -## Availability - -From this section, you will get to know how product availability is checked and calculated, how products are reserved, how availability can be imported to the database as well as how availability per store works. - -### Availability Check -The process of checking product's availability implies several operations described in the list below. - -* Product details page won’t show the **Add to cart** button when a concrete product is out of stock. Instead, informational message is displayed. -* Pre-check plugin in cart. `\Spryker\Zed\AvailabilityCartConnector\Communication\Plugin\CheckAvailabilityPlugin`checks if all items in cart are available. It’s executed after the "Add to cart" operation. If an item is not available, an error message is sent to Yves. -* Checkout pre-condition when an order is placed in the last step. `Spryker\Zed\Availability\Communication\Plugin\ProductsAvailableCheckoutPreConditionPlugin` checks all items in cart. If any of them is not available anymore, order placing is aborted and error message is displayed. - -### "Reserved" Flag -When an order is placed, payment state machine is executed and an item is moved through states. Some states have a “reserved” flag which means that the state influences the item availability. - -When items are moved to state with the "reserved" flag, `ReservationHandlerPluginInterface::handle()` is triggered. This call means that the product availability has to be updated. State machine is also tracking products in the "reserved" state, and the database table `spy_oms_product_reservation` is used for this. - -Below you can see dummy payment state machine, which is a sample implementation with the "reserved" flags: -![Reserved flags](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/Stock+and+Availability+Management/dummy_payment.jpg) - -### Availability Storage - -AvailabilityStorage publishes all availability information for abstract and concrete products. Items are grouped by abstract product. This process is handled by [Publish and Synchronize](/docs/scos/dev/back-end-development/data-manipulation/data-publishing/publish-and-synchronization.html). - -Events are generated in these two cases: - -| Case | Details | -| --- | --- | -| Case 1 | If availability amount was equal to 0 and now it’s more than 0, the event is triggered. | -| Case 2 | If availability amount was more than 0 and now it’s equal to 0, the event is triggered. | - -The default behavior is having **available** or not available **status** set for product while the amount of product does not matter. Even though events are triggered when amount is changed from 0 to N or from N to 0, it's not the amount change that triggers events, but the change of product status. You can change the default behavior for the events to be triggered whenever the amount is changed. For more information, see [HowTo: Change the Default Behavior of Event Triggering in the AvailabilityStorage Module](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/extend-and-customize/configure-product-availability-to-be-published-on-product-amount-changes.html). - -Published data example in JSON. - -```json -{ - "id_availability_abstract": 1, - "fk_store": 1, - "abstract_sku": "001", - "quantity": 10, - "SpyAvailabilities": [ - { - "id_availability": 1, - "fk_availability_abstract": 1, - "fk_store": 1, - "is_never_out_of_stock": false, - "quantity": 10, - "sku": "001_25904006" - } - ], - "Store": { - "id_store": 1, - "name": "DE" - }, - "id_product_abstract": 1, - "_timestamp": 1554886713.989162 -} -``` - -This information is used on product details page when **Add to cart** is rendered. - -### Availability Calculation - -Product availability can have flag `is_never_out_of_stock`. This indicates that the product is always available for sale and does not have a finite stock. In this situation the availability calculation is not needed anymore. - -`Availability = max(0, sum of all stock types(Stock) - Reserved Items)` -In state machine items get reserved for an open order. There are certain states that release item, for example when payment fails and order is canceled. But if order is successfully fulfilled and item is delivered, item stays reserved till the next stock update. - -Stock update triggers the event `stock update`. For example, in our dummy payment’s implementation this will move the items from “Shipped” state to next state. As the consecutive state is not reserved, the items that have already been shipped, will not be reserved any more. - -### Import / Change Stock - -It’s possible to use `vendor/bin/console data:import:product-stock` command to import stocks into database. The default stock importer uses `csv` file from `src/Pyz/Zed/Updater/Business/Internal/data/import/product_stock.csv` which imports stocks. - -The Back Office is provided to allow assigning stocks to products. See [Availability](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/managing-products-availability.html) for details on how to manage product stocks in the Back Office. - -Stock update considers the stock from the stock file to be the absolute value. On stock update, the stock is overwritten with the values from the file. If a certain product does not have a record in the stock file, then it is considered that the stock of this product does not have to be updated. - -### Availability Per Store - -Since Availability module version 6.* we have added support for multi-store availability. That means that you can now have availability calculated per store basis. In the Administration Interface you can change from which store you want to see availability. - -The main change in Availability in that `spy_availability` and `spy_availability_abstract` now have foreign key to store table which indicates to which store it is applicable. Reservations in OMS have also undergone a few changes to support multiple multi-store scenarios. - -With Spryker shop, you can actually have several scenarios pertain to product warehouses in a multi-store environment. Each scenario is configured and enabled manually. The possible scenarios are listed below. - -1. Each store has own database and own warehouse. This means that stores have separate independent stocks and therefore separated product reservations and availability. -![Scenario 1](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/Stock+and+Availability+Management/Scenario_1.png) - -2. Each store has own database, but warehouse is shared between the stores. This means that reservation and availabilities are synced.For the case when stores do not share database, but reservations must be shared, three new database tables have been created. -![Scenario 2](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/Stock+and+Availability+Management/Scenario_2.png) - -* spy_oms_product_reservation_store - this table will store reservation request from other stores. -* spy_oms_reservation_change_version - this table will store information about when last reservation occurred. -* spy_oms_reservation_last_exported_version - this table will store information about when reservations were exported to other stores last time. - -Also, we provide a few plugins to help implement synchronization: - -* `\Spryker\Zed\Oms\Communication\Plugin\Oms\ReservationHandler\ReservationVersionHandlerPlugin` - this plugin will be called when customer makes an order and reservation is made. It will store reservation to spy_oms_reservation_change_version database table. This plugin should be registered in `\Pyz\Zed\Oms\OmsDependencyProvider::getReservationHandlerPlugins` plugin stack. -* `\Spryker\Zed\Oms\Communication\Plugin\Oms\ReservationImport\ReservationExportPlugin` - is the plugin which will be called when reservation export to other store is called. This plugin should decide if the export should be accepted. The delivery mechanism is not provided, it could be done with files or queue. For example, when ReservationExportPlugin is called, you could write a file copy to other server and then read it there. Similar would be with queue "publish", then "consume" on other end. -* When reading export data on other store, you can then use `\Spryker\Zed\Oms\Business\OmsFacadeInterface::importReservation` which will store reservation information to `spy_oms_product_reservation_store` table and update all timestamps accordingly. - -There is a console command to export all reservations: `\Spryker\Zed\Oms\Communication\Console\ExportReservationConsole`. It will trigger `ReservationExportPlugin` with reservations amounts to export. This command can be added to cronjob and run periodically. - -3. Database is shared between stores, but warehouses are separated by store. This means, that reservations and availability are separated per store and the warehouses (and their stocks) belong to specific stores. Assume there are DE and AT stores. DE store has Warehouse 1 and Warehouse 2, and AT has Warehouse 2. If user wants to buy some product from Warehouse 2 which is not available for AT store, but available in DE store, he/she would not be able to buy it in AT store (since the warehouses are separated), but could buy it in DE store (since the database is shared and it’s possible to switch between stores). When orders are placed, each reservation in -![Scenario 3](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/Stock+and+Availability+Management/Scenario_3.png) - -`spy_oms_product_reservation` table will also store information about store, the relation `fk_store`, to `spy_store` table. When adding a product to cart and displaying it there, the store identifier `fk_store` is used to define the correct availability value for the specific store. -From Availability module version 6.0 we have added a new configuration option to store.php file to have information about store with shared persistence. Add `'sharedPersistenceWithStores' => []` to `stores.php`, where array is store names. - -For example: - -```json - 'storesWithSharedPersistence' => ['DE', 'AT'] - $stores['DE'] = [ - ... //other options - 'storesWithSharedPersistence' => ['AT'] - ] - $stores['AT'] = [ - ... //other options - 'storesWithSharedPersistence' => ['DE'] - ] -``` - -That means that DE and AT both share database. This information will be used when updating OMS reservations. - -4. Database is shared between stores, warehouses are shared by the stores. In this case the reservation must be synchronized. -![Scenario 4](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/Stock+and+Availability+Management/Scenario_4.png) - -When placing an order in Store A, the reservation is stored with the store identifier `fk_store`. An event is created and published in the queue, and synchronization with Store B happens. See scenario 3 above for information about how reservations are handled as well learn about the new configuration option for shared database in the `store.php` file. - -To learn more about the feature and to find out how end users use it, see [Inventory Management feature overview](/docs/scos/user/features/{{page.version}}/inventory-management-feature-overview.html) for business users. - - - -## Related Developer documents - -| INSTALLATION GUIDES | GLUE API GUIDES | DATA IMPORT | -|---|---|---| -| [Inventory Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/inventory-management-feature-integration.html) | [Retrieving abstract product availability](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-product-availability.html) | [File details: product_stock.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/stocks/file-details-product-stock.csv.html) | -| [Glue API: Inventory Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-inventory-management-feature-integration.html) | [Retrieving concrete product availability](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-availability.html) | [File details: warehouse_address.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse-address.csv.html) | -| | | [File details: warehouse_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse-store.csv.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/mailing-and-notifications-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/mailing-and-notifications-feature-walkthrough.md deleted file mode 100644 index 466112ec897..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/mailing-and-notifications-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Mailing & Notifications feature walkthrough -last_updated: Aug 13, 2021 -description: The Mailing & Notifications feature allows you to manage newsletters and notifications -template: concept-topic-template ---- - -The _Mailing & Notifications_ feature allows you to manage newsletters and notifications. - - -To learn more about the feature and to find out how end users use it, see [Mailing & Notifications feature overview](/docs/scos/user/features/{{page.version}}/mailing-and-notifications-feature-overview.html) for business users. - - -## Related Developer documents - - | TUTORIALS AND TUTORIALS AND HOWTOS | -|---------| -| [HowTo: Create and Register a MailTypePlugin](/docs/scos/dev/tutorials-and-howtos/howtos/howto-create-and-register-a-mailtypeplugin.html) | -| [HowTo: Create and Register a Mail Provider](/docs/scos/dev/tutorials-and-howtos/howtos/howto-create-and-register-a-mail-provider.html) | -| [Tutorial: Sending an email](/docs/scos/dev/tutorials-and-howtos/introduction-tutorials/tutorial-sending-an-email.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/merchant-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/merchant-feature-walkthrough.md deleted file mode 100644 index 1d53903d729..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/merchant-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Merchant feature walkthrough -description: In the context of SCOS B2B and Marketplaces, merchant is the selling company. -template: concept-topic-template ---- - -The *Merchant* feature provides the core functionality for the SCOS B2B and Marketplace with the basic create-read-update operations over the Merchant entity. -You cannot delete a merchant, but only deactivate. - -## Main Merchant feature modules - -| NAME | Description | -| -------------------- | ---------- | -| [Merchant](https://github.com/spryker/merchant) | Keeps the core create-read-update functionality of a merchant. | - -## Entity diagram - -The following schema illustrates relations in the Merchant entity: - -![Entity diagram](https://confluence-connect.gliffy.net/embed/image/47ca3486-ab11-49f5-801e-6043b7a7767a.png?utm_medium=live&utm_source=custom) diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/multiple-carts-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/multiple-carts-feature-walkthrough.md deleted file mode 100644 index 081c247ebe1..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/multiple-carts-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Multiple Carts feature walkthrough -last_updated: Aug 18, 2021 -description: The Multiple Carts feature allows creating and managing one or multiple shopping carts in one customer account. -template: concept-topic-template ---- - -The _Multiple Carts_ feature allows you to create and manage one or multiple shopping carts in one customer account. - - -To learn more about the feature and to find out how end users use it, see [Multiple Carts feature overview](/docs/scos/user/features/{{page.version}}/multiple-carts-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | -|---------| -| [Multiple Carts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-feature-integration.html) | -| [Multiple carts + Quick Order feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-quick-order-feature-integration.html) | -| [Multiple carts + Reorder feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-reorder-feature-integration.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-feature-walkthrough.md deleted file mode 100644 index dac1bbfffc6..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Navigation feature walkthrough -last_updated: Aug 13, 2021 -description: The Navigation feature enables product catalog managers to create intuitive navigation elements and display them on the Storefront -template: concept-topic-template ---- - -The _Navigation_ feature enables product catalog managers to create intuitive navigation elements and display them on the Storefront. - - -To learn more about the feature and to find out how end users use it, see [Navigation feature overview](/docs/scos/user/features/{{page.version}}/navigation-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | GLUE API GUIDES | DATA IMPORT | REFERENCES | -|---|---|---|---| -| [Navigation feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/navigation-feature-integration.html) | [Retrieving navigation trees](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-navigation-trees.html) | [File details: navigation.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/navigation-setup/file-details-navigation.csv.html) | [Navigation module: Reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/navigation-feature-walkthrough/navigation-module-reference-information.html) | -| [Glue API: Navigation feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-navigation-feature-integration.html) | | [File details: navigation_node.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/navigation-setup/file-details-navigation-node.csv.html) | | -| [CMS feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/cms-feature-integration.html) | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-module.md b/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-module.md deleted file mode 100644 index e27c39ef0cf..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-module.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Navigation Module -description: The module provides database structure and a public API to manage what’s in the database, and a small toolkit for rendering navigation menus in the frontend -last_updated: Nov 5, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/module-navigation -originalArticleId: 1dca8ab1-b18c-4774-a20f-827c484133f5 -redirect_from: - - /v1/docs/module-navigation - - /v1/docs/en/module-navigation - - /docs/scos/dev/feature-walkthroughs/201811.0/navigation-feature-walkthrough/navigation-module-reference-information.html -related: - - title: Managing Navigation Elements - link: docs/scos/user/back-office-user-guides/page.version/content/navigation/managing-navigation-elements.html - - title: Migration Guide - Navigation - link: docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-navigation-module.html - - title: Migration Guide - NavigationGui - link: docs/pbc/all/content-management-system/page.version/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-navigationgui-module.html - - title: Navigation Module Integration - link: docs/scos/dev/feature-integration-guides/page.version/navigation-module-integration.html ---- - -## Overview -The `Navigation` module manages multiple navigation menus that can be displayed on the frontend (Yves). Every navigation section can contain its own nested structure of navigation nodes. Navigation nodes have types that help define what kind of link they represent. - -The following node types are available: - -* **Label**: These nodes do not link to any specific URL, they are used for grouping other nodes. -* **Category**: Nodes can be assigned to category node URLs. -* **CMS Page**: Nodes can be assigned to CMS page URLs. -* **Link**: These nodes link to internal pages in Yves, for example, login, registration, etc. -* **External URL**: These nodes link to external URLs (typically tabs opened in a new browser). -You can control and adjust Navigation node appearance and add icons by assigning custom CSS classes to them. - -This feature is shipped with three modules: - -* **Navigation module** provides database structure and a public API to manage what’s in the database. It also provides a small toolkit for rendering navigation menus in the frontend. -* **NavigationGui** module provides a Zed UI to manage navigation menus. -* **NavigationCollector** module provides full collector logic for exporting navigation menus to the KV storage (Redis). - -## Under the Hood -### Database Schema -The Navigation module provides the `spy_navigation` table that stores navigation menus. They have a `name` field which is only used for backend display and they also have a `key` field used to reference the navigation menus from Yves. - -Every navigation entity contains some nodes stored in the `spy_navigation_node` table. The structure of the navigation tree depends on the `fk_parent_navigation_node` and the position fields which define if a node has a parent on its level, in what `position` they are ordered. Each navigation node has attributes that can be different per displayed locale. This information is stored in the `spy_navigation_node_localized_attributes` table. - -The `valid_from`, `valid_to`, and `is_active` fields allow to toggle the node's and its descendants visibility. - -![Navigation database schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Navigation/Navigation+Module/navigation_db_schema_2_0.png) - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/order-management-feature-wakthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/order-management-feature-wakthrough.md deleted file mode 100644 index 89b21dd3c1a..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/order-management-feature-wakthrough.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Order Management feature walkthrough -last_updated: Aug 18, 2021 -description: The Order Management feature adds a collection of functionalities that allow you to see the quantity of the order items, their status, and how long they exist. -template: concept-topic-template ---- - -The _Order Management_ feature adds a collection of functionalities that allow you to see the quantity of the order items, their status, and how long they exist. Also, you can view details per status and order page. - - -To learn more about the feature and to find out how end users use it, see [Order Management](/docs/scos/user/features/{{page.version}}/order-management-feature-overview/order-management-feature-overview.html) for business users. - - -## Entity diagram - -The following schema illustrates the module relations of the Custom Order Reference feature: - -
- -![custom-order-reference-module-relations](https://confluence-connect.gliffy.net/embed/image/48319fea-1661-457f-9b4f-b8029dea8e70.png?utm_medium=live&utm_source=custom) - -
- -The following scheme illustrates relations between **Shipment**, **ShipmentGui**, and **Sales** modules: - -
- -![Module relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Split+Delivery/split-delivery-module-relations.png) - -
- -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| GLUE API GUIDES | TUTORIALS AND HOWTOS | REFERENCES | -|---|---|---|---|---| -| [Custom Order Reference feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/custom-order-reference-feature-integration.html) | [Split delivery migration concept](/docs/scos/dev/migration-concepts/split-delivery-migration-concept.html) | [Retrieving orders](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-orders.html) | [HowTo: Disable split delivery in Yves interface](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-disable-split-delivery-in-yves-interface.html) | [Sales module: reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/order-management-feature-walkthrough/sales-module-reference-information.html) | -| [Order Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/order-management-feature-integration.html) | | | [HowTo: Emailing invoices using BCC](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-emailing-invoices-using-bcc.html) | | -| [Quick Order + Non-splittable Products feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-non-splittable-products-feature-integration.html) | | | | | -| [Glue API: Checkout feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-checkout-feature-integration.html) | | | | | -|[ Glue API: Company Account feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-company-account-feature-integration.html) | | | | | -| [Glue API: Customer Account Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-customer-account-management-feature-integration.html) | | | | | -| [Glue API: Order Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-order-management-feature-integration.html) | | | | | -| [Glue API: Shipment feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-shipment-feature-integration.html) | | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/sales-module-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/sales-module-reference-information.md deleted file mode 100644 index 62dd73376c1..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/order-management-feature-walkthrough/sales-module-reference-information.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Sales -description: The module provides order management functionality obtained through the ZED UI that renders orders with details and the Client API to get customer orders -last_updated: Oct 15, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/sales -originalArticleId: d171c13d-461d-42f3-962c-cfea4b6cd566 -redirect_from: - - /v1/docs/sales - - /v1/docs/en/sales - - /v1/docs/sales-5-0 - - /v1/docs/en/sales-5-0 ---- - -The Sales module provides the order management functionality. The functionality is obtained through the ZED UI that renders orders with orders details and the Client API to get customer orders. - -## Getting Totals for Order -To get the Order with totals, the facade method SalesFacade::getOrderByIdSalesOrder() creates an order level which returns the OrderTransfer with a hydrated grandTotal, subtotal, expense, discounts and more - -{% info_block warningBox %} -This is an improvement from the Sales 5.0 version where you had to use `SalesAggregatorFacade` to get totalks. This version has been deprecated. -{% endinfo_block %} - -## Persisting Order Calculated Values -All calculated values are persisted now, when order are first placed. The values are stored by orderSaver plugins from checkout bundle. Check `\Pyz\Zed\Checkout\CheckoutDependencyProvider::getCheckoutOrderSavers` for currently available plugins. - -Some values can change during time when order refunded or partially refunded. Then `canceled_amount` and `refundable_amount` are recalculated and new values is persisted. At the same moment totals also change, but it does not overwrite old entry, but creates new row in `spy_sales_order_total` with this you have a history of order totals from the time order was placed. - -The following ER diagram shows persisted calculated values: -![ER diagram](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Sales/sales_persisting_order_values.png) - -## Extension Points -HydrateOrderPluginInterface - its an action which happens when `SalesFacade::getOrderByIdSalesOrder()` method is called. This means that you may want to enrich you `OrderTransfer` with additional data. This plugins accepts passes `OrderTransfer` for additional population. - -There are already few plugins provided: - -* `DiscountOrderHydratePlugin` - hydrates `OrderTransfer` with discount related data as it was stored when order is placed. -* `ProductOptionOrderHydratePlugin` - hydrates `OrderTransfer` with product option related data. -* `ProductBundleOrderHydratePlugin` - hydrates `OrderTransfer` with product bundle related data. -* `ShipmentOrderHydratePlugin` - hydrates `OrderTransfer` with shipment related data. - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/packaging-units-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/packaging-units-feature-walkthrough.md deleted file mode 100644 index deb5a461d2b..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/packaging-units-feature-walkthrough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Packaging Unit feature walkthrough -last_updated: Aug 18, 2021 -description: The Packaging Unit feature defines if a packaging unit holds a fixed amount of products or if customers can buy any amount of products in this packaging unit. Also, it allows applying amount restrictions to products -template: concept-topic-template ---- - -The _Packaging Units_ feature defines if a packaging unit holds a fixed amount of products or if customers can buy any amount of products in this packaging unit. Also, it allows applying amount restrictions to products. - - -To learn more about the feature and to find out how end users use it, see [Packaging Units feature overview](/docs/scos/user/features/{{page.version}}/packaging-units-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| TUTORIALS AND HOWTOS | -|---------|---------|---------| -| [Product Packaging Unit feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/packaging-units-feature-integration.html) | [Decimal Stock migration concept](/docs/scos/dev/migration-concepts/decimal-stock-migration-concept.html) | [HowTo: Import packaging units](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/data-imports/howto-import-packaging-units.html) | -| | | [HowTo: Integrate and use precise decimal numbers](/docs/scos/dev/tutorials-and-howtos/howtos/howto-integrate-and-use-precise-decimal-numbers.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/payments-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/payments-feature-walkthrough.md deleted file mode 100644 index c91016823bd..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/payments-feature-walkthrough.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Payments feature walkthrough -last_updated: Aug 18, 2021 -description: The Payments feature allows customers to pay for orders with none, one, or multiple payment methods during the checkout process. -template: concept-topic-template ---- - -The _Payments_ feature allows customers to pay for orders with none, one, or multiple payment methods during the checkout process. - - -To learn more about the feature and to find out how end users use it, see [Payments feature overview](/docs/scos/user/features/{{page.version}}/payments-feature-overview.html) for business users. - - -## Entity diagram - -The following schema illustrates relations between the _Payment_, _PaymentGui_, and _PaymentDataImport_ modules: - -
- -![payment-methods-modules-scheme.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Payment/Payment+Methods+Overview/payment-methods-modules-scheme.png) - -
- - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | GLUE API GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | REFERENCES | -|---|---|---|---|---|---| -| [Payments feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/payments-feature-integration.html) | Payment migration guide | [Updating payment data](/docs/scos/dev/glue-api-guides/{{page.version}}/checking-out/updating-payment-data.html) | [File details: payment_method.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-payment-method-store.csv.html) | [HowTo: Hydrate payment methods for an order](/docs/scos/dev/tutorials-and-howtos/howtos/howto-hydrate-payment-methods-for-an-order.html) | [Payment partners](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/adyen.html) | -| | | | [File details: payment_method_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-payment-method-store.csv.html) | [Implementing Direct Debit Payment](/docs/scos/dev/back-end-development/data-manipulation/payment-methods/direct-debit-example-implementation/implementing-direct-debit-payment.html) | | -| | | | | [Interact with third party payment providers using Glue API](/docs/scos/dev/tutorials-and-howtos/advanced-tutorials/glue-api/tutorial-interacting-with-third-party-payment-providers-via-glue-api.html) | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/money-module-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/money-module-reference-information.md deleted file mode 100644 index 748bb2aa598..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/money-module-reference-information.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Money -description: Spryker Commerce OS handles all monetary values as integer and provides conversions from decimal values to cent values and vice versa. -last_updated: Nov 5, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/money -originalArticleId: 619f5a72-bb35-42c4-9a16-73610cd83e6e -redirect_from: - - /v1/docs/money - - /v1/docs/en/money ---- - -{% info_block infoBox "Money" %} -Handling monetary values can be a problem and is often quite hard. The Money bundle makes it easier to work with monetary values. -{% endinfo_block %} - - -Spryker handles all monetary values as integer and provides conversions from decimal values to cent values and vice versa. - -The key feature of this module is to convert a `MoneyTransfer` into the proper string version of it, given the current locale and currency. - - -## Usage -The Money module is very straight forward and easy to use. The MoneyFacade exposes the following methods: - -- `MoneyFacade::fromInteger()` -- `MoneyFacade::fromFloat()` -- `MoneyFacade::fromString()` -- `MoneyFacade::formatWithCurrency()` -- `MoneyFacade::formatWithoutCurrency()` -- `MoneyFacade::convertIntegerToDecimal()` -- `MoneyFacade::convertDecimalToInteger()` - -### MoneyFacade::from*() methods - -Internally we use a powerful implementation of the Money Pattern. Outside the Money module you will only see the MoneyTransfer which encapsulates our internals. - -To get a money object you can call the `MoneyFacade::from*()` methods: - -| Module | Called with | -| --- | --- | -| MoneyFacade::fromInteger(1000) | integer | -| MoneyFacade::fromInteger(1000, 'EUR') | integer and currency | -| MoneyFacade::fromFloat(10.00) | float | -| MoneyFacade::fromFloat(10.00, 'EUR') | float and currency | -| MoneyFacade::fromString('1000') | string | -| MoneyFacade::fromString('1000', 'EUR') | string and currency | - -All of them will return a `MoneyTransfer` with a `MoneyTransfer::$amount` of `‘1000’`. - -{% info_block infoBox %} -The only difference between them is the `MoneyTransfer::$currency`. This value differs if you pass a currency to the `MoneyFacade::from*( -{% endinfo_block %}` methods or not.) - -* In case you don’t pass a currency, the currency configured as default one will be used. -* If you pass a specific currency, it will be used instead of the one that’s configured as default one. - -**`MoneyFacade::formatWithSymbol()`** -`MoneyFacade::formatWithSymbol()` method accepts only one argument - a MoneyTransfer. It will return a string representation of the given object, considering the current locale. - -{% info_block infoBox "Example:" %} -MoneyTransfer::$amount = 1000
MoneyTransfer::$currency = ‘EUR’
Current locale is de_DE
The output would be 10,00 €
If the current locale would be en_US, the output would be: €10.00 when passing the same object. -{% endinfo_block %} - -**`MoneyFacade::formatWithoutSymbol()`** -`MoneyFacade::formatWithoutSymbol()` method has the same behavior as the `MoneyFacade::formatWithSymbol()`, except of the fact that the currency symbol is not included. - -{% info_block infoBox %} -The output would then be `10,00` or `10.00` for the above example. -{% endinfo_block %} - -**`MoneyFacade::convertIntegerToDecimal()`** -In some cases you will need a plain decimal representation of the value in integer (e.g. cents). This can be useful e.g. for API calls. - -**`MoneyFacade::convertDecimalToInteger()`** -In some cases you will need an integer (e.g. cents) representation for a decimal value. This can be useful when you want to store monetary values in the database. - -## Money Collection Form Type -From Money version 2.2.*, you can have money collection form type inside your forms which will allow to include complex form collection that will render table with currency per store and gross/net price. - -For example, add FormBuilder in your form Type: - -```php -/** - * @param \Symfony\Component\Form\FormBuilderInterface $builder - * - * @return $this - */ -protected function addMoneyValueCollectionType(FormBuilderInterface $builder) - { - $builder->add( - DiscountCalculatorTransfer::MONEY_VALUE_COLLECTION, //is the property in the main form you want to map. It should be transferred as in example - MoneyCollectionType::class, - [ - MoneyCollectionType::OPTION_AMOUNT_PER_STORE => false, //If you want to render per store, set it to true - ] - ); - - return $this; - } -``` - -Also, you need to modify twig template to include form money value collection table. - -``` -{% raw %}{{{% endraw %} form_money_collection(mainForm.moneyValueCollection) {% raw %}}}{% endraw %} -``` - -This will render table with all currencies enabled in store. You have to handle persistence yourself, which means that you have to save and read data to `MoneyValueTransfer` collection. - -{% info_block infoBox %} -Component provides only initial data. -{% endinfo_block %} - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/prices-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/prices-feature-walkthrough.md deleted file mode 100644 index d86147c7b2f..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/prices-feature-walkthrough/prices-feature-walkthrough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Prices feature walkthrough -last_updated: Aug 18, 2021 -description: The Prices feature enables Back Office users to effectively manage the prices of all types of products -template: concept-topic-template ---- - -The _Prices_ feature enables Back Office users to effectively manage the prices of all types of products. They can set different types of prices, like default, original, and volume prices. - - -To learn more about the feature and to find out how end users use it, see [Prices overview](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html) for business users. - - -## Related Developer documents - -| INTEGRATION GUIDES | GLUE API GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | REFERENCES | -|---|---|---|---|---| -| [Prices feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/prices-feature-integration.html) | [Retrieving abstract product prices](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-abstract-product-prices.html) | [File details: product_price.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/pricing/file-details-product-price.csv.html) | [HowTo: Handle twenty five million prices in Spryker Commerce OS](/docs/scos/dev/tutorials-and-howtos/howtos/howto-handle-twenty-five-million-prices-in-spryker-commerce-os.html) | [Money module: reference information](/docs/scos/dev/feature-walkthroughs/{{page.version}}/prices-feature-walkthrough/money-module-reference-information.html) | -| [Glue API: Product Price feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-price-feature-integration.html) | [Retrieving concrete product prices](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/concrete-products/retrieving-concrete-product-prices.html) | | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-barcode-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-barcode-feature-walkthrough.md deleted file mode 100644 index f4a8dbcd917..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-barcode-feature-walkthrough.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Product Barcode feature walkthrough -last_updated: Aug 18, 2021 -description: The Product Barcode feature allows creating barcodes for any kind of entity. -template: concept-topic-template ---- - -The _Product Barcode_ feature allows creating barcodes for any kind of entity. - - -To learn more about the feature and to find out how end users use it, see [Product Barcode feature overview](/docs/scos/user/features/{{page.version}}/product-barcode-feature-overview.html) for business users. - - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-bundles-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-bundles-feature-walkthrough.md deleted file mode 100644 index 917a4213761..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-bundles-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Product Bundles feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Bundles feature allows you to tie individual items together and sell them as a package. - -template: concept-topic-template ---- - -The _Product Bundles_ feature allows you to tie individual items together and sell them as a package. - - -To learn more about the feature and to find out how end users use it, see [Product Bundles feature overview](/docs/scos/user/features/{{page.version}}/product-bundles-feature-overview.html) for business users. - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | -|---------|---------| -|[Product Bundles feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-bundles-feature-integration.html) | [Retrieving bundled products](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-bundled-products.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-groups-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-groups-feature-walkthrough.md deleted file mode 100644 index 9153323389a..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-groups-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Product Groups feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Groups feature allows product catalog managers to group products by attributes, like color or size. -template: concept-topic-template ---- - -The _Product Groups_ feature allows product catalog managers to group products by attributes, like color or size. - - -To learn more about the feature and to find out how end users use it, see [Product Groups feature overview](/docs/scos/user/features/{{page.version}}/product-groups-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | -|---------|---------|---------| -| [Product Groups feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-groups-feature-integration.html) | [File details: product_group.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/product-merchandising/file-details-product-group.csv.html) | [HowTo: Display product groups by color on the Storefront](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-display-product-groups-by-color-on-the-storefront.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-labels-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-labels-feature-walkthrough.md deleted file mode 100644 index 7b82d2b6dc2..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-labels-feature-walkthrough.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Product Labels feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Labels feature enables product catalog managers to highlight the desired products by adding a special type of information - product labels. -template: concept-topic-template ---- - -The _Product Labels_ feature enables product catalog managers to highlight the desired products by adding a special type of information—product labels. - - -To learn more about the feature and to find out how end users use it, see [Product Labels feature overview](/docs/scos/user/features/{{page.version}}/product-labels-feature-overview.html) for business users. - - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | GLUE API GUIDES | -|---|---|---| -| [Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-labels-feature-integration.html) | ProductLabel migration guide | [Retrieving product labels](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-labels.html) | -| [Glue API: Product Labels feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-labels-feature-integration.html) | ProductLabelGUI migration guide | | -| | ProductLabelSearch migration guide | | -| | ProductLabelStorage migration guide | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-lists-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-lists-feature-walkthrough.md deleted file mode 100644 index cecea87e695..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-lists-feature-walkthrough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Product Lists feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Lists feature allows configuring product availability for specific companies by blacklisting or whitelisting products for them. -template: concept-topic-template ---- - -The _Product Lists_ feature allows configuring product availability for specific companies by blacklisting or whitelisting products for them. - - -To learn more about the feature and to find out how end users use it, see [Product Lists feature overview](/docs/scos/user/features/{{page.version}}/product-lists-feature-overview.html) for business users. - - - -## Related Developer documents - -|INSTALLATION GUIDES | -|---------| -| [Product Lists feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-lists-feature-integration.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-options-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-options-feature-walkthrough.md deleted file mode 100644 index e4f00438927..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-options-feature-walkthrough.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Product Options feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Options feature allows a Back Office user to create and assign product options to abstract products. -template: concept-topic-template ---- - -The _Product Options_ feature allows a Back Office user to create and assign product options to abstract products. - - -To learn more about the feature and to find out how end users use it, see [Product Options feature overview](/docs/scos/user/features/{{page.version}}/product-options-feature-overview.html) for business users. - - - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | DATA IMPORT | -|---------|---------|---------| -| [Shopping Lists + Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shopping-lists-product-options-feature-integration.html) | ProductOption migration guide |[File details: product_option.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/product-options/file-details-product-option.csv.html) | -| [Product options + Order Management feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-options-order-management-feature-integration.html) | | [File details: product_option_price.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/product-options/file-details-product-option-price.csv.html) | -| [Glue API: Product Options feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-options-feature-integration.html) | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-rating-reviews-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-rating-reviews-feature-walkthrough.md deleted file mode 100644 index 0b3ff6781ee..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-rating-reviews-feature-walkthrough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Product Rating & Reviews feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Rating & Reviews feature allows customers to add reviews and ratings to abstract products. -template: concept-topic-template ---- - -The _Product Rating & Reviews_ feature allows customers to add reviews and ratings to abstract products. - - -To learn more about the feature and to find out how end users use it, see [Product Rating & Reviews feature overview](/docs/scos/user/features/{{page.version}}/product-rating-and-reviews-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | DATA IMPORT | -|---------|---------|---------| -| [Product Rating & Reviews feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-rating-and-reviews-feature-integration.html) | [Managing product ratings and reviews](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/managing-product-ratings-and-reviews.html) | [File details: product_review.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/product-merchandising/file-details-product-review.csv.html) | -|[Glue API: Product rating & reviews feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-rating-and-reviews-feature-integration.html) | | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-relations-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-relations-feature-walkthrough.md deleted file mode 100644 index 3745efc1d97..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-relations-feature-walkthrough.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Product Relations feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Relations feature enables product catalog managers to create logical relations between products based on their actual properties -template: concept-topic-template ---- - -The _Product Relations_ feature enables product catalog managers to create logical relations between products based on their actual properties. Product relations are displayed on the Storefront to achieve multiple purposes. - - -To learn more about the feature and to find out how end users use it, see [Product Relations feature overview](/docs/scos/user/features/{{page.version}}/product-relations-feature-overview.html) for business users. - - -## Entity diagram - -The following schema illustrates relations within the Product Relations feature: - -
- -![product-relations-module-relations.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Relations/Product+Relations+Feature+Overview/202006.0/product-relations-module-relations.png) - -
- -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| -|---------|---------| -|[Product relations feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-relations-feature-integration.html) | ProductRelation migration guide | -| [Glue API: Product relations feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-product-relations-feature-integration.html) | ProductRelationStorage migration guide | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-feature-walkthrough.md deleted file mode 100644 index c31bad9cf22..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-feature-walkthrough.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Product Sets feature walkthrough -last_updated: Aug 19, 2021 -description: The Product Sets feature allows creating and selling collections of products -template: concept-topic-template ---- - -The _Product Sets_ feature allows creating and selling collections of products. - - -To learn more about the feature and to find out how end users use it, see [Product Sets feature overview](/docs/scos/user/features/{{page.version}}/product-sets-feature-overview.html) for business users. - - -## Entity diagram - -The Product Sets feature consists of the following modules: - -| MODULE | DESCRIPTION | -| --- | --- | -| ProductSet | Manages the Product Sets feature's core functionalities, such as persisting all related data to database and reading from it. It also provides the Client functionality to list Product Sets from Search. | -| ProductSetCollector | Provides full Collector logic to export product sets to Search and Storage. | -| ProductSetGui | Provides a Back Office UI to create, list, update, delete, and reorder product sets. | - -The `ProductSet` module provides a `spy_product_set` table that stores some non-localized data about Product Sets entities. Localized data is stored in the `spy_product_set_data` table. These tables, along with their related URLs and product image sets, contain all the necessary data about Product Sets entities that you can list on the Storefront or show their representing *Product details* pages. - -The products in product sets and their sorting positions are stored in the `spy_product_abstract_set` table. - -
- -![Product Set Database schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Sets/product_set_db_schema.png) - -
- - -## Related Developer documents - -|INSTALLATION GUIDES | DATA IMPORT | -|---------|---------| -| [Product Sets feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-sets-feature-integration.html) | [File details: product_set.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/product-merchandising/file-details-product-set.csv.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-module-relations.md b/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-module-relations.md deleted file mode 100644 index 85b12021b5e..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/product-sets-feature-walkthrough/product-sets-module-relations.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Product Sets- module relations -description: Module relations and database schema of the Product Sets feature. -template: feature-walkthrough-template ---- - -The Product Set feature consists of the following modules: - -| Module | Description | -| --- | --- | -| ProductSet | Manages the Product Sets feature's core functionalities, such as persisting all related data to database and reading from it. It also provides the Client functionality to list Product Sets from Search. | -| ProductSetCollector|Provides full Collector logic to export product sets to Search and Storage. | -| ProductSetGui | Provides a Back Office UI to create, list, update, delete, and reorder product sets. | - -The `ProductSet` module provides a `spy_product_set` table that stores some non-localized data about Product Sets entities. Localized data is stored in the `spy_product_set_data` table. These tables, along with their related URLs and product image sets, contain all the necessary data about Product Sets entities that you can list on the Storefront or show their representing *Product details* pages. - -The products in product sets and their sorting positions are stored in the `spy_product_abstract_set` table. - -![Product Set Database schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Sets/product_set_db_schema.png) diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/promotions-discounts-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/promotions-discounts-feature-walkthrough.md deleted file mode 100644 index 33ac8f2af2b..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/promotions-discounts-feature-walkthrough.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Promotions & Discounts feature walkthrough -last_updated: Aug 19, 2021 -description: The Promotions & Discounts feature allows defining several types of discounts based on a brand, overall cart value, certain product ranges, or special customer groups -template: concept-topic-template ---- - -The _Promotions & Discounts_ feature allows defining several types of discounts based on a brand, overall cart value, certain product ranges, or special customer groups. You can also offer discount vouchers or incentivize certain products through coupon codes. - - -To learn more about the feature and to find out how end users use it, see [Promotions & Discounts feature overview](/docs/scos/user/features/{{page.version}}/promotions-discounts-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | GLUE API GUIDES | DATA IMPORT | TUTORIALS AND HOWTOS | -|---|---|---|---|---| -| [Glue API: Promotions & Discounts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-promotions-and-discounts-feature-integration.html) | Discount migration guide | [Retrieving promotional items](/docs/scos/dev/glue-api-guides/{{page.version}}/retrieving-promotional-items.html) | [File details: discount.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/discounts/file-details-discount.csv.html) | [HowTo: Create discounts based on shipment](/docs/pbc/all/discount-management/{{site.version}}/base-shop/create-discounts-based-on-shipment.html) | -| | | [Managing discount vouchers in guest carts](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-discount-vouchers-in-guest-carts.html) | [File details: discount_amount.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/discounts/file-details-discount-amount.csv.html) | | -| | | [Managing discount vouchers in guest carts](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-discount-vouchers-in-guest-carts.html) | [File details: discount_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/discounts/file-details-discount-store.csv.html) | | -| | | | [File details: discount_voucher.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/discounts/file-details-discount-voucher.csv.html) | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/quick-add-to-cart-feature-walkthrough/quick-add-to-cart-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/quick-add-to-cart-feature-walkthrough/quick-add-to-cart-feature-walkthrough.md deleted file mode 100644 index 204316153e5..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/quick-add-to-cart-feature-walkthrough/quick-add-to-cart-feature-walkthrough.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Quick Add to Cart feature walkthrough -last_updated: Aug 19, 2021 -description: The Quick Add to Cart feature allows adding multiple products to cart at once -template: concept-topic-template ---- - -The _Quick Add to Cart_ feature allows adding multiple products to cart at once. - - -To learn more about the feature and to find out how end users use it, see [Quick Add to Cart feature overview](/docs/scos/user/features/{{page.version}}/quick-add-to-cart-feature-overview.html) for business users. - - -## Entity diagram - -The following schema illustrates relations in the Quick Order feature: - -
- -![quick-add-to-cart-2-modules.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/quick-add-to-cart-2-modules.png) - -
- -
- -![file-upload-form-module-schema.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/file-upload-form-module-schema.png) - -
- - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | -|---|---| -| [Quick Add to Cart feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-feature-integration.html) | ProductPackagingUnitStorage migration guide | -| [Quick Add to Cart + Shopping Lists feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-shopping-lists-feature-integration.html) | ProductPageSearch migration guide | -| [Quick Add to Cart + Discontinued Products feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-discontinued-products-feature-integration.html) | QuickOrderPage migration guide | -| [Quick Add to Cart + Measurement Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-measurement-units-feature-integration.html) | | -| [Quick Add to Cart + Non-splittable Products feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-non-splittable-products-feature-integration.html) | | -| [Quick Add to Cart + Packaging Units feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/quick-add-to-cart-packaging-units-feature-integration.html) | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/reference-information-refund-module.md b/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/reference-information-refund-module.md deleted file mode 100644 index 76790365285..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/reference-information-refund-module.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Reference information: Refund module" -description: The article describes the methods used to calculate the refund, as well as ways of using and extending the Refund module. -last_updated: Sep 30, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/refund-2-0 -originalArticleId: 1c6e9cef-6fc1-4555-aec9-db57dd1ec452 -redirect_from: - - /v1/docs/refund-2-0 - - /v1/docs/en/refund-2-0 ---- - -The Refund module manages the refund process. - -* Overview -* Using Refund -* Extending Refund - -## Overview - -`RefundFacade` contains the following methods: - -* `calculateRefund(array $salesOrderItems, SpySalesOrder $salesOrderEntity)` - * calculates refundable amount for the sales order - -* `calculateRefundableItemAmount(RefundTransfer $refundTransfer, OrderTransfer $orderTransfer, array $salesOrderItems)` - * calculates refundable amount for given OrderTransfer and on the OrderItems that should be refunded. - -* `calculateRefundableExpenseAmount(RefundTransfer $refundTransfer, OrderTransfer $orderTransfer, array $salesOrderItems)` - * calculates refundable amount on order expenses - -* `saveRefund(RefundTransfer $refundTransfer)` - * persists the calculated refund amount - -When you need to refund one or more items of an order, you just need to create an array of order items that you have to refund and the sales order entity. The `RefundFacade::calculateRefund($salesOrderItems, $salesOrderEntity)` will return a `RefundTransfer` that contains the calculated refundable amount. - -## Using the Refund Module - -Usually this functionality will be integrated in the state machine processes and will be called by a command. -A command plugin that calls the refund functionality can be similar to the example below: - -```php -refundFacade->calculateRefund($orderItems, $orderEntity); - $isRefundSuccessful = $this->getFacade()->refundPayment($refundTransfer); - - if ($isRefundSuccessful) { - $this->refundFacade->saveRefund($refundTransfer); - } - - ... - } - - ... -} -``` - -The necessary data to handle the refund is already provided to the state machine’s command and you only need to wire it up. - -To summarize, the following steps need to take place in your refund command: - -* ask the `RefundFacade` to calculate the refundable amount - * by calling `RefundFacade::calculateRefund($orderItems, $orderEntity)` you will get a `RefundTransfer` back that contains the refundable amount for the provided data. -* the `RefundTransfer` object can be passed to your payment provider facade that handles the refund - * the payment provider should return if the refund was successful or not -* if the refund was successful, persist the data - * pass the `RefundTransfer` to `RefundFacade::saveRefund()` to persist the refund data. - -## Extending the Refund Module -The manner of calculating the refundable amount is different from one project to another. One will refund the shipment for every item, while the other one will refund the shipment only when all items are refunded etc. - -The calculation of the refundable amount is achieved through a plugin mechanism. - -The default implementation will refund all expenses when the last item will be refunded. If you need to change this behavior, you simply need to create a new plugin that implements `RefundCalculatorPluginInterface` and replace the default one from the plugin stack with the new one. - -This interface contains one method `RefundCalculatorPluginInterface::calculateRefund()` that asks for a `RefundTransfer` object, an` OrderTransfer` and an array of items that need to be refunded. diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/refunds-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/refunds-feature-walkthrough.md deleted file mode 100644 index cc438d78b52..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/refunds-feature-walkthrough/refunds-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Refunds feature walkthrough -last_updated: Aug 19, 2021 -description: The Refunds feature allows issuing refunds on orders -template: concept-topic-template ---- - -The _Refunds_ feature allows issuing refunds on orders. - - -To learn more about the feature and to find out how end users use it, see [Refunds feature overview](/docs/scos/user/features/{{page.version}}/refunds-feature-overview.html) for business users. - - -## Related Developer documents - -| MIGRATION GUIDES | TUTORIALS AND HOWTOS | -|---------|---------| -| Refund migration guide | [Refund process management](/docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/refund-process-management.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/reorder-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/reorder-feature-walkthrough.md deleted file mode 100644 index 70f58ec84aa..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/reorder-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Reorder feature walkthrough -last_updated: Aug 19, 2021 -description: The Reorder feature allows customers to repeat their previous orders in one click -template: concept-topic-template ---- - -The _Reorder_ feature allows customers to repeat their previous orders in one click. - - -To learn more about the feature and to find out how end users use it, see [Reorder feature overview](/docs/scos/user/features/{{page.version}}/reorder-feature-overview.html) for business users. - - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES| -|---------|---------| -| [Multiple Carts + Reorder feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/multiple-carts-reorder-feature-integration.html) | CustomerReorderWidget migration guide | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/shared-carts-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/shared-carts-feature-walkthrough.md deleted file mode 100644 index 472662b19b0..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/shared-carts-feature-walkthrough.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Shared Carts feature walkthrough -last_updated: Aug 20, 2021 -description: The Shared Carts features allows sharing carts between company users. -template: concept-topic-template ---- - -The _Shared Carts_ feature allows sharing carts between company users. - - -To learn more about the feature and to find out how end users use it, see [Shared Carts feature overview](/docs/scos/user/features/{{page.version}}/shared-carts-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | -|---------|---------| -|[Shared Carts feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shared-carts-feature-integration.html) | [Sharing company user carts](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/sharing-company-user-carts/sharing-company-user-carts.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-feature-walkthrough.md deleted file mode 100644 index 036fa830377..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-feature-walkthrough.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Shipment feature walkthrough -last_updated: Aug 20, 2021 -description: The Shipment feature allows you to create and manage carrier companies and assign multiple delivery methods associated with specific stores, which your customers can select during the checkout -template: concept-topic-template ---- - -The _Shipment_ feature allows you to create and manage carrier companies and assign multiple delivery methods associated with specific stores, which your customers can select during the checkout. With the feature in place, you can define delivery price and expected delivery time, tax sets, and availability of the delivery method per store. - - -To learn more about the feature and to find out how end users use it, see [Shipment feature overview](/docs/scos/user/features/{{page.version}}/shipment/shipment-feature-overview.html) for business users. - - -## Entity diagram - -The following schema shows how the sales order and shipment method entities are modelled in the database: - -
- -![shipment-database-schema.png)](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shipment/Shipment+Overview/shipment-database-schema.png) - -
- - -## Related Developer documents - -| INSTALLATION GUIDES | UPGRADE GUIDES | TUTORIALS AND HOWTOS | REFERENCES | -|---|---|---|---| -| [Shipment feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shipment-feature-integration.html) | Shipment migration guide | [HowTo: Create discounts based on shipment](/docs/pbc/all/discount-management/{{site.version}}/base-shop/create-discounts-based-on-shipment.html#activate-a-discount-rule-based-on-a-shipment-carrier) | [Reference information: Shipment method plugins](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shipment-feature-walkthrough/shipment-method-plugins-reference-information.html) | -| [Glue API: Shipment feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-shipment-feature-integration.html) | ShipmentGui migration guide | [HowTo: Add a new shipment method 2.0](/docs/scos/dev/tutorials-and-howtos/howtos/howto-add-a-new-shipment-method-2.0.html) | | -| | ManualOrderEntryGui migration guide | [HowTo: Import delivery methods linked to store](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/data-imports/howto-import-delivery-methods-linked-to-store.html) | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-method-plugins-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-method-plugins-reference-information.md deleted file mode 100644 index 36f7d6ac5a6..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-method-plugins-reference-information.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: "Shipment method plugins: reference information" -description: An optional plugin is linked to each shipping method. This topic provides an overview of the Availability, Price Calculation, and Delivery Time plugins. -last_updated: Oct 29, 2019 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/shipment-method-plugins -originalArticleId: 3e269e78-fd60-441a-a78f-a4aa0a513288 -redirect_from: - - /v1/docs/shipment-method-plugins - - /v1/docs/en/shipment-method-plugins - - /docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/reference-information-shipment-method-plugins.html -related: - - title: Shipment Module Overview - link: docs/scos/dev/feature-walkthroughs/page.version/shipment-feature-walkthrough/shipment-module-overview.html - - title: Migration Guide - Shipment - link: docs/scos/dev/module-migration-guides/migration-guide-shipment.html ---- - -The main concerns regarding shipping services are : - -* **Availability**: Is the shipping method available to deliver the order? -* **Price**: How is the delivery price calculated ? -* **Delivery time**: When will the order be delivered ? - -For each of these concerns, an optional plugin is linked to each shipping method : - -* **Availability Plugin**: Returns a boolean value which implies if the active shipping method is available and should be visible to the customers in the list of available shipping services. -* **Price Calculation Plugin**: Shipping services can consider different criteria in calculating the price for delivery (such as size of the package, weight, etc.). When a price plugin is paired to a shipping method, the related Zed Admin UI preconfigured prices are omitted. -* **Delivery Time Plugin**: The estimated delivery time information of the purchased items is important for the customers. The delivery time can vary depending on region, shipping service type, or day of week. Delivery time is measured in seconds as integer (for example,1 day = 86400; 5 days = 5 * 86400). - -## Availability Plugin - -For each availability plugin linked to a shipment method, a class with the same name must exist on the project side in the Shipment module (`Pyz/Zed/Shipment/Communication/Plugin/Availability`). - -The class must implement `ShipmentMethodAvailabilityPluginInterface` and must extend the `AbstractPlugin` class, as in the example below : - -```php - new YourAvailabilityPlugin(), - ]; -} - -/** - * @param Container $container - * - * @return array - */ -protected function getPricePlugins(Container $container) -{ - return [ - 'Plugin name visible in form' => new YourPricePlugin(), - ]; -} - -/** - * @param Container $container - * - * @return array - */ -protected function getDeliveryTimePlugins(Container $container) -{ - return [ - 'Plugin name visible in form' => new YourDeliveryTimePlugin(), - ]; -} -``` - -We value people who contribute to improvement of our documentation: - -* Thank you to: [Eugen Mielke](https://github.com/eug3n) for taking the time to provide us with your feedback (August 2018). - -{% info_block warningBox %} -You too can be credited in our documentation by stating that you wish to be mentioned when you send us feedback. Click "Edit on Github" (top right -{% endinfo_block %} to send feedback for this page.) diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-module-overview.md b/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-module-overview.md deleted file mode 100644 index 2b37b18084d..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/shipment-feature-walkthrough/shipment-module-overview.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: Shipment Module Overview -description: The main concepts regarding shipping that are modeled in the database are shipment carrier and shipment method. -last_updated: Jul 29, 2020 -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/shipment-module-overview -originalArticleId: 37041f6b-f7a2-4f72-9758-f897e4102d92 -redirect_from: - - /v1/docs/shipment-module-overview - - /v1/docs/en/shipment-module-overview -related: - - title: "Reference information: Shipment method plugins" - link: docs/scos/dev/feature-walkthroughs/page.version/shipment-feature-walkthrough/reference-information-shipment-method-plugins.html - - title: Migration Guide - Shipment - link: docs/scos/dev/module-migration-guides/migration-guide-shipment.html ---- - -The main concepts regarding shipping that are modeled in the database are : - -* shipment carrier -* shipment method - -The schema below shows how the sales order and shipment method entities are modeled in the database: -![Shipment Module schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shipment/Shipment+Module+Overview/shipment_method_database_schema_2.png) - -A sales order has an associated sales shipment entity which has an associated sales expense. The values of these entities are calculated and stored during the creation of the sales order, using the current state of shipment method, shipment method plugins, shipment method price, shipment carrier, and tax set data. - -Note: The sales order can have additional, not shipment-related expenses. - -For a shipment carrier, the following information must be entered from the Zed Admin UI: - -* **Glossary key name** - ID of the glossary key that holds the name of the shipment carrier (internationalization purpose) -* **Name** - name of the shipment carrier -* **Is Active** - if this flag is set to false, then the shipment methods linked to the current shipment carrier are also disabled - -Multiple shipment methods can be added to a shipment carrier. For each shipment method the following details must be entered from the Back Office: - -* **Tax Set** - shipment method must have an associated tax rate -* **Glossary Key Name** - ID of the glossary key that holds the name of the shipment method (internationalization purpose) -* **Glossary Key Description** - ID of the glossary key that holds the description of the shipment method (internationalization purpose) -* **Name** - name of the shipment method -* **Price** -* **Is Active** - flag that allows to disable/enable the shipment method - -Additional behaviors can be attached to a shipment method from the Back Office: - -* **Availability Plugin** - name of the plugin that checks the availability for this shipment method -* **Delivery Time Plugin** - name of the plugin that can calculate the delivery time for this shipment method -* **Price Calculation Plugin** - name of the plugin that can calculate the price for this shipment method - -{% info_block errorBox %} -For each glossary key linked to a shipment carrier or methods, the corresponding entry for each locale configured in the application must be added to the glossary keys. -{% endinfo_block %} - -For more information about the shipment method plugins, see [Shipment Methods Plugins](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shipment-feature-walkthrough/shipment-method-plugins-reference-information.html). - -## Discounts Based on Shipment - -It is possible to create a discount rule based on a shipment carrier, a shipment method or a shipment price. - -To have a discount calculated based on a shipment method, select the shipment-method rule in the discount UI, **Discount calculation**. Then the discount will be applied only to the shipment expense with the chosen method. You could also select shipment-method rule for **Conditions** to define that your discount will be applied only when the order will be delivered by the chosen method. - -The same approach works for a carrier (shipment-carrier) and a price(shipment.price). You could combine these rules together based on your requirements. - -Follow the steps below to activate this feature: - -1. Install ShipmentDiscountConnector module in your project. -2. Activate the Decision rule and the Collector plugins in `\Pyz\Zed\Discount\DiscountDependencyProvider`: - -```php - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/shopping-lists-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/shopping-lists-feature-walkthrough.md deleted file mode 100644 index a180cbf9654..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/shopping-lists-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Shopping Lists feature walkthrough -last_updated: Aug 20, 2021 -description: The Shopping Lists feature allows customers to create and share multiple lists of products between company business units or single users. Shopping lists can be shared between users with different sets of permissions. -template: concept-topic-template ---- - -The _Shopping Lists_ feature allows customers to create and share multiple lists of products between company business units or single users. Shopping lists can be shared between users with different sets of permissions. - - -To learn more about the feature and to find out how end users use it, see [Shopping Lists](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-lists-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | GLUE API GUIDES | -|---------|---------| -| [Shopping Lists feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/shopping-lists-feature-integration.html) | [Managing shopping lists](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shopping-lists-feature-walkthrough.html) | -| [Glue API: Shopping Lists feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-shopping-lists-feature-integration.html) | [Managing shopping list items](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-shopping-lists/managing-shopping-list-items.html) | -| [Prices feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/prices-feature-integration.html) | | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/spryker-core-back-office-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/spryker-core-back-office-feature-walkthrough.md deleted file mode 100644 index 18c64635eba..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/spryker-core-back-office-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Spryker Core Back Office feature walkthrough -last_updated: The Spryker Core Back Office feature adds a comprehensive, intuitive administration area -description: -template: concept-topic-template ---- - -The _Spryker Core Back Office_ feature adds a comprehensive, intuitive administration area that provides the product and content management capabilities, categories and navigation building blocks, search and filter customizations, barcode generator, order handling, company structure creation (for B2B users), merchant-buyer contracts' setup. - - - - -## Related Developer documents - -|INSTALLATION GUIDES | REFERENCES| -|---------|---------| -| [Spryker Core Back Office feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-back-office-feature-integration.html) | [Back Office Translations overview](/docs/scos/user/features/{{page.version}}/spryker-core-back-office-feature-overview/back-office-translations-overview.html) | -| [Microsoft Azure Active Directory](/docs/scos/dev/feature-integration-guides/{{page.version}}/microsoft-azure-active-directory.html) | [Users and rights overview](/docs/scos/dev/feature-walkthroughs/{{page.version}}/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.md deleted file mode 100644 index 8647412c361..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Users and rights overview -last_updated: Aug 20, 2021 -description: User and rights management is a general term that describes the security functionality for controlling user access to perform various roles throughout the system -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/permission-acl-management -originalArticleId: 3130e307-e706-4ed7-8f26-49048ca96a3d -redirect_from: - - /v1/docs/permission-acl-management - - /v1/docs/en/permission-acl-management - - /docs/scos/dev/feature-walkthroughs/201811.0/customer-account-management-feature-walkthrough/user-and-rights-overview.html ---- - -User and rights management is a general term that describes the security functionality for controlling user access to perform various roles throughout the system. - -In the Spryker Commerce OS user and rights management is implemented in the following three bundles: - -* ACL—ACL stands for Access Control List. This is where you can manage your roles, groups, privileges and resources. -* Auth—manages the authorization of a specific user by returning true or false if the credentials are allowed to access the system or not. It is used for login, logout, and used by the login controller to verify if a given user token is authenticated. Login is authenticated with a form or a header (via token). Auth is also used to validate that Zed has authorization to process incoming requests from Yves or 3rd parties such as payment providers. -* User—allows to create users and assign them to groups. Each group contains a set of roles. - -## Users and customers - -It is important to distinguish between users and customers. A user works with the back-end side of the store and handles the store maintenance such as creating users and assigning them to roles that will allow them to perform actions such as editing the CMS, activating and deactivating products and managing discounts. A customer on the other hand is the final consumer of the online store for example, the person who places orders. Customers are also managed in Zed but in a different section. - -Users are assigned to groups. Groups are a collection of Roles e.g. customer-care, root, 3rd party etc. Roles have Resources (rules) assigned to them. Resources (rules) are used to assign specific privileges to a Role for example, a Sales Representative Role or a System Administrator Role. Resources are always /module/controller/action and you can use * as placeholder. - -* `/customer/*/*` would mean everything in /customer. -* `/customer/view/*` would mean a user can only see customers but can’t edit them. - -## Managing users - -The Auth, ACL and User bundles are configured and managed through the Zed user interface. Bundles correspond with the tabs in Zed. You can find which name you should place here from the file `/project/config/Zed/navigation.xml` - -Also, you can find bundle names as well as controllers and actions in the file `communication/navigation.xml`. For example: - -![bundles_navigation.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/feature-walkthroughs/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.md/bundles_navigation.png) - -See [Managing users](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-users/creating-users.html) to learn how to create and manage users, groups, and roles. - - - -{% info_block infoBox "Adding users in the ACL module" %} - -You can add Zed users not only via the Back Office, but also in the ACL module. To do so, add the user in `/Spryker/Zed/Acl/AclConfig::getInstallerUsers()`(see [AclConfig.php](https://github.com/spryker/acl/blob/d3193c9259ed2f2b6815f3b2c9f52f4e4e250bbe/src/Spryker/Zed/Acl/AclConfig.php) for example) and run `console setup:init-db`. - -{% endinfo_block %} - -## ACL configuration - -Apart from being able to configure user access to Zed resources via Zed UI, you can grant access to additional resources by specifying them in `config_*.php`. The following options are used to do that: - -* `AclConstants::ACL_DEFAULT_RULES`—is used to provide/restrict access to Zed resources, defined in the `Spryker/Zed/Auth/AuthConfig::$ingorable` property. For example: - -```php -$config[AclConstants::ACL_DEFAULT_RULES] = [ - // .... - [ - 'bundle' => 'auth', - 'controller' => 'login', - 'action' => 'index', - 'type' => 'deny', - ], - // .... -]; -``` - -In the example, we restrict access for everyone to Zed login page. This option affects both logged-in and anonymous users. The key feature is the ability to restrict/provide access for anonymous users. - -* `AclConstants::ACL_USER_RULE_WHITELIST`—is used to provide additional access to Zed resources for all logged-in users. For example: - -```php -$config[AclConstants::ACL_USER_RULE_WHITELIST] = [ - // .... - [ - 'bundle' => 'application', - 'controller' => '*', - 'action' => '*', - 'type' => 'allow', - ], - // .... -]; -``` -In the example, we grant access to the Application module resources for all users. - -{% info_block warningBox "" %} - -With the configuration provided in the example, users are granted access to these resources regardless of ACL configuration in ZED UI. - -{% endinfo_block %} - - - -* `AclConstants::ACL_DEFAULT_CREDENTIALS`—is used to provide additional access to Zed resources for a specific user. For example: - -```php -$config[AclConstants::ACL_DEFAULT_CREDENTIALS] = [ - 'winner@spryker.com' => [ - 'rules' => [ - [ - 'bundle' => '*', - 'controller' => '*', - 'action' => '*', - 'type' => 'allow', - ], - ], - ], -] -``` - -In the example, we grant the user **winner@spryker.com** access to all Zed resources. To make it work, we should also add **winner@spryker.com** to this option: `UserConstants::USER_SYSTEM_USERS`. Here, a system user is any user who has additional ACL rules defined for them in `config_*.php` file. - -* Note that if there is at least one `allow` type for a resource, the user will have access to it in spite of having a `deny` type for the same resource. It works for `AclConstants::ACL_USER_RULE_WHITELIST`, `AclConstants::ACL_DEFAULT_CREDENTIALS` and rules configured via Zed UI, except for `AclConstants::ACL_DEFAULT_RULES` as it is handled before checking if user logged in or not. - - - -## If you are: - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/how-translations-are-managed.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/how-translations-are-managed.md deleted file mode 100644 index 1d5ef202a0b..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/how-translations-are-managed.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: How translations are managed -last_updated: Aug 20, 2021 -description: The key concept for rendering web pages with translated content very fast and with limited resource usage is using a key-value storage -template: concept-topic-template ---- - -The key concept for rendering web pages with translated content very fast and with limited resource usage is using a key-value storage. - -Yves has no connection to Zed’s SQL database and it fetches all dynamic data from a key-value storage(Redis) and a search engine(Elasticsearch). This data contains translations but also product information, product categories, URL mappings, stock information, image paths. - -Accessing the key-value storage (Redis) is faster than making a request to Zed’s SQL database. Also, by limiting the connections to the SQL database, the performance of the entire application is optimized. - -The localized content is added by using Zed’s Back Office user interface. For every configured locale, the Back Office user can add the corresponding resource such as translations or path to images. The changes are updated in the Zed’s SQL database. - -The diagram bellow pictures the DB schema for the tables in which the translations are being stored. -![Database schema with translations stored](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Internationalization/Glossary/How+Translations+are+Managed/glossary_kv_and_db.png) - -When the web application is first installed, the data stored in the Zed’s database is exported in the key-value storage (Redis) used by Yves. To assure that the key-value storage is in sync with the data stored in the SQL database, Queue processes will consume translation events and publish the data to key -value storage (Redis). These events will be triggered when a translation is created, updated or deleted. There is also a command that can be used for triggering the events manually in case of data refreshment: - -`console event:trigger -r translation` -If you lost your storage data, you can sync the published data to storage by calling this command: - -`console sync:data translation` - -The schema bellow summarizes the levels of persistence used in order to offer localized content into the front office interface (Yves). -![Levels of persistence](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Internationalization/Glossary/How+Translations+are+Managed/glossarykeyspersistence.png) - -## Command query separation - -We can consider the key-value storage as a denormalized model of the relational model stored in the Sql database and the request of rendering a page as a query that the user makes. Statistically, query requests are happening a lot more often than command requests ( such as checkout or submitting a payment) and using a dedicated storage for them brings a lot of speed in the application. - -Another advantage of using a denormalized model for displaying localized content is that we don’t have to do the transformations of the objects stored in the relational database when using them on the client side logic. - - diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/spryker-core-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/spryker-core-feature-walkthrough.md deleted file mode 100644 index b2e22fc4107..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/spryker-core-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Spryker Core feature walkthrough -last_updated: Aug 20, 2021 -description: The Spryker Core feature represents a set of basic modules representing the Spryker Commerce OS. -template: concept-topic-template ---- - -The _Spryker Core_ feature is a set of basic modules representing the Spryker Commerce OS. - - -To learn more about the feature and to find out how end users use it, see [Spryker Core](/docs/scos/user/features/{{page.version}}//spryker-core-feature-overview/spryker-core-feature-overview.html) for business users. - - -## Related Developer documents - -|INSTALLATION GUIDES | TUTORIALS AND HOWTOS | REFERENCES| -|---------|---------|---------| -| [Spryker Сore feature integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/spryker-core-feature-integration.html) | [Tutorial: Managing glossary key](/docs/scos/dev/tutorials-and-howtos/advanced-tutorials/tutorial-managing-glossary-keys.html) | [How translations are managed](/docs/scos/dev/feature-walkthroughs/{{page.version}}/spryker-core-feature-walkthrough/how-translations-are-managed.html) | -| | | [URL redirects overview](/docs/scos/dev/feature-walkthroughs/{{page.version}}/spryker-core-feature-walkthrough/url-redirects-overview.html) | -| | | [Vault for Tokens overview](/docs/scos/user/features/{{page.version}}/spryker-core-feature-overview/vault-for-tokens-overview.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/url-redirects-overview.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/url-redirects-overview.md deleted file mode 100644 index 9f057e38a42..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/url-redirects-overview.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: URL redirects overview -last_updated: Aug 20, 2021 -description: With URL redirects, you can create content redirects and increase your store's search engine visibility -template: concept-topic-template ---- - -With the URL redirects, you can create content redirects and increase your store's search engine visibility. Redirects can be store-internal or external and can reflect various HTTP status codes that play a major role in search engine ranking. Besides, redirects for the changed product, CMS pages, categories URLs are auto-generated. -A URL redirect is a special entity that consists of a source URL (which is provided by the `spy_url database` table), a target URL, and an HTTP status code stored in the `spy_url_redirect` database table. Redirects are exported to the key-value storage with collectors and are matched with StorageRouter the same way as described in the [URL](/docs/scos/dev/back-end-development/yves/url.html) article. `\Pyz\Yves\Redirect\Controller\RedirectController` in the Demo Shop, sends a redirect response to the target URL with the given status code. - -## Manual redirects - -In the Back Office, you can create custom URL redirects from not yet existing URLs to other internal or external URLs with different status codes. See [Creating CMS redirects](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/creating-cms-redirects.html) for details. - -## Automatic redirects - -When using URL module's public API (`UrlFacade`) to manage URLs, whenever a URL is modified, a new URL redirect is automatically created in the background from the old URL. This helps search engines and other external URLs pointing to the old URL find the content that was displayed there before. Thus, when URLs of products, CMS pages, categories, and even URL redirects change, their old URL will still live and point to a valid page they used to display. - -Since URL redirects are special URLs, whenever a non-redirect entity wants to take control over a URL that was redirected, it will be possible, so redirected URLs can be overtaken by other entities that need those URLs. diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/vault-for-tokens-overview.md b/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/vault-for-tokens-overview.md deleted file mode 100644 index 03a4667fc87..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/spryker-core-feature-walkthrough/vault-for-tokens-overview.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Vault for Tokens overview -last_updated: Aug 20, 2021 -description: This articles overviews Vault for Tokens, which provides the functionality to store sensitive data -template: concept-topic-template -redirect_from: - - /docs/scos/user/features/201811.0/spryker-core-feature-overview/vault-for-tokens-overview.html ---- - -Vault for Tokens provides the functionality to store sensitive data. This feature doesn't have any GUI and consists of two modules: _Spryker.UtilEncryption_ and _Spryker.Vault_. - -_Spryker.UtilEncryption_ provides data encryption / decryption functionality and _Spryker.Vault_ module uses this functionality to store and retrieve data from the database. - -![Module relations of Vault for Tokens](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Workflow+&+Process+Management/Vault+for+Tokens/Vault+for+Tokens+Feature+Overview/module-relations-vault-for-tokens.png) - -The database structure includes the following fields: - -* dataType -* dataKey -* data - -`dataType` and `dataKey` entries are used for the distinction between the provided data. Thus, multiple and various entries of data can be filtered and stored in the vault. - -The database fields are mandatory and should contain either an empty string or a string with value. - -By default, we provide encryption algorithm AES256. The encryption functionality won't be used until the `ENCRYPTION_KEY` is set in the project config file. You can change the encryption algorithm in the module config on the project level. - -The feature supports special characters and different [writing systems](https://en.wikipedia.org/wiki/Writing_system#Logographic_systems). diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-feature-walkthrough.md b/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-feature-walkthrough.md deleted file mode 100644 index bf31f6fe3c0..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-feature-walkthrough.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Tax feature walkthrough -last_updated: Aug 20, 2021 -description: "The Tax feature allows you to define taxes for the items you sell. The feature is represented by two entities: tax rates and tax sets" -template: concept-topic-template ---- - -The _Tax_ feature allows you to define taxes for the items you sell. The feature is represented by two entities: tax rates and tax sets. - - -To learn more about the feature and to find out how end users use it, see [Tax feature overview](/docs/scos/user/features/{{page.version}}/tax-feature-overview.html) for business users. - -## Related Developer documents - -| MIGRATION GUIDES | GLUE API GUIDES | DATA IMPORT | -|---|---|---| -|Tax migration guide | [Retrieving tax sets](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/abstract-products/retrieving-tax-sets.html) | [File details: tax.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-tax.csv.html) | | -| | | [File details: product_abstract.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/products/file-details-product-abstract.csv.html) | | -| | | [File details: product_option.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/product-options/file-details-product-option.csv.html) | | -| | | [File details: shipment.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-shipment.csv.html) | diff --git a/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-module-reference-information.md b/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-module-reference-information.md deleted file mode 100644 index 547df6159f3..00000000000 --- a/docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/tax-module-reference-information.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: "Tax module: reference information" -last_updated: Aug 20, 2021 -description: The Tax module is responsible for handling tax rates that can apply for products, product options or shipment. -template: feature-walkthrough-template -originalLink: https://documentation.spryker.com/v1/docs/tax-module -originalArticleId: a76f0e40-ec24-44a9-b563-e65dd9d7f176 -redirect_from: - - /v1/docs/tax-module - - /v1/docs/en/tax-module - - /docs/scos/dev/feature-walkthroughs/201811.0/tax-feature-walkthrough/reference-information-tax-module.html ---- - - -The Tax module is responsible for handling tax rates that can apply for products, product options, or shipment. - -## Overview - -The tax sets can have different tax rates for each country defined in your shop. You can see in the diagram below how these entities are modeled in the database. -![Database for tax sets](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Tax/Tax+Version+1.0/tax.png) - -A tax set is defined by a name and is uniquely identified by an `id`. As its name says, it’s associated to a set of rates. A tax rate is defined by a name, a numeric rate value and it’s linked to a country. - -All in one, a tax set contains of collection of tax rates that apply by country. - -The `SpyTaxSetTax` table is used to model the many-to-many relation between tax set and tax rate tables. - -{% info_block infoBox "Tax Related Entities" %} - -There are a couple of entities that have a tax set associated as a foreign key, such as abstract products, product options and shipment methods. - -{% endinfo_block %} - - -## TaxDefault class - -TaxDefault class contains two important operations: - -* `getDefaultTaxCountry()`—retrieves the default tax country from the configuration file (e.g.: Germany). -* `getDefaultTaxRate()`—retrieved the default tax rate from the configuration file (e.g.: 19%). - -These methods are called if the tax calculator cannot find the corresponding tax rate for one of the related entities. - -These methods can be extended on the project side, depending on your needs. - -## Calculator plugins - -Tax module ships with a set of calculator plugins, dedicated for calculating the taxes for each of the corresponding items in the QuoteTransfer. - -The calculators are called to recalculate the taxes every time the `addToCart()` method is called or the payment step is entered. If the customer has changed the country during the address step, this is not an issue because the tax rates are recalculated. - -### Calculator plugins for tax rates - -* `ProductItemTaxCalculatorsPlugin`—calculates tax rates based on `IdAbstractProduct` in the items contained in the QuoteTransfer (Tax module) -* `ProductIOptionTaxCalculatorsPlugin`—calculated tax rates based on `IdOptionValueUsage` for every product option of the items contained in the QuoteTransfer (ProductOption module) -* `ShipmentTaxCalculatorsPlugin`—calculates tax rates based on the shipment method set in the `QuoteTransfer` (Shipment module) - -The calculator plugins are registered in the `CalculationDependencyProvider:getCalculatorStack()` method. - -## Extending Tax module - -One of the most common use cases of extending the Tax module is to provide a custom calculator. - -In the coding example below, we’ll implement a calculator that uses a flat tax rate for all the products. - -The new calculator plugin must extend the `AbstractPlugin` class and implement the `CalculatorPluginInterface`. - -In Zed, inside the `Tax/Communication/Plugin/` folder, create the `FlatTaxRateCalculatorPlugin` class. - -```php -getFacade()->calculateProductItemTaxRate($quoteTransfer); - } -} -``` - -Next, implement the business logic; create `FlatTaxRateCalculator` inside the `Model` folder. - -```php -getFactory()->createFlatTaxRateCalculator()->recalculate($quoteTransfer); - } -} -``` - -Register the new plugin in the `CalculationDependencyProvide:getCalculatorStack()` method: - -```php -(); - - ngOnInit() { - // Logic that has to be done when component will be created - } - - componentSpecificMethod() {} -} -``` - -For more details about the components, use [official Angular documentation](https://angular.io/guide/architecture-components). diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/angular-services.md b/docs/scos/dev/front-end-development/202108.0/marketplace/angular-services.md deleted file mode 100644 index 87737f0a4f2..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/angular-services.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Angular Services -description: This document provides details about the Angular Services, and how to create and use them. -template: concept-topic-template -related: - - title: Angular Components - link: docs/scos/dev/front-end-development/page.version/marketplace/angular-components.html - - title: Web Components - link: docs/scos/dev/front-end-development/page.version/marketplace/web-components.html ---- - -This document describes what Angular Services are, how to create and use them. - -## Introduction - -The Angular Services are stateless objects which provide useful functionality. These functions can be invoked from any component of Angular, such as Components and Directives. It enables services to organize and share business logic, models, data and functions with other components of an Angular application and thus divide the web application into small, reusable logical units. A service typically encapsulates a particular aspect/function of the system (HTTP, part of business logic). -Using Angular Services methods, the data is maintained throughout the life of an application, that is, it is never refreshed and is always available. - -#### Component communication using Angular services - -You can use services to manage the state of a set of related components (such as the Redux pattern). Reusable Angular services can also be used to establish communication between two components. Components can be siblings or in a parent-child relationship. No matter what type of relationship exists, the services can be used to share data between components. All you need is public properties in the service class that one component sets and the other consumes, and vice versa. A service that acts as a bridge between two components has to be injected into both components. - -## How to Create a service - -To define a class as a service in Angular, the `@Injectable()` decorator is used. By providing metadata, Angular can inject it into a component as a dependency. Similarly, the `@Injectable()` decorator indicates that a component or other class (such as another service, a pipe, or a `NgModule`) has a dependency. To learn more information about `@Injectable()`, see [official Angular documentation](https://angular.io/api/core/Injectable). - -```ts -import { Injectable } from '@angular/core'; - -@Injectable({ - // Declares that this service should be created - // by the root application injector. - providedIn: 'root', -}) -export class SomeService { - reusableMethod(): void { - // ...some logic - } -} -``` - -## How to use service - -To use the service, you simply need to import it and inject it via DI in the constructor of either a Component or another Service. - -```ts -import { Component } from '@angular/core'; - -@Component({ - ..., -}) -export class ServiceConsumer { - constructor(private someService: SomeService) {} - - invokeServiceMethod(): void { - this.someService.reusableMethod(); - } -} -``` - -For more info about services, use [official Angular documentation](https://angular.io/guide/architecture-services). diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/building-the-project.md b/docs/scos/dev/front-end-development/202108.0/marketplace/building-the-project.md deleted file mode 100644 index 8610ffb5bd7..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/building-the-project.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Building the project -description: This document provides details how to build the frontend part of the Merchant Portal. -template: concept-topic-template -related: - - title: Project structure - link: docs/scos/dev/front-end-development/page.version/marketplace/project-structure.html - - title: Setting up the Merchant Portal - link: docs/scos/dev/front-end-development/page.version/marketplace/setting-up-the-merchant-portal.html ---- - -This document provides details how to build the frontend part of the Merchant Portal. - -## Overview -Spryker uses [webpack](https://webpack.js.org/guides/getting-started/) to build frontend. -At its core, webpack is a static module bundler for modern JavaScript applications. As webpack processes an application, it builds an internal dependency graph that maps every module that the project requires and generates one or more bundles. -- All related configs are located in the `/frontend/merchant-portal` folder. -- The built-in frontend stuff (css, fonts, images, js) is in the `/public/Backoffice/assets` folder. - -Modules for Merchant Portal are split into composer modules, and each module has its own application in the form of an Angular Module with Angular+Web Components. -Every module has an entry point called `entry.ts` that is collected during the build as webpack entries and included in the Merchant Portal build as a chunk. -Those chunk names are taken from the module name and then transformed into a `kebab-case`. - -General structure of the frontend modules in the Spryker Marketplace can be found in the [Module structure](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/project-structure.html#module-structure). - -The frontend of the Merchant Portal is built using the following commands: - -- default build - ```bash - yarn mp:build - ``` - -- build in the watch mode - ```bash - yarn mp:build:watch - ``` - -- production build - ```bash - yarn mp:build:production - ``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/extend-the-marketplace-frontend.md b/docs/scos/dev/front-end-development/202108.0/marketplace/extend-the-marketplace-frontend.md deleted file mode 100644 index 7b8e7e7687a..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/extend-the-marketplace-frontend.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Extending the project -description: This document provides details about how to extend the new project. -template: howto-guide-template -redirect_from: - - /docs/marketplace/dev/front-end/extending-the-project/index.html -related: - - title: Migration guide - Extending the project - link: docs/scos/dev/front-end-development/page.version/marketplace/extending-the-project/migration-guide-extending-the-project.html ---- - -To add additional frontend functionality beyond the one provisioned out-of-the-box, the project must be extended. - -This document can help you understand how you can extend the frontend project. - -## Prerequisites - -Prior to starting the project extension, verify that the marketplace modules are up-to-date as follows: - -| NAME | VERSION | -| ------------------------------------------- | --------- | -| ZedUi | >= 0.4.1 | -| DashboardMerchantPortalGui (optional) | >= 0.4.1 | -| MerchantProfileMerchantPortalGui (optional) | >= 0.7.1 | -| ProductMerchantPortalGui (optional) | >= 0.6.1 | -| ProductOfferMerchantPortalGui (optional) | >= 0.10.2 | -| SalesMerchantPortalGui (optional) | >= 0.8.1 | -| SecurityMerchantPortalGui (optional) | >= 0.4.2 | - -## Extending/customizing configuration modules - -There are several modules having global configuration in `app.module.ts `(for example,`LocaleModule`, `DefaultUnsavedChangesConfigModule`, `DefaultTableConfigModule`) that influence any component in each module. - -To extend/customize or override the default configuration, you must add a module with the proper static methods to the `app.module.ts` imports. Below, you can find an example with table configuration: - -```ts -@NgModule({ - imports: [ - BrowserModule, - BrowserAnimationsModule, - HttpClientModule, - DefaultMerchantPortalConfigModule, - - // Extend module on the project level - TableModule.withActions({ - action_name: SpecificActionService, - }) - - // Customize module on the project level - TableModule.withActions({ - already_used_action_name: ToOverrideActionService, - }) - ], - providers: [appBootstrapProvider()], -}) -export class AppModule {} -``` - -## Overriding / creating new angular components - -For webpack to compile project-based modules rather than vendor-based, `entry.ts` and `components.module.ts` must be created with the appropriate scaffolding (see [Module Structure](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/project-structure.html#module-structure) section). - -Default `entry.ts` should use the same code as vendor-level `entry.ts`. - -Add angular components in the app folder [Angular Components](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/angular-components.html). - -Add newly-created component `Module` and `Component` classes to the `components.module.ts`. - -`components.module.ts` overrides vendor `components.module.ts` with a list of custom web components. - -**DashboardMerchantPortalGui - vendor level** - -```ts -import { NgModule } from '@angular/core'; -import { ChipsComponent, ChipsModule } from '@spryker/chips'; -import { WebComponentsModule } from '@spryker/web-components'; - -import { DashboardCardComponent } from './dashboard-card/dashboard-card.component'; -import { DashboardCardModule } from './dashboard-card/dashboard-card.module'; -import { DashboardComponent } from './dashboard/dashboard.component'; -import { DashboardModule } from './dashboard/dashboard.module'; - -@NgModule({ - imports: [ - WebComponentsModule.withComponents([ - DashboardComponent, - DashboardCardComponent, - ChipsComponent, - ]), - ChipsModule, - DashboardModule, - DashboardCardModule, - ], - providers: [], -}) -export class ComponentsModule {} -``` - -**DashboardMerchantPortalGui** **- project level (any core component is overridden)** - -```ts -import { NgModule } from '@angular/core'; -import { ChipsComponent, ChipsModule } from '@spryker/chips'; -import { WebComponentsModule } from '@spryker/web-components'; -// Import from vendor -import { - DashboardComponent, - DashboardModule, -} from '@mp/dashboard-merchant-portal-gui'; - -import { OverridedDashboardCardComponent } from './overrided-dashboard-card/overrided-dashboard-card.component'; -import { OverridedDashboardCardModule } from './overrided-dashboard-card/overrided-dashboard-card.module'; - -import { NewComponent } from './new-component/new-component.component'; -import { NewModule } from './new-module/new-module.module'; - -@NgModule({ - imports: [ - WebComponentsModule.withComponents([ - DashboardComponent, - ChipsComponent, - - // Project - OverridedDashboardCardComponent, - NewComponent, - ]), - - ChipsModule, - DashboardModule, - - // Project - OverridedDashboardCardModule, - NewModule, - ], - providers: [], -}) -export class ComponentsModule {} -``` - -**DashboardMerchantPortalGui** **- project level** **(a new component to the core module is added)** - -```ts -import { NgModule } from '@angular/core'; -import { WebComponentsModule } from '@spryker/web-components'; -// Import from vendor -import { ComponentsModule as CoreComponentsModule } from '@mp/dashboard-merchant-portal-gui'; - -import { NewComponent } from './new-component/new-component.component'; -import { NewModule } from './new-module/new-module.module'; - -@NgModule({ - imports: [ - CoreComponentsModule, - WebComponentsModule.withComponents([NewComponent]), - - NewModule, - ], -}) -export class ComponentsModule {} -``` - -## Overriding twig files - -To use a `twig` file in your project, you must create a file with the same name and scaffolding as on the vendor level. For example, `ZedUi/Presentation/Layout/merchant-layout-main.twig`. - -All content used on the project level overrides the vendor. - -It is also possible to extend the vendor twig blocks. You need to extend the vendor file and declare existing blocks to accomplish this. - -**ZedUi/src/Spryker/Zed/ZedUi/Presentation/Example/example.twig - vendor level** - -```twig -{%- raw -%} -{% block headTitle %} - {{ 'Title' | trans }} -{% endblock %} - -// Any other content -{% endraw %} -``` - -**ZedUi/Presentation/Example/example.twig - project level** - -```twig -{%- raw -%} -{% extends '@Spryker:ZedUi/Example/example.twig' %} - -{% block headTitle %} - {{ 'Project Title' | trans }} -{% endblock %} -{% endraw %} -``` - -If a project file isn’t reflected in the browser, try to clean cache: - -```bash -console cache:empty-all -``` - -## Overriding CSS variables - -CSS variables can be overridden in any `.less`/`.css` file related to the Marketplace at the project level. - -Global override changes a variable for the whole project: - -- Variables in the root library - -```less -@border-radius-base: var(--spy-border-radius-base, 10px); -@green: var(--spy-green, #17b497); -``` - -- Overridden variables at the project level (for example, `src/Pyz/Zed/ZedUi/Presentation/Components/styles.less`) - -```less -:root { - --spy-border-radius-base: 15px; - --spy-green: green; -} -``` - -A partial override changes a variable for a specific scope (for example, inside a component): - -- Variable in the root library - -```less -@btn-padding-base: var( - --spy-btn-padding-base, - @btn-horizontal-vertical-base @btn-horizontal-padding-base -); -``` - -- Overridden variable at the project level - -```less -.mp-test-selector { - --spy-btn-padding-base: 10px 15px; - - // styles - ... -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/project-structure.md b/docs/scos/dev/front-end-development/202108.0/marketplace/project-structure.md deleted file mode 100644 index 036d7b9428b..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/project-structure.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Project structure -description: This document provides details about the structure of the frontend project in the Spryker Marketplace. -template: concept-topic-template -related: - - title: Building the project - link: docs/scos/dev/front-end-development/page.version/marketplace/building-the-project.html ---- - -This document explains the structure of the frontend project in the Spryker Marketplace. - -## Alias - -Use the alias `@mp/spryker-module-name` with the proper Spryker module name to import vendor Angular components, modules or services into .js files, for example, `import { registerNgModule } from '@mp/zed-ui'`. - -## Module structure - -Below you can find a general structure of every frontend module in the Spryker Marketplace: - -- MODULE_NAME - - src/Spryker/Zed/MODULE_NAME - - Presentation—this is the namespace where the marketplace frontend-related files are located. - - Components—all Angular files are located here. - - entry.ts—registers all Angular NgModules via `registerNgModule` from `@mp/zed-ui/app/registry` - - app—contains Angular components and services. - - components.module.ts—an Angular NgModule with components, such as web components (extends `CustomElementModule` from `@spryker/web-components`). - - public-api—exports all public components / modules / services / types / tokens. - - TWIG_FOLDER—a folder with twig view. - - mp.public-api.ts—exports the public-api file. - - package.json—adds `MODULE_NAME` specific packages. - -## Main entry points - -The following entry points are needed for the Angular config to build the frontend project. - -- ZedUi (Project) - - Presentation - - Components - - app - - app.module.ts—a module with the default configuration modules and bootstrap for the web-components. - - assets—all assets are located here. - - environment—this folder contains the base configuration file, `environment.ts`. - - index.html—entry for html file in the `angular.json` (not used for Spryker needs, exists for configuration only). - - main.ts—compiles the web-app and bootstraps the `AppModule` to run in the browser. - - polyfills.ts—used to provide modern functionality for older browsers that do not natively support it. - - styles.less—extends global styles. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/set-up-the-merchant-portal.md b/docs/scos/dev/front-end-development/202108.0/marketplace/set-up-the-merchant-portal.md deleted file mode 100644 index 170355c29df..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/set-up-the-merchant-portal.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Setting up the Merchant Portal -description: This document provides details about setting up Spryker Marketplace project. -template: howto-guide-template -related: - - title: Building the project - link: docs/scos/dev/front-end-development/page.version/marketplace/building-the-project.html ---- - -This document provides details about how to set up the Spryker Merchant Portal. - -## Prerequisites - -To start using Merchant Portal, install Spryker demo-shop: - -1. Use [this repository](https://github.com/spryker-shop/suite) for the Marketplace project installation. -2. Install the project using one of the following guides: - -* [Installing Spryker with Docker](/docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html) -* [Installing Spryker with Development Virtual Machine](/docs/scos/dev/set-up-spryker-locally/installing-spryker-with-development-virtual-machine/installing-spryker-with-development-virtual-machine.html) -* [Installing Spryker without Development Virtual Machine or Docker](/docs/scos/dev/set-up-spryker-locally/installing-spryker-without-development-virtual-machine-or-docker.html) - - -## Requirements - -To build Merchant Portal, install or update the following tools: - -- [Node.js](https://nodejs.org/en/download/)—minimum version is v12. -- [Yarn](https://classic.yarnpkg.com/en/docs/install/) - minimum version is 2.0.0 and maximum is 2.3.x. - -## Overview - -The main environmental differences between the existing frontends (Yves, Zed) and Merchant Portal are: - -- Minimum Node.js version is v12. -- npm is replaced by Yarn v2 with Workspaces. - -Using a "unified" approach, all frontend dependencies must be installed in one step - -- The entire project is now a "Yarn Workspace," meaning each submodule declares its dependencies. During the installation stage, Yarn installs all of those dependencies and hoists them up into the root of the project. - -## Install dependencies and build Merchant Portal - -```bash -yarn install -``` - -```bash -yarn mp:build -``` - -All possible commands are listed in the `package.json` file in the root folder. - -Once everything has been installed, you can access the UI of Merchant Portal by going to `$[local_domain]/security-merchant-portal-gui/login`. - -All Merchant Portal modules are located in the `/vendor/spryker/spryker` directory. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/index.md deleted file mode 100644 index 3b609e29446..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/index.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -title: Table Design -description: This document describes the Table Design in the Components Library. -template: concept-topic-template ---- - -This document describes the Table Design in the Components Library. - -## Overview - -A *Table Component* is an arrangement of data in rows and columns, or possibly in a more complex structure (with sorting, filtering, pagination, row selections, infinite scrolling). -It is an essential building block of a user interface. - -A basic Table Component is `` where `config` is: -- `dataSource`—the Datasource configuration from which the data is taken. -- `columns`—an array of columns configuration. - -```ts -const config: TableConfig = { - dataSource: { - // transforms input data via Data Transformer service - type: DatasourceType, - transform?: DataTransformerConfig, - }, - columns: [ - { id: 'col1', title: 'Column #1' }, - { id: 'col2', title: 'Column #2' }, - { id: 'col3', title: 'Column #3' }, - ], -}; -``` - -## Architecture - -Check out the table architecture diagram for better understanding: - -![Table Architecture](https://spryker.s3.eu-central-1.amazonaws.com/docs/Marketplace/dev+guides/Front-end/table-architecture.svg) - -### Configuration - -A Table Component is configured via [Table Configuration](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-configuration.html) that sets up how the table should behave and look like. - -### Datasources - -To render data, the Table must receive it via [Datasources](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/datasources/datasources.html) -that are registered by the user and then configured using the Table Configuration. - -### Features - -Every other piece of functionality is extracted into the [Table Feature](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-extension.html): - -- A *Table Feature* is an Angular Component that encapsulates a specific extension of the Core Table. -- Core Table contains specific placeholders in its view that Table Feature may target to render its piece of UI. -- Most of the common table functionality already exists as the Table Feature and may be used in the project. - -To use a Feature component, register an Angular Module that implements the `ModuleWithFeature` interface in the Root Module -using `TableModule.withFeatures()` under the key that serves as its configuration key: - -```ts -@NgModule({ - imports: [ - TableModule.withFeatures({ - pagination: () => import('@spryker/table.feature.pagination').then( - (m) => m.TablePaginationFeatureModule, - ), - }), - ], -}) -export class AppModule {} -``` - -### Columns - -Columns in a Table are defined by the [Column Type](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-extension.html) and rendered within the columns (text, image, link). -A new Column Type may be created and registered to the table. - -A Column component must implement `TableColumn` interface with the defined config and then be registered to the Root Module via `TableModule.withColumnComponents()`: - -```ts -@NgModule({ - imports: [ - TableModule.withColumnComponents({ - text: TableColumnTextComponent, - }), - - // Table Column Type Modules - TableColumnTextModule, - ], -}) -export class AppModule {} -``` - -### Filters - -A Table Component does not contain any filters a table usually has (filtering, searching). -The Core Table Component has just a view of the columns and data and has built-in sorting. - -To use [Filter components](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-filter-extension/table-filter-extension.html), the Table Module must implement a specific interface (TableConfig) and then be registered to the Root Module via `TableModule.withFilterComponents()`: - -```ts -@NgModule({ - imports: [ - TableFiltersFeatureModule.withFilterComponents({ - select: TableFilterSelectComponent, - }), - - // Table Filter Modules - TableFilterSelectModule, - ], -}) -export class AppModule {} -``` - -### Actions - -There is a way to trigger some [Actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/ui-components-library-actions.html) while user interacts with the Table. - -A few common Table Features that can trigger actions are available in the UI library: - -- [Row actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-row-actions.html)—renders a dropdown menu that contains actions applicable to the table row and on click triggers an Action which must be registered. -- [Batch actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html)—allows triggering batch/multiple actions from rows. - -## Interfaces - -The following interfaces are intended for the Table configuration: - -```ts -export interface TableColumn extends Partial { - id: string; - title: string; - displayKey?: string; - width?: string; - multiRenderMode?: boolean; - multiRenderModeLimit?: number; - emptyValue?: string; - sortable?: boolean; - searchable?: boolean; -} - -export interface TableColumnTypeDef { - type?: TableColumnType; - typeOptions?: TableColumnTypeOptions; - typeChildren?: TableColumnTypeDef[]; - typeOptionsMappings?: TableColumnTypeOptionsMappings; -} - -export interface TableColumnTypeOptions { - [key: string]: any; -} - -interface TableColumnTypeOptionsMappings { - // Map of option values to new values - [optionName: string]: Record; -} - -export interface TableColumnTypeRegistry { - // Key is type string—value is type config class - 'layout-flat': LayoutFlatConfig; -} - -export type TableColumnType = keyof TableColumnTypeRegistry; - -export interface TableHeaderContext { - config: TableColumn; - i: number; -} - -export interface TableColumnContext extends AnyContext { - value: TableDataValue; - displayValue?: unknown; - row: TableDataRow; - config: TableColumn; - i: number; - j: number; -} - -export interface TableColumnTplContext extends TableColumnContext { - $implicit: TableColumnContext['value']; -} - -export interface TableColumnComponent { - config?: C; - context?: TableColumnContext; -} - -export type TableColumnComponentDeclaration = { - [P in keyof TableColumnTypeRegistry]?: Type>; -}; - -export type TableColumns = TableColumn[]; - -export type TableDataValue = unknown | unknown[]; - -export type TableDataRow = Record; - -export interface TableData { - data: T[]; - total: number; - page: number; - pageSize: number; -} - -export interface TableConfig { - dataSource: DatasourceConfig; - columnsUrl?: string; - columns?: TableColumns; - - // Features may expect it's config under it's namespace - [featureName: string]: TableFeatureConfig | unknown; -} - -export type ColumnsTransformer = ( - cols: TableColumns, -) => Observable; - -export type TableDataConfig = Record; - -export interface SortingCriteria { - sortBy?: string; - sortDirection?: 'asc' | 'desc'; -} - -export type TableEvents = Record void) | undefined>; - -export interface TableComponent { - tableId?: string; - config?: TableConfig; - events: TableEvents; - config$: Observable; - columns$: Observable; - data$: Observable; - isLoading$: Observable; - tableId$: Observable; - features$: Observable[]>; - tableElementRef: ElementRef; - injector: Injector; - updateRowClasses(rowIdx: string, classes: Record): void; - setRowClasses(rowIdx: string, classes: Record): void; - on(feature: string, eventName?: string): Observable; - findFeatureByName(name: string): Observable; - findFeatureByType( - type: Type, - ): Observable; -} - -export enum TableFeatureLocation { - top = 'top', - beforeTable = 'before-table', - header = 'header', - headerExt = 'header-ext', - beforeRows = 'before-rows', - beforeColsHeader = 'before-cols-header', - beforeCols = 'before-cols', - cell = 'cell', - afterCols = 'after-cols', - afterColsHeader = 'after-cols-header', - afterRows = 'after-rows', - afterTable = 'after-table', - bottom = 'bottom', - hidden = 'hidden', -} - -export interface TableRowActionRegistry { - // Key is action string—value is action options type -} - -export type TableRowAction = keyof TableRowActionRegistry; - -export interface TableRowActionHandler { - handleAction(actionEvent: TableActionTriggeredEvent): void; -} - -export interface TableRowActionsDeclaration { - [type: string]: TableRowActionHandler; -} - -export interface TableRowClickEvent { - row: TableDataRow; - event: Event; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/index.md deleted file mode 100644 index 38d9b1fa4fd..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/index.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Table Column Type extension -description: This document provides details about the Table Column Type extension in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type extension in the Components library. - -## Overview - -Column Type is an Angular Component that describes how a specific type of the column is rendered within a table column. - -Check out the following example to see how to configure columns in the table config: - -```html - - -``` - -## Main Services/Decorators/Components - -Using the table module, any table column can be registered by key via the static method `TableModule.withColumnComponents()`. -It assigns the object of columns to the `TableColumnComponentsToken` under the hood. - -### ColumnTypeOption decorator - -By using the `ColumnTypeOption` decorator, properties of columns can be validated at runtime. The `ColumnTypeOptions` interface shows all the properties. - -### TableColumnTypeComponent decorator - -The `TableColumnTypeComponent` decorator merges the default config parameters from the argument with the dynamic config parameters from the table. - -## TableColumnRendererComponent - -The `TableColumnRendererComponent` is used by the table to render each column based on the configuration and data. - -## Table Column - -As an Angular Component, Table Column must implement specific interface (`TableColumnTypeComponent`) and be registered on the Table Module via its `TableModule.withColumnComponents()` method by passing a string that will be associated with it when rendering. - -It is also necessary to create your own column module and add it to the RootModule. - -```ts -// Module augmentation -import { - ColumnTypeOption, - TableColumnTypeComponent, - TableColumnComponent, - TableColumnContext, -} from '@spryker/table'; - -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - custom: CustomTableColumnConfig; - } -} - -// Component implementation -@Injectable({ providedIn: 'root' }) -export class CustomTableColumnConfig { - @ColumnTypeOption({ - type: ColumnTypeOptionsType.AnyOf, - value: [String, Boolean], - }) - customOption? = 'customOption'; -} - -// Module -@NgModule({ - ..., - declarations: [CustomTableColumnComponent], - exports: [CustomTableColumnComponent], -}) -export class CustomTableColumnModule {} - -// Component -@Component({ - ... -}) -@TableColumnTypeComponent(TableColumnTextConfig) -export class CustomTableColumnComponent - implements TableColumnComponent { - @Input() config?: CustomTableColumnConfig; - @Input() context?: TableColumnContext; -} - -// Root module -@NgModule({ - imports: [ - TableModule.withColumnComponents({ - custom: CustomTableColumnComponent, - }), - CustomTableColumnModule, - ], -}) -export class RootModule {} -``` - -### Context interpolation - -Check out an example of getting a Table Column config value from the context: - -```ts -// Module -import { ContextModule } from '@spryker/utils'; - -@NgModule({ - imports: [CommonModule, ContextModule], - exports: [CustomTableColumnModule], - declarations: [CustomTableColumnModule], -}) -export class CustomTableColumnModule {} - -// Component -@Injectable({ providedIn: 'root' }) -export class CustomTableColumnConfig { - @ColumnTypeOption() - propName? = this.contextService.wrap('displayValue'); - - constructor(private contextService: ContextService) {} -} -``` - -```html -// Usage -
-``` - -## Interfaces - -Below you can find interfaces for the Table Column Type extension configuration. - -```ts -export interface TableColumnComponent { - config?: C; - context?: TableColumnContext; -} - -export interface ColumnTypeOptions { - /** Is it required */ - REQUIRED: boolean; - /** Expected type. Specify exact type in {@link value} prop */ - type?: ColumnTypeOptionsType; - /** Value type. See {@link ColumnTypeOptionsType} for more details. - * May be recursive for some types */ - value?: unknown | ColumnTypeOptions; -} - -export enum ColumnTypeOptionsType { - /** Value will be compared with strict equality */ - Literal = 'literal', - /** Value must be any Javascript type (String, Number) */ - TypeOf = 'typeOf', - /** Value will be compared with every array item. May be recursive */ - ArrayOf = 'arrayOf', - /** Value must be an array of other types. May be recursive */ - AnyOf = 'anyOf', -} -``` - -## Table Column types - -UI library comes with a number of standard column types that can be used on any project: - -- [Autocomplete](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html) - renders `@spryker/input` and `@spryker/autocomplete` components. -- [Chip](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-chip.html) - renders `@spryker/chip` component. -- [Date](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-date.html) - renders a formatted date by `config`. -- [Dynamic](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html) - is a higher-order column that gets `ColumnConfig` from the configured `Datasource` and renders a column with the retrieved `ColumnConfig`. -- [Image](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-image.html) - renders an image. -- [Input](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-input.html) - renders `@spryker/input` component. -- [List](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-list.html) - renders a list of column types. -- [Select](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-select.html) - renders `@spryker/select` component. -- [Text](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-text.html) - renders a static text. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-autocomplete.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-autocomplete.md deleted file mode 100644 index 0f66e917ced..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-autocomplete.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Table Column Type Autocomplete -description: This document provides details about the Table Column Type Autocomplete in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Autocomplete in the Components library. - -## Overview - -Table Column Autocomplete is an Angular Component that renders an autocomplete field using the `@spryker/input` and `@spryker/autocomplete` components. - -Check out an example usage of the Table Column Autocomplete in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - autocomplete: TableColumnAutocompleteConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - autocomplete: TableColumnAutocompleteComponent, - }), - TableColumnAutocompleteModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Autocomplete: - -```ts -interface AutocompleteValue { - value: unknown; - title: string; - isDisabled?: boolean; -} - -interface DataTransformerConfig { - type: string; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} - -interface DatasourceConfig { - type: string; - transform?: DataTransformerConfig; - - // Specific Datasource types may have custom props - [k: string]: unknown; -} - -interface TableColumnAutocompleteConfig { - /** Bound to the @spryker/autocomplete inputs */ - options: AutocompleteValue[]; - datasource?: DatasourceConfig; - /** Bound to the @spryker/input inputs */ - value?: any; - type: string; // 'text' - by default - placeholder?: string; - prefix?: string; - suffix?: string; - outerPrefix?: string; - outerSuffix?: string; - attrs?: Record; - /** Bound to the @spryker/form-item input */ - editableError?: string | boolean; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-chip.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-chip.md deleted file mode 100644 index 94313841e8b..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-chip.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Table Column Type Chip -description: This document provides details about the Table Column Type Chip in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Chip in the Components library. - -## Overview - -Table Column Chip is an Angular Component that renders a chip using the `@spryker/chips` component. - -Check out an example usage of the Table Column Chip in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - chip: TableColumnChipConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - chip: TableColumnChipComponent, - }), - TableColumnChipModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Chip: - -```ts -interface TableColumnChipConfig { - /** Bound to the @spryker/chips inputs */ - text?: string; - color?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-date.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-date.md deleted file mode 100644 index ae23a749b42..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-date.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Table Column Type Date -description: This document provides details about the Table Column Type Date in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Date in the Components library. - -## Overview - -Table Column Date is an Angular Component that renders formatted date using Angular built-in Date Pipe. - -Check out an example usage of the Table Column Date in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - date: TableColumnDateConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - date: TableColumnDateComponent, - }), - TableColumnDateModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Date: - -```ts -interface TableColumnDateConfig { - date?: Date; - format?: string; // 'shortDate' - by default -} -``` - -To learn more about the pre-defined `format` options, see [official Angular documentation](https://angular.io/api/common/DatePipe#pre-defined-format-options). diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-dynamic.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-dynamic.md deleted file mode 100644 index ed5448f72b6..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-dynamic.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Table Column Type Dynamic -description: This document provides details about the Table Column Type Dynamic in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Dynamic in the Components library. - -## Overview - -Table Column Dynamic is an Angular Component that renders a dynamic Table Column Type from a config retrieved via `@spryker/datasource`. - -Check out an example usage of the Table Column Dynamic in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - dynamic: TableColumnDynamicConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - dynamic: TableColumnDynamicComponent, - }), - TableColumnDynamicModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Dynamic: - -```ts -interface DataTransformerConfig { - type: string; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} - -interface DatasourceConfig { - type: string; - transform?: DataTransformerConfig; - - // Specific Datasource types may have custom props - [k: string]: unknown; -} - -interface TableColumnDynamicDatasourceConfig implements DatasourceConfig { - type: string; - [k: string]: unknown; -} - -interface TableColumnDynamicConfig { - datasource: TableColumnDynamicDatasourceConfig; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-image.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-image.md deleted file mode 100644 index 674c384da5d..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-image.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Table Column Type Image -description: This document provides details about the Table Column Type Image in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Image in the Components library. - -## Overview - -Table Column Image is an Angular Component that renders an image. - -Check out an example usage of the Table Column Image in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - image: TableColumnImageConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - image: TableColumnImageComponent, - }), - TableColumnImageModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Image: - -```ts -interface TableColumnImageConfig { - src?: string; - alt?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-input.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-input.md deleted file mode 100644 index 228f596b5a8..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-input.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Table Column Type Input -description: This document provides details about the Table Column Type Input in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Input in the Components library. - -## Overview - -Table Column Input is an Angular Component that renders a field using the `@spryker/input` component. - -Check out an example usage of the Table Column Input in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - input: TableColumnInputConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - input: TableColumnInputComponent, - }), - TableColumnInputModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Input: - -```ts -interface TableColumnInputConfig { - /** Bound to the @spryker/input inputs */ - type: string; // 'text' - by default - value?: any; - placeholder: string; - prefix?: string; - suffix?: string; - outerPrefix?: string; - outerSuffix?: string; - attrs?: Record; - /** Bound to the @spryker/form-item input */ - editableError?: string | boolean; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-list.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-list.md deleted file mode 100644 index ce501d34afc..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-list.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Table Column Type List -description: This document provides details about the Table Column Type List in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type List in the Components library. - -## Overview - -Table Column List is an Angular Component that provides a list of Table Column components with defined types via the `table-column-renderer` component and displays two columns by default, with the rest appearing in the `@spryker/popover` component. - -Check out an example usage of the Table Column List in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - list: TableColumnListConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - list: TableColumnListComponent, - }), - TableColumnListModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column List: - -```ts -interface TableColumnListConfigInner { - type?: string; - typeOptions?: Object; - typeChildren?: TableColumnListConfigInner[]; -} - -interface TableColumnListConfig extends TableColumnListConfigInner { - limit: number; // 2 - by default -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-select.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-select.md deleted file mode 100644 index 54a92fe7ae1..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-select.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Table Column Type Select -description: This document provides details about the Table Column Type Select in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Text - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-text.html ---- - -This document explains the Table Column Type Select in the Components library. - -## Overview - -Table Column Select is an Angular Component that renders a drop-down list using the `@spryker/select` component. - -Check out an example usage of the Table Column Select in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - select: TableColumnSelectConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - select: TableColumnSelectComponent, - }), - TableColumnSelectModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Select: - -```ts -type SelectValue = string | number; -type SelectOption = SelectValue | SelectOptionItem; - -interface SelectOptionItem { - title: string; - value: SelectValue; - isDisabled?: boolean; -} - -interface DataTransformerConfig { - type: string; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} - -interface DatasourceConfig { - type: string; - transform?: DataTransformerConfig; - - // Specific Datasource types may have custom props - [k: string]: unknown; -} - -interface ColumnSelectDataTransformer implements DataTransformerConfig { - type: string; - [k: string]: unknown; -} - -interface ColumnSelectDatasource implements DatasourceConfig { - type: string; - transform?: ColumnSelectDataTransformer; - [k: string]: unknown; -} - -interface TableColumnSelectConfig { - /** Bound to the @spryker/select inputs */ - options: (SelectOption | ColumnSelectOptionItem)[]; - value?: SelectValue; - multiple?: boolean; // false - by default - search?: boolean; // false - by default - disableClear?: boolean; // false - by default - placeholder?: string; - showSelectAll?: boolean; // false - by default - selectAllTitle?: string; - noOptionsText?: string; - datasource?: ColumnSelectDatasource; - /** Bound to the @spryker/form-item input */ - editableError?: string | boolean; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-text.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-text.md deleted file mode 100644 index 387c2518cb7..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-column-types/table-column-type-text.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Table Column Type Text -description: This document provides details about the Table Column Type Text in the Components Library. -template: concept-topic-template -related: - - title: Table Column Type extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-extension.html - - title: Table Column Type Autocomplete - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-autocomplete.html - - title: Table Column Type Chip - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-chip.html - - title: Table Column Type Date - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-date.html - - title: Table Column Type Dynamic - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-dynamic.html - - title: Table Column Type Image - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-image.html - - title: Table Column Type Input - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-input.html - - title: Table Column Type List - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-list.html - - title: Table Column Type Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-column-type-extension/table-column-type-select.html ---- - -This document explains the Table Column Type Text in the Components library. - -## Overview - -Table Column Text is an Angular Component that renders text. - -Check out an example usage of the Table Column Text in the `@spryker/table` config: - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableColumnTypeRegistry { - text: TableColumnTextConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withColumnComponents({ - text: TableColumnTextComponent, - }), - TableColumnTextModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Table Column Text: - -```ts -interface TableColumnTextConfig { - text?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-configuration.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-configuration.md deleted file mode 100644 index 9958e17f871..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-configuration.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Table Configuration -description: This document provides details about the table configuration. -template: concept-topic-template ---- - -This document provides details about how to configure the table. - -## Overview - -Using Table Configuration you can customize the behavior of the table based on your specific use case. - -Table config has two required sections: - -- [Columns](#columns-configuration) definition that describes what columns user will see and what data to expect. -- [Datasource](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/datasources/datasources.html) type that describes how the data should be provided to a table. - -The rest of the sections are reserved for features (like Pagination, which describes pagination section and its properties). - -```html - - -``` - -### Columns configuration - -You can configure columns with two properties. By using `url`, you can get a dynamic list of columns. In this case, the `columnsUrl` property should be assigned to the `table` configuration. - -The columns data can also be defined as a static array of columns objects assigned to the `columns` property. - -#### Column config example - -Check out the example of the column configuration: - -```ts -[ - // chip - { - id: 'stock', - title: 'Stock', - type: 'chip', - typeOptions: { - color: 'green', - }, - typeOptionsMappings: { - color: {0: 'red'}, - }, - }, - // chips - { - id: 'status', - type: 'chips', - typeOptions: { - text: '${value}', - color: 'red', - }, - typeOptionsMappings: { - text: { - 'true': 'Active', - 'false': 'Inactive', - }, - color: {'true': 'green'}, - }, - }, - // select - { - id: 'store', - type: 'select', - typeOptions: { - multiselect: bool, - values: [ - {value: 1, title: 'DE'}, - {value: 2, title: 'AT'}, - ], - }, - }, - // input - { - id: 'gross_price', - type: 'input', - typeOptions: { - type: '|text|number|tel', - placeholder: '0.00', - readOnly: bool, - }, - }, -] -``` - -## Type options interpolation and mapping - -Table Column config supports interpolation. Variables inside curly brackets (e.g `${value}, ${row.title}...`) in the `typeOptions` object are replaced with the appropriate table context value. - -Below is the complete table context: - -```ts -interface TableColumnTplContext extends TableColumnContext { - $implicit: TableColumnContext['value']; -} - -interface TableColumnContext { - value: TableDataValue; - row: TableDataRow; - config: TableColumn; - i: number; - j: number; -} - -interface TableColumn extends Partial { - id: string; - title: string; - width?: string; - multiRenderMode?: boolean; - multiRenderModeLimit?: number; - emptyValue?: string; - sortable?: boolean; - searchable?: boolean; -} - -type TableDataRow = Record; - -type TableDataValue = unknown | unknown[]; -``` - -In addition, Table Column supports overriding defined *typeOptions* properties based on the value of the table column. As a result, the `typeOptionsMappings` object should be added where the `typeOption` key and all variants are defined. - -```ts -typeOptionsMappings: { - TYPE_OPTION_KEY: { TABLE_COLUMN_VALUE: DESIRED_VALUE_1, TABLE_COLUMN_VALUE: DESIRED_VALUE_2 }, -}, -``` - -```ts -... -typeOptions: { - text: '${value}', - color: 'red', -}, -typeOptionsMappings: { - text: { col3: 'Active', 'false': 'Inactive' }, - color: { col3: 'green'} -}, -... - -// Possible showed table `text` and `color` variants: -// text—'Active' and color—'green'—if table column value is `col3` -// text—'Inactive' and default color('red')—if table column value is `false` -// default text(table column value) and default color('red')—in other cases -``` - -To get more details about the table columns, see [Column Types](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-extension.html). - -## Interfaces - -Below you can find interfaces for the Table: - -```ts -export interface TableConfig { - dataSource: DatasourceConfig; - columnsUrl?: string; - columns?: TableColumns; - - // Features may expect it's config under it's namespace - [featureName: string]: TableFeatureConfig | unknown; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/index.md deleted file mode 100644 index 73ae4b08587..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/index.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Table Feature extension -last_updated: Jun 07, 2021 -description: This document provides details about the Table Feature extension in the Components Library. -template: concept-topic-template -related: - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature extension in the Components Library. - -## Overview - -The table has the ability to add custom features/components to the defined table locations (`TableFeatureLocation`). By default, the table has a simplified view. However, you can embed additional components to the specified locations and extend the table (title, pagination, totals). - -A Table Feature is an Angular Component encapsulating a piece of UI that is targeted to a specific location within a Table Component or that may provide additional functionality. - -The Table Feature must extend a specific Angular Component (`TableFeatureComponent`) and provide itself as a `TableFeatureComponent` via `ExistingProvider` in the registry. - -```ts -// Module augmentation -import { TableFeatureConfig } from '@spryker/table'; - -declare module '@spryker/table' { - interface TableConfig { - custom?: TableCustomFeatureConfig; - } -} - -export interface TableCustomFeatureConfig extends TableFeatureConfig {} - -// Component implementation -// Module -import { ModuleWithFeature, TableFeatureModule } from '@spryker/table'; - -@NgModule({ - imports: [CommonModule, TableFeatureModule], - exports: [TableCustomFeatureComponent], - declarations: [TableCustomFeatureComponent], -}) -export class TableCustomFeatureModule implements ModuleWithFeature { - featureComponent = TableCustomFeatureComponent; -} - -// Component -@Component({ - selector: 'spy-table-custom-feature', - ..., - providers: [ - { - provide: TableFeatureComponent, - useExisting: TableCustomFeatureComponent, - }, - ], -}) -export class TableCustomFeatureComponent extends TableFeatureComponent< - TableCustomFeatureConfig -> {} -``` - -```html - - COMPONENT MARKUP - -``` - -## Usage and registration - -There are two ways to use the Table Feature: - -- Via HTML tag (as a component) being projected into the Table Component—this lets users control how the Table Feature is loaded on the page, but it does not control its loading from the Table Configuration. - - ```html - - - - ``` - - To add a feature via HTML, it's enough to include a feature tag with a custom attribute (`spy-table-feature`) inside a table. When the table content is initialized, the table receives all templates by attribute and initializes features. - -- Via the registry of the Table Module — the Table feature can be lazy-loaded when the Table Component requires it based on the Table Configuration, but it does not allow custom loading (custom loading is possible if the Angular versions are the same and shared). - - ```ts - @NgModule({ - imports: [ - TableModule.withFeatures({ - title: () => - import('@spryker/table.feature.title').then( - (m) => m.TableTitleFeatureModule, - ), - }), - ], - }) - export class RootModule {} - ``` - -To add a feature via the registry, register the feature in the Table Module using static method `TableModule.withFeatures()`. Under the hood, it assigns the object of actions to the `TableFeaturesRegistryToken`. The `TableFeatureLoaderService` injects all registered types from the `TableFeaturesRegistryToken`, `Compiler`, and `Injector`. Upon initialization, the table loads only enabled feature modules and compiles them via Compiler with Injector before initializing them. - -In the table configuration, you can enable or disable, and configure any feature. - -```html - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature extension configuration. - -```ts -export interface ModuleWithFeature { - featureComponent: Type; -} - -export interface TableFeatureConfig { - enabled?: boolean; - [k: string]: unknown; -} - -export enum TableFeatureLocation { - top = 'top', - beforeTable = 'before-table', - header = 'header', - headerExt = 'header-ext', - beforeRows = 'before-rows', - beforeColsHeader = 'before-cols-header', - beforeCols = 'before-cols', - cell = 'cell', - afterCols = 'after-cols', - afterColsHeader = 'after-cols-header', - afterRows = 'after-rows', - afterTable = 'after-table', - bottom = 'bottom', - hidden = 'hidden', -} -``` - -## Table Feature types - -There are multiple standard Table Features that are shipped with the UI library: - -- [Batch Actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html) - allows triggering batch/multiple actions from rows. -- [Editable](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-editable.html) - allows editing/adding rows of the table -- [Filters](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-filter-extension/table-filter-extension.html) - allows filtering the data set. -- [Pagination](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-pagination.html) - renders pagination of the table. -- [Row Actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-row-actions.html) - allows triggering actions from rows. -- [Search](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-search.html) - allows searching within the data set. -- [Selectable](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-selectable.html) - allows selecting multiple rows. -- [Settings](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-settings.html) - allows customizing columns of the table (show/hide and reorder). -- [Sync State](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-sync-state.html) - allows syncing the state of the table with browser URL (like pagination, filters, sorting). -- [Title](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-title.html) - renders the title of the table. -- [Total](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-total.html) - renders the total number of the data set. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-batch-actions.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-batch-actions.md deleted file mode 100644 index 473b7c4af5a..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-batch-actions.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Table Feature Batch Actions -description: This document provides details about the Table Feature Batch Actions component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Batch Actions component in the Components Library. - -## Overview - -Table Feature Batch Actions is a feature of the Table Component that allows triggering batch/multiple actions from rows. -As Table Feature Batch Actions is based on the [Table Feature Selectable](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-selectable.html), batch actions must be registered and enabled via the table config. Batch actions are functions that can be performed on multiple items within a table. As soon as at least one row is selected in the table, the batch action bar with allowed actions appears at the top of the table. -To escape the `batch action mode`, it is necessary to unselect the table rows. - -Check out an example usage of the Table Feature Batch Actions in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via the config. -- `noActionsMessage`—error message text. -- `actions`—an array with actions that are displayed in the top bar, and their type of the registered [action](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/ui-components-library-actions.html). -- `rowIdPath`—gets a row `id` via the column `id` (in the following example, `Sku` column). -- `availableActionsPath`—path to an array with available action IDs in the top bar (supports nested objects using dot notation for ex. `prop.nestedProp`). - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - batchActions?: TableBatchActionsConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - batchActions: () => - import('@spryker/table.feature.batch-actions').then( - (m) => m.TableBatchActionsFeatureModule, - ), - itemSelection: () => - import('@spryker/table.feature.selectable').then( - (m) => m.TableSelectableFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableBatchActionsFeatureModule, - TableSelectableFeatureModule, - ], -}) -export class RootModule {} - - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Batch Actions: - -```ts -export interface TableBatchActionsConfig extends TableFeatureConfig { - actions: TableBatchAction[]; - rowIdPath: string; - noActionsMessage?: string; - availableActionsPath?: string; -} - -export interface TableBatchAction extends TableActionBase { - title: string; -} - -export interface TableBatchActionContext { - rowIds: string[]; -} - -export interface SelectedRows - extends Record, - TableSelectionRow { -} - -export interface TableItemActions { - actions: TableBatchAction[]; - rowIdPath: string; - selectedRows: SelectedRows[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-editable.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-editable.md deleted file mode 100644 index 29ec9727c84..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-editable.md +++ /dev/null @@ -1,271 +0,0 @@ ---- -title: Table Feature Editable -description: This document provides details about the Table Feature Editable component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Editable component in the Components Library. - -## Overview - -Table Feature Editable is a feature of the Table Component that allows editing and adding rows to the table. - -Check out an example usage of the Table Feature Editable in the `@spryker/table` config. - -Component configuration: - -- `columns`—an array with the config for every editable column. -- `create`—an object with the config for the added rows. -- `update`—an object with the config for the existing rows. -- `disableRowKey`—disables the row that contains the mentioned column `id` (see the following example). - -```html - - -``` - -Take a closer look at all the options available. - -- `columns` (only required properties are listed, the entire interface can be found in [Table Design](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-design.html#interfaces) article.): - - `id`—a cell `id`. - - `type`—a cell `type`. - - `typeOptions`. Check [Column Type](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-column-type-extension/table-column-type-extension.html)) to learn more about the column types available.): - - `value`—sets the default value to the newly added row's cell. - -- `create`: - - `addButon`—this object holds the `Add button` configuration such as `title`, `icon`, `size`. - - `cancelButon`—an object with the `Cancel button` configuration like `title` and `icon`. - - `disableForCols`—an array with the cell `ids` to be disabled. - - `formInputName`—creates an `input[type=hidden]` element with the specific name. - - `initialData`—initials data for cells and objects with errors for rows and cells. - -- `update`: - - `url`—a request url. - - `saveButon`—an object with the `Save button` configuration such as `title` and `icon` (displayed in the `update` popup). - - `cancelButon`—an object with the `Cancel button` configuration such as `title` and `icon` (displayed in the `update` popup). - - `disableForCols`—an array with the cell `ids` to be disabled. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - editable?: TableEditableConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - editable: () => - import('@spryker/table.feature.editable').then( - (m) => m.TableEditableFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableEditableFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Editable: - -```ts -export interface TableEditableColumn extends TableColumn { - typeOptions?: TableEditableColumnTypeOptions; -} - -export interface TableEditableColumnTypeOptions extends TableColumnTypeOptions { - editableError?: string; -} - -export interface TableEditableConfig extends TableFeatureConfig { - columns: TableEditableColumn[]; - create?: TableEditableConfigCreate; - update?: TableEditableConfigUpdate; - disableRowKey?: string; -} - -export interface TableEditableConfigCreate { - formInputName: string; - initialData?: TableEditableConfigCreateData; - addButton?: TableEditableConfigButton; - cancelButton?: TableEditableConfigButton; - disableForCols?: string[]; -} - -export interface TableEditableConfigUpdate { - url: TableEditableConfigUrl; - saveButton?: TableEditableConfigButton; - cancelButton?: TableEditableConfigButton; - disableForCols?: string[]; -} - -export interface TableEditableConfigCreateData { - data: TableDataRow[]; - errors?: TableEditableConfigDataErrors; -} - -export interface TableEditableConfigDataErrorsFields { - rowError?: string; - columnErrors?: { [columnId: string]: string | undefined }; -} - -export interface TableEditableConfigDataErrors { - [rowIdx: string]: TableEditableConfigDataErrorsFields; -} - -export interface TableEditableConfigUrlObject { - url: string; - method?: string; -} - -export type TableEditableConfigUrl = string | TableEditableConfigUrlObject; - -export interface TableEditableConfigButtonIcon { - icon: string; -} - -export interface TableEditableConfigButtonText - extends Partial { - title: string; - size?: ButtonSize; - shape?: ButtonShape; - variant?: ButtonVariant; - type?: ButtonType; -} - -export type TableEditableConfigButton = - | TableEditableConfigButtonText - | TableEditableConfigButtonIcon; - -export interface TableEditableEventData { - colId: string; - value?: T; -} - -export class TableEditableEvent extends CustomEvent> { - static readonly eventName = 'spy-table-editable'; - - constructor(detail: TableEditableEventData) { - super(TableEditableEvent.eventName, { - bubbles: true, - cancelable: true, - composed: true, - detail, - }); - } -} - -export interface TableDatasourceDependableConfig extends DatasourceConfig { - dependsOn: string; - contextKey?: string; - datasource: DatasourceConfig; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-pagination.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-pagination.md deleted file mode 100644 index eee02a623aa..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-pagination.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Table Feature Pagination -description: This document provides details about the Table Feature Pagination component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Pagination component in the Components Library. - -## Overview - -Table Feature Pagination is a feature of the Table Component that renders pagination of the table. -This feature is based on the Pagination component. - -Check out an example usage of the Table Feature Pagination in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `sizes`—an array of numbers of table rows that needs to be displayed per page. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - pagination?: TablePaginationConfig; - } -} - -@NgModule({ - imports: [ - TableModule.withFeatures({ - pagination: () => - import('@spryker/table.feature.pagination').then( - (m) => m.TablePaginationFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TablePaginationFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Pagination: - -```ts -export interface TablePaginationConfig extends TableFeatureConfig { - sizes: number[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-row-actions.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-row-actions.md deleted file mode 100644 index 86fbe1ecdd2..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-row-actions.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Table Feature Row Actions -description: This document provides details about the Table Feature Row Actions component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Row Actions component in the Components Library. - -## Overview - -Table Feature Row Actions is a feature of the Table Component that renders a drop-down menu with actions applicable to the table row and when clicked triggers an Action which must be registered. Also this feature allows triggering actions via row click. -Each row has all actions by default, but they can be filtered using an array of action Ids in each row using the path configured by `availableActionsPath`. - -Check out an example usage of the Table Feature Row Actions in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `actions`—an array with actions that are displayed in the drop down menu and their type of registered [action](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/ui-components-library-actions.html). -- `click`—indicates which action is used for clicking the table row by its `id`. -- `rowIdPath`—is used for the `rowId` action context. -- `availableActionsPath`—path to an array with the available action IDs in the table data row (supports nested objects using dot notation for ex. `prop.nestedProp`). - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - rowActions?: TableRowActionsConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - rowActions: () => - import('@spryker/table.feature.row-actions').then( - (m) => m.TableRowActionsFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableRowActionsFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Row Actions: - -```ts -export interface TableRowActionsConfig extends TableFeatureConfig { - actions?: TableRowActionBase[]; - click?: string; - rowIdPath?: string; - availableActionsPath?: string; -} - -export interface TableRowActionBase extends TableActionBase { - title: string; - icon?: string; -} - -export interface TableRowActionContext { - row: TableDataRow; - rowId?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-search.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-search.md deleted file mode 100644 index d2a47462ab2..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-search.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Table Feature Search -description: This document provides details about the Table Feature Search component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Search component in the Components Library. - -## Overview - -Table Feature Search is a feature of the Table Component that allows searching within the data set. - -Check out an example usage of the Table Feature Search in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `placeholder`—the search placeholder text. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - search?: TableSearchConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - search: () => - import('@spryker/table.feature.search').then( - (m) => m.TableSearchFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableSearchFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Search: - -```ts -export interface TableSearchConfig extends TableFeatureConfig { - placeholder?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-selectable.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-selectable.md deleted file mode 100644 index dc64ac2f0ae..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-selectable.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Table Feature Selectable -description: This document provides details about the Table Feature Selectable component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Selectable component in the Components Library. - -## Overview - -Table Feature Selectable is a feature of the Table Component that allows selecting multiple rows. -The row selection toggles whether a row is selected. A checkmark indicates that a row is selected, while an empty box indicates that a row is not selected. -Commonly, the table header indicates whether all rows are selected. If they are, the header displays a checkmark. If all rows are unselected, the header displays an empty checkbox. For rows with indeterminate states, a dash appears in the header. -When the rows selection feature changes, it emits an event with all selected rows, which can be used by other features (for example, the [Table Feature Batch Actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html) will display the applicable actions for selected rows). - -Check out an example usage of the Table Feature Selectable in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - itemSelection?: TableSelectableConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - itemSelection: () => - import('@spryker/table.feature.selectable').then( - (m) => m.TableSelectableFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableSelectableFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Selectable: - -```ts -export interface TableSelectableConfig extends TableFeatureConfig {} - -export interface TableSelectionRow { - data: TableDataRow; - index: number; -} - -export type TableSelectionChangeEvent = TableSelectionRow[]; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-settings.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-settings.md deleted file mode 100644 index 2d0a674e300..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-settings.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Table Feature Settings -description: This document provides details about the Table Feature Settings component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Settings component in the Components Library. - -## Overview - -Table Feature Settings is a feature of the Table Component that allows customizing columns of the table (show or hide and reorder). - -Check out an example usage of the Table Feature Settings in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `tableId`—`id` of the table that syncs with the table toolbar settings (also can be assigned to the table via HTML). - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - columnConfigurator?: TableSettingsConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - columnConfigurator: () => - import('@spryker/table.feature.settings').then( - (m) => m.TableSettingsFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableSettingsFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Settings: - -```ts -export interface TableSettingsConfig extends TableFeatureConfig { - tableId?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-sync-state.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-sync-state.md deleted file mode 100644 index 412151cfd48..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-sync-state.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Table Feature Sync State -description: This document provides details about the Table Feature Sync State component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Sync State component in the Components Library. - -## Overview - -Table Feature Sync State is a feature of the Table Component that synchronizes the table state with the browser URL (like pagination, filters, sorting). - -Check out an example usage of the Table Feature Sync State in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `tableId`—an `id` of the table that syncs the state of the table with the browser URL (also can be assigned to the table via HTML). - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - syncStateUrl?: TableSyncStateConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - syncStateUrl: () => - import('@spryker/table.feature.sync-state').then( - (m) => m.TableSyncStateFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableSyncStateFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Sync State: - -```ts -export interface TableSyncStateConfig extends TableFeatureConfig { - tableId?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-title.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-title.md deleted file mode 100644 index aa68998ee00..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-title.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Table Feature Title -description: This document provides details about the Table Feature Title component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Total - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-total.html ---- - -This document explains the Table Feature Title component in the Components Library. - -## Overview - -Table Feature Title is a feature of the Table Component that renders the title of the table. - -Check out an example usage of the Table Feature Title in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. -- `title`—a table title text. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - title?: TableTitleConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - title: () => - import('@spryker/table.feature.title').then( - (m) => m.TableTitleFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableTitleFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Title: - -```ts -export interface TableTitleConfig extends TableFeatureConfig { - title?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-total.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-total.md deleted file mode 100644 index 5bfc3af4fc6..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-features/table-feature-total.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Table Feature Total -description: This document provides details about the Table Feature Total component in the Components Library. -template: concept-topic-template -related: - - title: Table Feature extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-extension.html - - title: Table Feature Batch Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-batch-actions.html - - title: Table Feature Editable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-editable.html - - title: Table Feature Pagination - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-pagination.html - - title: Table Feature Row Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-row-actions.html - - title: Table Feature Search - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-search.html - - title: Table Feature Selectable - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-selectable.html - - title: Table Feature Settings - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-settings.html - - title: Table Feature Sync State - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-sync-state.html - - title: Table Feature Title - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-feature-extension/table-feature-title.html ---- - -This document explains the Table Feature Total component in the Components Library. - -## Overview - -Table Feature Total is a feature of the Table Component that renders the total number of the data -set via Chips component. -In case table rows are selectable, Table Feature Total also renders a number of selected rows. - -Check out an example usage of the Table Feature Total in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the feature via config. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table' { - interface TableConfig { - total?: TableTotalConfig; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - total: () => - import('@spryker/table.feature.total').then( - (m) => m.TableTotalFeatureModule, - ), - }), - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableTotalFeatureModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Feature Total: - -```ts -export interface TableTotalConfig extends TableFeatureConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/index.md deleted file mode 100644 index 6006fb34d1d..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/index.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Table Filter extension -last_updated: Jun 07, 2021 -description: This document provides details about the Table Filter extension in the Сomponents Library. -template: concept-topic-template -related: - - title: Table Filter Date Range - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-date-range.html - - title: Table Filter Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-select.html - - title: Table Filter Tree Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-tree-select.html ---- - -This document explains the Table Filter extension in the Components Library. - -## Overview - -The Table Filters feature provides filtering functionality to the Core Table Component. The filters, however, are not included in the feature itself — instead, they are registered separately. - -A Table Filter is an Angular Component that implements a specific interface (`TableFilterComponent`) and is registered to the Table Filters feature module via `TableFiltersFeatureModule.withFilterComponents()`. - -Furthermore, you need to create your own filter module and add it to the `RootModule`. - -```ts -// Module augmentation -import { TableFilterBase } from '@spryker/table.feature.filters'; - -declare module '@spryker/table.feature.filters' { - interface TableFiltersRegistry { - custom: TableFilterCustom; - } -} - -export interface TableFilterSelect extends TableFilterBase { - type: 'custom'; - typeOptions: { ... }; -} - -// Component implementation -// Module -@NgModule({ - declarations: [TableFilterCustomComponent], - exports: [TableFilterCustomComponent], -}) -export class TableFilterCustomModule {} - -// Component -@Component({ - selector: 'spy-table-filter-custom', - ... -}) -export class TableFilterCustomComponent implements TableFilterComponent {} - -// Root module -@NgModule({ - imports: [ - TableFiltersFeatureModule.withFilterComponents({ - custom: TableFilterCustomComponent, - }), - TableFilterCustomModule, - ], -}) -export class RootModule {} -``` - -You can configure any filter in the table config. - -```html - - -``` - -## Main Filter feature - -Using the static method `TableFiltersFeatureModule.withFilterComponents()`, the table module allows registering any table filter by a key. Under the hood, this method assigns the object of filters to `TABLE_FILTERS_TOKEN`. - -The main component injects all registered types from the `TABLE_FILTERS_TOKEN` and `Injector`. - -`TableFiltersFeatureComponent` gets all registered filters from `TABLE_FILTERS_TOKEN` and maps them to `tableConfig.filters.items` upon initialization. Table Features feature then renders Table Filters as required by the Table Configuration. - -## Interfaces - -Below you can find interfaces for the Table Filter extension configuration. - -```ts -import { TableFeatureConfig } from '@spryker/table'; - -export interface TableFiltersConfig extends TableFeatureConfig { - items: TableFilterBase[]; -} - -export interface TableFilterBase { - __capturedValue: V; - id: string; - title: string; - type: string; - typeOptions?: unknown; -} - -export interface TableFilterComponent { - config?: C; - value?: C['__capturedValue']; - valueChange: EventEmitter; - classes: Observable; // @Output -} -``` - -## Table Filter types - -The Table Filters feature ships with a few common Table Filter types: - -- [Date Range](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-filter-extension/table-filter-date-range.html)—allows filtering data via `DateRangePickerComponent`. -- [Select](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-filter-extension/table-filter-select.html)—allows filtering data via `SelectComponent`. -- [Tree Select](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-filter-extension/table-filter-tree-select.html)—allows filtering data via `TreeSelectComponent`. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-date-range.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-date-range.md deleted file mode 100644 index 6400f8f9cd9..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-date-range.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Table Filter Date Range -description: This document provides details about the Table Filter Date Range component in the Components Library. -template: concept-topic-template -related: - - title: Table Filter extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-extension.html - - title: Table Filter Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-select.html - - title: Table Filter Tree Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-tree-select.html ---- - -This document explains the Table Filter Date Range component in the Components Library. - -## Overview - -Table Filter Date Range is a feature of the Table Component that allows filtering data via `Date Range Picker` component. - -Check out an example usage of the Table Filter Date Range in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the filter via config. -- `items`—an array with config for each filter date-range. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table.feature.filters' { - interface TableFiltersRegistry { - dateRange: TableFilterDateRange; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - filters: () => - import('@spryker/table.feature.filters').then( - (m) => m.TableFiltersFeatureModule, - ), - }), - TableFiltersFeatureModule.withFilterComponents({ - 'date-range': TableFilterDateRangeComponent, - }), - TableFilterDateRangeModule, - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableFiltersFeatureModule, - TableFilterDateRangeModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Filter Date Range: - -```ts -export interface TableFilterDateRange - extends TableFilterBase { - type: 'date-range'; - typeOptions: TableFilterDateRangeOptions; -} - -export interface TableFilterDateRangeOptions { - placeholderFrom?: string; - placeholderTo?: string; - format?: string; - time?: string | boolean; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-select.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-select.md deleted file mode 100644 index 45dd2cb2c02..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-select.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Table Filter Select -description: This document provides details about the Table Filter Select component in the Components Library. -template: concept-topic-template -related: - - title: Table Filter extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-extension.html - - title: Table Filter Date Range - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-date-range.html - - title: Table Filter Tree Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-tree-select.html ---- - -This document explains the Table Filter Select component in the Components Library. - -## Overview - -Table Filter Select is a feature of the Table Component that allows filtering data via `Select` component. - -Check out an example usage of the Table Filter Select in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the filter via config. -- `items`—an array with the configuration for each filter select. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table.feature.filters' { - interface TableFiltersRegistry { - select: TableFilterSelect; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - filters: () => - import('@spryker/table.feature.filters').then( - (m) => m.TableFiltersFeatureModule, - ), - }), - TableFiltersFeatureModule.withFilterComponents({ - select: TableFilterSelectComponent, - }), - TableFilterSelectModule, - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableFiltersFeatureModule, - TableFilterSelectModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Filter Select: - -```ts -export interface TableFilterSelect - extends TableFilterBase { - type: 'select'; - typeOptions: TableFilterSelectOptions; -} - -export interface TableFilterSelectOptions { - values: TableFilterSelectOptionsValue[]; - multiselect?: boolean; -} - -export interface TableFilterSelectOptionsValue { - value: TableFilterSelectValue; - title: string; -} - -export type TableFilterSelectValue = SelectValueSelected; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-tree-select.md b/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-tree-select.md deleted file mode 100644 index dcbb6bb0680..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/table-design/table-filters/table-filter-tree-select.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Table Filter Tree Select -description: This document provides details about the Table Filter Tree Select component in the Components Library. -template: concept-topic-template -related: - - title: Table Filter extension - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-extension.html - - title: Table Filter Date Range - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-date-range.html - - title: Table Filter Select - link: docs/scos/dev/front-end-development/page.version/marketplace/table-design/table-filter-extension/table-filter-select.html ---- - -This document explains the Table Filter Tree Select component in the Components Library. - -## Overview - -Table Filter Tree Select is a feature of the Table Component that allows filtering data via `Tree Select` component. - -Check out an example usage of the Table Filter Tree Select in the `@spryker/table` config. - -Component configuration: - -- `enabled`—enables the filter via config. -- `items`—an array with config for each filter tree-select. - -```html - - -``` - -## Component registration - -Register the component: - -```ts -declare module '@spryker/table.feature.filters' { - interface TableFiltersRegistry { - 'tree-select': TableFilterTreeSelect; - } -} - -@NgModule({ - imports: [ - TableModule.forRoot(), - TableModule.withFeatures({ - filters: () => - import('@spryker/table.feature.filters').then( - (m) => m.TableFiltersFeatureModule, - ), - }), - TableFiltersFeatureModule.withFilterComponents({ - 'tree-select': TableFilterTreeSelectComponent, - }), - TableFilterTreeSelectModule, - ], -}) -export class RootModule {} -``` - -```html -// Via HTML -@NgModule({ - imports: [ - TableModule.forRoot(), - TableFiltersFeatureModule, - TableFilterTreeSelectModule, - ], -}) -export class RootModule {} - - - - -``` - -## Interfaces - -Below you can find interfaces for the Table Filter Tree Select: - -```ts -export interface TableFilterTreeSelect - extends TableFilterBase { - type: 'tree-select'; - typeOptions: TableFilterTreeSelectOptions; -} - -export interface TableFilterTreeSelectOptions { - values: TableFilterTreeSelectOptionsValue[]; - multiselect?: boolean; -} - -export interface TableFilterTreeSelectOptionsValue { - value: TableFilterTreeSelectValue; - title: string; - children?: TableFilterTreeSelectOptionsValue[]; -} - -export type TableFilterTreeSelectValue = TreeSelectValue; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-close-drawer.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-close-drawer.md deleted file mode 100644 index 22307300994..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-close-drawer.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Actions Close Drawer -description: This document provides details about the Actions Close Drawer service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Close Drawer service in the Components Library. - -## Overview - -Actions Close Drawer is an Angular Service that closes the first Drawer in the current context. - -Check out an example usage of the Actions Close Drawer. - -Service configuration: - -- `type`—an action type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - 'close-drawer': CloseDrawerActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - 'close-drawer': CloseDrawerActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Close Drawer: - -```ts -export interface CloseDrawerActionConfig extends ActionConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-drawer.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-drawer.md deleted file mode 100644 index 0e5efd65abf..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-drawer.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Actions Drawer -description: This document provides details about the Actions Drawer service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Drawer service in the Components Library. - -## Overview - -Actions Drawer is an Angular Service that opens the Drawer with a component/template. - -Check out an example usage of the Actions Drawer. - -Service configuration: - -- `type`—an action type. -- `component`—a component name. -- `options`—an object with a component options. - —`inputs`—inputs of the component. - -```html - - -``` - -## Main Service - -The main module registers a component by key via a static method `withComponents()`. -It assigns the object of components to the `DrawerActionComponentTypesToken` under the hood. - -The main service injects all registered types from the `DrawerActionComponentTypesToken.` - -`handleAction()` method checks if the `config` (from the argument) contains `component` or `template` keys and returns an observable with data by `DrawerRef.openComponent()` or `DrawerRef.openTemplate()` accordingly. - -```ts -handleAction( - injector: Injector, - config: DrawerActionConfig, - context: C, -): Observable> { - ... -}; -``` - -Below, you can find an explanation of how both of them works: - -### Via the component - -- If a component type is a string: - -```ts -handleAction(injector, config: { component: 'simple_component' }, context); -``` - -the `DrawerActionComponentTypesToken` returns a component by key from the registered components collection, and then `DrawerRef.openComponent()` method is called. - -- If a component type is an Angular component: - -```ts -handleAction(injector, config: { component: SimpleComponent }, context); -``` - -the `DrawerRef.openComponent()` method is called without any manipulations with `DrawerActionComponentTypesToken`. - -### Via the template - -Another way to open the Drawer is with `ng-template.` You need to create a template, get its reference and pass it to the `handleAction()` method as a `template` config prop. - -```html - - ... - -``` - -```ts -import { DrawerTemplateContext } from '@spryker/drawer'; - -// Find the template -@ViewChild(‘contentTpl’) contentTpl?: TemplateRef; - -// Call the method -handleAction(injector, config: { template: contentTpl }, context); -``` - -`DrawerRef.openTemplate()` is called, and the Drawer is opened with `contentTpl` template. - -## Service registration - -Any existing Angular component can be registered and used within the Drawer. -Also, it's possible to create and register a custom component that is rendered inside the Drawer. - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - drawer: DrawerActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - drawer: DrawerActionHandlerService, - }), - DrawerActionModule.withComponents({ - 'custom': CustomComponent, - }), - CustomModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Drawer: - -```ts -export interface DrawerActionComponentsRegistry { - // type: Type -} - -export type DrawerActionComponentType = RegistryType< - DrawerActionComponentsRegistry ->; - -export interface DrawerActionConfigComponent extends ActionConfig { - component: DrawerActionComponentType | Type; - options?: Partial; -} - -export interface DrawerActionConfigTemplate extends ActionConfig { - template: TemplateRef; - options?: Partial; -} - -export type DrawerActionConfig = - | DrawerActionConfigComponent - | DrawerActionConfigTemplate; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-http.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-http.md deleted file mode 100644 index d02839d9ad2..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-http.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Actions HTTP -description: This document provides details about the Actions HTTP service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions HTTP service in the Components Library. - -## Overview - -Actions HTTP is an Angular Service that renders content via the HTML request. - -Check out an example usage of the Actions HTTP. - -Service configuration: - -- `type`—an action type. -- `url`—an action request URL. -- `method`—an action request method (`GET` by default). - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - http: HttpActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - http: HttpActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions HTTP: - -```ts -export interface HttpActionConfig extends ActionConfig { - url: string; - method?: string; -} - -export interface HttpActionResponse { - actions?: ActionConfig[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-notification.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-notification.md deleted file mode 100644 index 00145b5bfee..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-notification.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Actions Notification -description: This document provides details about the Actions Notification service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Notification service in the Components Library. - -## Overview - -Actions Notification is an Angular Service that renders notification box. - -Check out an example usage of the Actions Notification. - -Service configuration: - -- `type`—an action type. -- `notifications`—an array with notifications configuration based on the Notification component. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - notification: NotificationActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - notification: NotificationActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Notification: - -```ts -export interface NotificationActionConfig extends ActionConfig { - notifications: NotificationData[]; -} - -export interface NotificationData extends NotificationConfig { - type?: NotificationType; - title: string | TemplateRef; - description?: string | TemplateRef; - closeable?: boolean; -} - -export enum NotificationType { - Info = 'info', - Error = 'error', - Warning = 'warning', - Success = 'success', -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-redirect.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-redirect.md deleted file mode 100644 index 5319ff3735d..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-redirect.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Actions Redirect -description: This document provides details about the Actions Redirect service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Redirect service in the Components Library. - -## Overview - -Actions Redirect is an Angular Service that performs the hard redirect to the URL. - -Check out an example usage of the Actions Redirect. - -Service configuration: - -- `type`—an action type. -- `url`—a URL to redirect. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - redirect: RedirectActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - redirect: RedirectActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Redirect: - -```ts -export interface RedirectActionConfig extends ActionConfig { - url: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-drawer.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-drawer.md deleted file mode 100644 index 993ace0855c..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-drawer.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Actions Refresh Drawer -description: This document provides details about the Actions Refresh Drawer service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Refresh Drawer service in the Components Library. - -## Overview - -Actions Refresh Drawer is an Angular Service that refreshes/re-renders the currently opened drawer. - -Check out an example usage of the Actions Refresh Drawer. - -Service configuration: - -- `type`—an action type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - 'refresh-drawer': RefreshDrawerActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - 'refresh-drawer': RefreshDrawerActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Refresh Drawer: - -```ts -export interface RefreshDrawerActionConfig extends ActionConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-parent-table.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-parent-table.md deleted file mode 100644 index f19e1054351..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-parent-table.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Actions Refresh Parent Table -description: This document provides details about the Actions Refresh Parent Table service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html - ---- - -This document explains the Actions Refresh Parent Table service in the Components Library. - -## Overview - -Actions Refresh Parent Table is an Angular Service that refreshes the data of the parent table of a Table in the current context. - -{% info_block warningBox "Note" %} - -Make sure that the table opened from another table, for ex. in the Drawer. - -{% endinfo_block %} - -Check out an example usage of the Actions Refresh Parent Table. - -Service configuration: - -- `rowActions`—the table row actions. For more details, see [Table Feature Row Actions](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/table-design/table-feature-extension/table-feature-row-actions.html). -- `actions`—an array with actions configuration. -- `type`—an action type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - 'refresh-parent-table': RefreshParentTableActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - 'refresh-parent-table': RefreshParentTableActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Actions Refresh Parent Table: - -```ts -export interface RefreshParentTableActionConfig extends ActionConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-table.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-table.md deleted file mode 100644 index 9981c5c14ee..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions-refresh-table.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Actions Refresh Table -description: This document provides details about the Actions Refresh Table service in the Components Library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html ---- - -This document explains the Actions Refresh Table service in the Components Library. - -## Overview - -Actions Refresh Table is an Angular Service that refreshes data of the table in the current context. - -Check out an example usage of the Actions Refresh Table. - -Service configuration: - -- `type`—an action type. -- `tableId`—an `id` of the table that will be refreshed. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/actions' { - interface ActionsRegistry { - 'refresh-table': RefreshTableActionHandlerService; - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - 'refresh-table': RefreshTableActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for Actions Refresh Table: - -```ts -export interface RefreshTableActionConfig extends ActionConfig { - tableId?: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions.md deleted file mode 100644 index 3871273c0f0..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/actions/actions.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Actions -description: This document provides details about the Actions service in the Components Library. -template: concept-topic-template -related: - - title: Actions Close Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-close-drawer.html - - title: Actions Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-drawer.html - - title: Actions HTTP - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-http.html - - title: Actions Notification - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-notification.html - - title: Actions Redirect - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-redirect.html - - title: Actions Refresh Drawer - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-drawer.html - - title: Actions Refresh Parent Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-parent-table.html - - title: Actions Refresh Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/actions-refresh-table.html ---- - -This document explains the Actions service in the Components Library. - -## Overview - -Using Action Handlers, the Actions service handles specific actions based on a specific format within a specific context (such as a Table, Overlay, HTTP Response). -As a result, the backend can control what the UI looks like without changing anything on the frontend (for example, updating tables, closing drawers). - -The context within which Actions are handled is defined by the invoker of the Action (Table, Button, Http). - -```html - - -``` - -## Main Service - -Actions is an Angular Service that implements a specific interface (`ActionHandler`) and is registered in the Action Module via `ActionModule.withActions()`. -The main service injects all registered types from the `ActionTypesToken`. -`trigger()` method finds specific service from the `ActionTypesToken` by the `config.type` (from the argument) and returns observable with data by `ActionHandler.handleAction()`. - -## Action Handler - -Actions must implement a specific interface (`ActionHandler`) and then be registered to the Root Module via `ActionModule.withActions()`. -Action Handler encapsulates the algorithm of how the data is loaded into the Component. - -```ts -// Module augmentation -import { ActionConfig } from '@spryker/actions'; - -declare module '@spryker/actions' { - interface ActionsRegistry { - custom: CustomActionHandlerService; - } -} - -export interface CustomActionConfig extends ActionConfig { - data: unknown; - ... -} - -// Service implementation -@Injectable({ - providedIn: 'root', -}) -export class CustomActionHandlerService implements ActionHandler { - handleAction( - injector: Injector, - config: CustomActionConfig, - context: unknown, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - ActionsModule.withActions({ - custom: CustomActionHandlerService, - }), - ], -}) -export class RootModule {} -``` - -The context within which Actions operate is defined by the local injector where it’s being used. - -## Interfaces - -Below you can find interfaces for the Actions configuration and Action type: - -```ts -export interface ActionConfig { - type: ActionType; - - // Reserved for types that may have extra configuration - [k: string]: unknown; -} - -export interface ActionHandler - extends Generics<[C, R]> { - handleAction( - injector: Injector, - config: ActionConfig, - context: C, - ): Observable; -} -``` - -## Action types - -There are a few common Actions that are available in UI library as separate packages: - -- [Close-drawer](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-close-drawer.html) - closes the first Drawer in the current context. -- [Drawer](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-drawer.html) - opens component in the Drawer. -- [HTTP](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-http.html) - renders content via html request. -- [Notification](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-notification.html) - renders notification box. -- [Redirect](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-redirect.html) - performs the hard redirect to the URL. -- [Refresh-drawer](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-refresh-drawer.html) - refreshes/rerenders opened Drawer in current context. -- [Refresh-parent-table](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-refresh-parent-table.html) - refreshes data of the parent Table of a Table in current context. -- [Refresh-table](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/actions/actions-refresh-table.html) - refreshes data of the Table in current context. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/cache.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/cache.md deleted file mode 100644 index 15118848023..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/cache.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Cache -description: This document provides details about the Cache service in the Component Library.} -template: concept-topic-template -related: - - title: Cache Strategy Static - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/cache/ui-components-library-cache-service-cache-strategy-static-service.html ---- - -This document explains the Cache service in the Component Library. - -## Overview - -Cache Service is responsible for caching arbitrary operations based on the configuration. -This lets backend systems use caching without changing the front-end at all (ex. http datasource). - -Cache Service uses Cache Strategy to define caching algorithm (static, cache first, freshness first). - -```html - - -``` - -## Cache Storage Factory Service - -The factory creates the `CacheStorage` instance types for a specific configuration. - -As an example, to use `PersistenceStrategy` as a Cache Storage, factory-created storage is used. -This storage is not created every time, but cached for the same configurations when called repeatedly. - -The factory injects `PersistenceStrategyService`. - -`create()` method gets the registered persistence strategy from `PersistenceStrategyService.select()` by `config.type` from an argument and returns an adapted `CacheStorage`. - -`createAll()` method gets all the registered persistence strategies from `PersistenceStrategyService.getAll()` and returns an array of adapted `CacheStorage` instance types. - -### Interfaces - -Below you can find interfaces for Cache Storage Factory Service: - -```ts -interface CacheStorageFactoryService { - create(config: CacheStrategyConfig): CacheStorage {}; - createAll(): CacheStorage[] {}; -} - -interface CacheStorage { - has(id: CacheId, namespace?: string): Observable; - get( - id: CacheId, - namespace?: string, - ): Observable | undefined>; - set(id: CacheId, data: CacheEntry, namespace?: string): Observable; - remove(id: CacheId, namespace?: string): Observable; - clear(namespace?: string): Observable; -} -``` - -## Main Service - -The Cache Service provides general capabilities for interacting with different caching strategies. - -A Cache Strategy is an Angular Service that implements a specific interface (`CacheStrategy`) and then registers with the Cache Module via `CacheModule.withStrategies()`. - -The main service injects all registered types from the `CacheStrategyTypesToken` and `CacheStorageFactoryService`. - -`getCached()` method finds a specific strategy from the `CacheStrategyTypesToken` by type (from the `config.type` argument) and returns that strategy as observable with arguments passed thorough method (`CacheStrategy.getCached()`). - -`clearCache()` method returns an array of instances (PersistenceStrategy[]) of all the registered strategies from `PersistenceStrategyTypesToken`. - -### Interfaces - -Below you can find interfaces for the Cache Service: - -```ts -interface CacheService { - getCached( - id: CacheId, - config: CacheStrategyConfig, - operation: CacheOperation, - ): Observable {}; - - clearCache(namespace?: string): Observable {}; -} -``` - -## Cache Strategy - -The Cache Strategy is the algorithm for caching data. - -Using the `namespace` (optional) option, you can separate different cache entries in Cache Storage and selectively purge them. - -The Cache Strategy implements a specific interface (`CacheStrategy`) and is registered to the Root Module via `CacheModule.withStrategies()`. - -```ts -// Module augmentation -import { CacheStrategyConfig, CacheStrategy } from '@spryker/cache'; - -declare module '@spryker/cache' { - interface CacheStrategyRegistry { - custom: CustomCacheStrategyConfig; - } -} - -interface CustomCacheStrategyConfig extends CacheStrategyConfig { - customOption: 'customOption'; -} - -// Service implementation -@Injectable({ - providedIn: 'root', -}) -export class CustomCacheService implements CacheStrategy { - getCached( - id: CacheId, - config: CustomCacheStrategyConfig, - operation: CacheOperation, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - CacheModule.withStrategies({ - custom: CustomCacheService, - }), - ], -}) -export class RootModule {} -``` - -### Interfaces - -Below you can find interfaces for the Cache Strategy: - -```ts -interface CacheId { - serialize(): string; -} - -interface CacheStrategy { - getCached( - id: CacheId, - config: CacheStrategyConfig, - operation: CacheOperation, - ): Observable; -} - -interface CacheStrategyConfig { - type: CacheStrategyType; - namespace?: string; - storage?: PersistenceStrategyType; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} -``` - -## Cache Strategy types - -There are a few common Cache Strategies that are available in UI library as separate packages: - -- [Static](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/cache/ui-components-library-cache-service-cache-strategy-static-service.html)—adds values immediately to the -cache until the expiration date and always retrieves them from cache if requested. - -## Related articles - -[Persistence](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/persistence/persistence.html) diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/static.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/static.md deleted file mode 100644 index a08d8277f01..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/cache/static.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Cache Strategy Static -description: This document provides details about the Cache Strategy Static service in the Components Library. -template: concept-topic-template -related: - - title: Cache - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/cache/ui-components-library-cache-service.html ---- - -This document explains the Cache Strategy Static service in the Components Library. - -## Overview - -Cache Strategy Static is an Angular Service that adds values to the cache immediately until the expiration date and retrieves them if requested from the cache. - -Check out an example usage of the Cache Strategy Static. - -Service configuration: - -- `type`—a cache type. -- `expiresIn`—represents a duration as a string. Each component is separated by a space. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/cache' { - interface CacheStrategyRegistry { - static: StaticCacheStrategyConfig; - } -} - -@NgModule({ - imports: [ - CacheModule.withStrategies({ - static: StaticCacheStrategy, - }), - StaticCacheStrategyModule, - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Cache Strategy Static: - -```ts -/** - * Represents a duration as a string where components are separated by a space - * - * Components: - * - 1-999y—Years - * - 1-12m—Months - * - 1-365d—Days - * - 1-23h—Hours - * - 1-59min—Minutes - * - 1-59s—Seconds - * - 1-59ms—Milliseconds - * - * Examples: - * - 2h 30min - * - 1d 14h - * - 2y - */ -export interface StaticCacheStrategyConfig extends CacheStrategyConfig { - expiresIn: TimeDurationString; -} - -export interface CacheStrategyConfig { - type: CacheStrategyType; - namespace?: string; - storage?: PersistenceStrategyType; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} - -export type TimeDurationString = string; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/array-map.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/array-map.md deleted file mode 100644 index 398d8ebb9a9..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/array-map.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Data Transformer Array-map -description: This document provides details about the Data Transformer Array-map service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Array-map service in the Components Library. - -## Overview - -Data Transformer Array-map is an Angular Service that executes another Data Transformer based on the config for every element in the array. - -In the following example, the `datasource` will return an array with the transformed `date` in every object. - -Service configuration: - -- `mapItems`—a Data Transformer that is set up with a configuration object. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - 'array-map': ArrayMapDataTransformerConfig; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - 'array-map': ArrayMapDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Array-map: - -```ts -export interface ArrayMapDataTransformerConfig extends DataTransformerConfig { - mapItems: DataTransformerConfig; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/chain.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/chain.md deleted file mode 100644 index 3b1adc1278b..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/chain.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Data Transformer Chain -description: This document provides details about the Data Transformer Chain service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Chain service in the Components Library. - -## Overview - -Data Transformer Chain is an Angular Service that executes other Data Transformers in sequence via configuration. - -In the following example, the `datasource` returns an array with the transformed `date` in every child object using chained transformers. - -Service configuration: - -- `transformers`—an array with Data Transformer configuration objects. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - chain: ChainDataTransformerConfig; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - chain: ChainDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Chain: - -```ts -export interface ChainDataTransformerConfig extends DataTransformerConfig { - transformers: DataTransformerConfig[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/index.md deleted file mode 100644 index f6564a4123e..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/index.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Data Transformer Data Configurators -description: This document provides details about the Data Transformer Data Configurators service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Collate Configurator Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-table-configurator.html ---- - -This document explains the Data Transformer Data Configurators service in the Components Library. - -## Overview - -Data Transformer Data Configurators is an Angular Service that re-populates data based on configuration. This lets backend systems control where re-population data is placed. - -Data Transformer Data Configurators are used in the Datasource service. - -```html - - -``` - -## Main service - -The main module provides a way to register a configurator by key using the static method `withConfigurators()`. Under the hood, it assigns the object of configurators to the `DataTransformerConfiguratorTypesToken`. - -The main service injects all registered types from the `DataTransformerConfiguratorTypesToken` and `DataTransformerConfigurator`. - -`resolve()` method finds a specific service from the `DataTransformerConfiguratorTypesToken` by `type` (from the argument) and returns an observable with data by calling `DataTransformerConfigurator.resolve()`. - -## Data Transformer Data Configurator - -Data Transformer Data Configurator is an Angular Service that encapsulates how the data is configured. - -Data Transformer Data Configurator must implement a specific interface (DataTransformerConfigurator) and then be registered to the Root Module using `CollateDataTransformerModule.withConfigurators()`. - -```ts -// Module augmentation -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - collate: CollateDataTransformerConfig; - } -} - -declare module '@spryker/data-transformer.collate' { - interface DataTransformerConfiguratorRegistry { - custom: CustomDataTransformerConfiguratorService; - } -} - -// Service implementation -import { DataTransformerConfiguratorConfigT } from '@spryker/data-transformer.collate'; - -@Injectable({ providedIn: 'root' }) -export class CustomDataTransformerConfiguratorService implements DataTransformerConfigurator { - resolve( - config: DataTransformerConfiguratorConfig, - injector: Injector, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - CollateDataTransformerModule.withConfigurators({ - custom: CustomDataTransformerConfiguratorService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the `DataTransformerConfigurator` configuration and `DataTransformerConfigurator` type: - -```ts -interface DataTransformerConfiguratorConfigT { - filter?: unknown; - search?: unknown; - sorting?: { - sortBy?: string; - sortDirection?: string; - }; - page?: number; - pageSize?: number; -} - -interface DataTransformerConfigurator { - resolve(injector: Injector): Observable; -} -``` - -## Data Transformer Data Configurator types - -There are a few common Data Transformer Data Configurators that are available in UI library as separate packages: - -- [Table](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-table-configurator.html)—integrates Table into Collate to re-populate data when the table updates. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/table.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/table.md deleted file mode 100644 index 9d63a778183..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/data-configurators/table.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Data Transformer Collate Configurator Table -description: This document provides details about the Data Transformer Collate Configurator Table service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Data Configurators - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-data-configurators.html ---- - -This document explains the Data Transformer Collate Configurator Table service in the Components Library. - -## Overview - -Data Transformer Collate Configurator Table is an Angular Service that re-populates of data to a format suitable for filtering (`DataTransformerConfiguratorConfigT`). - -Check out an example usage of the Data Transformer Collate Configurator Table in the `@spryker/table` config: - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer.collate' { - interface DataTransformerConfiguratorRegistry { - table: TableDataTransformerConfiguratorService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - collate: CollateDataTransformerService, - }), - CollateDataTransformer.withFilters({ - table: TableDataTransformerConfiguratorService, - }), - ], -}) -export class RootModule {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/equals.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/equals.md deleted file mode 100644 index 329a863e48d..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/equals.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Data Transformer Collate Filter Equals -description: This document provides details about the Data Transformer Collate Filter Equals service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Filters - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/collate-data-transformer-filters.html - - title: Data Transformer Collate Filter Range - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-range.html - - title: Data Transformer Collate Filter Text - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-text.html ---- - -This document explains the Data Transformer Collate Filter Equals service in the Components Library. - -## Overview - -Data Transformer Collate Filter Equals is an Angular Service that implements filtering to equalize data based on configuration. - -Check out an example usage of the Data Transformer Collate Filter Equals in the `@spryker/table` config: - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer.collate' { - interface DataTransformerFilterRegistry { - equals: EqualsDataTransformerFilterService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - collate: CollateDataTransformerService, - }), - CollateDataTransformer.withFilters({ - equals: EqualsDataTransformerFilterService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Collate Filter Equals: - -```ts -interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/index.md deleted file mode 100644 index b2ff10666a5..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/index.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Data Transformer Filters -description: This document provides details about the Data Transformer Filters service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Collate Filter Equals - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-equals.html - - title: Data Transformer Collate Filter Range - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-range.html - - title: Data Transformer Collate Filter Text - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-text.html ---- - -This document explains the Data Transformer Filters service in the Components Library. - -## Overview - -Data Transformer Filters is an Angular Service that filters data based on configuration. -In this way, backend systems can control where the filter data is applied. - -Data Transformer Filters are used in the Datasource service. - -```html - - -``` - -## Main service - -In the main module, you can register any filters by key by using the static method `withFilters()`. It assigns the object of filters to the `DataTransformerFiltersTypesToken`. - -The main service injects all registered types from the `DataTransformerFiltersTypesToken` and `DataTransformerFilter`. - -`resolve()` method finds specific services from the `DataTransformerFiltersTypesToken` by `type` (from the argument) and returns an observable with data by `DataTransformerFilter.filter()`. - -## Data Transformer Filter - -Data Transformer Filter is basically an Angular Service that encapsulates the filtering logic. - -Data Transformer Filter must implement a specific interface (`DataTransformerFilter`) and then be registered to the Root Module via `CollateDataTransformerModule.withFilters()`. - -```ts -// Module augmentation -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - collate: CollateDataTransformerConfig; - } -} - -declare module '@spryker/data-transformer.collate' { - interface DataTransformerFilterRegistry { - custom: CustomDataTransformerFilterService; - } -} - -// Service implementation -@Injectable({ providedIn: 'root' }) -export class CustomDataTransformerFilterService implements DataTransformerFilter { - filter( - type: DataTransformerFilterRegistryType | string, - data: DataTransformerFilterData, - options: DataTransformerFilterConfig, - byValue: DataTransformerFilterByValue, - transformerByPropName: DataFilterTransformerByPropName, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - CollateDataTransformerModule.withFilters({ - custom: CustomDataTransformerFilterService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the `DataTransformerFilter` configuration and `DataTransformerFilter` type: - -```ts -type DataTransformerFilterData = Record[]; -type DataTransformerFilterByValue = unknown[]; -type DataFilterTransformerByPropName = Record; - -interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} - -interface DataTransformerFilter { - filter( - type: DataTransformerFilterRegistryType | string, - data: DataTransformerFilterData, - options: DataTransformerFilterConfig, - byValue: DataTransformerFilterByValue, - transformerByPropName?: DataFilterTransformerByPropName, - ): Observable; -} -``` - -## Data Transformer Filter types - -There are a few common Data Transformer Filters that are available in UI library as separate packages: - -- [Equals](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-equals.html)—filters values that are strictly equal. -- [Range](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-range.html)—filters values that are within a number range. -- [Text](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-text.html)—filters values that match a string. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/range.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/range.md deleted file mode 100644 index aa3e0f08c5e..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/range.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Data Transformer Collate Filter Range -description: This document provides details about the Data Transformer Collate Filter Range service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Filters - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/collate-data-transformer-filters.html - - title: Data Transformer Collate Filter Equals - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-equals.html - - title: Data Transformer Collate Filter Text - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-text.html ---- - -This document explains the Data Transformer Collate Filter Range service in the Components Library. - -## Overview - -Data Transformer Collate Filter Range is an Angular Service that implements filtering to range of data values based on configuration. - -Check out an example usage of the Data Transformer Collate Filter Range in the `@spryker/table` config: - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer.collate' { - interface DataTransformerFilterRegistry { - range: RangeDataTransformerFilterService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - collate: CollateDataTransformerService, - }), - CollateDataTransformer.withFilters({ - range: RangeDataTransformerFilterService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Collate Filter Range: - -```ts -interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/text.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/text.md deleted file mode 100644 index 0ebb681cd6f..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/filters/text.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Data Transformer Collate Filter Text -description: This document provides details about the Data Transformer Collate Filter Text service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Filters - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/collate-data-transformer-filters.html - - title: Data Transformer Collate Filter Equals - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-equals.html - - title: Data Transformer Collate Filter Range - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-range.html ---- - -This document explains the Data Transformer Collate Filter Text service in the Components Library. - -## Overview - -Data Transformer Collate Filter Text is an Angular Service that implements filtering to the text value of data based on configuration. - -Check out an example usage of the Data Transformer Collate Filter Text in the `@spryker/table` config: - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer.collate' { - interface DataTransformerFilterRegistry { - text: TextDataTransformerFilterService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - collate: CollateDataTransformerService, - }), - CollateDataTransformer.withFilters({ - text: TextDataTransformerFilterService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Collate Filter Text: - -```ts -interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/index.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/index.md deleted file mode 100644 index aa464eeba9c..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/collate/index.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Data Transformer Collate -description: This document provides details about the Data Transformer Collate service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Data Configurators - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-data-configurators.html - - title: Data Transformer Filters - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/collate-data-transformer-filters.html ---- - -This document explains the Data Transformer Collate service in the Components Library. - -## Overview - -Data Transformer Collate is an Angular Service that implements sorting, filtering, and pagination of data based on configuration. -In general, the meaning of the word `collate` is to collect, arrange and assemble in a specific order of sequence. - -```html - - -``` - -## Collate Filters - -Collate Filters are Angular Services that extend filtering in the Data Transformer. -These services are registered via `CollateDataTransformer.withFilters()`. - -There are a few common Data Transformer Collate Filters that are available as separate packages in the UI library: - -- [Equals](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-equals.html)—filters values that are strictly equal. -- [Range](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-range.html)—filters values that are within a number range. -- [Text](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/data-transformer-collate-filter-text.html)—filters values that match a string. - -## Collate Data Configurators - -Data Configurators are Angular Services that enable re-population of data (sorting, pagination, filtering). -These services are registered via `CollateDataTransformer.withConfigurators()`. - -There are a few common Data Transformers Collate Data Configurators that are available: - -- [Table](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-table-configurator.html)—integrates Table into Collate to re-populate data when the table updates. - -## Service registration - -Register the service: - -```ts -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - collate: CollateDataTransformerService, - }), - - // Filters - CollateDataTransformer.withFilters({ - equals: EqualsDataTransformerFilterService, - range: RangeDataTransformerFilterService, - text: TextDataTransformerFilterService, - }), - - // Configurators - CollateDataTransformer.withConfigurators({ - table: TableDataTransformerConfiguratorService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Collate: - -### DataTransformerConfiguratorConfig -* `configurator`—the object with the Data Transformer configurator type and additional properties. -* `filter`—the object based on a specific data property (`filterId`) that defines the properties on which the initial data object is filtered via `DataTransformerFilterConfig`. -* `search`—defines the properties on which the initial data object is filtered via `DataTransformerFilterConfig`. -* `transformerByPropName`—the object with data properties list that needs to be transformed. - -### DataTransformerConfiguratorConfig -`type`—the declared name of the module whose data needs to be transformed. - -### DataTransformerFilterConfig -* `type`—the name of a filter, for example, `range`. -* `propNames`—the array with the property names to which the filter is applied. - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - collate: CollateDataTransformerConfig; - } -} - -export interface CollateDataTransformerConfig extends DataTransformerConfig { - configurator: DataTransformerConfiguratorConfig; - filter?: { - [filterId: string]: DataTransformerFilterConfig; - }; - search?: DataTransformerFilterConfig; - transformerByPropName?: DataFilterTransformerByPropName; -} - -export interface DataTransformerConfiguratorConfig { - type: DataTransformerConfiguratorType; - - // Extra configuration for specific types - [prop: string]: unknown; -} - -export interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} - -export type DataFilterTransformerByPropName = Record; -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/data-transformers.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/data-transformers.md deleted file mode 100644 index 0df08fa1123..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/data-transformers.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Data Transformers -last_updated: Jun 07, 2021 -description: This document provides details about the Data Transformers service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformers service in the Components Library. - -## Overview - -Data Transformers are responsible for transforming data from one form to another based on a certain configuration. -As a result, backend systems can manipulate data without changing the frontend at all (such as table datasource, select datasource). - -Anyone may use the Data Transformer Service to modify data by configuring a specific `DataTransformer`. - -```html - - -``` - -## Main Service - -With the main module, you can register any data transformer by key via the static method `withTransformers()`. This method assigns the data transformer object to the `DataTransformerTypesToken`. - -The main service injects all registered types from the `DataTransformerTypesToken`. - -`transform()` method finds the specific service from the `DataTransformerTypesToken` by `config.type` (from the argument) and returns an observable with data by `DataTransformer.transform()`. - -## Data Transformer - -Data Transformer is an Angular Service that encapsulates the algorithm of how the data is transformed after a response is received. - -Data Transformer must implement a specific interface (`DataTransformer`) and then be registered to the Data Transformer Module via `DataTransformerModule.withTransformers()`, - -```ts -// Module augmentation -import { DataTransformerConfig } from '@spryker/data-transformer'; - -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - 'custom': CustomDataTransformerConfig; - } -} - -export type CustomDataTransformerData = object; -export type CustomDataTransformerDataT = unknown; - -export interface CustomDataTransformerConfig extends DataTransformerConfig { - property: unknown; - ... -} - -// Service implementation -@Injectable({ - providedIn: 'root', -}) -export class CustomDataTransformerService implements - DataTransformer { - transform( - data: CustomDataTransformerData, - config: CustomDataTransformerConfig, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - custom: CustomDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -The context in which the Data Transformer operates is determined by the local injector where it is being used. - -## Interfaces - -Below you can find interfaces for the Data Transformer service configuration and Data Transformer type: - -```ts -interface DataTransformerService { - transform(data: unknown, config: DataTransformerConfig): Observable; -} - -interface DataTransformerConfig { - type: DataTransformerType; - - // Reserved for types that may have extra configuration - [extraConfig: string]: unknown; -} - -interface DataTransformer { - transform( - data: D, - config: DataTransformerConfig, - injector?: Injector, - ): Observable
; -} -``` - -## Data Transformer types - -There are a few common Data Transformers that are available in the UI library as separate packages: - -- [Collate](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/data-transformer-collate.html)—sorts, filters, and paginates data based on configuration. It has extra extension points: - - [Data Configurators](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-data-configurators/collate-data-transformer-data-configurators.html)—are services that allow configuring re-population data (sorting, pagination, filtering). These services are registered via `CollateDataTransformer.withConfigurators()`. There are a few common Collate Data Configurators that are available: - - [Filters](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-collate/collate-data-transformer-filters/collate-data-transformer-filters.html)—are services that extend the filtering. You need to register them via `CollateDataTransformer.withFilters()`. There are a few common Collate Filters that are available: -- [Array-map](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html)—executes another Data Transformer from the config for every object in the array. -- [Chain](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-chain.html)—executes another Data Transformer in sequence via configuration. -- [Date-parse](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html)—parses the string value as a Date ISO into the JS Date Object. -- [Date-serialize](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html)—serializes JS Date Object into a Date ISO string. -- [Lens](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-lens.html)—updates the nested object by path using another Data Transformer set up with a configuration object. -- [Object-map](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html)—executes another Data Transformer from the config for each object in the object. -- [Pluck](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html)—selects and returns a nested object by path via configuration. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-parse.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-parse.md deleted file mode 100644 index d572ed2ae7a..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-parse.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Data Transformer Date-parse -description: This document provides details about the Data Transformer Date-parse service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Date-parse service in the Components Library. - -## Overview - -Data Transformer Date-parse is an Angular Service that parses the string value as a Date ISO into the JS Date Object. - -In the following example, the `datasource` transforms the `date` string into the parsed `date` object. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - 'date-parse': DateParseDataTransformerConfig; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - 'date-parse': DateParseDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Date-parse: - -```ts -export interface DateParseDataTransformerConfig extends DataTransformerConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-serialize.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-serialize.md deleted file mode 100644 index 1183fdde7a3..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/date-serialize.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Data Transformer Date-serialize -description: This document provides details about the Data Transformer Date-serialize service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Date-serialize service in the Components Library. - -## Overview - -Data Transformer Date-serialize is an Angular Service that serializes JS Date Object into a Date ISO string. - -In the following example, the `datasource` transforms `date` object into the serialized `date` string. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - 'date-serialize': DateSerializeDataTransformerConfig; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - 'date-serialize': DateSerializeDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Date-serialize: - -```ts -export interface DateSerializeDataTransformerConfig extends DataTransformerConfig {} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/lens.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/lens.md deleted file mode 100644 index 91ebc4ba7df..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/lens.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Data Transformer Lens -description: This document provides details about the Data Transformer Lens service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Lens service in the Components Library. - -## Overview - -Data Transformer Lens is an Angular Service that updates nested objects by path using another Data Transformer set up with a configuration object. - -In the following example `datasource` will return an object with the transformed `date`. - -Service configuration: - -- `path`—the name of the object property, from which the value needs to be transformed. The `path` may contain nested properties separated by dots, just like in a Javascript language. -- `transformer`—a Data Transformer that is set up with a configuration object. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - lens: LensDataTransformerService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - lens: LensDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Lens: - -```ts -export interface LensDataTransformerConfig extends DataTransformerConfig { - path: string; - transformer: DataTransformerConfig; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/object-map.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/object-map.md deleted file mode 100644 index d72c54a820b..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/object-map.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Data Transformer Object-map -description: This document provides details about the Data Transformer Object-map service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Pluck - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-pluck.html ---- - -This document explains the Data Transformer Object-map service in the Components Library. - -## Overview - -Data Transformer Object-map is an Angular Service that executes another Data Transformer from the config for specific properties in an object. - -In the following example, the `datasource` will return an array with the transformed `date` in every child object. - -Service configuration: - -- `mapProps`—a Data Transformer that is set up with a configuration object. -- `propName`—the name of the property from which the value needs to be transformed. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - 'object-map': ObjectMapDataTransformerConfig; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - 'object-map': ObjectMapDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Object-map: - -```ts -export interface ObjectMapDataTransformerConfig extends DataTransformerConfig { - mapProps: { - [propName: string]: DataTransformerConfig; - }; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/pluck.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/pluck.md deleted file mode 100644 index 409b01e4592..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/data-transformers/pluck.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Data Transformer Pluck -description: This document provides details about the Data Transformer Pluck service in the Components Library. -template: concept-topic-template -related: - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Data Transformer Array-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-array-map.html - - title: Data Transformer Chain - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-chain.html - - title: Data Transformer Date-parse - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-parse.html - - title: Data Transformer Date-serialize - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-date-serialize.html - - title: Data Transformer Lens - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-lens.html - - title: Data Transformer Object-map - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformer-object-map.html ---- - -This document explains the Data Transformer Pluck service in the Components Library. - -## Overview - -Data Transformer Pluck is an Angular Service that selects and returns a nested object by path via configuration. - -The following `datasource` example returns the value of the `three` key ('123') of the `data` input after receiving the response. - -Service configuration: - -- `path`—the name of the property from which the value needs to be retrieved. The `path` may contain nested properties separated by dots, just like in Javascript. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/data-transformer' { - interface DataTransformerRegistry { - pluck: PluckDataTransformerService; - } -} - -@NgModule({ - imports: [ - DataTransformerModule.withTransformers({ - pluck: PluckDataTransformerService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Data Transformer Pluck: - -```ts -export interface PluckDataTransformerConfig extends DataTransformerConfig { - path: string; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-http.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-http.md deleted file mode 100644 index c1cd6cbce67..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-http.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Datasource Http -description: This document provides details about the Datasource Http service in the Components Library. -template: concept-topic-template -related: - - title: Datasources - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasources.html - - title: Datasource Inline Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline-table.html - - title: Datasource Inline - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline.html ---- - -This document explains the Datasource Http service in the Components Library. - -## Overview - -Datasource Http is an Angular Service that fetches data from URLs via HTTP as configured in the Datasource configuration. -Datasource Http supports caching strategy (see [Cache](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/cache/ui-components-library-cache-service.html)) that can be configured via config and used before the request is made, when applicable. - -Check out an example usage of the Datasource Http. - -Service configuration: - -- `type`—a datasource type. -- `url`—a datasource request URL. -- `method`—a datasource request method (`GET` by default). - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/datasource' { - interface DatasourceRegistry { - http: DatasourceHttpService; - } -} - -@NgModule({ - imports: [ - DatasourceModule.withDatasources({ - http: DatasourceHttpService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Datasource Http: - -```ts -export interface DatasourceHttpConfig extends DatasourceConfig { - url: string; - method?: string; - dataIn?: DatasourceHttpConfigDataIn; - cache?: CacheStrategyConfig; -} - -export enum DatasourceHttpConfigDataIn { - Params = 'params', - Body = 'body', -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline-table.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline-table.md deleted file mode 100644 index 5559138d595..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline-table.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Datasource Inline Table -description: This document provides details about the Datasource Inline Table service in the Components Library. -template: concept-topic-template -related: - - title: Datasources - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasources.html - - title: Datasource Http - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-http.html - - title: Datasource Inline - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline.html ---- - -This document explains the Datasource Inline Table service in the Components Library. - -Datasource Inline Table is an Angular Service that allows passing transformed for the table format data along with the configuration of the Datasource. - -Check out an example usage of the Datasource Inline Table. - -Service configuration: - -- `type`-a datasource type. -- `data`-a datasource table data (usually coming from backend). -- `filter`-an array of filters that passes transformed for the table format data. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/datasource' { - interface DatasourceRegistry { - 'inline.table': TableDatasourceInlineService; - } -} - -@NgModule({ - imports: [ - DatasourceModule.withDatasources({ - 'inline.table': TableDatasourceInlineService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Datasource Inline Table: - -```ts -export interface TableDatasourceInlineConfig extends DatasourceConfig { - data: unknown; - filter?: { - [filterId: string]: DataTransformerFilterConfig; - }; - search?: DataTransformerFilterConfig; - transformerByPropName?: Record; -} - -export interface DataTransformerFilterConfig { - type: string; - propNames: string | string[]; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline.md deleted file mode 100644 index efe4d5997ea..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasource-inline.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Datasource Inline -description: This document provides details about the Datasource Inline service in the Components Library. -template: concept-topic-template -related: - - title: Datasources - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasources.html - - title: Datasource Http - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-http.html - - title: Datasource Inline Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline-table.html ---- - -This document explains the Datasource Inline service in the Components Library. - -## Overview - -Datasource Inline is an Angular Service that allows passing data along with the configuration of the Datasource. - -Check out an example usage of the Datasource Inline. - -Service configuration: - -- `type`—a datasource type. -- `data`—a datasource data. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/datasource' { - interface DatasourceRegistry { - inline: DatasourceInlineService; - } -} - -@NgModule({ - imports: [ - DatasourceModule.withDatasources({ - inline: DatasourceInlineService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Datasource Inline: - -```ts -export interface DatasourceInlineConfig extends DatasourceConfig { - data: unknown; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasources.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasources.md deleted file mode 100644 index b38a27db68f..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/datasources/datasources.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Datasources -last_updated: Jun 07, 2021 -description: This document provides details about the Datasources service in the Components Library. -template: concept-topic-template -related: - - title: Datasource Http - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-http.html - - title: Datasource Inline Table - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline-table.html - - title: Datasource Inline - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasource-inline.html ---- - -This document explains the Datasources service in the Components Library. - -## Overview - -Datasources are responsible for providing any data to the system based on a given configuration. -This lets backend systems control where the data is coming from without changing the front-end (ex. table data, select options). - -Datasources are used in other components like Table, Select, Autocomplete. - -```html - - -``` - -## Main Service - -The main module provides an opportunity to register any datasource by key via static method `withDatasources()`. It assigns the object of datasources to the `DatasourceTypesToken` under the hood. - -The main service injects all registered types from the `DatasourceTypesToken` and `DataTransformerService` (see [Data Transformers](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/data-transformers/data-transformers.html)). - -`resolve()` method finds specific service from the `DatasourceTypesToken` by `config.type` (from the argument) and returns observable with data by `Datasource.resolve()`. Data is also transformed by `DataTransformerService` if `config.transform` exists. - -## Datasource - -Datasource is basically an Angular Service that encapsulates the algorithm of how the data is loaded into the Component. - -Datasource must implement a specific interface (Datasource) and then be registered to the Root Module via `DatasourceModule.withDatasources()`. - -```ts -// Module augmentation -import { DatasourceConfig } from '@spryker/datasource'; - -declare module '@spryker/datasource' { - interface DatasourceRegistry { - 'custom': CustomDatasourceService; - } -} - -export interface CustomDatasourceConfig extends DatasourceConfig { - data: unknown; - ... -} - -// Service implementation -@Injectable({ - providedIn: 'root', -}) -export class CustomDatasourceService implements Datasource { - resolve( - injector: Injector, - config: CustomDatasourceConfig, - context?: unknown, - ): Observable { - ... - } -} - -@NgModule({ - imports: [ - DatasourceModule.withDatasources({ - custom: CustomDatasourceService, - }), - ], -}) -export class RootModule {} -``` - -The context within which Datasources operate is defined by the local injector where it’s being used. - -## Interfaces - -Below you can find interfaces for the Datasource configuration and Datasource type: - -```ts -export interface DatasourceConfig { - type: DatasourceType; - transform?: DataTransformerConfig; - - // Specific Datasource types may have custom props - [k: string]: unknown; -} - -export interface Datasource { - resolve( - injector: Injector, - config: DatasourceConfig, - context?: C, - ): Observable; -} -``` - -## Datasource types - -There are a few common Datasources that are available in UI library as separate packages: - -- [HTTP](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/datasources/datasource-http.html)—allows fetching data from URL via HTTP configured in the configuration of the Datasource. - HTTP Datasource supports caching strategy (see [Cache](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/cache/ui-components-library-cache-service.html)) that may be configured via config and used before the request is made when applicable. -- [Inline](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/datasources/datasource-inline.html)—allows passing data along with the configuration of the Datasource. -- [Inline.table](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/datasources/datasource-inline-table.html)—allows passing transformed for the table format data along with the configuration of the Datasource diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.md deleted file mode 100644 index 1d096668bbf..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: In Memory Persistence Strategy -description: This document provides details about the In Memory Persistence Strategy service in the Components Library. -template: concept-topic-template -related: - - title: Persistence - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/persistence.html - - title: Local Storage Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.html - - title: Url Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/url-persistence-strategy.html ---- - -This document explains the In Memory Persistence Strategy service in the Components Library. - -## Overview - -In Memory Persistence Strategy is an Angular Service that stores data in memory and will be lost when the browser page is reloaded. - -Check out an example usage of the In Memory Persistence Strategy. - -Service configuration: - -- `storage`—persistence strategy type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/persistence' { - interface PersistenceStrategyRegistry { - 'in-memory': InMemoryPersistenceStrategy; - } -} - -@NgModule({ - imports: [ - PersistenceModule.withStrategies({ - 'in-memory': InMemoryPersistenceStrategy, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the In Memory Persistence Strategy: - -```ts -interface InMemoryPersistenceStrategy extends PersistenceStrategy { - save(key: string, value: unknown): Observable; - retrieve(key: string): Observable; - remove(key: string): Observable; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.md deleted file mode 100644 index 3c65f227344..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Local Storage Persistence Strategy -description: This document provides details about the Local Storage Persistence Strategy service in the Components Library. -template: concept-topic-template -related: - - title: Persistence - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/persistence.html - - title: In Memory Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.html - - title: Url Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/url-persistence-strategy.html ---- - -This document explains the Local Storage Persistence Strategy service in the Components Library. - -## Overview - -Local Storage Persistence Strategy is an Angular Service that uses browser Local Storage to store the data. - -Check out an example usage of the Local Storage Persistence Strategy. - -Service configuration: - -- `storage`—persistence strategy type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/persistence' { - interface PersistenceStrategyRegistry { - 'local-storage': LocalStoragePersistenceStrategy; - } -} - -@NgModule({ - imports: [ - PersistenceModule.withStrategies({ - 'local-storage': LocalStoragePersistenceStrategy, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Local Storage Persistence Strategy: - -```ts -interface LocalStoragePersistenceStrategy extends PersistenceStrategy { - save(key: string, value: unknown): Observable; - retrieve(key: string): Observable; - remove(key: string): Observable; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/persistence.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/persistence.md deleted file mode 100644 index 766cd9da99e..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/persistence.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Persistence -last_updated: Jun 07, 2021 -description: This document provides details about the Persistence service in the Components Library. -template: concept-topic-template -related: - - title: In Memory Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.html - - title: Local Storage Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.html - - title: Url Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/url-persistence-strategy.html ---- - -This document explains the Persistence service in the Components Library. - -## Overview - -The Persistence Service saves arbitrary data based on the configuration. This lets backend systems use different persistence mechanisms without requiring them to change the frontend (ex. http datasources). - -Anyone may save any data using the Persistence Service. Anyone may use Persistence Strategy Service to select a specific `PersistenceStrategy` based on their configuration. - -Persistence is used in other components like Cache, Table State Sync Feature etc. - -```html - - -``` - -## Main service - -Persistence Strategy is an Angular Service that implements a specific interface (`PersistenceStrategy`) and is registered to the Persistence Module via `PersistenceModule.withStrategies()`. - -The main service injects all registered types from the `PersistenceStrategyTypesToken`. - -`select()` method finds a specific service from the `PersistenceStrategyTypesToken` by type(from the argument) and returns a specific strategy instance (`PersistenceStrategy`). - -`getAll()` method returns an array of instances (`PersistenceStrategy[]`) of all registered strategies from `PersistenceStrategyTypesToken`. - -## Persistence strategy - -Persistence Strategy encapsulates the algorithm of how the data is persisted. - -Persistence Strategy must implement a specific interface (`PersistenceStrategy`) and then be registered to the Root Module via `PersistenceModule.withStrategies()`. - -```ts -// Module augmentation -import { PersistenceStrategy } from '@spryker/persistence'; - -declare module '@spryker/persistence' { - interface PersistenceStrategyRegistry { - 'custom': CustomPersistenceService; - } -} - -// Service implementation -@Injectable({ - providedIn: 'root', -}) -export class CustomPersistenceService implements PersistenceStrategy { - save(key: string, value: unknown): Observable { - ..., - }; - retrieve(key: string): Observable { - ..., - }; - remove(key: string): Observable { - ..., - }; -} - -@NgModule({ - imports: [ - PersistenceModule.withStrategies({ - custom: CustomPersistenceService, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Persistence service: - -```ts -interface PersistenceStrategyService { - select(type: PersistenceStrategyType): PersistenceStrategy; - getAll(): PersistenceStrategy[]; -} - -interface PersistenceStrategy { - save(key: string, value: unknown): Observable; - retrieve(key: string): Observable; - remove(key: string): Observable; -} -``` - -## Persistence strategy types - -There are a few common Persistence Strategies that are available in the UI library: - -- [In-memory](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.html)— - stores data in memory and will be lost when the browser page is reloaded. -- [Local-storage](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.html)—uses browser Local Storage to store the data. -- [Url](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/ui-components-library/persistence/url-persistence-strategy.html)—uses browser URL to store the data. diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/url-persistence-strategy.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/url-persistence-strategy.md deleted file mode 100644 index b7739b3892c..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/persistence/url-persistence-strategy.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Url Persistence Strategy -description: This document provides details about the Url Persistence Strategy service in the Components Library. -template: concept-topic-template -related: - - title: Persistence - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/persistence.html - - title: In Memory Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/in-memory-persistence-strategy.html - - title: Local Storage Persistence Strategy - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/local-storage-persistence-strategy.html ---- - -This document explains the Url Persistence Strategy service in the Components Library. - -## Overview - -Url Persistence Strategy is an Angular Service that uses browser URL to store the data. - -Check out an example usage of the Url Persistence Strategy. - -Service configuration: - -- `storage`—persistence strategy type. - -```html - - -``` - -## Service registration - -Register the service: - -```ts -declare module '@spryker/persistence' { - interface PersistenceStrategyRegistry { - 'url': UrlPersistenceStrategy; - } -} - -@NgModule({ - imports: [ - PersistenceModule.withStrategies({ - 'url': UrlPersistenceStrategy, - }), - ], -}) -export class RootModule {} -``` - -## Interfaces - -Below you can find interfaces for the Url Persistence Strategy: - -```ts -interface UrlPersistenceStrategy extends PersistenceStrategy { - save(key: string, value: unknown): Observable; - retrieve(key: string): Observable; - remove(key: string): Observable; -} -``` diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/ui-components-library.md b/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/ui-components-library.md deleted file mode 100644 index 0b93a509cff..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/ui-components-library/ui-components-library.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: UI Components Library -description: This articles provides details about UI components library. -template: concept-topic-template -related: - - title: Actions - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/actions/ui-components-library-actions.html - - title: Cache - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/cache/ui-components-library-cache-service.html - - title: Data Transformers - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/data-transformers/data-transformers.html - - title: Datasources - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/datasources/datasources.html - - title: Persistence - link: docs/scos/dev/front-end-development/page.version/marketplace/ui-components-library/persistence/persistence.html ---- - -This document provides details about the UI components library. - -## Introduction - -Separate from Spryker Core, there is a set of UI Angular Components that are distributed independently through npm Registry. Each package can be installed through npm or yarn commands: - -```bash -npm install @spryker/package_name -``` - -```bash -yarn add @spryker/package_name -``` - -Under the hood, the UI Angular Components are built using Angular 9, rxjs and Ant Design. These components are used within the Spryker Core modules of the Merchant Portal. You can use them inside the angular ecosystem as default angular components, or you can transform them into web components and reuse them inside the Spryker `twig` modules (see [Web Components](/docs/scos/dev/front-end-development/{{page.version}}/marketplace/web-components.html)). -Many UI Components have extension points, and some of them must be configured on a project-level (e.g `Table`, `Datasource`). - -## UI Components List - -The following is a list of available UI components: - -- @spryker/actions ([npm](https://www.npmjs.com/package/@spryker/actions)) - - @spryker/actions.close-drawer ([npm](https://www.npmjs.com/package/@spryker/actions.close-drawer), [story](https://spy-storybook.web.app/?path=/story/closedraweractionhandlerservice--primary)) - - @spryker/actions.drawer ([npm](https://www.npmjs.com/package/@spryker/actions.drawer), [story](https://spy-storybook.web.app/?path=/story/draweractionhandlerservice--primary)) - - @spryker/actions.http ([npm](https://www.npmjs.com/package/@spryker/actions.http), [story](https://spy-storybook.web.app/?path=/story/httpactionhandlerservice--primary)) - - @spryker/actions.notification ([npm](https://www.npmjs.com/package/@spryker/actions.notification), [story](https://spy-storybook.web.app/?path=/story/notificationactionhandlerservice--primary)) - - @spryker/actions.redirect ([npm](https://www.npmjs.com/package/@spryker/actions.redirect), [story](https://spy-storybook.web.app/?path=/story/redirectactionhandlerservice--primary)) - - @spryker/actions.refresh-drawer ([npm](https://www.npmjs.com/package/@spryker/actions.refresh-drawer), [story](https://spy-storybook.web.app/?path=/story/refreshdraweractionhandlerservice--primary)) - - @spryker/actions.refresh-parent-table ([npm](https://www.npmjs.com/package/@spryker/actions.refresh-parent-table), [story](https://spy-storybook.web.app/?path=/story/refreshparenttableactionhandlerservice--primary)) - - @spryker/actions.refresh-table ([npm](https://www.npmjs.com/package/@spryker/actions.refresh-table), [story](https://spy-storybook.web.app/?path=/story/refreshtableactionhandlerservice--primary)) -- @spryker/ajax-action ([npm](https://www.npmjs.com/package/@spryker/ajax-action), [story](https://spy-storybook.web.app/?path=/story/ajaxactioncomponent--primary)) -- @spryker/ajax-form ([npm](https://www.npmjs.com/package/@spryker/ajax-form), [story](https://spy-storybook.web.app/?path=/story/ajaxformcomponent--primary)) -- @spryker/autocomplete ([npm](https://www.npmjs.com/package/@spryker/autocomplete), [story](https://spy-storybook.web.app/?path=/story/autocompletecomponent--primary)) -- @spryker/button ([npm](https://www.npmjs.com/package/@spryker/button), stories: [core](https://spy-storybook.web.app/?path=/story/buttoncomponent--primary), [link](https://spy-storybook.web.app/?path=/story/buttonlinkcomponent--primary), [toggle](https://spy-storybook.web.app/?path=/story/buttontogglecomponent--primary), [ajax](https://spy-storybook.web.app/?path=/story/buttonajaxcomponent--primary)) -- @spryker/button.action ([npm](https://www.npmjs.com/package/@spryker/button.action), [story](https://spy-storybook.web.app/?path=/story/buttonactioncomponent--primary)) -- @spryker/button.icon ([npm](https://www.npmjs.com/package/@spryker/button.icon), [story](https://spy-storybook.web.app/?path=/story/buttoniconcomponent--primary)) -- @spryker/cache ([npm](https://www.npmjs.com/package/@spryker/cache)) -- @spryker/cache.static ([npm](https://www.npmjs.com/package/@spryker/cache.static)) -- @spryker/card ([npm](https://www.npmjs.com/package/@spryker/card), [story](https://spy-storybook.web.app/?path=/story/cardcomponent--primary)) -- @spryker/checkbox ([npm](https://www.npmjs.com/package/@spryker/checkbox), [story](https://spy-storybook.web.app/?path=/story/checkboxcomponent--primary)) -- @spryker/chips ([npm](https://www.npmjs.com/package/@spryker/chips), [story](https://spy-storybook.web.app/?path=/story/chipscomponent--primary)) -- @spryker/collapsible ([npm](https://www.npmjs.com/package/@spryker/collapsible), [story](https://spy-storybook.web.app/?path=/story/collapsiblecomponent--primary)) -- @spryker/data-serializer ([npm](https://www.npmjs.com/package/@spryker/data-serializer)) -- @spryker/data-transformer ([npm](https://www.npmjs.com/package/@spryker/data-transformer)) - - @spryker/data-transformer.array-map ([npm](https://www.npmjs.com/package/@spryker/data-transformer.array-map)) - - @spryker/data-transformer.chain ([npm](https://www.npmjs.com/package/@spryker/data-transformer.chain)) - - @spryker/data-transformer.collate ([npm](https://www.npmjs.com/package/@spryker/data-transformer.collate)) - - @spryker/data-transformer.configurator.table ([npm](https://www.npmjs.com/package/@spryker/data-transformer.configurator.table)) - - @spryker/data-transformer.date-parse ([npm](https://www.npmjs.com/package/@spryker/data-transformer.date-parse)) - - @spryker/data-transformer.date-serialize ([npm](https://www.npmjs.com/package/@spryker/data-transformer.date-serialize)) - - @spryker/data-transformer.filter.equals ([npm](https://www.npmjs.com/package/@spryker/data-transformer.filter.equals)) - - @spryker/data-transformer.filter.range ([npm](https://www.npmjs.com/package/@spryker/data-transformer.filter.range)) - - @spryker/data-transformer.filter.text ([npm](https://www.npmjs.com/package/@spryker/data-transformer.filter.text)) - - @spryker/data-transformer.lens ([npm](https://www.npmjs.com/package/@spryker/data-transformer.lens)) - - @spryker/data-transformer.object-map ([npm](https://www.npmjs.com/package/@spryker/data-transformer.object-map)) - - @spryker/data-transformer.pluck ([npm](https://www.npmjs.com/package/@spryker/data-transformer.pluck)) -- @spryker/datasource ([npm](https://www.npmjs.com/package/@spryker/datasource)) -- @spryker/datasource.http ([npm](https://www.npmjs.com/package/@spryker/datasource.http)) -- @spryker/datasource.inline ([npm](https://www.npmjs.com/package/@spryker/datasource.inline), [story](https://spy-storybook.web.app/?path=/story/datasourceinline--primary)) -- @spryker/datasource.inline.table ([npm](https://www.npmjs.com/package/@spryker/datasource.inline.table), [story](https://spy-storybook.web.app/?path=/story/tabledatasourceinlineservice--with-table)) -- @spryker/date-picker ([npm](https://www.npmjs.com/package/@spryker/date-picker), [story](https://spy-storybook.web.app/?path=/story/datepickercomponent--primary)) -- @spryker/drawer ([npm](https://www.npmjs.com/package/@spryker/drawer), [story](https://spy-storybook.web.app/?path=/story/drawerscomponent--primary)) -- @spryker/dropdown ([npm](https://www.npmjs.com/package/@spryker/dropdown), [story](https://spy-storybook.web.app/?path=/story/dropdowncomponent--primary)) -- @spryker/form-item ([npm](https://www.npmjs.com/package/@spryker/form-item), [story](https://spy-storybook.web.app/?path=/story/formitemcomponent--primary)) -- @spryker/grid ([npm](https://www.npmjs.com/package/@spryker/grid), [story](https://spy-storybook.web.app/?path=/story/gridcomponent--primary)) -- @spryker/header ([npm](https://www.npmjs.com/package/@spryker/header), [story](https://spy-storybook.web.app/?path=/story/headercomponent--primary)) -- @spryker/headline ([npm](https://www.npmjs.com/package/@spryker/headline), [story](https://spy-storybook.web.app/?path=/story/headlinecomponent--primary)) -- @spryker/html-renderer ([npm](https://www.npmjs.com/package/@spryker/html-renderer), [story](https://spy-storybook.web.app/?path=/story/htmlrenderercomponent--with-static-html)) -- @spryker/icon ([npm](https://www.npmjs.com/package/@spryker/icon), [story](https://spy-storybook.web.app/?path=/story/iconcomponent--all-icons)) -- @spryker/input ([npm](https://www.npmjs.com/package/@spryker/input), [story](https://spy-storybook.web.app/?path=/story/inputcomponent--primary)) -- @spryker/input.password ([npm](https://www.npmjs.com/package/@spryker/input.password), [story](https://spy-storybook.web.app/?path=/story/inputpasswordcomponent--primary)) -- @spryker/interception ([npm](https://www.npmjs.com/package/@spryker/interception)) -- @spryker/label ([npm](https://www.npmjs.com/package/@spryker/label), [story](https://spy-storybook.web.app/?path=/story/labelcomponent--primary)) -- @spryker/layout ([npm](https://www.npmjs.com/package/@spryker/layout), [story](https://spy-storybook.web.app/?path=/story/layoutcomponent--primary)) -- @spryker/link ([npm](https://www.npmjs.com/package/@spryker/link), [story](https://spy-storybook.web.app/?path=/story/linkcomponent--primary)) -- @spryker/locale ([npm](https://www.npmjs.com/package/@spryker/locale), stories: [switcher](https://spy-storybook.web.app/?path=/story/localeswitchercomponent--primary), [modules](https://spy-storybook.web.app/?path=/story/localemodule--de)) -- @spryker/logo ([npm](https://www.npmjs.com/package/@spryker/logo), [story](https://spy-storybook.web.app/?path=/story/logocomponent--primary)) -- @spryker/modal ([npm](https://www.npmjs.com/package/@spryker/modal), [story](https://spy-storybook.web.app/?path=/story/modalcomponent--primary)) -- @spryker/navigation ([npm](https://www.npmjs.com/package/@spryker/navigation), [story](https://spy-storybook.web.app/?path=/story/navigationcomponent--primary)) -- @spryker/notification ([npm](https://www.npmjs.com/package/@spryker/notification), [story](https://spy-storybook.web.app/?path=/story/notificationcomponent--primary)) -- @spryker/pagination ([npm](https://www.npmjs.com/package/@spryker/pagination), [story](https://spy-storybook.web.app/?path=/story/paginationcomponent--primary)) -- @spryker/persistence ([npm](https://www.npmjs.com/package/@spryker/persistence)) -- @spryker/popover ([npm](https://www.npmjs.com/package/@spryker/popover), [story](https://spy-storybook.web.app/?path=/story/popovercomponent--popover)) -- @spryker/radio ([npm](https://www.npmjs.com/package/@spryker/radio), stories: [component](https://spy-storybook.web.app/?path=/story/radiocomponent--primary), [group](https://spy-storybook.web.app/?path=/story/radiogroupcomponent--primary)) -- @spryker/select ([npm](https://www.npmjs.com/package/@spryker/select), [story](https://spy-storybook.web.app/?path=/story/selectcomponent--primary)) -- @spryker/sidebar ([npm](https://www.npmjs.com/package/@spryker/sidebar), [story](https://spy-storybook.web.app/?path=/story/sidebarcomponent--primary)) -- @spryker/spinner ([npm](https://www.npmjs.com/package/@spryker/spinner), [story](https://spy-storybook.web.app/?path=/story/spinnercomponent--primary)) -- @spryker/styles ([npm](https://www.npmjs.com/package/@spryker/styles)) -- @spryker/table ([npm](https://www.npmjs.com/package/@spryker/table), [story](https://spy-storybook.web.app/?path=/story/tablecomponent--primary)) - - @spryker/table.column.autocomplete ([npm](https://www.npmjs.com/package/@spryker/table.column.autocomplete), [story](https://spy-storybook.web.app/?path=/story/tablecolumnautocompletecomponent--primary)) - - @spryker/table.column.chip ([npm](https://www.npmjs.com/package/@spryker/table.column.chip), [story](https://spy-storybook.web.app/?path=/story/tablecolumnchipcomponent--primary)) - - @spryker/table.column.date ([npm](https://www.npmjs.com/package/@spryker/table.column.date), [story](https://spy-storybook.web.app/?path=/story/tablecolumndatecomponent--primary)) - - @spryker/table.column.dynamic ([npm](https://www.npmjs.com/package/@spryker/table.column.dynamic), [story](https://spy-storybook.web.app/?path=/story/tablecolumndynamiccomponent--primary)) - - @spryker/table.column.image ([npm](https://www.npmjs.com/package/@spryker/table.column.image), [story](https://spy-storybook.web.app/?path=/story/tablecolumnimagecomponent--primary)) - - @spryker/table.column.input ([npm](https://www.npmjs.com/package/@spryker/table.column.input), [story](https://spy-storybook.web.app/?path=/story/tablecolumninputcomponent--primary)) - - @spryker/table.column.select ([npm](https://www.npmjs.com/package/@spryker/table.column.select), [story](https://spy-storybook.web.app/?path=/story/tablecolumnselectcomponent--primary)) - - @spryker/table.column.text ([npm](https://www.npmjs.com/package/@spryker/table.column.text), [story](https://spy-storybook.web.app/?path=/story/tablecolumntextcomponent--primary)) - - @spryker/table.feature.batch-actions ([npm](https://www.npmjs.com/package/@spryker/table.feature.batch-actions), [story](https://spy-storybook.web.app/?path=/story/tablebatchactionsfeaturecomponent--via-html)) - - @spryker/table.feature.editable ([npm](https://www.npmjs.com/package/@spryker/table.feature.editable), [story](https://spy-storybook.web.app/?path=/story/tableeditablefeaturecomponent--via-html)) - - @spryker/table.feature.filters ([npm](https://www.npmjs.com/package/@spryker/table.feature.filters), [story](https://spy-storybook.web.app/?path=/story/tablefiltersfeaturecomponent--via-html)) - - @spryker/table.feature.pagination ([npm](https://www.npmjs.com/package/@spryker/table.feature.pagination), [story](https://spy-storybook.web.app/?path=/story/tablepaginationfeaturecomponent--via-html)) - - @spryker/table.feature.row-actions ([npm](https://www.npmjs.com/package/@spryker/table.feature.row-actions), [story](https://spy-storybook.web.app/?path=/story/tablerowactionsfeaturecomponent--via-html)) - - @spryker/table.feature.search ([npm](https://www.npmjs.com/package/@spryker/table.feature.search), [story](https://spy-storybook.web.app/?path=/story/tablesearchfeaturecomponent--via-html)) - - @spryker/table.feature.selectable ([npm](https://www.npmjs.com/package/@spryker/table.feature.selectable), [story](https://spy-storybook.web.app/?path=/story/tableselectablefeaturecomponent--via-html)) - - @spryker/table.feature.settings ([npm](https://www.npmjs.com/package/@spryker/table.feature.settings), [story](https://spy-storybook.web.app/?path=/story/tablesettingsfeaturecomponent--via-html)) - - @spryker/table.feature.sync-state ([npm](https://www.npmjs.com/package/@spryker/table.feature.sync-state), [story](https://spy-storybook.web.app/?path=/story/tablesyncstatefeaturecomponent--via-html)) - - @spryker/table.feature.title ([npm](https://www.npmjs.com/package/@spryker/table.feature.title), [story](https://spy-storybook.web.app/?path=/story/tabletitlefeaturecomponent--via-html)) - - @spryker/table.feature.total ([npm](https://www.npmjs.com/package/@spryker/table.feature.total), [story](https://spy-storybook.web.app/?path=/story/tabletotalfeaturecomponent--via-html)) - - @spryker/table.filter.date-range ([npm](https://www.npmjs.com/package/@spryker/table.filter.date-range), [story](https://spy-storybook.web.app/?path=/story/tablefilterdaterangecomponent--via-html)) - - @spryker/table.filter.select ([npm](https://www.npmjs.com/package/@spryker/table.filter.select), [story](https://spy-storybook.web.app/?path=/story/tablefiltersselectcomponent--via-html)) - - @spryker/table.filter.tree-select ([npm](https://www.npmjs.com/package/@spryker/table.filter.tree-select), [story](https://spy-storybook.web.app/?path=/story/tablefiltertreeselectcomponent--via-html)) -- @spryker/tabs ([npm](https://www.npmjs.com/package/@spryker/tabs), [story](https://spy-storybook.web.app/?path=/story/tabscomponent--primary)) -- @spryker/textarea ([npm](https://www.npmjs.com/package/@spryker/textarea), [story](https://spy-storybook.web.app/?path=/story/textareacomponent--primary)) -- @spryker/toggle ([npm](https://www.npmjs.com/package/@spryker/toggle), [story](https://spy-storybook.web.app/?path=/story/togglecomponent--primary)) -- @spryker/tree-select ([npm](https://www.npmjs.com/package/@spryker/tree-select), [story](https://spy-storybook.web.app/?path=/story/treeselectcomponent--primary)) -- @spryker/unsaved-changes ([npm](https://www.npmjs.com/package/@spryker/unsaved-changes)) - - @spryker/unsaved-changes.guard.browser ([npm](https://www.npmjs.com/package/@spryker/unsaved-changes.guard.browser)) - - @spryker/unsaved-changes.guard.drawer ([npm](https://www.npmjs.com/package/@spryker/unsaved-changes.guard.drawer), [story](https://spy-storybook.web.app/?path=/story/unsavedchangesguarddrawer--primary)) - - @spryker/unsaved-changes.guard.navigation ([npm](https://www.npmjs.com/package/@spryker/unsaved-changes.guard.navigation), [story](https://spy-storybook.web.app/?path=/story/unsavedchangesguardnavigation--primary)) - - @spryker/unsaved-changes.monitor.form ([npm](https://www.npmjs.com/package/@spryker/unsaved-changes.monitor.form), [story](https://spy-storybook.web.app/?path=/story/unsavedchangesmonitorform--primary)) -- @spryker/user-menu ([npm](https://www.npmjs.com/package/@spryker/user-menu), [story](https://spy-storybook.web.app/?path=/story/usermenucomponent--primary)) -- @spryker/utils ([npm](https://www.npmjs.com/package/@spryker/utils)) -- @spryker/utils.date.adapter.date-fns ([npm](https://www.npmjs.com/package/@spryker/utils.date.adapter.date-fns)) -- @spryker/web-components ([npm](https://www.npmjs.com/package/@spryker/web-components)) diff --git a/docs/scos/dev/front-end-development/202108.0/marketplace/web-components.md b/docs/scos/dev/front-end-development/202108.0/marketplace/web-components.md deleted file mode 100644 index 0b1bd5bf0ed..00000000000 --- a/docs/scos/dev/front-end-development/202108.0/marketplace/web-components.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Web Components -description: This document provides details how web components are used and what their function is in the Merchant Portal Frontend. -template: concept-topic-template -related: - - title: Angular Components - link: docs/scos/dev/front-end-development/page.version/marketplace/angular-components.html - - title: Angular Services - link: docs/scos/dev/front-end-development/page.version/marketplace/angular-services.html ---- - -This document provides details how web components are used and what their function is in the Merchant Portal Frontend. - -## Introduction - -Merchant Portal is primarily developed using Angular Components and Angular infrastructure. Twig exposes a component as a *Web Component* when it needs to be accessed from Twig. -Internal components will remain as Angular Components unless they are required to be used from the Twig side. - -## Overview - -Web Components are a collection of technologies for creating reusable custom elements—with their functionality encapsulated away from the rest of your code and incorporated into your web applications. - -Below is an example of how to register Angular components as web components: - -```ts -import { NgModule } from '@angular/core'; -import { WebComponentsModule } from '@spryker/web-components'; - -import { SomeComponentComponent } from './some-component/some-component.component'; -import { SomeComponentModule } from './some-component/some-component.module'; - -@NgModule({ - imports: [ - WebComponentsModule.withComponents([SomeComponentComponent]), - SomeComponentModule, - ], - providers: [], -}) -export class ComponentsModule {} -``` - -In the registration process, web components will automatically get a `web` prefix to their selectors. Selectors can also be customized. - -```ts -import { NgModule } from '@angular/core'; -import { WebComponentsModule } from '@spryker/web-components'; - -import { SomeComponentComponent } from './some-component/some-component.component'; -import { SomeComponentModule } from './some-component/some-component.module'; - -@NgModule({ - imports: [ - WebComponentsModule.withComponents([ - { - selector: 'new-web-component-selector', - component: SomeComponentComponent, - }, - ]), - SomeComponentModule, - ], - providers: [], -}) -export class ComponentsModule {} -``` - -The complete process of creating a new module and registering it as a web component can be found in the [How-To: Create a new Angular module with application](/docs/scos/dev/tutorials-and-howtos/howtos/howto-create-an-angular-module-with-application.html). diff --git a/docs/scos/dev/front-end-development/202212.0/oryx/oryx-compositions.md b/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-compositions.md similarity index 97% rename from docs/scos/dev/front-end-development/202212.0/oryx/oryx-compositions.md rename to docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-compositions.md index af4860346fd..25400667eda 100644 --- a/docs/scos/dev/front-end-development/202212.0/oryx/oryx-compositions.md +++ b/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-compositions.md @@ -15,7 +15,7 @@ Compositions take a data-driven approach, letting you configure the composition - Avoid hard-coded page layout: By using data to configure compositions, you can avoid hardcoding the page layout in your application code. Instead, you can define the structure and layout of your pages using external data, making it more flexible and easier to customize. -- Upgradable composition: A configurable data set is easier to upgrade. Instead of upgrading to a hardcoded component structure, you can select an alternative data set that will hold new components. This makes it easier to _opt in_ to alternative compositions. +- Upgradable composition: A configurable data set is easier to upgrade. Instead of upgrading to a hardcoded component structure, you can select an alternative data set to hold new components. This makes it easier to _opt in_ to alternative compositions. - No-code customizations: The data-driven approach enables no-code customizations of the compositions. With the use of a What You See Is What You Get (WYSIWYG) tool, non-technical users can easily modify a composition by adjusting the data configuration without the need to edit the underlying code. diff --git a/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-pages.md b/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-pages.md new file mode 100644 index 00000000000..bfb95a4bdaa --- /dev/null +++ b/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-pages.md @@ -0,0 +1,194 @@ +--- +title: "Oryx: Creating pages" +description: Pages can be created from a data set or custom components +last_updated: Aug 1, 2023 +template: concept-topic-template +--- + +In Oryx, pages are essential building blocks of web applications. They represent different sections or views within an application and can be created using a data-driven approach. This approach lets you define the composition and layout of pages using external data sources, making it easier to maintain, customize, and optimize your application. + +Oryx provides standard pages, like home, login, or search page, in [application presets](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-presets.html). Using presets gets you up and running fast. This document shows you how to provide custom pages or apply small customization on top of the standard preset pages. + +## Understanding pages and compositions + +Pages in Oryx are represented as [compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html), which are collections of components organized in a specific order. Compositions enable you to define the structure and layout of pages without hardcoding them in the code. This [separation of concerns](https://en.wikipedia.org/wiki/Separation_of_concerns) makes your components more reusable and less tied to specific pages. + +Oryx leverages a data-driven approach for creating pages, letting you configure the composition and content of pages using external data sources. For the advantages and technical details, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html). + +## Creating pages with page components + +While Oryx promotes the data-driven approach for creating pages, you can create page components and assign them directly to routes. + +## Creating pages by data + +The `Page` component type is used to create pages. A page is defined as a composition that can hold other compositions and components. Here's an example of a page defined as a composition: + +```ts +export const cartPage: ExperienceComponent = { + id: "cart-page", + type: "Page", + meta: { + title: "Cart Page", + description: "Cart Page Description", + }, + options: { + // add component options here + }, + components: [ + // add your components here + ], +}; +``` + +### Configuring content for a route + +You can configure the matching URL of a page using the `meta.route` field. This lets you define which URL the page should be rendered on. + +Here's an example of how to configure the route of a page: + +```ts +export const cartPage: ExperienceComponent = { + id: "cart-page", + type: "Page", + meta: { + route: "/cart", + }, +}; +``` + +In this example, the `route` field is set to `/cart`, so the page is rendered when the `/cart` URL is visited. + +{% info_block infoBox "Routing" %} + +Changing the route of a page content is not changing the related route. To change a route, you need to configure the [routing](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-routing.html). + +{% endinfo_block %} + +## Customizing pages and page content + +Oryx enables you to provide custom experience data or change the existing data of pages. This gives you the flexibility to tailor the compositions to specific needs and business requirements. + +### Providing custom data + +You can provide custom experience data using Oryx's [dependency injection system](/docs/scos/dev/front-end-development/{{page.version}}/oryx/dependency-injection/dependency-injection-providing-services.html). + +A small utility function is available from the experience package to add custom data: + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; +import { customPage } from "./custom/page"; + +export const app = appBuilder() + .withProviders(provideExperienceData(customData)) + .create(); +``` + +### Custom data + +The data that you can provide is typed in the `ExperienceComponent` type. You can create a page structure by leveraging compositions, layout, and existing components in a standard way. + +The following example shows how a single text component is added to the structure. + +```ts +const customHomePage: ExperienceComponent = { + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, +}; +``` + +The following example shows a more complex variation, where the text component is wrapped inside a composition and is rendered in a grid layout: + +```ts +const customHomePage: ExperienceComponent = { + type: "oryx-composition", + id: "home-hero", + options: { + rules: [ + { + layout: "grid", + }, + ], + }, + components: [ + { + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, + }, + ], +}; +``` + +### Merge selector + +To replace existing content provided by [presets](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-presets.html), you need to define the content that you want to merge and, optionally, the merge strategy. + +The selected content is defined by the `merge.selector` field. The following example shows how the provided data replaces the home page. + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; + +export const app = appBuilder() + .withProviders( + provideExperienceData({ + merge: { + selector: "#home-page", + }, + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, + }) + ) + .create(); +``` + +Selectors use the following syntax: + +- Select a page with the `#` prefix—for example, `#home-page`. +- Select a component globally by `id`—for example, `my-composition`. +- Select components by `id` or `tag`—for example, `oryx-product-title`. +- Chain selects, using the dot notation—for example, `#home-page.my-composition.oryx-product-title`. +- Skip parts of the component tree—for example, `#home-page.oryx-product-title` rather than `#home-page.my-composition.oryx-product-title`. + +Using this syntax gives you the flexibility to apply changes in multiple, any, or specific pages. + +### Merge strategies + +When you do not provide a merge `type`, by default, the selected component is replaced. Alternative types can be configured in the `merge.type` field. + +The following example shows how to _merge_ content in an existing component. + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; + +export const app = appBuilder() + .withProviders( + provideExperienceData({ + merge: { + selector: "site-logo", + type: "patch", + }, + content: { + data: { + graphic: null, + image: + "https://www.coca-colacompany.com/content/dam/company/us/en/the-coca-cola-company-logo.svg", + }, + }, + }) + ) + .create(); +``` + +The following table gives an overview of the various merge types. + +| STRATEGY | DESCRIPTION | +| ---- | - | +| `replace` (default) | Replaces the selected element with the given content. | +| `patch` | Patches the selected component with the given component. This includes both the component options and content. All data, except for arrays, is deep-merged. | +| `remove` | Removes the selected component. | +| `before` | Adds the content before the selected component. | +| `after` | Adds the content after the selected component. | +| `append` | Adds the content after the last component of the composition components. If the selected component is not a composition, the custom component is not merged. | +| `prepend` | Adds the content before the first component of the composition components. If the selected component is not a composition, the custom component is not merged. | diff --git a/docs/scos/dev/front-end-development/202212.0/oryx/oryx-routing.md b/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-routing.md similarity index 100% rename from docs/scos/dev/front-end-development/202212.0/oryx/oryx-routing.md rename to docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-routing.md diff --git a/docs/scos/dev/front-end-development/202212.0/oryx/oryx-feature-sets.md b/docs/scos/dev/front-end-development/202212.0/oryx/oryx-feature-sets.md index eea5fadd1db..75b23dac1d0 100644 --- a/docs/scos/dev/front-end-development/202212.0/oryx/oryx-feature-sets.md +++ b/docs/scos/dev/front-end-development/202212.0/oryx/oryx-feature-sets.md @@ -83,7 +83,7 @@ export const loginPage = { }; ``` -To better understand the data structure, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-compositions.html). +To better understand the data structure, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html). By utilizing the static experience data provided in Oryx presets, you can easily set up the overall structure and layout of your application, including common sections like the header and footer, without having to write the code from scratch. diff --git a/docs/scos/dev/front-end-development/202307.0/oryx/oryx-compositions.md b/docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-compositions.md similarity index 100% rename from docs/scos/dev/front-end-development/202307.0/oryx/oryx-compositions.md rename to docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-compositions.md diff --git a/docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-pages.md b/docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-pages.md new file mode 100644 index 00000000000..bfb95a4bdaa --- /dev/null +++ b/docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-pages.md @@ -0,0 +1,194 @@ +--- +title: "Oryx: Creating pages" +description: Pages can be created from a data set or custom components +last_updated: Aug 1, 2023 +template: concept-topic-template +--- + +In Oryx, pages are essential building blocks of web applications. They represent different sections or views within an application and can be created using a data-driven approach. This approach lets you define the composition and layout of pages using external data sources, making it easier to maintain, customize, and optimize your application. + +Oryx provides standard pages, like home, login, or search page, in [application presets](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-presets.html). Using presets gets you up and running fast. This document shows you how to provide custom pages or apply small customization on top of the standard preset pages. + +## Understanding pages and compositions + +Pages in Oryx are represented as [compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html), which are collections of components organized in a specific order. Compositions enable you to define the structure and layout of pages without hardcoding them in the code. This [separation of concerns](https://en.wikipedia.org/wiki/Separation_of_concerns) makes your components more reusable and less tied to specific pages. + +Oryx leverages a data-driven approach for creating pages, letting you configure the composition and content of pages using external data sources. For the advantages and technical details, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html). + +## Creating pages with page components + +While Oryx promotes the data-driven approach for creating pages, you can create page components and assign them directly to routes. + +## Creating pages by data + +The `Page` component type is used to create pages. A page is defined as a composition that can hold other compositions and components. Here's an example of a page defined as a composition: + +```ts +export const cartPage: ExperienceComponent = { + id: "cart-page", + type: "Page", + meta: { + title: "Cart Page", + description: "Cart Page Description", + }, + options: { + // add component options here + }, + components: [ + // add your components here + ], +}; +``` + +### Configuring content for a route + +You can configure the matching URL of a page using the `meta.route` field. This lets you define which URL the page should be rendered on. + +Here's an example of how to configure the route of a page: + +```ts +export const cartPage: ExperienceComponent = { + id: "cart-page", + type: "Page", + meta: { + route: "/cart", + }, +}; +``` + +In this example, the `route` field is set to `/cart`, so the page is rendered when the `/cart` URL is visited. + +{% info_block infoBox "Routing" %} + +Changing the route of a page content is not changing the related route. To change a route, you need to configure the [routing](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-routing.html). + +{% endinfo_block %} + +## Customizing pages and page content + +Oryx enables you to provide custom experience data or change the existing data of pages. This gives you the flexibility to tailor the compositions to specific needs and business requirements. + +### Providing custom data + +You can provide custom experience data using Oryx's [dependency injection system](/docs/scos/dev/front-end-development/{{page.version}}/oryx/dependency-injection/dependency-injection-providing-services.html). + +A small utility function is available from the experience package to add custom data: + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; +import { customPage } from "./custom/page"; + +export const app = appBuilder() + .withProviders(provideExperienceData(customData)) + .create(); +``` + +### Custom data + +The data that you can provide is typed in the `ExperienceComponent` type. You can create a page structure by leveraging compositions, layout, and existing components in a standard way. + +The following example shows how a single text component is added to the structure. + +```ts +const customHomePage: ExperienceComponent = { + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, +}; +``` + +The following example shows a more complex variation, where the text component is wrapped inside a composition and is rendered in a grid layout: + +```ts +const customHomePage: ExperienceComponent = { + type: "oryx-composition", + id: "home-hero", + options: { + rules: [ + { + layout: "grid", + }, + ], + }, + components: [ + { + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, + }, + ], +}; +``` + +### Merge selector + +To replace existing content provided by [presets](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-presets.html), you need to define the content that you want to merge and, optionally, the merge strategy. + +The selected content is defined by the `merge.selector` field. The following example shows how the provided data replaces the home page. + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; + +export const app = appBuilder() + .withProviders( + provideExperienceData({ + merge: { + selector: "#home-page", + }, + type: "oryx-content-text", + content: { data: { text: "

Home page

" } }, + }) + ) + .create(); +``` + +Selectors use the following syntax: + +- Select a page with the `#` prefix—for example, `#home-page`. +- Select a component globally by `id`—for example, `my-composition`. +- Select components by `id` or `tag`—for example, `oryx-product-title`. +- Chain selects, using the dot notation—for example, `#home-page.my-composition.oryx-product-title`. +- Skip parts of the component tree—for example, `#home-page.oryx-product-title` rather than `#home-page.my-composition.oryx-product-title`. + +Using this syntax gives you the flexibility to apply changes in multiple, any, or specific pages. + +### Merge strategies + +When you do not provide a merge `type`, by default, the selected component is replaced. Alternative types can be configured in the `merge.type` field. + +The following example shows how to _merge_ content in an existing component. + +```ts +import { appBuilder } from "@spryker-oryx/application"; +import { provideExperienceData } from "@spryker-oryx/experience"; + +export const app = appBuilder() + .withProviders( + provideExperienceData({ + merge: { + selector: "site-logo", + type: "patch", + }, + content: { + data: { + graphic: null, + image: + "https://www.coca-colacompany.com/content/dam/company/us/en/the-coca-cola-company-logo.svg", + }, + }, + }) + ) + .create(); +``` + +The following table gives an overview of the various merge types. + +| STRATEGY | DESCRIPTION | +| ---- | - | +| `replace` (default) | Replaces the selected element with the given content. | +| `patch` | Patches the selected component with the given component. This includes both the component options and content. All data, except for arrays, is deep-merged. | +| `remove` | Removes the selected component. | +| `before` | Adds the content before the selected component. | +| `after` | Adds the content after the selected component. | +| `append` | Adds the content after the last component of the composition components. If the selected component is not a composition, the custom component is not merged. | +| `prepend` | Adds the content before the first component of the composition components. If the selected component is not a composition, the custom component is not merged. | diff --git a/docs/scos/dev/front-end-development/202307.0/oryx/oryx-routing.md b/docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-routing.md similarity index 100% rename from docs/scos/dev/front-end-development/202307.0/oryx/oryx-routing.md rename to docs/scos/dev/front-end-development/202307.0/oryx/building-pages/oryx-routing.md diff --git a/docs/scos/dev/front-end-development/202307.0/oryx/oryx-feature-sets.md b/docs/scos/dev/front-end-development/202307.0/oryx/oryx-feature-sets.md index 2d6a814dca2..255890dbd7f 100644 --- a/docs/scos/dev/front-end-development/202307.0/oryx/oryx-feature-sets.md +++ b/docs/scos/dev/front-end-development/202307.0/oryx/oryx-feature-sets.md @@ -85,7 +85,7 @@ export const loginPage = { }; ``` -To better understand the data structure, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/oryx-compositions.html). +To better understand the data structure, see [Compositions](/docs/scos/dev/front-end-development/{{page.version}}/oryx/building-pages/oryx-compositions.html). By utilizing the static experience data provided in Oryx presets, you can easily set up the overall structure and layout of your application, including common sections like the header and footer, without having to write the code from scratch. diff --git a/docs/scos/dev/glue-api-guides/201811.0/authentication-and-authorization.md b/docs/scos/dev/glue-api-guides/201811.0/authentication-and-authorization.md deleted file mode 100644 index 6b274a6ceba..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/authentication-and-authorization.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Authentication and Authorization -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/authentication-and-authorization -originalArticleId: 5555295f-2ede-43ad-86e4-ba8c03dd7968 -redirect_from: - - /v1/docs/authentication-and-authorization - - /v1/docs/en/authentication-and-authorization ---- - -Some resources (see the List of the private resources below) in Spryker REST API require user authentication. This process is essential to protect sensitive data and resources from unauthorized access. For this purpose, Spryker implements the OAuth 2.0 mechanism for user authentication. On the REST API level, it is represented by the **Login API**. - -To get access to a protected resource, first, you need to obtain an **Access Token**. We use JWT tokens required for Spryker Glue to identify a user during API calls. Then you need to pass the token in the request header to get access to the resources that require authentication. - -![auth-scheme.png](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/auth-scheme%281%29.png) - -For increased security, access tokens have a limited lifetime. When receiving an access token, the response body contains not only the access token itself, but also its lifetime, in seconds, and a **Refresh Token**. When the lifetime expires, the Refresh Token can be exchanged for a new Access Token. The new token will also have a limited lifetime and have a corresponding Refresh Token for future authentication. The default lifetime of the tokens is 8 hours (28800 seconds) for an access token and 1 month (2628000 seconds) for a refresh token, although the settings can be changed in the module configuration. - -## List of private resources - -| Action | Method | Endpoints | -| --- | --- | --- | -| Customer - Get a Customer | GET | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %} | -| Customer - Update info | PATCH | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %} | -| Customer - Change password | PATCH | http://mysprykershop.com/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %} | -| Customer - Delete | DELETE | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %} | -| Customer - Create a new address | POST | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %}/addresses | -| Customer - Update existing address | PATCH | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}customer_address_uuid{% raw %}}}{% endraw %} | -| Customer - Delete the address | DELETE | http://mysprykershop.com/customers/{% raw %}{{{% endraw %}customer_reference{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}customer_address_uuid{% raw %}}}{% endraw %} | -| Customer - Get List of Order | GET | http://mysprykershop.com/orders | -| Customer - Ger Order details | GET | http://mysprykershop.com/orders/{% raw %}{{{% endraw %}order_id{% raw %}}}{% endraw %} | -| Cart - Create the new cart | POST | http://mysprykershop.com/carts | -| Cart - Retrieve the cart | GET | http://mysprykershop.com/carts
http://mysprykershop.com/carts/{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}
Cart - Add an item to the cart | POST | http://mysprykershop.com/carts/{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}/items | -| Cart - Update item quantity | PATCH | http://mysprykershop.com/carts/{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}/items/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %} | -| Cart - Remove the cart | DELETE | http://mysprykershop.com/carts/{% raw %}{{{% endraw %}url{% raw %}}}{% endraw %}/carts/{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %} | -| Cart - Remove items from a cart | DELETE | http://mysprykershop.com/carts/{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}/items/{% raw %}{{{% endraw %}concrete_id{% raw %}}}{% endraw %} | -| Wishlist - Add an item to wishlist | POST | http://mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_uuid{% raw %}}}{% endraw %}/wishlist-items | -| Wishlist - Create the wishlist | POST | http://mysprykershop.com/wishlists | -| Wishlist - Delete a wishlist | DELETE | http://mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_uuid{% raw %}}}{% endraw %} | -| Wishlist - Delete an item into a wishlist | DELETE | http://mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}/wishlist-items/{% raw %}{{{% endraw %}concrete_sku{% raw %}}}{% endraw %} | -| Wishlist - Get list of wishlist | GET | http://mysprykershop.com/wishlists | -| Wishlist - Get wishlist by ID | GET | http://mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_uuid{% raw %}}}{% endraw %} | -| Wishlist - Rename a wishlist | PATCH | http://mysprykershop.com/wishlists/{% raw %}{{{% endraw %}wishlist_uuid{% raw %}}}{% endraw %} | - -## Installation -For instructions on how to install the necessary modules and enable OAuth authentication, see [Customer Account Management Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/customer-account-management-feature-integration.html). - -## User Authentication -To authenticate a user and receive an access token, send a POST request to the following endpoint: -`/access-tokens` -Request sample: `POST http://mysprykershop.com/access-tokens` - -**Attributes:** - -* username - specifies the username of the user to authenticate; -* password - specifies the user's password. - -{% info_block errorBox "Security Considerations " %} -As passwords are sent to this endpoint unencrypted, it is strongly recommended to provide access to it only via the HTTPS protocol. -{% endinfo_block %} - -**Sample Request:** -```js -{ - "data": { - "type": "access-tokens", - "attributes": { - "username": "john.doe@example.com", - "password": "qwerty" - } - } -} -``` - -**Sample Response:** -```js -{ - "data": { - "type": "access-tokens", - "id": null, - "attributes": { - "tokenType": "Bearer", - "expiresIn": 3600, - "accessToken": "eyJ0...", - "refreshToken": "def5..." - "idCompanyUser": null - }, - "links": { - "self": "http://mysprykershop.com/access-tokens" - } - } -} -``` - -In the above example, the _access_ token contained in the **accessToken** attribute will expire in **3600** seconds. After it expires, a new access token can be received using the data contained in the **refreshToken** attribute. - -## Accessing Resources -To access protected resources, you need to pass the access token in the **Authorization** header of your request. Example: - -``` -GET /carts HTTP/1.1 -Host: mysprykershop.com:10001 -Content-Type: application/json -Authorization: Bearer eyJ0... -Cache-Control: no-cache -``` - -If authorization is successful, the API will perform the requested operation. If authorization fails, a **401 Unathorized** error will be returned. The response will contain an error code explaining the cause of the error. It is, therefore, your responsibility to handle 401 errors when accessing protected resources. Sample error response: - -```js -{ - "errors": [ - { - "detail": "Invalid access token.", - "status": 401, - "code": "001" - } - ] -} -``` - -All protected resources can return the following generic errors: -| Code | Reason | -| --- | --- | -| 001 | Invalid access token | -| 002 | Access token missing or forbidden resource for the given user scope | -| 003 | Failed to log in the user | -| 004 | Failed to refresh a token | - -## Refreshing Tokens -To refresh an access token, send a request to the following endpoint and pass the corresponding refresh token: -`/refresh-tokens` -Request sample: `POST http://mysprykershop.com/refresh-tokens` - -Attributes: - -* refreshToken - specifies the Refresh Token received during initial authentication. - -Sample Request: -```js -{ - "data": { - "type": "refresh-tokens", - "attributes": { - "refreshToken": "def5..." - } - } -} -``` - -**Sample Response:** -```js -{ - "data": { - "type": "refresh-tokens", - "id": null, - "attributes": { - "tokenType": "Bearer", - "expiresIn": 28800, - "accessToken": "eyJ0...", - "refreshToken": "def5..." - }, - "links": { - "self": "http://mysprykershop.com/refresh-tokens" - } - } -} -``` diff --git a/docs/scos/dev/glue-api-guides/201811.0/checking-out/checking-out-purchases.md b/docs/scos/dev/glue-api-guides/201811.0/checking-out/checking-out-purchases.md deleted file mode 100644 index e40108a62c1..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/checking-out/checking-out-purchases.md +++ /dev/null @@ -1,696 +0,0 @@ ---- -title: Checking Out Purchases and Getting Checkout Data -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https:carts-of-registered-users/managing-carts-of-registered-users.htmldocumentation.spryker.com/v1/docs/checking-out-purchases-and-getting-checkout-data -originalArticleId: ec24dbd9-e3b2-4db0-9f09-50594801b162 -redirect_from: - - /v1/docs/checking-out-purchases-and-getting-checkout-data - - /v1/docs/en/checking-out-purchases-and-getting-checkout-data - - /docs/scos/dev/glue-api-guides/201811.0/checking-out-purchases-and-getting-checkout-data.html -related: - - title: Retrieving Customer's Order History - link: docs/scos/dev/glue-api-guides/page.version/managing-customers/retrieving-customer-orders.html ---- - -The **Checkout API** allows you to place orders and retrieve checkout information. - -In order to create a checkout experience, we offer an endpoint that provides you with all checkout data. The data is based on customers themselves and their shopping carts. For registered customers, the endpoint also provides their registered addresses as well as the applicable payment and shipment methods. If necessary, the endpoint may be called each time additional customer data is provided. For example, for the purposes of fraud protection, specific payment methods can be disallowed for certain delivery addresses. In this case, a second call may be needed for verification of payment method restrictions. - -Apart from that, the API also provides an endpoint that allows placing an order. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Checkout API](https:carts-of-registered-users/managing-carts-of-registered-users.htmldocumentation.spryker.com/v1/docs/glue-api-checkout-feature-integration). - -## Place Order -To place an order, send a POST request to the following endpoint: -`/checkout` -Request sample: `POST http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/checkout` - -### Request -A request should contain: - -* Valid customer information (e.g. first name, last name, salutation etc). -* Payment and shipment methods. They should exist in the system. -* Valid shipping and billing addresses. -* Also, the customer's cart should not be empty. - -**Attributes** -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| customer | RestCustomersRegisterRequestData | ✓ | Information about the customer
For details, see [Managing Customers](/docs/scos/dev/glue-api-guides/{{page.version}}/manging-customers/managing-customers.html). | -| idCart | RestAddressesRequestData | ✓ | ID of the customer's cart
For details, see [Managing Carts of Registered Users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.html). | -| billingAddress | RestAddressesRequestData | ✓| Customer's billing address
For details, see [Managing Customers](/docs/scos/dev/glue-api-guides/{{page.version}}/manging-customers/managing-customers.html). | -| shippingAddress | RestAddressesRequestData | ✓| Customer's shipping address
For details, see [Managing Customers](/docs/scos/dev/glue-api-guides/{{page.version}}/manging-customers/managing-customers.html). | -| payments | RestPayment | ✓| Payment options, such as the payment system, method of payment, etc
For details, see [Payment Step](https:carts-of-registered-users/managing-carts-of-registered-users.htmldocumentation.spryker.com/v1/docs/checkout-steps-201903#payment-step). | - -**Sample Request Body** -```js -{ - "data": { - "type": "checkout-data", - "attributes": { - "cart": { - "customer": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin" - }, - "idCart": "4741fc84-2b9b-59da-bb8d-f4afab5be054", - "billingAddress": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "zipCode": "61000", - "city": "Berlin", - "iso2Code": "DE", - "company": "Spryker", - "phone": "+380669455897", - "isDefaultShipping": true, - "isDefaultBilling": true - }, - "shippingAddress": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "zipCode": "61000", - "city": "Berlin", - "iso2Code": "DE", - "company": "Spryker", - "phone": "+380669455897", - "isDefaultShipping": false, - "isDefaultBilling": false - }, - "payments": [ - { - "paymentMethod": "invoice", - "paymentProvider": "dummyPayment" - } - ], - "shipment": { - "idShipmentMethod": 1 - } - } - } - } -} -``` - -### Response -The basic response will provide you with an **order reference** that can be used to access checkout data. Moreover, the relevant order resource will be included as well. The response type is **RestCheckoutResponse**. - -
-Sample Response - -```js -{ - "data": { - "type": "checkout", - "id": null, - "attributes": { - "orderReference": "DE--3" - }, - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/checkout" - }, - "relationships": { - "orders": { - "data": [ - { - "type": "orders", - "id": "DE--3" - } - ] - } - } - }, - "included": [ - { - "type": "orders", - "id": "DE--3", - "attributes": { - "createdAt": "2018-12-13 08:55:54.701521", - "totals": { - "expenseTotal": 490, - "discountTotal": 7810, - "taxTotal": 10519, - "subtotal": 73200, - "grandTotal": 65880, - "canceledTotal": 0 - }, - "currencyIsoCode": "EUR", - "items": [ - { - "name": "Canon IXUS 165", - "sku": "012_25904598", - "sumPrice": 36600, - "sumPriceToPayAggregation": 32940, - "quantity": 1, - "metadata": { - "superAttributes": [], - "image": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/25904598_3791.jpg" - }, - "calculatedDiscounts": [ - { - "unitAmount": 3660, - "sumAmount": 3660, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ], - "unitGrossPrice": 36600, - "sumGrossPrice": 36600, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 36600, - "unitTaxAmountFullAggregation": 5259, - "sumTaxAmountFullAggregation": 5259, - "refundableAmount": 32940, - "canceledAmount": 0, - "sumSubtotalAggregation": 36600, - "unitSubtotalAggregation": 36600, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 3660, - "sumDiscountAmountAggregation": 3660, - "unitDiscountAmountFullAggregation": 3660, - "sumDiscountAmountFullAggregation": 3660, - "unitPriceToPayAggregation": 32940, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null - }, - { - "name": "Canon IXUS 165", - "sku": "012_25904598", - "sumPrice": 36600, - "sumPriceToPayAggregation": 32940, - "quantity": 1, - "metadata": { - "superAttributes": [], - "image": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/25904598_3791.jpg" - }, - "calculatedDiscounts": [ - { - "unitAmount": 3660, - "sumAmount": 3660, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ], - "unitGrossPrice": 36600, - "sumGrossPrice": 36600, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 36600, - "unitTaxAmountFullAggregation": 5260, - "sumTaxAmountFullAggregation": 5260, - "refundableAmount": 32940, - "canceledAmount": 0, - "sumSubtotalAggregation": 36600, - "unitSubtotalAggregation": 36600, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 3660, - "sumDiscountAmountAggregation": 3660, - "unitDiscountAmountFullAggregation": 3660, - "sumDiscountAmountFullAggregation": 3660, - "unitPriceToPayAggregation": 32940, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null - } - ], - "expenses": [ - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Standard", - "sumPrice": 490, - "unitGrossPrice": 490, - "sumGrossPrice": 490, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 0, - "sumTaxAmount": 0, - "unitPriceToPayAggregation": 0, - "sumPriceToPayAggregation": 0, - "taxAmountAfterCancellation": null - } - ], - "billingAddress": { - "salutation": "Mr", - "firstName": "spencor", - "middleName": null, - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "company": "Spryker", - "city": "Berlin", - "zipCode": "61000", - "poBox": null, - "phone": "+380669455897", - "cellPhone": null, - "description": null, - "comment": null, - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "shippingAddress": { - "salutation": "Mr", - "firstName": "spencor", - "middleName": null, - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "company": "Spryker", - "city": "Berlin", - "zipCode": "61000", - "poBox": null, - "phone": "+380669455897", - "cellPhone": null, - "description": null, - "comment": null, - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "priceMode": "GROSS_MODE", - "payments": [ - { - "amount": 65880, - "paymentProvider": "DummyPayment", - "paymentMethod": "invoice" - } - ], - "calculatedDiscounts": [ - { - "unitAmount": 490, - "sumAmount": 490, - "displayName": "Free standard delivery", - "description": "Free standard delivery for all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - }, - { - "unitAmount": 3660, - "sumAmount": 3660, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - } - ] - }, - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/orders/DE--3" - } - } - ] -} -``` -
-
- -The **included** section of the response contains additional order details. -**General Order Information** -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Date and time when the order was created. | -| expenseTotal | Integer | Total amount of expenses (including all costs, e.g. shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the order. | -| taxTotal | Integer | Total amount of taxes paid. | -| subtotal | Integer | Subtotal of the order. | -| grandTotal | Integer | Grand total of the order | -| canceledTotal | Integer | Total canceled amount. | -| currencyIsoCode | String | Currency that was selected when placing the order. | -| priceMode | String | Price mode that was active when placing the order. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Order Item Information** -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Product name. | -| sku | String | Product SKU. | -| sumPrice | Integer | Sum of all the prices. | -| sumPriceToPayAggregation | Integer | Sum of the prices to pay (after discounts). | -| quantity | Integer | Quantity of product ordered. | -| superAttributes | String | Since the product purchased is a concrete product, and super attributes are saved with an abstract product, this field is expected to be always empty.| -| image | String|>A URL to the product image. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Calculated Discounts for Items** -| Field* | Type | Description | -| --- | --- | --- | -| unitAIntedermount | Integer | Discount value appliled to each order item of the
corresponding product.
sumAmount | Integer | Sum of all the discount values applied to the order items of the
corresponding products.
displayName | String | Name of the discount applied | -| description | String | Discount description. | -| voucherCode | String | Voucher code redeemed. | -| quantity | Integer | Number of discounts applied to the corresponding product. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Included Item Calculation** -| Field* | Type | Description | -| --- | --- | --- | -| unitGrossPrice | Integer | Single item gross price. | -| sumGrossPrice | | Integer | Gross price of all items summarized. | -| taxRate | Integer | Current tax rate in per cent. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum all items' net price. | -| unitPrice | Integer | Single item price without assuming is it net or gross. This value should be used everywhere a price is disabled. It allows switching the tax mode without side effects. | -| unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given amount of items with additions. | -| refundableAmount | Integer | Item available refundable amount (order only). | -| canceledAmount | Integer | Total canceled amount of this item (order only). | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| refundableAmount | Integer | Item available refundable amount (order only). | -| canceledAmount | Integer | Total canceled amount for this item (order only). | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer | Item total product option price. | -| sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| unitExpensePriceAggregation | Integer | Item expense total for a given item. | -| sumExpensePriceAggregation | Integer | Sum of item expense totals for the items. | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions. | -| sumDiscountAmountFullAggregation | Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| taxRateAverageAggregation | Integer | Item tax rate average, with additions used when recalculating tax amount after cancellation. | -| taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | - -\* The fields mentioned are all attributes in the response. Type and ID are not mentioned. -**Expenses** - -| Field* | Type | Description | -| --- | --- | --- | -| sumPrice | Integer | Sum of item price calculated. | -| unitGrossPrice | Integer | Single item gross price. | -| sumGrossPrice | Integer | Sum of items gross price. | -| taxRate | Integer | Current tax rate in per cent. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum of items net price. | -| canceledAmount | Integer | Total canceled amount for the given item (order only). | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum Item total discount amount. | -| unitTaxAmount | Integer | Tax amount for a single item after discounts. | -| sumTaxAmount | Integer | Tax amount for a sum of items (order only). | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| sumPriceToPayAggregation | Integer | Sum Item total price to pay after discounts with additions. | -| taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -**Billing and Shipping Addresses** - -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing to the customer. | -| firstName | String | Customer's first name. | -| lastName | String | Customer's last name. | -| address1 | String | 1st line of the customer's address. | -| address2 | String | 2nd line of the customer's address. | -| address3 | String | 3rd line of the customer's address. | -| zipCode | String | ZIP code. | -| city | String | City | -| country | String | Country | -| company | String | Company | -| phone | String | Phone number. | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is true. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is true. This is also the case for the first address to be saved. | -| iso2Code | String | ISO 2 Country Code to use. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -**Payments** - -| Field* | Type | Description | -| --- | --- | --- | -| amount | Integer | The amount paid via the corresponding payment provider in cents. | -| paymentProvider | String | Name of the payment provider. | -| paymentMethod | String | Name of the payment method. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -## Retrieve Checkout Data -To get information on a particular order, send the following POST request: -`/checkout-data` -Request sample: `POST http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/checkout-data` -{% info_block errorBox "Authentication" %} -To use this endpoint:
  • **Registered** customers need to authenticate first. For details, see [Authentication and Authorization]().
  • For **anonymous** users, you need to add their _X-Anonymous-Customer-Unique-Id_ in the request header. For details, see Managing Guest Carts.
-{% endinfo_block %} - -### Request -To request order details, the POST body must contain the order reference received during checkout. - -_Minimum required data_ -```js -{ - "data": { - "type": "checkout-data", - "attributes": { - "idCart": "{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}" - } - } -} -``` - -Alternatively, you can pass the whole of the checkout request body, the same as during checkout. -**Full request** -```js -{ - "data": { - "type": "checkout-data", - "attributes": { - "cart": { - "customer": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin" - }, - "idCart": "4741fc84-2b9b-59da-bb8d-f4afab5be054", - "billingAddress": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "zipCode": "61000", - "city": "Berlin", - "iso2Code": "DE", - "company": "Spryker", - "phone": "+380669455897", - "isDefaultShipping": true, - "isDefaultBilling": true - }, - "shippingAddress": { - "salutation": "Mr", - "email": "spencor.hopkin@spryker.com", - "firstName": "spencor", - "lastName": "hopkin", - "address1": "West road", - "address2": "212", - "address3": "", - "zipCode": "61000", - "city": "Berlin", - "iso2Code": "DE", - "company": "Spryker", - "phone": "+380669455897", - "isDefaultShipping": false, - "isDefaultBilling": false - }, - "payments": [ - { - "paymentMethod": "invoice", - "paymentProvider": "dummyPayment" - } - ], - "shipment": { - "idShipmentMethod": 1 - } - } - } - } -} -``` - -### Response -The endpoint responds with a **RestCheckoutDataResponse** containing the checkout data. -**Sample Response** -```js -{ - "data": { - "type": "checkout-data", - "id": null, - "attributes": { - "addresses": [ - { - "salutation": "Mr", - "firstName": "Spencor", - "lastName": "Hopkin", - "address1": "Julie-Wolfthorn-Straße", - "address2": "1", - "address3": null, - "zipCode": "10115", - "city": "Berlin", - "country": { - "id_country": 60, - "iso2_code": "DE", - "iso3_code": "DEU", - "name": "Germany", - "postal_code_mandatory": true, - "postal_code_regex": "\\d{5}", - "regions": {} - }, - "iso2Code": "DE", - "company": "spryker", - "phone": "+49 (30) 2084 98350", - "isDefaultShipping": null, - "isDefaultBilling": null - } - ], - "paymentMethods": [ - { - "methodName": "dummyPaymentInvoice", - "requiredRequestData": [ - "paymentMethod", - "paymentProvider", - "paymentSelection", - "dummyPaymentInvoice.dateOfBirth" - ] - }, - { - "methodName": "dummyPaymentCreditCard", - "requiredRequestData": [ - "paymentMethod", - "paymentProvider", - "paymentSelection", - "dummyPaymentCreditCard.cardType", - "dummyPaymentCreditCard.cardNumber", - "dummyPaymentCreditCard.nameOnCard", - "dummyPaymentCreditCard.cardExpiresMonth", - "dummyPaymentCreditCard.cardExpiresYear", - "dummyPaymentCreditCard.cardSecurityCode" - ] - } - ], - "shipmentMethods": [ - { - "carrierName": "Spryker Dummy Shipment", - "idShipmentMethod": 1, - "name": "Standard", - "price": 490, - "taxRate": null, - "shipmentDeliveryTime": null - }, - { - "carrierName": "Spryker Dummy Shipment", - "idShipmentMethod": 2, - "name": "Express", - "price": 590, - "taxRate": null, - "shipmentDeliveryTime": null - }, - { - "carrierName": "Spryker Drone Shipment", - "idShipmentMethod": 3, - "name": "Air Standard", - "price": 500, - "taxRate": null, - "shipmentDeliveryTime": null - }, - { - "carrierName": "Spryker Drone Shipment", - "idShipmentMethod": 4, - "name": "Air Sonic", - "price": 1000, - "taxRate": null, - "shipmentDeliveryTime": null - }, - { - "carrierName": "Spryker Drone Shipment", - "idShipmentMethod": 5, - "name": "Air Light", - "price": 1500, - "taxRate": null, - "shipmentDeliveryTime": null - } - ] - }, - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/checkout-data" - } - } -} -``` - -**Sample Response:** -The following checkout data is included in the response: - -**Addresses** -| Field* | Type | Description | -| --- | --- | --- | -| id | String | Address ID. | -| salutation | String | Salutation to use when addressing to the customer. | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| address1 | String | 1st line of the customer's address | -| address2 | String | 2nd line of the customer's address | -| address3 | String | 3rd line of the customer's address | -| zipCode | String | ZIP code | -| city | String | City | -| country | String | Country | -| company | String | Company | -| phone | String | Phone number | -| iso2Code | String | ISO 2 Country Code | -| isDefaultShipping | Boolean | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. | -| isDefaultBilling | Boolean | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -**Payment Provider and Payment Method** - -| Field* | Type | Description | -| --- | --- | --- | -| paymentProviderName | String | Payment provider name. | -| paymentMethodName | String | Payment method name. | -| requiredRequestData | Array | List of fields that needs to be provided to use this payment method when placing the order. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -**Shipment carrier and shipment method Data** - -| Field* | Type | Description | -| --- | --- | --- | -| carrierName | String | Shipment carrier name | -| id | String | Shipment carrier ID | -| name | String | Shipment method name | -| price | Integer | Shipment method price | -| taxRate | Integer | The associated tax rate | -| deliveryTime | String | Estimated delivery time information | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. diff --git a/docs/scos/dev/glue-api-guides/201811.0/glue-api-developer-guides.md b/docs/scos/dev/glue-api-guides/201811.0/glue-api-developer-guides.md deleted file mode 100644 index 19835979255..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/glue-api-developer-guides.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Glue API Developer Guides -last_updated: May 10, 2019 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/glue-api-developer-guides -originalArticleId: 26ce728e-8d78-4bd1-85c1-4b2a6f831832 -redirect_from: - - /v1/docs/glue-api-developer-guides - - /v1/docs/en/glue-api-developer-guides ---- - -This section introduces you into developing with Glue REST API. Specifically, here you will find an overview of the [Glue API infrastructure](), [security and authentication]() process and other important notes on Glue workflow. -Not found a guide you are looking for? Let us know about it by [creating an issue on Github](https://github.com/spryker/spryker-docs/issues/new) or dropping an email to [academy@spryker.com](mailto:academy@spryker.com). diff --git a/docs/scos/dev/glue-api-guides/201811.0/glue-infrastructure.md b/docs/scos/dev/glue-api-guides/201811.0/glue-infrastructure.md deleted file mode 100644 index 368b39549d3..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/glue-infrastructure.md +++ /dev/null @@ -1,453 +0,0 @@ ---- -title: Glue Infrastructure -last_updated: Jan 15, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/glue-infrastructure -originalArticleId: 12a6177c-9a1a-4beb-a153-9925fac39d43 -redirect_from: - - /v1/docs/glue-infrastructure - - /v1/docs/en/glue-infrastructure -related: - - title: Authentication and Authorization - link: docs/scos/dev/glue-api-guides/page.version/authentication-and-authorization.html ---- - -Spryker API infrastructure is implemented as a separate layer of Spryker Commerce OS, called Glue. It is responsible for providing API endpoints, processing requests, as well as for communication with other layers of the OS in order to retrieve the necessary information. The layer is implemented as a separate Silex application, the same as Yves or Zed. It has its own bootstrapping and a separate virtual host on the Spryker web server (Nginx by default). In addition to that, Glue has a separate programming namespace within Spryker Commerce OS, also called Glue. - -{% info_block infoBox %} -**Before You Begin**
Consider studying the following documents before you begin:
  • [JSON API Specification](https://jsonapi.org/format/ -{% endinfo_block %} implemented in Spryker
  • [Swagger Tools Reference](https://swagger.io/) to know how to document your API
  • [REST API Modelling Reference](https://www.thoughtworks.com/insights/blog/rest-api-design-resource-modeling)
) - -Logically, the Glue layer can be divided into 3 parts: - -* **GlueApplication Module** - The _GlueApplication Module_ provides a framework for constructing API resources. It intercepts all HTTP requests at resource URLs (e.g. `http://mysprykershop.com/resource/1`), handles call semantics, verifies requests, and also provides several utility interfaces that can be used to construct API responses. - -* **Resource Modules** - Each _Resource Module_ implements a separate resource or a set of resources. Such a module handles requests to a particular resource and provides them with responses. In the process of doing so, the module can communicate with the Storage, Search or Spryker Commerce OS (Zed). The modules do not handle request semantics or rules. Their only task is to provide the necessary data in a format that can be converted by the _GlueApplication Module_ into an API response. - -* **Relationship Modules** - Such modules represent relationships between two different resources. Their task is to extend the response of one of the resources with data of related resources. - -To be able to process API requests correctly, Resource Modules need to implement resource route plugins that facilitate routing of requests to the module. Such plugins need to be registered in the _GlueApplication_ Module. - -## Request Handling -Upon receiving an API request, the _GlueApplication Module_ verifies whether the request is correct, checks whether all required parameters are present, and also identifies the HTTP verb and additional filters, if any. Then, deserializes request data and builds an **API Request Object** which is passed to the corresponding _Resource Module_. The object supports `Spryker\Glue\GlueApplication\Rest\Request\Data\RestRequestInterface`. -![Glue Application Module](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Glue+Infrastructure/glue-application-module.png) - -Upon receiving a request object, the _Resource Module_ needs to provide it with a valid response. Responses are provided as **API Response Objects**. To build them, _Resource Modules_ use the `RestApi\Spryker\Glue\Kernel\AbstractFactory::getResourceBuilder()` method which returns the `RestResourceBuilderInterface` objects. The _GlueApplication Module_ serializes such objects into the response format and then passes them to the requestor. - -![Glue Application Module](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Glue+Infrastructure/communication.png) - -A _Resource Module_ can communicate with the Storage, Search and Spryker Commerce OS (Zed) using a Client only. - -### Resource Routing -Every request needs to be routed to the corresponding _Resource Module_ responsible for handling it. For this purpose, each module implements a _Route Plugin_. Such a plugin matches every supported HTTP verb to a respective action in a controller of the _Resource Module_. This should be done for each endpoint. When routing a request, Glue will call the necessary action based on the endpoint and verb used. - -{% info_block infoBox %} -The plugin should not map the _OPTIONS_ verb which is mapped automatically. -{% endinfo_block %} - -The plugin must provide routing information for the following: - - - - - - - - - - - - - - - - - - - - - - -
Resource TypeType of the resource implemented by the current _Resource Module_. -Resource types are extracted by Glue from the request URL. For example, if the URL is `/carts/1`, the resource type is `carts`. To be able to process calls to this URL, Glue will need a route plugin for the resource type _carts_.
Controller NameName of the controller that handles a specific resource type.
Mapping of Verbs to ActionsList of REST verbs that the resource supports and the respective controller actions used to handle them. -Allowed verbs are GET, POST, PATCH, and DELETE. The OPTIONS verb is supported by all resources and should not be mapped.
Resource Attributes -Transfer Class NameFQCN of the Resource Attributes Transfer that is used to handle request attributes for the given resource type.
Parent Resource TypeIn parent-nested resource relationships, the plugin of the child resource must specify the type of the parent resource. -This information is optional and should be provided only by a resource that is nested within another resource.
- -Each route plugin implements `ResourceRoutePluginInterface`, which provides a set of utility functions that can be used to configure resource routing: - -|Function | Description| Return type| Example| -| --- | --- | --- | --- | -| `getResourceType` | Gets the resource type. | string | _carts_ | -| `configure` | Configures a mapping of the HTTP verbs supported by the resource to the corresponding controller methods responsible for handling them. Also, it defines which of the verbs require authentication to use. | ResourceRouteCollectionInterface | | -| `getController` | Gets the name of the resource controller responsible for handling requests to the resource. The name must be provided in _kebab-case_, hyphen-separated | string | If the controller name is _CartsResourceController.php_, this function should return _carts-resource_. | -| `getResourceAttributesClassName` | Gets the FQCN of the Resource Attributes Transfer that is used to handle request attributes for the given resource type. | string | See details in [5. Describe Fields for Post and Patch Calls](/docs/scos/dev/tutorials/201811.0/introduction/glue-api/implementing-a-rest-api-resource.html#5--describe-fields-for-post-and-patch-calls). | - -For more details on how to implement a route plugin, see [6. Route Requests to Your Controller](/docs/scos/dev/tutorials/201811.0/introduction/glue-api/implementing-a-rest-api-resource.html#6--route-requests-to-your-controller). - -All route plugins need to be added to `GlueApplicationDependencyProvider` implemented in the `GlueApplication` Module on the Project Level: - -`GlueApplicationDependencyProvider.php` -```php -class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider - { - /** - * @return \Spryker\Glue\GlueApplication\Dependency\Plugin\ResourceRoutePluginInterface[] - */ - protected function getResourceRoutePlugins(): array - { - return [ - new CartsResourceRoutePlugin(), - new CartItemsResourceRoutePlugin(), - new WishlistsResourceRoutePlugin(), - ... - ]; - } -``` - -### Resource Modules -A _Resource Module_ is a module that implements a single resource or a set of resources. It is responsible for accepting a request in the form of _Request Objects_ and providing responses in the form of _Response Objects_. For this purpose, the module can communicate with the Storage or Search, for which purpose it implements a [Client](/docs/scos/dev/back-end-development/client/client.html). It can also communicate with the Spryker Commerce OS (Zed), however, it is recommended to avoid round trips to the database as much as possible as that can reduce API performance considerably. - -Resource Modules must implement all logic related to processing a request. It is not recommended having any of the Business Logic, or a part of it, in the _GlueApplication Module_. In case you need to extend any of the built-in Glue functionality, it is always safer to extend the relevant _Resource Module_ than infrastructure. - -#### Module Structure -By default, all Resource Modules are located in `vendor/spryker/resources-rest-api` at the core level. At the project level, you can place your Resource Module implementations in `src/Pyz/Glue/ResourcesRestApi`. The naming convention for such modules is _**Resources**RestApi_, where **Resources** is a name of the feature that the module implements. - -Recommended module structure: - -| ResourcesRestApi | | -| --- | --- | -| `Glue/ResourcesRestApi/Controller` |

Folder for resource controllers. Controllers are used to handle API requests and responses. Typically, includes the following:


-
  • `FeatureResourcesController.php` - contains methods for handling HTTP verbs.
| -| `Glue/ResourcesRestApi/Dependency` | Bridges to clients from other modules. | -| `Glue/ResourcesRestApi/Plugin` |

Resource plugins. Typically, includes the following:


  • `FeatureResourceRelationshipPlugin.php` - provides relationships to other modules;
  • `FeatureResourceRouterPlugin.php` - contains resource routing configuration.
| -| `Glue/ResourcesRestApi/Processor` |

Folder where all resource processing logic, data mapping code and calls to other clients are located. Typically, it includes the following:


  • `FeatureReader.php` - fetches data and combines from other facades to create an API response;
  • `FeatureWriter.php` - creates, updates and deletes resource functionality;
  • FeatureMapper.php - maps internal transfer objects to API transfers.
| -| `Glue/ResourcesRestApi/ResourcesRestApiConfig.php` | Contains resource-related configuration, such as a resource type, error code constants etc. | -| `Glue/ResourcesRestApi/ResourcesRestApiDependencyProvider.php` | Provides external dependencies. | -| `Glue/ResourcesRestApi/ResourcesRestApiFactory.php` | Factory that creates business models. | -| `Glue/ResourcesRestApi/ResourcesRestApiResource.php` | Locatable class that provides resource objects to other modules. | - -Also, a module should contain the transfer definition in `src/Pyz/Shared/ResourcesRestApi/Transfer`: - -| ResourcesRestApi | | -| --- | --- | -| `resources_rest_api.transfer.xml` | Contains API transfer definintions. | - -The resulting folder structure on the example of the WishlistsRestApi Module looks as follows: - -![Wishlists REST API](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Glue+Infrastructure/wishlists-rest-api.png) - -#### Resource Controller -This controller provides actions for all HTTP verbs that a resource implements. It is responsible for: - -* handling requests for a specific resource; -* validating data; -* executing business flow logic; -* returning responses or error messages. - -All operations must be delegated to the corresponding layers, the controller is responsible only for controlling the workflow. - -#### Abstract API Controller -Each resource controller must extend `\Spryker\Glue\Kernel\Controller\AbstractController`. This controller class resolves the module factory. - -#### Generic Rest Request -After deserializing a request, Glue passes it to _Resource Modules_ as an internal API request representation object. It stores all information that relates to the request. The object is passed directly to the resource controller class and supports `Spryker\Glue\GlueApplication\Rest\Request\Data\RestRequestInterface`. - -The interface provides the following helper methods: - -| Method | Signature | Description | Notes | -| --- | --- | --- | --- | -| `getResource` | `getResource(): RestResourceInterface` | Returns resource objects that represent resources for the current request. | | -| `getParentResources` | `getParentResources(): array` | Returns an array of parent resources of the current resource. Each parent resource is represented by `\Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceInterface`. | | -| `findParentResourceByType` | `findParentResourceByType(string $type): ?RestResourceInterface` | Finds a parent resource by the specified resource type. | The `$type` parameter specifies the type of the parent resource to return. If there are no parents of the given type, the method returns `null`. | -| `getFilters` | `getFilters(): array` | Returns filters for data filtering. Each filter is represented by `\Spryker\Glue\GlueApplication\Rest\Request\Data\FilterInterface`. | If a request was passed with filter parameters, they are passed as filters. Resource Modules need to handle filters correctly to return only the information that is requested. | -| `getSort` | `getSort(): array` | Returns sorting options. Each option is represented by `\Spryker\Glue\GlueApplication\Rest\Request\Data\SortInterface`. | | -| `getPage` | `getPage(): ?PageInterface` | Returns pagination options. | If there were no pagination options specified at the time of the query, the method returns `null`. | -| `getFields` | `getFields(): array` | Returns sparse fields that can be used to filter out certain parts of the relationships tree from a response. Each field is represented by `\Spryker\Glue\GlueApplication\Rest\Request\Data\SparseFieldInterface`. | | -| `getMetadata` | `getMetadata(): MetadataInterface` | Gets additional metadata about the request such as resource version, method, locale etc. | | -| `getInclude` | `getInclude(): array` | Gets an array of `include` options for the request. | | -| `getUser` | `getUser(): ?UserInterface` | Get the user associated with the request. | - -#### Generic Rest Response - -Controllers of each module must return their responses to Glue as instances of the `\Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface` objects with all data set. - -The interface provides the following helper methods: - -| Method | Signature | Description | Notes | -| --- | --- | --- | --- | -| `addResource` | `addResource(RestResourceInterface $restResource): self` | Adds a resource to the response object. | The `$restResource` parameter specifies an instance of the `RestResourceInterface` interface that represents the resource to add. | -| `addError` | `addError(RestErrorMessageTransfer $error): self` | Adds a business logic error to the response. | A business logic error is any error that occurred during request procession but does not relate to the REST request format. For example, such an error can occur when a resource with the specified ID is not found or when an attempt is made to assign a value that is not allowed by database or other restrictions. The `$error` parameter specifies an instance of the `RestErrorMessageTransfer` interface that contains information about the error (HTTP status, error code and error message). | -| `addLink` | `addLink(string $name, string $uri): self` | Adds a link to the response. | The parameters are as follows:
  • `$name` - specifies a link name. Possible values: _first, last, next, prev, related, self, href, meta_.
  • `$uri` - specifies a link URL without the domain part.
For example, if you specify first for `$name` and `/catalog-search?q=canon&include=&page[offset]=0&page[limit]=12` for URL, the link will look as follows in the response:
{
"data": {...},
"links": {
...
"first": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=0&page[limit]=12",
...
}
}
| -| `setStatus` | `setStatus(int $status): self` | Sets the HTTP status of the response (for example, **200 OK**).| The `status`parameter specifies the HTTP status code. | -| `addHeader` | `addHeader(string $key, string $value): self` | Adds an HTTP header to the response. | The `$key` parameter specifies the header type, and the $value parameter specifies the header value. | - -#### RestResourceInterface -`Spryker\Glue\GlueApplication\Rest\JsonApi\RestResource` is a class that represents REST resources. It implements `Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceInterface` that provides the following methods: - -| Method | Signature | Description | Notes | -| --- | --- | --- | --- | -| `addRelationship` | `addRelationship(RestResourceInterface $restResource): self` | Adds another resource related to the given resource. | The `$restResource` parameter specifies an instance of the `RestResourceInterface interface that represents the related resource to add. | -| `addLink` | `addLink(string $name, string $resourceUri, array $meta = []): self` | Adds a link to the resource. | The parameters are as follows:
  • `$name` - specifies a link name. Possible values: first, last, next, prev, related, self, href, meta.
  • `$uri` - specifies a link URL without the domain part.
  • `$meta` - an array of meta information to add to the resource. Each object in the array must be represented by MetadataInterface.
| - -#### RestErrorMessageTransfer - -Business errors are returned as the `RestErrorMessageTransfer` objects with the following structure: - -| Field |Used for | -| --- | --- | -| code |High-level business error code, for example, business rule validation error. | -|detail | Human-readable error message. | -| status| HTTP response status code. | - -### Nested Resources - -Glue API allows creating resources with parent-child relationships or, in other words, nested resources. For example, a request to `/customers/1/addresses` returns addresses for a customer with ID 1. To enable such behavior, it is necessary to define how resources depend on each other. This is done by configuring resource route plugins. When processing an URL, the _GlueApplication Module_ tries to find a correct route to a child resource. For this reason, all modules in the nesting chain should be arranged in a sequence using **ResourceWithParentPluginInterface**. Then, while handling a request to a child resource, business logic can access the parent resource identifier and process the request in the correct context. - -#### ResourceWithParentPluginInterface -If you are implementing a resource that has a parent, you need to create a plugin that implements `Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceWithParentPluginInterface`. Such a plugin will route requests from the parent resources to the correct child resource. This interface must be implemented together with **ResourceRoutePluginInterface**. - -The interface provides only 1 method: `getParentResourceType`. The method must return the type of the immediate parent resource within the context of which the child resource is implemented. - -### Resource Relationships -Often, to query certain data, one needs to use endpoints from different APIs to get the necessary information. For example, to present products in a customer's wishlist, one would need to use endpoints of the [Wishlists API](/docs/scos/dev/glue-api-guides/{{page.version}}//managing-wishlists/managing-wishlists.html) to get a list of items in the wishlist, and then query endpoints of the [Products API](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-products/retrieving-product-information.html) in order to get descriptions, images and other information on each product. This can result in a big number of requests until the necessary data is fetched. To reduce the number of calls and provide all the necessary information in one pass, you can use resource relationships. - -Let us consider the following REST Response example. It contains information on a wishlist item without any resource relationships. - -**Request:** - -*GET https://glue.mysprykershop.com/wishlists/cbf84323-e54d-5774-8c02-4c90e107afe6* - -```js - { - "data": { - "type": "wishlists", - "id": "cbf84323-e54d-5774-8c02-4c90e107afe6", - "attributes": { - "name": "My wishlist", - "numberOfItems": 1, - "createdAt": "2019-06-25 11:42:51.813126", - "updatedAt": "2019-07-05 13:13:52.811524" - }, - "links": { - "self": "https://glue.mysprykershop.com/wishlists/cbf84323-e54d-5774-8c02-4c90e107afe6" - } - } -} -``` - -As you can see, it contains only the ID of the wishlist item resource which represents the SKU of the product added. It is impossible to indicate the product name, description etc. -If we add relationships to the `wishlist-items` and `concrete-products` resources, the same request will return more information. In fact, now, a single request is sufficient to get information on products in a wishlist: - -**Request:** - -*GET https://glue.mysprykershop.com/wishlists/cbf84323-e54d-5774-8c02-4c90e107afe6?include=wishlist-items,concrete-products* - -
-Code sample: - -```js -{ - "data": { - "type": "wishlists", - "id": "cbf84323-e54d-5774-8c02-4c90e107afe6", - "attributes": {...}, - "links": {...}, - "relationships": { - "wishlist-items": { - "data": [ - { - "type": "wishlist-items", - "id": "021_21081475" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-products", - "id": "021_21081475", - "attributes": { - "sku": "021_21081475", - "isDiscontinued": false, - "discontinuedNote": null, - "name": "Sony Cyber-shot DSC-W830", - "description": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing it, and slip in your pocket. Shooting great photos and videos is easy with the W800. Buttons are positioned for ease of use, while a dedicated movie button makes shooting movies simple. The vivid 2.7-type Clear Photo LCD display screen lets you view your stills and play back movies with minimal effort. Whip out the W800 to capture crisp, smooth footage in an instant. At the press of a button, you can record blur-free 720 HD images with digital sound. Breathe new life into a picture by using built-in Picture Effect technology. There’s a range of modes to choose from – you don’t even have to download image-editing software.", - "attributes": { - "hdmi": "no", - "sensor_type": "CCD", - "display": "TFT", - "usb_version": "2", - "brand": "Sony", - "color": "Purple" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony Cyber-shot DSC-W830", - "metaKeywords": "Sony,Entertainment Electronics", - "metaDescription": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing i", - "attributeNames": { - "hdmi": "HDMI", - "sensor_type": "Sensor type", - "display": "Display", - "usb_version": "USB version", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/021_21081475" - } - }, - { - "type": "wishlist-items", - "id": "021_21081475", - "attributes": { - "sku": "021_21081475" - }, - "links": { - "self": "https://glue.mysprykershop.com/concrete-products/wishlist-items/021_21081475" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "021_21081475" - } - ] - } - } - } - ] -} -``` - -
-
- -#### Possible Implementations -To add relationships between two resources, you can either implement the Resource Relationship Module that implements a resource relationship plugin, or just the plugin within the related resource. The plugin will add the related resource as a relationship to the resource being queried. - -Option 1: With a separate module - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Glue+Infrastructure/implementation-wiht-separate-module.png) - -_Option 2: Without module_ - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Glue+Infrastructure/implementation-without-module.png) - -Implementation without a separate module can be used when the resource being queried contains a unique identifier to directly map the related resource. In the example of wishlist items and products, each item contains the SKU of the product it relates to. Thus, relationships between these resources can be implemented without a relationship module, using product SKU as a unique identifier. - -In cases when certain business logic is required to determine relationships between two resources, implementation of a relationship module is recommended. For example, if you need to apply some business logic to select products related to a wishlist item, such logic should be implemented within a separate relationship module. - -#### Relationship Plugin -The plugin must implement the following interface: `\Spryker\Glue\GlueApplication\Dependency\Plugin\ResourceRelationshipPluginInterface`. The interface exposes the `addResourceRelationships` method that allows you to implement relationships between modules. The first parameter passed to the method contains an array of resources to which resources must be added, and the second parameter contains the current REST request as **RestRequestInterface**. The interface also provides the `getRelationshipResourceType` method that allows you to set a relationship name. This name will be used when including related resource data in responses. - -### Resource Versioning -As your product grows, you may feel the necessity to change your API. Sometimes, BC breaking changes might be needed to incorporate the required modifications. However, older API clients may rely on old data contracts. If you want to provide backward compatibility, you may want to introduce a versioning system in your API. When versioning is implemented, clients can request the exact resource version they were designed for. Thus, every resource version represents a data contract for a resource at a given point of time. - -As REST does not implement a strict versioning concept, by default, all Spryker resources are unversioned. Also, all resources and endpoints shipped with Spryker by default will remain unversioned in the future regardless of the version of the module that provides them. This is done so that Resource modules can be merged with any existing projects without breaking the functionality of resources built on top of default Spryker resources. - -If you want to introduce versioning in your project, in the route plugin of your module, you need to implement `\Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceVersionableInterface`. This interface exposes the `getVersion()` method, using which you can specify which version of the resource is supported by the current route plugin. In other words, you need to implement a plugin for each resource version. - -When versioning is in place, clients can pass the version they require in the request header: `application/vnd.api+json; version=2.1`. The Glue will respond to clients as follows: - -* If no version is specified in the header, the newest version is returned. -* If a version is specified and it exists on the server, that specific version is returned. -* If a version is specified, but it does not exist, the **404 Not Found** error is returned. - -### Response Codes -#### HTTP Status Codes -Below is a list of common HTTP statuses returned by Glue endpoints. - -#### GET - -| Code | Condition | -| --- | --- | -| 200 | An entity or entities corresponding to the requested resource is/are sent in the response | -| 400| Bad request | -| 401| Unauthenticated | -| 403 | Unauthorized| -|404 | Resource not found | - -#### POST -| Code | Condition | -| --- | --- | -| 201 | Resource created successfully | -| 400| Bad request | -| 401| Unauthenticated | -| 403 | Unauthorized| -|404 | Resource not found | - -#### PATCH -| Code | Condition | -| --- | --- | -| 200 | Resource updated successfully | -| 400| Bad request | -| 401| Unauthenticated | -| 403 | Unauthorized| -|404 | Resource not found | - -#### DELETE -| Code | Condition | -| --- | --- | -| 204 | No content (deleted successfully) | -| 400| Bad request | -| 401| Unauthenticated | -| 403 | Unauthorized| -|404 | Resource not found | - -#### Error Codes -In addition to HTTP Status codes, Glue can return additional error codes to distinguish business constraint violations. Each API is assigned a specific error code range. Listed below are code ranges for APIs shipped by Spryker. For specific error codes, see API user documentation for the specific APIs. - - -| Range | API | -| --- | --- | -| 001-099 | General error codes | -| 101-199 |Carts API | -| 201-299 | Wishlists API | -| 301-399 | Products API | -| 401-499 | Customers API | -| 501-599 | Catalog Search API | -| 601-699 | Stores API | -| 701-799 |Categories API | -| 1001-1099 | Guest Cart API | -| 1101-1199 | Checkout API| -| 1201-1299| Product Labels API | - -### Data Formatting -The current version uses JSON for responses. The request header from the client indicates the desired response format. - -#### Dates -For date formatting, [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) date/time format is used. For requests, any time zone is accepted, however, dates are stored and returned in UTC. - -Example: - -* request: 1985-07-01T01:22:11+02:00 -* in storage and responses: 1985-06-31T11:22:11+00:00 - -#### Prices -Prices are always returned both in cents and as an integer. - -### Request Header - -| Header | Sample value | Used for | When not present| -| --- | --- | --- | --- | -| Accept | application/vnd.api+json |Indicates the data format of the expected API response. | 406 Not acceptable | -| Content-Type | application/vnd.api+json; version=1.1 | Indicates the request content-type and resource version. | 415 Unsupported | -| Accept-Language | de;, en;q=0.5 | Indicates the desired language in which the content should be returned. | | - -### Response Header - | Header | Sample value | Used for | -| --- | --- | --- | -| Content-Type |application/vnd.api+json; version=1.1 |Response format and resource version. | -|Content-Language|de_DE|Indicates the language in which the content is returned.| - -### Response Structure -The response structure follows the [JSON API](https://jsonapi.org/format/#document-structure) specification. For examples of responses of each endpoint provided by Spryker, see the API user guides for the respective APIs. diff --git a/docs/scos/dev/glue-api-guides/201811.0/glue-rest-api.md b/docs/scos/dev/glue-api-guides/201811.0/glue-rest-api.md deleted file mode 100644 index 1ad3f0c7871..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/glue-rest-api.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Glue REST API -last_updated: Jan 15, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/glue-rest-api -originalArticleId: a8460b19-b0d7-4142-9ed4-017a68eb47ab -redirect_from: - - /v1/docs/glue-rest-api - - /v1/docs/en/glue-rest-api ---- - -## Overview -The Spryker Glue REST API is a fully functional JSON REST API that comes in the form of a new application available in the Spryker Commerce OS. It is build to be used as a contract between the Commerce OS Backend and any possible touchpoint or integration with a third party system. As an application, Glue knows how to read and interpret API resources as well as leverage feature modules that expose existing Spryker functionality. -![Glue REST API](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+REST+API/glue-rest-api.jpg) - -## Glue -The Spryker API infrastructure, which is implemented as a separate layer of the Spryker Commerce OS, is called Glue. Glue is responsible for providing API endpoints, processing requests, as well as for communication with other layers of the OS in order to retrieve the necessary information. As a result, the Glue is responsible for communicating with any clients on the touchpoint side. - -{% info_block infoBox %} -For more details, see [Glue Infrastructure](/docs/scos/dev/glue-api-guides/{{page.version}}/glue-infrastructure.html). -{% endinfo_block %} - -## REST API -The Glue REST API comes with a set of predefined APIs, and the possibility for you to extend and add APIs in your project. There is no restriction when it comes to customization. The predefined APIs support Storefront functionality and may as well be used for integrations with 3rd party systems. Storefront functionality specifically enables you to build a custom experience for your customers in any touchpoint you want and thereby leveraging data and functionality at the core of your Commerce OS. For instance, it allows you to fetch product data to be displayed on a custom product detail page in your mobile app. - -{% info_block infoBox %} -For more details, see [REST API Reference](/docs/scos/dev/glue-api-guides/{{page.version}}/rest-api-reference.html). -{% endinfo_block %} - -## B2C API React Example -In order to help you understand possible use cases, we offer you a sample app available as an example implementation (which is not a starting point for customer projects, though). It can coexist with an existing demo shop as a second touchpoint in the project. From a technology perspective, it is based on our customers' interests. The example app is implemented in the form of a single-page application based on a React JS library. - -What is more, it delivers a full customer experience from browsing the catalog to placing an order. The application allows you to understand, how the existing APIs can be leveraged to create a B2C user experience. As an example, the full power of Elasticsearch, which is already present in our other demo shops (B2C and B2B), is leveraged via dedicated endpoints to deliver catalog search functionality with auto-completion, auto-suggestion, facets, sorting, and pagination. - -{% info_block infoBox %} -[Install and run!](/docs/scos/dev/glue-api-guides/{{page.version}}/b2c-api-react-example/b2c-api-react-example.html -{% endinfo_block %}) - -### What can I use the REST API for? -The Glue functionality serves as a starting point to connect your Commerce OS with new or existing touch points. These touchpoints can be headless like voice commerce devices and chat bots, or they may come with a user interface like a mobile app. Alternative front-ends also benefit from the APIs. Here are some examples: - -* **New front-end**: Build a new front-end or use front-end frameworks such as Progressive Web Apps and power them by the REST APIs. -* **Mobile App**: Your new mobile app, no matter if it is native, hybrid or just a web-view, can support the same functionality as the existing demo shops do. -* **Voice Commerce**: Leverage the APIs for order history to inform your customers about the status of their delivery. -* **Chatbot**: Use chatbots to identify the customer that is trying to reach out to you and help him answer basic questions about your products. - -## What are the business advantages of using the API? -You can benefit from the APIs in these aspects: - -* **Reach more customers**: APIs empower you to create any number of touchpoints to get in contact with your customers, whichever the device. -* **Customization**: You may reach out to different customer segments on different touchpoints. APIs enable you to offer a tailored customer experience for your audience, wherever it may be. -* **Integrations**: APIs are not only used to deliver custom experiences, but you can also leverage APIs to integrate to different platforms; from offering your products on Amazon to leveraging mapping services for customers to find your offline store. -* **Testing ideas**: APIs are the quickest way to test your ideas and get a head start before the competition does. Consider them as building blocks for your developers to assemble your new ideas. New applications only need to follow the API contracts set, but even those can be extended for your purposes. - -### Why did we introduce it? -The REST API represents a contract that developers can stick to when they are extending the Commerce OS with new touchpoints or build integrations. The already existing APIs inside the Commerce OS are not meant to be used in the same way. Furthermore, all REST API requests are handled according to the [JSON REST API specification](https://jsonapi.org/). These specifications define how clients should request data, fetch it, modify it, and how the server should respond to it. Hence, the expected behavior stays the same across all endpoints. - -Check our introductory video on Glue API: - -{% wistia adls2vfqjm 960 720 %} - diff --git a/docs/scos/dev/glue-api-guides/201811.0/glue-spryks.md b/docs/scos/dev/glue-api-guides/201811.0/glue-spryks.md deleted file mode 100644 index 5eb260b9c9e..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/glue-spryks.md +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Glue Spryks -description: This article demonstrates how to manage the Glue REST API layer of Spryker with the help of code automation tools (Spryks). -last_updated: Jun 16, 2021 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/glue-spryks -originalArticleId: 7cc8495c-c842-412c-8878-7448157ddac4 -redirect_from: - - /2021080/docs/glue-spryks - - /2021080/docs/en/glue-spryks - - /docs/glue-spryks - - /docs/en/glue-spryks - - /v6/docs/glue-spryks - - /v6/docs/en/glue-spryks - - /v5/docs/glue-spryks - - /v5/docs/en/glue-spryks - - /v4/docs/glue-spryks - - /v4/docs/en/glue-spryks ---- - -Spryker SDK facilitates Glue API Resource development by providing a set of code generation tools, called **Spryks**. Usage of _Spryks_ not only provides an easy and fast way of performing various tasks, but also ensures that the generated code is fully compatible with Spryker and that all coding, naming and other conventions are observed. - -{% info_block infoBox %} - -For more information on _Spryks_, see [Spryk](/docs/sdk/dev/spryks/spryks.html). - -{% endinfo_block %} - -The following article describes the Spryks available for Glue API development and their arguments. - -{% info_block warningBox %} - -To perform the requested operations, besides the _Spryks_ called by the user, other _Spryks_ can be called automatically. The reference includes, for each _Spryk_, only its own arguments. - -{% endinfo_block %} - -To call a Spryk, you can use the following console commands: - -* `vendor/bin/console spryk:run {SPRYK NAME}` - to call a _Spryk_ and input the arguments interactively, one-by-one; - -* `vendor/bin/console spryk:run {SPRYK NAME} --{argument name}={argument value}` - to call a _Spryk_ and pass the named arguments in one pass. - -## Glue Module Management - -| Spryk | Description | -| --- | --- | -| `AddGlueBasicStructure` | Adds a new Glue layer with basic structure to the given module with the minimum required folders and files.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type.
    By default, the resource type is the same as the module name without the `RestApi` suffix (if present), lower case. For example, if the module name is *MyResource**RestApi***, the default resource type is *myresource*.
    For more details, see section **Resource Routing** in [Glue Infrastructure](#routing-management).
| -| `AddGlueConfig` | Adds a Glue configuration file for the given module.
The file will be created as `src/Pyz/Glue/[ModuleName]/[ModuleName]Config.php`.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.
| -| `AddGlueConfigConstant` | Adds a new constant to the Glue configuration file of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **name** - name of the constant;
  • **value** - value of the constant.
| - -## Adding Resources - -| Spryk | Description | -| --- | --- | -| `AddGlueGetResource` | Adds a new `GET` Resource to the given resources of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the type of API resources that will be retrieved.
  • **clientModule** - specifies the module that provides the functionality to retrieve the items represented by the given API resources. The module must have the *Client* layer.
  • **clientMethod** - specifies the method in the *clientModule* that will be used to retrieve the items represented by the given API resources.
| -| `AddGlueDeleteResource` | Adds a new `DELETE` Resource to the given resource of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the type of API resources that will be deleted.
  • **clientModule** - specifies the module that provides the functionality to delete the items represented by the given API resources. The module must have the *Client* layer.
  • **clientMethod** - specifies the method in the *clientModule* that will be used to delete the items represented by the given API resources.
| -| `AddGluePatchResource` | Adds a new `PATCH` Resource to the given resource of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the type of API resources that will be modified.
  • **clientModule** - specifies the module that provides the functionality to modify the items represented by the given API resources. The module must have the *Client* layer.
  • **clientMethod** - specifies the method in the *clientModule* that will be used to modify the items represented by the given API resources.
| -| `AddGluePostResource` | Adds a new `POST` Resource to the given resource of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the type of API resources that will be created.
  • **clientModule** - specifies the module that provides the functionality to create the items represented by the given API resources. The module must have the *Client* layer.
  • **clientMethod** - specifies the method in the *clientModule* that will be used to create the items represented by the given API resources.
| -| `AddGlueResource` | Adds a new resource to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it is the same as the class name plus the Interface suffix.
| -| `AddGlueResourceInterface` | Adds a new resource interface to the given module. The resource must have a resource class associated with it.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it is the same as the class name plus the `Interface` suffix.
| - -## Routing Management - -| Spryk | Description | -| --- | --- | -| `AddGlueResourceRoute` | Adds a routing for the given resource type of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type.
  • **resourceRouteMethod** - specifies the resource method that needs to be routed.
| -| `AddGlueResourceRoutePlugin` | Adds a new resource route plugin for the given resource type of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type.
| -{% info_block infoBox %} - -For more details, see section **Resource Routing** in [Glue Infrastructure](#routing-management). - -{% endinfo_block %} - -## Managing Resource Relationships - -| Spryk | Description | -| --- | --- | -| `AddGlueResourceRelationshipPlugin` | Adds a **resource-type-by-relationship-parameter** relationship between 2 resources. Adds the corresponding relationship plugin to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type to add the relationship for.
  • **relationshipParameter** - specifies the parameter through which the two resources are related to each other
| -{% info_block infoBox %} - -For more details, see section **Resource Relationships** in [Glue Infrastructure](#managing-resource-relationships). - -{% endinfo_block %} - -## Controller Management - -| Spryk | Description | -| --- | --- | -| `AddGlueController` | Adds a new Glue controller to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **controller** - specifies the controller name.
| -| `AddGlueControllerDeleteAction` | Adds a new `delete` action to the controller of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **controller** - specifies the name of the controller class to which the action will be added.
  • **controllerMethod** - specifies the name of the controller method to add. By default, **deleteAction**.
  • **resourceType** - specifies the type of API resources that will be deleted.
  • **modelSuffix** - specifies the suffix to be used in the name of the model that will be invoked by the method. The default suffix is `Deleter`.
| -| `AddGlueControllerGetAction` | Adds a new `get` action to the controller of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **controller** - specifies the name of the controller class to which the action will be added.
  • **controllerMethod** - specifies the name of the controller method to add. By default, **getAction**.
  • **resourceType** - specifies the type of API resources that will be retrieved.
  • **modelSuffix** - specifies the suffix to be used in the name of the model that will be invoked by the method. The default suffix is `Getter`.
| -| `AddGlueControllerPatchAction` | Adds a new `patch` action to the controller of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **controller** - specifies the name of the controller class to which the action will be added.
  • **controllerMethod** - specifies the name of the controller method to add. By default, **patchAction**.
  • **resourceType** - specifies the type of API resources that will be modified.
  • **modelSuffix** - specifies the suffix to be used in the name of the model that will be invoked by the method. The default suffix is `Updater`.
| -| `AddGlueControllerPostAction` | Adds a new `post` action to the controller of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **controller** - specifies the name of the controller class to which the action will be added.
  • **controllerMethod** - specifies the name of the controller method to add. By default, **postAction**.
  • **resourceType** - specifies the type of API resources that will be created.
  • **modelSuffix** - specifies the suffix to be used in the name of the model that will be invoked by the method. The default suffix is `Creator`.
| - -{% info_block infoBox %} - -For more details, see section **Resource Controller** in [Glue Infrastructure](/docs/scos/dev/concepts/glue-api/glue-spryks.html#resource-controller). - -{% endinfo_block %} - -## Action Plugin Management - -| Spryk | Description | -| --- | --- | -| `AddGlueControllerBeforeActionPlugin` | Adds a new **before action** plugin to the given business model of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the model name.
    It will be used as a prefix for the plugin name. For example, if you specify `My` for *modelName*, the resulting plugin name will be `SetMyControllerBeforeActionPlugin`.
| -| `AddGlueControllerAfterActionPlugin` | Adds a new **after action** plugin to the given business model of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the model name.
    It will be used as a prefix for the plugin name. For example, if you specify `My` for *modelName*, the resulting plugin name will be `SetMyControllerAfterActionPlugin`.
| - -## Dependency Management - -| Spryk | Description | -| --- | --- | -| `AddGlueDependencyProvider` | Adds a new dependency provider class to the given module.
**Arguments**
  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.
| -| `AddGlueDependencyClientBridge` | Adds a new **module-to-dependent-module** _Client_ bridge.
**Arguments**
  • **organization** - specifies the name of the organization in which to create the bridge.
    The default is **Spryker**.
  • **module** - specifies the name of the module, where to create the bridge.
  • **dependentModuleOrganization** - specifies the name of the organization where the dependent module is located.
    The default is **Spryker**.
  • **dependentModule** - specifies the name of the dependent module.
| -| `AddGlueDependencyClientInterface` | Adds a new **module-to-dependent-module** _Client_ bridge interface.
**Arguments**
  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization in which to create the bridge interface.
    The default is **Pyz**.
  • **module** - specifies the name of the module, where to create the bridge interface.
  • **dependentModuleOrganization** - specifies the name of the organization where the dependent module is located.
    The default is **Spryker**.
  • **dependentModule** - specifies the name of the dependent module.
| -| `AddGlueDependencyClientBridgeInterfaceMethod` | Adds a new method to the interface of a **module-to-dependent-module** Client bridge.
**Arguments**
  • **organization** - specifies the name of the organization in which to create the interface.
    The default is **Spryker**.
  • **module** - specifies the name of the module, where to create the bridge.
  • **dependentModuleOrganization** - specifies the name of the organization where the dependent module is located.
    The default is **Spryker**.
  • **dependentModule** - specifies the name of the dependent module.
  • **methods** - specifies the method of the source module to create an interface for.
| -| `AddGlueDependencyClientBridgeMethod` | Adds a new method to a **module-to-dependent-module** Client bridge.
**Arguments**
  • **organization** - specifies the name of the organization in which to create the method.
    The default is **Spryker**.
  • **module** - specifies the name of the module, where to create the method.
  • **dependentModuleOrganization** - specifies the name of the organization where the dependent module is located.
    The default is **Spryker**.
  • **dependentModule** - specifies the name of the dependent module.
  • **methods** - specifies the method of the source module to create the bridge for.
| -| `AddGlueDependencyClientDependencyProviderConstant` | Adds a _Client_ dependency constant to the dependency provider of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization in which to create the constant.
    The default is **Pyz**.
  • **module** - specifies the name of the module, where to add the constant.
  • **dependentModule** - specifies the name of the dependent module.

**Spryk-Specific Arguments:**

  • **name** - specifies the name of the constant.
  • **value** - specifies the value of the constant.
| -| `AddGlueDependencyClientDependencyProviderMethod` | Adds a _Client_ dependency method to the dependency provider of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization in which to create the method.
    The default is **Pyz**.
  • **module** - specifies the name of the module, where to add the method.
  • **dependentModule** - specifies the name of the dependent module.

**Spryk-Specific Arguments:**

  • **providerMethod** - specifies the method name.
| -| `AddGlueDependencyClientFactoryMethod` | Adds a _Client_ dependency method to the factory of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization in which to create the method.
    The default is **Pyz**.
  • **module** - specifies the name of the module, where to add the constant.
  • **dependentModule** - specifies the name of the dependent module.

**Spryk-Specific Arguments:**

  • **factoryMethod** - specifies the method name.
| -| `AddGlueDependencyClientToDependencyProvider` | Adds a Client dependency method to the Container of the dependency provider of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization in which to create the method.
    The default is **Pyz**.
  • **module** - specifies the name of the module, where to add the provider.
  • **dependentModule** - specifies the name of the dependent module.

**Spryk-Specific Arguments:**

  • **providerMethod** - specifies the method name.
    By default, it consists of the dependant module name plus the **Client** prefix.
| - -## Factory Management - -| Spryk | Description | -| --- | --- | -| `AddGlueFactory` | Adds a new factory to the given module.
**Arguments**
  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.
| -| `AddGlueFactoryMethod` | Adds a _create class_ method to the factory of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory of the class for which the method is created.
  • **className** - specifies the name of the class for which the method is created.
| -| `AddGlueMapperFactoryMethod` | Adds a _create mapper_ method to the factory of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory of the mapper for which the method is created.
  • **className** - specifies the name of the mapper for which the method is created.
| -| `AddGlueResourceRestResponseBuilderFactoryMethod` | Adds a method of the response builder to the factory of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the name of the subdirectory where the method is located.
    _The subdirectory must be located in the Processor directory of the module root folder._
  • **className** - specifies the method class name.
| - -## Request and Response Format - -| Spryk | Description | -| --- | --- | -| `AddGlueFormatRequestPlugin` | Adds a new request format plugin to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the name of the request format model that will be implemented by the plugin.
| -| `AddGlueFormatResponseDataPlugin` | Adds a new response data format plugin to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the name of the response data format model that will be implemented by the plugin.
| -| `AddGlueFormatResponseHeadersPlugin` | Adds a new response header format plugin to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the name of the response headers format model that will be implemented by the plugin.
| - -## Processor Management - -| Spryk | Description | -| --- | --- | -| `AddGlueProcessorModel` | Adds a new processor model to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the Processor directory where the model will be created.
  • **className** - specifies the class name for the model.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the `Interface` suffix.
| -| `AddGlueProcessorModelInterface` | Adds a new processor model interface to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the Processor directory where the model interface will be created.
  • **className** - specifies the class name for the model.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the `Interface` suffix.
| -| `AddGlueProcessorModelMethod` | Adds a new method to the given processor model.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the Processor directory where the model class is located.
  • **className** - specifies the class name of the model.
  • **input** - specifies the name of the *input* (`@param`) value of the method.
  • **output** - specifies the name of the *output* (`@return`) value of the method.
| -| `AddGlueProcessorModelInterfaceMethod` | Adds a new method to the given processor model interface.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the `Processor` directory where the interface class is located.
  • **className** - specifies the class name of the model.
  • **input** - specifies the name of the *input* (`@param`) value of the method.
  • **output** - specifies the name of the *output* (`@return`) value of the method.
| - -## Resource Mapper Management - -| Spryk | Description | -| --- | --- | -| `AddGlueResourceMapper` | Adds a new resource mapper model to the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the Processor directory where the model will be created.
    The default subdirectory is `Mapper`.
  • **className** - specifies the class name for the model.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the `Interface` suffix.
| -| `AddGlueResourceMapperInterface` | Adds a new resource mapper model Interface.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the subdirectory under the Processor directory where the interface will be created.
    The default subdirectory is **Mapper**.
  • **className** - specifies the class name for the model.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the **Interface** suffix.
| -| `AddGlueResourceMapperMethod` | Adds a new method to the given resource mapper model.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type that will be mapped with this method.
  • **fromTransfer** - specifies the name of the transfer class that will be used to map the properties of rest **requests** to the resource properties.
  • **toTransfer** - specifies the name of the transfer class that will be used to map the properties of rest **responses** to the resource properties.
    The default name for both the transfers consists of the resource type, camel-cased, with the `Rest` prefix and the`AttributesTransfer` suffix.
| -| `AddGlueResourceMapperInterfaceMethod` | Adds a new method to the resource mapper model interface.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type that will be mapped with this method.
  • **fromTransfer** - specifies the name of the transfer class that will be used to map the properties of rest **requests** to the resource properties.
  • **toTransfer** - specifies the name of the transfer class that will be used to map the properties of rest **responses** to the resource properties.
    The default name for both the transfers consists of the resource type, camel-cased, with the `Rest` prefix and the`AttributesTransfer` suffix.
| - -{% info_block infoBox %} - -For more details, see section **Generic Rest Response** in [Glue Infrastructure](#routing-management). - -{% endinfo_block %} - -## Response Model Management - -| Spryk | Description | -| --- | --- | -| `AddGlueResourceRestResponseBuilderModel` | Adds a new response builder model to the given resource of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the name of the subdirectory where to create the model.
    By default, the Spryk uses the RestResponseBuilder subdirectory in the Processor directory of the module root folder.
  • **resourceType** - specifies the resource type.
  • **className** - specifies the class name for the model.
    By default, it is the same as the resource name in singular and capitalized plus the **RestResponseBuilder** suffix. For example, if the resource name is `myresources`, the class name is `MyresourceRestResponseBuilder`.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the `Interface` suffix.
| -| `AddGlueResourceRestResponseBuilderModelInterface` | Adds an interface for a response builder model class of the given module.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **subDirectory** - specifies the name of the subdirectory where to create the interface.
    By default, the Spryk uses the `RestResponseBuilder` subdirectory in the `Processor` directory of the module root folder.
  • **resourceType** - specifies the resource type.
  • **className** - specifies the class name for the model.
    By default, it is the same as the resource name in singular and capitalized plus the `RestResponseBuilder` suffix. For example, if the resource name is `myresources`, the class name is `MyresourceRestResponseBuilder`.
  • **interfaceName** - specifies the interface name for the model.
    By default, it is the same as the class name plus the `Interface` suffix.
| - -## Adding Validation - -| Spryk | Description | -| --- | --- | -| `AddGlueRestRequestValidatorPlugin` | Adds a new plugin that validates REST requests.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the model name for the plugin.
| -| `AddGlueValidateHttpRequestPlugin` | Adds a new plugin that validates HTTP requests.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization:** name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **modelName** - specifies the model name for the plugin.
| -| `AddGlueValidation` | Adds a _YAML_ file for validating requests to the given resource type.
**Arguments**

**General Arguments:**

  • **mode** - *project* or *core*.
    The default is **project**. For details, see [Difference between Core and Project modes](/docs/sdk/dev/spryks/spryks.html#core-and-project-modes).
  • **organization** - specifies the name of the organization for which to perform the operation.
    The default is **Pyz**.
  • **module** - specifies the module name.

**Spryk-Specific Arguments:**

  • **resourceType** - specifies the resource type.
| - -{% info_block infoBox %} - -For more details, see [Validate REST request format](/docs/scos/dev/tutorials-and-howtos/introduction-tutorials/glue-api/validating-rest-request-format.html). - -{% endinfo_block %} diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.md b/docs/scos/dev/glue-api-guides/201811.0/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.md deleted file mode 100644 index 1db48bcc522..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.md +++ /dev/null @@ -1,389 +0,0 @@ ---- -title: Managing Carts of Registered Users -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-carts-of-registered-users -originalArticleId: cdee2948-be3c-43ec-8f99-0d7dc381326e -redirect_from: - - /v1/docs/managing-carts-of-registered-users - - /v1/docs/en/managing-carts-of-registered-users - - /docs/marketplace/dev/glue-api-guides/201811.0/carts-of-registered-users/managing-carts-of-registered-users.html -related: - - title: Managing Guest Carts - link: docs/scos/dev/glue-api-guides/page.version/managing-carts/guest-carts/managing-guest-carts.html - - title: Checking Out Purchases and Getting Checkout Data - link: docs/scos/dev/glue-api-guides/page.version/checking-out-purchases-and-getting-checkout-data.html ---- - -The **Carts API** provides access to management of customers' shopping carts. The following document covers working with **carts of registered users**. - -{% info_block infoBox %} - -If you want to know how to process carts of registered users, see [Managing Guest Carts](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/guest-carts/managing-guest-carts.html). - -{% endinfo_block %} - -## Guest Carts and Carts of Registered Users -Access to carts of registered users is provided by the /carts resource. Before accessing the resource, you need to authenticate a user first. For more details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -Unlike guest carts, carts of registered users have unlimited lifetime. Registered users can have as many carts as they want. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see Carts API. - -## Creating Registered User Cart -To create a guest cart for a registered user, send a POST request to the following endpoint: -`/carts` -Request sample: `POST http://mysprykershop.com/carts` - -{% info_block infoBox %} - -Apart from creating a new cart, you can also convert a cart of a guest customer to a cart of a registered user when a guest user registers or authenticates. For details, see section **Assigning Guest Cart to Registered Customer** in Managing Guest Carts. - -{% endinfo_block %} - -{% info_block errorBox %} - -To use this endpoint, you need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -### Request -**Attributes** - -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| priceMode | Enum| ✓ | Sets the price mode to be used for the cart. Possible values:
  • **GROSS_MODE** - prices after tax;
  • **NET_MODE** - prices before tax;
  • For details, see [Net and Gross Prices]().
| -| currency | String | ✓ | Sets the cart currency. | -| store | String | ✓ | Sets the name of the store where to create the cart. | - -**Sample Request Body** -```js -{ - "data":{ - "type":"carts", - "attributes":{ - "priceMode":"GROSS_MODE", - "currency":"EUR", - "store":"DE" - } - } -} -``` - -## Response -If a request was successful and a cart was created, the endpoint responds with a **RestCartsResponse** containing information about the new cart. The response contains a unique identifier returned in the id attribute and a self link that can be used to access the card in the future. - -**Sample Response** -```js -{ - "data": { - "type": "carts", - "id": "4741fc84-2b9b-59da-bb8d-f4afab5be054", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "discounts": {}, - "totals": null - }, - "links": { - "self": "http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054" - } - } -} -``` - -**Response Attributes** - -**General Cart Information** - -| Field* | Type | Description | -| --- | --- | --- | -| priceMode |String | Price mode that was active when the cart was created. | -| currency |String |Currency that was selected when the cart was created. | -| store|String | Store for which the cart was created.| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Discount Information** - -| Field* | Type | Description | -| --- | --- | --- | -| displayName |String | Discount name. | -| amount | Integer | Discount amount applied to the cart. | -| code| String | Discount code applied to the cart.| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Totals Information** - -| Field* | Type | Description | -| --- | --- | --- | -| expenseTotal | String |Total amount of expenses (including e.g. shipping costs). | -| discountTotal | Integer |Total amount of discounts applied to the cart. | -| taxTotal | String | Total amount of taxes to be paid.| -| subTotal|Integer |Subtotal of the cart. | -| grandTotal |Integer | Grand total of the cart. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart Item Information** - -| Field* | Type | Description | -| --- | --- | --- | -| sku | String |SKU of the product. | -| quantity | Integer |Quantity of the given product in the cart. | -|groupKey | String | Unique item identifier. The value is generated based on product parameters. | -| amount| Integer | Amount of the product in the cart.| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart Item Calculation Information** - -| Field* | Type | Description | -| --- | --- | --- | -| unitPrice | Integer | Single item price without assuming is it net or gross. This value should be used everywhere a price is disabled. It allows switching the tax mode without side effects. sumPrice | -| Integer Sum of all items prices calculated. taxRate | Integer | Current tax rate in per cent. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum all items' net price. | -| unitGrossPrice | Integer | Single item gross price. | -| sumGrossPrice | Integer | Sum of items gross price. | -| unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given amount of items with additions. | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer | Item total product option price. | -| sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions. | -| sumDiscountAmountFullAggregation | Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| sumPriceToPayAggregation | Integer | Sum of the prices to pay (after discounts). | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 107 | Failed to create a cart. | - -## Retrieving Carts of Registered Users - -To access all carts that a regular user has, send a GET request to the following endpoint: -`/carts` - -Request sample: `GET http://mysprykershop.com/carts` - -To get a specific cart by ID, use the following endpoint: - -`/carts/{% raw %}{{{% endraw %}cartId{% raw %}}}{% endraw %}` - -Request sample: `GET http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054` - -where `4741fc84-2b9b-59da-bb8d-f4afab5be054` is the ID of the cart you need. - -{% info_block errorBox %} - -To use the endpoints, you need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -### Response - -No matter which of the 2 endpoints you use, they will respond with a RestCartsResponse containing the requested cart(s). -**Sample Response** -```js -{ - "data": [ - { - "type": "carts", - "id": "f8cfd611-4611-57d7-bc70-f81cee96a6af", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "discounts": {}, - "totals": { - "expenseTotal": null, - "discountTotal": null, - "taxTotal": null, - "subtotal": null, - "grandTotal": null - } - }, - "links": { - "self": "http://mysprykershop.com/carts/f8cfd611-4611-57d7-bc70-f81cee96a6af" - } - } - ], - "links": { - "self": "http://mysprykershop.com/carts" - } -} -``` -Sample response for a user that doesn't have any carts: -```js -{ - "data": [], - "links": { - "self": "http://mysprykershop.com/carts" - } -} -``` - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101 | A cart with the specified ID was not found. | -| 104 | Cart ID missing. | - -## Adding Items to Carts of Registered Users - -To add items to a cart, send a POST request to the following endpoint: - -`/carts/{% raw %}{{{% endraw %}cartId{% raw %}}}{% endraw %}/items` - -Request sample: `POST http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054/items` - -where `4741fc84-2b9b-59da-bb8d-f4afab5be054` is the ID of the cart you need. - -{% info_block errorBox %} - -To use this endpoint, you need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -## Request - -**Attributes** - -| Attribute | Type | Required | Description | -|---|---|---|---| -| sku | String |✓ | Specifies the SKU part number of an item to add to the cart. | -| quantity | String |✓ | Specifies the quantity of items to add. | - -**Sample Request Body** -```js -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "209_12554247", - "quantity": 10 - } - } -} -``` - -### Response - -In case of a successful update, the endpoint will also respond with a **RestCartsResponse** containing the new items. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101 | A cart with the specified ID was not found. | -| 102 | Failed to add an item. | -| 104 | Cart ID missing. | - -## Removing Items from Guest Carts - -To remove an item from a cart, send a DELETE request to the following endpoint: - -`/carts/{% raw %}{{{% endraw %}cartId{% raw %}}}{% endraw %}/items/{% raw %}{{{% endraw %}concrete_product_sku{% raw %}}}{% endraw %}` - -Request sample: `DELETE http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054/items/177_25913296` - -where `4741fc84-2b9b-59da-bb8d-f4afab5be054` is the ID of the cart you need and `177_25913296` is the SKU of the concrete product you want to remove. - -{% info_block errorBox %} - -To use this endpoint, you need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -### Response - -If the item was deleted successfully, the endpoint will respond with a **204 No Content** status code. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101 | A cart with the specified ID was not found. | -| 103 | Item could not be found in the cart. | -| 104 | Cart ID missing. | -| 106 | Failed to delete an item. | - -## Changing Item Quantity in Registered User's Cart - -To change the quantity of certain items in a cart, use the following endpoint with the PATCH method: - -`/carts/{% raw %}{{{% endraw %}cartId{% raw %}}}{% endraw %}/items/{% raw %}{{{% endraw %}concrete_product_sku{% raw %}}}{% endraw %}` - -Request sample: `PATCH http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054/items/177_25913296` - -where `4741fc84-2b9b-59da-bb8d-f4afab5be054` is the ID of the cart you need and `177_25913296` is the SKU of the concrete product for which to change the quantity. - -{% info_block errorBox %} - -To use this endpoint, you need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -### Request - -**Attributes** - -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| sku | String | ✓ | Specifies the SKU part number of the item to change. | -| quantity | String | ✓ | Specifies the new quantity of items. | - -**Sample Request Body** -```js -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "209_022_21994751", - "quantity": 10 - } - } -} -``` - -### Response - -In case of a successful update, the endpoint will also respond with a **RestCartsResponse** with updated quantity. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101 | A cart with the specified ID was not found. | -| 102 | Failed to update the item. | -| 103 | Item could not be found in the cart. | -| 104 | Cart ID missing. | - -## Deleting Registered User's Cart - -To delete a cart of a registered user, send a DELETE request to the following endpoint: - -`/carts/{% raw %}{{{% endraw %}cartId{% raw %}}}{% endraw %}` - -Request sample: `DELETE http://mysprykershop.com/carts/4741fc84-2b9b-59da-bb8d-f4afab5be054` - -where `4741fc84-2b9b-59da-bb8d-f4afab5be054` is the ID of the cart you want to delete. - -### Response - -If the cart was deleted successfully, the endpoint will respond with a **204 No Content** status code. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101 | A cart with the specified ID was not found. | -| 104 | Cart ID missing. | -| 105 | Failed to delete the cart. | diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/guest-carts/managing-guest-carts.md b/docs/scos/dev/glue-api-guides/201811.0/managing-carts/guest-carts/managing-guest-carts.md deleted file mode 100644 index 7b25225e551..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/guest-carts/managing-guest-carts.md +++ /dev/null @@ -1,789 +0,0 @@ ---- -title: Managing Guest Carts -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-guest-carts -originalArticleId: b3124f03-6fde-4c70-b22c-1fbae12008db -redirect_from: - - /v1/docs/managing-guest-carts - - /v1/docs/en/managing-guest-carts - - /docs/marketplace/dev/glue-api-guides/201811.0/guest-carts/managing-guest-carts.html -related: - - title: Managing Carts of Registered Users - link: docs/scos/dev/glue-api-guides/page.version/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.html - - title: Checking Out Purchases and Getting Checkout Data - link: docs/scos/dev/glue-api-guides/page.version/checking-out-purchases-and-getting-checkout-data.html ---- - -The Carts API provides access to management of customers' shopping carts. The following document covers working with guest carts. - -Guest carts come with an expiration date, which means that unregistered users can use their carts only for a limited time frame. After the lifetime of a guest cart expires, it is deleted by the system automatically.It is up to you to decide, how long you want them to be saved. Also, with the introduction of the Carts API, comes the possibility to persist guest carts. While carts for registered customers have always been persisted, the introduction of the API brings possibility to persist carts of guest customers. - -Only one cart can be created for each guest customer. - -{% info_block infoBox %} - -If you want to know how to process carts of registered users, see [Managing Carts of Registered Users](/docs/scos/dev/glue-api-guides/{{page.version}}/managing-carts/carts-of-registered-users/managing-carts-of-registered-users.html). - -{% endinfo_block %} - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Carts API](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-cart-feature-integration.html). - -## Resources for Accessing Guest Carts -The `/guest-carts` and `/guest-cart-items` resources provide endpoints to manage carts of users who haven't yet registered in the system or authenticated with the Glue REST API. Such carts provide the possibility for users to place items on a cart without the necessity to provide any registration information. - -Each guest customer is identified by the value of the **X-Anonymous-Customer-Unique-Id** header. The header needs to be passed with each request related to a guest user. Glue REST API does not assign unique IDs to guest customer users. It is the responsibility of the API client to generate and manage unique IDs for all guest user sessions. - -## Creating a Guest Cart -To create a guest cart for an unauthenticated user, you simply need to place an item or several items on a new guest card. To do this, send a POST request to the following endpoint: - -`/guest-cart-items` - -Request sample: `POST http://mysprykershop.com/guest-cart-items` - -### Request -#### Headers: - -`X-Anonymous-Customer-Unique-Id` - specifies a unique guest user ID for the new cart. If the specified user already has a cart, the item or items will be added on their existing cart instead of creating a new one. - -#### Attributes: - -| Attribute| Type | Required | Description | -| --- | --- | --- | --- | -| sku | String | ✓ | Specifies the SKU part number of the item to place on the new guest cart. | -| quantity | String | ✓ | Specifies the number of items to place on the guest cart. | - -**Sample Request Body** -```js -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "022_21994751", - "quantity": 1 - } - } -} -``` - -### Response -If a request was successful and a cart was created, the endpoint responds with a RestCartsResponse containing information about the new cart. -**Sample Response** -```js -{ - "data": { - "type": "carts", - "id": "2506b65c-164b-5708-8530-94ed7082e802", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 9114, - "code": null - } - ], - "totals": { - "expenseTotal": 0, - "discountTotal": 9114, - "taxTotal": 9777, - "subtotal": 91136, - "grandTotal": 82022 - } - }, - "links": { - "self": "http://mysprykershop.com/carts/2506b65c-164b-5708-8530-94ed7082e802" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "022_21994751" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-image-sets", - "id": "022_21994751", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/21994751-Sony.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/21994751-Sony.jpg" - } - ] - }, - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/21994751-Sony.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/21994751-Sony.jpg" - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/022_21994751/concrete-product-image-sets" - } - }, - { - "type": "concrete-product-availabilities", - "id": "022_21994751", - "attributes": { - "availability": true, - "quantity": 10, - "isNeverOutOfStock": true - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/022_21994751/concrete-product-availabilities" - } - }, - { - "type": "concrete-product-prices", - "id": "022_21994751", - "attributes": { - "price": 26000, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 26000 - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/022_21994751/concrete-product-prices" - } - }, - { - "type": "concrete-products", - "id": "022_21994751", - "attributes": { - "sku": "022_21994751", - "name": "Sony Cyber-shot DSC-WX220", - "description": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing it, and slip in your pocket. Shooting great photos and videos is easy with the W800. Buttons are positioned for ease of use, while a dedicated movie button makes shooting movies simple. The vivid 2.7-type Clear Photo LCD display screen lets you view your stills and play back movies with minimal effort. Whip out the W800 to capture crisp, smooth footage in an instant. At the press of a button, you can record blur-free 720 HD images with digital sound. Breathe new life into a picture by using built-in Picture Effect technology. There’s a range of modes to choose from – you don’t even have to download image-editing software.", - "attributes": { - "megapixel": "18.2 MP", - "display": "LCD", - "digital_zoom": "20 x", - "sensor_type": "CMOS", - "brand": "Sony", - "color": "Gold" - }, - "superAttributesDefinition": [ - "color" - ], - "metaTitle": "Sony Cyber-shot DSC-WX220", - "metaKeywords": "Sony,Entertainment Electronics", - "metaDescription": "Styled for your pocket Precision photography meets the portability of a smartphone. The W800 is small enough to take great photos, look good while doing i" - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/022_21994751" - }, - "relationships": { - "concrete-product-image-sets": { - "data": [ - { - "type": "concrete-product-image-sets", - "id": "022_21994751" - } - ] - }, - "concrete-product-availabilities": { - "data": [ - { - "type": "concrete-product-availabilities", - "id": "022_21994751" - } - ] - }, - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "022_21994751" - } - ] - } - } - }, - { - "type": "items", - "id": "022_21994751", - "attributes": { - "sku": "022_21994751", - "quantity": 1, - "groupKey": "022_21994751", - "amount": null, - "calculations": { - "unitPrice": 26000, - "sumPrice": 52000, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 26000, - "sumGrossPrice": 52000, - "unitTaxAmountFullAggregation": 3736, - "sumTaxAmountFullAggregation": 7472, - "sumSubtotalAggregation": 52000, - "unitSubtotalAggregation": 26000, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 2600, - "sumDiscountAmountAggregation": 5200, - "unitDiscountAmountFullAggregation": 2600, - "sumDiscountAmountFullAggregation": 5200, - "unitPriceToPayAggregation": 23400, - "sumPriceToPayAggregation": 46800 - } - }, - "links": { - "self": "http://mysprykershop.com/carts/2506b65c-164b-5708-8530-94ed7082e802/items/022_21994751" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "022_21994751" - } - ] - } - } - } - ] -} -``` - -**Response Attributes** -**General Cart Information** - -| Field* | Type | Description | -| --- | --- | --- | -| priceMode | String | Price mode that was active when the cart was created. | -| currency | String | Currency that was selected when the cart was created. | -| store | String | Store for which the cart was created. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Discount information** - -| Field* | Type | Description | -| --- | --- | --- | -|displayName |String |Discount name. | -| code | String| Discount code applied to the cart. | -| amount | Integer | Discount amount applied to the cart. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Totals Information** - -| Field* | Type | Description | -| --- | --- | --- | -|expenseTotal | String |Total amount of expenses (including e.g. shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the cart. | -| taxTotal| String | Total amount of taxes to be paid. | -|subTotal | Integer | Subtotal of the cart. | -| grandTotal | Integer | Grand total of the cart. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart Item Information** - -| Field* | Type | Description | -| --- | --- | --- | -| sku |String | SKU of the product. | -| quantity |Integer |Quantity of the given product in the cart. | -| groupKey |String | Unique item identifier. The value is generated based on product parameters. | -| amount | Integer | Amount of the products in the cart.| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart Item Calculation Information** - -| Field* | Type | Description | -| --- | --- | --- | -| unitPrice | Integer | Single item price without assuming is it net or gross. This value should be used everywhere a price is disabled. It allows switching the tax mode without side effects. | -|sumPrice | Integer |Sum of all items prices calculated. | -| taxRate| Integer |Current tax rate in per cent. | -| unitNetPrice | Integer | Single item net price. | -|sumNetPrice | Integer |Sum of all items' net price. | -| unitGrossPrice | Integer |Single item gross price. | -| sumGrossPrice | Integer | Sum of items gross price. | -| unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given amount of items with additions. | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer |Item total product option price. | -| sumProductOptionPriceAggregation | Integer |Item total of product options for the given sum of items. | -| unitDiscountAmountAggregation| Integer |Item total discount amount. | -|sumDiscountAmountAggregation | Integer | Sum Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions.| -| sumDiscountAmountFullAggregation| Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -|sumPriceToPayAggregation | Integer |Sum of the prices to pay (after discounts). | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -The response contains a unique identifier returned in the id attribute and a self link that can be used to access the card in the future. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 102 | Failed to add an item to the new cart. | -| 107 | Failed to create a cart. | -| 109 | Anonymous customer ID is missing. | - -## Retrieving Carts of Guest Users -There are 2 possible ways how you can access a cart of a guest user - -* By the unique identifier of the guest user -{% info_block infoBox %} -The user's unique identifier is passed in the **X-Anonymous-Customer-Unique-Id** header when creating a cart. It is managed by the API client. -{% endinfo_block %} -`/guest-carts` -Request sample: `GET http://mysprykershop.com/guest-carts` -**Headers:** -**X-Anonymous-Customer-Unique-Id** - specifies the unique guest user ID. - -* By the unique identifier of the cart -{% info_block infoBox %} -The unique identifier of the cart is passed by the Glue API in the id attribute of a **RestCartsResponse** when a new guest cart is created. -{% endinfo_block %} -`/guest-carts/{% raw %}{{{% endraw %}guestCartId{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802` -where `2506b65c-164b-5708-8530-94ed7082e802` is the ID of the cart you need. - -### Response -No matter which of the 2 endpoints you use, it will respond with a **RestCartsResponse**. -**Sample Response** -```js -{ - "data": [ - { - "type": "carts", - "id": "c481acf2-a4de-5d09-9d0d-c3fc5b1645ba", - "attributes": { - "priceMode": "GROSS_MODE", - "currency": "EUR", - "store": "DE", - "discounts": [ - { - "displayName": "10% Discount for all orders above", - "amount": 4250, - "code": null - } - ], - "totals": { - "expenseTotal": 0, - "discountTotal": 4250, - "taxTotal": 6107, - "subtotal": 42502, - "grandTotal": 38252 - } - }, - "links": { - "self": "http://mysprykershop/carts/c481acf2-a4de-5d09-9d0d-c3fc5b1645ba" - }, - "relationships": { - "items": { - "data": [ - { - "type": "items", - "id": "177_25913296" - } - ] - } - } - } - ], - "links": { - self": "http://mysprykershop/guest-carts" - }, - "included": [ - { - "type": "concrete-product-image-sets", - "id": "177_25913296", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/24867659-4916.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/24867659-4916.jpg" - } - ] - }, - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/24867659-4916.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/24867659-4916.jpg" - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop/concrete-products/177_25913296/concrete-product-image-sets" - } - }, - { - "type": "concrete-product-availabilities", - "id": "177_25913296", - "attributes": { - "availability": true, - "quantity": 20, - "isNeverOutOfStock": false - }, - "links": { - "self": "http://mysprykershop/concrete-products/177_25913296/concrete-product-availabilities" - } - }, - { - "type": "concrete-product-prices", - "id": "177_25913296", - "attributes": { - "price": 42502, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 42502 - } - ] - }, - "links": { - "self": "http://mysprykershop/concrete-products/177_25913296/concrete-product-prices" - } - }, - { - "type": "concrete-products", - "id": "177_25913296", - "attributes": { - "sku": "177_25913296", - "name": "Samsung Galaxy Tab Active 8.0 32 GB", - "description": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from water and dust. Gain toughness and stability without sacrificing a premium design with 9.75-mm thickness(without cover) and a 393-gram light weight with rugged reinforcement. Don’t worry about drops or impacts in active business environments. With its included cover, Samsung Galaxy Tab Active is designed to handle drops of up to 1.2 meters with protective cover (3.9 feet). Save time on communications and work process management with easy NFC device pairing and tag reading. A 3.1-megapixel (MP) Auto Focus (AF) camera with a Flash feature enables easy, efficient barcode scanning to facilitate communication and workflow.", - "attributes": { - "storage_media": "flash", - "processor_frequency": "1.2 GHz", - "display_diagonal": "20.3 cm", - "aspect_ratio": "16:09", - "brand": "Samsung", - "internal_storage_capacity": "32 GB" - }, - "superAttributesDefinition": [ - "storage_media", - "processor_frequency", - "internal_storage_capacity" - ], - "metaTitle": "Samsung Galaxy Tab Active 8.0 8 GB", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from w" - }, - "links": { - "self": "http://mysprykershop/concrete-products/177_25913296" - }, - relationships": { - "concrete-product-image-sets": { - "data": [ - { - "type": "concrete-product-image-sets", - "id": "177_25913296" - } - ] - }, - "concrete-product-availabilities": { - "data": [ - { - "type": "concrete-product-availabilities", - "id": "177_25913296" - } - ] - }, - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "177_25913296" - } - ] - } - } - }, - { - "type": "items", - "id": "177_25913296", - "attributes": { - "sku": "177_25913296", - "quantity": "1", - "groupKey": "177_25913296", - "amount": null, - "calculations": { - "unitPrice": 42502, - "sumPrice": 42502, - "taxRate": 19, - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitGrossPrice": 42502, - "sumGrossPrice": 42502, - "unitTaxAmountFullAggregation": 6107, - "sumTaxAmountFullAggregation": 6107, - "sumSubtotalAggregation": 42502, - "unitSubtotalAggregation": 42502, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitDiscountAmountAggregation": 4250, - "sumDiscountAmountAggregation": 4250, - "unitDiscountAmountFullAggregation": 4250, - "sumDiscountAmountFullAggregation": 4250, - "unitPriceToPayAggregation": 38252, - "sumPriceToPayAggregation": 38252 - } - }, - "links": { - "self": "http://mysprykershop/carts/c481acf2-a4de-5d09-9d0d-c3fc5b1645ba/items/177_25913296" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "177_25913296" - } - ] - } - } - } - ] -} -``` - -**Response Attributes** -**General Cart Information** - -| Field* | Type |Description | -| --- | --- | --- | -|priceMode | String | Price mode that was active when the cart was created. | -| currency | String | Currency that was selected when the cart was created. | -|store | String | Store for which the cart was created.| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Discount Information** - -| Field* | Type |Description | -| --- | --- | --- | -|displayName | String | Discount name. | -|amount | Integer | Discount amount applied to the cart. | -|code |String | Discount code applied to the cart. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Totals Information** - -| Field* | Type | Description | -| --- | --- | --- | -| expenseTotal | String |Total amount of expenses (including e.g. shipping costs) | -|discountTotal | Integer |Total amount of discounts applied to the cart. | -|taxTotal |String | Total amount of taxes to be paid.| -| subTotal| Integer | Subtotal of the cart. | -| grandTotal | Integer | rand total of the cart. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart Item Information** - -| Field* | Type | Description | -| --- | --- | --- | -| sku| String | SKU of the product. | -| quantity | Integer |Quantity of the given product in the cart. | -| groupKey| String | Unique item identifier. The value is generated based on product parameters. | -|amount | Integer | Amount of the product in the cart. -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Cart item calculation information** - -| Field* | Type | Description | -| --- | --- | --- | -| unitPrice | Integer | Single item price without assuming is it net or gross. This value should be used everywhere a price is disabled. It allows switching the tax mode without side effects. | -| sumPrice | Integer | Sum of all items prices calculated. | -| taxRate | Integer | Current tax rate in per cent.| -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer |Sum of all items' net price. | -| unitGrossPrice| Integer | Single item gross price. | -|sumGrossPrice | Integer | Sum of items gross price. | -| unitTaxAmountFullAggregation| Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given amount of items with additions. | -| sumSubtotalAggregation| Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer |Item total product option price. | -| sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -|sumDiscountAmountAggregation| Integer | Sum Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum total discount amount with additions. | -|sumDiscountAmountFullAggregation| Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| sumPriceToPayAggregation | Integer |Sum of the prices to pay (after discounts).| -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Possible Errors** - -|Code | Reason | -| --- | --- | -| 101 |A cart with the specified ID was not found. | -| 104 | Cart ID missing. | -|109 | Anonymous customer ID is missing. | - -## Adding Items to Guest Carts -To add items to guest carts, send a `POST` request to one of the following endpoints: - -* reference guest cart by **guest user ID** -{% info_block infoBox %} -The user's unique identifier is passed in the **X-Anonymous-Customer-Unique-Id** header when creating a cart. It is managed by the API client. -{% endinfo_block %} -`/guest-cart-items` -Request sample: `GET http://mysprykershop.com/guest-cart-items` -**Headers:** -**X-Anonymous-Customer-Unique-Id** - specifies the unique guest user ID. - -* by the unique identifier of the cart -{% info_block infoBox %} -The unique identifier of the cart is passed by the Glue API in the id attribute of a **RestCartsResponse** when a new guest cart is created. -{% endinfo_block %} -`/guest-carts/{% raw %}{{{% endraw %}guestCartId{% raw %}}}{% endraw %}` -Request sample: `POST http://mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802/guest-cart-items` -where `2506b65c-164b-5708-8530-94ed7082e802` is the ID of the cart you need. - -### Request -**Attributes:** - -| Attribute | Type| Required | Description | -| --- | --- | --- | --- | -| sku | String | ✓ | Specifies the SKU part number of an item to add to the cart. | -| quantity | String | ✓ | Specifies the quantity of items to add. | - -**Sample Request Body** -```js -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "209_12554247", - "quantity": 10 - } - } -} -``` - -## Response -In case of a successful update, the endpoint will also respond with a **RestCartsResponse** containing the new items. - -**Possible Errors** - -| Code |Reason | -| --- | --- | -| 101 |A cart with the specified ID was not found. | -| 102 |Failed to add an item. | -| 104 | Cart ID missing. | -| 109 |Anonymous customer ID is empty. | - -## Removing Items from Guest Carts -To remove an item from a guest cart, send a `DELETE` request to one of the following endpoints: - -`/guest-carts/{% raw %}{{{% endraw %}guestCartId{% raw %}}}{% endraw %}/guest-cart-items/{% raw %}{{{% endraw %}concrete_product_sku{% raw %}}}{% endraw %}` - -Request sample: `DELETE http://mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802/guest-cart-items/177_25913296` - -where `2506b65c-164b-5708-8530-94ed7082e802` is the ID of the cart you need and `177_25913296` is the SKU of the concrete product you want to remove. - -**Headers:** -**X-Anonymous-Customer-Unique-Id** - specifies the unique guest user ID. - -{% info_block infoBox %} -The unique identifier of the cart is passed by the Glue API in the id attribute of a **RestCartsResponse** when a new guest cart is created. -{% endinfo_block %} - -{% info_block infoBox %} -The user's unique identifier is passed in the **X-Anonymous-Customer-Unique-Id** header when creating a cart. It is managed by the API client. -{% endinfo_block %} - - -### Response -If the item was deleted successfully, the endpoint will respond with a **204 No Content** status code. - -**Possible Errors** - -|Code |Reason | -| --- | --- | -|101 | A cart with the specified ID was not found. | -| 103| Item could not be found in the cart. | -| 104 | Cart ID missing. | -|106 |Failed to delete an item. | -| 109|Anonymous customer ID is empty. | - -## Changing Item Quantity in a Guest Cart -To change the quantity of certain items in a guest cart, use the following endpoints with the `PATCH` method: - -`/guest-carts/{% raw %}{{{% endraw %}guestCartId{% raw %}}}{% endraw %}/guest-cart-items/{% raw %}{{{% endraw %}concrete_product_sku{% raw %}}}{% endraw %}` -Request sample: `PATCH http://mysprykershop.com/guest-carts/2506b65c-164b-5708-8530-94ed7082e802/guest-cart-items/177_25913296` -where `2506b65c-164b-5708-8530-94ed7082e802` is the ID of the cart you need and `177_25913296` is the SKU the concrete product for which to change the quantity. - -**Headers:** -**X-Anonymous-Customer-Unique-Id** - specifies the unique guest user ID. - -{% info_block infoBox %} -The unique identifier of the cart is passed by the Glue API in the id attribute of a **RestCartsResponse** when a new guest cart is created. -{% endinfo_block %} -{% info_block infoBox %} -The user's unique identifier is passed in the **X-Anonymous-Customer-Unique-Id** header when creating a cart. It is managed by the API client. -{% endinfo_block %} - -### Request -**Attributes:** - -|Attribute |Type | Required | Description | -| --- | --- | --- | --- | -| sku | String | ✓ | Specifies the SKU part number of an item to add to the cart. | -| quantity | String | ✓ |Specifies the quantity of items to add. | - -**Sample Request Body** -```js -{ - "data": { - "type": "guest-cart-items", - "attributes": { - "sku": "209_12554247", - "quantity": 10 - } - } -} -``` - -### Response -In case of a successful update, the endpoint will also respond with a **RestCartsResponse** with updated quantity. - -**Possible Errors** - -| Code | Reason | -| --- | --- | -| 101| A cart with the specified ID was not found. | -| 102 |Failed to update the item. | -|103 | Item could not be found in the cart. | -|104 | Cart ID missing. | -| 109| Anonymous customer ID is empty. | - -## Assigning Guest Cart to a Registered Customer -Initially, guest carts are anonymous. In other words, they are not related to any particular user. However, if an anonymous customer authenticates or registers in the system, you can link their guest cart with their user account, so that they don't lose the list of products they want to purchase. For this purpose, you need to transform a guest cart into a registered user cart. - -To assign a guest cart to a new customer, send a request to create a customer and pass the **X-Anonymous-Customer-Unique-Id** header as a part of your request. To assign a cart to an already registered customer who wants to log in, include the **X-Anonymous-Customer-Unique-Id** header in the authentication request. - -{% info_block infoBox %} -The user's unique identifier is passed in the **X-Anonymous-Customer-Unique-Id** header when creating a cart. It is managed by the API client. -{% endinfo_block %} diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/managing-carts.md b/docs/scos/dev/glue-api-guides/201811.0/managing-carts/managing-carts.md deleted file mode 100644 index 8c421af0b5f..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-carts/managing-carts.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Managing Carts -last_updated: May 10, 2019 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-carts -originalArticleId: 986692c0-9e8b-4693-a1d0-430e4255ee14 -redirect_from: - - /v1/docs/managing-carts - - /v1/docs/en/managing-carts ---- - -The **Carts API** provides access to management of customers' shopping carts. The carts come in two different forms: **carts for registered customers** and **carts for guests**. - -In your development, the resources provided by the API can support you in the development of shopping cart functionality for registered and guest customers. -For your convenience, we have created two separate guides based on cart type: - -* Managing Guest Carts -* Managing Carts of Registered Users diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-customers/managing-customers.md b/docs/scos/dev/glue-api-guides/201811.0/managing-customers/managing-customers.md deleted file mode 100644 index 0525d77871e..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-customers/managing-customers.md +++ /dev/null @@ -1,618 +0,0 @@ ---- -title: Managing Customers -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-customers-api -originalArticleId: bff44067-c078-4006-9f30-ba1c01f4666b -redirect_from: - - /v1/docs/managing-customers-api - - /v1/docs/en/managing-customers-api - - /docs/scos/dev/glue-api-guides/201811.0/manging-customers/managing-customers.html -related: - - title: Managing Wishlists - link: docs/scos/dev/glue-api-guides/page.version/managing-wishlists/managing-wishlists.html - - title: Retrieving Customer's Order History - link: docs/scos/dev/glue-api-guides/page.version/managing-customers/retrieving-customer-orders.html ---- - -The Customer API provides functionality for the creation of customers and administration of their account data. This administration includes the possibility to maintain a set of customer addresses as separate resources. In checkout process, these address resources can be retrieved and used to speed up the buying process. On the authentication side, the API supports authentication via OAuth 2.0 protocol and password restoring functionality. - -In your development, these resources can help you to: - -* Retrieve relevant customer information for any page where customer information is needed -* Enable customer registration -* Allow customer login/authentication -* Enrich customer profiles with additional data such as addresses - -## Installation -For details on the modules that provide the API functionality and how to install them, see [Customer API Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-customer-account-management-feature-integration.html). - -## Creating a Customer -To create a new customer user, send a POST request to the following endpoint: -`/customers` -Request sample: `POST http://mysprykershop.com/customers` -Attributes: -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| acceptedTerms | Boolean | ✓ | Specifies whether the customer has accepted the terms of service. For a new customer to be created, this parameter needs to be set to true. | -| confirmPassword | String | ✓ | Specifies a password confirmation for the account of the new customer. | -| email | String | ✓ | Specifies customer's last email address. The address must be unique in the system. | -| firstName | String | ✓ | Specifies customer's first name. | -| lastName | String | ✓ | Specifies customer's last name. | -| password | String | ✓ | Specifies a password (7 characters or more) for the account of the new customer. This password will be used by the customer to access their account. | -| salutation | String | ✓ | Specifies a salutation for a new customer. | - -**Request sample body** -```js -{ - "data": { - "type": "customers", - "attributes": { - "salutation": "Mr", - "firstName":"John", - "lastName":"Doe", - "email":"jdoe@example.com", - "password":"change123", - "confirmPassword":"change123", - "acceptedTerms":true - } - } -} -``` - -If a customer was created successfully, the endpoint will respond with a **RestCustomersResponse**. - -**Sample response** -```js -{ - "data": { - "type": "customers", - "id": "DE--25", - "attributes": { - "firstName": "John", - "lastName": "Doe", - "gender": null, - "dateOfBirth": null, - "salutation": "Mr", - "createdAt": "2018-11-06 08:15:02.694668", - "updatedAt": "2018-11-06 08:15:02.694668" - }, - "links": { - "self": "http://mysprykershop.com/customers/DE--25" - } - } -} -``` - -After a customer has been created, you can authenticate them in the REST API and perform actions on their behalf. For details, see Authentication and Authorization. The **id** attribute of the **RestCustomersResponse** specifies a unique customer identifier that can later be used to access the new customer via REST API requests. - -| Field* | Type | Description | -| --- | --- | --- | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| gender | String | Gender of the customer | -| dateOfBirth | String | Customer's date of birth | -| salutation | String | Salutation to use when addressing the customer | -| createdAt | String | Account creation date | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Possible Errors -| Code | Reason | -| --- | --- | -| 422 | Terms of service were not accepted | -| 400 | A customer with the same email address already exists | -| 414 | The provided gender is invalid | - -## Retrieving Customer Information -To retrieve information about a customer, use the following endpoint: -`/customers/{% raw %}{{{% endraw %}customerReference{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/customers/DE-25` -where `DE-25` is the unique identifier of the customer you want to retrieve. - -{% info_block warningBox "Authentication" %} - -To use this endpoint, customers need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -If a customer with the specified ID was found, the endpoint will respond with a **RestCustomersRequest**. - -**Sample response** -```js -{ - "data": { - "type": "customers", - "id": "DE--25", - "attributes": { - "firstName": "John", - "lastName": "Doe", - "gender": null, - "dateOfBirth": null, - "salutation": "Mr", - "createdAt": "2018-11-06 08:15:02.694668", - "updatedAt": "2018-11-06 08:15:02.694668" - }, - "links": { - "self": "http://mysprykershop.com/customers/DE--25" - } - } - } -``` - -| Field* | Type | Description | -| --- | --- | --- | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| email | String | Customer's email address | -| gender | String | Customer's gender | -| dateOfBirth | String | Customer's date of birth | -| salutation | String | Salutation to use when addressing the customer | -| createdAt | String | Account creation date | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Possible Errors: - -| Code | Reason | -| --- | --- | -| 402 | A customer with the specified ID was not found | -| 405 | Customer reference is missing | - -## Editing a Customer -To modify an existing customer account, send a _PATCH_ request to the following endpoint: -`/customers/{% raw %}{{{% endraw %}customerReference{% raw %}}}{% endraw %}` - -{% info_block infoBox "Modifying Customer Addresses " %} - -You need to use specialized endpoints to retrieve and manage addresses registered for a customer. For details, see [Managing the List of Customer Addresses](/docs/scos/dev/glue-api-guides/{{page.version}}/manging-customers/managing-customers.html#managing-the-list-of-customer-addresses). - -{% endinfo_block %} - -Request sample: `PATCH http://mysprykershop.com/customers/DE-25` -where `DE-25` is the unique identifier of the customer you want to modify. - -{% info_block warningBox "Authentication " %} - -To use this endpoint, customers need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -To modify a customer, the client must send a **RestCustomersRequest**. - -**Request sample** -```js -{ - "data" : { - "type": "customers" - "attributes": { - "lastName": "Johnson", - "email": "example@mail.com", - } - } - } - -``` - -If a customer is modified successfully, the endpoint will respond with a **RestCustomersResponse**. - -**Sample response** -```js -{ - "data": { - "type": "customers", - "id": "DE--25", - "attributes": { - "firstName": null, - "lastName": "Johnson", - "salutation": null, - "email": "example@mail.com" - }, - "links": { - "self": "http://mysprykershop.com/customers/DE--25" - } - } - } -``` - -| Field* | Type | Description | -| --- | --- | --- | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| email | String | Customer's email address | -| gender | String | Customer's gender | -| dateOfBirth | String | Customer's date of birth | -| salutation | String | Salutation to use when addressing the customer | -| createdAt | String | Account creation date | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Possible Errors -| Code | Reason | -| --- | --- | -| 402 | A customer with the specified ID was not found | -| 405 | Customer reference is missing | -| 410 | Failed to save changes | -| 414 | The provided gender is invalid | - -## Managing the List of Customer Addresses -Customers can provide a set of addresses used for billing, goods delivery, and other purposes. The **Customer API** provides a set of endpoints to manage addresses of a registered customer. - -{% info_block warningBox "Authentication " %} - -Only authenticated users can manage customer addresses. For details on how to authenticate a customer, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -## Adding an Address -To add an address to a customer, send a _POST_ request to the following endpoint: -`/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses` -Request sample: `POST http://mysprykershop.com/customers/DE-25/addresses` -where `DE-25` is the unique identifier of the customer you want to add an address to. - -The POST data must contain a **RestAddressesRequest**. - -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| salutation | String | ✓ | Salutation to use when addressing the customer | -| firstName | String | ✓ | Customer's first name | -| lastName | String | ✓ | Customer's last name | -| address1 | String | ✓ | The 1st line of the customer's address | -| address2 | String | ✓ | The 2nd line of the customer's address | -| address3 | String | ✓ | The 3rd line of the customer's address | -| zipCode | String | ✓ | ZIP code | -| city | String | ✓ | Specifies the city | -| country | String | ✓ | Specifies the country | -| company | String | ✓ | Customer's company | -| phone | String | ✓ | Customer's phone number | -| isDefaultShipping | Boolean | ✓ | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is true. | -| isDefaultBilling | Boolean | ✓ | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is true. | -| iso2Code | String | ✓ | Specifies an ISO 2 Country Code to use | - -**Request sample body** -```js -{ - "data" : { - "type": "addresses", - "attributes": { - "salutation": "Mr", - "firstName": "John", - "lastName": "Doe", - "address1": "11 Second Street", - "address2": "4th Floor", - "address3": "Suite 555", - "zipCode": "12312", - "city": "Berlin", - "country": "Germany", - "iso2Code": "DE" - "phone": "22111-3-4-5", - "isDefaultShipping": false, - "isDefaultBilling": false - } - -``` - -If the address was created successfully, the endpoint will respond with a **RestAddressesResponse**. - -**Sample response** -```js -{ - "data": { - "type": "addresses", - "id": 3a6ee102-007f-5245-aaec-af5b6e05685b, - "attributes": { - "salutation": "Mr", - "firstName": "John", - "lastName": "Doe", - "address1": "11 Second Street", - "address2": "4th Floor", - "address3": "Suite 555", - "zipCode": "12312", - "city": "Berlin", - "country": "United States", - "iso2Code": "US", - "company": null, - "phone": "22111-3-4-5", - "isDefaultShipping": false, - "isDefaultBilling": false - }, - "links": { - "self": "http://mysprykershop.com.com/customers/DE--25/addresses/" - } - } - } -``` - -The **id** attribute of the response will contain a unique identifier of the address that was created. You can use the ID to view and edit the address in the future. - -**Sample response** - -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing to the customer. | -| firstName | String | Customer's first name. | -| lastName | String | Customer's last name. | -| address1 | String | The 1st line of the customer's address. | -| address2 | String | The 2nd line of the customer's address. | -| address3 | String | The 3rd line of the customer's address. | -| zipCode | String | ZIP code. | -| city | String | Specifies the city. | -| country | String | Specifies the country. | -| iso2Code | | Specifies an ISO 2 Country Code to use. | -| company | String | Specifies the customer's company. | -| phone | String | Specifies the customer's phone number. | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -## Modifying an Address - -To modify an address, send a PATCH request to the following endpoint: -`/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}address_id{% raw %}}}{% endraw %}` -Request sample: `PATCH http://mysprykershop.com/customers/DE-25/addresses/3a6ee102-007f-5245-aaec-af5b6e05685b` -where `DE-25` is the unique identifier of the customer you want to modify an address for, and `3a6ee102-007f-5245-aaec-af5b6e05685b` is the ID of the address you want to change. -The POST data must contain a **RestAddressesRequest**. The attributes and format of the request are the same as when creating an address. - -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing the customer | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| address1 | String | The 1st line of the customer's address | -| address2 | String | The 2nd line of the customer's address | -| address3 | String | The 3rd line of the customer's address | -| zipCode | String | ZIP code | -| city | String | Specifies the city | -| country | String | Specifies the country | -| iso2Code | String | Specifies an ISO 2 Country Code to use | -| company | String | Specifies the customer's company | -| phone | String | Specifies the customer's phone number | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** - -The same as when creating an address, in case, if the request is successful, the endpoint returns a **RestAddressesResponse** with updated data. - -## Getting all Addresses of a Customer -To get all the addresses of a user, use the following endpoint: -`/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses` -Request sample: `GET http://mysprykershop.com/customers/DE-25/addresses` -where `DE-25` is the unique identifier of the customer whose address you want to get. - -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing the customer | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| address1 | String | The 1st line of the customer's address | -| address2 | String | The 2nd line of the customer's address | -| address3 | String | The 3rd line of the customer's address | -| zipCode | String | ZIP code | -| city | String | Specifies the city | -| country | String | Specifies the country | -| iso2Code | String | Specifies an ISO 2 Country Code to use. | -| company | String | Specifies customer's company | -| phone | String | Specifies customer's phone number | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** - -If the request was successful, the endpoint would return **RestAddressesResponse** with all the customer's addresses. - -**Example** -```js -{ - "data": [ - { - "type": "addresses", - "id": "3a6ee102-007f-5245-aaec-af5b6e05685b", - "attributes": { - "salutation": "Mr", - "firstName": "Jason", - "lastName": "Voorhees", - "address1": "123 Sleep Street", - "address2": "123", - "address3": null, - "zipCode": "12345", - "city": "Dresden", - "country": "Germany", - "iso2Code": "DE", - "company": null, - "phone": null, - "isDefaultShipping": true, - "isDefaultBilling": true - }, - "links": { - "self": "http://mysprykershop.com/customers/DE--25/addresses/3a6ee102-007f-5245-aaec-af5b6e05685b" - } - }, - { - "type": "addresses", - "id": "5f00ce65-dd64-5b49-ad3c-f5fae475e7e6", - "attributes": { - "salutation": "Mr", - "firstName": "John", - "lastName": "Doe", - "address1": "11 Second Street", - "address2": "4th Floor", - "address3": "Suite 555", - "zipCode": "12312", - "city": "Berlin", - "country": "United States", - "iso2Code": "US", - "company": null, - "phone": "22111-3-4-5", - "isDefaultShipping": false, - "isDefaultBilling": false - }, - "links": { - "self": "http://mysprykershop.com/customers/DE--25/addresses/5f00ce65-dd64-5b49-ad3c-f5fae475e7e6" - } - } - ], - "links": { - "self": "http://mysprykershop.com/customers/DE--25/addresses" - } - } -``` - -## Getting a Specific Address -To get a specific address by ID, use the following endpoint: -`/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}address_id{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/customers/DE-25/addresses/3a6ee102-007f-5245-aaec-af5b6e05685b` -where `DE-25` is the unique identifier of the customer whose address you want to get, and `3a6ee102-007f-5245-aaec-af5b6e05685b` is the ID of the address you need. - -**Sample response** - -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing the customer | -| firstName | String | Customer's first name | -| lastName | String | Customer's last name | -| address1 | String | The 1st line of the customer's address | -| address2 | String | The 2nd line of the customer's address | -| address3 | String | The 3rd line of the customer's address | -| zipCode | String | ZIP code | -| city | String | Specifies the city | -| country | String | Specifies the country | -| iso2Code | String | Specifies an ISO 2 Country Code to use | -| company | String | Specifies the customer's company | -| phone | String | Specifies the customer's phone number | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request is successful, the endpoint returns **RestAddressesResponse** with the requested address. - -## Deleting an Address -To delete an address, use the following endpoint: -`/customers/{% raw %}{{{% endraw %}customer_id{% raw %}}}{% endraw %}/addresses/{% raw %}{{{% endraw %}address_id{% raw %}}}{% endraw %}` -Request sample: `DELETE http://mysprykershop.com/customers/DE-25/addresses/3a6ee102-007f-5245-aaec-af5b6e05685b` -where `DE-25` is the unique identifier of the customer whose address you want to delete, and `3a6ee102-007f-5245-aaec-af5b6e05685b` is the ID of the necessary address. - -**Sample response** - -If the address is deleted successfully, the endpoint will respond with the **204 No Content** status code. - -### Possible Errors -| Code | Reason | -| --- | --- | -| 402 | A customer with the specified ID was not found | -| 404 | The specified address could not be found | -| 405 | Customer reference is missing | -| 409 | Failed to update an address | -| 411 | Unauthorized request | -| 412 | No address ID provided | - -## Changing Customer's Password -To change a password for a customer, use PATCH method and the following endpoint: -`/customer-password` -Request sample: `PATCH http://mysprykershop.com/customer-password` - -{% info_block warningBox "Authentication" %} -To use this endpoint, customers need to authenticate first. For details, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). -{% endinfo_block %} - -**Attributes:** -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| password | String | ✓ | Specifies old password of a customer | -| newPassword | String | ✓ | Specifies the new password | -| confirmPassword | String | ✓ | Specifies password confirmation for password change. | - -**Request sample body** -```js -{ - "data": { - "type": "customer-password", - "attributes": { - "password": "change123", - "newPassword": "321egnahc", - "confirmPassword": "321egnahc" - } - } -} -``` - -**Sample Response** - -If password is changed successfully, the endpoint will respond with the **204 No Content** status code. - -### Possible Errors: -| Code | Reason | -| --- | --- | -| 406 | The new password and password confirmation do not match | -| 407 | Password change failed | -| 408 | Invalid password | - -## Resetting Customer's Password -In case customer forgets their password, Glue API also provides the possibility to reset it. For this purpose, you need to use the following procedure: - -1. Send a POST request to the following endpoint: -`/customer-forgotten-password` -Request sample: `POST http://mysprykershop.com/customer-forgotten-password` -**Sample Request Body** - ```js - { - "data": { - "type": "customer-forgotten-password", - "attributes": { - "email":"jdo@example.com" - } - } - ``` - If the request was successful, the endpoint will respond with the 204 No Content status point, an email with a password reset link will be sent to the customer. The email will contain a **Password Reset Key**. - -2. Send a PATCH request to the following endpoint: -`/customer-restore-password` -Request sample: `PATCH http://mysprykershop.com/customer-restore-password` -**Attributes:** - -| Attribute | Type | Required | Description | -| --- | --- | --- | --- | -| restorePasswordKey | String | ✓ | Specifies the Password Reset Key provided in the email sent to the customer. | -| password | String | ✓ | Specifies the password. | -| passwordConfirmation | String | ✓ | Specifies a password confirmation for password change. | - -**Request sample body** -```js -{ - "data": { - "type": "customer-restore-password", - "attributes": { - "restorePasswordKey":"9de02f7a4e08dcdf06e6b24add1e01da", - "password":"new_pssword", - "confirmPassword":"new_pssword" - } - } -} -``` -If the password reset was successful, the endpoint will respond with the **204 No Content** status code. - -### Possible Errors -| Code | Reason | -| --- | --- | -| 406 | The new password and password confirmation do not match | -| 408 | Invalid password | -| 411 | Unauthorized request | -| 415 | The Password Reset Key is invalid | - -## Anonymizing a Customer -To anonymize a customer account, send a DELETE request to the following endpoint: -`/customers/{% raw %}{{{% endraw %}customerReference{% raw %}}}{% endraw %}` -Request sample: `DELETE http://mysprykershop.com/customers/DE-25` -where `DE-25` is the unique identifier of the customer you want to anonymize. -**Sample response** - -If the customer is anonymized successfully, the endpoint will respond with the 204 No Content status code. diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-customers/retrieving-customer-orders.md b/docs/scos/dev/glue-api-guides/201811.0/managing-customers/retrieving-customer-orders.md deleted file mode 100644 index 5febf24bffb..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-customers/retrieving-customer-orders.md +++ /dev/null @@ -1,411 +0,0 @@ ---- -title: Retrieving Customer's Order History -last_updated: May 16, 2019 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/retrieving-order-history -originalArticleId: 16d6503d-10ad-4a6a-8076-de730d45d124 -redirect_from: - - /v1/docs/retrieving-order-history - - /v1/docs/en/retrieving-order-history - - /docs/scos/dev/glue-api-guides/201811.0/retrieving-orders.html ---- - -For every registered customer, there is an order history retrievable. The list of orders, as well as detailed order information including every step of the calculation and addresses used in the orders, is available for retrieval. - -In your development, this resource can help you to: - -* Make the order history available to customers -* Make order details available to enable reordering functionality - -The **Order History API** allows you to retrieve all orders made by a registered customer. - -{% info_block warningBox "Authentication" %} -Since order history is available for registered users only, the endpoints provided by the API cannot be accessed anonymously. For this reason, you always need to pass a user's authentication token in your REST requests. For details on how to authenticate a user and retrieve the token, see [Authentication and Authorization](). -{% endinfo_block %} - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see Order History API. - -## Getting Customer's Orders -To retrieve a list of all orders made by a registered customer, send a GET request to the following endpoint: -`/orders` -Request sample: `GET http://mysprykershop.com/orders` -**Sample Response:** - -| Field* | Type | Description | -| --- | --- | --- | -| createdAt | String | Date and time when the order was created. | -| expenseTotal | Integer | Total amount of expenses (e.g. shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the order. | -| taxTotal | Integer | Total amount of taxes paid. | -| subtotal | Integer | Subtotal of the order. | -| grandTotal | Integer | Grand total of the order. | -| canceledTotal | Integer | Total canceled amount. | -| currencyIsoCode | String | Currency that was selected when placing the order. | -| priceMode | String | Price mode that was active when placing the order. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - - -The endpoint responds with a RestOrdersResponse. The following is an example of a response for a customer that has placed 1 order: - -**Response sample:** -```js -{ - "data": [ - { - "type": "orders", - "id": "DE--1", - "attributes": { - "createdAt": "2018-11-01 17:57:14.354849", - "totals": { - "expenseTotal": 490, - "discountTotal": 30237, - "taxTotal": 42746, - "subtotal": 297470, - "grandTotal": 267723, - "canceledTotal": 0 - }, - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE" - }, - "links": { - "self": "http://mysprykershop.com/orders/DE--1" - } - } - ], - "links": { - "self": "http://mysprykershop.com/orders" - } - } -``` -In the response, each order will have an ID specified in the **id** attribute that can be used to retrieve detailed information on the order. Also, **self** links will be provided to access each order individually. - -## Paging Through Orders -By default, the above request will return all orders placed by a customer. However, you can also enable paging and receive results in pages of a limited size. For this purpose, use the **limit** and **offset** parameters in your request: -| URL | Description | -| --- | --- | -| /orders | Returns all orders made by a customer. | -| /orders?limit=10 | Returns maximum 10 orders. | -| /orders?offset=10&limit=10 | Returns orders 11 through 20. | -| /orders?offset=20 | Returns all orders starting from the 21st to the end. | - -When paging is enabled, the **links** section of the JSON response will contain links for the first, previous, next and last pages. - -**Sample response** -```js -{ - "data": [ - { - "type": "orders", - "id": "DE--1", - "attributes": { - "createdAt": "2018-11-01 17:57:14.354849", - "totals": { - "expenseTotal": 490, - "discountTotal": 30237, - "taxTotal": 42746, - "subtotal": 297470, - "grandTotal": 267723, - "canceledTotal": 0 - }, - "currencyIsoCode": "EUR", - "priceMode": "GROSS_MODE" - }, - "links": { - "self": "http://mysprykershop.com/orders/DE--1" - } - } - ], - "links": { - "self": "http://mysprykershop.com/orders?page[offset]=2&page[limit]=2", - "last": "http://mysprykershop.com/orders?page[offset]=2&page[limit]=2", - "first": "http://mysprykershop.com/orders?page[offset]=0&page[limit]=2", - "prev": "http://mysprykershop.com/orders?page[offset]=0&page[limit]=2" - } - } -``` - -## Retrieving Specific Order -To retrieve detailed information on a specific order, including the items that the customer ordered, use the following endpoint: -`/orders/{% raw %}{{{% endraw %}order_id{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/orders/DE--1` -where `DE--1` is the ID of the order you want to retrieve. -**Sample Response:** -**General Order Information** -| Field* | Type | Description | -| --- | --- | --- | -| createdAt | String | Date and time when the order was created. | -| expenseTotal | Integer | Total amount of expenses (e.g. shipping costs). | -| discountTotal | Integer | Total amount of discounts applied to the order. | -| taxTotal | Integer | Total amount of taxes paid. | -| subtotal | Integer | Subtotal of the order. | -| grandTotal | Integer | Grand total of the order. | -| canceledTotal | Integer | Total canceled amount. | -| currencyIsoCode | String | Currency that was selected when placing the order. | -| priceMode | String | Price mode that was active when placing the order. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Order Item Information** -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Name of the product. | -| sku | String | SKU of the product. | -| sumPrice | Integer | Sum of the prices. | -| sumPriceToPayAggregation | Integer | Sum of the prices to pay (after discounts). | -| quantity | Integer | Quantity of the product ordered. | -| superAttributes | String | Since the bought product is a concrete product, and super attributes are saved with the abstract product, this field is expected to stay empty. | -| image | String | URL to an image of the product. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Calculated discounts for items** -| Field* | Type | Description | -| --- | --- | --- | -| unitAmount | Integer | Discount value applied to each order item of the corresponding product. | -| sumAmount | Integer | Sum of the discount values applied to the order items of the corresponding product. | -| displayName | String | Name of the discount applied. | -| description | String | Description of the discount. | -| voucherCode | String | Voucher code redeemed. | -| quantity | String | Number of discounts applied to the corresponding product. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Item Calculation** -| Field* | Type | Description | -| --- | --- | --- | -| unitGrossPrice | Integer | Single item gross price. | -| sumGrossPrice | Integer | Sum of items gross price. | -| taxRate | Integer | Current tax rate in percentage. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum of items net price. | -| unitPrice | Integer | Single item price without assuming if it is new or gross, this value should be used everywhere the price is displayed, it allows switching tax mode without side effects. | -| unitTaxAmountFullAggregation | Integer | Total tax amount for a given item with additions. | -| sumTaxAmountFullAggregation | Integer | Total tax amount for a given sum of items with additions. | -| refundableAmount | Integer | Available refundable amount for an item (order only). | -| canceledAmount | Integer | Total canceled amount for this item (order only). | -| sumSubtotalAggregation | Integer | Sum of subtotals of the items. | -| unitSubtotalAggregation | Integer | Subtotal for the given item. | -| unitProductOptionPriceAggregation | Integer | Item total product option price. | -| sumProductOptionPriceAggregation | Integer | Item total of product options for the given sum of items. | -| unitExpensePriceAggregation | Integer | Item expense total for a given item. | -| sumExpensePriceAggregation | Integer | Sum of item expense totals for the items. | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum of Item total discount amount. | -| unitDiscountAmountFullAggregation | Integer | Sum of Item total discount amount. | -| sumDiscountAmountFullAggregation | Integer | Item total discount amount with additions. | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| taxRateAverageAggregation | Integer | Item tax rate average, with additions used when recalculating tax amount after cancellation. | -| taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | - - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Expenses** -| Field* | Type | Description | -| --- | --- | --- | -| sumPrice | Integer | Sum of items' price calculated. | -| unitGrossPrice | Integer | Single item's gross price. | -| sumGrossPrice | Integer | Sum of items' gross price. | -| taxRate | Integer | Current tax rate in percentage. | -| unitNetPrice | Integer | Single item net price. | -| sumNetPrice | Integer | Sum of items' net price. | -| canceledAmount | Integer | Total canceled amount for this item (order only). | -| unitDiscountAmountAggregation | Integer | Item total discount amount. | -| sumDiscountAmountAggregation | Integer | Sum of items' total discount amount. | -| unitTaxAmount | Integer | Tax amount for a single item after discounts. | -| sumTaxAmount | Integer | Tax amount for a sum of items (order only). | -| unitPriceToPayAggregation | Integer | Item total price to pay after discounts with additions. | -| sumPriceToPayAggregation | Integer | Sum of items' total price to pay after discounts with additions. | -| taxAmountAfterCancellation | Integer | Tax amount after cancellation, recalculated using tax average. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Billing and Shipping Addresses** -| Field* | Type | Description | -| --- | --- | --- | -| salutation | String | Salutation to use when addressing the customer. | -| firstName | String | Customer's first name. | -| lastName | String | Customer's last name. | -| address1 | String | The 1st line of the customer's address. | -| address2 | String | The 2nd line of the customer's address. | -| address3 | String | The 3rd line of the customer's address. | -| zipCode | String | ZIP code. | -| city | String | Specifies the city. | -| country | String | Specifies the country. | -| company | String | Specifies the customer's company. | -| phone | String | Specifies the customer's phone number. | -| isDefaultShipping | String | Specifies whether the address should be used as the default shipping address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| isDefaultBilling | String | Specifies whether the address should be used as the default billing address of the customer. If the parameter is not set, the default value is **true**. This is also the case for the first address to be saved. | -| iso2Code | String | Specifies an ISO 2 Country Code to use. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Payments** -| Field* | Type | Description | -| --- | --- | --- | -| amount | Integer | Amount paid via the corresponding payment provider in cents. | -| paymentProvider | String | Name of the payment provider. | -| paymentMethod | String | Name of the payment method. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the specified order exists, the endpoint will respond with a **RestOrdersResponse** containing detailed order information, including the items ordered. - -**Sample response** -```js -{ - "data": { - "type": "orders", - "id": "DE--1", - "attributes": { - "createdAt": "2018-11-01 17:57:14.354849", - "totals": { - "expenseTotal": 490, - "discountTotal": 30237, - "taxTotal": 42746, - "subtotal": 297470, - "grandTotal": 267723, - "canceledTotal": 0 - }, - "currencyIsoCode": "EUR", - "items": [ - { - "name": "Canon PowerShot N", - "sku": "035_17360369", - "sumPrice": 297470, - "sumPriceToPayAggregation": 267723, - "quantity": 10, - "metadata": { - "superAttributes": [], - "image": "//images.icecat.biz/img/gallery_mediums/17360369_3328.jpg" - }, - "calculatedDiscounts": [ - { - "unitAmount": 2975, - "sumAmount": 29747, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 10 - } - ], - "unitGrossPrice": 29747, - "sumGrossPrice": 297470, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "unitPrice": 29747, - "unitTaxAmountFullAggregation": 4275, - "sumTaxAmountFullAggregation": 42746, - "refundableAmount": 267723, - "canceledAmount": 0, - "sumSubtotalAggregation": 297470, - "unitSubtotalAggregation": 29747, - "unitProductOptionPriceAggregation": 0, - "sumProductOptionPriceAggregation": 0, - "unitExpensePriceAggregation": 0, - "sumExpensePriceAggregation": null, - "unitDiscountAmountAggregation": 2975, - "sumDiscountAmountAggregation": 29747, - "unitDiscountAmountFullAggregation": 2975, - "sumDiscountAmountFullAggregation": 29747, - "unitPriceToPayAggregation": 26772, - "taxRateAverageAggregation": "19.00", - "taxAmountAfterCancellation": null - } - ], - "expenses": [ - { - "type": "SHIPMENT_EXPENSE_TYPE", - "name": "Standard", - "sumPrice": 490, - "unitGrossPrice": 490, - "sumGrossPrice": 490, - "taxRate": "19.00", - "unitNetPrice": 0, - "sumNetPrice": 0, - "canceledAmount": null, - "unitDiscountAmountAggregation": null, - "sumDiscountAmountAggregation": null, - "unitTaxAmount": 0, - "sumTaxAmount": 0, - "unitPriceToPayAggregation": 0, - "sumPriceToPayAggregation": 0, - "taxAmountAfterCancellation": null - } - ], - "billingAddress": { - "salutation": "Mr", - "firstName": "Jason", - "middleName": null, - "lastName": "Voorhees", - "address1": "123 Sleep Street", - "address2": "123", - "address3": null, - "company": null, - "city": "CatCity", - "zipCode": "12345", - "poBox": null, - "phone": null, - "cellPhone": null, - "description": null, - "comment": null, - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "shippingAddress": { - "salutation": "Mr", - "firstName": "Jason", - "middleName": null, - "lastName": "Voorhees", - "address1": "123 Sleep Street", - "address2": "123", - "address3": null, - "company": null, - "city": "CatCity", - "zipCode": "12345", - "poBox": null, - "phone": null, - "cellPhone": null, - "description": null, - "comment": null, - "email": null, - "country": "Germany", - "iso2Code": "DE" - }, - "priceMode": "GROSS_MODE", - "payments": [ - { - "amount": 267723, - "paymentProvider": "DummyPayment", - "paymentMethod": "invoice" - } - ], - "calculatedDiscounts": [ - { - "unitAmount": 490, - "sumAmount": 490, - "displayName": "Free standard delivery", - "description": "Free standard delivery for all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 1 - }, - { - "unitAmount": 2975, - "sumAmount": 29747, - "displayName": "10% Discount for all orders above", - "description": "Get a 10% discount on all orders above certain value depending on the currency and net/gross price. This discount is not exclusive and can be combined with other discounts.", - "voucherCode": null, - "quantity": 10 - } - ] - }, - "links": { - "self": "http://mysprykershop.com/orders/DE--1" - } - } - } -``` diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-information.md b/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-information.md deleted file mode 100644 index fa8798ae4d4..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-information.md +++ /dev/null @@ -1,830 +0,0 @@ ---- -title: Retrieving Product Information -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/retrieving-product-information -originalArticleId: 32bf38d8-95b1-4405-9ae3-ccf7e4a0c819 -redirect_from: - - /v1/docs/retrieving-product-information - - /v1/docs/en/retrieving-product-information -related: - - title: Browsing a Category Tree - link: docs/scos/dev/glue-api-guides/page.version/retrieving-categories/retrieving-category-trees.html ---- - -Different Product resources allow you to retrieve all the product information available in your storage. These resources follow the same hierarchical structure that [exists as a basis in the Spryker Commerce OS](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-feature-overview.html). Products can come with multiple Variants (Concrete products) and have Availability, Prices, Tax Sets, as well as Image Sets. Furthermore, you can see what category your product belongs to or what product label is available. - -In your development, these resources can help you to retrieve relevant information for your product listing and detail pages, for search, shopping cart, checkout, order history, wishlist and many more. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Products API](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-feature-integration.html). - -## Abstract and Concrete Products -As Spryker Commerce OS implements product data in a hierarchical structure, this concept is also implemented in the [Product API](/docs/scos/dev/feature-integration-guides/{{page.version}}/product-feature-integration.html). The API provides separate endpoints for abstract and concrete products. Their names contain the abstract and concrete words, respectively. - -## General Product Information -To retrieve full information about a product (regardless of whether it is available or not) via REST, use the endpoints listed below. -`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}` -Retrieves information on an abstract product by SKU. -Request sample: `GET http://mysprykershop.com/abstract-products/001` -where `001` is the SKU of the abstract product. - -| Field* | Type | Description | -| --- | --- | --- | -| sku | String | SKU of the abstract product | -| name | String | Name of the abstract product | -| description | String | Description of the abstract product | -| attributes | Object | Dist of attributes and their values | -| superAttributeDefinition | String[] | Attributes flagged as super attributes, that are however not relevant to distinguish between the product variants | -| attributeMap|Object|Each super attribute / value combination and the corresponding concrete product IDs are listed here| -|attributeMap.super_attributes|Object|Applicable super attribute and its values for the product variants| -|attributeMap.attribute_variants|Object|List of super attributes with the list of values| -|attributeMap.product_concrete_ids|String[]|Product IDs of the product variants| -|metaTitle|String|Meta title of the product| -|metaKeywords|String|Meta keywords of the product.| -|metaDescription|String|Meta description of the product.| -|attributeNames | Object | All non-super attribute / value combinations for the abstract product. | -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request was successful and a product with the specified SKU was found, the resource responds with a **RestAbstractProductsResponse**. : -**Sample response** -```js -{ - "data": { - "type": "abstract-products", - "id": "177", - "attributes": { - "sku": "177", - "name": "Samsung Galaxy Tab Active 8.0 8 GB", - "description": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from water and dust. Gain toughness and stability without sacrificing a premium design with 9.75-mm thickness(without cover) and a 393-gram light weight with rugged reinforcement. Don’t worry about drops or impacts in active business environments. With its included cover, Samsung Galaxy Tab Active is designed to handle drops of up to 1.2 meters with protective cover (3.9 feet). Save time on communications and work process management with easy NFC device pairing and tag reading. A 3.1-megapixel (MP) Auto Focus (AF) camera with a Flash feature enables easy, efficient barcode scanning to facilitate communication and workflow.\t", - "attributes": { - "storage_media": "flash", - "processor_frequency": "1.2 GHz", - "display_diagonal": "20.3 cm", - "aspect_ratio": "16:09", - "brand": "Samsung" - }, - "superAttributesDefinition": [ - "storage_media", - "processor_frequency" - ], - "attributeMap": { - "attribute_variants": { - "internal_storage_capacity:8 GB": { - "id_product_concrete": "177_24867659" - }, - "internal_storage_capacity:16 GB": { - "id_product_concrete": "177_24422865" - }, - "internal_storage_capacity:32 GB": { - "id_product_concrete": "177_25913296" - } - }, - "super_attributes": { - "internal_storage_capacity": [ - "8 GB", - "16 GB", - "32 GB" - ] - }, - "product_concrete_ids": [ - "177_24867659", - "177_24422865", - "177_25913296" - ] - }, - "metaTitle": "Samsung Galaxy Tab Active 8.0 8 GB", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from w", - "attributeNames": { - "storage_media": "Storage media", - "processor_frequency": "Processor frequency", - "display_diagonal": "Display diagonal", - "aspect_ratio": "Aspect ratio", - "brand": "Brand" - } - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/177" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "177_24867659" - }, - { - "type": "concrete-products", - "id": "177_24422865" - }, - { - "type": "concrete-products", - "id": "177_25913296" - } - ] - }, - "abstract-product-image-sets": { - "data": [ - { - "type": "abstract-product-image-sets", - "id": "177" - } - ] - }, - "abstract-product-availabilities": { - "data": [ - { - "type": "abstract-product-availabilities", - "id": "177" - } - ] - }, - "abstract-product-prices": { - "data": [ - { - "type": "abstract-product-prices", - "id": "177" - } - ] - }, - "category-nodes": { - "data": [ - { - "type": "category-nodes", - "id": "14" - }, - { - "type": "category-nodes", - "id": "5" - }, - { - "type": "category-nodes", - "id": "8" - } - ] - }, - "product-tax-sets": { - "data": [ - { - "type": "product-tax-sets", - "id": "deb94215-a1fc-5cdc-af6e-87ec3a847480" - } - ] - } - } - } -} -``` -`/concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}` -Retrieves information on a concrete product by SKU. -Request sample: `GET http://mysprykershop.com/concrete-products/001_25904006` -where `001_25904006` is the SKU of the concrete product. - -| Field* | Type | Description | -| --- | --- | --- | -| sku | String | SKU of the concrete product | -| name | String | Name of the concrete product | -| description | String | Description of the concrete product | -| attributes | Object | List of attribute keys and their values for the product | -| superAttributeDefinition | String[] | List of attributes that are flagged as super attributes | -| metaTitle|String|Meta title of the product| -|metaKeywords|String|Meta keywords of the product| -|metaDescription|String|Meta description of the product| -|attributeNames | String | List of attribute keys and their translations | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request was successful and a product with the specified SKU was found, the resource responds with a RestConcreteProductsResponse. : - -**Sample response** -```js -{ - "data": { - "type": "concrete-products", - "id": "177_25913296", - "attributes": { - "sku": "177_25913296", - "name": "Samsung Galaxy Tab Active 8.0 32 GB", - "description": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from water and dust. Gain toughness and stability without sacrificing a premium design with 9.75-mm thickness(without cover) and a 393-gram light weight with rugged reinforcement. Don’t worry about drops or impacts in active business environments. With its included cover, Samsung Galaxy Tab Active is designed to handle drops of up to 1.2 meters with protective cover (3.9 feet). Save time on communications and work process management with easy NFC device pairing and tag reading. A 3.1-megapixel (MP) Auto Focus (AF) camera with a Flash feature enables easy, efficient barcode scanning to facilitate communication and workflow.", - "attributes": { - "storage_media": "flash", - "processor_frequency": "1.2 GHz", - "display_diagonal": "20.3 cm", - "aspect_ratio": "16:09", - "brand": "Samsung", - "internal_storage_capacity": "32 GB" - }, - "superAttributesDefinition": [ - "storage_media", - "processor_frequency", - "internal_storage_capacity" - ], - "metaTitle": "Samsung Galaxy Tab Active 8.0 8 GB", - "metaKeywords": "Samsung,Communication Electronics", - "metaDescription": "Water and Dust Resistance (IP67) Keep working continuously in virtually any environment with IP67 environmental sealing that protects against damage from w", - "attributeNames": { - "storage_media": "Storage media", - "processor_frequency": "Processor frequency", - "display_diagonal": "Display diagonal", - "aspect_ratio": "Aspect ratio", - "brand": "Brand", - "internal_storage_capacity": "Internal storage capacity" - } - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296" - }, - "relationships": { - "concrete-product-image-sets": { - "data": [ - { - "type": "concrete-product-image-sets", - "id": "177_25913296" - } - ] - }, - "concrete-product-availabilities": { - "data": [ - { - "type": "concrete-product-availabilities", - "id": "177_25913296" - } - ] - }, - "concrete-product-prices": { - "data": [ - { - "type": "concrete-product-prices", - "id": "177_25913296" - } - ] - } - } - }, - "included": [ - { - "type": "concrete-product-image-sets", - "id": "177_25913296", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//d2s0ynfc62ej12.cloudfront.net/b2c/24867659-4916.jpg", - "externalUrlSmall": "//d2s0ynfc62ej12.cloudfront.net/b2c/24867659-4916.jpg" - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296/concrete-product-image-sets" - } - }, - { - "type": "concrete-product-availabilities", - "id": "177_25913296", - "attributes": { - "availability": true, - "quantity": 20, - "isNeverOutOfStock": false - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296/concrete-product-availabilities" - } - }, - { - "type": "concrete-product-prices", - "id": "177_25913296", - "attributes": { - "price": 42502, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 42502, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296/concrete-product-prices" - } - } - ] -} -``` -{% info_block errorBox "Performance" %} -By default, the response contains additional product information as relationships (e.g. product image sets, availability, prices, and categories. -{% endinfo_block %} The abstract product resource also contains information on the relevant concrete products and tax sets. For performance reasons and bandwidth usage optimization, it is recommended to filter out all information irrelevant to a specific use case. Examples:
  • `/abstract-products/001?fields[abstract-products]=name,description` - return abstract product name and description only;
  • `/abstract-products/001?include=abstract-product-prices` - return abstract product information and prices;
  • `/abstract-products/001?include=concrete-products&fields[concrete-products]=name,description` - return abstract product information as well as name and description of each concrete product it relates to.
) - -## Availability -To find out how many items of a certain product are available, use the following endpoints: -`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-availabilities` -Retrieves the availability of an abstract product by SKU. -Request sample: `GET http://mysprykershop.com/abstract-products/001/abstract-product-availabilities` -where `001` is the SKU of the abstract product. - -| Field* | Type | Description | -| --- | --- | --- | -| availability | Boolean | Boolean to inform about the availability | -| quantity | Integer | Available stock (all warehouses aggregated) | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -If the request was successful, the resource responds with a **RestAbstractProductAvailabilityResponse**. - -**Sample response** -```js -{ - "data": [{ - "type": "abstract-product-availabilities", - "id": "001", - "attributes": { - "availability": true, - "quantity": 10 - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/001/abstract-product-availabilities" - } - }], - "links": { - "self": "http://mysprykershop.com/abstract-products/001/abstract-product-availabilities" - } -} -``` - -`/concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-availabilities` -Retrieves the availability of a concrete product by SKU. -Request sample: `GET http://mysprykershop.com/concrete-products/001_25904006/concrete-product-availabilities` -where `001_25904006` is the SKU of the concrete product. - -| Field* | Type | Description | -| --- | --- | --- | -| availability | Boolean | Boolean to inform about the availability | -| quantity|Integer|Available stock (all warehouses aggregated) | -| isNeverOutOfStock | Boolean | A boolean to show if this is a product that is never out of stock | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request was successful, the resource responds with a **RestConcreteProductAvailabilityResponse**. - -**Sample response** -```js -{ - "data": [{ - "type": "concrete-product-availabilities", - "id": "001_25904006", - "attributes": { - "availability": true, - "quantity": 10, - "isNeverOutOfStock": false - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-availabilities" - } - }], - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-availabilities" - } -} -``` - -## Prices -The below endpoints return prices for a concrete or an abstract product. -{% info_block infoBox %} -For information on the different price types available in Spryker, see [Price](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html). -{% endinfo_block %} - -`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-prices` -Gets prices for an **abstract** product by SKU. -Request sample: `GET http://mysprykershop.com/abstract-products/001/abstract-product-prices` -where `001` is the SKU of the abstract product. - -| Field* | Type | Description | -| --- | --- | --- | -| price | Integer | Price to pay for that product in cents | -| priceTypeName|String|Price type | -| netAmount|Integer|Net price in cents| -|grossAmount|Integer|Gross price in cents| -|currency.code|String|Currency code| -|currency.name|String|Currency name| -|currency.symbol | String | Currency symbol | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request was successful, the resource responds with a **RestProductPricesResponse**. - -**Sample response** -```js -{ - "data": [ - { - "type": "abstract-product-prices", - "id": "001", - "attributes": { - "price": 9999, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9999, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "ORIGINAL", - "netAmount": null, - "grossAmount": 12564, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/001/abstract-product-prices" - } - } - ], - "links": { - "self": "http://mysprykershop.com/abstract-products/001/abstract-product-prices" - } -} -``` - -`/concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-prices` -Gets prices for a concrete product by SKU. -Request sample: `GET http://mysprykershop.com/concrete-products/001_25904006/concrete-product-prices` -where `001_25904006` is the SKU of the concrete product. - -| Field* | Type | Description | -| --- | --- | --- | -| price | Integer | Price to pay for that product in cents | -| priceTypeName|String|Price type | -| netAmount|Integer|Net price in cents| -|grossAmount|Integer|Gross price in cents| -|currency.code|String|Currency code| -|currency.name|String|Currency name| -|currency.symbol | String | Currency symbol | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the request was successful, the resource responds with a RestProductPricesResponse, the same as the abstract resource. - -**Sample response** -```js -{ - "data": [ - { - "type": "concrete-product-prices", - "id": "001_25904006", - "attributes": { - "price": 9999, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9999, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "ORIGINAL", - "netAmount": null, - "grossAmount": 12564, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-prices" - } - } - ], - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-prices" - } -} -``` - -`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-prices?currency={% raw %}{{{% endraw %}currency code{% raw %}}}{% endraw %}&priceMode={% raw %}{{{% endraw %}price mode{% raw %}}}{% endraw %}` - -Gets prices for an abstract product by SKU with the specific currency and a price mode. - -Request sample: `GET http://mysprykershop.com//abstract-products/001/abstract-product-prices?currency=CHF&priceMode=GROSS_MODE` - -where `001` is the SKU of the abstract product; `CHF` is the currency to display (Swiss Franc); `GROSS_MODE` is the price mode. - -**Sample response** -```js -{ - "data": [ - { - "type": "concrete-product-prices", - "id": "001_25904006", - "attributes": { - "price": 9999, - "prices": [ - { - "priceTypeName": "DEFAULT", - "netAmount": null, - "grossAmount": 9999, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - }, - { - "priceTypeName": "ORIGINAL", - "netAmount": null, - "grossAmount": 12564, - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - } - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-prices" - } - } - ], - "links": { - "self": "http://mysprykershop.com/concrete-products/001_25904006/concrete-product-prices" - } -} -``` - -| Field* | Type | Description | -| --- | --- | --- | -| price | Integer | Price to pay for that product (in cents) | -| priceTypeName | String | Price type | -| netAmount | Integer | Net price in cents | -| grossAmount | Integer | Gross price in cents | -| currency.code | String | Currency code | -| currency.name | String | Currency name | -| currency.symbol | String | Currency symbol | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -## Tax Sets -To retrieve information on tax-related information for a product, you can use the endpoint described below. - -{% info_block infoBox %} -For more information on how to manage product taxes, see [Tax](/docs/scos/user/features/{{page.version}}/tax-feature-overview.html). -{% endinfo_block %} - -`/abstract-products/{% raw %}{{{% endraw %}SKU{% raw %}}}{% endraw %}/tax-sets` -Gets prices for an abstract product by SKU. - -{% info_block infoBox %} -Tax sets are available for abstract products only. -{% endinfo_block %} - -Request sample: `GET http://mysprykershop.com/abstract-products/209/product-tax-sets` -where `209` is the SKU of the abstract product. - -| Field* | Description | -| --- | --- | -| name | Tax set name | -| restTaxRates.name | Tax rate name | -| restTaxRates.rate | Tax rate | -| restTaxRates.country | Applicable country for the tax rate | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -  -If the request was successful, the resource responds with a **RestTaxSetsResponse**. - -**Sample response** -```js -Sample response -{ - "data": [ - { - "type": "product-tax-sets", - "id": "deb94215-a1fc-5cdc-af6e-87ec3a847480", - "attributes": { - "name": "Communication Electronics", - "restTaxRates": [ - { - "name": "Austria Standard", - "rate": "20.00", - "country": "AT" - }, - { - "name": "Belgium Standard", - "rate": "21.00", - "country": "BE" - }, - { - "name": "Bulgaria Standard", - "rate": "20.00", - "country": "BG" - }, - { - "name": "Czech Republic Standard", - "rate": "21.00", - "country": "CZ" - }, - { - "name": "Denmark Standard", - "rate": "25.00", - "country": "DK" - }, - { - "name": "France Standard", - "rate": "20.00", - "country": "FR" - }, - { - "name": "Germany Standard", - "rate": "19.00", - "country": "DE" - }, - { - "name": "Hungary Standard", - "rate": "27.00", - "country": "HU" - }, - { - "name": "Italy Standard", - "rate": "22.00", - "country": "IT" - }, - { - "name": "Netherlands Standard", - "rate": "21.00", - "country": "NL" - }, - { - "name": "Romania Standard", - "rate": "20.00", - "country": "RO" - }, - { - "name": "Slovakia Standard", - "rate": "20.00", - "country": "SK" - }, - { - "name": "Slovenia Standard", - "rate": "22.00", - "country": "SI" - }, - { - "name": "Luxembourg Reduced1", - "rate": "3.00", - "country": "LU" - }, - { - "name": "Poland Reduced1", - "rate": "5.00", - "country": "PL" - } - ] - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/177/product-tax-sets" - } - } - ], - "links": { - "self": "http://mysprykershop.com/abstract-products/177/product-tax-sets" - } -} -``` - -## Image Sets -To get image sets that can be used to display a product, use the endpoints below. -`/abstract-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/abstract-product-image-sets` -Gets images of an abstract product by SKU. -Request sample: `GET http://mysprykershop.com/abstract-products/001/abstract-product-image-sets` -where `001` is the SKU of the abstract product. - -| Field* | Description | -| --- | --- | -| name | Image set name | -| externalUrlLarge | URLs to the image per image set per image | -| externalUrlSmall | URLs to the image per image set per image | - -\The fields mentioned are all attributes in the response. Type and ID are not mentioned. -  -If the request was successful, the resource responds with a RestProductImageSetsResponse. It contains links to the images only, not the actual images. - -**Sample response** -```js -Sample response -{ - "data": [ - { - "type": "abstract-product-image-sets", - "id": "177", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/24867659-4916.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/24867659-4916.jpg" - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/177/abstract-product-image-sets" - } - } - ], - "links": { - "self": "http://mysprykershop.com/abstract-products/177/abstract-product-image-sets" - } -} -``` - -`/concrete-products/{% raw %}{{{% endraw %}sku{% raw %}}}{% endraw %}/concrete-product-image-sets` -Gets images of a concrete product by SKU. -Request sample: `GET http://mysprykershop.com/concrete-products/001_25904006/concrete-product-image-sets` -where `001_25904006` is the SKU of the concrete product. - -| Field* | Description | -| --- | --- | -| name | Image set name | -| externalUrlLarge | URLs to the image per image set per image | -| externalUrlSmall | URLs to the image per image set per image | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. -  -If the request was successful, the resource responds with a RestProductImageSetsResponse, the same as the abstract resource. - -**Sample response** -```js -Sample response -{ - "data": [ - { - "type": "concrete-product-image-sets", - "id": "177_25913296", - "attributes": { - "imageSets": [ - { - "name": "default", - "images": [ - { - "externalUrlLarge": "//images.icecat.biz/img/norm/high/24867659-4916.jpg", - "externalUrlSmall": "//images.icecat.biz/img/norm/medium/24867659-4916.jpg" - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296/concrete-product-image-sets" - } - } - ], - "links": { - "self": "http://mysprykershop.com/concrete-products/177_25913296/concrete-product-image-sets" - } -} -``` - -## Possible errors - -| Code | Constant | Meaning | -| --- | --- | --- | -| 301 | RESPONSE_CODE_CANT_FIND_ABSTRACT_PRODUCT | Abstract product is not found. | -| 302 | RESPONSE_CODE_CANT_FIND_CONCRETE_PRODUCT | Concrete product is not found. | -| 303 | RESPONSE_CODE_ABSTRACT_PRODUCT_IMAGE_SETS_NOT_FOUND | Can`t find abstract product image sets. | -| 304 | RESPONSE_CODE_CONCRETE_PRODUCT_IMAGE_SETS_NOT_FOUND | Can`t find concrete product image sets. | -| 305 | RESPONSE_CODE_ABSTRACT_PRODUCT_AVAILABILITY_NOT_FOUND | Availability is not found. | -| 306 | RESPONSE_CODE_CONCRETE_PRODUCT_AVAILABILITY_NOT_FOUND | Availability is not found. | -| 307 | RESPONSE_CODE_ABSTRACT_PRODUCT_PRICES_NOT_FOUND | Can`t find abstract product prices. | -| 308 | RESPONSE_CODE_CONCRETE_PRODUCT_PRICES_NOT_FOUND | Can`t find concrete product prices. | -| 310 | RESPONSE_CODE_CANT_FIND_PRODUCT_TAX_SETS | Could not get tax set, product abstract with provided id not found. | -| 311 | RESPONSE_CODE_ABSTRACT_PRODUCT_SKU_IS_MISSING | Abstract product SKU is not specified. | -| 312 | RESPONSE_CODE_CONCRETE_PRODUCT_SKU_IS_MISSING | Concrete product SKU is not specified. | -| 313 | RESPONSE_CODE_INVALID_CURRENCY | Currency is invalid. | -| 314 | RESPONSE_CODE_INVALID_PRICE_MODE | Price mode is invalid. | diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-labels.md b/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-labels.md deleted file mode 100644 index 5b1d2960032..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-products/retrieving-product-labels.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Accessing Product Labels -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/retrieving-product-labels -originalArticleId: dd9de9a8-47ee-4912-82ce-9cfaabacd8cd -redirect_from: - - /v1/docs/retrieving-product-labels - - /v1/docs/en/retrieving-product-labels ---- - -[Product labels](/docs/scos/user/features/{{page.version}}/product-labels-feature-overview.html) are used to draw your customers' attention to some specific products. Each of them has a name, a priority, and a validity period. The Product Labels API provides endpoints for getting labels via the REST HTTP requests. - -{% info_block infoBox "Note" %} - -Product labels are available only for abstract products. - -{% endinfo_block %} - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Product Labels API](/docs/scos/dev/feature-integration-guides/{{page.version}}/discount-promotion-feature-integration.html). - -## Get Product Label by ID -To retrieve a product label, send this GET request: - -`/product-labels/{% raw %}{{{% endraw %}label-id{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/product-labels/3` -where `3` is the ID of the label you want to retrieve. -Label IDs can be found in the `Products / Product Labels` section of the administration interface. - -![Product Labels 2.png](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/Product%20Labels%202.png) - -**Sample Response** -```json -{ - "data": { - "type": "product-labels", - "id": "3", - "attributes": { - "name": "Standard Label", - "isExclusive": false, - "position": 3, - "frontEndReference": "" - }, - "links": { - "self": "http://mysprykershop.com/product-labels/3" - } - } - } -``` - -### Possible errors -| Code | Reason | -| --- | --- | -| 1201 | Product label is missing | -| 1202 | Product label ID is missing | - -## Get Product Labels by Product -To retrieve the labels of a product, send this GET request: -`/abstract-products/{% raw %}{{{% endraw %}product-sku{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/abstract-products/001` -where `001` is the SKU of the product. - -**Sample Response** -```json -{ - "data": { - "type": "abstract-products", - "id": "001", - "attributes": { - "sku": "001", - "name": "Canon IXUS 160", - ... - } - ... - "relationships": { - ... - "product-labels": { - "data": [ - { - "type": "product-labels", - "id": "3" - }, - { - "type": "product-labels", - "id": "5" - } - ] - } - } - }, - "included": [ - ... - { - "type": "product-labels", - "id": "3", - "attributes": { - "name": "Standard Label", - "isExclusive": false, - "position": 3, - "frontEndReference": "" - }, - "links": { - "self": "http://mysprykershop.com/product-labels/3" - } - }, - { - "type": "product-labels", - "id": "5", - "attributes": { - "name": "SALE %", - "isExclusive": false, - "position": 5, - "frontEndReference": "highlight" - }, - "links": { - "self": "http://mysprykershop.com/product-labels/5" - } - } - ] - } -``` - -### Possible errors -| Code | Reason | -| --- | --- | -| 301 | Abstract product is missing | -| 311 | Abstract product SKU not specified | diff --git a/docs/scos/dev/glue-api-guides/201811.0/managing-wishlists/managing-wishlists.md b/docs/scos/dev/glue-api-guides/201811.0/managing-wishlists/managing-wishlists.md deleted file mode 100644 index 592b44ddb4c..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/managing-wishlists/managing-wishlists.md +++ /dev/null @@ -1,316 +0,0 @@ ---- -title: Managing Wishlists -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-wishlists -originalArticleId: 8a6a206f-ce6e-4913-8d5c-60aa3ebc30ba -redirect_from: - - /v1/docs/managing-wishlists - - /v1/docs/en/managing-wishlists - - /docs/scos/dev/glue-api-guides/201811.0/managing-wishlists.html ---- - -The Wishlists API provides REST access to managing [wishlists](/docs/scos/user/features/{{page.version}}/wishlist-feature-overview.html) of a customer. With the help of the endpoints provided by the API, you can create, list and delete wishlists, as well as manage the items inside them. - -In your development, these resources can help you to enable complete wishlist functionality for your customers. - -{% info_block warningBox "Authentication " %} - -Since wishlists are available for registered users only, the endpoints provided by the API cannot be accessed anonymously. For this reason, you always need to pass a user's authentication token in your REST requests. For details on how to authenticate a user and retrieve the token, see [Authentication and Authorization](/docs/scos/dev/glue-api-guides/{{page.version}}/authentication-and-authorization.html). - -{% endinfo_block %} - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Wishlist API Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.vesion}}/glue-api/glue-api-wishlist-feature-integration.html). - -## Creating a Wishlist - -To create a wishlist for a registered user, you need to send a POST request to the following endpoint: - -`/wishlists` - -Request sample: `POST http://mysprykershop.com/wishlists` - -**Attributes:** - -* **name** - sets a name for the new wishlist. - -**Request sample body** -```js -{ - "data":{ - "type": "wishlists", - "attributes":{ - "name":"{% raw %}{{{% endraw %}my_name{% raw %}}}{% endraw %}" - } - } - } -``` - -**Sample Response:** - -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Name of the wishlist | -| numberOfItems | Integer | Number of items in the wishlist | -| createdAt | String | Creation date of the wishlist | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** -```js -{ - "data": { - "type": "wishlists", - "id": "09264b7f-1894-58ed-81f4-d52d683e910a", - "attributes": { - "name": "Name of the wishlist", - "numberOfItems": 0, - "createdAt": "2018-08-17 10:04:35.311557", - "updatedAt": "2018-08-17 10:04:35.311557" - }, - "links": { - "self": "http://mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a" - } - } - } -``` - -The response contains a unique identifier, contained in the id attribute, and a self link that can be used to access the wishlist later. - -### Possible errors - -| Code | Reason | -| --- | --- | -| 202 | A wishlist with the same name already exists. | -| 203 | Cannot create a wishlist. | - -## Accessing Wishlists of User - -To access all wishlists of a user, send a GET request to the following endpoint: - -`/wishlists` - -Request sample: `GET http://mysprykershop.com/wishlists` - -**Sample Response:** -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Name of the wishlist. | -| numberOfItems | Integer | Number of items in the wishlist. | -| createdAt | String | Date of the creation of the wishlist. | -| updatedAt | String | Date of the last update. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -The endpoint will respond with a **RestWishlistsResponse**. The following response is returned when a user doesn't have any wishlists: - -**Sample response** -```js -{ - "data": [], - "links": { - "self": "http://mysprykershop.com/wishlists" - } - } -``` -If there are any wishlists already created for a user, they will be returned in the **data** attribute of the response. - -**Sample response** -```js -{ - "data": { - - - { - "data": [ - { - "type": "wishlists", - "id": "1623f465-e4f6-5e45-8dc5-987b923f8af4", - "attributes": { - "name": "My Wishlist Name", - "numberOfItems": 0, - "createdAt": "2018-12-16 17:24:12.601033", - "updatedAt": "2018-12-16 17:24:12.601033" - }, - "links": { - "self": "http://mysprykershop.com/wishlists/1623f465-e4f6-5e45-8dc5-987b923f8af4" - } - } - ], - "links": { - "self": "http://mysprykershop.com/wishlists" - } - } -``` - -## Modifying Wishlists - -To modify a user's wishlist, send a PATCH request to the following endpoint: - -`/wishlists` - -Request sample: `PATCH http://mysprykershop.com/wishlists` - -**Sample Request Body** - -The following sample changes the name of a wishlist. - -**Sample response** -```js -{ - "data": { - "type": "wishlists", - "id": "uuid", - "attributes": { - "name": "New Name" - } - } - } -``` - -**Sample Response:** - -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Name of the wishlist | -| numberOfItems | Integer | Number of items in the wishlist | -| createdAt | String | Creation date of the wishlist | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -In case of a successful update, the endpoint will also respond with a RestWishlistsResponse, where the wishlist name will be updated. - -**Sample response** - -### Possible errors - -| Code | Reason | -| --- | --- | -| 201 | Cannot find the wishlist. | -| 202 | A wishlist with the same name already exists. | -| 204 | Cannot update the wishlist. | - -## Deleting Wishlists - -To delete a wishlist, send a DELETE request: - -`/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}` - -Request sample: `DELETE http://mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a` - -where `09264b7f-1894-58ed-81f4-d52d683e910a` is the ID of the wishlist you want to remove. - -**Response:** - -If the wishlist was deleted successfully, the endpoint would respond with a **204 No Content** status code. - -### Possible errors - -| Code | Reason | -| --- | --- | -| 201 | Cannot find the wishlist. | -| 205 | Cannot remove the wishlist. | - -## Getting Wishlists - -The Wishlist API allows you not only to manage wishlists, but also to manage items inside them. Each wishlist item is referenced by the SKU of the respective product. - -To get all items in a wishlist, send a request to the following endpoint: - -`/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}` - -Request sample: `GET http://mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a` - -where `09264b7f-1894-58ed-81f4-d52d683e910a` is the ID of the wishlist you want to retrieve. - -**Sample Response:** -| Field* | Type | Description | -| --- | --- | --- | -| name | String | Name of the wishlist | -| numberOfItems | Integer | Number of items in the wishlist | -| createdAt | String | Сreation date of the wishlist | -| updatedAt | String | Date of the last update | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -If the specified wishlist exists, the endpoint will respond with a RestWishlistsResponse that contains all information on the wishlist, including information on all products that have been put there. - -**Sample response** - -## Possible errors - -| Code | Reason | -| --- | --- | -| 201 | Cannot find the wishlist. | - -To add an item to a wishlist, send a POST request to the following endpoint: - -`/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}/wishlist-items` - -Request sample: `POST http://mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a/wishlist-items` - -where `09264b7f-1894-58ed-81f4-d52d683e910a` is the ID of the wishlist to which you want to add an item. - -**Attributes:** - -* **sku** - specifies the SKU of the product you want to add to the wishlist. -* -**Request sample body** - -**Sample Response:** - -| Field* | Type | Description | -| --- | --- | --- | -| sku | String | Concrete product SKU. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -The endpoint will respond with a **RestWishlistItemResponse** that contains information on the new wishlist item. - -**Sample response** -```js -{ - "data": { - "type": "wishlist-items", - "id": "064_18404924", - "attributes": { - "sku": "064_18404924" - }, - "links": { - "self": "http://mysprykershop.com/wishlists/c917e65b-e8c3-5c8b-bec6-892529c64b30/wishlist-items/064_18404924" - } - } - } -``` - -### Possible errors - -| Code | Reason | -| --- | --- | -| 201 | Cannot find the wishlist. | -| 206 | Cannot add an item to the wishlist. | - -To delete an item, send a DELETE request: - -`/wishlists/{% raw %}{{{% endraw %}wishlist_id{% raw %}}}{% endraw %}/wishlist-items/{% raw %}{{{% endraw %}item_sku{% raw %}}}{% endraw %}` - -Request sample: `DELETE http://mysprykershop.com/wishlists/09264b7f-1894-58ed-81f4-d52d683e910a/wishlist-items/064_18404924` - -where: `09264b7f-1894-58ed-81f4-d52d683e910a` - the ID of the wishlist where you want to delete an item; - -`064_18404924` - SKU of the item you want to remove. - -**Response:** - -If the item was removed successfully, the endpoint will respond with a **204 No Content** status code. - -## Possible errors: - -| Code | Reason | -| --- | --- | -| 201 | Cannot find the wishlist. | -| 207 | Cannot remove the item. | -| 208 | An item with the provided SKU does not exist in the wishlist. | diff --git a/docs/scos/dev/glue-api-guides/201811.0/rest-api-reference.md b/docs/scos/dev/glue-api-guides/201811.0/rest-api-reference.md deleted file mode 100644 index aeb9f162127..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/rest-api-reference.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: REST API Reference -last_updated: Jul 10, 2019 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/rest-api-reference -originalArticleId: 1f00587c-3357-4157-9184-a78d06bc385b -redirect_from: - - /v1/docs/rest-api-reference - - /v1/docs/en/rest-api-reference ---- - -This document provides an overview of REST API endpoints provided by Spryker by default. For each endpoint, you will find its URL relative to the server, REST request parameters, as well as the appropriate request and response data formats. - -
- -{% raw %} - - - - -{% endraw %} diff --git a/docs/scos/dev/glue-api-guides/201811.0/retrieving-autocomplete-and-search-suggestions.md b/docs/scos/dev/glue-api-guides/201811.0/retrieving-autocomplete-and-search-suggestions.md deleted file mode 100644 index e2f5c932649..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/retrieving-autocomplete-and-search-suggestions.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Getting Suggestions for Auto-Completion and Search -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https:carts-of-registered-users/managing-carts-of-registered-users.htmldocumentation.spryker.com/v1/docs/getting-suggestions-for-autocompletion-and-search -originalArticleId: 65a2162c-a47a-4377-8e19-dd85040ddabc -redirect_from: - - /v1/docs/getting-suggestions-for-autocompletion-and-search - - /v1/docs/en/getting-suggestions-for-autocompletion-and-search ---- - -In addition to the catalog search, Elasticsearch also offers auto-completion terms and suggestions for products, categories and CMS pages that can be retrieved via the search suggestions endpoint. Auto-completion helps to predict the rest of the search string and provides you with all the options. - -In your development, this resource can help you to retrieve relevant information for your product listing and detail pages, for search, shopping cart, checkout, order history, wishlist and many more. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Catalog Search API Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/catalog-search-api-feature-integration.html). - -## Usage -To get search suggestion that you can use for auto-completion, you need to send GET requests to the following endpoint: -`/catalog-search-suggestions ` -Request sample: `GET http:carts-of-registered-users/managing-carts-of-registered-users.htmlmysprykershop.com/catalog-search-suggestions` -To include search queries in your request, use the q parameter. Below you can find the most common queries to use: - -| Request | Description | -| --- | --- | -| /catalog-search-suggestions?q= | Suggestions with empty search string | -| /catalog-search-suggestions?q=**c** | Suggestions for **1** letter | -| /catalog-search-suggestions?q=c**o** | Suggestions for **2** letters | -| /catalog-search-suggestions?q=com | Suggestions for **3** letters | -| /catalog-search-suggestions?q=**computer** | Suggestions for word **computers** | -| /catalog-search-suggestions?q=telecom+%26+navigation | Suggestions for "**telekom&navigation**" | - -If the catalog contains any suggestions for the query string, the endpoint will respond with a **RestCatalogSearchSuggestionsResponse**. - -**Response sample** -```js -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "cameras & camcorders", - "digital cameras" - ], - "abstractProducts": [ - { - "images": [ - { - "externalUrlSmall": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24602396-8292.jpg", - "externalUrlLarge": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24602396-8292.jpg" - } - ], - "abstractSku": "078", - "abstractName": "Sony Xperia Z3 Compact", - "price": 25584 - }, - { - "images": [ - { - "externalUrlSmall": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24584210-216.jpg", - "externalUrlLarge": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24584210-216.jpg" - } - ], - "abstract_sku": "077", - "abstract_name": "Sony Xperia Z3 Compact", - "price": 14554 - } - ], - "categories": [ - { - "name": "Cameras & Camcorders" - }, - { - "name": "Digital Cameras" - } - ], - "cmsPages": [] - }, - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlglue.de.suite.local/catalog-search-suggestions" - } - } - ], - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlglue.de.suite.local/catalog-search-suggestions?q=cam" - }, - "included": [] -} -``` - -### General fields -| Field* | Type | Description | -| --- | --- | --- | -| completion | String | Applicable auto completion terms. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Product fields -| Field* | Type | Description | -| --- | --- | --- | -| abstract_sku | String | SKU of the abstract product | -| abstract_name | String | Name of the abstract product | -| price | Integer | Price to pay for that product in cents | -| external_url_small | String | URLs to the image per image set per image | -| external_url_large | String | URLs to the image per image set per image | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Category fields -| Field* | Type | Description | -| --- | --- | --- | -| categories | String | Names of matching categories. |CMS fields - - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### CMS fields -| Field* | Type | Description | -| --- | --- | --- | -| cmsPages | String | Names of matching CMS pages. | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** -```js -{ - "data": [ - { - "type": "catalog-search-suggestions", - "id": null, - "attributes": { - "completion": [ - "cameras & camcorders", - "digital cameras" - ], - "abstractProducts": [ - { - "images": [ - { - "externalUrlSmall": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24602396-8292.jpg", - "externalUrlLarge": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24602396-8292.jpg" - } - ], - "abstractSku": "078", - "abstractName": "Sony Xperia Z3 Compact", - "price": 25584 - }, - { - "images": [ - { - "externalUrlSmall": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24584210-216.jpg", - "externalUrlLarge": "carts-of-registered-users/managing-carts-of-registered-users.htmld2s0ynfc62ej12.cloudfront.net/b2c/24584210-216.jpg" - } - ], - "abstract_sku": "077", - "abstract_name": "Sony Xperia Z3 Compact", - "price": 14554 - } - ], - "categories": [ - { - "name": "Cameras & Camcorders" - }, - { - "name": "Digital Cameras" - } - ], - "cmsPages": [] - }, - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlglue.de.suite.local/catalog-search-suggestions" - } - } - ], - "links": { - "self": "http:carts-of-registered-users/managing-carts-of-registered-users.htmlglue.de.suite.local/catalog-search-suggestions?q=cam" - }, - "included": [] -} -``` - -The response contains **4** types of suggestions: - -* **completion** - contains suggestions for auto-completion strings; -* **abstractProducts** - contains suggested products; -* **categories** - contains suggestions for categories; -* **cmsPages** - contains suggested CMS pages. diff --git a/docs/scos/dev/glue-api-guides/201811.0/retrieving-categories/retrieving-category-trees.md b/docs/scos/dev/glue-api-guides/201811.0/retrieving-categories/retrieving-category-trees.md deleted file mode 100644 index 50ce3142754..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/retrieving-categories/retrieving-category-trees.md +++ /dev/null @@ -1,510 +0,0 @@ ---- -title: Browsing a Category Tree -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/retrieving-category-trees -originalArticleId: 85516777-92cc-4d5d-bad9-e340bc47bd77 -redirect_from: - - /v1/docs/retrieving-category-trees - - /v1/docs/en/retrieving-category-trees ---- - -By means of the category API, you are able to retrieve the exact structure of your category tree with its hierarchical characteristics. The category nodes, which describe the tree structure, as well as the categories themselves can be retrieved. - -In your development, these resources can help you to: - -* Retrieve a category tree for your catalog -* Retrieve сategory specific information -* Find out which categories a product belongs to - -{% info_block infoBox %} - -For more information on managing the category tree, see [Category Hierarchy](/docs/scos/user/features/{{page.version}}/catalog-feature-overview.html). - -{% endinfo_block %} - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Category API Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-category-management-feature-integration.html). - -## Get Full Category Tree -To retrieve the full category tree, containing all available nodes and their children, send a GET request to the following endpoint: -`/category-trees` -Request sample: `GET http://mysprykershop.com/category-trees` -If the request is successful, the resource responds with a **RestCategoryTreesResponse**. -**Response sample:** - -| Field* | Type | Description | -| --- | --- | --- | -| nodeId | String | Category node ID | -| order | Integer | Digits between 1 and 100, with 100 ranking the highest (on one level under the parent node) | -| name | String | Name of category associated with the node | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned - -
-Sample - -```js -{ - "data": [ - { - "type": "category-trees", - "id": null, - "attributes": { - "categoryNodesStorage": [ - { - "nodeId": 5, - "order": 100, - "name": "Computer", - "children": [ - { - "nodeId": 6, - "order": 100, - "name": "Notebooks", - "children": [] - }, - { - "nodeId": 7, - "order": 90, - "name": "Pc's/Workstations", - "children": [] - }, - { - "nodeId": 8, - "order": 80, - "name": "Tablets", - "children": [] - } - ] - }, - { - "nodeId": 2, - "order": 90, - "name": "Cameras & Camcorders", - "children": [ - { - "nodeId": 4, - "order": 100, - "name": "Digital Cameras", - "children": [] - }, - { - "nodeId": 3, - "order": 90, - "name": "Camcorders", - "children": [] - } - ] - }, - { - "nodeId": 16, - "order": 80, - "name": "Food", - "children": [] - }, - { - "nodeId": 15, - "order": 80, - "name": "Cables", - "children": {} - }, - { - "nodeId": 11, - "order": 80, - "name": "Telecom & Navigation", - "children": [ - { - "nodeId": 12, - "order": 80, - "name": "Smartphones", - "children": {} - } - ] - }, - { - "nodeId": 9, - "order": 70, - "name": "Smart Wearables", - "children": [ - { - "nodeId": 10, - "order": 70, - "name": "Smartwatches", - "children": {} - } - ] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/category-trees" - } - } - ], - "links": { - "self": "http://mysprykershop.com/category-trees" - } -} -``` -
-
- -You can also use the **Accept-Language** header to specify the locale. -`Sample header: [{"key":"Accept-Language","value":"de, en;q=0.9"}]` -where **de**, **en** are the locales; **q=0.9** is a probability. - -## Get Categories by Product -To get all categories a product belongs to, you can send a GET request to the following endpoint: -`/abstract-products/{sku}?include=category-nodes` -Request sample: `GET http://mysprykershop.com/abstract-products/058?include=category-nodes` -where `058` is the SKU of the abstract product. -If the request is successful, the response will contain category nodes which a product belongs to. - -
-Response sample - -```js -{ - "data": { - "type": "abstract-products", - "id": "137", - "attributes": { - "sku": "137", - "name": "Acer TravelMate P246-M", - "description": "Work with style and simplicity The TravelMate P2 Series comes in 13.3\", 14\", 15.6\" and 17.3\" sizes to meet various business needs. Clad in a refined textile finish that both looks and feels great, these notebooks pack the latest Intel® Core™ processors1 and discrete graphics1 to keep you at your productive best. They are also loaded with tailor-made management and security software for easy, centralised control. The P2 series now comes with a fine linen textile pattern embossed on the outer covers. This lends a professional refined look and feel to the line that adds distinction to functionality. There are also practical benefits, as the pattern makes it a bit easier to keep a firm grip on the go, while also resisting scratches. The TravelMate P2 Series is certified to deliver the high audio and visual standards of Skype for Business1. Optimised hardware ensures that every word will be heard clearly with no gap or lag in speech, minimal background noise and zero echo. That means you can call or video chat with superior audio and visual quality.", - "attributes": { - "processor_cores": "2", - "thermal_design_power": "15 W", - "processor_codename": "Broadwell", - "brand": "Acer", - "color": "Black" - }, - "superAttributesDefinition": [ - "color" - ], - "superAttributes": [], - "attributeMap": { - "attribute_variants": { - "total_storage_capacity:128 GB": { - "id_product_concrete": "137_29283480" - }, - "total_storage_capacity:500 GB": { - "id_product_concrete": "137_29283479" - } - }, - "super_attributes": { - "total_storage_capacity": [ - "128 GB", - "500 GB" - ] - }, - "product_concrete_ids": [ - "137_29283479", - "137_29283480" - ] - }, - "metaTitle": "Acer TravelMate P246-M", - "metaKeywords": "Acer,Entertainment Electronics", - "metaDescription": "Work with style and simplicity The TravelMate P2 Series comes in 13.3\", 14\", 15.6\" and 17.3\" sizes to meet various business needs. Clad in a refined textil", - "attributeNames": { - "processor_cores": "Processor cores", - "thermal_design_power": "Thermal Design Power (TDP)", - "processor_codename": "Processor codename", - "brand": "Brand", - "color": "Color" - } - }, - "links": { - "self": "http://mysprykershop.com/abstract-products/137" - }, - "relationships": { - "concrete-products": { - "data": [ - { - "type": "concrete-products", - "id": "137_29283479" - }, - { - "type": "concrete-products", - "id": "137_29283480" - } - ] - }, - "category-nodes": { - "data": [ - { - "type": "category-nodes", - "id": "14" - }, - { - "type": "category-nodes", - "id": "5" - }, - { - "type": "category-nodes", - "id": "6" - } - ] - } - } - }, - "included": [ - { - "type": "category-nodes", - "id": "14", - "attributes": { - "nodeId": 14, - "name": "Variant Showcase", - "metaTitle": "Variant Showcase", - "metaKeywords": "Variant Showcase", - "metaDescription": "These are products that have more than 1 variant.", - "isActive": true, - "children": {}, - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "children": {}, - "parents": {}, - "order": null - } - ], - "order": 50 - }, - "links": { - "self": "http://mysprykershop.com/category-nodes/14" - } - }, - { - "type": "category-nodes", - "id": "5", - "attributes": { - "nodeId": 5, - "name": "Computer", - "metaTitle": "Computer", - "metaKeywords": "Computer", - "metaDescription": "Computer", - "isActive": true, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "metaTitle": "Notebooks", - "metaKeywords": "Notebooks", - "metaDescription": "Notebooks", - "isActive": true, - "children": {}, - "parents": {}, - "order": 100 - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "metaTitle": "Pc's/Workstations", - "metaKeywords": "Pc's/Workstations", - "metaDescription": "Pc's/Workstations", - "isActive": true, - "children": {}, - "parents": {}, - "order": 90 - }, - { - "nodeId": 8, - "name": "Tablets", - "metaTitle": "Tablets", - "metaKeywords": "Tablets", - "metaDescription": "Tablets", - "isActive": true, - "children": {}, - "parents": {}, - "order": 80 - } - ], - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "children": {}, - "parents": {}, - "order": null - } - ], - "order": 100 - }, - "links": { - "self": "http://mysprykershop.com/category-nodes/5" - } - }, - { - "type": "category-nodes", - "id": "6", - "attributes": { - "nodeId": 6, - "name": "Notebooks", - "metaTitle": "Notebooks", - "metaKeywords": "Notebooks", - "metaDescription": "Notebooks", - "isActive": true, - "children": {}, - "parents": [ - { - "nodeId": 5, - "name": "Computer", - "metaTitle": "Computer", - "metaKeywords": "Computer", - "metaDescription": "Computer", - "isActive": true, - "children": {}, - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "children": {}, - "parents": {}, - "order": null - } - ], - "order": 100 - } - ], - "order": 100 - }, - "links": { - "self": "http://mysprykershop.com/category-nodes/6" - } - } - ] - } -``` -
-
- -## Get a Single Category Node -To retrieve full information on a category node that a tree node represents, you need to get that specific node resource by node ID. - -To identify the ID for the category you need, you can retrieve the whole category tree at `/category-trees`. The response will contain the ID of each node in the **nodeId** attribute: - -Sample: - -```js -"categoryNodesStorage": [ - { - "nodeId": 5, - "order": 100, - "name": "Computer", - "children": [ - ... -``` - -To retrieve a specific node by ID, access the following endpoint: - -`/category-nodes/{% raw %}{{{% endraw %}node_id{% raw %}}}{% endraw %}` -Request sample: `GET http://mysprykershop.com/category-nodes/5` -where `5` is the node ID. -If the request is successful, the resource responds with a **RestCategoryNodeResponse**. - -Response sample: - -| Field* | Type | Description | -| --- | --- | --- | -| nodeId | String | Category node ID. | -| name | String | Name of category associated with the node. | -| metaTitle | String | Meta title of the category. | -| metaKeywords | String | Meta keywords of the category. | -| metaDescription | String | Meta description of the category. | -| isActive | Boolean | Boolean to see, if the category is active. | -| order | Integer | Digits between 1 and 100, with 100 ranking the highest (on one level under the parent node). | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -
-Sample - -```js -{ - "data": { - "type": "category-nodes", - "id": "5", - "attributes": { - "nodeId": 5, - "name": "Computer", - "metaTitle": "Computer", - "metaKeywords": "Computer", - "metaDescription": "Computer", - "isActive": true, - "children": [ - { - "nodeId": 6, - "name": "Notebooks", - "metaTitle": "Notebooks", - "metaKeywords": "Notebooks", - "metaDescription": "Notebooks", - "isActive": true, - "children": [], - "parents": [], - "order": 100 - }, - { - "nodeId": 7, - "name": "Pc's/Workstations", - "metaTitle": "Pc's/Workstations", - "metaKeywords": "Pc's/Workstations", - "metaDescription": "Pc's/Workstations", - "isActive": true, - "children": [], - "parents": [], - "order": 90 - }, - { - "nodeId": 8, - "name": "Tablets", - "metaTitle": "Tablets", - "metaKeywords": "Tablets", - "metaDescription": "Tablets", - "isActive": true, - "children": [], - "parents": [], - "order": 80 - } - ], - "parents": [ - { - "nodeId": 1, - "name": "Demoshop", - "metaTitle": "Demoshop", - "metaKeywords": "English version of Demoshop", - "metaDescription": "English version of Demoshop", - "isActive": true, - "children": [], - "parents": [], - "order": null - } - ], - "order": 100 - }, - "links": { - "self": "http://mysprykershop.com/category-nodes/5" - } - } - } -``` -
-
- -### Possible errors -| Code | Reason | -| --- | --- | -| 701 | Node ID not specified or invalid. | -| 703 | A node with the specified ID was not found. | diff --git a/docs/scos/dev/glue-api-guides/201811.0/retrieving-store-configuration.md b/docs/scos/dev/glue-api-guides/201811.0/retrieving-store-configuration.md deleted file mode 100644 index dd3de219224..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/retrieving-store-configuration.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Retrieving Store Configuration -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/retrieving-store-configuration -originalArticleId: 096e1d9d-54bd-45d7-a833-782db0484568 -redirect_from: - - /v1/docs/retrieving-store-configuration - - /v1/docs/en/retrieving-store-configuration ---- - -Depending on your project needs, you can set up a single store that serves all your business needs or have multiple stores designed for different applications or available in different countries. Regardless of how many stores you have, a store contains such generic configuration as the currencies that can be used in transactions, countries where a store is available, supported languages and the time zone of the store. - -The configuration of the current store in a project can be retrieved via an endpoint provided by the **Stores API**. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Glue Application Feature Integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/glue-api-glue-application-feature-integration.html). - -## Usage -To retrieve store configuration, send a GET request to the following endpoint: -`/stores` -Request sample: `GET http://mysprykershop.com/stores` -The endpoint will respond with a **RestStoresResponse**. - -**Response sample** -```js -{ - "data": [ - { - "type": "stores", - "id": "DE", - "attributes": { - "timeZone": "Europe/Berlin", - "defaultCurrency": "EUR", - "currencies": [ - { - "code": "EUR", - "name": "Euro" - }, - { - "code": "CHF", - "name": "Swiss Franc" - } - ], - "locales": [ - { - "code": "en", - "name": "en_US" - }, - { - "code": "de", - "name": "de_DE" - } - ], - "countries": [ - { - "iso2Code": "AT", - "iso3Code": "AUT", - "name": "Austria", - "postalCodeMandatory": true, - "postalCodeRegex": "\\d{4}", - "regions": [] - }, - { - "iso2Code": "DE", - "iso3Code": "DEU", - "name": "Germany", - "postalCodeMandatory": true, - "postalCodeRegex": "\\d{5}", - "regions": [] - } - ] - }, - "links": { - "self": "http://mysprykershop.com/stores/DE" - } - } - ], - "links": { - "self": "http://mysprykershop.com/stores" - } -} -``` - -### General Attributes -| Field* | Type | Description | -| --- | --- | --- | -| timeZone | String | Name of the time zone of the selected store | -| defaultCurrency | String | Default currency of the store | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Currencies -| Field* | Type | Description | -| --- | --- | --- | -| code | String | Currency code | -| name | String | Currency name | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Locales -| Field* | Type | Description | -| --- | --- | --- | -| code | String | Locale code | -| name | String | Locale name | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Countries -| Field* | Type | Description | -| --- | --- | --- | -| iso2Code | String | 2 digit country code | -| iso3Code | String | 3 digit country code | -| name | String | Country name | -| postalCodeMandatory | Boolean | Boolean to tell if a postal code is mandatory or not | -| postalCodeRegex | String | A regular expression for the allowed postal codes | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -### Regions -| Field* | Type | Description | -| --- | --- | --- | -| iso2Code | String | Iso 2 code for the region | -| name | String | Region name | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. diff --git a/docs/scos/dev/glue-api-guides/201811.0/searching-the-product-catalog.md b/docs/scos/dev/glue-api-guides/201811.0/searching-the-product-catalog.md deleted file mode 100644 index 6bc33312b66..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/searching-the-product-catalog.md +++ /dev/null @@ -1,567 +0,0 @@ ---- -title: Searching the Product Catalog -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/catalog-search -originalArticleId: e4bd8a24-f4a2-4780-a389-990f30875971 -redirect_from: - - /v1/docs/catalog-search - - /v1/docs/en/catalog-search ---- - -The implementation of the search API offers you the same search experience as in the Spryker demo shops. The search engine used is Elasticsearch and search results go beyond the simple listing of products in the results section. The list of search results is paginated according to your configuration and spelling suggestions are offered when needed. In addition, sorting and facets are supported to narrow down the search results. - -In your development, this endpoint can help you to: - -* Implement catalog search functionality including facets and pagination -* Retrieve a list of products to be displayed anywhere you want. - -## Installation -For detailed information on the modules that provide the API functionality and related installation instructions, see [Catalog Search API Feature Integration]((/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/catalog-search-api-feature-integration.html)). - -## Searching for Products -To search for products, send GET requests to the following endpoint: -`/catalog-search` -Request sample: `GET http://mysprykershop.com/catalog-search?q=` -The above request is the same as searching with an empty search field in Spryker front-end (no search parameters provided). By executing such a test search request, you can get search settings, such as sorting and pagination options, a default number of items per page etc. - -{% info_block warningBox %} - -Search settings are defined by the front-end search configuration. In other words, the REST API uses search settings of Spryker Shop Application. - -{% endinfo_block %} - -## Sorting Parameters - -| Field* | Type | Description | -| --- | --- | --- | -| sortParamNames | String | List of possible sorting parameters such as "name_asc" or "price_desc" | -| sortParamLocalizedNames | String | Localized names of the sorting parameters available as well as the sorting parameters themselves | -| currentSortParam | String | The currently applied sorting parameter | -| currentSortOrder | String | The currently applied sorting order | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Pagination** - -| Field* | Type | Description | -| --- | --- | --- | -| numFound | String | Number of search results | -| currentPage | String | Current page of search results | -| maxPage | String | Total number of search results pages | -| currentItemsPerPage | String | Number of search results on the current page | -| defaultItemsPerPage | String | Default number of search results on one page | -| validItemsPerPageOptions | String | Another number of search results per page options | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -## Abstract Product Information - -| Field* | Type | Description | -| --- | --- | --- | -| externalUrlSmall | String | URLs to the image per image set per image | -| externalUrlLarge | String | URLs to the image per image set per image | -| price | Integer | Price to pay for that product in cents | -| abstractName | String | Name of the abstract product | -| abstractSku | String | SKU of the abstract product | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -## Abstract Product Price Information - -| Field* | Type | Description | -| --- | --- | --- | -| code | String | Currency code | -| name | String | Currency name | -| symbol | Integer | Currency symbol | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -
-Sample empty response (no products found) - -```js -{ - "data": [ - { - "type": "catalog-search", - "id": null, - "attributes": { - "currency": "EUR", - "sort": { - "sortParamNames": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "sortParamLocalizedNames": { - "rating": "Sort by product ratings", - "name_asc": "Sort by name ascending", - "name_desc": "Sort by name descending", - "price_asc": "Sort by price ascending", - "price_desc": "Sort by price descending" - }, - "currentSortParam": null, - "currentSortOrder": null - }, - "pagination": { - "numFound": 0, - "currentPage": 0, - "maxPage": 0, - "currentItemsPerPage": 12, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 12, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": {}, - "valueFacets": {}, - "rangeFacets": {}, - "spellingSuggestion": null - }, - "links": { - "self": "http://glue.90.spryker-shop-b2c.com/catalog-search" - } - } - ], - "links": { - "self": "http://glue.90.spryker-shop-b2c.com/catalog-search" - } - } -``` -
-
- -To search for products, you need to add search filters following the q parameter. Below are examples of the most common filters you can use: - -| Request | Description | -| --- | --- | -| /catalog-search?q=**camera** | Search for any **camera** products | -| /catalog-search?q=camera&price%5Bmin%5D=**157**&price%5Bmax%5D=**158** | Search for camera products with price between **157** and **158** | -| /catalog-search?q=camera**&label%5B%5D=SALE+%25** | Search for **camera** products with a **SALE+%25** label | -| /catalog-search?q=camera&**brand=Canon** | Search for **Canon**-branded **camera** products | -| /catalog-search?**color[]=White**&q=camera | Search for **white camera** products | -| /catalog-search?**weight[]=132+g**&q=camera | Search for **camera** products with weight **132 g** | - -
-Sample response for a valid request - -```js -{ - "data": { - "type": "catalog-search", - "id": null, - "attributes": { - "sort": { - "sort_param_names": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "current_sort_param": "1", - "current_sort_order": null - }, - "pagination": { - "num_found": 3, - "current_page": 1, - "max_page": 1, - "current_items_per_page": 12, - "config": { - "parameter_name": "page", - "items_per_page_parameter_name": "ipp", - "default_items_per_page": 12, - "valid_items_per_page_options": [ - 12, - 24, - 36 - ] - } - }, - "abstractProducts": [ - { - "images": [ - { - "externalUrlSmall": "//d2s0ynfc62ej12.cloudfront.net/b2c/26175504-2265.jpg", - "externalUrlLarge": "//d2s0ynfc62ej12.cloudfront.net/b2c/26175504-2265.jpg" - } - ], - "price": 36742, - "abstractName": "Acer Liquid Jade", - "prices": [ - { - "priceTypeName": "DEFAULT", - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "grossAmount": 36742, - "DEFAULT": 36742 - }, - { - "priceTypeName": "ORIGINAL", - "currency": { - "code": "EUR", - "name": "Euro", - "symbol": "€" - }, - "grossAmount": 40000, - "ORIGINAL": 40000 - } - ], - "abstractSku": "059" - } - ], - "valueFacets": [ - { - "name": "category", - "localizedName": "Categories", - "docCount": null, - "values": [ - { - "value": 1, - "doc_count": 24 - }, - { - "value": 5, - "doc_count": 12 - }, - { - "value": 14, - "doc_count": 8 - }, - { - "value": 6, - "doc_count": 7 - }, - { - "value": 11, - "doc_count": 7 - }, - { - "value": 12, - "doc_count": 7 - }, - { - "value": 9, - "doc_count": 5 - }, - { - "value": 10, - "doc_count": 5 - }, - { - "value": 8, - "doc_count": 3 - }, - { - "value": 7, - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "category", - "isMultiValued": false - } - }, - { - "name": "label", - "localizedName": "Label", - "docCount": null, - "values": [ - { - "value": "SALE %", - "doc_count": 7 - }, - { - "value": "Standard Label", - "doc_count": 3 - }, - { - "value": "New", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "label", - "isMultiValued": true - } - }, - { - "name": "color", - "localizedName": "Color", - "docCount": null, - "values": [ - { - "value": "Black", - "doc_count": 9 - }, - { - "value": "White", - "doc_count": 8 - }, - { - "value": "Grey", - "doc_count": 2 - }, - { - "value": "Silver", - "doc_count": 2 - }, - { - "value": "Blue", - "doc_count": 1 - }, - { - "value": "Navy", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "color", - "isMultiValued": true - } - }, - { - "name": "storage_capacity", - "localizedName": "Storage Capacity", - "docCount": null, - "values": [], - "activeValue": null, - "config": { - "parameterName": "storage_capacity", - "isMultiValued": true - } - }, - { - "name": "brand", - "localizedName": "Brand", - "docCount": null, - "values": [ - { - "value": "Acer", - "doc_count": 19 - }, - { - "value": "TomTom", - "doc_count": 3 - }, - { - "value": "Asus", - "doc_count": 2 - } - ], - "activeValue": null, - "config": { - "parameterName": "brand", - "isMultiValued": false - } - }, - { - "name": "touchscreen", - "localizedName": "Touchscreen", - "docCount": null, - "values": [ - { - "value": "yes", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "touchscreen", - "isMultiValued": false - } - }, - { - "name": "weight", - "localizedName": "Weight", - "docCount": null, - "values": [ - { - "value": "46 g", - "doc_count": 3 - }, - { - "value": "4.4 oz", - "doc_count": 2 - }, - { - "value": "18 g", - "doc_count": 1 - }, - { - "value": "20 g", - "doc_count": 1 - } - ], - "activeValue": null, - "config": { - "parameterName": "weight", - "isMultiValued": true - } - } - ], - "rangeFacets": [ - { - "name": "price-DEFAULT-EUR-GROSS_MODE", - "localizedName": "Price", - "min": 1879, - "max": 44436, - "activeMin": 1879, - "activeMax": 44436, - "docCount": null, - "config": { - "parameterName": "price", - "isMultiValued": false - } - }, - { - "name": "rating", - "localizedName": "Ratings", - "min": 0, - "max": 0, - "activeMin": 0, - "activeMax": 0, - "docCount": null, - "config": { - "parameterName": "rating", - "isMultiValued": false - } - } - ], - "spelling_suggestion": "cameras" - }, - "links": { - "self": "http://glue.de.shop-suite.local/search" - } - } -} -``` -
-
- -## Sorting Search Results -You can also define how products are sorted. By default, when you send a search request, in the response you will get information on which sorting options are available. The sorting options are contained in the **data/attributes/sort** section of a search response: - -| Field* | Type | Description | -| --- | --- | --- | -| sortParamNames | String | List of possible sorting parameters such as "name_asc" or "price_desc" | -| sortParamLocalizedNames | String | Localized names of the sorting parameters available as well as the sorting parameters themselves | -| currentSortParam | String | Currently applied sorting parameter | -| currentSortOrder | String | Currently applied sorting order | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** -```js -{ - "data": { - "type": "search", - ... - "sort": { - "sort_param_names": [ - "rating", - "name_asc", - "name_desc", - "price_asc", - "price_desc" - ], - "current_sort_param": "1", - "current_sort_order": null - }, -``` - -You can use the sort options to specify how to output search results in a search response: - -| Request | Description | -| --- | --- | -| /catalog-search?sort=**rating**&q=cameras | Sort cameras by **product ratings**. | -| /catalog-search?sort=**name_asc**&q=cameras | Sort cameras by **name ascending**. | -| /catalog-search?sort=**name_desc**&q=cameras | Sort cameras by **name descending**. | -| /catalog-search?sort=**price_asc**&q=cameras | Sort cameras by **price ascending**. | -| /catalog-search?sort=**price_desc**&q=cameras | Sort cameras by **price descending**. | - -{% info_block warningBox %} - -Sort settings are defined by the front-end search configuration. In other words, the REST API uses sort settings of Spryker Shop Application. - -{% endinfo_block %} - -## Pagination - -To optimize network and resource utilization, you can also paginate the search results. Pagination options can also be retrieved from a search response. They are located in **data/attributes/pagination**. - -| Field* | Type | Description | -| --- | --- | --- | -| numFound | String | Number of search results | -| currentPage | String | Current page of search results | -| maxPage | String | Total number of search results pages | -| currentItemsPerPage | String | Number of search results on the current page | -| defaultItemsPerPage | String | Default number of search results on one page | -| validItemsPerPageOptions | String | Another number of search results per page options | - -\*The fields mentioned are all attributes in the response. Type and ID are not mentioned. - -**Sample response** -```js -{ - "data": { - "type": "search", - ... - "pagination": { - "numFound": 632, - "currentPage": 4, - "maxPage": 53, - "currentItemsPerPage": 12, - "config": { - "parameterName": "page", - "itemsPerPageParameterName": "ipp", - "defaultItemsPerPage": 12, - "validItemsPerPageOptions": [ - 12, - 24, - 36 - ] - } - } - }, - - "links": { - "self": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=12&page[limit]=12", - "last": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=24&page[limit]=12", - "first": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=0&page[limit]=12", - "prev": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=0&page[limit]=12", - "next": "http://mysprykershop.com/catalog-search?q=canon&include=&page[offset]=24&page[limit]=12" - } - } -``` - -The number of items per page is controlled by the parameter which name is specified in the **itemsPerPageParameterName** attribute (by default, ipp). The default number of items per page and available options for pagination are returned by the **defaultItemsPerPage** and **validItemsPerPageOptions** parameters respectively. - -In the following table, you can find some sample requests that use pagination: - -| Request | Description | -| --- | --- | -| /catalog-search?q=canon&page[offset]=0&**page[limit]=36** | Show **36** items per page. | -| /catalog-search?q=canon&**page[offset]=12**&page[limit]=12 | Use the default number of products per page and show the **2nd** page. | -| /catalog-search?q=canon&**page[offset]=48**&page[limit]=24 | Show **24** items per page and page number **3**. | - -{% info_block warningBox %} - -Pagination settings are defined by the front-end search configuration. In other words, the REST API uses pagination settings of Spryker Shop Application. - -{% endinfo_block %} diff --git a/docs/scos/dev/glue-api-guides/201811.0/security-and-authentication.md b/docs/scos/dev/glue-api-guides/201811.0/security-and-authentication.md deleted file mode 100644 index de7093c8db1..00000000000 --- a/docs/scos/dev/glue-api-guides/201811.0/security-and-authentication.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Security and Authentication -last_updated: May 19, 2020 -template: glue-api-storefront-guide-template -originalLink: https://documentation.spryker.com/v1/docs/security-and-authentication -originalArticleId: 90e8843b-0ce2-48a1-b952-990827eff3d2 -redirect_from: - - /v1/docs/security-and-authentication - - /v1/docs/en/security-and-authentication -related: - - title: Authentication and Authorization - link: docs/scos/dev/glue-api-guides/page.version/authentication-and-authorization.html - - title: Glue Infrastructure - link: docs/scos/dev/glue-api-guides/page.version/glue-infrastructure.html ---- - -When exposing information via Spryker Glue API and integrating with third-party applications, it is essential to protect API endpoints from unauthorized access. For this purpose, Spryker provides an authorization mechanism, using which you can request users to authenticate themselves before accessing a resource. For this purpose, Spryker Glue is shipped with an implementation of the OAuth 2.0 protocol. It allows users to authenticate themselves with their username and password and receive an access token. The token can then be used to access protected resources. - -The authorization mechanism provided by the Glue is flexible and allows you to define which endpoints specifically require authentication. Usually, protected endpoints include customer wish lists, carts, personal data and the like. Also, you may want to protect additional areas as required by your project. In addition to endpoints, you may require authorization to use specific REST verbs. For example, a certain endpoint can allow retrieving information, but not modifying it. In this case, the GET verb can be allowed for usage without authentication, while the PUT, PATCH and DELETE verbs will require user authentication to use. - -## How Authentication Works -To authenticate a user, the client must send an authentication request, containing the username and password. If the provided credentials match a valid Spryker user, the API responds with a 201 response code and a message containing an access token, also known as a bearer token. The token can then be used to access protected API resources. Schematically, the authentication and authorization scheme of Spryker REST API can be represented as follows: - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Security+and+Authentication/auth-scheme.png) - -Access tokens issued by the API have a limited lifetime. When a token is issued, the response message contains not only the access token, but also the duration of its validity, in seconds, and a refresh token. Once the access token expires, the corresponding refresh token can be exchanged for a new pair of access and refresh tokens. - -If an invalid or expired token is passed when accessing a protected resource, or no token is passed at all, the API will respond with a 401 Unauthorized response code. This response code will also be issued if a user is not authorized to access that particular resource. The response body will contain a detailed error message. It is, therefore, the client's responsibility to handle the 401 response code and error messages correctly. - -Authentication workflow: -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Glue+API/Glue+API+Developer+Guides/Security+and+Authentication/authentication-workflow.png) - -## Modules -Authentication and authorization are provided by the following modules: - -The API has scopes are defined for different groups of users. A scope defines which resources specifically users can access. -{% info_block infoBox %} -By default, all Spryker customers are assigned to the customer scope. -{% endinfo_block %} - -To identify, which user has made a request, you can use the getUser function of RestRequestInterface, for example: - -```php -class MyResourceHandler implements MyResourceInterface - /** - * @param \Spryker\Glue\GlueApplication\Rest\Request\Data\RestRequestInterface $restRequest - * - * @return \Generated\Shared\Transfer\CustomerTransfer - */ - protected function getCustomerTransfer(RestRequestInterface $restRequest): CustomerTransfer - { - return (new CustomerTransfer())->setCustomerReference($restRequest->getUser()->getNaturalIdentifier()); - } -``` - -## Endpoint Protection -In addition to user scopes, each endpoint can be secured individually. For this purpose, you need to configure the routing of your Resource Feature Module. The Route Plugins of each module define which verbs are supported by the corresponding endpoint. This is done via the config function of the plugin class. The verbs are passed to it as a set of functions that should be called when the corresponding verb is passed. - -{% info_block infoBox %} -For details, see [Resource Routing](/docs/scos/dev/glue-api-guides/{{page.version}}/glue-infrastructure.html#resource-routing). -{% endinfo_block %} - -For each function in the set, the second parameter determines, whether the corresponding verb requires authentication to use (the parameter value is **true**) or not (the value is **false**). If the parameter is not passed, the verb requires authentication. - -In the following example, the PUT and DELETE verbs require authentication, and the GET verb can be called anonymously. -```php -... -class MyResourceRoutePlugin extends AbstractPlugin implements ResourceRoutePluginInterface -{ - public function configure(ResourceRouteCollectionInterface $resourceRouteCollection): ResourceRouteCollectionInterface - { - $resourceRouteCollection->addPost('post') - ->addDelete('delete', true) - ->addGet('get', false); - ... -``` - -## Database and Extension Points -All data related to API authentication functionality is stored in the following tables: - -|Table| Purpose| -| --- | --- | -| spy_oauth_access_token| -Stores all issued tokens.
The table is not used for token verification, it is added for audit purposes only. | -| spy_oauth_client|Contains a list of clients that are currently using OAuth, one record for each frontend customer. The `is_confidental` field identifies whether a specific client must provide a password. | -| spy_oauth_scope | Stores user scopes.| - -The OAuth and OAuthExtension modules also provides the following extension points: - -|Extension Point |Method| Interface| -| --- | --- | --- | -|User provider plugins|`getUserProviderPlugins()`|`\Spryker\Zed\OauthExtension\Dependency\Plugin\OauthUserProviderPluginInterface`| -|Scope provider plugins|`getScopeProviderPlugins()`|`\Spryker\Zed\OauthExtension\Dependency\Plugin\OauthScopeProviderPluginInterface`| diff --git a/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.md b/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.md similarity index 82% rename from docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.md rename to docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.md index d3f644b2f07..ea9887ebc57 100644 --- a/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.md +++ b/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.md @@ -1,16 +1,15 @@ --- -title: How to configure Dynamic Data API endpoints. -description: This guide shows how to configure the Dynamic Data API endpoints. -last_updated: June 23, 2023 +title: How to configure Data Exchange API endpoints. +description: This guide shows how to configure the Data Exchange API endpoints. +last_updated: Aug 21, 2023 template: howto-guide-template redirect_from: - - /docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.html + - /docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.html --- -This guide shows how to configure the Dynamic Data API endpoints. +This guide shows how to configure the Data Exchange API endpoints. -In order to incorporate a new endpoint for interacting with entities in the database, -it is necessary to add a corresponding row to the `spy_dynamic_entity_configuration` table. +To incorporate a new endpoint for interacting with entities in the database, add a corresponding row to the `spy_dynamic_entity_configuration` table or create a configuration file and install configuration data. For details, see the [Configure Data Exchange installation](/docs/scos/dev/feature-integration-guides/202307.0/glue-api/dynamic-data-api/data-exchange-api-integration.html#configure-data-exchange-installation). The `spy_dynamic_entity_configuration` table represents the configuration for dynamic entity endpoints in the system. It has the following columns: @@ -26,7 +25,7 @@ The `spy_dynamic_entity_configuration` table represents the configuration for dy {% info_block infoBox %} -Currently, the process entails manually executing SQL queries as there is no existing user interface (UI) feature in Spryker for it. +The process entails manually executing SQL queries or importing using a config file because there is no existing user interface (UI) feature in Spryker for it. However, future releases are expected to introduce an UI solution for adding new rows to the `spy_dynamic_entity_configuration` table. {% endinfo_block %} @@ -98,7 +97,7 @@ larger values, the field can be set as a string type instead. {% info_block infoBox %} -So far the Dynamic Data API supports the following types for the configured fields: boolean, integer, string and decimal. +So far the Data Exchange API supports the following types for the configured fields: boolean, integer, string and decimal. {% endinfo_block %} @@ -114,7 +113,7 @@ COMMIT; {% info_block warningBox "Verification" %} -If everything is set up correctly, you can follow [How to send request in Dynamic Data API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.html) to discover how to request your API endpoint. -Or if you're in the middle of the integration process for the Dynamic Data API follow [Dynamic Data API integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/dynamic-data-api-integration.html) to proceed with it. +If everything is set up correctly, you can follow [How to send request in Data Exchange API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.html) to discover how to request your API endpoint. +Or if you're in the middle of the integration process for the Data Exchange API follow [Data Exchange API integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/data-exchange-api-integration.html) to proceed with it. {% endinfo_block %} diff --git a/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.md b/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.md similarity index 94% rename from docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.md rename to docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.md index 0bc0e5d813b..7a834119a23 100644 --- a/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.md +++ b/docs/scos/dev/glue-api-guides/202307.0/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.md @@ -1,27 +1,27 @@ --- -title: How to send a request in Dynamic Data API -description: This guide shows how to send a request in Dynamic Data API. +title: How to send a request in Data Exchange API +description: This guide shows how to send a request in Data Exchange API. last_updated: June 23, 2023 template: howto-guide-template redirect_from: - - /docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.html + - /docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.html --- -This guide shows how to send a request in Dynamic Data API. +This guide shows how to send a request in Data Exchange API. {% info_block infoBox %} -Ensure the Dynamic Data API is integrated (follow [Dynamic Data API integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/dynamic-data-api-integration.html)) -and configured (follow [How to configure Dynamic Data API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-configure-dynamic-data-api.html)) +Ensure the Data Exchange API is integrated (follow [Data Exchange API integration](/docs/scos/dev/feature-integration-guides/{{page.version}}/glue-api/data-exchange-api-integration.html)) +and configured (follow [How to configure Data Exchange API](/docs/scos/dev/glue-api-guides/{{page.version}}/dynamic-data-api/how-to-guides/how-to-configure-data-exchange-api.html)) as described in the guides. {% endinfo_block %} Let's say you have an endpoint `/dynamic-data/country` to operate with data in `spy_country` table in database. -The Dynamic Data API is a non-resource-based API and routes directly to a controller all specified endpoints. +The Data Exchange API is a non-resource-based API and routes directly to a controller all specified endpoints. -By default, all routes within the Dynamic Data API are protected to ensure data security. +By default, all routes within the Data Exchange API are protected to ensure data security. To access the API, you need to obtain an access token by sending a POST request to the `/token/` endpoint with the appropriate credentials: ```bash @@ -472,4 +472,4 @@ Bellow you can find a list of error codes that you can receive when sending `GET | 1307 | The required field must not be empty. Field: `field` | The specified field is required according to the configuration. The field was not provided. Please check the data you are sending and try again. | | 1308 | Entity not found by identifier, and new identifier can not be persisted. Please update the request. | The entity could not be found using the provided identifier, and a new identifier cannot be persisted. Please update your request accordingly or check configuration for identifier field. | | 1309 | Failed to persist the data. Please verify the provided data and try again. Entry is duplicated. | Failed to persist the data. Please verify the provided data and try again. This error may occur if a record with the same information already exists in the database. | -| 1310 | Incomplete Request - missing identifier. | The request is incomplete. The identifier is missing. Please check the request and try again. | \ No newline at end of file +| 1310 | Incomplete Request - missing identifier. | The request is incomplete. The identifier is missing. Please check the request and try again. | diff --git a/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.md b/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.md index ff9b5ebb7c0..90fe235b71d 100644 --- a/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.md +++ b/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.md @@ -16,7 +16,7 @@ composer require --dev spryker-sdk/evaluator * Get general information about the tool and see all the commands related to evaluation in the `evaluate` section: ```bash -/vendor/bin/evaluator evaluate -h +vendor/bin/evaluator evaluate -h ``` ## Run an evaluation @@ -26,13 +26,13 @@ To evaluate your code, run the evaluator in one of the following ways: * Evaluate the code of all the modules: ```bash -/vendor/bin/evaluator evaluate +vendor/bin/evaluator evaluate ``` * Evaluate the code of a specific module: ```bash -/vendor/bin/evaluator evaluate --path=src/path_to_module +vendor/bin/evaluator evaluate --path=src/path_to_module ``` ## Resolve upgradability issues diff --git a/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.md b/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.md index 7f3284e38b5..105b206bfc2 100644 --- a/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.md +++ b/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.md @@ -38,6 +38,4 @@ Read more: https://docs.spryker.com/docs/scos/dev/guidelines/keeping-a-project-u ### Resolving the issue -To resolve the issue: - -1. Update the npm dependencies with known vulnerabilities to the versions where the vulnerability issues are fixed. +To resolve the issue, update the npm dependencies with known vulnerabilities to the versions where the vulnerability issues are fixed. diff --git a/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.md b/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.md similarity index 85% rename from docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.md rename to docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.md index 38cf7fa6587..10f91ce35a1 100644 --- a/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.md +++ b/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.md @@ -2,6 +2,8 @@ title: Spryker security checker description: Reference information for evaluator tools. template: howto-guide-template +redirect_from: + - /docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.html --- Security Update Checker is a tool that checks if security fixes exist for Spryker modules that are present in your project. @@ -39,6 +41,4 @@ Your `composer.lock` file contains package versions that have security issues: ```` ### Resolving the error - -To resolve the error: -1. Upgrade the package to a version where the vulnerability issue is fixed. +To resolve the error, upgrade the package to a version where the vulnerability issue is fixed. diff --git a/docs/scos/dev/legacy-demoshop/201811.0/about-the-legacy-demoshop-front-end-guides.md b/docs/scos/dev/legacy-demoshop/201811.0/about-the-legacy-demoshop-front-end-guides.md deleted file mode 100644 index aee11aea23d..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/about-the-legacy-demoshop-front-end-guides.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: About the Legacy Demoshop Front-end Guides -description: The Legacy Demoshop Front-end guides provide information of how the front-end was built in the Legacy Demoshop. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/about-legacy-demoshop-guides -originalArticleId: eaea41d9-f876-48ea-ba2b-8ab71b06c027 -redirect_from: - - /2021080/docs/about-legacy-demoshop-guides - - /2021080/docs/en/about-legacy-demoshop-guides - - /docs/about-legacy-demoshop-guides - - /docs/en/about-legacy-demoshop-guides - - /v6/docs/about-legacy-demoshop-guides - - /v6/docs/en/about-legacy-demoshop-guides - - /v5/docs/about-legacy-demoshop-guides - - /v5/docs/en/about-legacy-demoshop-guides - - /v4/docs/about-legacy-demoshop-guides - - /v4/docs/en/about-legacy-demoshop-guides - - /v3/docs/about-legacy-demoshop-guides - - /v3/docs/en/about-legacy-demoshop-guides - - /v2/docs/about-legacy-demoshop-guides - - /v2/docs/en/about-legacy-demoshop-guides - - /v1/docs/about-legacy-demoshop-guides - - /v1/docs/en/about-legacy-demoshop-guides ---- - -The Legacy Demoshop Front-end guides provide information of how the front-end was built in the Legacy Demoshop. Here you will find the following information: - -* [Overview of the Twig Template Engine](/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.html) used for building the front-end; -* [Twig Templates best practices](/docs/scos/dev/legacy-demoshop/{{page.version}}/twig-templates/best-practices-twig-templates.html) providing in-depth information on how to extend Twig templates: create pages in Zed, add multiple widgets to pages, add forms etc. - -The [Demoshop Guide](/docs/scos/dev/legacy-demoshop/{{page.version}}/demoshop-guide.html) will work you through the process of building your assets. The assets is a set of resources used to build the UI, that includes html, css (or less, sass, stylus, etc.) and js (or jsx, etc.) files, images, fonts and so on. - -Assets represent a large collection of files, and to manage them effectively, we came up with the following 4-step procedure: - -1. [Download and structure](/docs/scos/dev/legacy-demoshop/{{page.version}}/download-and-structure.html): get external dependencies and put assets into the corresponding folders; -2. [Development tools](/docs/scos/dev/sdk/development-tools/development-tools.html): create your project front-end; -3. [Transpile/build and optimization](/docs/scos/dev/legacy-demoshop/{{page.version}}/build-and-optimization.html): manipulate and optimize assets; -4. [Public folder](/docs/scos/dev/legacy-demoshop/{{page.version}}/public-folder.html): place built output into a public and accessible folder. - -We use the following path aliases to help you dive into the assets docs: - -* `@project`: your project root folder; -* `@core`: Spryker core folder, usually (but not necessary) `@project/vendor/spryker`. -  diff --git a/docs/scos/dev/legacy-demoshop/201811.0/build-and-optimization.md b/docs/scos/dev/legacy-demoshop/201811.0/build-and-optimization.md deleted file mode 100644 index 767073c7c2f..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/build-and-optimization.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Build and Optimization -description: We use Webpack and Oryx for transpiling/building the assets and to optimize the resulting output. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/build-optimization -originalArticleId: fddbda3d-9fa6-41a2-adde-968a03a1c6b4 -redirect_from: - - /2021080/docs/build-optimization - - /2021080/docs/en/build-optimization - - /docs/build-optimization - - /docs/en/build-optimization - - /v6/docs/build-optimization - - /v6/docs/en/build-optimization - - /v5/docs/build-optimization - - /v5/docs/en/build-optimization - - /v4/docs/build-optimization - - /v4/docs/en/build-optimization - - /v3/docs/build-optimization - - /v3/docs/en/build-optimization - - /v2/docs/build-optimization - - /v2/docs/en/build-optimization - - /v1/docs/build-optimization - - /v1/docs/en/build-optimization ---- - -We use [Webpack](https://webpack.js.org/) and [Oryx](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) for transpiling/building the assets and to optimize the resulting output. - -For more on **Webpack** build process and requirements see: - -* [Key Concepts](https://webpack.js.org/concepts/) -* [Getting started](https://webpack.js.org/guides/getting-started/) - * Using a Configuration -* [Configuration Details](https://webpack.js.org/configuration/) - -Learn more about Spryker **Oryx** frontend helper: - -* [Oryx documentation](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) -* [Oryx for Zed documentation](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) - -## Automatic loading for Webpack Entry Points - [Oryx's globbing system](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html), enables Webpack to automatically find and load entry points. - -### Yves -On a project level, you can pass your own entry points directly in the Webpack configuration. We recommend also using `theoryx.find()` API to import any Yves related code. This way, you will get every frontend feature developed in the core (for example, payments method UI). - -```php -const settings = { - entry: { - dirs: [path.resolve('vendor/spryker')], - patterns: ['**/Yves/**/*.entry.js'], - defineName: p => path.basename(p, '.entry.js'), - description: 'looking for entry points...' - } -}; - -const webpackConfiguration = { - // ... - entry: oryx.find(settings.entry, { - 'your-entry-name': '/path/to/your/entry/point.js' - }), - // ... -}; -``` - -`**/Yves/**/*.entry.js` is the default pattern for Yves automatic inclusion: every filename endings with `.entry.js` and contained in a parent folder called Yves will be included by webpack into the build process. - -### Zed -Zed frontend is fully managed by Oryx for Zed. It relies on the `oryx.find()` API to automatically globb the entry point files across the project. - -To add or change entry points in Zed, [extend the Oryx for Zed Webpack configuration](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html). - -For more about Zed assets management: - -* [Oryx globbing system](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) -* [Oryx for Zed API](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) diff --git a/docs/scos/dev/legacy-demoshop/201811.0/demoshop-guide.md b/docs/scos/dev/legacy-demoshop/201811.0/demoshop-guide.md deleted file mode 100644 index cf4a9a6623c..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/demoshop-guide.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Demoshop Guide -description: This article provides information on the demoshop frontend installation. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/demoshop-guide -originalArticleId: a22c9287-1f00-4c75-affc-99f524458258 -redirect_from: - - /2021080/docs/demoshop-guide - - /2021080/docs/en/demoshop-guide - - /docs/demoshop-guide - - /docs/en/demoshop-guide - - /v6/docs/demoshop-guide - - /v6/docs/en/demoshop-guide - - /v5/docs/demoshop-guide - - /v5/docs/en/demoshop-guide - - /v4/docs/demoshop-guide - - /v4/docs/en/demoshop-guide - - /v3/docs/demoshop-guide - - /v3/docs/en/demoshop-guide - - /v2/docs/demoshop-guide - - /v2/docs/en/demoshop-guide - - /v1/docs/demoshop-guide - - /v1/docs/en/demoshop-guide ---- - -## Bootstrap the project -To install all frontend the external dependecies for Yves and Zed, run in the VM console: -`cd /path/to/project/root` -`./setup -i` - -### Yves -To build assets for Yves, run in the console: - -```bash -cd /path/to/project/root -npm run yves # build assets in development mode -npm run yves:watch # build assets in development mode with watchers over the code -npm run yves:production # build assets in production mode -npm run yves:stylelint # helps you avoid errors and enforce conventions in your SCSS -npm run yves:tslint # helps you avoid errors and enforce conventions in your Typescript -``` - -{% info_block infoBox "Inside and outside the VM" %} -You can run these scripts inside and outside the VM. Run them outside the VM if you want to improve the build performance and the watchers speed. To use npm commands outside the VM, you need to download and install [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Minimum versions for Node.js is 8.x and for npm - 5.x. Maximum version for Node.js is the one [Recommended for Most Users](https://nodejs.org/en/). -{% endinfo_block %} - -### Zed -To build assets for Zed, run in the console: - -```bash -cd /path/to/project/root -npm run zed # build assets in development mode -npm run zed:watch # build assets in development mode with watchers over the code -npm run zed:production # build assets in production mode -``` - -{% info_block infoBox "Inside and outside the VM" %} -You can run these scripts inside and outside the VM. Run them outside the VM if you want to improve the build performance and the watchers speed. To use npm commands outside of the VM, you need to download and install [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Minimum versions for Node.js is 8.x and for npm - 5.x. Maximum version for Node.js is the one [Recommended for Most Users](https://nodejs.org/en/). -{% endinfo_block %} - -### Custom scripts -If you need to add or change the scripts, open the `@project/package.json` manifest file and change the related section: - -```bash -"scripts": { - "yves": "node ./frontend/build development", - "yves:watch": "node ./frontend/build development-watch", - "yves:production": "node ./frontend/build production", - "yves:help": "node ./frontend/libs/command-line-parser --help", - "yves:stylelint": "NODE_ENV=development node ./frontend/libs/stylelint development", - "yves:tslint": "node ./frontend/libs/tslint", - "zed": "node ./node_modules/@spryker/oryx-for-zed/build", - "zed:watch": "node ./node_modules/@spryker/oryx-for-zed/build --dev", - "zed:production": "node ./node_modules/@spryker/oryx-for-zed/build --prod" -} -``` diff --git a/docs/scos/dev/legacy-demoshop/201811.0/development.md b/docs/scos/dev/legacy-demoshop/201811.0/development.md deleted file mode 100644 index c394cf8558f..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/development.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Development -description: Development refers to writing your own assets, consuming external dependencies and linking resources to make them work together. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/development-for-legacy-demoshop -originalArticleId: a26e40cc-5a4f-410a-a475-dba6a8356ff8 -redirect_from: - - /2021080/docs/development-for-legacy-demoshop - - /2021080/docs/en/development-for-legacy-demoshop - - /docs/development-for-legacy-demoshop - - /docs/en/development-for-legacy-demoshop - - /v6/docs/development-for-legacy-demoshop - - /v6/docs/en/development-for-legacy-demoshop - - /v5/docs/development-for-legacy-demoshop - - /v5/docs/en/development-for-legacy-demoshop - - /v4/docs/development-for-legacy-demoshop - - /v4/docs/en/development-for-legacy-demoshop - - /v3/docs/development-for-legacy-demoshop - - /v3/docs/en/development-for-legacy-demoshop - - /v2/docs/development-for-legacy-demoshop - - /v2/docs/en/development-for-legacy-demoshop - - /v1/docs/development-for-legacy-demoshop - - /v1/docs/en/development-for-legacy-demoshop - - /docs/scos/dev/sdk/202009.0/development.html - - /docs/scos/dev/sdk/202005.0/development.html - - /docs/scos/dev/sdk/202001.0/development.html - - /docs/scos/dev/sdk/201907.0/development.html - - /docs/scos/dev/sdk/201903.0/development.html ---- - -Development refers to writing your own assets, consuming external dependencies and linking resources to make them work together. - -Essentially, the code you’re going to produce can be html, css and javascript (in any of their forms: jade, sass, less, coffescript, ecma 6, react js, etc.). - -## CommonJS -We decided to adopt **CommonJS** as the default development specification for `javascript` files. You can read more about it in the [CommonJS](https://addyosmani.com/resources/essentialjsdesignpatterns/book/#detailcommonjs) documentation. - -While it’s mandatory for Zed, we recommend to adopt it also for Yves. - -The code below is a CommonJS module example: - -```php -'use strict'; - -// dependencies -var externalDep = require('external-module'); -var localDep = require('./local/module'); - -// module internal variables -var privateVariable = 'I am private'; - -// module internal function -function privateFunction(){ - // implemetation -} - -// module.exports exposes its content ouside the module -// making it accessible for other modules -module.export = { - publicProperty: 'Hello Spryker', - publicFunction: function(){ - // implementation - } -}; -``` - -With this approach, you can directly include every module (external/local) that you need, and expose publicly only the functions and the properties you want to. Each module has its own scope, so nothing goes global. - -As far as this approach has been designed to use javascript on server side (Node.js), commands like `require`, `module` or `export` are reserved words not naturally available in browsers’ vanilla javascript. To use them, you need to add a library or a pre-compiling tool capable of interpreting them. - -For this reason, we rely on [Oryx](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html). diff --git a/docs/scos/dev/legacy-demoshop/201811.0/download-and-structure.md b/docs/scos/dev/legacy-demoshop/201811.0/download-and-structure.md deleted file mode 100644 index 33ba6196b32..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/download-and-structure.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Download and Structure -description: Here you will find out how to download external dependencies and where to place them, together with your own asset files. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/download-structure -originalArticleId: d3f609fa-66c9-4727-bbaa-5c532e6fd356 -redirect_from: - - /2021080/docs/download-structure - - /2021080/docs/en/download-structure - - /docs/download-structure - - /docs/en/download-structure - - /v6/docs/download-structure - - /v6/docs/en/download-structure - - /v5/docs/download-structure - - /v5/docs/en/download-structure - - /v4/docs/download-structure - - /v4/docs/en/download-structure - - /v3/docs/download-structure - - /v3/docs/en/download-structure - - /v2/docs/download-structure - - /v2/docs/en/download-structure - - /v1/docs/download-structure - - /v1/docs/en/download-structure ---- - -Here you will find out how to download external dependencies and where to place them, together with your own asset files. - -{% info_block warningBox %} - -This page contains references to the following tools: [Webpack](https://webpack.js.org/), [Oryx](/docs/scos/dev/front-end-development/{{page.version}}/zed/oryx-builder-overview-and-setup.html) (Our frontend helper tool)and Oryx for Zed (Zed's frontend full automation tool). Make sure you are familiar with these tools before continuing. - -{% endinfo_block %} - -## Yves -Yves UI must be implemented on project level. - -### Dependencies -You can use the package manager that you prefer, but we strongly recommend to use `npm` or `yarn`. - -### Creating/extending Yves -Yves come with themes: they are basically UI dresses. -You can create a new theme by creating a folder under `@project/assets/Yves` and placing your assets there. - -Change the `@project/package.json` manifest file to manage all external dependencies. - -``` -npm install --save jquery bootstrap font-awesome # add yves direct dependencies -npm install --save-dev sass-loader node-sass # add build dev dependencies -``` - -## Zed -Zed UI can be extended on a project level. - -### Core Dependencies -Each module that implements a UI may have external dependencies. They are declared in the corrisponding `@core//assets/Zed/pakage.json` manifest file. **Do not change this file** as it’s part of a core module. If you want to add a new dependency to Zed, see the [Download External Dependencies](/docs/scos/dev/legacy-demoshop/{{page.version}}/download-and-structure.html#core-dependencies) section. - -To download the module dependencies, you can use the package manager that you prefer, but we strongly recommend to use `npm` or `yarn`. - -They will be eventually stored under the `@core//assets/Zed/node_modules` folder. - -### Extending Zed -Zed has one theme only. - -You can extend the Zed UI by creating `@project/assets.zed` and place your assets in there. Use `oryx-for-zed` to include and manage your code. - -{% info_block infoBox "Gui module as default UI provider:" %} -Gui module manages all the dependencies needed in Zed. It provides the base structure for every module that implements a UI, and Zed Antelope configuration. **Be sure you have it in your project, otherwise Zed UI will not be available**. -{% endinfo_block %} - -### Download External Dependencies -The best way to download all the external dependencies is by using `./setup -i|-zed`: - -``` -cd /path/to/your/project-root -./setup -i -``` - -Otherwise, use `npm` or `yarn`: - -``` -cd /path/to/your/project-root -npm install -``` - -``` -cd /path/to/gui/module -npm install -``` - -``` -cd /path/to/another/module -npm install -``` diff --git a/docs/scos/dev/legacy-demoshop/201811.0/frontend-overview.md b/docs/scos/dev/legacy-demoshop/201811.0/frontend-overview.md deleted file mode 100644 index 01597ca7756..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/frontend-overview.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Frontend Overview -description: This article provides an overview of frontend and assets. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/frontend-overview -originalArticleId: fa3424cc-94c7-4fd7-8a18-9351bb6e072d -redirect_from: - - /2021080/docs/frontend-overview - - /2021080/docs/en/frontend-overview - - /docs/frontend-overview - - /docs/en/frontend-overview - - /v6/docs/frontend-overview - - /v6/docs/en/frontend-overview - - /v5/docs/frontend-overview - - /v5/docs/en/frontend-overview - - /v4/docs/frontend-overview - - /v4/docs/en/frontend-overview - - /v3/docs/frontend-overview - - /v3/docs/en/frontend-overview - - /v2/docs/frontend-overview - - /v2/docs/en/frontend-overview - - /v1/docs/frontend-overview - - /v1/docs/en/frontend-overview ---- - -To learn how to build your assets in our Demoshop, see [Demoshop Guide](/docs/scos/dev/legacy-demoshop/{{page.version}}/demoshop-guide.html). - -## Asset Management -A set of resources used to build the UI, that includes html, css (or less, sass, stylus, etc.) and js (or jsx, etc.) files, images, fonts and so on. - -Assets are files, a large collection of files; a solution to manage them it’s crucial. - -We point out 4 different steps to achieve this: - -1. [download and structure](/docs/scos/dev/legacy-demoshop/{{page.version}}/download-and-structure.html): get external dependencies and put assets into the corresponding folders; -2. [development tools](/docs/scos/dev/sdk/development-tools/development-tools.html): create your frontend; -3. [transpile/build and optimization](/docs/scos/dev/legacy-demoshop/{{page.version}}/build-and-optimization.html): manipulate and optimize assets; -4. [public folder](/docs/scos/dev/legacy-demoshop/{{page.version}}/public-folder.html): place built output into a public and accessible folder. - -### Legend -We will use path aliases to help you dive into the assets docs: - -* `@project`: your project root folder; -* `@core`: Spryker core folder, usually (but not necessary) `@project/vendor/spryker`. diff --git a/docs/scos/dev/legacy-demoshop/201811.0/public-folder.md b/docs/scos/dev/legacy-demoshop/201811.0/public-folder.md deleted file mode 100644 index 87d3432955c..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/public-folder.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Public Folder -description: To publish means to place the built assets in a place where they can be accessed and loaded by the browser. In the whole project, the only place with such access rights is the @project/public folder. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/public-folder -originalArticleId: 8ade5d89-f24e-4be9-857b-57be90344e48 -redirect_from: - - /2021080/docs/public-folder - - /2021080/docs/en/public-folder - - /docs/public-folder - - /docs/en/public-folder - - /v6/docs/public-folder - - /v6/docs/en/public-folder - - /v5/docs/public-folder - - /v5/docs/en/public-folder - - /v4/docs/public-folder - - /v4/docs/en/public-folder - - /v3/docs/public-folder - - /v3/docs/en/public-folder - - /v2/docs/public-folder - - /v2/docs/en/public-folder - - /v1/docs/public-folder - - /v1/docs/en/public-folder ---- - -To publish means to place the built assets in a place where they can be accessed and loaded by the browser. - -In the whole project, the only place with such access rights is the `@project/public` folder. - -## Application Folders - -* `@project/public/Yves` -* `@project/public/Zed` - -These folders contain only application-related public files. - -Each file is directly accessible from the browser by using the `/. path`. - -{% info_block errorBox %} -Do not add any files here as they will not be accessible. -{% endinfo_block %} - -Due to strict nginx configuration, only the content that already exists is public. - -## Assets Dedicated Folders - -* `@project/public/Yves/assets` -* `@project/public/Zed/assets` - -These folders can contain any file that needs to be accessed and loaded by the browser. Contents can be addressed by using the `/assets//.` path. Assets must be placed here. - -{% info_block infoBox "Yves Themes Folders" %} - -To avoid conflicts and incorrect behaviour in Yves UI, create a subfolder (`@project/public/Yves/assets/`) for each theme you have in your project, and place the related files there. - -{% endinfo_block %} diff --git a/docs/scos/dev/legacy-demoshop/201811.0/set-up-a-hello-world-queue-legacy-demoshop.md b/docs/scos/dev/legacy-demoshop/201811.0/set-up-a-hello-world-queue-legacy-demoshop.md deleted file mode 100644 index 8db3123ac81..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/set-up-a-hello-world-queue-legacy-demoshop.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Tutorial - Set Up a Hello World Queue - Legacy Demoshop -description: The tutorial describes how to create a simple queue and send or receive messages to or from the queue with some content. -last_updated: Sep 27, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v4/docs/setup-hello-world-queue -originalArticleId: d6331bbd-89a2-4e5c-9c24-4d0770d4d8ce -redirect_from: - - /v4/docs/setup-hello-world-queue - - /v4/docs/en/setup-hello-world-queue - - /v3/docs/setup-hello-world-queue - - /v3/docs/en/setup-hello-world-queue - - /v2/docs/setup-hello-world-queue - - /v2/docs/en/setup-hello-world-queue - - /v1/docs/setup-hello-world-queue - - /v1/docs/en/setup-hello-world-queue -related: - - title: Migration Guide - RabbitMQ - link: docs/scos/dev/module-migration-guides/migration-guide-rabbitmq.html ---- - -This tutorial demonstrates a simple `Hello, World` queue use case. You will create a `hello` queue and send/receive your messages to/from this queue with `Hello, World` content. - -For this purpose, you will use the default queue engine RabbitMQ. - -## Preparation - -Before you begin, check to see that the management UI and the RabbitMQ adapter are installed and working: - -### RabbitMQ Management UI - -The management UI is used for managing queues in the RabbitMQ UI therefore, we need to add Admin permissions: - -To add admin permissions, take the following steps: - -1. Go to the RabbitMQ management UI: `https://zed.mysprykershop.com:15672/` and log in. -2. Go to the **Admin** tab, and from the **user** table, under **All users**, select **admin**. -3. From **Virtual Host** select **/DE_development_zed** (for other stores, it might be different). -4. Click **Set permission**. The new permission appears in the table. - -![Add Admin Permissions](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Set+up+Hello+World+Queue/rabbitmq_admin.png) - -![Permissions](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Set+up+Hello+World+Queue/rabbitmq_permission.png) - -{% info_block infoBox "Note" %} - -If you are working with different virtual hosts, you need to add them as well. - -{% endinfo_block %} - -### RabbitMQ adapter - -The `Queue` module needs at least one queue adapter. - -To check if the RabbitMQ adapter is already registered in the Queue module, in the Demoshop, open `\Pyz\Client\Queue\QueueDependencyProvider` and `check/add` the RabbitMQ adapter inside `createQueueAdapters()`: - -**Example:** - -```php - protected function createQueueAdapters(Container $container) - { - return [ - $container->getLocator()->rabbitMq()->client()->createQueueAdapter(), - ]; - } -``` - -## Creating a simple queue - -Before sending messages to the `hello` queue, first, configure the Queue Adapter and then add queue configuration to RabbitMQ. - -{% info_block infoBox "Note" %} - -You can skip this part if you want to use the default queue adapter: `$config[QueueConstants::QUEUE_ADAPTER_CONFIGURATION_DEFAULT]`. - -{% endinfo_block %} - -### Defining the Queue Adapter - -As mentioned, you can have different queue adapters for different queues. In this example, you configure your hello queue to work with the RabbitMQ adapter. - -To configure a queue work with a queue adapter, add the following lines to `config_default.php`: - -```php - [ - QueueConfig::CONFIG_QUEUE_ADAPTER => \Spryker\Client\RabbitMq\Model\RabbitMqAdapter::class, - ], -]; -``` - -### Adding queue configuration to RabbitMQ - -The next step is to extend `\Pyz\Client\RabbitMq\RabbitMqConfig`: -1. In your project, create a new method to handle the hello queue configuration. -2. Add the new method to `getQueueConfiguration()`. - -**Code sample** - -```php - protected function getQueueConfiguration(): array - { - return array_merge( - [ - EventConstants::EVENT_QUEUE => [ - EventConfig::EVENT_ROUTING_KEY_RETRY => EventConstants::EVENT_QUEUE_RETRY, - EventConfig::EVENT_ROUTING_KEY_ERROR => EventConstants::EVENT_QUEUE_ERROR, - ], - $this->get(LogConstants::LOG_QUEUE_NAME), - ], - $this->getPublishQueueConfiguration(), - $this->getSynchronizationQueueConfiguration(), - $this->getHelloWorldQueueConfiguration(), - ); - } - - protected function getHelloWorldQueueConfiguration(): array - { - return [ - 'hello', - ]; - } -``` - - {% info_block infoBox "Note" %} - - Whe do you need Exchanges? In RabbitMQ, messages are sent to Exchanges, which have different types of routing. Exchanges route messages to an appropriate queue or multiple queues (zero or more). - - {% endinfo_block %} - - The following image shows how the RabbitMQ exchange and queue work together. - -![RabbitMQ exchange](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Set+up+Hello+World+Queue/rabbitmq_exchange.png) - - You can find more information about Exchange and Routing at: https://www.rabbitmq.com/tutorials/tutorial-four-php.html. - -{% info_block infoBox "Note" %} - -Your queue configuration is ready. Once you send your first message, the queue is created. - -{% endinfo_block %} - -## Sending messages - -You are almost done with all queue preparation and configuration. It’s time to see some actions. Here you want to send one message to our queue and check if this message is there. - -{% info_block infoBox "Using clients" %} - -It is assumed that you already know how to use a client in the Controller classes, but you can also check other tutorials or the Demoshop codebase. - -{% endinfo_block %} - -To send a message to a queue, do the following: - -1. Place a trigger to the queue API by creating a simple `controller/action` in the Demoshop. - This code creates a `QueueSendMessageTransfer` and sets `Hello, World` into the body of the message. - -2. To set the trigger, call `QueueClient::sendMessage()`. - -**Code sample** - -```php - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * - * @return array - */ - public function sendAction(Request $request): array - { - $queueSendTransfer = (new QueueSendMessageTransfer())->setBody('Hello, World!'); - - $queueClient = $this->getFactory()->getQueueClient(); - $queueClient->sendMessage('hello', $queueSendTransfer); - - return [ - 'success' => true - ]; - } -``` - -Next, we call the action. - -To call an action, take the following steps: - -1. Open a browser and call the following URL `https://mysprykershop.com/queue/send`. -2. Check the RabbitMQ management UI `http://zed.de.project.local:15672/#/queues` to see if the hello queue is created and there is a message in there. - -![RabbitMQ creation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Set+up+Hello+World+Queue/rabbitmq_creation.png) - -**Result**: The hello queue is created and one message with `Hello, World!` inside is sent. - -## Receiving messages - -To receive messages, create another action for receiving messages from the `hello` queue. - -To create another action for receiving a message from the `hello` queue: - -**Code sample** - -```php - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * - * @return array - */ - public function receiveAction(Request $request): array - { - - $queueClient = $this->getFactory()->getQueueClient(); - - $queueReceiveMessageTransfer = $queueClient->receiveMessage('hello', $this->createReceiverOption()); - - return [ - 'message' => $queueReceiveMessageTransfer->getQueueMessage()->getBody(), - 'success' => true - ]; - } - - /** - * @return array - */ - protected function createReceiverOption() - { - $rabbitmqReceiveOptionTransfer = new RabbitMqConsumerOptionTransfer(); - /* this prevents the queue to delete the message until we send the `acknowledging` */ - $rabbitmqReceiveOptionTransfer->setNoAck(false); - - return [ - 'rabbitmq' => $rabbitmqReceiveOptionTransfer - ]; - } -``` - -Result: you should see this: - -![Receiving messages](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Set+up+Hello+World+Queue/rabbitmq_receive.png) - -Open a browser and call the following URL `https://mysprykershop.com/queue/receive`. - -## Advanced topics -This instruction demonstrates how to work with a simple queue and perform simple send and receive actions on it. However, these actions can be automated to help developers focus on business logic. To automate the queue, you can use Spryker’s Task and Worker to provide flexibility and freedom when managing queues. This chapter includes three parts. Parts one and two demonstrate Task and Plugin which bind together and the third part describes background processes and task management. - -### Running a queue task -The `Queue` module provides specific commands for listening to queues, fetching messages, and triggering registered processors. Running this command lets you see what messages the queue is going to consume and pass to the plugins. The command syntax is as follows: - -```bash -/vendor/bin/console queue:task:start -``` diff --git a/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/best-practices-twig-templates.md b/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/best-practices-twig-templates.md deleted file mode 100644 index 84d84f727b0..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/best-practices-twig-templates.md +++ /dev/null @@ -1,284 +0,0 @@ ---- -title: Best Practices - Twig Templates -description: In this article, you get an overview of the best practices used in twig templates. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/twig-best-practices -originalArticleId: 7a2dfb30-156f-4d93-89eb-edfa015ad440 -redirect_from: - - /2021080/docs/twig-best-practices - - /2021080/docs/en/twig-best-practices - - /docs/twig-best-practices - - /docs/en/twig-best-practices - - /v6/docs/twig-best-practices - - /v6/docs/en/twig-best-practices - - /v5/docs/twig-best-practices - - /v5/docs/en/twig-best-practices - - /v4/docs/twig-best-practices - - /v4/docs/en/twig-best-practices - - /v3/docs/twig-best-practices - - /v3/docs/en/twig-best-practices - - /v2/docs/twig-best-practices - - /v2/docs/en/twig-best-practices - - /v1/docs/twig-best-practices - - /v1/docs/en/twig-best-practices ---- - -## Include vs Macros vs Embed - -With includes, you can include an entire template. The template has access to any template variables that are currently in scope. - -With macros, you are defining a kind of function within Twig that can render a particular component given appropriate objects. - -So you could have a macro for rendering, for example, a shopping list which takes a list as a parameter - and you could then reuse this macro. - -Variables that are not explicitly passed into the macro, won’t be within scope in that macro. - -Do not confuse macros with Twig functions; twig functions can access other application logic, not just the data that’s passed into the templates. - -A macro should really do one specific task to take some data and render a reusable component. An include can comprise any chunk of things - it’s a lot more up to you. - -The extensible nature of the way Twig templates work means that you are likely to use includes less, by design - but there can still be use cases where it will be the easiest way to avoid duplication in your templates. - -You may use embed when you need to extend a portion from the included file. - -| Tag | When to Use | -| --- | --- | -| `include` | Used to define common parts in the page, such as header, sidebar, etc. that are extracted for to increase readability and reusability. | -| `macro` | Used to define functions related to the view, such as pagination. Reusable markup across other templates. | -| `embed` | If you need to overwrite some blocks of the included template, use embed. If you don’t need to overwrite blocks, use include. It will do the same in a faster way. | - -## How to Create a Page in Zed -To create a new page in Zed, you need to create a new twig file that extends the `@Gui/Layout/layout.twig` main template and then extend the content block. Next, you can add your content inside content block. - -```php -{% raw %}{%{% endraw %} extends '@Gui/Layout/layout.twig' {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - - ... add your code here ... - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -{% info_block errorBox %} -We strongly recommend displaying page elements in widgets as in the next example. -{% endinfo_block %} - -## How to Add Multiple Elements (Widgets) in Pages -To keep the same format of pages and in order for all to look the same on the project, we provide the widgets templates that can be used and can be extended from every page layout: - -```php -{% raw %}{%{% endraw %} embed '@Gui/Partials/widget.twig' {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block widget_content {% raw %}%}{% endraw %} - - ... add here page content (forms, tables, texts, etc) ... - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -``` - -By using widget templates, you have the advantage that you can overwrite elements in the widget that you cannot with normal include. A full example can be seen below: - -```php -{% raw %}{%{% endraw %} embed '@Gui/Partials/widget.twig' with { widget_title: 'My new page element', row_class: 'widget-class', row_id: 'widget-id' } {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block widget_header_content {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} 'View Order' | trans {% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block widget_content {% raw %}%}{% endraw %} - - {% raw %}{{{% endraw %} form_start(form) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} form_widget(form) {% raw %}}}{% endraw %} - - - {% raw %}{{{% endraw %} form_end(form) {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -``` - -## How to Add Forms -Spryker Commerce OS uses Symfony forms which are defined in PHP classes; in the twig templates we usually need few lines of code to render them: - -```php -{% raw %}{{{% endraw %} form_start(form) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} form_widget(form) {% raw %}}}{% endraw %} - - -{% raw %}{{{% endraw %} form_end(form) {% raw %}}}{% endraw %} -``` - -{% info_block errorBox %} - -We strongly recommend defining the form action buttons (like submit) in twig templates and not in the php form classes. Doing this, it’s much easier to extend the forms and to include forms in other forms. - -{% endinfo_block %} - -## How to Add Tables Using DataTables -The first step to display tables in a template is to add one line of code inside a widget element (``): - -```php -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} embed '@Gui/Partials/widget.twig' {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block widget_content {% raw %}%}{% endraw %} - - {% raw %}{{{% endraw %} customerTable | raw {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -Next step is to add support in your controller; add one controller action for retrieving the data table and one for having pagination support in your table. - -```php -getFactory()->createCustomerTable(); - - return $this->viewResponse([ - 'customerTable' => $table->render(), - ]); - } - - public function tableAction() - { - $table = $this->getFactory()->createCustomerTable(); - - return $this->jsonResponse($table->fetchData()); - } -} -``` - -## How to Add Navigation Buttons in Zed -In the main Zed layout `@Gui/Layout/layout.twig` you will find the empty action block which is used as a navigation menu between the module’s pages. - -To add new URLs, you’ll have to extend this block and add the necessary buttons by using one of the 5 twig helper functions: `{back|create|edit|view|remove}ActionButton`. - -Each of these buttons will accept three parameters: `$url, $title, array $options = []`. - -```php -{% raw %}{%{% endraw %} block action {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} backActionButton($backUrl, $backTitleLabel) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} createActionButton($createUrl, 'Create' | trans}) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} editActionButton('/edit/id=' ~ entity.id, 'Edit Element' | tran) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} viewActionButton('/view/id=' ~ entity.id, 'View Element' | trans) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} removeActionButton('/remove/id=' ~ entity.id, 'Remove Element' | trans) {% raw %}}}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -If you want to add id or class attributes to a button, just add them as a third parameter, as in the example below: - -```php -{% raw %}{{{% endraw %} createActionButton('/my/url', 'Create' | trans, { id: 'create-action', -class: 'create-event-listener' }) {% raw %}}}{% endraw %} -``` - -## How to Add Buttons to a Table -This example refers to the case when you render a table in Zed without datatables. - -For the table button, you also have 5 twig helper functions: `{back|create|edit|view|remove}TableButton`. - -```php - - {% raw %}{{{% endraw %} backTableButton($backUrl, $backTitleLabel) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} createTableButton($createUrl, 'Create' | trans}) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} editTableButton('/edit/id=' ~ entity.id, 'Edit Element' | tran) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} viewTableButton('/view/id=' ~ entity.id, 'View Element' | trans) {% raw %}}}{% endraw %} - {% raw %}{{{% endraw %} removeTableButton('/remove/id=' ~ entity.id, 'Remove Element' | trans) {% raw %}}}{% endraw %} - -``` - -{% info_block warningBox %} -Table buttons will have the same layout and functionality as action buttons, except their size will be smaller. -{% endinfo_block %} - -## How to Include Javascript Logic and Custom Styles in Pages -In the bundles in Zed, you can find the assets folder where the Javascript and Sass files are stored. Each assets folder must have an entry point (js file) so that webpack knows how to compile the required files. - -``` -assets - Zed - js - modules - main.js - spryker-zed-bundle_name-main.entry.js - sass - main.scss -``` - -The entry point file requires the `main.je` file which loads the other required Javascript and SASS files. - -### spryker-zed-bundle_name-main.entry.js - -```javascrit -'use strict'; - -require('./modules/main.js'); -``` - -### main.js - -```javascript -'use strict'; - -require('ZedGui'); -require('./custom/logic'); // requires ./custom/logic.js file -require('../../sass/main.scss'); -``` - -After you add the module specific assets files, you need to include them in the twig files where they are needed. - -``` - - -{% raw %}{%{% endraw %} block footer_js {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -And for CSS - -``` - - -{% raw %}{%{% endraw %} block head_css {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -{% info_block warningBox %} - -Always add `{% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %}` inside CSS and Javascript extended blocks to keep the block content from the parent’s layout.) - -{% endinfo_block %} - -{% info_block warningBox %} -Not using parent will replace the content of the blocks instead of appending. -{% endinfo_block %} - -## How to Render an URL from a Template View -To render another page from a twig layout you will use `render(url())` functions: - -``` -{% raw %}{{{% endraw %} render(url('/url/to/my/page')) {% raw %}}}{% endraw %} -``` - -{% info_block warningBox %} -Don’t forget to pass the request as a parameter. -{% endinfo_block %} diff --git a/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.md b/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.md deleted file mode 100644 index 099593aa0bf..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Overview - Twig -description: Given that we are working on a web application, we need a proper way to generate HTML dynamically. The most common approach relies on templates and for this we decided to go with Twig Template Engine. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/twig-overview -originalArticleId: 1a1c22b7-2b3b-45fe-a51b-638ff5614114 -redirect_from: - - /2021080/docs/twig-overview - - /2021080/docs/en/twig-overview - - /docs/twig-overview - - /docs/en/twig-overview - - /v6/docs/twig-overview - - /v6/docs/en/twig-overview - - /v5/docs/twig-overview - - /v5/docs/en/twig-overview - - /v4/docs/twig-overview - - /v4/docs/en/twig-overview - - /v3/docs/twig-overview - - /v3/docs/en/twig-overview - - /v2/docs/twig-overview - - /v2/docs/en/twig-overview - - /v1/docs/twig-overview - - /v1/docs/en/twig-overview ---- - -Given that we are working on a web application, we need a proper way to generate HTML dynamically. The most common approach relies on templates and for this we decided to go with Twig Template Engine. - -{% info_block infoBox %} -You can use other technology for the front-end of your application as well; this is just a recommendation and this is what we used for building Demoshop's front-end. -{% endinfo_block %} - -**Typical twig layout template** - -```html - - - - {% raw %}{{{% endraw %} page_title {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} block header_css {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - -

{% raw %}{{{% endraw %} page_title {% raw %}}}{% endraw %}

- - - -
- {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} -
-
- {% raw %}{%{% endraw %} include 'partial/sidebar.twig' {% raw %}%}{% endraw %} -
-
- {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} - {# This block should always come from the page template - which extends this layout file. #} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -
-
- {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} block footer_js {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - -``` - -For more information, see [Best Practices - Twig Templates](/docs/scos/dev/legacy-demoshop/{{page.version}}/twig-templates/best-practices-twig-templates.html). - -## Markup Tags - -Twig has 3 specific markup tags: - -1. comment tag -2. print tag -3. block tag - -### Comment tag -When using the comment tag, the content is not rendered to the output HTML. - -```bash -{# comments are not rendered #} - -{# comments -can be -on multiple lines -as well -#} -``` - -### Print tag - -Prints the given expression similar to new EventQueueMessageProcessorPlugin(), - ]; - } -} -``` - -## 3. Activate cron jobs -Add the following jobs to `jobs.php`: - -config/Zed/cronjobs/jobs.php - -```php -$jobs[] = [ -'name' => 'queue-worker-start', -'command' => '$PHP_BIN vendor/bin/console queue:worker:start -vvv', -'schedule' => '* * * * *', -'enable' => true, -'run_on_non_production' => true, -'stores' => $allStores, -]; - -$jobs[] = [ -'name' => 'event-trigger-timeout', -'command' => '$PHP_BIN vendor/bin/console event:trigger:timeout -vvv', -'schedule' => '*/5 * * * *', -'enable' => true, -'run_on_non_production' => true, -'stores' => $allStores, -]; -``` - -Then restart Jenkins: - -```bash -vendor/bin/console setup:jenkins:generate -``` - -## 4. Adjust Config -We need to enable event behavior in config_default.php - -```php -// ---------- EventBehavior -$config[EventBehaviorConstants::EVENT_BEHAVIOR_TRIGGERING_ACTIVE] = true; -``` - -## 5. Adjust Zed -Add `EventBehaviorServiceProvider` to all the `ServiceProviders` methods in `ApplicationDependencyProvider.php`: - -src/Pyz/Zed/Application/ApplicationDependencyProvider.php - -```php -namespace Pyz\Zed\Application; - -use Spryker\Zed\EventBehavior\Communication\Plugin\ServiceProvider\EventBehaviorServiceProvider; - -class ApplicationDependencyProvider extends SprykerApplicationDependencyProvider -{ - protected function getServiceProviders(Container $container) - { - ... - $providers = [ - // Add Auth service providers - ... - new EventBehaviorServiceProvider(), - ]; - ... -``` - -## 6. Adjust Console -Add `EventBehaviorPostHookPlugin` to the `getConsolePostRunHookPlugins()` method in `ConsoleDependencyProvider.php`: - -src/Pyz/Zed/Console/ConsoleDependencyProvider.php - -```php -namespace Pyz\Zed\Console; - -use Spryker\Zed\EventBehavior\Communication\Plugin\Console\EventBehaviorPostHookPlugin; - -class ConsoleDependencyProvider extends SprykerConsoleDependencyProvider -{ - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return array - */ - public function getConsolePostRunHookPlugins(Container $container) - { - return [ - new EventBehaviorPostHookPlugin(), - ]; - } -``` - -## 7. Adjust DataImporter -Add `DataImportPublisherPlugin` and `DataImportEventBehaviorPlugin` to `Pyz\Zed\DataImport\DataImportDependencyProvider`: - -src/Pyz/Zed/DataImport/DataImportDependencyProvider.php - -```php -use Spryker\Zed\DataImport\Communication\Plugin\DataImportEventBehaviorPlugin; -use Spryker\Zed\DataImport\Communication\Plugin\DataImportPublisherPlugin; -``` - -Overwrite the core methods: - -**Code sample:** - -```php -/** -* @return array -*/ -protected function getDataImportBeforeImportHookPlugins(): array -{ - return [ - new DataImportEventBehaviorPlugin(), - ]; -} - -/** -* @return array -*/ -protected function getDataImportAfterImportHookPlugins(): array -{ - return [ - new DataImportEventBehaviorPlugin(), - new DataImportPublisherPlugin(), - ]; -} -``` - -You can find all the changes in the following branch: -https://github.com/spryker/demoshop/tree/tech/compatibility-pub-sync - -## Using Collector data with P&S features -To be able to use the data structure provided by the collectors from Redis, you need to use your own module in a compatibility mode. You can simply do this by updating the `ModuleStorageConfig::isCollectorCompatibilityMode()` method of your storage module and return true. diff --git a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.md b/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.md deleted file mode 100644 index 206740975fc..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Making the Legacy Demoshop compatible with the Atomic Frontend -description: This guide provides step-by-step instructions on how to make the Legacy Demoshop compatible with the Atomic Frontend -last_updated: Aug 27, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v6/docs/demoshop-with-atomic-frontend -originalArticleId: 820c0f4e-6678-4d99-b70d-baf98e41fdce -redirect_from: - - /v6/docs/demoshop-with-atomic-frontend - - /v6/docs/en/demoshop-with-atomic-frontend - - /v5/docs/demoshop-with-atomic-frontend - - /v5/docs/en/demoshop-with-atomic-frontend - - /v4/docs/demoshop-with-atomic-frontend - - /v4/docs/en/demoshop-with-atomic-frontend - - /v3/docs/demoshop-with-atomic-frontend - - /v3/docs/en/demoshop-with-atomic-frontend - - /v2/docs/demoshop-with-atomic-frontend - - /v2/docs/en/demoshop-with-atomic-frontend - - /v1/docs/demoshop-with-atomic-frontend - - /v1/docs/en/demoshop-with-atomic-frontend - - /docs/scos/dev/migration-and-integration/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.html -related: - - title: Twig Compatibility- Legacy Demoshop vs SCOS - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.html - - title: Making the Legacy Demoshop Compatible with the Modular Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html - - title: Making the Legacy Demoshop Compatible with Publish & Synchronize - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-publish-and-synchronize.html - - title: Setting up ShopUiCompatibility Module in the Legacy Demoshop - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html ---- - -The following guide will help migrating an existing Demoshop project to Atomic Frontend. -1. Update `assets/Yves/default/app/index.js` -Append the following lines to the end of the file: - -```js -var app = require('ShopUi/app'); -app.bootstrap(); -``` - -2. Update `assets/Yves/default/vendor.entry.js` -Remove the following lines: - -```js -// es6 promise fix (webpack 2) -require('es6-promise/auto'); -``` - -Line to add: - -```js -require('@webcomponents/webcomponentsjs/webcomponents-bundle'); -``` - -3. Update `package.json` by replacing the following sections with the lines specified below: - -**scripts** - -```js -"scripts": { - "yves": "node ./assets/Yves/default/build/build development", - "yves:watch": "node ./assets/Yves/default/build/build development-watch", - "yves:production": "node ./assets/Yves/default/build/build production", - "zed": "node ./node_modules/@spryker/oryx-for-zed/build", - "zed:dev": "node ./node_modules/@spryker/oryx-for-zed/build --dev", - "zed:prod": "node ./node_modules/@spryker/oryx-for-zed/build --prod" -} -``` - -**engines** - -```php -"engines": { - "node": ">=8.9.0", - "npm": ">=5.6.0" -} -``` - -**dependencies** - -```php -"dependencies": { - "@webcomponents/webcomponentsjs": "~2.0.2", - "core-js": "~2.5.7", - "font-awesome": "~4.7.0", - "foundation-sites": "~6.3.1", - "jquery": "~3.2.0", - "slick-carousel": "~1.6.0", - "lodash": "~4.17.2", - "motion-ui": "~1.2.2", - "jquery-bar-rating": "^1.2.2" -} -``` - -**devDependencies** - -```php -"devDependencies": { - "@spryker/oryx-for-zed": "^2.1.0", - "autoprefixer": "~8.6.2", - "clean-webpack-plugin": "~0.1.19", - "copy-webpack-plugin": "~4.5.1", - "css-loader": "~0.28.10", - "fast-glob": "~2.2.2", - "file-loader": "~1.1.11", - "mini-css-extract-plugin": "~0.4.0", - "node-sass": "~4.9.0", - "optimize-css-assets-webpack-plugin": "~4.0.2", - "postcss-loader": "~2.1.5", - "sass-loader": "~7.0.3", - "sass-resources-loader": "~1.3.3", - "ts-loader": "~4.4.1", - "typescript": "~2.9.1", - "uglifyjs-webpack-plugin": "~1.2.4", - "webpack": "~4.12.0", - "webpack-merge": "~4.1.3" -} -``` - -4. Update `src/Pyz/Yves/Application/Theme/default/layout/layout.twig`. -Add to : - -```html - - - -``` - -Add at the very bottom of the page skeleton, before `app.js` and `vendor.js`: - -```js - - - -``` - -5. Delete the `assets/Yves/default/build/` folder. -6. Download the [Migration Package](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/migration-Package.zip), unpack it and copy to your project following the folder structure of the package. -7. Replace - -```php -// define relative urls to site host (/) -const urls = { - // assets base url - assets: '/assets' -}; -``` - -with - -```php -// define relative urls to site host (/) -const urls = { - // assets base url - assets: '/assets/default' -}; -``` - -8. Run the installation script - -```php -install -s frontend -console cache:empty-all -``` diff --git a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.md b/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.md deleted file mode 100644 index fcfc05b0d33..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: Making the Legacy Demoshop compatible with the Modular Frontend -description: This guide provides step-by-step instructions on how to make the Legacy Demoshop compatible with the Modular Frontend. -last_updated: Aug 27, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v6/docs/demoshop-with-modular-frontend -originalArticleId: 967a78e6-83d2-427a-b681-fe7c81e11b39 -redirect_from: - - /v6/docs/demoshop-with-modular-frontend - - /v6/docs/en/demoshop-with-modular-frontend - - /v5/docs/demoshop-with-modular-frontend - - /v5/docs/en/demoshop-with-modular-frontend - - /v4/docs/demoshop-with-modular-frontend - - /v4/docs/en/demoshop-with-modular-frontend - - /v3/docs/demoshop-with-modular-frontend - - /v3/docs/en/demoshop-with-modular-frontend - - /v2/docs/demoshop-with-modular-frontend - - /v2/docs/en/demoshop-with-modular-frontend - - /v1/docs/demoshop-with-modular-frontend - - /v1/docs/en/demoshop-with-modular-frontend - - /docs/scos/dev/migration-and-integration/201811.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html - - /docs/scos/dev/migration-and-integration/202009.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html -related: - - title: Twig Compatibility- Legacy Demoshop vs SCOS - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.html - - title: Making the Legacy Demoshop Compatible with the Atomic Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.html - - title: Making the Legacy Demoshop Compatible with Publish & Synchronize - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-publish-and-synchronize.html - - title: Setting up ShopUiCompatibility Module in the Legacy Demoshop - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html ---- - -## Infrastructure Preparation - -{% info_block infoBox %} -This has to be done only once for the Legacy Demoshop (not for every feature. -{% endinfo_block %}) - -These steps are required to install features which use the new [shop pages and widgets](https://github.com/spryker-shop), that is the shop app. - -### 1. Add infrastructure modules - -To use the [spryker-shop](https://github.com/spryker-shop) modules, you need to add new modules required by infrastructure. Do the following: -1. Update all the existing modules: - -```bash -composer update "spryker/*" -``` - -2. Remove the Event-Behavior module to avoid the version constraint problems: - -```bash -composer remove spryker/event-behavior -``` - -3. Remove `$config[EventBehaviorConstants::EVENT_BEHAVIOR_TRIGGERING_ACTIVE] = false;` from `config_default.php`. - - -4. Remove `new EventBehaviorTriggerTimeoutConsole()`, from `\Pyz\Zed\Console\ConsoleDependencyProvider`. - -5. Install the required modules for Shop-App: - -```bash -composer require "spryker/kernel":"^3.24.0" spryker-shop/shop-router:"^1.0.0" spryker-shop/shop-application:"^1.3.0" spryker-shop/shop-ui:"^1.0.0" --update-with-all-dependencies -``` - -6. Install the required modules for Publish&Synchronize: - -```yaml -composer require spryker/availability-storage:"^1.0.0" spryker/category-page-search:"^1.0.0" -spryker/category-storage:"^1.0.0" spryker/cms-block-category-storage:"^1.0.0" -spryker/cms-block-product-storage:"^1.0.0" spryker/cms-block-storage:"^1.0.0" -spryker/cms-page-search:"^1.0.0" spryker/cms-storage:"^1.0.0" spryker/glossary-storage:"^1.0.0" -spryker/navigation-storage:"^1.0.0" spryker/price-product-storage:"^1.0.0" -spryker/product-category-filter-storage:"^1.0.0" -spryker/product-category-storage:"^1.0.0" spryker/product-group-storage:"^1.0.0" -spryker/product-image-storage:"^1.0.0" spryker/product-label-search:"^1.0.0" -spryker/product-label-storage:"^1.0.0" spryker/product-measurement-unit:"^0.2.0" -spryker/product-measurement-unit-storage:"^0.2.0" spryker/product-option-storage:"^1.0.0" -spryker/product-page-search:"^1.0.0" spryker/product-relation-storage:"^1.0.0" -spryker/product-review-search:"^1.0.0" spryker/product-review-storage:"^1.0.0" -spryker/product-search-config-storage:"^1.0.0" spryker/product-set-page-search:"^1.0.0" -spryker/product-set-storage:"^1.0.0" spryker/product-storage:"^1.0.0" -spryker/url-storage:"^1.0.0" spryker/product-quantity-storage:"^0.1.1" --update-with-all-dependencies -``` - -### 2. Add namespace to configuration -To let the Kernel find your files within the SprykerShop Organization namespace, add SprykerShop as a new namespace to `Spryker\Shared\Kernel\KernelConstants::CORE_NAMESPACES` in your `./config/Shared/config_default.php`. - -{% info_block infoBox %} -`$config[\Spryker\Shared\Kernel\KernelConstants::CORE_NAMESPACES] = [ 'SprykerEco', 'Spryker', 'SprykerShop'];` -{% endinfo_block %} - -### 3. Add Application plugins -To make all the features available from the newly added Modules, add the following lines to `\Pyz\Yves\ShopApplication\ShopApplicationDependencyProvider::getApplicationPlugins()`. - -src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php - -```php -// ... - -use SprykerShop\Yves\ShopApplication\Plugin\Twig\ShopApplicationTwigPlugin; -use SprykerShop\Yves\ShopApplication\Plugin\Application\ShopApplicationApplicationPlugin; -use Spryker\Yves\Store\Plugin\Application\StoreApplicationPlugin; -use Spryker\Yves\Locale\Plugin\Application\LocaleApplicationPlugin; - -class ShopApplicationDependencyProvider extends SprykerShopApplicationDependencyProvider -{ - /** - * @return \Spryker\Shared\ApplicationExtension\Dependency\Plugin\ApplicationPluginInterface[] - */ - protected function getApplicationPlugins(): array - { - return [ - // ... - new ShopApplicationTwigPlugin(), - new ShopApplicationApplicationPlugin(), - new StoreApplicationPlugin(), - new LocaleApplicationPlugin(), - ]; - } -} -``` - -### 4. Add EventDispatcher plugins -To make all the features available from the newly added Modules, add the following lines to `\Pyz\Yves\EventDispatcher\EventDispatcherDependencyProvider::getEventDispatcherPlugins()`. - -src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php - -```php -// ... - -use SprykerShop\Yves\ShopApplication\Plugin\EventDispatcher\ShopApplicationEventDispatcherPlugin; -use SprykerShop\Yves\ShopApplication\Plugin\EventDispatcher\ShopApplicationFilterControllerEventDispatcherPlugin; - -class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependencyProvider -{ - /** - * @return \Spryker\Shared\EventDispatcherExtension\Dependency\Plugin\EventDispatcherPluginInterface[] - */ - protected function getEventDispatcherPlugins(): array - { - return [ - // ... - new ShopApplicationEventDispatcherPlugin(), - new ShopApplicationFilterControllerEventDispatcherPlugin(), - ]; - } -} -``` - - -### 5. Add Twig plugins -To make all the features available from the newly added Modules, add the following lines to `\Pyz\Yves\Twig\TwigDependencyProvider::getTwigPlugins()`. - -src/Pyz/Yves/Twig/TwigDependencyProvider.php - -```php -// ... - -use SprykerShop\Yves\ShopApplication\Plugin\Twig\WidgetTwigPlugin; -use SprykerShop\Yves\ShopApplication\Plugin\Twig\WidgetTagTwigPlugin; - -class TwigDependencyProvider extends SprykerShopTwigDependencyProvider -{ - /** - * @return \Spryker\Shared\TwigExtension\Dependency\Plugin\TwigPluginInterface[] - */ - protected function getTwigPlugins(): array - { - return [ - // ... - new WidgetTwigPlugin(), - new WidgetTagTwigPlugin(), - ]; - } -} -``` - - -### 6. Inherit YvesBootstrap -You need to inherit YvesBootstrap from `SprykerShop\Yves\ShopApplication\YvesBootstrap` - -src/Pyz/Yves/Application/YvesBootstrap.php - -```php -use SprykerShop\Yves\ShopApplication\YvesBootstrap as SprykerYvesBootstrap; - -class YvesBootstrap extends SprykerYvesBootstrap -``` - -### 7. Change layout for new shop app modules -The new shop app modules use a new layout which is not supported in Demoshop. To make them compatible, you need to switch to the existing layout. - -Create a file `page-layout-main.twig` and add the following code. - -src/Pyz/Yves/ShopUi/Theme/default/templates/page-layout-main/page-layout-main.twig - -```php -{% raw %}{%{% endraw %} extends "@application/layout/layout.twig" {% raw %}%}{% endraw %} -``` - -Don't forget to flush the cache afterwards. - -```bash -console cache:empty-all -``` diff --git a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.md b/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.md deleted file mode 100644 index d34e8ebf8f3..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Setting up ShopUiCompatibility module in the Legacy Demoshop -description: Use the guide to learn how to install the ShopUICompatibility module for the Atomic Frontend in the Legacy Demoshop. -last_updated: Aug 27, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v6/docs/setting-up-shopuicompatibility -originalArticleId: f6d3249c-0d19-440c-9230-313043541be0 -redirect_from: - - /v6/docs/setting-up-shopuicompatibility - - /v6/docs/en/setting-up-shopuicompatibility - - /v5/docs/setting-up-shopuicompatibility - - /v5/docs/en/setting-up-shopuicompatibility - - /v4/docs/setting-up-shopuicompatibility - - /v4/docs/en/setting-up-shopuicompatibility - - /v3/docs/setting-up-shopuicompatibility - - /v3/docs/en/setting-up-shopuicompatibility - - /v2/docs/setting-up-shopuicompatibility - - /v2/docs/en/setting-up-shopuicompatibility - - /v1/docs/setting-up-shopuicompatibility - - /v1/docs/en/setting-up-shopuicompatibility - - /docs/scos/dev/migration-and-integration/201811.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html - - /docs/scos/dev/migration-and-integration/201903.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html - - /docs/scos/dev/migration-and-integration/201907.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html - -related: - - title: Making the Legacy Demoshop Compatible with the Modular Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html - - title: Making the Legacy Demoshop Compatible with the Atomic Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.html - - title: Twig Compatibility- Legacy Demoshop vs SCOS - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.html ---- - -The `ShopUiCompatibility` module is the main module necessary for the [Atomic Frontend](/docs/scos/dev/front-end-development/{{page.version}}/yves/atomic-frontend/atomic-front-end-general-overview.html). This module is provided in SCOS by default. -The following guide describes how to set up the ShopUICompatibility in the Legacy Demoshop. - -To install `ShopUiCompatibility` module in the Legacy Demoshop, follow the instructions below: -1. `ShopUiCompatibility` requires `ShopUi` module of a version no older than 1.7.0. If you don't have it, run the following code: - -```bash -composer require composer require spryker-shop/shop-ui "^1.7.0" -``` -2. Add the following line to `./src/Pyz/Yves/Application/YvesBootstrap.php`: - -```php -use SprykerEco\Yves\ShopUiCompatibility\Plugin\Provider\ShopUiCompatibilityTwigServiceProvider; -``` - -3. Add the following line to `./src/Pyz/Yves/Application/YvesBootstrap.php`, at the very end of the protected function `registerServiceProviders() {`: - -```php -$this->application->register(new ShopUiCompatibilityTwigServiceProvider()); -``` - -4. Add the following section to `./package.json`: - -```json -"config": { -"shopUiCompatibilityPath": "./vendor/spryker-eco/shop-ui-compatibility/assets/Yves", -"yvesPath": "./assets/Yves/default", -"zedPath": "./node_modules/@spryker/oryx-for-zed" -}, -``` - -5. Replace the script section in `./package.json` with this: - -```json -"engines": { -"node": ">=6.0.0" -}, -``` - -6. Change `./src/Pyz/Yves/Application/Theme/default/layout/layout.twig` as follows: - -```php - - - - - - - {% raw %}{%{% endraw %} block page_meta {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - - - - {% raw %}{%{% endraw %} block stylesheets {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - - - {% raw %}{%{% endraw %} block page_title {% raw %}%}{% endraw %}{% raw %}{{{% endraw %} page_title | default('global.spryker.shop') | trans {% raw %}}}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -``` - -7. Add the following lines to `./src/Pyz/Yves/Application/Theme/default/layout/layout.twig`, at the very end of the body, after any other script: - -```php - - - - - - {% raw %}{%{% endraw %} block javascript {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -``` - -8. Add all the files from this [ZIP-archive](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/ShopUi_Compatibility_Migration_Guide.zip) to the root of your project. - Files in folders must be copied to the same folders. - - diff --git a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.md b/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.md deleted file mode 100644 index c741dfa1f0f..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Twig Compatibility:Legacy Demoshop vs SCOS -description: Use the guide to learn how to configure the Twig variables passed to the global Twig namespace in the demoshop. -last_updated: Aug 27, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v6/docs/twig-compatibility-mode-demoshop-vs-suite -originalArticleId: ca84f253-0b8f-451d-a25d-4e2e818e2753 -redirect_from: - - /v6/docs/twig-compatibility-mode-demoshop-vs-suite - - /v6/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /v5/docs/twig-compatibility-mode-demoshop-vs-suite - - /v5/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /v4/docs/twig-compatibility-mode-demoshop-vs-suite - - /v4/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /v3/docs/twig-compatibility-mode-demoshop-vs-suite - - /v3/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /v2/docs/twig-compatibility-mode-demoshop-vs-suite - - /v2/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /v1/docs/twig-compatibility-mode-demoshop-vs-suite - - /v1/docs/en/twig-compatibility-mode-demoshop-vs-suite - - /docs/scos/dev/migration-and-integration/201811.0/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.html -related: - - title: Making the Legacy Demoshop Compatible with the Modular Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html - - title: Making the Legacy Demoshop Compatible with the Atomic Frontend - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.html - - title: Setting up ShopUiCompatibility Module in the Legacy Demoshop - link: docs/scos/dev/migration-and-integration/page.version/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html ---- - -In the SCOS, all variables available in the Twig templates can be accessed from the `_view` variable. In the Demoshop we used a different technique and passed the Twig variables to the global Twig namespace directly. The following code examples will help to understand the difference. - -**Demoshop controller:** - -```php -... -public function fooAction(): array -{ - return $this->viewResponse([ - 'varA' => 'value-a', - ]); -} -``` - -**Demoshop Twig file:** - -```html -
-

The value of varA is {% raw %}{{{% endraw %} varA {% raw %}}}{% endraw %}

-
-``` -As you can see in this example, the key (`varA`) passed from the controller to the template is used one-to-one to retrieve the value inside the template. - -We changed this behavior in the SCOS, as already mentioned, to keep the global scope of Twig clean. See the following example: - -**SCOS controller:** - -```php -use SprykerYvesKernelViewView; -... -public function fooAction(): View -{ - return $this->view([ - 'varA' => 'value-a', - ]); -} -... -``` -**SCOS Twig file:** - -```html -
-

The value of varA is {% raw %}{{{% endraw %} _view.varA {% raw %}}}{% endraw %}

-
-``` -The view object here is limited to the current template scope. - -## How to Use a SCOS Feature Within the Demoshop - -Not to be forced to update all the Twig files and variables usages, we added a configuration option that can be used to pass all the variables to the global Twig scope. - -**ShopApplicationConfig:** - -```php - -

The value of varA is {% raw %}{{{% endraw %} _view.varA {% raw %}}}{% endraw %}

-
-``` - -and - -```php -
-

The value of varA is {% raw %}{{{% endraw %} varA {% raw %}}}{% endraw %}

-
-``` - -can now be used to access variables in Twig. - -For more information on Demoshop vs Suite compatibility, see [Making Demoshop Compatible with Shop App, Atomic Design, P&S](/docs/scos/dev/migration-and-integration/202009.0/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html). diff --git a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/updating-the-legacy-demoshop-with-scos.md b/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/updating-the-legacy-demoshop-with-scos.md deleted file mode 100644 index 8e59cf1ce7b..00000000000 --- a/docs/scos/dev/legacy-demoshop/201811.0/updating-the-legacy-demoshop-with-scos/updating-the-legacy-demoshop-with-scos.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Updating the Legacy Demoshop with SCOS -description: The set of articles provides information on how to extend the project with Modular Frontend (Yves), Atomic Frontent (JS/CSS) and Publish&Sync. -last_updated: Jun 15, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v6/docs/about-updating -originalArticleId: cc12c96d-4515-45ac-aa0d-a29bc321311f -redirect_from: - - /v6/docs/about-updating - - /v6/docs/en/about-updating - - /v5/docs/about-updating - - /v5/docs/en/about-updating - - /v4/docs/about-updating - - /v4/docs/en/about-updating - - /v3/docs/about-updating - - /v3/docs/en/about-updating - - /v2/docs/about-updating - - /v2/docs/en/about-updating - - /v1/docs/about-updating - - /v1/docs/en/about-updating ---- - -If you use Spryker Legacy Demoshop, you can enhance it with specific components of SCOS. Previously Legacy Demoshop was an example and a boilerplate while starting a project. As you already forked project codebase and started development, migration to another demo shop (Master Suite, B2B/B2C Demo Shops) is NOT required. - -With last releases we introduced 3 new concepts: Modular Frontend (Yves), Atomic Frontend (JS/CSS) and Publish&Sync. You can extend your project with these concepts. For example, you can: - -* [Make the Legacy Demoshop compatible with the Modular Frontend](/docs/scos/dev/migration-and-integration/{{page.version}}/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-modular-frontend.html) -* [Make the Legacy Demoshop compatible with the Atomic Frontend](/docs/scos/dev/migration-and-integration/{{page.version}}/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-the-atomic-frontend.html) -* [Set up ShopUiCompatibility module](/docs/scos/dev/migration-and-integration/{{page.version}}/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html), which is the key module of the Atomic Frontend -* [Configure the Legacy Demoshop to use SCOS Twig templates](/docs/scos/dev/migration-and-integration/{{page.version}}/updating-the-legacy-demoshop-with-scos/twig-compatibility-legacy-demoshop-vs-scos.html), or -* [Make the Legacy Demoshop compatible with Publish & Synchronize](/docs/scos/dev/migration-and-integration/{{page.version}}/updating-the-legacy-demoshop-with-scos/making-the-legacy-demoshop-compatible-with-publish-and-synchronize.html). - -Not found a guide you are looking for? Let us know about it by [creating an issue on Github](https://github.com/spryker/spryker-docs/issues/new) or dropping an email to [documentation@spryker.com](mailto:documentation@spryker.com). diff --git a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md index 54eb3f639d7..ce98ad5a9ef 100644 --- a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md +++ b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md @@ -46,28 +46,28 @@ This document describes how to install Spryker in [Demo Mode](/docs/scos/dev/set * B2C Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ + git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop ``` * B2B Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ + git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2c-demo-shop ``` * B2C Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2c-demo-marketplace ``` * B2B Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace ``` diff --git a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md index 2761203d503..688364d85b9 100644 --- a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md +++ b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md @@ -38,28 +38,28 @@ Depending on the needed WSL version, follow one of the guides: * B2C Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ + git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop ``` * B2B Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ + git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2c-demo-shop ``` * B2C Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2c-demo-marketplace ``` * B2B Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace ``` diff --git a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md index df7c9628925..76c89e11c74 100644 --- a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md +++ b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md @@ -52,28 +52,28 @@ This document describes how to install Spryker in [Development Mode](/docs/scos/ * B2C Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ + git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop ``` * B2B Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ + git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2b-demo-shop ``` * B2C Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2c-demo-marketplace ``` * B2B Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace ``` diff --git a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md index c360854065e..38e8b0a5aee 100644 --- a/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md +++ b/docs/scos/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md @@ -50,28 +50,28 @@ Recommended: `/home/jdoe/workspace/project`. * B2C Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ + git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop ``` * B2B Demo Shop: ```shell - git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ + git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2c-demo-shop ``` * B2C Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2c-demo-marketplace ``` * B2B Marketplace Demo Shop ```shell - git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ + git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace ``` diff --git a/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md b/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md index 7bb60751d38..905db3a7347 100644 --- a/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md +++ b/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md @@ -27,7 +27,7 @@ brew list | grep mutagen | xargs brew remove && brew install mutagen-io/mutagen/ - B2B Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ +git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2b-demo-shop && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -36,7 +36,7 @@ docker/sdk bootstrap deploy.dev.yml - B2C Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ +git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -45,7 +45,7 @@ docker/sdk bootstrap deploy.dev.yml - B2B Marketplace Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ +git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -54,7 +54,7 @@ docker/sdk bootstrap deploy.dev.yml - B2C Marketplace Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ +git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2b-demo-marketplace && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml diff --git a/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md b/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md index 51f93366fa9..ed6dd84236f 100644 --- a/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md +++ b/docs/scos/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md @@ -26,7 +26,7 @@ Depending on the needed Demo Shop, run one of the following in Ubuntu: - B2B Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202212.0-p2 --single-branch ./b2b-demo-shop && \ +git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202307.0 --single-branch ./b2b-demo-shop && \ cd b2b-demo-shop && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -35,7 +35,7 @@ docker/sdk bootstrap deploy.dev.yml - B2C Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202212.0-p2 --single-branch ./b2c-demo-shop && \ +git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202307.0 --single-branch ./b2c-demo-shop && \ cd b2c-demo-shop && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -44,7 +44,7 @@ docker/sdk bootstrap deploy.dev.yml - B2B Marketplace Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2b-demo-marketplace && \ +git clone https://github.com/spryker-shop/b2b-demo-marketplace.git -b 202307.0 --single-branch ./b2b-demo-marketplace && \ cd b2b-demo-marketplace && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml @@ -53,7 +53,7 @@ docker/sdk bootstrap deploy.dev.yml - B2C Marketplace Demo Shop: ```shell -git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202212.0-p2 --single-branch ./b2c-demo-marketplace && \ +git clone https://github.com/spryker-shop/b2c-demo-marketplace.git -b 202307.0 --single-branch ./b2c-demo-marketplace && \ cd b2b-demo-marketplace && \ git clone https://github.com/spryker/docker-sdk.git --single-branch docker && \ docker/sdk bootstrap deploy.dev.yml diff --git a/docs/scos/dev/system-requirements/202108.0/system-requirements.md b/docs/scos/dev/system-requirements/202108.0/system-requirements.md deleted file mode 100644 index 67ece4dc665..00000000000 --- a/docs/scos/dev/system-requirements/202108.0/system-requirements.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: System requirements -description: This article provides the configuration that a system must have in order for the Spryker project to run smoothly and efficiently. -last_updated: Jun 16, 2021 -template: howto-guide-template ---- -| REQUIREMENT | VALUE | -|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| OS |
  • Native: Linux
  • DevVM: MacOS and Windows
| -| Web Server | NginX—preferred. But any webserver which supports PHP will work such as lighttpd, Apache, Cherokee. | -| Databases | Depending on the project, one of the databases: MariaDB >= 10.4—preferred, PostgreSQL >=9.6, or MySQL >=5.7. | -| PHP | Spryker supports PHP >=7.3 with the following extensions: `curl`, `json`, `mysql`, `pdo-sqlite`, `sqlite3`, `gd`, `intl`, `mysqli`, `pgsql`, `ssh2`, `gmp`, `mcrypt`, `pdo-mysql`, `readline`, `twig`, `imagick`, `memcache`, `pdo-pgsql`, `redis`, `xml`, `bz2`, `mbstring`. The preferred version is 7.4. See [Supported Versions of PHP](/docs/scos/user/intro-to-spryker/whats-new/supported-versions-of-php.html) for details on the supported PHP versions. | -| SSL | For production systems, a valid security certificate is required for HTTPS. | -| Redis | Version >=3.2, >=5.0 | -| Elasticsearch | Version 6.x or 7.x | -| RabbitMQ | Version 3.6+ | -| Jenkins (for cronjob management) | Version 1.6.x or 2.x | -| Graphviz (for statemachine visualization) | 2.x | -| Node.js | Version >= 12.0.0 | -| npm | Version >= 6.9.0 | -| Intranet | Back Office application (Zed) must be secured in an Intranet (using VPN, Basic Auth, IP Allowlist, and DMZ.) | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/hosting-providers/integrating-heroku.md b/docs/scos/dev/technology-partner-guides/201811.0/hosting-providers/integrating-heroku.md deleted file mode 100644 index fc267e1c7be..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/hosting-providers/integrating-heroku.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Integrating Heroku -last_updated: Aug 30, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/hosting-provider-continum-1 -originalArticleId: 83e0ce3d-0327-4362-95eb-1bf2bb303f91 -redirect_from: - - /v1/docs/hosting-provider-continum-1 - - /v1/docs/en/hosting-provider-continum-1 -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -This article describes the aspects you need to consider when using Heroku as an application hosting solution. - -In the scenario described below, 3 applications will be sharing the Redis, Elasticsearch and database add-ons between them. - -* Preconditions -* Applications -* Heroku Configuration Variables -* Configuration -* Build & Composer -* Setup shop with data - -## Preconditions - -In order to work closely with Heroku, make sure to [install heroku console](https://devcenter.heroku.com/articles/heroku-cli). - -## Applications - -In our example, Redis and Elasticsearch add-ons are attached to Yves (front-end application), while the database add-on is attached to Zed (back-end application).
-Please make sure to install proper version of ES and Redis, refer to [installation guide](/docs/scos/dev/set-up-spryker-locally/installing-spryker-with-development-virtual-machine/installing-spryker-with-devvm-on-macos-and-linux.html).
-Install required add-ons only in one application, and copy configuration string to the other one. - -The application you setup will be sharing the add-ons between them so you are free to set it up to your needs. - -## Yves - -The front-end application uses Redis and Elasticsearch as data stores. - -* nginx config: `nginx_Yves.conf` -* setup script: `setup-Yves.sh` - -Procfile web: `vendor/bin/heroku-php-nginx -l data/DE/logs/application.log -C deploy/heroku/conf/nginx_Yves.conf -F deploy/heroku/conf/fpm_custom.conf public/Yves/` - -Add-ons: - -Redis - Elasticsearch - -## Zed - -The back-end application must connect to the SQL database, Redis and Elasticsearch data stores. - -nginx config: `nginx_Zed.conf` - -setup script: `setup-Zed.sh` - -Procfile: web:`phpvendor/bin/heroku-php-nginx -l data/DE/logs/application.log -C deploy/heroku/conf/nginx_Zed.conf -F deploy/heroku/conf/fpm_custom.conf public/Zed/` - -Add-ons: - -* Redis (the same instance as Yves) -* Elasticsearch (the same instance as Yves) -* Database - -## Data (for Development Purposes Only) - -It is not recommend to populate Heroku environment with data during build/deployment. - -This application populates the database, Redis and Elasticsearch data stores with test data. - -nginx config: `nginx_Data.conf` - -setup script: `setup-Data.sh` - -Procfile: irrelevant, as this is only a console application - -Add-ons: - -* Redis (the same instance as Yves and Zed) -* Elasticsearch (the same instance as Yves and Zed) -* Database (the same instance as Zed) - -## Heroku Configuration Variables - -In this example we'll be using Bonsai (for Elasticsearch), RedisCloud (for Redis) and PostgreSql (for the database) add-ons. - -Besides strictly Heroku related settings, there is only one variable that is different per application: `APPLICATION_NAME`. - -The others settings are required and must be specified for each application even though they share the same values. - -### Configuration for Yves -```php -APPLICATION_ENV="development-heroku" -APPLICATION_NAME="Yves" -APPLICATION_STORE="DE" -BONSAI_URL="http://foo:bar@cloud" -DATABASE_URL="postgres://foo:bar@cloud:5432/dbname" -ELASTIC_SEARCH_URL_NAME="BONSAI_URL" -REDISCLOUD_URL="redis://foo:bar@cloud:15250" -REDIS_URL_NAME="REDISCLOUD_URL" -YVES_HOST="spryker-yves.herokuapp.com" -YVES_HOST_PROTOCOL="https://" -ZED_HOST="spryker-zed.herokuapp.com" -ZED_HOST_PROTOCOL="https://" -``` - -### Configuration for Zed -```php -APPLICATION_ENV="development-heroku" -APPLICATION_NAME="Zed" -APPLICATION_STORE="DE" -BONSAI_URL="http://foo:bar@cloud" -DATABASE_URL="postgres://foo:bar@cloud:5432/dbname" -ELASTIC_SEARCH_URL_NAME="BONSAI_URL" -REDISCLOUD_URL="redis://foo:bar@cloud:15250" -REDIS_URL_NAME="REDISCLOUD_URL" -YVES_HOST="spryker-yves.herokuapp.com" -YVES_HOST_PROTOCOL="https://" -ZED_HOST="spryker-zed.herokuapp.com" -ZED_HOST_PROTOCOL="https://" -``` -Configuration for Data application (development environment only): -```php -APPLICATION_ENV="development-heroku" -APPLICATION_NAME="Data" -APPLICATION_STORE="DE" -BONSAI_URL="http://foo:bar@cloud" -DATABASE_URL="postgres://foo:bar@cloud:5432/dbname" -ELASTIC_SEARCH_URL_NAME="BONSAI_URL" -REDISCLOUD_URL="redis://foo:bar@cloud:15250" -REDIS_URL_NAME="REDISCLOUD_URL" -YVES_HOST="spryker-yves.herokuapp.com" -YVES_HOST_PROTOCOL="https://" -ZED_HOST="spryker-zed.herokuapp.com" -ZED_HOST_PROTOCOL="https://" -``` -`REDIS_URL_NAME` and `ELASTIC_SEARCH_URL_NAME` should point to the Heroku add-on you decided to use. - -Depending on your infrastructure, you might want to configure `GITHUB_AUTH_TOKEN` and `COMPOSER_GITHUB_OAUTH_TOKEN` as well. - - You should customize `APPLICATION_ENV` and use proper staging/production environments if you intend to use Heroku as your hosting environment. - -### HEROKU NGINX Configuration and Procfile - -Copy `deploy/heroku/conf/Procfile` to the root folder of your project. You can customize it according to your needs. - -## - -The general idea is that the Heroku specific configuration is read from the environment variables, which are configured in Heroku Config variables. - -Check `config_default-development-heroku.php `and `config_default-development-heroku_DE.php` under the config/Shared/ folder, for configuration examples on how to use Heroku config variables inside Spryker config. - -## Build & Composer - -The build process on Heroku must trigger setup script for each of the applications. - - Add this to `composer.json` to trigger setup process during Heroku deployment (assuming your configuration is stored under development-heroku* configuration files). - -```php -"scripts": { - "compile": [ - "mkdir -p ./data/DE/logs", - "echo ' config/Shared/console_env_local.php", - "./deploy/heroku/run.sh" - ] - } - ``` - -You might need to change `minimum-stability` from `dev` to `stable`, depending on your Heroku setup. - -## Heroku Build Packs - -heroku/nodejs - -heroku/php - -[https://github.com/weibeld/heroku-buildpack-graphviz.git](https://github.com/weibeld/heroku-buildpack-graphviz.git) - -## Setup Shop With Data - -In order to install demoshop data on the heroku, please login to zed application: -```php -heroku run bash --app spryker-zed -``` - -and run: -```php -./deploy/heroku/setup-Data-manually.sh -i -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md deleted file mode 100644 index c588a029705..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Exporting product data for FACT-Finder -description: Export data to FACT-Finder CSV by applying the configuration. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-export-csv -originalArticleId: 2e791df6-3359-4a80-833f-a7b3c26babd1 -redirect_from: - - /v1/docs/search-factfinder-export-csv - - /v1/docs/en/search-factfinder-export-csv -related: - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html ---- - -## Output Folder - -Define an output folder where the CSV files will be generated by adding the following line in your configuration file: -```php - -config/Shared/config_default.php - -```php -... -// ---------- FACT-Finder components -$config[FactFinderWebComponentsConstants::COMMUNICATION_COMPONENT_CONFIG] = [ - 'properties' => [ - 'url' => 'http://search-web-components.fact-finder.de/FACT-Finder-7.2', - 'version' => '7.2', - 'default-query' => 'trousers', - 'channel' => 'heroku-fact-finder-de_DE', - 'search-immediate' => false, - ], -]; -... -``` -
-
- -To set up the components configuration, use the following config code as an example: - -
-config/Shared/config_default.php - -```php -... -$config[FactFinderWebComponentsConstants::BREADCRUMB_COMPONENT_CONFIG] = [ - 'properties' => [ - 'show-only' => false, - ], - 'items' => [ - 'search', - 'filter', - 'advisor', - ], -]; - -$config[FactFinderWebComponentsConstants::SEARCH_BOX_COMPONENT_CONFIG] = [ - 'properties' => [ - 'suggest-onfocus' => 'true', - 'use-suggest' => 'true', - ], -]; - -$config[FactFinderWebComponentsConstants::SEARCH_BUTTON_COMPONENT_CONFIG] = [ - 'suggest-onfocus' => false, - 'hidesuggest-onblur' => true, - 'select-onclick' => false, - 'use-suggest' => false, - 'suggest-delay' => 0, -]; - -$config[FactFinderWebComponentsConstants::HEADER_NAVIGATION_COMPONENT_CONFIG] = [ - 'properties' => [ - 'group-count' => 4, - 'group-size' => 4, - 'hide-empty-groups' => '1', - 'fetch-initial' => '1', - ], -]; - -$config[FactFinderWebComponentsConstants::SUGGEST_CONFIG] = [ - 'properties' => [], - 'productItemType' => 'productName', - 'searchItems' => [ - [ - 'type' => 'searchTerm', - 'title' => 'Search term', - ], - [ - 'type' => 'category', - 'title' => 'Category', - ], - [ - 'type' => 'brand', - 'title' => 'Brand', - ], - ], -]; - -$config[FactFinderWebComponentsConstants::RECORD_LIST_COMPONENT_CONFIG] = [ - 'properties' => [], - 'record' => '', -]; - -$config[FactFinderWebComponentsConstants::CHECKOUT_TRACKING_CONFIG] = [ - 'properties' => [ - 'disable-auto-tracking' => true, - ], - 'items' => [ - [ - 'recordId' => 'd44c3c7b5e52f7a6b27041c1e789e954', - 'count' => '2', - ], - [ - 'recordId' => '19532fa96a8e60a27328f01520cc4', - 'count' => '4', - ], - ], -]; - -$config[FactFinderWebComponentsConstants::RECORD_COMPONENT_CONFIG] = [ - 'subscribe' => 'true', - 'is-recommendation' => false, - 'infinite-scrolling' => true, - 'infinite-debounce-delay' => 32, - 'infinite-scroll-margin' => 0, -]; - -$config[FactFinderWebComponentsConstants::ASN_GROUP_COMPONENT_CONFIG] = [ - 'opened' => false, - 'collapsible' => true, - 'lazy-load' => true, -]; - -$config[FactFinderWebComponentsConstants::ASN_GROUP_ELEMENT_CONFIG] = [ - 'selected' => true, -]; - -$config[FactFinderWebComponentsConstants::ASN_REMOVE_ALL_FILTER_CONFIG] = [ - 'align' => 'vertical', - 'show-always' => true, - 'remove-params' => false, -]; - -$config[FactFinderWebComponentsConstants::ASN_SLIDER_CONFIG] = [ - 'properties' => [ - 'align' => 'vertical', - ], -]; - -$config[FactFinderWebComponentsConstants::ASN_SLIDER_CONTROL_CONFIG] = [ - 'submit-on-input' => true, -]; - -$config[FactFinderWebComponentsConstants::PAGING_COMPONENT_CONFIG] = [ - 'properties' => [ - ], -]; - -$config[FactFinderWebComponentsConstants::PRODUCTS_PER_PAGE_COMPONENT_CONFIG] = [ - 'properties' => [ - ], - 'dropdown' => '', - 'list' => '', - 'item' => '', -]; - -$config[FactFinderWebComponentsConstants::SORT_BOX_COMPONENT_CONFIG] = [ - 'properties' => [ - ], - 'items' => [ - [ - 'key' => 'default.template', - 'title' => 'factfinder.web-components.sort.box.default.style', - ], - [ - 'key' => 'Price.asc', - 'title' => 'factfinder.web-components.sort.box.overriden.for', - ], - [ - 'key' => 'null.desc', - 'title' => 'factfinder.web-components.sort.box.relevance', - ], - ], -]; - -$config[FactFinderWebComponentsConstants::SIMILAR_PRODUCTS_COMPONENT_CONFIG] = [ - 'properties' => [ - 'max-results' => 4, - ], - 'list' => '', - 'record' => '', -]; - -$config[FactFinderWebComponentsConstants::SIMILAR_PRODUCT_ID_CONFIG] = [ - 'recordId' => 'd44c3c7b5e52f7a6b27041c1e789e954', -]; - -$config[FactFinderWebComponentsConstants::RECOMMENDATION_CONFIG] = [ - 'properties' => [ - 'max-results' => 4, - ], - 'list' => '', - 'record' => '', -]; - -$config[FactFinderWebComponentsConstants::RECOMMENDATION_RECORD_ID_CONFIG] = [ - 'recordId' => '19532fa96a8e60a27328f01520cc4', -]; - -$config[FactFinderWebComponentsConstants::TAG_CLOUD_COMPONENT_CONFIG] = [ - 'properties' => [ - ], -]; - -$config[FactFinderWebComponentsConstants::PUSHED_PRODUCTS_COMPONENT_CONFIG] = [ - 'properties' => [ - ], - 'list' => '', - 'record' => '', -]; - -$config[FactFinderWebComponentsConstants::CAMPAIGN_COMPONENT_CONFIG] = [ - 'properties' => [ - ], - 'answer' => '', - 'question' => '', - 'feedbacktext' => '', -]; -... -``` -
-
- -## Integration into Project - -
- frontend/settings.js - -```js -// define project relative paths to context -const paths = { - ... - - // eco folders - eco: { - // all modules - modules: './vendor/spryker-eco' - }, - - // project folders - project: { - ... - } -}; - -... - -// export settings -module.exports = { - ... - - // define settings for suite-frontend-builder finder - find: { - // webpack entry points (components) finder settings - componentEntryPoints: { - // absolute dirs in which look for - dirs: [ - ... - path.join(context, paths.eco.modules), - ... - ], - ... - }, - - ... - } -} -``` -
-
- -
-src/Pyz/Yves/ShopUi/Theme/default/es6-polyfill.ts - -```js -// add es6 polyfill -import 'core-js/fn/promise'; -import 'core-js/fn/array'; -import 'core-js/fn/set'; -import 'core-js/fn/map'; - -// check if the browser natively supports webcomponents (and es6) -const hasNativeCustomElements = !!window.customElements; - -// then load a shim for es5 transpilers (typescript or babel) -// https://github.com/webcomponents/webcomponentsjs#custom-elements-es5-adapterjs -if (hasNativeCustomElements) { - import(/* webpackMode: "eager" */'@webcomponents/webcomponentsjs/custom-elements-es5-adapter'); -} -``` -
-
- -
- src/Pyz/Yves/ShopUi/Theme/default/vendor.ts - -```js -// add es6 polyfill -import 'core-js/fn/promise'; -import 'core-js/fn/array'; -import 'core-js/fn/set'; -import 'core-js/fn/map'; - -// check if the browser natively supports webcomponents (and es6) -const hasNativeCustomElements = !!window.customElements; - -// then load a shim for es5 transpilers (typescript or babel) -// https://github.com/webcomponents/webcomponentsjs#custom-elements-es5-adapterjs -if (hasNativeCustomElements) { - import(/* webpackMode: "eager" */'@webcomponents/webcomponentsjs/custom-elements-es5-adapter'); -} -``` -
-
- -
-src/Pyz/Yves/ShopUi/Theme/default/vendor.ts - -```js -// add webcomponents polyfill -import '@webcomponents/webcomponentsjs/custom-elements-es5-adapter'; -import '@webcomponents/webcomponentsjs/webcomponents-loader'; -import '@webcomponents/webcomponentsjs/webcomponents-bundle'; -import 'ff-web-components/dist/bundle'; -``` -
-
- -Update in Core "@webcomponents/webcomponentsjs": "^2.0.4", - -
-package.json - -```json -"dependencies": { -"ff-web-components": "git+https://github.com/FACT-Finder-Web-Components/ff-web-components.git#release/3.0" -}, -``` -
-
- -## Frontend Integration - -Add the required Communication element: - -```html -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include atom('communication', 'FactFinderWebComponents') with { - data: { - properties: { - component: 'url="http://search-web-components.fact-finder.de/FACT-Finder-7.2" version="7.2" default-query="trousers" channel="bergfreunde-co-uk" search-immediate="true"' - } - } - } only {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -Add a widget: - -```json -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include atom('communication', 'FactFinderWebComponents') with { - data: { - properties: { - component: 'url="http://search-web-components.fact-finder.de/FACT-Finder-7.2" version="7.2" default-query="trousers" channel="bergfreunde-co-uk" search-immediate="true"' - } - } - } only {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} include atom('header-navigation', 'FactFinderWebComponents') with { - data: { - properties: { - component: 'group-count="4" group-size="4" hide-empty-groups="1" fetch-initial="1"' - } - } - } only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md deleted file mode 100644 index 470db5d2fa0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Installing and configuring FACT-Finder guide -description: This article provides details on the installation and configuration of the FACT-Finder module. -template: howto-guide-template ---- - -## Installation - -Composer dependency: - -To install Spryker's FactFinder module, use [composer](https://getcomposer.org/): -```php -composer require spryker-eco/fact-finder-sdk -composer require spryker-eco/fact-finder -``` - -If you faced an issue with the FACT-Finder library dependency and it is not installed, please use the following instructions: - -1. Add `composer.json`> file to the respective section of your project, `FACT-Finder/FACT-Finder-PHP-Library": "1.3.*` -2. Add to the repositories section: - ```json -{"type": "git","url": "git@github.com:FACT-Finder/FACT-Finder-PHP-Library.git"} -``` -3. Run `composer update` command: -```bash -composer update -``` - - -## Channel Configuration - -Channel Management in FACT-Finder admin panel can be used for creating and removing the channels. It also creates parent-child hierarchy and manages backups. - -By default, channel settings should be the following: - -* File encoding - `UTF-8` -* Enclosing (quote) character - `"` -* Field separator - `,` -* Number of header lines - `1` -* Data record ID - `ProductNumber` -* Product number for tracking - `ProductNumber` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md deleted file mode 100644 index f964af25e21..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md +++ /dev/null @@ -1,580 +0,0 @@ ---- -title: Installing and configuring FACT-Finder NG API -description: Fact Finder NG API integration is used for search, tracking, and importing endpoints. -last_updated: Jan 27, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/fact-finder-ng -originalArticleId: 3769f5d6-4097-4002-bdf8-a2bf8bab0d47 -redirect_from: - - /v1/docs/fact-finder-ng - - /v1/docs/en/fact-finder-ng -related: - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html ---- - -## Installation -To install the package use `composer require spryker-eco/fact-finder-ng` command. - -## Configuration -For using the package you have to set configuration parameters. -```php -$config[FactFinderNgConstants::FACT_FINDER_URL] = ''; # Fact-Finder URL -$config[FactFinderNgConstants::FACT_FINDER_CHANNEL] = ''; # Fact-Finder channel value -$config[FactFinderNgConstants::FACT_FINDER_USERNAME] = ''; # Fact-Finder user for authorization. -$config[FactFinderNgConstants::FACT_FINDER_PASSWORD] = ''; # Fact-Finder password for authorization. -``` -## Import Usage -Fact-Finder has an import API call. It can be used to update product information by URL set on the Fact-Finder side. To trigger the import, you have to add Console command to `ConsoleDependecyProvider`. -
-ConsoleDependencyProvider.php - -```php - -
-You can import using the console fact-finder-ng:import:search command. - -## Tracking Usage -There are tracking functions at the Client layer in the module. -
-FactFinderNgClientInterface.php - -```php - -
-You can use it anywhere you want in your application. You can send a few events together. All these methods expect an array of event transfers. - -E.g., you can use it on the Success step during the checkout process: -
-SuccessStep - -```php -factFinderNgClient->trackCheckoutEvent($this->preparedCheckoutEventTransfers($quoteTransfer)); - - return parent::execute($request, $quoteTransfer); - } - - /** - * @param QuoteTransfer $quoteTransfer - * - * @return CartOrCheckoutEventTransfer[] - */ - protected function preparedCheckoutEventTransfers(QuoteTransfer $quoteTransfer): array - { - $eventTransfers = []; - foreach ($quoteTransfer->getItems() as $itemTransfer) { - $eventTransfer = new CartOrCheckoutEventTransfer(); - $eventTransfer->setCount($itemTransfer->getQuantity()); - $eventTransfer->setId($itemTransfer->getSku()); - $eventTransfer->setMasterId($itemTransfer->getAbstractSku()); - $eventTransfer->setPrice($itemTransfer->getUnitPriceToPayAggregation()); - $eventTransfer->setSid(uniqid()); - - $eventTransfers[] = $eventTransfer; - } - - return $eventTransfers; - } -} -``` -
-
- -## Search, Suggestion, Navigation Usage -For using search functions, you have to extend SearchClient on the project level. If you want to use different search engines, you might need to create search router, for choosing the right engine. - -
-SearchRouter - -```php -searchPlugins = $searchPlugins; - } - - /** - * Resolve here what the handler should be work - * - * @param \Spryker\Client\Search\Dependency\Plugin\QueryInterface $searchQuery - * @param array $resultFormatters - * @param array $requestParameters - * - * @return array|\Elastica\ResultSet - */ - public function search(QueryInterface $searchQuery, array $resultFormatters = [], array $requestParameters = []) - { - foreach ($this->searchPlugins as $searchPlugin) { - if ($searchPlugin->isApplicable($requestParameters)) { - return $searchPlugin->handle($searchQuery, $resultFormatters, $requestParameters); - } - } - - return []; - } -} -``` -
-
- -If you want to use ElasticSearch for specific cases, you have to create a plugin on the project level -
-ElasticSearchHandlerPlugin - -```php -getFactory()->createElasticsearchSearchHandler()->search($searchQuery, $resultFormatters, $requestParameters); - } - - /** - * @param array $requestParameters - * - * @return bool - */ - public function isApplicable(array $requestParameters): bool - { - return true; - } -} -``` -
-
- -The Fact-Finder Ng module contains plugins for choosing search, suggestion, or navigation request should be used. By now you can create plugin stack in `SearchDependencyProvider` for using in `SearchRouter`. - -
-SearchDependencyProvider - -```php -provideFactFinderNgClient($container); - $container = $this->addSearchPlugins($container); - - return $container; - } - - /** - * @return \Pyz\Client\Search\Plugin\SearchHandlerPluginInterface[] - */ - protected function getSearchPlugins(): array - { - return [ - new FactFinderNgNavigationHandlerPlugin(), - new FactFinderNgSearchHandlerPlugin(), - new FactFinderNgSuggestHandlerPlugin(), - new ElasticSearchHandlerPlugin(), - ]; - } - - /** - * @param \Spryker\Client\Kernel\Container $container - * - * @return \Spryker\Client\Kernel\Container - */ - protected function provideFactFinderNgClient(Container $container): Container - { - $container[static::CLIENT_FACT_FINDER_NG] = function (Container $container) { - return $container->getLocator()->factFinderNg()->client(); - }; - - return $container; - } - - /** - * @param \Spryker\Client\Kernel\Container $container - * - * @return \Spryker\Client\Kernel\Container - */ - protected function addSearchPlugins(Container $container): Container - { - $container[static::PLUGINS_SEARCH] = function () { - return $this->getSearchPlugins(); - }; - - return $container; - } -} -``` -
-
- -Then SearchClient can be adjusted: - -
-SearchRouter - -```php -getFactory() - ->createSearchRouter() - ->search($searchQuery, $resultFormatters, $requestParameters); - } -} -``` -
-
- -The idea that you have to adjust places, where the search is called for adding needed params to request parameters. For example, you can adjust `SuggestionController` for adding a suggest parameter, so `FactFinderNgSuggestHandlerPlugin` will know that it should be called. - -
-SuggestionController - -```php -query->get(self::PARAM_SEARCH_QUERY); - - if (!$searchString) { - return $this->jsonResponse(); - } - - $requestParameters = array_merge($request->query->all(), ['suggest' => 1]); # Here you add new request parameter. - - $searchResults = $this - ->getFactory() - ->getCatalogClient() - ->catalogSuggestSearch($searchString, $requestParameters); - - return $this->jsonResponse([ - 'completion' => ($searchResults['completion'] ? $searchResults['completion'][0] : null), - 'suggestion' => $this->renderView('@CatalogPage/views/suggestion-results/suggestion-results.twig', $searchResults)->getContent(), - ]); - } -} -``` -
-
- -## Pagination, Sorting, and Filters -### Pagination -For the Yves layer, pagination should work out of the box. Request mapper cares about page and ipp (items for page) parameters and map it to Fact-Finder parameters. - -If you use the Glue layer, you have to add page and ipp value to request parameters. - -### Sorting -By default, the Yves layer doesn't care about sort options which suggested by Fact-Finder. If you want to use them, you have to change `SortedResultFormatterPlugin` in `CatalogDependencyProvider`. -```php -getAllowedLocalesPattern(); - - $this->createController('/{factfinder}', self::ROUTE_FACT_FINDER, 'FactFinder', 'Search', 'index') - ->assert('factfinder', $allowedLocalesPattern . 'fact-finder|fact-finder'); - - $this->createController('/{factfinder}/suggestions', self::ROUTE_FACT_FINDER_SEARCH, 'FactFinder', 'Suggestions', 'index') - ->assert('factfinder', $allowedLocalesPattern . 'fact-finder|fact-finder'); - - $this->createController('/{factfinder}/track', self::ROUTE_FACT_FINDER_TRACK, 'FactFinder', 'Track', 'index') - ->assert('factfinder', $allowedLocalesPattern . 'fact-finder|fact-finder'); - - $this->createController('/{factfinder}/recommendations', self::ROUTE_FACT_FINDER_RECOMMENDATIONS, 'FactFinder', 'Recommendations', 'index') - ->assert('factfinder', $allowedLocalesPattern . 'fact-finder|fact-finder'); - } - -} -``` - -2. Then add the created controller provider to `YvesBootsrap` file: Expand a code sample - -```php -provideClients($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function provideClients(Container $container) - { - $container[self::FACT_FINDER_SDK_CLIENT] = function () use ($container) { - return $container->getLocator() - ->factFinderSdk() - ->client(); - }; - - return $container; - } - -} -``` -2. Add it to your factory: - -```php -getProvidedDependency(FactFinderDependencyProvider::FACT_FINDER_SDK_CLIENT); - } - - ... - -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.md deleted file mode 100644 index 6f5a1627713..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: Using FACT-Finder campaigns -description: The FACT-Finder Campaign Manager module allows you to target the management of search results in order to improve the customer lead process or deliberately highlight products. -last_updated: Oct 23, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-campaigns -originalArticleId: 0c5c56a3-532e-4f9d-8d3b-a472058ca408 -redirect_from: - - /v1/docs/search-factfinder-campaigns - - /v1/docs/en/search-factfinder-campaigns -related: - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html ---- - -## Prerequisites - -The FACT-Finder Campaign Manager module allows you to target the management of search results in order to improve the customer lead process or deliberately highlight products. -Campaigns are activated according to the specific criteria and are then returned accordingly in the search results. - -Campaigns are a powerful tool for visual merchandising. One of their numerous functions is automatic redirects to static pages for specific search terms, e.g. searching for "ToS" automatically redirects the user to the terms of service page. Even more importantly, campaigns allow for targeted placement of banners or the customization of search results. - -These types of the campaign can be created with the Campaign Assistant: - -* **Feedback Campaigns**: Display preset texts and banners with search results. Also used for pushed products. -* **Redirect Campaigns**: Redirect the user to the specific pages for certain search terms. -* **Advisor Campaigns**: Manages questions and answers that are presented to the shop visitor. Answers lead to specific product sets. -* **Product Campaigns**: Allows you to place campaigns on product pages instead of search result pages. - -### Feedback Campaign - -Feedback campaigns add predefined banners, texts, and products aimed to search results in reaction to specific search terms or other triggers. -These campaigns are best suited to pushing products. -A feedback campaign can also be used to place videos, point the customer towards the brand stores or to the designed zero-result pages. - -### Redirect Campaign - -Redirect campaigns react to triggers like search words and send users to specific pages, like Contact, ToS, etc. -Every webstore has a number of pages that should be available in this way. -Apart from the contact form and terms of service, payment and shipping conditions, as well as the about page, fall into that list. - -### Redirect Campaign - -Advisor campaigns give you the ability to set up questions as text or images which are presented to the customer in certain situations. -You group the questions with the preset answers the customer can choose. Each answer is combined with a product set which is displayed to the user on giving the answer. This gives you the ability to guide the user with targeted questions. -Advisor campaigns are especially useful to react to rising trends or frequently used filter combinations. - -### Product Campaign - -Product campaigns can be placed on any product detail page, shopping cart page or shop page and display a specific product set. -They employ the same method of defining product sets but are different in the way they are triggered. - -## Usage - -### Search Page - -Search result campaigns are fetched implicitly by invoking a search request. Examples of integration of advisor, redirect, feedback and pushed products campaigns can be found in `vendor/spryker-eco/fact-finder/src/SprykerEco/Yves/FactFinder/Theme/default/search/catalog.twig` - -### Product Details Page - -To fetch Fact-Finder campaigns for product page, you need to make a call using Fact-Finder client. To do that: - -1. Add FactFinder client to dependency provider: -
-Click here to expand the code sample - -```php -provideClients($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function provideClients(Container $container) - { - ... - - $container[self::CLIENT_FACT_FINDER] = function (Container $container) { - return $container->getLocator()->factFinderSdk()->client(); - }; - - return $container; - } - -} -``` -
-
- -2. Add methods to get FactFinder client and to create product campaign request transfer: - -
-Click here to expand the code sample - - ```php -getProvidedDependency(ProductDependencyProvider::CLIENT_FACT_FINDER); - } - - /** - * @return \Generated\Shared\Transfer\FactFinderSdkProductCampaignRequestTransfer - */ - public function createFactFinderSdkProductCampaignRequestTransfer() - { - return new FactFinderSdkProductCampaignRequestTransfer(); - } - -} - ``` -
-
- -3. Fetch product campaigns from controller: - -
-Click here to expand the code sample - - ```php -getFactory() - ->createFactFinderSdkProductCampaignRequestTransfer(); - $factFinderSdkProductCampaignRequestTransfer->addProductNumber($storageProductTransfer->getIdProductAbstract()); - $factFinderSdkProductCampaignRequestTransfer->setSid($request->cookies->get(FactFinderConstants::COOKIE_SID_NAME)); - $factFinderProductCampaignResponseTransfer = $this->getFactory() - ->getFactFinderClient() - ->getProductCampaigns($factFinderSdkProductCampaignRequestTransfer); - $campaigns = $factFinderProductCampaignResponseTransfer->getCampaignIterator()->getCampaigns(); - - $productData = [ - ... - 'campaigns' => $campaigns, - ]; - - return $productData; - } -} -``` -
-
- -4. Inject feedback campaign templates into product details template, indicating position of campaign widget in `feedbackBlockPositionId` parameter e.g.: - -```php -{% raw %}{%{% endraw %} if campaigns is defined {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@FactFinder/campaigns/partials/feedback.twig' with { - campaigns: campaigns, - feedbackBlockPositionId: 'product detail - above product', - } {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -``` -Additionally, you might need to add some more feedback widgets to general layout in `src/Pyz/Yves/Application/Theme/default/layout/layout.twig` -5. Inject pushed products campaign template into product details template, e.g.: - -```php -{% raw %}{%{% endraw %} if campaigns is defined {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@FactFinder/campaigns/partials/pushed-products.twig' with { - campaigns: campaigns, - } {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -``` - -### Cart Page - -To fetch Fact-Finder campaigns for cart page, perform the same actions as for product page, but under Cart module namespace. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.md deleted file mode 100644 index 2fb7ede4233..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Using FACT-Finder recommendation engine -description: The FACT-Finder recommendation engine analyzes product and category relationships. The results are rendered in recommendations widget, which can be displayed on product details pages, homepage or in the shopping cart. -last_updated: Jan 17, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-recommendation -originalArticleId: 75b2cf56-1ed3-4882-9380-4b61e9997ea3 -redirect_from: - - /v1/docs/search-factfinder-recommendation - - /v1/docs/en/search-factfinder-recommendation -related: - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html ---- - -## Prerequisites - -The FACT-Finder recommendation engine analyzes product and category relationships. The results are rendered in recommendations widget, which can be displayed on product details pages, homepage or in the shopping cart. - -## Usage - -To add recommendations widget to product page, insert the following code into `src/Pyz/Yves/Product/Theme/default/product/detail.twig`: -```html -{% raw %}{{{% endraw %} fact_finder_recommendations({id: product.sku, mainId: product.idProductAbstract}, '@FactFinder/recommendations/products.twig') {% raw %}}}{% endraw %} -``` -To add recommendations widget to cart page, modify cart controller (`src/Pyz/Yves/Cart/Controller/CartController.php`) to add array of product ids into template variables: - -
-Click here to expand the code sample - -```php -getClient() - ->getQuote(); - - $factFinderSid = $request->cookies->get(FactFinderConstants::COOKIE_SID_NAME); - $quoteTransfer->setFactFinderSid($factFinderSid); - - $voucherForm = $this->getFactory() - ->getVoucherForm(); - - $cartItems = $this->getFactory() - ->createProductBundleGrouper() - ->getGroupedBundleItems($quoteTransfer->getItems(), $quoteTransfer->getBundleItems()); - - $cartItemsIds = []; - $cartItemsNames = []; - foreach ($cartItems as $cartItem) { - $cartItemsNames[] = $cartItem->getName(); - $cartItemsIds[] = $cartItem->getSku(); - } - - $stepBreadcrumbsTransfer = $this->getFactory() - ->getCheckoutBreadcrumbPlugin() - ->generateStepBreadcrumbs($quoteTransfer); - - $itemAttributesBySku = $this->getFactory() - ->createCartItemsAttributeProvider() - ->getItemsAttributes($quoteTransfer, $selectedAttributes); - - $promotionStorageProducts = $this->getFactory() - ->getProductPromotionMapperPlugin() - ->mapPromotionItemsFromProductStorage( - $quoteTransfer, - $request - ); - - $factFinderSdkProductCampaignRequestTransfer = $this->getFactory() - ->createFactFinderSdkProductCampaignRequestTransfer(); - $factFinderSdkProductCampaignRequestTransfer->setProductNumber($cartItemsIds); - $factFinderSdkProductCampaignRequestTransfer->setSid($factFinderSid); - - $campaigns = $this->getCampaigns( - $factFinderSdkProductCampaignRequestTransfer, - $cartItems - ); - - return $this->viewResponse([ - 'cart' => $quoteTransfer, - 'cartItems' => $cartItems, - 'attributes' => $itemAttributesBySku, - 'cartItemsIds' => $cartItemsIds, - 'cartItemsNames' => $cartItemsNames, - 'voucherForm' => $voucherForm->createView(), - 'stepBreadcrumbs' => $stepBreadcrumbsTransfer, - 'promotionStorageProducts' => $promotionStorageProducts, - 'campaigns' => $campaigns, - ]); - } - -... -``` -
-
- -Then add recommendations widget to cart page template `src/Pyz/Yves/Cart/Theme/default/cart/index.twig`: - -```twig -{% raw %}{{{% endraw %} fact_finder_recommendations({id: cartItemsIds, mainId: cartItemsIds}, '@FactFinder/recommendations/products.twig') {% raw %}}}{% endraw %} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.md deleted file mode 100644 index efd26a086d2..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Using FACT-Finder search suggestions -description: The FACT-Finder Suggest module enables you to provide customers with suggested search terms while they are entering a search term. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-suggest -originalArticleId: 0f7861dd-2789-44cb-958d-578f4fe8723e -redirect_from: - - /v1/docs/search-factfinder-suggest - - /v1/docs/en/search-factfinder-suggest -related: - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html ---- - -## Prerequisites - -The FACT-Finder Suggest module enables you to provide customers with suggested search terms while they are entering a search term. In this way, users do not necessarily have to enter the entire search term themselves but can choose a suggestion. As the users are presented with similar search queries, it enables them to select a suitable, more precise search term and save time when searching. The FACT-Finder Suggest entries are provided by the product information in the Search database as well as from the recent frequently searched and found search terms. The suggestions in this database are no longer linked to the data in the product database, which is why filtering by attributes (such as category) is unfortunately not possible by default. - -## Usage - -To check example implementation, please see [Fact Finder - Search Integration](/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder/fact-finder-search.html). Typing in a search box triggers an API suggest request. By default , use `/fact-finder/suggestions` to get suggestions. Or you can use the `FactFinderSdk` module to make a suggest request. - -It will return a `FactFinderSdkSuggestResponseTransfer` object that contains an array of suggestions. - -Basic parameters: - -* `query` - Query text. -* `sid` - FACT-Finder session id. - -Controller example: -```php -query->get('query', '*'); - - $factFinderSuggestRequestTransfer->setQuery($query); - $factFinderSuggestRequestTransfer->setSid($request->cookies->get(FactFinderConstants::COOKIE_SID_NAME)); - - $response = $this->getFactory() - ->getFactFinderClient() - ->getSuggestions($factFinderSuggestRequestTransfer); - - return $this->jsonResponse($response->getSuggestions()); -} - -... -``` - -`FactFinderSdkSuggestResponse` has array with suggests. FACT-Finder supports multiple suggest types. -The standard types are: Product name, Manufacturer, Category, Search term. We have created suggestion for Product name, Category, Search term, Brand in our demo. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md deleted file mode 100644 index 9ece8cebfd1..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Using FACT-Finder search -description: FACT-Finder suggests error-tolerant on-site search. FACT-Finder delivers relevant results even when spelling errors and typos occur. -last_updated: Oct 23, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-search -originalArticleId: 4dfba258-9483-4c08-ace1-095e4a5ee3da -redirect_from: - - /v1/docs/search-factfinder-search - - /v1/docs/en/search-factfinder-search - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder/fact-finder-search.html ---- - -## Prerequisites - -FACT-Finder suggests error-tolerant on-site search. The online shop's search function is its most powerful sales tool. - -FACT-Finder delivers relevant results even when spelling errors and typos occur. - -## Usage - -By default, you can use the `/fact-finder` route to see an example catalog page. Another option is to use FactFinderSdk module client to request FACT-Finder API. All parameters from `GET` request will be sent to the FACT-Finder API. - -As a response, you'll receive a `FactFinderSdkSearchResponseTransfer` object that contains data, after search navigation, bread crumbs, paging. - -Basic parameters: - -* `query` - The search term indicates the term or phrase that is to be used to search in the FACT- Finder database. -* `channel` - If your search environment consists of multiple channels, you can define what channel to search here. If no channel is specified, the first channel in the channel list is used. -* `page` - If a search result contains many results, they will be divided into pages. It limits the amount of data that has to be sent in one go. You can indicate what page should be returned. Page numbering starts with 1. -* `productsPerPage` - In the FACT-Finder Management Interface, you can define the number of results that will be returned on a page by default. To change the number, you can set it with this parameter. -* `sort` - By default, the result that is returned has been sorted for relevance. However, you can specify a different sort order here. -* `filter` - When a filter parameter is sent to FACT-Finder, the Search engine only returns results that correspond to the filter indicated. -* `searchField` - Normally FACT-Finder searches all fields defined as searchable. However, it is possible to search only one specific field as well. -* `noArticleNumberSearch` - Normally an article number search is carried out if the search term matches one or more set formats. You can also use parameters to prevent an article number search from being carried out. -* `sid` - Session ID. -* `useAsn` - Controls whether or not the ASN (after-search navigation block) is created. -* `useFoundWords` - FACT-Finder is able to return the words that were used to find the data record for the located records. -* `useCampaigns` - If you want to prevent the Campaign Manager from checking whether the search query matches a campaign, use this parameter. -* `navigation` - FACT-Finder can also replicate your entire shop navigation. -* `idsOnly` - The result normally contains all field information about the products that have been found. -* `generateAdvisorTree` - This parameter is used in conjunction with advisor campaigns. -* `disableCache` - This parameter controls whether or not the search result cache is used. -* `followSearch` - The parameter is automatically attached to all follow-up parameter sets of a search result. The parameter must not be passed on initial requests. -* `usePersonalization` - Allows the activation / deactivation of the queries personalization. -* `useSemanticEnhancer` - Allows activation / deactivation of the semantic enhancement of queries. -* `useAso` - Allows the activation / deactivation of the automatic search optimization. - -Controller example: - -
-Click here to expand the code sample - - ```php -query->all(); - - $factFinderSearchRequestTransfer->setRequest($requestArray); - - $ffSearchResponseTransfer = $this->getFactory() - ->getFactFinderClient() - ->search($factFinderSearchRequestTransfer); - - if ($ffSearchResponseTransfer->getCampaignIterator()->getHasRedirect()) { - return $this->redirectResponseExternal($ffSearchResponseTransfer->getCampaignIterator()->getRedirectUrl()); - - } - - $feedbackForm = $this->getFactory() - ->createFeedbackForm(); - - if (!$ffSearchResponseTransfer->getResult()) { - $this->addErrorMessage('Search is not available at the moment'); - } - - return [ - 'searchResponse' => $ffSearchResponseTransfer, - 'pagingRote' => 'fact-finder', - 'lang' => Store::getInstance()->getCurrentLanguage(), - 'query' => isset($requestArray['query']) ? $requestArray['query'] : '', - 'page' => isset($requestArray['page']) ? $requestArray['page'] : '', - 'feedbackForm' => $feedbackForm->createView(), - ]; - } - -... -``` -
-
- -The FactFinder module includes templates. Templates can be used for changing the default partial templates in the following way: - -In `src/Pyz/Yves/Catalog/Theme/default/catalog/catalog.twig` you can put: - -```php -{% raw %}{%{% endraw %} include '@FactFinder/layout/catalog/filters.twig' with { - afterSearchNavigation: factFinderSearchResponse.getAfterSearchNavigation -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} include '@FactFinder/layout/partials/sort.twig' {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} include '@FactFinder/search/partials/pagination.twig' with { - showAlwaysFirstAndLast: true - } {% raw %}%}{% endraw %} -``` - -According to the template examples, you can set up default demoshop template for using FACT-Finder responses. - -## After Search - -`FactFinderSdkSearchResponseTransfer` has campaign iterator, bread crumbs, paging, search result, sorting parameters, result per page option, filter groups. - -You can build any front end and templates using those options in the response transfer object. - -### Filter Groups - -Default settings in the FACT-Finder admin panel are: - -For categories filter: - -* Source field -`CategoryPath` -* Field type -`CategoryPath` - -For price filter: - -* Source field - Price -* Field type - Number -* Range type - Slider - -For stock filter: - -* Source field - Stock -* Field type - Text -* Selection Type - Multi-select - -Filter groups have the following options (name - type): - -* filters -`FactFinderSdkDataFilter[]` -* name - string -* `detailedLinkCount` - int -* unit - string -* `isRegularStyle` - bool -* `isSliderStyle` - bool -* `isTreeStyle` - bool -* `isMultiSelectStyle` - bool -* `hasPreviewImages` - bool -* `hasSelectedItems` - bool -* `isSingleHideUnselectedType` - bool -* `isSingleShowUnselectedType` - bool -* `isMultiSelectOrType` - bool -* `isMultiSelectAndType` - bool -* `isTextType` - bool -* `isNumberType` - bool - -Filter has the following options (name - type): - -* item -`FactFinderSdkDataItem` -* `fieldName` - string -* `matchCount` - int -* `clusterLevel` - int -* `previewImage` - string -* `hasPreviewImage` - bool -* `absoluteMinimum` - string -* `absoluteMaximum` - string -* `selectedMinimum` - string -* `selectedMaximum` - string - -### Bread Crumbs - -Bread crumbs have following options (name - type): - -* item -`FactFinderSdkDataItem` -* `isSearchBreadCrumb` - bool -* `isFilterBreadCrumb` - bool -* `fieldName` - string - -### Paging - -Paging has the following options (name - type): - -* `pageCount` - int -* `firstPage` -`FactFinderSdkDataPage` -* `lastPage` -`FactFinderSdkDataPage` -* `previousPage` -`FactFinderSdkDataPage` -* `currentPage` -`FactFinderSdkDataPage` -* `nextPage` -`FactFinderSdkDataPage` - -Data page has the following options (name - type): - -* item -`FactFinderSdkDataItem` -* `pageNumber` - int - -Data item has the following options (name - type): - -* label - string -* url - string -* selected - bool - -### Sorting Options - -Is array of data items. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.md deleted file mode 100644 index 6d60e65767a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: Using FACT-Finder tracking -description: Tracking information lets the FACT-Finder Search tool automatically learn from the user behavior. -last_updated: Oct 23, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-factfinder-tracking -originalArticleId: 578b4f90-2349-4306-a32c-2a1a23327652 -redirect_from: - - /v1/docs/search-factfinder-tracking - - /v1/docs/en/search-factfinder-tracking -related: - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: FACT-Finder - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/analytics/fact-finder.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html ---- - -## Prerequisites - -Tracking information lets the FACT-Finder Search tool automatically learn from the user behavior. - -The data provided through this interface can be used for a variety of purposes. They include the tracking of events such as users clicking on a detail page, placing a product into the shopping cart and purchasing it. The information can form the basis for automated search optimization. It automatically improves the search result on the basis of the established consumer behavior. Information about product clicks, shopping cart, and purchase events, in other words, the user behavior, is required for the Personalization module, which provides tailored search results for each user. The information on product purchases can also be used as a basis for the Recommendation Engine module. - -Please note, that the personalization can only work if a proper session ID is sent with each search request. - -## Usage - -By default, you can use the `/fact-finder/track` route. According to the FACT-Finder documentation, you can use tracking `GET` parameters . The user session ID will be appended on a server side. - -* **General Parameters**: - - `id` - ID of the item for which information is to be sent. - - `masterId` (optional) - If your shop contains item versions and you need to transmit the item version number with the id parameter, you will need to transmit the master item number using this parameter to ensure that the products and the possible events can be assigned to each other. - - `channel` - The name of the FACT-Finder channel in which the search was conducted. - - `sid` - Use it to pass the user's session identifier. - - `event` - This parameter specifies the event type. Use the following values for the various types: - + click - + cart - + checkout - + login - + recommendationClick - + feedback - - `title` (optional) - The item name. - - `userId` (optional) - Use it to pass a user identifier. As with the session ID, it can be anonymized. - - `cookieId` (optional) - You use this parameter to pass a token that identifies the user over a longer period of time, even when not being logged in to the shop. -* Click on the detail page: - - `sid` - Use it to pass the user's session identifier. - - `query` - The search term for which the user has searched. - - `pos` - The position of the product in the search results. - - `origPos` - It transmits the original position of the item in the search result. - - `page` - The number of the search result page on which the selected product was displayed. - - `pageSize` (optional) - The number of products per search result page at the time the click was executed. - - `origPageSize` - The default number of products per search result page. - - `simi` (optional) - The FACT-Finder similarity value for the respective product. - - `campaign` - This field has the campaign ID as its value. -* Shopping basket and purchase information: - - `count` - Quantity of product purchased. - - `price` (optional) - Product price. - - `campaign` - The search result via a campaign. This field has the campaign ID as its value. -* User login: - - `sid` - Use this to pass the user's session identifier. - - `userId` - Use this to pass a user identifier. Like the session ID, this can be anonymized. -* Recommendation Engine click: - - `mainId` - ID of the article for which the clicked article was recommended. -* Search result feedback: - - `query` - The search term for which a search was conducted and on which feedback has been provided. - - `positive` - Send the value true at this point if the customer provided positive feedback. Send false if negative feedback was provided on the result. - - `message` (optional) - If the customer left a message as justification of their opinion, you can send it using this parameter. -* Shop cachehit: - - `page` - The number of the search result page on which the selected product was displayed. - - `pageSize` - The number of products per search result page at the time the click was executed. - - `query` - The search term for which a search was conducted and on which feedback has been provided. - - `hitCount` - The amount of products found in the search result. - - `searchTime` - The time which was needed to create the search result. - - `bestSimi` - Similarity of the best product. - - `minSimi` - Similarity of the last product. - - `filterfieldName` (optional) - Information about active filters in the search result. - - `searchField` (optional) - The field for which the search was performed in case the search was limited to a specific field. - - `customSorting` (optional) - If the default sorting was not used for the search result, then please send a true. - - `additionalInfo`` (optional) - You may use this parameter to add something to the log entry, such as to enable searching the log for a specific entry. -* Suggest Tracking: - - `queryFromSuggest` - This parameter indicates that the FACT-Finder query was triggered through a selection from the suggestion list. In this case send the parameter with the value true. - - `userInput` - Please use this parameter to send the order of letters the shop user entered until the search query was triggered. - -To use tracking on the back-end, provide the dependency to your module dependency provider. - -
-Click here to expand the code sample - - ```php -getLocator()->factFinderSdk()->client(); - }; - - return $container; - } - -{% raw %}{%{% endraw %} endhighlight {% raw %}%}{% endraw %} - -Add a new function to your module factory. - -{% raw %}{%{% endraw %} highlight php linenos {% raw %}%}{% endraw %} -getProvidedDependency(YourBundleDependencyProvider::FACT_FINDER_CLIENT); - } -``` -
-
- -Login tracking could be added to a `Pyz\Yves\Customer\Plugin\Provider\CustomerAuthenticationSuccessHandler` on `AuthenticationSuccess` function. - -Example of a user login tracking function: - -```php -setEvent(CustomerConstants::LOGIN_TRACKING); - $trackingTransfer->setSid($request->cookies->get(FactFinderConstants::COOKIE_SID_NAME)); - $trackingTransfer->setUserId(md5($customer->getEmail())); - - $this->factFinderSdkClient->track($trackingTransfer); - } -``` - -Shopping basket tracking function could be added to a `Yves\Cart\Handler\CartOperationHandler` changeQuantity and add functions. - -Add a session client and a fact finder sdk client to the `CartOperationHandler` class via a `DependencyProvider`. - -Example of an add to cart tracking function: - -```php -getCurrentItemTransfer($quoteTransfer, $sku); - - if ($trackItemTransfer) { - $trackRequestTransfer = new FactFinderSdkTrackingRequestTransfer(); - $trackRequestTransfer->setId($trackItemTransfer->getSku()) - ->setMasterId() // generate and add an abstract product sku - ->setEvent(static::CART_TRACK_EVENT_NAME) // static::CART_TRACK_EVENT_NAME === 'cart' - ->setCount($quantity) - ->setPrice($trackItemTransfer->getUnitPrice() / 100) - ->setSid($this->sessionClient->getId()); - - return $this->factFinderSdkClient->track($trackRequestTransfer); - } - - return new FactFinderSdkTrackingResponseTransfer(); - } -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/installing-and-confiugring-minubo.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/installing-and-confiugring-minubo.md deleted file mode 100644 index dfb0fe563da..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/analytics/installing-and-confiugring-minubo.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Installing and configuring Minubo -description: Learn how to install and integrate Minubo -template: howto-guide-template ---- - -The Minubo module provides functionality to export order and customer data that was updated since last run of export. Data exported to Amazon S3 bucket as file with list of JSON-objects. - -## Export modes - -Export runs in two modes: - -1. Automatic mode - every 15 minutes (default) -2. Manual mode - using console command: -```bash -vendor/bin/console minubo:export:data -``` -As a result, the module puts two files `Customer_TIMESTAMP.json and Order_TIMESTAMP.json` with updated data to Amazon S3 bucket. If there were no changes the module would put empty files. - -## Installing and configuring Minubo - -To install and configure Minubo, do the following: - -1. To install Minubo run next command in the console: -```bash -composer require spryker-eco/minubo -``` -2. Copy over the content from `config/config.dist.php` to `config_default.php` and add the values: -```php... - use Spryker\Service\FlysystemAws3v3FileSystem\Plugin\Flysystem\Aws3v3FilesystemBuilderPlugin; - use Spryker\Shared\FileSystem\FileSystemConstants; - use SprykerEco\Shared\Minubo\MinuboConstants; - ... - $config[FileSystemConstants::FILESYSTEM_SERVICE] = [ - 'minubo' => [ - 'sprykerAdapterClass' => Aws3v3FilesystemBuilderPlugin::class, - 'root' => '/minubo/', - 'path' => 'data/', - 'key' => '..', - 'secret' => '..', - 'bucket' => '..', - 'version' => 'latest', - 'region' => '..', - ], - ]; - - $config[MinuboConstants::MINUBO_FILE_SYSTEM_NAME] = 'minubo'; - $config[MinuboConstants::MINUBO_BUCKET_DIRECTORY] = '/minubo/data/'; - $config[MinuboConstants::MINUBO_CUSTOMER_SECURE_FIELDS] = [ - 'password', - 'restore_password_date', - 'restore_password_key', - 'registration_key', - ]; - ... -``` -3. Copy over the content from `config/jobs.dist.php` to` jobs.php`: -```php... - $jobs[] = [ - 'name' => 'minubo-export', - 'command' => '$PHP_BIN vendor/bin/console minubo:export:data', - 'schedule' => '*/15 * * * *', - 'enable' => true, - 'run_on_non_production' => false, - 'stores' => ['DE'], - ]; - ... -``` -4. Add Minubo console to `ConsoleDependencyProder`: -```php... - use SprykerEco\Zed\Minubo\Communication\Console\MinuboConsole; - - class ConsoleDependencyProvider extends SprykerConsoleDependencyProvider - { - protected function getConsoleCommands(Container $container) - { - $commands = [ - ... - new MinuboConsole(), - ]; - ... - return $commands; - } - ... -``` -5. Add or update `FlysystemDependencyProvider` to project Service Layer: -```php - - - - - - - - - - - - - - - -``` - -The payload for Customer loads from `\SprykerEco\Zed\Episerver\Business\Mapper\Customer\CustomerMapper::buildPayload`, for Order from `\SprykerEco\Zed\Episerver\Business\Mapper\Order\AbstractOrderMapper` and for Newsletter from `\SprykerEco\Zed\Episerver\Business\Mapper\Customer\CustomerNewsletterMapper`. - -The abstract classes can be extended and changed in `\SprykerEco\Zed\Episerver\Business\EpiserverBusinessFactory`. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/episerver-order-reference-commands.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/episerver-order-reference-commands.md deleted file mode 100644 index 4888a1bb9c0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/episerver-order-reference-commands.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Episerver order reference commands -description: Learn about the order reference commands for Episerver in Spryker. -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -The Episerver module has four different commands: - -* `\SprykerEco\Zed\Episerver\Communication\Plugin\Oms\Command\EpiserverNewOrderPlugin` -* `\SprykerEco\Zed\Episerver\Communication\Plugin\Oms\Command\EpiserverOrderCanceledPlugin` -* `\SprykerEco\Zed\Episerver\Communication\Plugin\Oms\Command\EpiserverPaymentNotReceivedPlugin` -* `\SprykerEco\Zed\Episerver\Communication\Plugin\Oms\Command\EpiserverShippingConfirmationPlugin` - - -You can use these commands in `\Pyz\Zed\Oms\OmsDependencyProvider::getCommandPlugins` - -**OmsDependencyProvider** - -```php -... -use SprykerEco\Zed\Episerver\Communication\Plugin\Oms\Command\EpiserverNewOrderPlugin; -... - -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection - */ -protected function getCommandPlugins(Container $container) -{ - $collection = parent::getCommandPlugins($container); - - ... - $collection->add(new EpiserverNewOrderPlugin(), 'Episerver/SendNewOrderRequest'); - $collection->add(new EpiserverOrderCanceledPlugin(), 'Episerver/SendOrderCanceledRequest'); - $collection->add(new EpiserverPaymentNotReceivedPlugin(), 'Episerver/PaymentNotReceivedRequest'); - $collection->add(new EpiserverShippingConfirmationPlugin(), 'Episerver/ShippingConfirmedRequest'); - ... - - return $collection; -} -``` - -After that you are ready to use commands in the OMS setup: - -**OmsDependencyProvider** - -```html - - - - - - -``` - -**oms-statemachine** - -```html - - - - - - - - - - exclude from customer - - - exclude from customer - - - - - - - new - shipping confirmed - authorize - - - - shipping confirmed - payment pending - shipped_confirmed - - - - new - invalid - authorize - - - - payment pending - cancelled - pay - - - - cancelled - optivo_cancelled - cancel - - - - - - - - - - - - - -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.md deleted file mode 100644 index 0b00bf3b75d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Installing and configuring Episerver -description: Install and configure Episerver into Spryker Commerce OS -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/episerver-installation-and-configuration -originalArticleId: a09e3db5-bd7b-46b3-831e-23d81cbdb954 -redirect_from: - - /v1/docs/episerver-installation-and-configuration - - /v1/docs/en/episerver-installation-and-configuration - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.html ---- - -## Installation - -To install Episerver, run the command in the console: -```php -composer require spryker-eco/episerver -``` - -## Configuration - -To set up the Episerver initial configuration, use the credentials received from your Episerver admin page. - -The `REQUEST_BASE_URL` parameter should be: `https://api.campaign.episerver.net/` - -To get `ORDER_LIST_AUTHORIZATION_CODE` or `CUSTOMER_LIST_AUTHORIZATION_CODE`, go to: - -Menu → API overview → SOAP API → Recipient lists → (Click one of your lists here) → Manage authorization codes → Authorization code - -To get any `...MAILING_ID`, go to: - -Menu → Transactional mails → ID - -```php -$config[EpiserverConstants::REQUEST_BASE_URL] = 'https://api.campaign.episerver.net/'; -$config[EpiserverConstants::REQUEST_TIMEOUT] = 30; - -$config[EpiserverConstants::ORDER_LIST_AUTHORIZATION_CODE] = 'QJd9U0M9xssRGhnJrNr5ztt9FQa2x1wA'; -$config[EpiserverConstants::CUSTOMER_LIST_AUTHORIZATION_CODE] = 'QJd9U0M9xssRGhnJrNr5ztt9FQa2x1wA'; - -$config[EpiserverConstants::ORDER_NEW_MAILING_ID] = '237667360304'; -$config[EpiserverConstants::ORDER_CANCELLED_MAILING_ID] = '237667360304'; -$config[EpiserverConstants::ORDER_SHIPPING_CONFIRMATION_MAILING_ID] = '237667360304'; -$config[EpiserverConstants::ORDER_PAYMENT_IS_NOT_RECEIVED_MAILING_ID] = '237667360304'; - -$config[EpiserverConstants::EPISERVER_CONFIGURATION_MAILING_ID_LIST] = [ - CustomerRegistrationMailTypePlugin::MAIL_TYPE => '243323625271', - CustomerRestoredPasswordConfirmationMailTypePlugin::MAIL_TYPE => '243646188958', - CustomerRestorePasswordMailTypePlugin::MAIL_TYPE => '243646188953', -]; -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/integrating-episerver.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/integrating-episerver.md deleted file mode 100644 index 0c348fc915e..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/episerver/integrating-episerver.md +++ /dev/null @@ -1,492 +0,0 @@ ---- -title: Integrating Episerver -description: Integrate Episerver in the Spryker Commerce OS -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -This article provides step-by-step instructions on integrating the Episerver module into your project. - -## Prerequisites -Prior to integrating Episerver into your project, make sure you [installed and configured](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.html) the Episerver module. - -## Customer Registration / Reset Password / Reset Rassword Confirm Event - -The Episerver module has `SprykerEco\Zed\Episerver\Communication\Plugin\Customer\EpiserverCustomerMailPlugin`. - -To use it, set up `provideBusinessLayerDependencies` in the class `Pyz\Zed\Mail\MailDependencyProvider`, for example: - -**MailDependencyProvider** - -```php - ->addProvider(new EpiserverCustomerMailPlugin(), [ - CustomerRegistrationMailTypePlugin::MAIL_TYPE, - CustomerRestoredPasswordConfirmationMailTypePlugin::MAIL_TYPE, - CustomerRestorePasswordMailTypePlugin::MAIL_TYPE, -]) -``` - -## Customer (Un)Subscribe For Newsletter - -The Episerver module has `\SprykerEco\Zed\Episerver\Business\Mapper\Customer\CustomerNewsletterMapper`. - -To use it, set up `provideBusinessLayerDependencies` in the class `Pyz\Zed\Mail\MailDependencyProvider`, for example: - -**MailDependencyProvider** - -```php -->addProvider(new EpiserverNewsletterSubscriptionMailPlugin(), [ - NewsletterSubscribedMailTypePlugin::MAIL_TYPE, - NewsletterUnsubscribedMailTypePlugin::MAIL_TYPE, - CustomerChangeProfileMailTypePlugin::MAIL_TYPE, -]) -``` - -Add a page for (un)subscribing on your site's side. To complete it, first you need a controller: - -**NewsletterController** - -```php -query->get('id', ''); - if ($subscriberKey === '') { - return new RedirectResponse('/'); - } - $newsletterSubscriber = new NewsletterSubscriberTransfer(); - $newsletterSubscriber->setSubscriberKey($subscriberKey); - $newsletterSubscriptionApprovalResultTransfer = $this->getFactory() - ->getNewsletterSubscriptionClient() - ->approveDoubleOptInSubscriber($newsletterSubscriber); - if ($newsletterSubscriptionApprovalResultTransfer->getIsSuccess() === false) { - return new RedirectResponse('/'); - } - return $this->view([], [], '@NewsletterPage/views/subscription-success/subscription-success.twig'); - } - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * - * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Spryker\Yves\Kernel\View\View - */ - public function unsubscribeAction(Request $request) - { - $subscriberKey = $request->query->get('id', ''); - if ($subscriberKey === '') { - return new RedirectResponse('/'); - } - $newsletterSubscriberTransfer = new NewsletterSubscriberTransfer(); - $newsletterSubscriberTransfer->setSubscriberKey($subscriberKey); - $newsletterSubscriptionRequestTransfer = new NewsletterSubscriptionRequestTransfer(); - $newsletterSubscriptionRequestTransfer->setNewsletterSubscriber($newsletterSubscriberTransfer); - $newsletterSubscriptionRequestTransfer->addSubscriptionType((new NewsletterTypeTransfer()) - ->setName(NewsletterConstants::DEFAULT_NEWSLETTER_TYPE)); - $newsletterSubscriptionResponseTransfer = $this->getFactory() - ->getNewsletterSubscriptionClient() - ->unsubscribe($newsletterSubscriptionRequestTransfer); - if ($newsletterSubscriptionResponseTransfer->getSubscriptionResults()[0]->getIsSuccess() === false) { - return new RedirectResponse('/'); - } - return $this->view([], [], '@NewsletterPage/views/unsubscription-success/unsubscription-success.twig'); - } -} -``` - -Expand the factory like this: - -**NewsletterPageFactory** - -```php -getProvidedDependency(NewsletterPageDependencyProvider::CLIENT_NEWSLETTER_SUBSCRIPTION); - } -} -``` - -`CLIENT_NEWSLETTER_SUBSCRIPTION` should be defined like this: - -**NewsletterPageDependencyProvider** - -```php -addNewsletterClient($container); - $container = $this->addCustomerClient($container); - $container = $this->addNewsletterSubscriptionClient($container); - return $container; - } - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addNewsletterSubscriptionClient(Container $container) - { - $container[static::CLIENT_NEWSLETTER_SUBSCRIPTION] = function (Container $container) { - return new NewsletterPageToNewsletterClientBridge($container->getLocator()->newsletter()->client()); - }; - return $container; - } -} -``` - -Prepare `NewsletterPageToNewsletterClientBridge`: - -**NewsletterPageToNewsletterClientBridge** - -```php -newsletterClient->approveDoubleOptInSubscriber($newsletterSubscriber); - } -} -``` - -And a contract for it: - -**NewsletterPageToNewsletterClientInterface** - -```php -buildRoute('/newsletter/success', 'NewsletterPage', 'Newsletter', 'successAction'); - $routeCollection->add(static::ROUTE_NAME_CUSTOMER_SUBSCRIBE, $route); - - $route = $this->buildRoute('/newsletter/unsubscribe', 'NewsletterPage', 'Newsletter', 'unsubscribeAction'); - $routeCollection->add(static::ROUTE_NAME_CUSTOMER_SUBSCRIBE, $route); - - return $routeCollection; - } -} -``` - -A small template for a subscription: - -**subscription-success** - -```html -{% raw %}{%{% endraw %} extends template('page-layout-main') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - title: 'newsletter.subscription.success' | trans -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block pageInfo {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-

{% raw %}{{{% endraw %}data.title{% raw %}}}{% endraw %}

-
-{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -And the second one is almost the same: - -**unsubscription-success** - -```html -{% raw %}{%{% endraw %} extends template('page-layout-main') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - title: 'newsletter.unsubscription.success' | trans -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block pageInfo {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-

{% raw %}{{{% endraw %}data.title{% raw %}}}{% endraw %}

-
-{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -## Update User Data - -In case you want to change user data on the Episerver side, you need to extend the Customer model - -**Customer** - -```php -getNewPassword())) { - $customerResponseTransfer = $this->updatePassword(clone $customerTransfer); - if ($customerResponseTransfer->getIsSuccess() === false) { - return $customerResponseTransfer; - } - } - $customerResponseTransfer = $this->createCustomerResponseTransfer(); - $customerResponseTransfer->setCustomerTransfer($customerTransfer); - $customerEntity = $this->getCustomer($customerTransfer); - $customerEntity->fromArray($customerTransfer->modifiedToArray()); - if ($customerTransfer->getLocale() !== null) { - $this->addLocaleByLocaleName($customerEntity, $customerTransfer->getLocale()->getLocaleName()); - } - $customerResponseTransfer = $this->validateCustomerEmail($customerResponseTransfer, $customerEntity); - if (!$customerEntity->isModified() || $customerResponseTransfer->getIsSuccess() !== true) { - return $customerResponseTransfer; - } - $customerEntity->save(); - $this->sendCustomerProfileUpdateMail($customerTransfer); - if ($customerTransfer->getSendPasswordToken()) { - $this->sendPasswordRestoreMail($customerTransfer); - } - return $customerResponseTransfer; - } - /** - * @param \Generated\Shared\Transfer\CustomerTransfer $customerTransfer - * - * @return void - */ - private function sendCustomerProfileUpdateMail(CustomerTransfer $customerTransfer): void - { - $mailTransfer = new MailTransfer(); - $mailTransfer->setType(CustomerChangeProfileMailTypePlugin::MAIL_TYPE); - $mailTransfer->setCustomer($customerTransfer); - $mailTransfer->setLocale($customerTransfer->getLocale()); - $this->mailFacade->handleMail($mailTransfer); - } -} -``` - -Set up a factory for the Customer module on the project level - -**CustomerBusinessFactory** - -```php -getQueryContainer(), - $this->createCustomerReferenceGenerator(), - $this->getConfig(), - $this->createEmailValidator(), - $this->getMailFacade(), - $this->getLocaleQueryContainer(), - $this->getStore(), - $this->createCustomerExpander(), - $this->getPostCustomerRegistrationPlugins() - ); - } -} -``` - -Create one more mail plugin for Customer on data changing (without a body) - -**CustomerChangeProfileMailTypePlugin** - -```php -extend(self::MAIL_PROVIDER_COLLECTION, function (MailProviderCollectionAddInterface $mailProviderCollection) { - $mailProviderCollection - ... - ->addProvider(new EpiserverNewsletterSubscriptionMailPlugin(), [ - ... - CustomerChangeProfileMailTypePlugin::MAIL_TYPE, - ... - ]); - return $mailProviderCollection; -}); -``` - - - -## API Requests diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/installing-and-configuring-inxmail.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/installing-and-configuring-inxmail.md deleted file mode 100644 index 7c9cac7c688..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/installing-and-configuring-inxmail.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Installing and configuring Inxmail -description: Install and configure Inxmail -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -This document describes how to install and configure Inxmail. - -## Installation - -To install Inxmail run the command in the console: -```php - composer require spryker-eco/inxmail:1.1.0 - ``` - -## Configuration - -{% info_block infoBox %} - -The module supports only a subset of Inxmail REST API—transactional emails (events). - -{% endinfo_block %} - -To set up the Inxmail initial configuration, use the credentials you received from your Inxmail server. Key ID and secret you can get from Settings → API keys panel on Inxmail server: -```php - $config[InxmailConstants::API_EVENT_URL] = ''; - $config[InxmailConstants::KEY_ID] = ''; - $config[InxmailConstants::SECRET] = ''; - ``` - -Event names depend on your events names on Inxmail server: -```php - $config[InxmailConstants::EVENT_CUSTOMER_REGISTRATION] = ''; - $config[InxmailConstants::EVENT_CUSTOMER_RESET_PASSWORD] = ''; - $config[InxmailConstants::EVENT_ORDER_NEW] = ''; - $config[InxmailConstants::EVENT_ORDER_SHIPPING_CONFIRMATION] = ''; - $config[InxmailConstants::EVENT_ORDER_CANCELLED] = ''; - $config[InxmailConstants::EVENT_ORDER_PAYMENT_IS_NOT_RECEIVED] = ''; - ``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/integrating-inxmail.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/integrating-inxmail.md deleted file mode 100644 index 0c830e8620e..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/integrating-inxmail.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Integrating Inxmail -description: Integrate Inxmail in the Spryker Commerce OS -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -This document desribes how to integrate Inxmail. - -### New customer registration event - -Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin`. This plugin implements `PostCustomerRegistrationPluginInterface` and can be used in `\Pyz\Zed\Customer\CustomerDependencyProvider::getPostCustomerRegistrationPlugins.` - -```php - ... - use SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin - ... - - /** - * @return \Spryker\Zed\CustomerExtension\Dependency\Plugin\PostCustomerRegistrationPluginInterface[] - */ - protected function getPostCustomerRegistrationPlugins(): array - { - return [ - ... - new InxmailPostCustomerRegistrationPlugin(), - ... - ]; - } - ``` - -### The customer asked to reset password event - -Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin`. This plugin implements `MailTypePluginInterface` and can be used in `\Pyz\Zed\Mail\MailDependencyProvider::provideBusinessLayerDependencies` - -```php - ... - use \SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin; - ... - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - public function provideBusinessLayerDependencies(Container $container) - { - $container = parent::provideBusinessLayerDependencies($container); - - $container->extend(self::MAIL_TYPE_COLLECTION, function (MailTypeCollectionAddInterface $mailCollection) { - $mailCollection - ... - ->add(new InxmailCustomerRestorePasswordMailTypePlugin()) - ... - - return $mailCollection; - }); - - ... - - return $container; - } - ``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-api-requests.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-api-requests.md deleted file mode 100644 index 80720c63f69..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-api-requests.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Inxmail API requests -description: Learn about the API requests for Inxmail in Spryker. -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -This document contains API requests for Inxmail. - -`\SprykerEco\Zed\Inxmail\Business\Api\Adapter\EventAdapter` which extend `\SprykerEco\Zed\Inxmail\Business\Api\Adapter\AbstractAdapter` contains all needed data for sending data to Inxmail for events. - -It sends the request via ` \Generated\Shared\Transfer\InxmailRequestTransfer` -```xml - - - - - - - - - - - ``` - -The payload for customer loads from `\SprykerEco\Zed\Inxmail\Business\Mapper\Customer\AbstractCustomerMapper::getPayload` and for order from `\SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper`. Abstract classes can be extended and changed in `\SprykerEco\Zed\Inxmail\Business\InxmailBusinessFactory.` - -For right URL's to images in the email body you should extend `\SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper` and implement protected method `getImageItemLink(ArrayObject $images)`. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-order-referenced-commands.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-order-referenced-commands.md deleted file mode 100644 index 524779fd863..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/inxmail/inxmail-order-referenced-commands.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Inxmail order referenced commands -description: Learn about the order referenced commands for Inxmail in Spryker. -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -Inxmail module has four different commands: - -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailOrderCanceledPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailPaymentNotReceivedPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailShippingConfirmationPlugin` - -You can use this commands in `\Pyz\Zed\Oms\OmsDependencyProvider::getCommandPlugins` -```php - ... - use SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin; - ... - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection - */ - protected function getCommandPlugins(Container $container) - { - $collection = parent::getCommandPlugins($container); - - ... - $collection->add(new InxmailNewOrderPlugin(), 'Inxmail/SendNewOrderRequest'); - ... - - return $collection; - } - ``` - -After that you are ready to use commands in OMS setup: -```php - - - - - - - - - - ``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/adding-the-econda-tracking-code.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/adding-the-econda-tracking-code.md deleted file mode 100644 index 81773fe0a55..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/adding-the-econda-tracking-code.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Adding the Econda tracking code -description: Add the Econda tracking code into Spryker Commerce OS. -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/econda-tracking -originalArticleId: ce0503f0-2a20-4823-88de-9f480839f63b -redirect_from: - - /v1/docs/econda-tracking - - /v1/docs/en/econda-tracking - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/econda-tracking.html - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/adding-the-econda-tracking-code.html ---- - -Now that we have integrated Econda to the website we can start adding the tracking code. - -## Prerequisites - -To add tracking, you should also be familiar with [Twig.](/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.html) - -To enable Econda tracking for your application, you need to add `econda_tracker.twig` to the proper page template, for example: -```php -{% raw %}{%{% endraw %} include -"@econda/partials/econda_tracker.twig" with { - 'content': '/catalog/' ~ ((category is not null) ? category.name ~ '/' : '') ~ product.name, - 'product': product, - 'category': category -} {% raw %}%}{% endraw %} -``` - -To enable Econda tracking for your application, you need to download a personalized JavaScript library from the econda Analytics Configuration menu (you can find detailed instructions on this on [https://support.econda.de/display/MONDE/Tracking-Bibliothek+herunterladen](https://support.econda.de/display/MONDE/Tracking-Bibliothek+herunterladen)). - -These instructions assume you are using Antelope for your Yves assets management. If your project uses other frontend automation you can still use the instructions as guidelines. - -Before getting started we recomend that you read the following topics: [asset management](/docs/scos/dev/legacy-demoshop/201811.0/frontend-overview.html#asset-management) -and [Twig](/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.html) - -## Installing Assets - -After successfully downloading the `emos.js` you need to register it in Yves. One way is to create an econda folder in `assets/Yves/` folder and to copy it to SDK folder (look at picture below) - -Now you add an entry point for loading econda specific JS by adding `econda.js` file in Econda folder. - - - -Now you need to add a require line: - -```bash -require('./sdk/emos2'); //make double check the path to emos2.js -``` - -Now we need to add our new econda module to `entry.js` - - - -by adding a line `require('js/econda/econda');` - -## Integration - -Tracking is highly customizable and it depends on your setup. Please refer to [econda official documentation](https://support.econda.de/display/INDE). - -Here is a sample `econda-tracking.js` you can use as a help to integrate tracking to your website: -
-Sample econda-tracking.js - -```js -'use strict'; - -var $ = require('jquery'); - -module.exports = { - init: function () { - window.emosTrackVersion = 2; //version of tracking lib that you are using - var hashCode = function(str){ - var hash = 0, char; - if (str.length == 0) return hash; - for (i = 0; i < str.length; i++) { - char = str.charCodeAt(i); - hash = ((hash<<5)-hash)+char; - hash = hash & hash; // Convert to 32bit integer - } - if (hash < 0) {hash = -hash;} - return "" + hash; - }; - - var emospro = { - siteid: window.econda_siteid, - content: window.econda_tracking_content, - langid: $("html").prop("lang"), - pageId: hashCode(window.location.href) - }; - - if (window.econda_search_query_string) { - emospro.search = [window.econda_search_query_string, window.econda_search_number_results]; - } - - if (window.econda_register_result) { - emospro.register = [window.econda_register_result, 0]; - } else if (window.econda_register_result == false) { - emospro.register = [0, 1]; - } - - if (window.econda_login_result) { - emospro.login = [window.econda_login_result, 0]; - } else if (window.econda_login_result == false) { - emospro.login = [0, 1]; - } - - if (window.econda_newsletter_subscription) { - emospro.Target = ['newsletter', 'Default newsletter subscription', 1, 'd']; - } - - if (window.econda_product_name) { - emospro.ec_Event = [ - { - type: 'view' , - pid: window.econda_product_sku, - sku: window.econda_product_sku, - name: window.econda_product_name, - price: window.econda_product_price, - group: window.econda_category_name, - count: 1 - } - ]; - } - - if (window.econda_billing_order_value) { - emospro.billing = [ - window.econda_billing_invoice_number, - econda_billing_customer_id, - econda_billing_location, - econda_billing_order_value - ]; - } - - if (window.econda_order_process) { - emospro.orderProcess = window.econda_order_process; - } - - if (window.econda_bought_product_name & window.econda_bought_product_name.length > 0) { - emospro.ec_Event = []; - for (var i = 0, len = econda_bought_product_name.length; i < len; i++) { - emospro.ec_Event.push({ - type: 'buy' , - pid: window.econda_bought_product_sku[i], - sku: window.econda_bought_product_sku[i], - name: window.econda_bought_product_name[i], - price: window.econda_bought_product_price[i], - count: window.econda_bought_product_count[i] - }); - } - } - - window.emosPropertiesEvent(emospro); - //console.log('econda tracking sent:'); - //console.log(emospro); - } -}; -``` -
-
-Now you need to register your tracking module in econda.js by adding - -``` php -var econdaTracking = require('./econda-tracking'); -econdaTracking.init(); -``` -to `econda.js`. - -### Adding a Tracking Code to Twig -The econda module comes with a partial twig template `econda_tracker.twig` that you can use as an example in your project. - -
-Twig Template - -```php - -{% raw %}{%{% endraw %} if query is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if number is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} if product is defined {% raw %}%}{% endraw %} - - - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} if category is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if invoiceNumber is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if location is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if customerId is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if orderValue is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if orderProcess is defined {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if items is defined {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for item in items {% raw %}%}{% endraw %} - - {##} - - - - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} for econda_register_result in app.session.flashbag.get('flash.vars.register') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} for econda_login_result in app.session.flashbag.get('flash.vars.login') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} for econda_newsletter_subscription_result in app.session.flashbag.get('flash.vars.newsletter.subscription') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -``` -
-
- -List of the accepted template variables: - -|Name |Description |Notes | -| --- | --- | --- | -| content |Path of the current page, as displayed in econda Monitor. Use slashes (“/”) to separate path components for drill-down analysis. | Translated into CONTENTLABEL parameter | -|query |Search query (could be passed to the search results page template) | Translated into QUERY parameter | -|number |Number of results returned by the search query (can be passed to the search results page template) | Translated into NUMBEROFHITS parameter | -|product | Associative array representing product data (can be passed to the product page template). Accepted keys: `abstract_name`, `abstractSku`, `price` | Product Information | -|category | Associative array representing category (can be passed to the product page template). Accepted keys: `name` |Product Information | -|invoiceNumber |Order number (can be passed to the checkout success template) | Translated into INVOICENUMBER parameter | -|location |Customer address (can be passed to the checkout success template) | Translated into LOCATION parameter | -|customerId |Customer ID (can be passed to the checkout success template) |Translated into CUSTOMERID parameter | -|orderValue |Total order value (can be passed to the checkout success template) | Translated into ORDERVALUE parameter| -|orderProcess |Checkout step name |Translated into STEPNAME parameter | -|items |Associative array representing cart items (can be passed to the checkout success template) |Link | -|flash.vars |Associative array representing intermittent data. Accepted keys: `register`, `login`, `newsletter.subscription` | | -{% info_block infoBox "Tip" %} -Remember to build your frontend by running antelope build yves from your project root folder -{% endinfo_block %} -In your project you will probably want to customize the tracking to fit the business requirements either by writing your own partial template or by overriding and extending the existing one, see [Best Practices - Twig Templates](/docs/scos/dev/legacy-demoshop/twig-templates/best-practices-twig-templates.html). - -### Checking Your Setup - -If your setup is correct you should see outgoing request going to Econda in browser developer tools when you navigate to a page that has tracing code included. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/exporting-econda-data.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/exporting-econda-data.md deleted file mode 100644 index 94d2244de1d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/exporting-econda-data.md +++ /dev/null @@ -1,331 +0,0 @@ ---- -title: Exporting Econda data -description: Export Econda data via CSVs -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/econda-frontend-integration -originalArticleId: f8d0248d-0411-4a3c-a23a-2a0f3c33627e -redirect_from: - - /v1/docs/econda-frontend-integration - - /v1/docs/en/econda-frontend-integration - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/exporting-econda-data.html - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/econda-exporting-csvs.html ---- - -To implement Econda plugin you should be familiar with the concept of [extending Spryker](/docs/scos/dev/back-end-development/extend-spryker/spryker-os-module-customisation/extend-a-core-module-that-is-used-by-another.html) and [plugins](/docs/scos/dev/back-end-development/implementing-and-using-plugins.html). - -## Zed Output Folder - -We need to define the output folder where the generated CSV files will be saved. This is done by adding a line in your config. - -```php -config [EcondaConstants::CSV_FOLDER_PATH] = APPLICATION_ROOT_DIR . '' ; -``` - -The application must have proper access(es) depending on what you expect to achieve. - -## Console - -To export the products and categories, we must register the Collectors that were created in the [Console](/docs/scos/dev/back-end-development/{{site.version}}/console-commandsconsole-commands-in-spryker.html). Econda module has already everything in place and the only thing you need to do is to add `CollectorFileExportConsole` to `Pyz\Zed\Console\ConsoleDependencyProvider` like in the snippet bellow: - -```php - -For Categories - -```php -criteriaBuilder - ->sql($sql) - ->setOrderBy([ - 'tree.fk_parent_category_node' => 'ASC', - 'tree.node_order' => 'DESC', - ]) - ->setParameter('fk_locale_1', $this->locale->getIdLocale()) - ->setParameter('fk_locale_2', $this->locale->getIdLocale()); - } -} -``` -
-
-
-For Products - - ``` -criteriaBuilder - ->sql($sql) - ->setParameter('fk_locale_1', $this->locale->getIdLocale()); - } - -} -``` -
-
- -Now that we have defined queries we must register them with Econda module by adding them to project level Econda configuration. - -In the example below we assume that you are using PostgreSql but if you use MySql just register your queries under MySql key in array. - -```php - [ - - ], - 'PostgreSql' => [ - 'CategoryNodeEcondaQuery' => StorageCategoryNodeEcondaQuery::class, - 'ProductConcreteEcondaQuery' => StorageProductConcreteEcondaQuery::class - ], - ]; - - return $data[$dbEngineName]; - } -} -``` - -## How is my query mapped to CSV output ? -If you need to modify the CSV column mapping for any reason you will have to extend the `EcondaProductCollector` and `EcondaCategoryCollector` from the Econda module and implement your own `collectData` and `collectItem` methods. -## Console -To export the products and categories, we must register the Collectors we have just created in the Console. The Econda module already has everything in place and the only thing you need to do is add `EcondaFileExportConsole` to `Pyz\Zed\Console\ConsoleDependencyProvider` as bellow: -```php - -addIgnorable('heartbeat', 'index', 'index'); - $this->addIgnorable('_profiler', 'wdt', '*'); - $this->addIgnorable('econda', 'index', '*'); - - return parent::getIgnorable(); - } - -} -``` -and a rule in your `config_default.php`: - -```php - 'econda', - 'controller' => 'index', - 'action' => '*', - 'type' => 'allow', - ], -]; - -``` -{% info_block errorBox "Warning" %} -ZED should never be accessible from public network. You should make a firewall exception to allow econda to connect to your ZED. -{% endinfo_block %} - -## Testing your Setup -To test if your ZED is reachable without login you can use CURL, running: - -```bash -curl http://mysprykershop.com/econda/index/category -``` -should return something like: - -```php -ID,ParentID,name -5,1,Computer -2,1,"Cameras & Camcorders" -11,1,"Telecom & Navigation" -9,1,"Smart Wearables" -4,2,"Digital Cameras" -3,2,Camcorders -6,5,Notebooks -7,5,Pc's/Workstations -8,5,Tablets -10,9,Smartwatches -12,11,Smartphones -1,ROOT,Demoshop -and running: -``` - -`curl http://mysprykershop.com/econda/index/product` should return something like: - -```php -ID,Name,Description,PRODUCTURL,ImageURL,Price,Stock,ProductCategory -001_25904006,"Canon IXUS 160","Add a personal touch Make -shots your own with quick and easy control over picture -settings such as brightness and colour intensity. -Preview the results whi -",http://mysprykershop.com/en/canon-ixus-160-1,http://images.icecat.biz/img/norm/medium/25904006-8438.jpg,0,10,4 -Tracking -``` - -### Multi-Language support -If you have multi-language setup, you should provide locale as GET parameter to retrieve the proper version of a CSV file: `curl http://mysprykershop.com/econda/index/product?locale=en_US` -You can check `stores.php` file in your project to see what locales you have enabled. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/installing-econda.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/installing-econda.md deleted file mode 100644 index 8ec0fb0b3e0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/installing-econda.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Installing Econda -last_updated: Jun 16, 2021 -template: howto-guide-template -redirect_from: - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/installing-econda.html ---- - -To install Econda, install the required module: - -```bash -composer require spryker-eco/econda -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-cross-selling.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-cross-selling.md deleted file mode 100644 index a26caee9ff0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-cross-selling.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Integrating Econda cross-selling -description: Learn how to integrate Econda cross-selling -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/econda-cross-sell -originalArticleId: b399989d-17fc-4aa0-9b7d-89a6d44b0813 -redirect_from: - - /v1/docs/econda-cross-sell - - /v1/docs/en/econda-cross-sell - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/econda-cross-sell.html - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda-cross-selling.html ---- - -Cross sell is highly customizable and it depends on your setup. Please refer to [Econda offical documentation](https://support.econda.de/display/CSDE/Control+Panel). - -All necessary JS files are already integrated into the module, the only thing you need to do is to add your API key inside the `econda_crosssell.twig` template: -```php - -``` - -## Prerequisites - -The [econda JS SDK](http://downloads.econda.de/support/releases/js-sdk/current/econda-recommendations.php) download - -An Econda ID can be found in your account details (see image below). - - - -These instructions assume you are using Antelope for your Yves assets management. If your project uses other frontend automation you can still use the instructions as guidelines. - -Before getting started we recommend that you read the following topics: [asset management](/docs/scos/dev/legacy-demoshop/201811.0/frontend-overview.html#asset-management) and [Twig.](/docs/scos/dev/legacy-demoshop/201811.0/twig-templates/overview-twig.html) - -## Installing assets - -After you have successfully downloaded the SDK you need to register it in Yves. One way is to create an Econda folder in `assets/Yves/` folder and extract the SDK to it (look at picture below) - - - -Now add an entry point for loading econda specific JS by adding the `econda.js` file in the Econda folder. - -Add a require line `require('./sdk/econda-recommendations');` - -Now we need to add our new Econda module to `entry.js`. - - - -by adding a line: - -```bash -require('js/econda/econda'); -``` - -## Integration - -Cross sell is highly customizable and it depends on your setup. Please refer to Econda offical [documentation](https://support.econda.de/display/CSDE/Control+Panel). - -Here is a sample `econda-widget.js` you can use as a help to integrate cross sell widget to your website: - -```bash -'use strict'; - -require('../../html/vendor/econda/cross-sell-widget.html'); - -var econda_aid = ""; - -module.exports = { - init: function() { - /** - * Setup widget, load data and render using defined rendering function - */ - if(typeof window.ecWidgets == 'undefined') { - window.ecWidgets = []; - } - if (document.getElementById('econda_widget_container')) { - var product_sku = document.getElementsByName('econda_product_sku')[0].value; - var category_name = document.getElementsByName('econda_category_name')[0].value; - window.ecWidgets.push({ - element: document.getElementById('econda_widget_container'), - renderer: {type: 'template', uri: '/assets/default/html/cross-sell-widget.html'}, - accountId: econda_aid, - id: 2, //id of widget you defined in econda UI - context: { - products: [{id: product_sku }], - categories: [{ - type: 'productcategory', - path: category_name - }] - }, - chunkSize: 3 - }); - } - } -}; -``` - -Register your tracking module in `econda.js` by adding to `econda.js`. - -```bash -var econdaWidget = require('./econda-widget'); -econdaWidget.init(); -``` - -In `econda-widget.js` we are include the `cross-sell-widget.html` for the widget template. Template example is below. - -```bash -
-

You may also like

- <% for (ip = 0; ip < products.length; ip++) { %> - - <% } %> -
-``` - -Please refer to Econda visual widget [documentation.](https://www.econda.de/en/technical-customer-support/) - -## Adding the Cross Sell Widget to Twig - -To include this snippet in your project, you need to include this code in your twig template: -```php -{% raw %}{%{% endraw %} include "@econda/partials/econda_crosssell.twig" with { - product: product, - category: category -} {% raw %}%}{% endraw %} -``` - -List of accepted template variables: - -| Name | Description | -| --- | --- | -| product | Associative array representing product data. Accepted keys: `abstractSku` | -| category | Associative array representing category. Accepted keys: `name` | - -## Building - -Do not forget to build your frontend by running antelope build yves from you project root folder. - -## Checking Your Setup - -If your setup is correct you should see the new Econda widget on the page where the cross sell widget was added. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-front-end.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-front-end.md deleted file mode 100644 index e26cdc621a5..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda-front-end.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Integrating Econda front end -description: Integrate frontend of the Econda module into the Spryker Commerce OS. -last_updated: Sep 15, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v3/docs/econda-frontend-integration -originalArticleId: 627eedca-22b4-4d9c-8c86-0e7dc567df43 -redirect_from: - - /v3/docs/econda-frontend-integration - - /v3/docs/en/econda-frontend-integration - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda-front-end.html - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/econda-frontend-integration.html -related: - - title: Econda - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/personalization-and-cross-selling/econda.html - - title: Econda - Exporting CSVs - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/personalization-and-cross-selling/econda/econda-exporting-csvs.html - - title: Econda - Tracking - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/personalization-and-cross-selling/econda/econda-tracking.html - - title: Econda - Cross Sell - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/personalization-and-cross-selling/econda/econda-cross-sell.html ---- - -{% info_block infoBox "Info" %} - -Check [this article](/docs/scos/user/intro-to-spryker/master-suite.html) to learn about Spryker Commerce OS (SCOS). - -{% endinfo_block %} - -## Include Econda Libraries and Scripts for Tracking and Cross-sell -Econda scripts are recommended to be connected at all the shop pages. To implement that: - -1. Place Econda libraries into `project/frontend/assets/scripts` folder. -2. Add path to folder to webpack in `frontend/configs/development.js`. - -
-development.js - -```js -CopyWebpackPlugin([ - ... - { - from: `${appSettings.paths.assets}/scripts`, - to: 'scripts', - ignore: ['*.gitkeep'] - } - ... -``` -
-
- -3. Extend `page-layout-main.twig` scripts block. - -
-page-layout-main.twig - -```xml -{% raw %}{%{% endraw %} block footerScripts {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %} - - - - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- - ## Econda Cross Sell Integration -Extend `ProductController` on the project level. -
-ProductController - -```php -getFactory() - ->getProductStorageClient() - ->mapProductStorageData($productData, $this->getLocale(), $this->getSelectedAttributes($request)); - - $this->assertProductRestrictions($productViewTransfer); - - return [ - 'product' => $productViewTransfer, - 'productUrl' => $this->getProductUrl($productViewTransfer), - 'econdaAccountId' => Config::get(EcondaConstants::ACCOUNT_ID), - ]; - } -} -``` -
-
- -Add a new field `econdaAccountId` to the `pdp.twig` file on the project level and extend product-detail molecule calling: - -```html -{% raw %}{%{% endraw %} define data = { - product: _view.product, - productUrl: _view.productUrl, - econdaAccountId: _view.econdaAccountId, - ... -} {% raw %}%}{% endraw %} - - -{% raw %}{%{% endraw %} include molecule('product-detail', 'ProductDetailPage') with { - class: 'box', - data: { - description: data.product.description, - attributes: data.product.attributes, - product: data.product, - econdaAccountId: data.econdaAccountId - } -} only {% raw %}%}{% endraw %} -``` - -To add Cross Sell Widget you should include Econda Cross-sell-widget molecule to the product detail page in `product-detail.twig` and add required data field: - -
-product-detail.twig - -```html -{% raw %}{%{% endraw %} define data = { - ... - product: required, - econdaAccountId: required, - category: {name: 'test'} - ... -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} include molecule('econda-cross-sell-widget', 'Econda') with { - data: { - product: data.product, - category: data.category, - econdaAccountId: data.econdaAccountId - } -} only {% raw %}%}{% endraw %} -``` -
-
- -## Econda Analytics -As Econda analytic script `emos2.js` is connected, it will automatically send default statistic (visits, activity). To specify statistics: - -Include `econda-tracker.twig` molecule to the page you need to track and pass specific data to send to analytics. For example product views analytic on product detail page: -product -detail.twig - -
-product -detail.twig - -```html -{% raw %}{%{% endraw %} include molecule('econda-tracker', 'Econda') with { - data: { - product: data.product, - content: '/catalog/' ~ ((data.category is not null) ? data.category.name ~ '/' : '') ~ data.product.name, - category: data.category - } -} only {% raw %}%}{% endraw %} -``` -
-
- -This implementation will collect product information, viewed page, category and send it to econda product views statistics. - -You can refer to data contract in `econda-tracker.twig` to send another specific information. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda.md b/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda.md deleted file mode 100644 index dfc769a8e7c..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/customer-communication/personalization-and-cross-selling/econda/integrating-econda.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Integrating Econda -last_updated: Jun 16, 2021 -template: howto-guide-template -redirect_from: - - /docs/scos/dev/technology-partner-guides/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda.html ---- - -## Prerequisites - -Our Econda module offers the integration with these services for the application you are building using Spryker. - -To integrate with Econda, you will need to connect your Econda account. If you do not have an Econda account please contact [Econda Sales](mailto:sales@econda.com?subject=Sales Request from a Spryker Contact). - -To enable Econda tracking for your application, you need to download a personalized JavaScript library from the Econda Analytics Configuration menu (you can find the detailed instructions on the [Econda website](https://support.econda.de/display/MONDE/Tracking-Bibliothek+herunterladen)). - -For [cross sell widgets](econda-cross-sell), we will demonstrate integration of JS SDK that you can download from the [Econda website](http://downloads.econda.de/support/releases/js-sdk/current/econda-recommendations.php). - -Please refer to [Econda](http://www.econda.de/) documentation on how to customize your Econda widgets. - -Some examples can be found at [https://www.econda.de/](https://www.econda.de/) - -Details on how to work with Javascript and templates in Spryker can be found in Front-End Guide. - -Econda module uses collectors to [export data to CSV](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/econda-exporting-csvs.html). Please read more about Collectors. - -## Econda JS Library and SDK - -Download a personalized JavaScript library from the Econda Analytics Configuration menu by following instructions at [https://support.econda.de/display/MONDE/Tracking-Bibliothek+herunterladen](https://support.econda.de/display/MONDE/Tracking-Bibliothek+herunterladen) and Econda JS SDK from [http://downloads.econda.de/support/releases/js-sdk/current/econda-recommendations.php](http://downloads.econda.de/support/releases/js-sdk/current/econda-recommendations.php) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/installing-and-configuring-tideways-with-vagrant.md b/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/installing-and-configuring-tideways-with-vagrant.md deleted file mode 100644 index 77c58d31942..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/installing-and-configuring-tideways-with-vagrant.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Installing and configuring Tideways -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - -The `spryker-eco/tideways` module provides a `TidewaysMonitoringExtensionPlugin` to send monitoring information to the tideways service. - -{% info_block infoBox "New Relic installation in Docker based projects" %} - -For installation instructions in Docker based projects, see [Configuring Tideways](/docs/scos/dev/the-docker-sdk/{{page.version}}/configuring-services.html#configuring-tideways) - -{% endinfo_block %} - -## Installing Tideways - -To install Tideways module, run: - -```bash -composer require spryker-eco/tideways -``` - -## Configuring Tideways - -To configure Tideways, do the following: -1. Install Tideways as described on the [Tideways support page](https://support.tideways.com/article/85-install-on-debian-ubuntu). -2. In your project, add `TidewaysMonitoringExtensionPlugin` to `MonitoringDependencyProvider::getMonitoringExtensions()`. - -## Implementation Overview - -Monitoring is a Spryker Module, and it provides a hook to add any monitoring provider you want to. In the Monitoring Module, you can find some service provider and controller listener for Yves and Zed which needs to be added to the `ApplicationDependencyProvider` to enable them. - -To monitor Spryker performance, go the the [Tideways application](https://app.tideways.io/login). diff --git a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/configuring-loggly.md b/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/configuring-loggly.md deleted file mode 100644 index 651a20b7df2..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/configuring-loggly.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: Configuring Loggly -last_updated: Jun 16, 2021 -template: howto-guide-template ---- - - -To integrate Loggly, you need to have the `QueueHandler` enabled in your Logger configuration. - -In addition you need to properly configure the queue setup for Loggly to work. - -## RabbitMqDependencyProvider - -```php -append($this->getLoggerQueueOption()); - - return $queueOptionCollection; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqOptionTransfer - */ - protected function getLoggerQueueOption() - { - $queueOption = new RabbitMqOptionTransfer(); - $queueOption->setQueueName(Config::get(LogglyConstants::QUEUE_NAME)); - $queueOption->setDurable(true); - $queueOption->setType('direct'); - $queueOption->setDeclarationType(Connection::RABBIT_MQ_EXCHANGE); - $queueOption->setBindingQueue($this->getLoggerQueueBinding()); - - return $queueOption; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqOptionTransfer - */ - protected function getLoggerQueueBinding() - { - $queueOption = new RabbitMqOptionTransfer(); - $queueOption->setQueueName(Config::get(LogglyConstants::QUEUE_NAME)); - $queueOption->setDurable(true); - - return $queueOption; - } - -} -``` - -## QueueConfig - -```php - [ - 'rabbitmq' => $this->getRabbitMqQueueConsumerOptions(), - ], - ]; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqConsumerOptionTransfer - */ - protected function getRabbitMqQueueConsumerOptions() - { - $queueOptionTransfer = new RabbitMqConsumerOptionTransfer(); - $queueOptionTransfer->setConsumerExclusive(false); - $queueOptionTransfer->setNoWait(false); - - return $queueOptionTransfer; - } - -} -``` - -## QueueDependencyProvider - -```php - new LogglyLoggerQueueMessageProcessorPlugin(), - ]; - } - -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/loggly.md b/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/loggly.md deleted file mode 100644 index f6f3eb6a78a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/loggly/loggly.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Loggly -description: Overview of the Loggly integration. -template: concept-topic-template ---- - -The Loggly module provides a plugin to read log messages from a queue and send the messages via https to [Loggly](https://www.loggly.com/). - -To integrate this plugin you need to have the `QueueHandler` enabled in your Logger configuration. - -In addition you need to properly configure the queue setup for Loggly to work. - -## RabbitMqDependencyProvider - -```php -append($this->getLoggerQueueOption()); - - return $queueOptionCollection; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqOptionTransfer - */ - protected function getLoggerQueueOption() - { - $queueOption = new RabbitMqOptionTransfer(); - $queueOption->setQueueName(Config::get(LogglyConstants::QUEUE_NAME)); - $queueOption->setDurable(true); - $queueOption->setType('direct'); - $queueOption->setDeclarationType(Connection::RABBIT_MQ_EXCHANGE); - $queueOption->setBindingQueue($this->getLoggerQueueBinding()); - - return $queueOption; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqOptionTransfer - */ - protected function getLoggerQueueBinding() - { - $queueOption = new RabbitMqOptionTransfer(); - $queueOption->setQueueName(Config::get(LogglyConstants::QUEUE_NAME)); - $queueOption->setDurable(true); - - return $queueOption; - } - -} -``` - -## QueueConfig - -```php - [ - 'rabbitmq' => $this->getRabbitMqQueueConsumerOptions(), - ], - ]; - } - - /** - * @return \Generated\Shared\Transfer\RabbitMqConsumerOptionTransfer - */ - protected function getRabbitMqQueueConsumerOptions() - { - $queueOptionTransfer = new RabbitMqConsumerOptionTransfer(); - $queueOptionTransfer->setConsumerExclusive(false); - $queueOptionTransfer->setNoWait(false); - - return $queueOptionTransfer; - } - -} -``` - -## QueueDependencyProvider - -```php - new LogglyLoggerQueueMessageProcessorPlugin(), - ]; - } - -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/configuring-new-relic-logging.md b/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/configuring-new-relic-logging.md deleted file mode 100644 index f937028075d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/configuring-new-relic-logging.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Configuring New Relic logging -template: howto-guide-template ---- - -This document describes how to configure different types of New Relic logging. - -## Configuring request logging - -Every request is automatically logged by New Relic. The name of the requests is the name of the used route for Yves and the `[module]/[controller]/[action]` for Zed. Also, the URL request and the host are stored as custom parameters for each request. - -To enable the New Relic monitoring extension, add it to the `MonitoringDependencyProvider` in your project: - -```php - '12345', - 'zed_de' => '12346', - 'yves_us' => '12347', - 'zed_us' => '12348', -]; -``` -Therefore, you can use the record deployment functionality built-in in the console commands, as follows: - -``` -$ vendor/bin/console newrelic:record-deployment [] [] -``` - -where the first three arguments are mandatory. A real example of usage would be as follows: - -``` -$ vendor/bin/console newrelic:record-deployment MyStore user@gmail.com v1.2.0 "New version 1.2.0" "Fixed bugs in controller" -``` diff --git "a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/installing-and-configuring-new-relic\342\200\223with\342\200\223vagrant.md" "b/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/installing-and-configuring-new-relic\342\200\223with\342\200\223vagrant.md" deleted file mode 100644 index 0df3e9ac392..00000000000 --- "a/docs/scos/dev/technology-partner-guides/201811.0/operational-tools-monitoring-legal-etc/new-relic/installing-and-configuring-new-relic\342\200\223with\342\200\223vagrant.md" +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Installing and configuring New Relic with Vagrant -template: howto-guide-template -related: - - title: Migration Guide - Session - link: docs/scos/dev/module-migration-guides/migration-guide-session.html ---- - -{% info_block infoBox "New Relic installation in Docker based projects" %} - -For installation instructions in Docker based projects, see [Configuring New Relic](/docs/scos/dev/the-docker-sdk/{{page.version}}/configuring-services.html#configuring-new-relic) - -{% endinfo_block %} - -To install and configure New Relic, do the following. - -## Install New Relic - -The `spryker-eco/new-relic` module provides a `NewRelicMonitoringExtensionPlugin` to send monitoring information to the New Relic service. - - -To install New Relic module, run -```bash -composer require spryker-eco/new-relic -``` -This installs the following: - -* `spryker-eco/new-relic - 1.1.x` -* `spryker/monitoring - 2.x.x` -* `spryker/monitoring - 1.x.x` - -and removes the eventual New Relic legacy packages: - -* `spryker/new-relic` -* `spryker/new-relic-api` - - -## Configure New Relic - -1. [Create a New Relic account](https://newrelic.com/signup). -2. Install the New Relic PHP extension in your virtual machine as described in [New Relic setup instructions](https://rpm.newrelic.com/accounts/1131235/applications/setup). - -## Implementation overview - -Monitoring is a Spryker module that provides a hook to add any monitoring provider you want. In the Monitoring module, you can find a service provider and a controller listener for Yves and Zed that need to be added to `ApplicationDependencyProvider` to enable them. - -## New Relic API - -You can add custom New Relic events in your application with the API wrapper for New Relic in `\SprykerEco\Service\NewRelic\Plugin\NewRelicMonitoringExtensionPlugin`. For detailed information about the available API methods, see [New Relic API](https://docs.newrelic.com/docs/apm/agents/php-agent/php-agent-api/guide-using-php-agent-api/). diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.md deleted file mode 100644 index 25b0f404755..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Enabling filtering of payment methods for Ayden -description: Enable filtering available payment methods depending on the result of /paymentMethods API call in the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/adyen-filter-payment-methods -originalArticleId: aa8afe2d-898d-4f41-b605-ee6136561f88 -redirect_from: - - /v1/docs/adyen-filter-payment-methods - - /v1/docs/en/adyen-filter-payment-methods -related: - - title: Payment Integration - Adyen - link: docs/scos/user/technology-partners/page.version/payment-partners/adyen.html - - title: Integrating Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen.html - - title: Installing and configuring Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/installing-and-configuring-adyen.html - - title: Integrating Adyen payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen-payment-methods.html ---- - -Adyen module provides filtering available payment methods depend on result of `/paymentMethods` API call. - -To enable this add `\SprykerEco\Zed\Adyen\Communication\Plugin\AdyenPaymentMethodFilterPlugin` to filter plugins list in `src/Pyz/Zed/Payment/PaymentDependencyProvider.php`: - -```php - 'AdyenCreditCard01', - AdyenConfig::ADYEN_SOFORT => 'AdyenSofort01', - AdyenConfig::ADYEN_DIRECT_DEBIT => 'AdyenDirectDebit01', - AdyenConfig::ADYEN_KLARNA_INVOICE => 'AdyenKlarnaInvoice01', - AdyenConfig::ADYEN_PREPAYMENT => 'AdyenPrepayment01', - AdyenConfig::ADYEN_IDEAL => 'AdyenIdeal01', - AdyenConfig::ADYEN_PAY_PAL => 'AdyenPayPal01', - AdyenConfig::ADYEN_ALI_PAY => 'AdyenAliPay01', - AdyenConfig::ADYEN_WE_CHAT_PAY => 'AdyenWeChatPay01', - ]; - ``` - -## Notifications - -To complete the payment modification requests (cancel, capture, refund), it's necessary to [configure notification on Adyen](https://docs.adyen.com/platforms/configure-notifications) merchant backend side. - -You can get more information form [Adyen documentation](https://docs.adyen.com/developers). - -The link to accept notifications from Adyen looks like https://mysprykershop.com/adyen/notification. - -## Adyen Configuration - -You can get your credentials by following the [instruction](https://docs.adyen.com/online-payments/classic-integrations/api-integration-ecommerce). - -You can get JS SDK url and generate your origin key by following this [instruction](https://docs.adyen.com/online-payments/classic-integrations/api-integration-ecommerce) from. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen-payment-methods.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen-payment-methods.md deleted file mode 100644 index 286d6cc1930..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen-payment-methods.md +++ /dev/null @@ -1,503 +0,0 @@ ---- -title: Integrating Adyen payment methods -description: Adyen supports credit card, direct debit, Klarna invoice, Prepayment, Sofort, PayPal, iDeal, AliPay, WeChatPay payment methods that can be integrated into the Spryker Commerce OS. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/adyen-provided-payment-methods -originalArticleId: 1707a5fb-2cda-4e09-ad99-be23eaa8c067 -redirect_from: - - /v1/docs/adyen-provided-payment-methods - - /v1/docs/en/adyen-provided-payment-methods -related: - - title: Payment Integration - Adyen - link: docs/scos/user/technology-partners/page.version/payment-partners/adyen.html - - title: Enabling filtering of payment methods for Ayden - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.html - - title: Installing and configuring Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/installing-and-configuring-adyen.html - - title: Integrating Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen.html ---- - -## Credit Card - -Adyen module provides the following integration options: - - * simple - * with 3D Secure authorization - -3D Secure integration requires adjustments on the project level: - -1. Add an additional Checkout Step. Examplary implementation: - -
-src/Pyz/Yves/CheckoutPage/Process/Steps/AdyenExecute3DStep.php - - ```php -config = $config; - } - - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function requireInput(AbstractTransfer $quoteTransfer) - { - if ($quoteTransfer->getPayment()->getPaymentSelection() === AdyenConfig::ADYEN_CREDIT_CARD && - $this->config->isAdyenCreditCard3dSecureEnabled() - ) { - return true; - } - - return false; - } - - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function postCondition(AbstractTransfer $quoteTransfer) - { - return true; - } - - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return array - */ - public function getTemplateVariables(AbstractTransfer $quoteTransfer) - { - return [ - 'action' => $quoteTransfer->getPayment()->getAdyenRedirect()->getAction(), - 'fields' => $quoteTransfer->getPayment()->getAdyenRedirect()->getFields(), - ]; - } -} -``` -
-
- -2. Add template for this step: -
- src/Pyz/Yves/CheckoutPage/Theme/default/views/adyen/execute_3d.twig - - ```php -{% raw %}{%{% endraw %} extends template('page-layout-main') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} for key, value in _view.fields {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -3. Put the step between place order and success steps: -
- src/Pyz/Yves/CheckoutPage/Process/StepFactory.php - - ```php -getUrlGenerator(), - CheckoutPageControllerProvider::CHECKOUT_ERROR - ); - $stepCollection - ->addStep($this->createEntryStep()) - ->addStep($this->createCustomerStep()) - ->addStep($this->createAddressStep()) - ->addStep($this->createShipmentStep()) - ->addStep($this->createPaymentStep()) - ->addStep($this->createSummaryStep()) - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createAdyenExecute3DStep()) - ->addStep($this->createSuccessStep()); - return $stepCollection; - } - - /** - * @return \Spryker\Yves\StepEngine\Dependency\Step\StepInterface - */ - public function createPlaceOrderStep(): StepInterface - { - return new PlaceOrderStep( - $this->getCheckoutClient(), - $this->getFlashMessenger(), - $this->getStore()->getCurrentLocale(), - $this->getGlossaryStorageClient(), - CheckoutPageControllerProvider::CHECKOUT_PLACE_ORDER, - HomePageControllerProvider::ROUTE_HOME, - [ - 'payment failed' => CheckoutPageControllerProvider::CHECKOUT_PAYMENT, - 'shipment failed' => CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - ] - ); - } - /** - * @return \Spryker\Yves\StepEngine\Dependency\Step\StepInterface - */ - public function createAdyenExecute3DStep(): StepInterface - { - return new AdyenExecute3DStep( - CheckoutPageControllerProvider::CHECKOUT_ADYEN_EXECUTE_3D, - HomePageControllerProvider::ROUTE_HOME, - $this->getConfig() - ); - } -} - ``` -
-
- -4. Add controller to process 3D secure step: -
-src/Pyz/Yves/CheckoutPage/Controller/CheckoutController.php - - ```php - createStepProcess()->process($request); - - if (!is_array($response)) { - return $response; - } - - return $this->view( - $response, - $this->getFactory()->getCustomerPageWidgetPlugins(), - '@CheckoutPage/views/adyen/execute_3d.twig' - ); - } -} -``` -
-
- -5. Add action to controller provider: -
- src/Pyz/Yves/CheckoutPage/Plugin/Provider/CheckoutPageControllerProvider.php - - ```php - addCheckoutIndexRoute() - ->addCustomerStepRoute() - ->addAddressStepRoute() - ->addShipmentStepRoute() - ->addPaymentStepRoute() - ->addCheckoutSummaryStepRoute() - ->addPlaceOrderStepRoute() - ->addCheckoutErrorRoute() - ->addCheckoutSuccessRoute() - ->addAdyenExecute3DStepRoute(); - } - - /** - * @return $this - */ - protected function addAdyenExecute3DStepRoute() - { - $this->createController('/{checkout}/adyen-execute-3d', static::CHECKOUT_ADYEN_EXECUTE_3D, 'CheckoutPage', 'Checkout', 'adyenExecute3D') - ->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); - - return $this; - } -} - ``` -
-
- -6. Extend `PlaceOrder` step to set 3D Secure url and params into `QuoteTransfer`: -
-src/Pyz/Yves/CheckoutPage/Process/Steps/PlaceOrderStep.php - - ```php -checkoutClient->placeOrder($quoteTransfer); - - if ($checkoutResponseTransfer->getIsExternalRedirect()) { - $this->externalRedirectUrl = $checkoutResponseTransfer->getRedirectUrl(); - } - - if ($checkoutResponseTransfer->getSaveOrder() !== null) { - $quoteTransfer->setOrderReference($checkoutResponseTransfer->getSaveOrder()->getOrderReference()); - } - - $this->setCheckoutErrorMessages($checkoutResponseTransfer); - $this->checkoutResponseTransfer = $checkoutResponseTransfer; - - $quoteTransfer->getPayment()->setAdyenRedirect($checkoutResponseTransfer->getAdyenRedirect()); - - return $quoteTransfer; - } -} - ``` -
-
- -7. Move `CheckoutPageControllerProvider` from core to project level in `YvesBootstrap`: - -
-\Pyz\Yves\ShopApplication\YvesBootstrap - -```php -- use SprykerShop\Yves\CheckoutPage\Plugin\Provider\CheckoutPageControllerProvider; -+ use Pyz\Yves\CheckoutPage\Plugin\Provider\CheckoutPageControllerProvider; -``` -
-
- -8. Extend `CheckoutPageConfig` to add method for checking if 3D Secure is enabled: - -
-\Pyz\Yves\CheckoutPage\CheckoutPageConfig - -```php -get(AdyenConstants::CREDIT_CARD_3D_SECURE_ENABLED); - } -} -``` -
-
- -9. Extend `CheckoutPageFactory` to replace SprykerShop Step Factory with the project-level one: - -
-\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
- -The state machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenCreditCard01.xml` - -## Direct Debit (SEPA Direct Debit) - -SEPA (Single Euro Payments Area) Direct Debit was introduced by the European Payments Council to create a standardized payments infrastructure within the EU. With SEPA Direct Debit, businesses can process one-off or recurring payments for EU customers, making it a key payment method for businesses looking to expand across Europe. - -The state machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenDirectDebit01.xml` - -## Klarna Invoice - -Klarna Invoice enables your customers to pay without giving their credit card information to the online store. The customers do not have to pay until they have received their products. - -When a customer has checked out an order in your online store he/she will be able to choose Klarna and then the customer needs to type in his/her full social security number (CPR in Denmark). German or Dutch customers have to type in their Birth date. The customer is accepted throughout a credit check, which is done by Klarna. When the customer is accepted, Klarna pays the full amount to your online shop and the customer has to pay the amount directly to Klarna. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenKlarnaInvoice01.xml` - -## Prepayment (Bank Transfer IBAN) - -Prepayment method is a safe alternative to payments involving credit cards or debit cards (such as online banking transfer). Usually bank transfer would require manual processing to mark transaction as cancelled or completed, but the process is fully automated through the integration with the Adyen platform. - -The payment status is transmitted to the shop via a notification from the payment provider(Adyen). - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenPrepayment01.xml` - -## Sofort - -SOFORT is the main online direct payment method and works via online banking. It is the predominant online banking method in countries such as Germany, Austria, Switzerland and Belgium, making it a must-have for any business wanting to operate in this area. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenSofort01.xml` - -## PayPal - -PayPal Holdings, Inc. is an American company operating a worldwide online payments system that supports online money transfers and serves as an electronic alternative to traditional paper methods like cheques and money orders. The company operates as a payment processor for online vendors, auction sites, and other commercial users, for which it charges a fee in exchange for benefits such as one-click transactions and password memory. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenPayPal01.xml` - -## iDeal - -The most popular payment method in the Netherlands, iDEAL is an inter-bank system covered by all major Dutch consumer banks. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenIdeal01.xml` - -## AliPay - -Alipay is the most widely used third-party online payment service provider in China. With over 100 million daily transactions and over 520 million active users. Its primary product is a digital wallet, Alipay Wallet, which also includes a mobile app that allows customers to conduct transactions directly from their mobile devices. - -Alipay is a must-have payment method for any business looking to reach a critical mass of Chinese shoppers both home and abroad. It is available in 70 markets and has already been adopted by over 80,000 retail stores worldwide. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenAliPay01.xml` - -## WeChatPay - -WeChat Pay is rapidly becoming a keystone payment method for businesses wanting to reach Chinese shoppers, both home and abroad. Originally a messaging app (like WhatsApp) WeChat has evolved into an ecosystem that allows Chinese shoppers to chat, browse, and make payments, all in one place - making shopping as easy as chatting to your friends. - -State machine example can be found in: `vendor/spryker-eco/adyen/config/Zed/Oms/AdyenWeChatPay01.xml` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen.md deleted file mode 100644 index 6502ec8981f..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/adyen/integrating-adyen.md +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Integrating Adyen -description: Integrate the Adyen module into the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/adyen-integration -originalArticleId: 7001977b-8419-49bb-9a0e-e04d6567271a -redirect_from: - - /v1/docs/adyen-integration - - /v1/docs/en/adyen-integration -related: - - title: Payment Integration - Adyen - link: docs/scos/user/technology-partners/page.version/payment-partners/adyen.html - - title: Enabling filtering of payment methods for Ayden - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.html - - title: Installing and configuring Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/installing-and-configuring-adyen.html - - title: Integrating Adyen payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen-payment-methods.html ---- - -## Integration into Project - -Add sub form plugins and payment method handlers: - -
- \Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider: - -```php -extendPaymentMethodHandler($container); - $container = $this->extendSubFormPluginCollection($container); - - return $container; - } - - ... - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendPaymentMethodHandler(Container $container): Container - { - $container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $paymentMethodHandlerCollection) { - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_CREDIT_CARD); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_SOFORT); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_DIRECT_DEBIT); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_KLARNA_INVOICE); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_PREPAYMENT); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_IDEAL); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_PAY_PAL); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_ALI_PAY); - $paymentMethodHandlerCollection->add(new AdyenPaymentHandlerPlugin(), PaymentTransfer::ADYEN_WE_CHAT_PAY); - - return $paymentMethodHandlerCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendSubFormPluginCollection(Container $container): Container - { - $container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $subFormPluginCollection) { - $subFormPluginCollection->add(new AdyenCreditCardSubFormPlugin()); - $subFormPluginCollection->add(new AdyenSofortSubFormPlugin()); - $subFormPluginCollection->add(new AdyenDirectDebitSubFormPlugin()); - $subFormPluginCollection->add(new AdyenKlarnaInvoiceSubFormPlugin()); - $subFormPluginCollection->add(new AdyenPrepaymentSubFormPlugin()); - $subFormPluginCollection->add(new AdyenIdealSubFormPlugin()); - $subFormPluginCollection->add(new AdyenPayPalSubFormPlugin()); - $subFormPluginCollection->add(new AdyenAliPaySubFormPlugin()); - $subFormPluginCollection->add(new AdyenWeChatPaySubFormPlugin()); - - return $subFormPluginCollection; - }); - - return $container; - } -} -``` -
-
- -Add controller provider: - -
-\Pyz\Yves\ShopApplication\YvesBootstrap: - -```php - -
- - Add checkout plugins: - -
-\Pyz\Zed\Checkout\CheckoutDependencyProvider - - ```php - -
- -Add OMS commands and conditions: - -
- \Pyz\Zed\Oms\OmsDependencyProvider - -```php -extendCommandPlugins($container); - $container = $this->extendConditionPlugins($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendCommandPlugins(Container $container) - { - $container->extend(self::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - ... - $commandCollection->add(new AuthorizePlugin(), 'Adyen/Authorize'); - $commandCollection->add(new CancelPlugin(), 'Adyen/Cancel'); - $commandCollection->add(new CapturePlugin(), 'Adyen/Capture'); - $commandCollection->add(new RefundPlugin(), 'Adyen/Refund'); - $commandCollection->add(new CancelOrRefundPlugin(), 'Adyen/CancelOrRefund'); - - return $commandCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendConditionPlugins(Container $container) - { - $container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - ... - $conditionCollection->add(new IsAuthorizedPlugin(), 'Adyen/IsAuthorized'); - $conditionCollection->add(new IsCanceledPlugin(), 'Adyen/IsCanceled'); - $conditionCollection->add(new IsCancellationReceivedPlugin(), 'Adyen/IsCancellationReceived'); - $conditionCollection->add(new IsCancellationFailedPlugin(), 'Adyen/IsCancellationFailed'); - $conditionCollection->add(new IsCapturedPlugin(), 'Adyen/IsCaptured'); - $conditionCollection->add(new IsCaptureReceivedPlugin(), 'Adyen/IsCaptureReceived'); - $conditionCollection->add(new IsCaptureFailedPlugin(), 'Adyen/IsCaptureFailed'); - $conditionCollection->add(new IsRefundedPlugin(), 'Adyen/IsRefunded'); - $conditionCollection->add(new IsRefundReceivedPlugin(), 'Adyen/IsRefundReceived'); - $conditionCollection->add(new IsRefundFailedPlugin(), 'Adyen/IsRefundFailed'); - - return $conditionCollection; - }); - - return $container; - } -} -``` -
-
- -### Frontend Integration - -To make Adyen module work properly, update `payment.twig` file and add payment method forms into `customForms`: - -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig: - - ```twig -... - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - title: 'checkout.step.payment.title' | trans, - customForms: { - 'Adyen/alipay': ['alipay', 'adyen'], - 'Adyen/credit-card': ['credit-card', 'adyen'], - 'Adyen/direct-debit': ['direct-debit', 'adyen'], - 'Adyen/ideal': ['ideal', 'adyen'], - 'Adyen/klarna-invoice': ['klarna-invoice', 'adyen'], - 'Adyen/paypal': ['paypal', 'adyen'], - 'Adyen/prepayment': ['prepayment', 'adyen'], - 'Adyen/sofort': ['sofort', 'adyen'], - 'Adyen/wechatpay': ['wechatpay', 'adyen'], - } -} {% raw %}%}{% endraw %} - -... -``` -
-
diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/installing-and-configuring-afterpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/installing-and-configuring-afterpay.md deleted file mode 100644 index c2cee6eec66..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/installing-and-configuring-afterpay.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Installing and configuring Afterpay -description: Learn how to install and configure AfterPay into Spryker-based project -last_updated: Jun 16, 2021 -template: howto-guide-template -originalLink: https://documentation.spryker.com/2021080/docs/afterpay-installation-and-configuration -originalArticleId: 487c14bc-6f1e-4d86-abaa-3bbf5891e55c -redirect_from: - - /2021080/docs/afterpay-installation-and-configuration - - /2021080/docs/en/afterpay-installation-and-configuration - - /docs/afterpay-installation-and-configuration - - /docs/en/afterpay-installation-and-configuration -related: - - title: Afterpay - link: docs/scos/user/technology-partners/page.version/payment-partners/afterpay.html ---- - -{% info_block errorBox %} - -Currently, AfterPay does not work correctly with [gift cards](/docs/scos/dev/feature-walkthroughs/{{page.version}}/gift-cards-feature-walkthrough.html) AfterPay. We will update the document after resolving the conflict. - -{% endinfo_block %} - -This document describes how to install and configure AfterPay. - -## Installing Afterpay - -To install AfterPay, install the AfterPay module: - -```bash -composer require spryker-eco/after-pay -``` - -## Configuring Afterpay - -To set up the AfterPay initial configuration, use the credentials you received from your AfterPay account. - -The `API_ENDPOINT_BASE_URL` parameter should be a link: you should get it from AfterPay. For test integration, you can use `https://sandbox.afterpay.io/api/v3/version` - -You should also get `API_CREDENTIALS_AUTH_KEY` and `PAYMENT_INVOICE_CHANNEL_ID` from your AfterPay account. - -You can use different Checkout Services; to select one, set up `$config[AfterPayConstants::AFTERPAY_AUTHORIZE_WORKFLOW]`: -* One-Step Authorization → `AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP` -* Two-Step Authorization → `AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS` - -If you want to use Two-Step Authorization, in the Pyz layer, create the `Pyz\Yves\CheckoutPage\Process\Steps\PaymentStep.php` class and extend `SprykerShop\Yves\CheckoutPage\Process\Steps\PaymentStep.php` if `Pyz\Yves\CheckoutPage\Process\Steps\PaymentStep.php` does not exist. After that, you use `AfterPayClient`, call `getAvailablePaymentMethods()`, and handle the request for your specific logic. - -Add the new code to `config/Shared/config_default.php`: - -```php -... -use SprykerEco\Shared\AfterPay\AfterPayConfig; -use SprykerEco\Shared\AfterPay\AfterPayConstants; -... - -... -// ---------- AfterPay -$config[AfterPayConstants::API_ENDPOINT_BASE_URL] = 'https://sandboxapi.horizonafs.com/eCommerceServicesWebApi/api/v3/'; -$config[AfterPayConstants::API_CREDENTIALS_AUTH_KEY] = 'your api key'; -$config[AfterPayConstants::PAYMENT_INVOICE_CHANNEL_ID] = 'your invoice channel id'; -$config[AfterPayConstants::AFTERPAY_YVES_AUTHORIZE_PAYMENT_FAILED_URL] = 'http://www.de.afterpay.local/en/checkout/payment'; -$config[AfterPayConstants::AFTERPAY_AUTHORIZE_WORKFLOW] = AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP; -$config[AfterPayConstants::AFTERPAY_RISK_CHECK_CONFIGURATION] = [ - AfterPayConfig::PAYMENT_METHOD_INVOICE => AfterPayConfig::RISK_CHECK_METHOD_INVOICE, -]; -... -``` - -Replace this line in `config/Shared/config_default.php`: - -```php -$ENVIRONMENT_PREFIX = ''; -``` - -with this: - -```php -$ENVIRONMENT_PREFIX = 'AfterPay-local'; -``` - -Add a new item to the config array `$config[OmsConstants::PROCESS_LOCATION]` in `config/Shared/config_default.php`: - -```php -$config[OmsConstants::PROCESS_LOCATION] = [ - OmsConfig::DEFAULT_PROCESS_LOCATION, - $config[KernelConstants::SPRYKER_ROOT] . '/DummyPayment/config/Zed/Oms', - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/after-pay/config/Zed/Oms', -]; -``` - -Add a new item to the config array `$config[OmsConstants::ACTIVE_PROCESSES]` in `config/Shared/config_default.php`: - -```php -$config[OmsConstants::ACTIVE_PROCESSES] = [ - 'DummyPayment01', - 'AfterPayInvoice01', -]; -``` - -Add a new item to the config array `$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING]` in `config/Shared/config_default.php`: - -```php -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - DummyPaymentConfig::PAYMENT_METHOD_INVOICE => 'DummyPayment01', - DummyPaymentConfig::PAYMENT_METHOD_CREDIT_CARD => 'DummyPayment01', - AfterPayConfig::PAYMENT_METHOD_INVOICE => 'AfterPayInvoice01', -]; -``` - -Add these lines to `data/import/glossary.csv`: - -```php -checkout.payment.provider.afterPay,AfterPay,en_US -checkout.payment.provider.afterPay,AfterPay,de_DE -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/integrating-afterpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/integrating-afterpay.md deleted file mode 100644 index 8b5f73d81cf..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/afterpay/integrating-afterpay.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Integrating AfterPay -description: Learn how to integrate AfterPay into Spryker-based project -last_updated: Jun 16, 2021 -template: howto-guide-template -related: - - title: Afterpay - link: docs/scos/user/technology-partners/page.version/payment-partners/afterpay.html ---- - -To integrate AfterPay, do the following: - -In `src/Pyz/Zed/Checkout/CheckoutDependencyProvider.php`, add a new plugin to `getCheckoutOrderSavers()`: - -```php -... -use SprykerEco\Zed\AfterPay\Communication\Plugin\Checkout\AfterPaySaveOrderPlugin; -... - -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Checkout\Dependency\Plugin\CheckoutSaveOrderInterface[] - */ - protected function getCheckoutOrderSavers(Container $container) - { - /** @var \Spryker\Zed\Checkout\Dependency\Plugin\CheckoutSaveOrderInterface[] $plugins */ - $plugins = [ - ... - new AfterPaySaveOrderPlugin(), - ]; - ``` - -In `src/Pyz/Zed/Oms/OmsDependencyProvider.php`, add: - -**Сode sample** - - ```php - ... -use Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection; -use Spryker\Zed\Oms\Communication\Plugin\Oms\Condition\ConditionCollection; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Command\AuthorizePlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Command\CancelPlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Command\CapturePlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Command\RefundPlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Condition\IsAuthorizationCompletedPlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Condition\IsCancellationCompletedPlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Condition\IsCaptureCompletedPlugin; -use SprykerEco\Zed\AfterPay\Communication\Plugin\Oms\Condition\IsRefundCompletedPlugin; -... - -... - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function addCommandPlugins(Container $container): Container - { - $container[self::COMMAND_PLUGINS] = function () { - $commandCollection = new CommandCollection(); - $commandCollection->add(new SendOrderConfirmationPlugin(), 'Oms/SendOrderConfirmation'); - $commandCollection->add(new SendOrderShippedPlugin(), 'Oms/SendOrderShipped'); - $commandCollection->add(new AuthorizePlugin(), 'AfterPay/Authorize'); - $commandCollection->add(new CancelPlugin(), 'AfterPay/Cancel'); - $commandCollection->add(new CapturePlugin(), 'AfterPay/Capture'); - $commandCollection->add(new RefundPlugin(), 'AfterPay/Refund'); - return $commandCollection; - }; - return $container; - } - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function addConditionPlugins(Container $container): Container - { - $container[self::CONDITION_PLUGINS] = function () { - $conditionCollection = new ConditionCollection(); - $conditionCollection->add(new IsAuthorizationCompletedPlugin(), 'AfterPay/IsAuthorizationCompleted'); - $conditionCollection->add(new IsCancellationCompletedPlugin(), 'AfterPay/IsCancellationCompleted'); - $conditionCollection->add(new IsCaptureCompletedPlugin(), 'AfterPay/IsCaptureCompleted'); - $conditionCollection->add(new IsRefundCompletedPlugin(), 'AfterPay/IsRefundCompleted'); - return $conditionCollection; - }; - return $container; - } - ``` - -In the `src/Pyz/Zed/Oms/OmsDependencyProvider.php` in `provideBusinessLayerDependencies()` method replace this: - -```php -$container->extend(self::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection->add(new SendOrderConfirmationPlugin(), 'Oms/SendOrderConfirmation'); - $commandCollection->add(new SendOrderShippedPlugin(), 'Oms/SendOrderShipped'); - return $commandCollection; -}); -``` - -with this: -```php -$container->extend(self::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection->add(new SendOrderConfirmationPlugin(), 'Oms/SendOrderConfirmation'); - $commandCollection->add(new SendOrderShippedPlugin(), 'Oms/SendOrderShipped'); - $commandCollection->add(new AuthorizePlugin(), 'AfterPay/Authorize'); - $commandCollection->add(new CancelPlugin(), 'AfterPay/Cancel'); - $commandCollection->add(new CapturePlugin(), 'AfterPay/Capture'); - $commandCollection->add(new RefundPlugin(), 'AfterPay/Refund'); - return $commandCollection; -}); - -$container->extend(self::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection->add(new IsAuthorizationCompletedPlugin(), 'AfterPay/IsAuthorizationCompleted'); - $conditionCollection->add(new IsCancellationCompletedPlugin(), 'AfterPay/IsCancellationCompleted'); - $conditionCollection->add(new IsCaptureCompletedPlugin(), 'AfterPay/IsCaptureCompleted'); - $conditionCollection->add(new IsRefundCompletedPlugin(), 'AfterPay/IsRefundCompleted'); - return $conditionCollection; -}); -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.md deleted file mode 100644 index 71f5addf507..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Amazon Pay - Sandbox Simulations -description: In this article, you can get information about sandbox simulations for the Amazon Pay module in Spryker Commerce OS. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-sandbox-simulations -originalArticleId: 8f747cd7-0740-46d3-a237-c98fe2ad6ed5 -redirect_from: - - /v1/docs/amazon-sandbox-simulations - - /v1/docs/en/amazon-sandbox-simulations -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-state-machine.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - - In order to reproduce some edge cases like declined payment or pending capture Amazon provides two solutions. First is special methods marked with red star on payment widget. - -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/00000005.png) - -It allows reproducing different cases of decline payment workflow. But there are more edge cases like expired authorisation or pending capture there is only one way to reproduce - pass simulation string as 'SellerNote' parameter of API request. - -## How to use the module -### Configuration -In order to use Amazon Pay system as well as related Spryker module, Amazon merchant account has to be created. After that all related credentials must be specified in spryker configuration file. - -```php -$config[AmazonpayConstants::CLIENT_ID] must be taken as value of Client Id of Amazon merchant -$config[AmazonpayConstants::CLIENT_SECRET] must be taken as value of Client Secret of Amazon merchant -$config[AmazonpayConstants::SELLER_ID] must be taken as value of Merchant ID of Amazon merchant -$config[AmazonpayConstants::ACCESS_KEY_ID] must be taken as value of Access Key ID of Amazon merchant -$config[AmazonpayConstants::SECRET_ACCESS_KEY] must be taken as value of Secret Access Key of Amazon merchant -$config[AmazonpayConstants::REGION] must be specified in ISO2 format. For example "DE" or "US". -$config[AmazonpayConstants::SANDBOX] must be set to false in production environment -$config[AmazonpayConstants::SUCCESS_PAYMENT_URL] must be specified as an URL where customer will be redirected after successful resulf of MFA challenge. -$config[AmazonpayConstants::FAILURE_PAYMENT_URL] must be specified as an URL where customer will be redirected after unsuccessful resulf of MFA challenge. -``` - -Next, two settings are about behaviour of authorization process and were described above: - -```php -$config[AmazonpayConstants::AUTH_TRANSACTION_TIMEOUT] according to info from Amazon this value is 1440. -$config[AmazonpayConstants::CAPTURE_NOW] -State Machine must be set according to the values of these two settings. - -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING][AmazonpayConstants::PAYMENT_METHOD] = - $config[AmazonpayConstants::CAPTURE_NOW] ? 'AmazonpayPaymentSync01' : 'AmazonpayPaymentAsync01'; -And one setting is spryker related only. It is a level of logging of Handling orders with Amazon Pay API calls -$config[AmazonpayConstants::ERROR_REPORT_LEVEL] -``` - -The value `ERRORS_ONLY` is recommended for production so that all errors can be investigated and fixed then. - -### Localization -There's only one related key in glossary: `amazonpay.payment.failed`. It defines the message to display on cart page in case of failed payment. - -### Modifications of the Project Code -The module provides not only Facade with all functionality behind but also controllers, templates, javascripts for rendering amazonpay widgets. It is usually very different from one shop to another but on early stage it could be usefull to use what bundle provides. - -First of all, AmazonpayControllerProvider must be added to YvesBootstrap. Modify `src/Pyz/Yves/Application/YvesBootstrap.php` as follows: - -```php -/** - * @param bool|null $isSsl - * - * @return \Pyz\Yves\Application\Plugin\Provider\AbstractYvesControllerProvider[] - */ -protected function getControllerProviderStack($isSsl) -{ - return [ - new AmazonpayControllerProvider($isSsl), -// other controllers of a shop -``` - -Next step is rendering Pay with Amazon button. Just insert this line in a proper place of twig template which is normally template of cart page: - -```php -{% raw %}{{{% endraw %} render(path('amazonpay_paybutton')) {% raw %}}}{% endraw %} -``` - -Make sure that the button is rendered and works properly. In the sandbox mode it is necessary to have Amazon Pay test account. Once buyer is signed in with his credentials, he must be redirected to the checkout page and Amazon Order Reference Id has to be passed. On the checkout page two widgets must be displayed as well as button for confirming purchase. Delivery method selection has to be build on merchant side and Amazon provides nothing for it. Nevertheless, it always depends on the country and therefore it has to be refreshed after the delivery address is selected from the widget. For this Amazon provides JavaScript callback `onAddressSelect`. In the bundle it triggers internal controller `getShipmentMethodsAction()` which triggers Facade's method `addSelectedAddressToQuote()`. This method retrieves selected location via Handling orders with Amazon Pay API and writes it to Quote. After that, it is possible to retrieve available shipment methods. - -For that purpose Spryker provides Shipment Bundle and its client with method `getAvailableMethods()`. - -After all the necessary data is selected, "place order" button should be available to click. After clicking the button Ajax call is sent to Yves, and `SetOrderReference`, `ConfirmOrderReference` API requests are sent to Amazon. In case of successful API calls, the customer is redirected to Amazon page for passing MFA challenge. In the case of passing the MFA challenge, the customer is redirected to the link defined in config as `AmazonpayConstants::SUCCESS_PAYMENT_URL`. In another case, the customer is redirected to the link defined in `AmazonpayConstants::FAILURE_PAYMENT_URL`. - -The rest of integration includes State machine which is different for synchronous and asynchronous modes. For the asynchronous mode endpoint URL for receiving IPN messages has to be specified. Bundle provides default one with controller looks as follows: - -```php - public function endpointAction() - -{ - $headers = getallheaders(); - $body = file_get_contents('php://input'); - - $ipnRequestTransfer = $this->getFacade()->convertAmazonpayIpnRequest($headers, $body); - $this->getFacade()->handleAmazonpayIpnRequest($ipnRequestTransfer); - - return new Response('Request has been processed'); -} -``` - -It receives HTTP header and body as array and string respectively and passes it to the Facade method `convertAmazonpayIpnRequest()` which returns transfer object. Exact type of it depends on the type of IPN request and may be one of those: - -`AmazonpayIpnPaymentAuthorizeRequest`, `AmazonpayIpnPaymentCaptureRequest`, `AmazonpayIpnPaymentRefundRequest`, `AmazonpayIpnOrderReferenceNotification`. Another Facade's method called `handleAmazonpayIpnRequest` is responsible for handling all these messages. Normally it changes the status of a payment in the database and triggers some State Machine event. Then state machine command and conditions take action. In case of any problems with receiving IPN messages it is possible to do the same manually using state machine buttons in Zed. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-state-machine.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-state-machine.md deleted file mode 100644 index da64d9251eb..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/amazon-pay-state-machine.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Amazon Pay - State Machine -description: This article describes the state machine for the Amazon Pay module in Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-state-machine -originalArticleId: e8c81c83-c189-4125-8595-0a60c1630688 -redirect_from: - - /v1/docs/amazon-pay-state-machine - - /v1/docs/en/amazon-pay-state-machine -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -The state machine is different for synchronous and asynchronous flow. Although from status "capture completed" it is the same and in the state machine, it's presented as a sub-process. - -The state machine for the synchronous flow: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/sync.png) - -The state machine for the asynchronous flow: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/async.png) - -## OMS Commands - -Here is a list of commands and conditions to support processing of OMS: -
- Click here for example of injection - - ```php - - ``` -
-
diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/configuring-amazon-pay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/configuring-amazon-pay.md deleted file mode 100644 index f1404da7da6..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/configuring-amazon-pay.md +++ /dev/null @@ -1,278 +0,0 @@ ---- -title: Configuring Amazon Pay -description: Configure and integrate Amazon Pay into the Spryker Commerce OS by following the instructions from this article. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-configuration-scos -originalArticleId: 99fa3a6b-4fa9-45c0-8d55-fa45e89f2b27 -redirect_from: - - /v1/docs/amazon-pay-configuration-scos - - /v1/docs/en/amazon-pay-configuration-scos -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html ---- - -{% info_block infoBox "Note" %} -Please refer to `config/Shared/config.dist.php` for the module configuration example. -{% endinfo_block %} - - -To set up the Amazon Pay initial configuration, use the credentials you received after registering as an Amazon seller: - -```php -$config[AmazonPayConstants::WIDGET_SCRIPT_PATH] = 'https://static-eu.payments-amazon.com/OffAmazonPayments/eur/lpa/js/Widgets.js'; -$config[AmazonPayConstants::WIDGET_SCRIPT_PATH_SANDBOX] = 'https://static-eu.payments-amazon.com/OffAmazonPayments/eur/sandbox/lpa/js/Widgets.js'; -$config[AmazonPayConstants::CLIENT_ID] = ''; -$config[AmazonPayConstants::CLIENT_SECRET] = ''; -$config[AmazonPayConstants::SELLER_ID] = ''; -$config[AmazonPayConstants::ACCESS_KEY_ID] = ''; -$config[AmazonPayConstants::SECRET_ACCESS_KEY] = ''; -$config[AmazonPayConstants::SECRET_ACCESS_KEY] = ''; -``` - -In case an order is being rejected by Amazon, the module will do a redirect. The default recommendation is to redirect to cart. You need to configure this: - -```php -$config[AmazonPayConstants::PAYMENT_REJECT_ROUTE] = 'cart'; -``` - -Next, specify your country and shop: - -```php -$config[AmazonPayConstants::REGION] = 'DE'; -$config[AmazonPayConstants::STORE_NAME] = 'The Shop'; -``` - -For development purposes, sandbox mode must be enabled: - -```php -$config[AmazonPayConstants::SANDBOX] = true; -``` - -The `ERROR_REPORT_LEVEL` parameter is used for internal purposes and specifies the log verbosity level. - -There are three options: - -1. Log all API responses. -2. Log errors only. -3. Disable logging. - -```php -$config[AmazonPayConstants::ERROR_REPORT_LEVEL] = TransactionLogger::REPORT_LEVEL_ERRORS_ONLY; -``` - -To configure look-and-feel of Amazon Pay button, you can use the following config values: - -```php -$config[AmazonPayConstants::WIDGET_BUTTON_TYPE] = AmazonPayConfig::WIDGET_BUTTON_TYPE_FULL; -$config[AmazonPayConstants::WIDGET_BUTTON_SIZE] = AmazonPayConfig::WIDGET_BUTTON_SIZE_MEDIUM; -$config[AmazonPayConstants::WIDGET_BUTTON_COLOR] = AmazonPayConfig::WIDGET_BUTTON_COLOR_DARK_GRAY; -``` - -According to Amazon Pay restrictions, a module can run either on a `localhost` domain or via HTTPS. If it is not possible to use `localhost`, HTTPS connection should be configured. For testing purposes, register a test account in the [Amazon Pay dashboard](https://pay.amazon.com/us). - -## OMS Configuration - -Activate the following processes. If you plan to use only one process, drop the other one. - -```php -$config[OmsConstants::PROCESS_LOCATION][] = APPLICATION_ROOT_DIR . '/vendor/spryker-eco/amazon-pay/config/Zed/Oms'; -$config[OmsConstants::ACTIVE_PROCESSES][] = 'AmazonPayPaymentAsync01'; -$config[OmsConstants::ACTIVE_PROCESSES][] = 'AmazonPayPaymentSync01'; -``` - -Default implementation for commands and options should be added to `Pyz/Zed/Oms/OmsDependencyProvider.php` - -1. Commands: - -```php -$container->extend(OmsDependencyProvider::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection - ->add(new CancelOrderCommandPlugin(), 'AmazonPay/CancelOrder') - ->add(new CloseOrderCommandPlugin(), 'AmazonPay/CloseOrder') - ->add(new RefundOrderCommandPlugin(), 'AmazonPay/RefundOrder') - ->add(new ReauthorizeExpiredOrderCommandPlugin(), 'AmazonPay/ReauthorizeExpiredOrder') - ->add(new CaptureCommandPlugin(), 'AmazonPay/Capture') - ->add(new UpdateSuspendedOrderCommandPlugin(), 'AmazonPay/UpdateSuspendedOrder') - ->add(new UpdateAuthorizationStatusCommandPlugin(), 'AmazonPay/UpdateAuthorizationStatus') - ->add(new UpdateCaptureStatusCommandPlugin(), 'AmazonPay/UpdateCaptureStatus') - ->add(new UpdateRefundStatusCommandPlugin(), 'AmazonPay/UpdateRefundStatus'); - - return $commandCollection; -} ); -``` - -2. Conditions: - -```php -$container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection - ->add(new IsClosedConditionPlugin(), 'AmazonPay/IsClosed') - ->add(new IsCloseAllowedConditionPlugin(), 'AmazonPay/IsCloseAllowed') - - ->add(new IsCancelledConditionPlugin(), 'AmazonPay/IsCancelled') - ->add(new IsCancelNotAllowedConditionPlugin(), 'AmazonPay/IsCancelNotAllowed') - ->add(new IsCancelledOrderConditionPlugin(), 'AmazonPay/IsOrderCancelled') - - ->add(new IsOpenConditionPlugin(), 'AmazonPay/IsAuthOpen') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsAuthDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsAuthPending') - ->add(new IsSuspendedConditionPlugin(), 'AmazonPay/IsAuthSuspended') - ->add(new IsAuthExpiredConditionPlugin(), 'AmazonPay/IsAuthExpired') - ->add(new IsClosedConditionPlugin(), 'AmazonPay/IsAuthClosed') - ->add(new IsAuthTransactionTimedOutConditionPlugin(), 'AmazonPay/IsAuthTransactionTimedOut') - ->add(new IsSuspendedConditionPlugin(), 'AmazonPay/IsPaymentMethodChanged') - - ->add(new IsCompletedConditionPlugin(), 'AmazonPay/IsCaptureCompleted') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsCaptureDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsCapturePending') - - ->add(new IsCompletedConditionPlugin(), 'AmazonPay/IsRefundCompleted') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsRefundDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsRefundPending'); - - return $conditionCollection; -}); -``` - -All default commands and conditions are stored in `SprykerEco\Zed\AmazonPay\Communication\Plugin\Oms\` namespace. - -## IPN Configuration - -In order to allow everyone to send push notifications, please extend `config_default.XXX.php` for desired environments: - -```php -$config[AclConstants::ACL_USER_RULE_WHITELIST][] = [ - 'bundle' => 'amazonpay', - 'controller' => 'ipn', - 'action' => 'endpoint', - 'type' => 'allow', -]; -``` - -Depending on your SSL configuration, you may have to extend as well: - -```php -$config[ApplicationConstants::ZED_SSL_EXCLUDED][] = 'amazonpay/ipn/endpoint'; -$config[ApplicationConstants::YVES_SSL_EXCLUDED]['aie'] = '/amazonpay/ipn/endpoint'; -``` - -## Yves Controllers - -In order to enable processing of AmazonPay commands on front end, please add `AmazonPayControllerProvider` to `YvesBootstrap`: - -```php -/** - * @param bool|null $isSsl - * - * @return \Pyz\Yves\Application\Plugin\Provider\AbstractYvesControllerProvider[] - */ -protected function getControllerProviderStack($isSsl) -{ - return [ - ... - new AmazonPayControllerProvider($isSsl), - ]; -} -``` - -## Theme Support - -To make Spryker Eco themes usable, add the following line into the function `addCoreTemplatePaths` in `Pyz/Yves/Twig/TwigConfig`: - -```php -$paths[] = APPLICATION_VENDOR_DIR . '/spryker-eco/%1$s/src/SprykerEco/Yves/%1$s/Theme/' . $themeName; -``` - -In the section include of `tsconfig.json`, add the following: - -```php -"./vendor/spryker-eco/**/*", -``` - -In the section paths of `frontend/settings.js`, add the following: - -```php -// eco folders -eco: { - // all modules - modules: './vendor/spryker-eco' -}, -``` - -In the section module.exports property dirs of `frontend/settings.js` add the following: - -```php -path.join(context, paths.eco.modules), -``` - -No matter how many SprykerEco modules you are using, these changes are required to be made only once. - -Make sure to rebuild front-end script by running `npm run yves`. - -## Checkout Integration - -To plug into checkout process, you need to add plugins into `CheckoutDependencyProvider:` - -```php -protected function getCheckoutPreConditions(Container $container) -{ - return [ - .... - new AmazonPayConfirmOrderPreConditionPlugin(), - ]; -} - -protected function getCheckoutOrderSavers(Container $container) -{ - return [ - .... - new AmazonPaySaveOrderPlugin(), - ]; -} -``` - -`AmazonPayConfirmOrderPreConditionPlugin` should be placed as the last plugin for preconditions. - -AmazonPay expects that order is not placed in some cases. For example, it happens when Synchronos mode is on, and payment cannot be processed. - -In order to handle this, extend `SuccessStep` in your project. - -```php -/** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ -public function postCondition(AbstractTransfer $quoteTransfer) -{ - if ($quoteTransfer->getAmazonpayPayment() === null) { - return true; - } - - if ($quoteTransfer->getAmazonpayPayment()->getOrderReferenceId() === null) { - return false; - } - - return true; -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.md deleted file mode 100644 index 3ce08af39f7..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Handling orders with Amazon Pay API -description: This article provides details on the API structure of the Amazon Pay module in Spryker Commerce OS. -last_updated: Sep 19, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-api -originalArticleId: 010b8bdc-f637-4acc-98c9-534fd468bfa8 -redirect_from: - - /v1/docs/amazon-pay-api - - /v1/docs/en/amazon-pay-api -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html ---- - -So far we discussed the client-side implementation provided by Amazon Pay. On the Spryker side, the bundle provides the tools for rendering Amazon Pay widgets. - -Another part of the implementation is the Handling orders with Amazon Pay API function wrapper, implemented as a Facade. - -Each API call involves similar classes from the module: - -* An adapter for adapting Amazon SDK that makes the rest of the module independent of the external library; -* A converter from Amazon responses to Spryker OS transfer objects; -* A logger for logging information about API calls; -* A transaction for updating transfer objects. - -Since it is a standard Spryker OS practice, an entry point is a public method of the Facade, so, the flow for a typical transaction includes the following steps: - -1. Logically grouping the affected order items, based on the transaction type: -* for authorize & capture - by AuthorizationReferenceId -* for refund & capture status update - by AmazonCaptureId -* no grouping is required for close and cancel since operations are performed for the whole order. -2. The following steps are executed for each group separately: -* Calling Facade method. -* Facade creates a related transaction handler or a collection of transaction handlers. -* The transaction handler has execute method expecting an AmazonCallTransfer object as a parameter. -* The transaction handler passes a transfer object to the adapter which is responsible for direct communication with the Handling orders with Amazon Pay API. Using the provided SDK it converts API responses into transfer objects using converters. Apart from adapters and converters, the rest of the code does not know anything about Handling orders with Amazon Pay API details and only works with Spryker OS transfer objects. -* If not all order items, belonging to a logical group, where requested for the update, a new group is created for affected order items. -* The transaction handler returns a modified transfer object. All information related to Amazon Pay is stored into. - -## Initializing Quote Transfer Objects - -After a user signs in via Amazon Pay, we can make API calls against the order. The first step is to initialize order data and store it to a quote transfer object using the Quote updater classes. These classes work in a similar way to transaction handlers. However, they only retrieve information from Amazon (if necessary) and then save it to a Quote. - -**There are three steps for initializing a new order**: - -1. Retrieve and update buyer information. -2. Create payment transfer objects. -3. Update Shipment. - -Only the first step uses an API call while the other two are only about initializing. - -The updater class for retrieving buyer data is called `GuestCustomerDataQuoteUpdater`. It uses a related adapter called `ObtainProfileInformationAdapter`, to make an API call and store data into the Quote transfer. - -We have this call instead of taking current user data to create a separation between Spryker and Amazon accounts and enable the ability to make an order without a Spryker account. -If a logged in user places an order, the order would be still assigned to him and visible in the Customer area. - -## Updating Shipment Address and Method - -Once a buyer chooses a shipping address from the Address widget, a Javascript callback is triggered. -We notify server-side that the user has changed their shipment address (for example by making an ajax request to a URL ). -Then we use the Facade method `addSelectedAddressToQuote` to return the updated Quote object and save the updated quote. -Now the quote contains updated address information and it's possible to retrieve the location's available shipment methods. -Spryker provides a Shipment bundle and uses client classes and the `getAvailableMethods` method to retrieve the data to refresh it for the buyer. -Once shipment options are updated a buyer can choose one. Usually, the shipment method affects the total price of the order and it must be recalculated using the Spryker Calculation bundle. - -## Placing an Order - -Once all necessary information is selected, an order is ready to be placed. -First, call all related API calls and then persist an order in the database. -All API related jobs are covered by only one Facade method confirmPurchase() which encapsulates three Handling orders with Amazon Pay API calls to be executed one by one: - -1. `SetOrderReferenceDetails` for specifying order total amount -2. `ConfirmOrderReference` for confirming the order -3. `GetOrderReferenceDetails` for retrieving information about buyer (like name and shipping address) - -```php -/** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return \Generated\Shared\Transfer\QuoteTransfer - */ -public function execute(QuoteTransfer $quoteTransfer) -{ - foreach ($this->transactionHandlers as $transactionHandler) { - $quoteTransfer = $transactionHandler->execute($quoteTransfer); - - if (!$quoteTransfer->getAmazonpayPayment()->getResponseHeader()->getIsSuccess()) { - return $quoteTransfer; - } - } - - return $quoteTransfer; -} -``` -Once a transaction finishes, we pass the updated quote transfer to the next transaction. If the transaction fails, we return the current one and it contains all information about an error and it can be retrieved and analyzed. - -See the `AmazonpayResponseHeaderTransfer` object which can be retrieved from Quote transfer with `$quoteTransfer->getAmazonpayPayment()->getResponseHeader()` - -Finally, if all steps go well, we can place an order using (for example) a client from the checkout module with an Amazon Pay saver plugin injected. If not, the decline flow takes place. - -The next step is to authorize the order. It's a separate operation because in terms of PSD2 rules authorization happening in case the customer passed MFA challenge. - -## Authorization in Asynchronous and Synchronous Modes. CaptureNow Setting - -The authorization API call is configurable and it reflects the whole payment process. First, an important setting is transaction_timeout which defines the maximum number of minutes allocated for the Authorise operation call to be processed, after which the authorization is automatically declined and you cannot capture funds against the authorization. The value zero means that the authorization result has to be returned immediately and it is asynchronous authorization. For the synchronous authorization, the value must be above zero but less than maximal possible 1440. Another important setting is CaptureNow. It can only be true or false and if set to true then both requests - Authorisation and Capture will be done in one step, within Authorise API call. Both setting are independent and may have all possible values. The whole order process and related State Machine depend on these settings and can be very different. - -## Handling Declined Payments. Synchronous Workflow -Amazon Pay documentation defines a workflow which has to be implemented on a merchant side. -{image} -In some cases, declined payments involves additional API calls. This is why there is an additional transaction collection called `HandleDeclinedOrderTransaction`. This call goes after the Authorization step and encapsulates two transaction objects: - -`GetOrderReferenceDetailsTransaction` which was used previously and `CancelOrderTransaction`. - -When all previous steps return a positive response and authorization is accepted it returns a Quote transfer object without any modifications. If payment is declined because of wrong payment method - there's nothing to do on a server-side. - -If the reason is different, we can check the state of an order using `GetOrderReferenceDetailsTransaction`. - -If it is open then the order must be canceled with a `CancelOrderTransaction` call. - -The rest of the decline flow includes logic determining where to redirect a buyer. In sandbox mode, for each test account, Amazon provides fake payment methods for emulating error API responses. - -{% info_block errorBox "Important!" %} -Even if a response has status code 200 it still may contain Constraint(s -{% endinfo_block %} in the response body.) - -There is one special constraint related to the selected payment method `PaymentMethodNotAllowed`. If it occurs (rarely) the buyer should be redirected to the same page with address and payment widgets and be able to choose a different payment method and all other order parameters as well. - -## Handling Declined Payments. Asynchronous Workflow -Unlike the synchronous authorisation, it is impossible to get the result of the authorization in the response. Authorization object stays in Pending state until authorized. Capture and Refund requests can also be processed in the same way and Amazon provides Internet Payment Notification (IPN) in order to notify the shop about the new status of any asynchronous request. IPN message is an HTTP request with some special Amazon-related headers and the body which is XML string containing all data. The merchant has to specify URL for receiving and processing IPN messages. The Bundle provides two Facade's methods - -`convertAmazonpayIpnRequest`(array `$headers`, `$body`) for converting Amazon request (which is HTTP headers and body) to the transfer object. For each type of IPN request Spryker provides related transfer object and method `convertAmazonpayIpnRequest()` returns one of them. For the processing of these transfer objects the Facade's method `handleAmazonpayIpnRequest` (`AbstractTransfer``$ipnRequestTransfer`) should be called. It `AbstractTransfer` type for its argument and it works with all types of IPN related transfer objects. A typical flow of a successful flow usually involves pending statuses of authorization and capture requests. Therefor related IPN messages have to be received and processed correctly. For retrieving same information Amazon provides also `GetAuthorizationDetails` and `GetCaptureDetails` functions and in Spryker, it is possible to update the pending statuses with State machine buttons. Once the button is clicked, the shop makes a related API call, receives a response and if the state is not pending then it updates order status according to the response message. The final status of a success flow is "capture completed". After that only Refund is available and refund workflow is asynchronous only and works in a similar way as asynchronous authorization. - -The more tricky case is authorization declined workflow. It is similar to synchronous decline which was described above but everything goes asynchronously and involves additional IPN messages. First of all, Authorisation IPN comes with "Declined" state of authorization status. Another important information here is ReasonCode and it affects all further steps of the process. For the reason codes, `TransactionTimedOut` and `AmazonRejected` the order simply goes to "authorization declined" state but for the - -InvalidPaymentMethod the customer has to change the payment method to the correct one. In this case, order receives "authorization suspended" status and Amazon sends two additional IPN messages: `OrderNotification` with the state "Open" comes in after payment method is changed by buyer and Authorisation notification as a result of authorization of a new payment method. If the new payment method passes authorization successfully then the order goes to the "auth open" state and it is possible to request a capture. In both decline cases, it is important to notify the buyer about it by email since it's the only way for him to know that payment is not possible. The text of the email letter has to be different for `InvalidPaymentMethod` case. - -Another tricky moment about asynchronous flow is "Authorisation expired" situation. Each time the shop requests capture in the asynchronous mode it should check the current status of authorisation. Capture is only possible where the status of authorisation is "Open". If authorisation has status "Closed" and `ReasonCode` is either `ExpiredUnused` or `SellerClosed` then an order should be reauthorized with `CaptureNow` setting enabled. - -## Refund -After successful authorization and capture processes order receives the status "capture completed". From this state only one operation is possible and it is Refund. A refund can be partial if more than one item set to refund or full. - -Amazon only requires the amount of money which has to be refunded and the calculation has to be implemented on the shop's side. Spryker provides a bundle for calculating the amount to refund. Regardless the chosen setting Refund is always asynchronous. Once requested, an order goes to "refund pending" status and then IPN notification will notify the shop if a refund was accepted or declined. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-configuration-for-the-legacy-demoshop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-configuration-for-the-legacy-demoshop.md deleted file mode 100644 index 7c801fa9a63..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-configuration-for-the-legacy-demoshop.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Amazon Pay - Configuration for the Legacy Demoshop -description: Configure and integrate Amazon Pay into the Spryker Legacy Demoshop by following the instructions from this article. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-configuration-demoshop -originalArticleId: 9f16f048-6d2d-48b9-a63e-fe4091265a9b -redirect_from: - - /v1/docs/amazon-pay-configuration-demoshop - - /v1/docs/en/amazon-pay-configuration-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html ---- - -{% info_block infoBox "Note" %} - Please refer to `config/Shared/config.dist.php` for the module configuration example. -{% endinfo_block %} - -To set up the Amazon Pay initial configuration, use the credentials you received after completing the registration as an Amazon seller: -```php -$config[AmazonPayConstants::WIDGET_SCRIPT_PATH] = 'https://static-eu.payments-amazon.com/OffAmazonPayments/eur/lpa/js/Widgets.js'; -$config[AmazonPayConstants::WIDGET_SCRIPT_PATH_SANDBOX] = 'https://static-eu.payments-amazon.com/OffAmazonPayments/eur/sandbox/lpa/js/Widgets.js'; -$config[AmazonPayConstants::CLIENT_ID] = ''; -$config[AmazonPayConstants::CLIENT_SECRET] = ''; -$config[AmazonPayConstants::SELLER_ID] = ''; -$config[AmazonPayConstants::ACCESS_KEY_ID] = ''; -$config[AmazonPayConstants::SECRET_ACCESS_KEY] = ''; -``` - -In case an order is being rejected by Amazon, the module will do a redirect. The default recommendation is to redirect to cart. You need to configure this: -```php -$config[AmazonPayConstants::PAYMENT_REJECT_ROUTE] = 'cart'; -``` - -Next, specify your country and shop: -```php -$config[AmazonPayConstants::REGION] = 'DE'; -$config[AmazonPayConstants::STORE_NAME] = 'The Shop'; -``` - -For development purposes, sandbox mode must be enabled: -```php -$config[AmazonPayConstants::SANDBOX] = true; -``` - -The `ERROR_REPORT_LEVEL` parameter is used for internal purposes and specifies the log verbosity level. - -There are three options: - -1. Log all API responses. -2. Log errors only. -3. Disable logging. - -```php -$config[AmazonPayConstants::ERROR_REPORT_LEVEL] = TransactionLogger::REPORT_LEVEL_ERRORS_ONLY; -``` - -To configure look-and-feel of Amazon Pay button, you can use the following config values: -```php -$config[AmazonPayConstants::WIDGET_BUTTON_TYPE] = AmazonPayConfig::WIDGET_BUTTON_TYPE_FULL; -$config[AmazonPayConstants::WIDGET_BUTTON_SIZE] = AmazonPayConfig::WIDGET_BUTTON_SIZE_MEDIUM; -$config[AmazonPayConstants::WIDGET_BUTTON_COLOR] = AmazonPayConfig::WIDGET_BUTTON_COLOR_DARK_GRAY; -``` - -According to Amazon Pay restrictions, a module can run either on a `localhost` domain or via HTTPS. If it is not possible to use `localhost`, HTTPS connection should be configured. For testing purposes, register a test account in the [Amazon Pay dashboard](https://pay.amazon.com/us). - -## OMS Configuration - -Activate the following processes. If you plan to use only one process, drop the other one. -```php -$config[OmsConstants::PROCESS_LOCATION][] = APPLICATION_ROOT_DIR . '/vendor/spryker-eco/amazon-pay/config/Zed/Oms'; -$config[OmsConstants::ACTIVE_PROCESSES][] = 'AmazonPayPaymentAsync01'; -$config[OmsConstants::ACTIVE_PROCESSES][] = 'AmazonPayPaymentSync01'; -``` - -Default implementation for commands and options should be added to `Pyz/Zed/Oms/OmsDependencyProvider.php` - -1. Commands: -```php -$container->extend(OmsDependencyProvider::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { -$commandCollection - ->add(new CancelOrderCommandPlugin(), 'AmazonPay/CancelOrder') - ->add(new CloseOrderCommandPlugin(), 'AmazonPay/CloseOrder') - ->add(new RefundOrderCommandPlugin(), 'AmazonPay/RefundOrder') - ->add(new ReauthorizeExpiredOrderCommandPlugin(), 'AmazonPay/ReauthorizeExpiredOrder') - ->add(new CaptureCommandPlugin(), 'AmazonPay/Capture') - ->add(new UpdateSuspendedOrderCommandPlugin(), 'AmazonPay/UpdateSuspendedOrder') - ->add(new UpdateAuthorizationStatusCommandPlugin(), 'AmazonPay/UpdateAuthorizationStatus') - ->add(new UpdateCaptureStatusCommandPlugin(), 'AmazonPay/UpdateCaptureStatus') - ->add(new UpdateRefundStatusCommandPlugin(), 'AmazonPay/UpdateRefundStatus'); - -return $commandCollection; -} ); -``` -2. Conditions: -```php -$container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection - ->add(new IsClosedConditionPlugin(), 'AmazonPay/IsClosed') - ->add(new IsCloseAllowedConditionPlugin(), 'AmazonPay/IsCloseAllowed') - - ->add(new IsCancelledConditionPlugin(), 'AmazonPay/IsCancelled') - ->add(new IsCancelNotAllowedConditionPlugin(), 'AmazonPay/IsCancelNotAllowed') - ->add(new IsCancelledOrderConditionPlugin(), 'AmazonPay/IsOrderCancelled') - - ->add(new IsOpenConditionPlugin(), 'AmazonPay/IsAuthOpen') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsAuthDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsAuthPending') - ->add(new IsSuspendedConditionPlugin(), 'AmazonPay/IsAuthSuspended') - ->add(new IsAuthExpiredConditionPlugin(), 'AmazonPay/IsAuthExpired') - ->add(new IsClosedConditionPlugin(), 'AmazonPay/IsAuthClosed') - ->add(new IsAuthTransactionTimedOutConditionPlugin(), 'AmazonPay/IsAuthTransactionTimedOut') - ->add(new IsSuspendedConditionPlugin(), 'AmazonPay/IsPaymentMethodChanged') - - ->add(new IsCompletedConditionPlugin(), 'AmazonPay/IsCaptureCompleted') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsCaptureDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsCapturePending') - - ->add(new IsCompletedConditionPlugin(), 'AmazonPay/IsRefundCompleted') - ->add(new IsDeclinedConditionPlugin(), 'AmazonPay/IsRefundDeclined') - ->add(new IsPendingConditionPlugin(), 'AmazonPay/IsRefundPending'); - - return $conditionCollection; -}); -``` - -All default commands and conditions are stored in `SprykerEco\Zed\AmazonPay\Communication\Plugin\Oms\` namespace. - -## IPN Configuration - -In order to allow everyone to send push notifications, please extend `config_default.XXX.php` for desired environments: -```php -$config[AclConstants::ACL_USER_RULE_WHITELIST][] = [ - 'bundle' => 'amazonpay', - 'controller' => 'ipn', - 'action' => 'endpoint', - 'type' => 'allow', -]; -``` - -Depending on your SSL configuration, you may have to extend as well: -```php -$config[ApplicationConstants::ZED_SSL_EXCLUDED][] = 'amazonpay/ipn/endpoint'; -$config[ApplicationConstants::YVES_SSL_EXCLUDED]['aie'] = '/amazonpay/ipn/endpoint'; -``` - -## Yves Controllers - -In order to enable processing of AmazonPay commands on frontend, please add `AmazonPayControllerProvider` to `YvesBootstrap`: -```php -/** - * @param bool|null $isSsl - * - * @return \Pyz\Yves\Application\Plugin\Provider\AbstractYvesControllerProvider[] - */ -protected function getControllerProviderStack($isSsl) -{ - return [ - ... - new AmazonPayControllerProvider($isSsl), - ]; -} -``` - -## Checkout Integration - -AmazonPay expects that order is not placed in some cases. For example, it happens when Synchronos mode is on, and payment cannot be processed. - -In order to handle this, extend `SuccessStep` in your project. For example: -```php -/** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ -public function postCondition(AbstractTransfer $quoteTransfer) -{ - if ($quoteTransfer->getAmazonpayPayment() === null) { - return true; - } - - if ($quoteTransfer->getAmazonpayPayment()->getOrderReferenceId() === null) { - return false; - } - - return true; -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.md deleted file mode 100644 index 1fa563a6e9e..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Amazon Pay - Email Notifications -description: You can find the details for authorization status update logic in the Spryker Legacy Demoshop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-email-notification-demoshop -originalArticleId: f989f6a4-f4cb-404f-bf74-8f3f8244fd59 -redirect_from: - - /v1/docs/amazon-pay-email-notification-demoshop - - /v1/docs/en/amazon-pay-email-notification-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html ---- - -Since Amazon Pay requires some emails being sent in specific situations, please implement on a project level following authorization status update logic. - -### UpdateOrderAuthorizationStatusTransaction - -Once the order authorization state is Suspended, the customer should receive an email stating that the order requires customer's interaction. - -Suggested email template for Suspended status is: - -Theme: Please update your payment information - -Content: - -```xml -Valued customer, - -Thank you very much for your order at Spryker Shop. -Amazon Pay was not able to process your payment. -Please navigate to -https://payments.amazon.com/en/jr/your-account/orders?language=en_GB -and update the payment information for your order. Afterward, we will -automatically request payment again from Amazon Pay and you will receive a -confirmation email. - -Kind regards -``` - -Once the order authorization is Declined, the customer should receive an email stating that the order requires customer's interaction. - -Suggested email template for Declined status is: - -Theme: Please contact us regarding your order - -Content: - -```xml -Valued customer, - -Unfortunately, Amazon Pay declined the payment for your order in our online -Spryker Shop. -Please contact us. - -Kind regards -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.md deleted file mode 100644 index f1503c9616a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Amazon Pay - Order Reference and Information about Shipping Addresses -description: This article contains information about order reference and shipping address information in the Spryker Legacy Demoshop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-order-ref-info-demoshop -originalArticleId: 3f5bd3b2-8434-44b3-8939-9e79f2d71282 -redirect_from: - - /v1/docs/amazon-pay-order-ref-info-demoshop - - /v1/docs/en/amazon-pay-order-ref-info-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Configuration for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-configuration-for-the-legacy-demoshop.html ---- - -After successful authorization, a buyer will be redirected to an order details page to enter all the information necessary for placing an order: address of shipment, payment method, delivery method and some calculations about taxes, possible discounts, delivery cost, etc. - -Amazon Pay provides solutions for choosing shipping addresses and payment methods based on what the buyer previously used on Amazon. As addresses differ by country, the delivery method selection must be implemented by the shop and aligned with shipping address information. - -Amazon provides two widgets for choosing shipment and payment information, they can be placed together on the same page or separately. - -* Add the following widget on your page: - -```xml -{% raw %}{{{% endraw %} render(path('amazonpay_checkout_widget')) {% raw %}}}{% endraw %} -``` - -Configuration would be used from your current settings profile. - -Place order button should look like this: -```xml -Place order -``` - -Both widgets are similar to the `paybutton` widget that we described earlier. - -All necessary credentials have to be specified the same way and in order to retrieve the selected information, Amazon provides JavaScript callbacks. - -The first of them to use is `onOrderReferenceCreate`, which provides an Amazon order reference ID. - -This ID is a unique identifier of an order, created on Amazon's side and is required for Handling orders with Amazon Pay API calls. - -Other important callbacks are `onAddressSelect` and `onPaymentSelect`. These callbacks are triggered after selecting shipment address information and payment method respectively. Callbacks are client side notifications informing that an event has happened. - -Use the Handling orders with Amazon Pay API to retrieve data and run order operations. - -### Checkout Step Rendering - -Since payment module is generic, `PaymentController` provides method `getItems` in order to extend display of items. - -For example, in order to handle bundled products, follow these steps: - -Create template on project level `AmazonPay/Theme/default/payment/patials/checkout-item.twig`: -```twig -{% raw %}{%{% endraw %} if item.bundleProduct is defined {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@checkout/checkout/partials/summary-item.twig' with {'item': item.bundleProduct, 'bundleItems' : item.bundleItems} {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include '@checkout/checkout/partials/summary-item.twig' {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - ``` - -Extend `AmazonPay/Controller/PaymentController` and add the following method: -```php -/** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return \ArrayObject|\Generated\Shared\Transfer\ItemTransfer[] - */ - protected function getCartItems(QuoteTransfer $quoteTransfer) - { - return $this->getFactory()->createProductBundleGrouper()->getGroupedBundleItems( - $quoteTransfer->getItems(), - $quoteTransfer->getBundleItems() - ); - } - ``` - -Add corresponding method to `AmazonPayFactory`: -```php -/** - * @return \Spryker\Yves\ProductBundle\Grouper\ProductBundleGrouperInterface - */ - public function createProductBundleGrouper() - { - return new ProductBundleGrouper(); - } - ``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.md deleted file mode 100644 index 6a5fa04e841..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Amazon Pay - Refund -description: This article contain information on the refund process for the Amazon Pay module in Spryker. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-refund-demoshop -originalArticleId: 14873a19-ad4c-48aa-961e-4687fc5a41b0 -redirect_from: - - /v1/docs/amazon-pay-refund-demoshop - - /v1/docs/en/amazon-pay-refund-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -After the successful authorization and capture processes, the order should be closed. This blocks any modifications to an order. From this state only Refund operation is possible. The refund can be partial if more than one item is set to refund or full. - -Amazon only requires the amount of money which has to be refunded, and the calculation has to be implemented on the shop's side. Spryker OS provides a module for calculating the amount to refund. Regardless of the chosen setting, the refund is always asynchronous. Once requested, an order goes to "refund pending" status and then IPN notification will notify the shop if the refund was accepted or declined. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.md deleted file mode 100644 index 3571973038c..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page -description: This article describes the way how to render the Pay with Amazon button on the cart page. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-rendering-pay-demoshop -originalArticleId: 2cd3aef6-08c8-4e5e-83dc-4f2a1e676133 -redirect_from: - - /v1/docs/amazon-pay-rendering-pay-demoshop - - /v1/docs/en/amazon-pay-rendering-pay-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -Usually the checkout page includes information for the buyer to review, items in the cart, prices, total price information and some other order related details. - -From this page, the buyer can proceed to checkout by clicking a related GUI element (for example hyperlink or button). - -Amazon Pay provides its own GUI element, a button which renders by Amazon Javascript code snippet and looks as follows: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/amazonpay_button.png) - -If the buyer is a registered Amazon customer, clicking the button prompts to enter their Amazon login and password. - -If correct, Amazon creates an order reference and passes it to the shop. - -Using this reference and Amazon Pay credentials it is possible to run Handling orders with Amazon Pay API queries. - -**To insert the Amazon Pay button in your shop, add the following widget on your page:**: -```xml -{% raw %}{{{% endraw %} render(path('amazonpay_paybutton')) {% raw %}}}{% endraw %} -``` - -Configuration is used from your current settings profile. - -**Results**: - -If everything was done properly, the clickable button will be displayed and by clicking it, the user will see a popup window with Amazon prompt to login. - -The Popup looks as follows: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/amazon_popup.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.md deleted file mode 100644 index c9be933a917..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Amazon Pay - Sandbox Simulations -description: In this article, you can get information about sandbox simulations for the Amazon Pay module in Spryker Legacy Demoshop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-simulations-demoshop -originalArticleId: 89429ebd-5bb9-457f-bc85-91361b88299a -redirect_from: - - /v1/docs/amazon-pay-simulations-demoshop - - /v1/docs/en/amazon-pay-simulations-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -In order to reproduce some edge cases like declined payment or pending capture, Amazon provides two solutions. The first is special methods marked with a red star on payment widget. - -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/amazon_payment_widget.png) -It allows reproducing different cases of `decline` payment workflow. - -But there are more edge cases like expired authorization or pending capture for which there is only one way to reproduce - pass simulation string as `SellerNote` parameter of API request. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.md deleted file mode 100644 index 906eefdd9bf..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Amazon Pay - State Machine -description: This article describes the state machine for the Amazon Pay module in the Spryker Legacy Demoshop. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-state-machine-demoshop -originalArticleId: af1d9e4d-9f5a-4898-84cd-244ebc9c669d -redirect_from: - - /v1/docs/amazon-pay-state-machine-demoshop - - /v1/docs/en/amazon-pay-state-machine-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html ---- - -The state machine is different for synchronous and asynchronous flow. Although from status "capture completed" it is the same and in the state machine, it's presented as a sub-process. - -The state machine for the synchronous flow: -![Synchronous flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/sync.png) - -The state machine for the asynchronous flow: -![Asynchronous flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Amazon+Pay/async.png) - -## OMS Commands -Here is a list of commands and conditions to support processing of OMS: -```php - -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.md deleted file mode 100644 index af767dd76ac..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Amazon Pay - Support of Bundled Products -description: Amazon Pay supports the bundled products and can be configured in the Spryker shop. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-support-bundled-products-demoshop -originalArticleId: 671394a2-0bab-4ebe-86df-24d20336892e -redirect_from: - - /v1/docs/amazon-pay-support-bundled-products-demoshop - - /v1/docs/en/amazon-pay-support-bundled-products-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -Bundled products are optional in the shop, thus support of those should be configured. - -First, you have to extend `AmazonPayFactory`: -```php -getFactory()->createProductBundleGrouper()->getGroupedBundleItems( - $quoteTransfer->getItems(), - $quoteTransfer->getBundleItems() - ); - } -} -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.md deleted file mode 100644 index fad44ee0ceb..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Legacy Demoshop—Handling orders with Amazon Pay API -description: This article provides details on the API structure of the Amazon Pay module in Spryker Legacy Demoshop. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay-api-demoshop -originalArticleId: 46cd9722-9278-4af3-87f7-daf4994ab75e -redirect_from: - - /v1/docs/amazon-pay-api-demoshop - - /v1/docs/en/amazon-pay-api-demoshop -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html ---- - -So far we discussed the client side implementation provided by Amazon Pay. On the Spryker OS side, the module provides tools for rendering Amazon Pay widgets. - -Another part of the implementation is the Handling orders with Amazon Pay API function wrapper, implemented as a Facade. - -Each API call involves similar classes from the module: - -* An adapter for adapting Amazon SDK that makes the rest of the module independent of the external library; -* A converter from Amazon responses to Spryker OS transfer objects; -* A logger for logging information about API calls; -* A transaction for updating transfer objects. - -Since it is a standard Spryker OS practice, an entry point is a public method of the Facade, so the flow for a typical transaction includes the following steps: - -1. Logically grouping the affected order items, based on the transaction type: -* for authorize & capture - by AuthorizationReferenceId -* for refund & capture status update - by AmazonCaptureId -* no grouping is required for close and cancel since operations are performed for the whole order. -2. The following steps are executed for each group separately -* Calling Facade method. -* Facade creates a related transaction handler or a collection of transaction handlers. -* The transaction handler has execute method expecting an AmazonCallTransfer object as a parameter. -* The transaction handler passes a transfer object to the adapter which is responsible for direct communication with the Handling orders with Amazon Pay API. Using the provided SDK it converts API responses into transfer objects using converters. Apart from adapters and converters, the rest of the code does not know anything about Handling orders with Amazon Pay API details and only works with Spryker OS transfer objects. -* If not all order items, belonging to a logical group, where requested for the update, a new group is created for affected order items. -* The transaction handler returns a modified transfer object. All information related to Amazon Pay is stored into AmazonpayPaymentTransfer transfer object and into the database. - -## Additional Information -### Initializing Quote Transfer Objects -After a user signs in via Amazon Pay, we can make API calls against the order. The first step is to initialize order data and store it to a quote transfer object using the Quote updater classes. These classes work in a similar way to transaction handlers. However, they only retrieve information from Amazon (if necessary) and then save it to a Quote. -**There are three steps for initializing a new order:** -1. Retrieve and update buyer information. -2. Create payment transfer objects. -3. Update Shipment. - -Only the first step uses an API call while the other two are only about initializing. -The updater class for retrieving buyer data is called `GuestCustomerDataQuoteUpdater`. It uses a related adapter called `ObtainProfileInformationAdapter`, to make an API call and store data into the Quote transfer. - -We have this call instead of taking current user data to create a separation between Spryker and Amazon accounts and enable the ability to make an order without a Spryker account. -If a logged in user places an order, the order would be still assigned to him and visible in the Customer area. - -### Updating Shipment Address and Method -Once a buyer chooses a shipment address from the Address widget, a Javascript callback is triggered. -We notify the server side that the user has changed their shipping address. -Then we use the Facade method `addSelectedAddressToQuote` to return the updated quote object and save the updated quote. -Now the quote contains updated address information and it's possible to retrieve available shipment methods. -The Spryker OS provides a Shipment module and uses method `getAvailableMethods()` to retrieve the shipment methods list and send it back to the customer. -Once shipping options are updated a buyer can choose one. Usually, shipment methods affect the total price of the order and it must be recalculated using the Calculation module. - -### Placing an Order -Once all necessary information is saved into Quote, an order is ready to be placed. -First, perform all related API calls and then persist an order in the database. -All API related jobs are covered by only one Facade method confirmPurchase() which encapsulates five Handling orders with Amazon Pay API calls to be executed one after another: - -1. `SetOrderReferenceDetails` for specifying order total amount -2. `ConfirmOrderReference` for confirming the order -3. `GetOrderReferenceDetails` for retrieving information about buyer (like name and shipping address) -4. `AuthorizeOrderTransaction` for authorizing and capturing a payment and decline handling if something goes wrong. -5. `CancelPreOrderTransaction` for canceling the order. It should be done in some cases of declined authorization. - -Each API call is handled by a transaction handler object. In order to call more than one transaction, the module provides `TransactionSequence` class. `TransactionSequence` encapsulates an array of transaction objects. A developer can easily replace single transaction with sequence or replace transaction objects within transaction sequence objects. -Here is an example of an execute method for the collection: - -```php -foreach ($this->transactionHandlers as $transactionHandler) { - $amazonpayCallTransfer = $transactionHandler->execute($amazonpayCallTransfer); - - if ($amazonpayCallTransfer->getAmazonpayPayment()->getResponseHeader() && - !$amazonpayCallTransfer->getAmazonpayPayment()->getResponseHeader()->getIsSuccess()) { - break; - } -} - -return $amazonpayCallTransfer; -``` -Once a transaction is finished successfully, we pass the updated quote transfer to the next transaction. If the transaction fails, we return the current one and it contains all information about an error. - -### Authorization in Asynchronous and Synchronous Modes. CaptureNow Setting -The authorization API call is configurable and it reflects the whole payment process. - -The first important setting is the `transaction_timeout` that defines the maximum number of minutes allocated for the Authorize operation call to be processed, after which the authorization is automatically declined and you cannot capture funds against the authorization. - -Zero value means that authorization result has to be returned immediately and it is synchronous authorization. For the asynchronous authorization, the value must be above zero but less than maximum possible 1440. - -Another important setting is `CaptureNow`. It can only be true or false and if set to true then both requests - Authorization and Capture will be done in one step, within Authorize API call. - -### Handling Declined payments - Synchronous Workflow -Amazon Pay documentation defines a workflow which has to be implemented on a merchant side. - -In some cases, declined payment involves additional API calls. This is why there is an additional transaction collection called `HandleDeclinedOrderTransaction`. This call goes after the Authorization step and encapsulates two transaction objects: -GetOrderReferenceDetailsTransaction which was used previously and `CancelOrderTransaction`. -When all previous steps return a positive response and authorization is accepted it returns transfer object without any modifications. If payment is declined because of wrong payment method - there's nothing to do on a server side. -If the reason is different, we can check the state of an order using `GetOrderReferenceDetailsTransaction`. -If it is open, then the order must be canceled with a `CancelOrderTransaction` call. -The rest of decline flow includes logic determining where to redirect a buyer. In sandbox mode, for each test account, Amazon provides fake payment methods for emulating error API responses. - -{% info_block errorBox "Important!" %} -Even if a response has status code 200 it still may contain Constraint(s -{% endinfo_block %} in the response body.) - -There is one special constraint related to selected payment method `PaymentMethodNotAllowed`. If it occurs (rarely) the buyer should be redirected to the same page with address and payment widgets and be able to choose a different payment method and all other order parameters as well. - -### Handling Declined Payments - Asynchronous Workflow -Unlike synchronous authorization it is impossible to get the result of authorization in the response. Authorization objects stay in Pending state until authorized. Capture and Refund requests can also be processed in the same way and Amazon provides Internet Payment Notification (IPN) in order to notify the shop about the new status of any asynchronous request. IPN message is an HTTP request with some special Amazon-related headers and the body which is an XML string containing all data. The merchant has to specify URL for receiving and processing IPN messages. - -The module provides two Facade's methods: - -* `convertAmazonPayIpnRequest` (array `$headers`, `$body`) for converting an Amazon request (which is HTTP headers and body) to the transfer object. For each type of IPN request, we provide a related transfer object and method. `convertAmazonPayIpnRequest()` returns one of them. - -* `handleAmazonPayIpnRequest` (`AbstractTransfer` `$ipnRequestTransfer`) should be called. It has `AbstractTransfer` type for its argument and it works with all types of IPN related transfer objects. A typical flow of a successful flow usually involves pending statuses of authorization and capture requests. - -Therefore, related IPN messages have to be received and processed correctly. For retrieving the same information Amazon also provides `GetAuthorizationDetails` and `GetCaptureDetails` functions and in Spryker OS it is possible to update the pending statuses with State machine buttons. Once the button is clicked, the shop makes a related API call, receives a response and if the state is not pending then it updates order status according to the response message. The final status of a success flow is "capture completed". After that only Refund is available and refund workflow is asynchronous only and works in a similar way as asynchronous authorization. - -The more tricky case is authorization declined workflow. It is similar to synchronous decline which was described above but everything goes asynchronously and involves additional IPN messages. First of all, Authorization IPN comes with "Declined" state of authorization status. Another important information here is `ReasonCode` and it affects all further steps of the process. For the reason codes `TransactionTimedOut` and `AmazonRejected` the order simply goes to authorization declined state but for the `InvalidPaymentMethod` the customer has to change the payment method to the correct one. In this case, order receives authorization suspended status and Amazon sends two additional IPN messages: `OrderNotification` with the state "Open" comes in after payment method is changed by buyer and Authorization notification as a result of authorization of a new payment method. If new payment method passes authorization successfully then order goes to the auth open state and it is possible to request a capture. In both decline cases, it is important to notify the buyer about it by email since it's the only one way for him to know that payment is not possible. The text of the email letter has to be different for `InvalidPaymentMethod` case. - -Another tricky moment about asynchronous flow is "Authorization expired" situation. Each time the shop requests capture in asynchronous mode, it should check the current status of an authorization. Capture is only possible when the status of authorization is "Open". If authorization has status Closed and `ReasonCode` is either `ExpiredUnused` or `SellerClosed` then an order should be reauthorized with `CaptureNow` setting enabled. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.md deleted file mode 100644 index 59d71c30eb1..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Obtaining an Amazon Order Reference and information about shipping addresses -description: This article contains information about order reference and shipping address in Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-order-reference-information -originalArticleId: 42f8b813-b2b7-4b20-8ffb-1f956cd475b7 -redirect_from: - - /v1/docs/amazon-order-reference-information - - /v1/docs/en/amazon-order-reference-information -related: - - title: Amazon Pay - Refund - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-refund.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-state-machine.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-sandbox-simulations.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Email Notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-email-notifications.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html ---- - -After successful authorization, a buyer will be redirected to an order detils page to enter all the information necessary for placing an order: address of shipment, payment method, delivery method and some calculations about taxes, possible discounts, delivery cost, etc. - -Amazon Pay provides solutions for choosing shipping addresses and payment methods based on what the buyer previously used on Amazon. - -As addresses differ by country, the delivery method selection must be implemented by the shop and aligned with shipping address information. - -Amazon provides two widgets for choosing shipment and payment information, they can be placed together on the same page or separately. - -The code for both widgets is: -```html - -
- - -
- - - - -``` -Both widgets are similar to the pay button widget that we described earlier. - -All necessary credentials have to be specified the same way and in order to retrieve the selected information, Amazon provides JavaScript callbacks. - -The first of them to use is `onOrderReferenceCreate` which provides an Amazon order reference id. - -This ID is a unique identifier of the order, created on Amazon's side and is required Handling orders with Amazon Pay API calls. - -Other important callbacks are `onAddressSelect` and `onPaymentSelect`. These callbacks are triggered after selecting shipment address information and payment method respectively. Callbacks are client-side notifications that an event has happened. - -Use the Handling orders with Amazon Pay API to retrieve data and run order operations. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/arvato-store-order.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/arvato-store-order.md deleted file mode 100644 index 4f86f6d851b..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/arvato-store-order.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Arvato - Store Order 2.0 -description: In this article, you can get details about the Store Order service in the Arvato module. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato-store-order-2-0 -originalArticleId: 7e78a9c5-3440-432b-a658-4dd368929879 -redirect_from: - - /v1/docs/arvato-store-order-2-0 - - /v1/docs/en/arvato-store-order-2-0 - - /docs/scos/user/technology-partners/201811.0/payment-partners/arvato/v.2.0/arvato-store-order-2.0.html -related: - - title: Arvato - Risk Check 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.html - - title: Installing and configuring Arvato 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-solution-services-integration-2.0.html - - title: Arvato - link: docs/scos/user/technology-partners/page.version/payment-partners/arvato.html ---- - - As soon as the order is activated in the eShop it has to be directly delivered by the service call StoreOrder in risk solution services. Based on the transmitted data a limit check is processed again. The result and action codes returned by `StoreOrder` should be analyzed and the order process should be stopped if applicable. - -The store order call can be added to OMS. ArvatoRss module provides a command `(SprykerEco\Zed\ArvatoRss\Communication\Plugin\Oms\Command\StoreOrderPlugin)` to invoke store order call and a condition `(SprykerEco\Zed\ArvatoRss\Communication\Plugin\Oms\Command\IsStoreOrderSuccessfulPlugin)` which checks whether the call has been successful or not. - -In case of obtaining the success result with `RiskCheck` call, `CommunicationToken` will be present in response. And need to be stored to quote and provided to store order call by developer. -All the operations over the communication token are processed by project. - -Data, which is sent to Arvato RSS and must be present in quote: - -|Name | Description | -| --- | --- | -| `RegisteredOrder` | Shows if order is placed with registered customer or not. | -| `OrderNumber` | OrderReference is set here. | -| Debitor number | Customer id from the database. | -| Payment type | Payment type which is mapped to existing payment methods via configuration. See `config.dist.php` to get an example. | -| Currency | Is taken from store configuration. | -| `GrossTotalBill` | Total value of order incl. delivery fee, rebates/ credit notes and VAT (Grand Total). | -| `TotalOrderValue` | Value of goods for this order incl. VAT (Subtotal). | -| `ProductNumber` | Product number, defined by customer(default value 1). Sku is set there. | -| `ProductGroupId` | Product group number/product type (default value 1). 1 is set. | -| `UnitPrice` | Value of units incl. VAT. | -| `UnitCount` | Quantity of units (maximum value 99999999). | - -You can check the result codes, returned by Arvato in the attachment. - -@(Embed)(https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Arvato/arvato-rss-result-codes.xlsx) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.md deleted file mode 100644 index 048f3ad1c6f..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Arvato - Risk Check 1.0 -description: Arvato Risk Check evaluates the probability of payment default for the customer orders. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato-risk-check-1-0 -originalArticleId: f350380e-a430-456a-8d8f-e09508d222ba -redirect_from: - - /v1/docs/arvato-risk-check-1-0 - - /v1/docs/en/arvato-risk-check-1-0 - - /docs/scos/user/technology-partners/201811.0/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.html -related: - - title: Installing and configuring Arvato 1.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.1.0/arvato-risk-solution-services-integration-1.0.html - - title: Arvato - link: docs/scos/user/technology-partners/page.version/payment-partners/arvato.html ---- - -Accounted for by external credit agency data and internal existing customer- and order-details the RiskCheck evaluates the probability of payment default for the customer orders. -The returned decision codes (`Result` – `ActionCode` – `ResultCode`) manage the definition of the eShop's payment methods. -If a payment method is not permitted, the decision code provides information about alternate payment methods available for the customer. - -The main entry point to risk check functionality is `performRiskCheck` method inside `ArvatoRssFacade` class. - -Developer is supposed to call `performRiskCheck` method providing actual `QuoteTransfer` as the first argument. -In the response `QuoteTransfer` is returned with `ArvatoRssRiskCheckResponse` transfer inside. It contains -`Result`, `ResultCode`, `ActionCode`, `ResultText`. - -Response can be taken with: -```php - $quoteTransfer->getArvatoRssRiskCheckResponse(); - ``` - -{% info_block warningBox "Note" %} -The transfer can have all fields empty if error occurred during request. -{% endinfo_block %} - -Data, which is sent to Arvato RSS and must be present in the quote: - -| Name | Notes | -| --- | --- | -| Country | Is taken from `BillingAddress` | -| City | Is taken from `BillingAddress` | -| Street | Is taken from `BillingAddress` | -| StreetNumber | Is taken from `BillingAddress` | -| ZipCode | Is taken from `BillingAddress` | -| FirstName | Is taken from `BillingAddress` | -| LastName | Is taken from `BillingAddress` | -| RegisteredOrder | Shows if order is placed with registered customer or not. | -| Currency | Is taken from store configuration | -| GrossTotalBill | Total value of order incl. delivery fee, rebates/ credit notes and VAT (Grand Total) | -| TotalOrderValue | Value of goods for this order incl. VAT (Subtotal) | -| ProductNumber | Product number, defined by customer(default value 1). Sku is set there. | -| ProductGroupId | Product group number/product type (default value 1). 1 is set. | -| UnitPrice | Value of units incl. VAT | -| UnitCount | Quantity of units (maximum value 99999999) | - -You can check the result codes, returned by Arvato in the attachment. -@(Embed)(https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Arvato/arvato-rss-result-codes.xlsx) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/installing-and-configuring-arvato-1.0.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/installing-and-configuring-arvato-1.0.md deleted file mode 100644 index 50648b6e573..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/installing-and-configuring-arvato-1.0.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Installing and configuring Arvato 1.0 -description: Provide complete and comprehensive risk management for the eCommerce/mail-order industry, contributing to a high level of modularization and automation. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato-1-0 -originalArticleId: bd839a77-34d7-42ee-b25b-6e4ede991179 -redirect_from: - - /v1/docs/arvato-1-0 - - /v1/docs/en/arvato-1-0 - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.1.0/arvato-risk-solution-services-integration-1.0.html -related: - - title: Arvato - Risk Check 1.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.html ---- - -The purpose of developing the risk solution services is to provide a complete and comprehensive risk management for the eCommerce/mail-order industry, contributing to a high level of modularization and automation. Besides the use of pre-configured service modules for risk management, risk solution services comprise process support up to the outsourcing of the entire operative risk management. All risk management processes are supported by a business intelligence component. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Arvato/arvato-rss-overview.png) - -## Prerequisites -For every service call of risk solution services an authorization is required. -The authorization data is transferred in the SOAP header and shows the following structure. -In order to send requests, you are supposed to have the following credentials, provided by Arvato: - -| Parameter Name | Description | -| --- | --- | -| ClientID | Unique client number in the risk solution services. Will be communicated to the client before the integration | -| Authorization | Password for the authorization at risk solution services | - -The following information (also present in `config.dist.php`) should be specified in configuration: -```php - $config[ArvatoRssConstants::ARVATORSS] = [ - ArvatoRssConstants::ARVATORSS_URL => '', - ArvatoRssConstants::ARVATORSS_CLIENTID => '', - ArvatoRssConstants::ARVATORSS_AUTHORISATION => '', - ]; - ``` - -API URLs: - -|Name |URL | -| --- | --- | -| Production url |`https://customer.risk-solution-services.de/rss-services/risk-solution-services.v2.1` | -| Sandbox url |`https://integration.risk-solution-services.de/rss-services/risk-solution-services.v2.1` | - -Services: -* [Risk Check](/docs/scos/user/technology-partners/201811.0/payment-partners/arvato/v.1.0/arvato-risk-check-1.0.html) - -To implement Arvato RSS you should be familiar with concept of extending the Spryker Commerce OS. See [Extending Spryker](/docs/scos/dev/back-end-development/extend-spryker/spryker-os-module-customisation/extend-a-core-module-that-is-used-by-another.html) for more details. - -## Installation - -### Composer Dependency - -To install Arvato RSS module, use [Composer](https://getcomposer.org/): - -``` -composer require spryker-eco/arvato-rss -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.md deleted file mode 100644 index 7ff2d719e75..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Arvato - Risk Check 2.0 -description: Arvato Risk Check evaluates the probability of payment default for the customer orders. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato-risk-check-2-0 -originalArticleId: 7ac8aba9-13cd-4a52-8907-570a8a746725 -redirect_from: - - /v1/docs/arvato-risk-check-2-0 - - /v1/docs/en/arvato-risk-check-2-0 -related: - - title: Arvato - Store Order 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/arvato-store-order.html - - title: Installing and configuring Arvato 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-solution-services-integration-2.0.html - - title: Arvato - link: docs/scos/user/technology-partners/page.version/payment-partners/arvato.html ---- - -Accounted for by external credit agency data and internal existing customer- and order-details the `RiskCheck` evaluates the probability of payment default for the customer orders. - -The returned decision codes (`Result` – `ActionCode` – `ResultCode`) manage the definition of the eShop's payment methods. -If a payment method is not permitted, the decision code provides information about alternate payment methods available for the customer. - - Additional validation of billing and shipping addresses is performed on Arvato RSS side. Refer to Arvato documentation for return code bit pattern and explanation of bits. - -The main entry point to risk check functionality is `performRiskCheck` method inside `ArvatoRssFacade` class. - -Developer is supposed to call `performRiskCheck` method providing actual `QuoteTransfer` as the first argument. -In the response `QuoteTransfer` is returned with `ArvatoRssRiskCheckResponse` transfer inside. It contains `Result`, `ResultCode`, `ActionCode`, `ResultText`, `billingAddressValidation`, `deliveryAddressValidation`. - -Response can be taken with: -```php - $quoteTransfer->getArvatoRssQuoteData()->getArvatoRssRiskCheckResponse(); - ``` -{% info_block warningBox "Note" %} -The transfer can have all fields empty if error occurred during request. -{% endinfo_block %} - -Data, that is sent to Arvato RSS and must be present in quote: - -| Name | Notes | -| --- | --- | -| `Country` | Is taken from `BillingAddress` and `ShippingAddress` | -| `City` | Is taken from `BillingAddress` and `ShippingAddress` | -| `Street` | Is taken from `BillingAddress` and `ShippingAddress` | -| `StreetNumber` | Is taken from `BillingAddress` and `ShippingAddress` | -| `ZipCode` | Is taken from `BillingAddress` and `ShippingAddress` | -| `FirstName` | Is taken from `BillingAddress` and `ShippingAddress` | -| `LastName` | Is taken from `BillingAddress` and `ShippingAddress` | -| `RegisteredOrder` | Shows if order is placed with registered customer or not. | -| `Currency` | Is taken from store configuration | -| `GrossTotalBill` | Total value of order incl. delivery fee, rebates/ credit notes and VAT (Grand Total) | -| `TotalOrderValue` | Value of goods for this order incl. VAT (Subtotal) | -| `ProductNumber` | Product number, defined by customer(default value 1). Sku is set there. | -| `ProductGroupId` | Product group number/product type (default value 1). 1 is set. | -| `UnitPrice` | Value of units incl. VAT. It is taken from `ItemTransfer`. | -| `UnitCount` | Quantity of units (maximum value 99999999). It is taken from `ItemTransfer` | - -You can check the result codes, returned by Arvato in the attachment. - -@(Embed)(https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Arvato/arvato-rss-result-codes.xlsx) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/installing-and-configuring-arvato-2.0.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/installing-and-configuring-arvato-2.0.md deleted file mode 100644 index 2dc2996637c..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/installing-and-configuring-arvato-2.0.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Installing and configuring Arvato 2.0 -description: Provide complete and comprehensive risk management for the eCommerce/mail-order industry, contributing to a high level of modularization and automation. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato-2-0 -originalArticleId: ecb444d5-9319-4ba6-9197-98109e127f39 -redirect_from: - - /v1/docs/arvato-2-0 - - /v1/docs/en/arvato-2-0 - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/arvato/v.2.0/arvato-risk-solution-services-integration-2.0.html -related: - - title: Arvato - Store Order 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/arvato-store-order.html - - title: Arvato - Risk Check 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.html - - title: Arvato - link: docs/scos/user/technology-partners/page.version/payment-partners/arvato.html ---- - -The purpose of developing the risk solution services is to provide a complete and comprehensive risk management for the eCommerce/mail-order industry, contributing to a high level of modularization and automation. Besides the use of pre-configured service modules for risk management, risk solution services comprise process support up to the outsourcing of the entire operative risk management. All risk management processes are supported by a business intelligence component. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Arvato/arvato-rss-overview.png) - -## Prerequisites - -For every service call of risk solution services an authorization is required. -The authorization data is transferred in the SOAP header and shows the following structure. - -In order to send requests, you are supposed to have the following credentials, provided by Arvato: - -| Parameter Name | Description | -| --- | --- | -| `ARVATORSS_URL` | Arvato RSS gateway. | -| `ClientID` | Unique client number in the risk solution services. Will be communicated to the client before the integration | -| `Authorization` | Password for the authorization at risk solution services | -| `ARVATORSS_PAYMENT_TYPE_MAPPING` | A map of payment names to ArvatoRss specific payment type codes. | - -The following information (also present in `config.dist.php`) should be specified in configuration: -```php - ArvatoRssConstants::ARVATORSS_URL =& ''; - ArvatoRssConstants::ARVATORSS_CLIENTID = ''; - ArvatoRssConstants::ARVATORSS_AUTHORISATION =''; - // Mapping of your payment methods to payment types, that are known by Arvato Rss. - ArvatoRssConstants::ARVATORSS_PAYMENT_TYPE_MAPPING => [ - 'invoice' => ArvatoRssPaymentTypeConstants::INVOICE - ]; - ``` - -API URLs: - -| Name | URL | -| --- | --- | -| Production URL | `https://customer.risk-solution-services.de/rss-services/risk-solution-services.v2.1` | -| Sandbox URL | `https://integration.risk-solution-services.de/rss-services/risk-solution-services.v2.1` | - -Services: -* [Risk Check](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.html) -* [Store Order](/docs/scos/user/technology-partners/201811.0/payment-partners/arvato/v.2.0/arvato-store-order-2.0.html) - -To implement Arvato RSS you should be familiar with concept of extending the - -## Installation - -### Composer Dependency - -To install Arvato RSS module, use [Composer](https://getcomposer.org/): - -``` -composer require spryker-eco/arvato-rss -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/billpay-switching-invoice-payments-to-a-preauthorize-mode.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/billpay-switching-invoice-payments-to-a-preauthorize-mode.md deleted file mode 100644 index 3b482bd5dd0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/billpay-switching-invoice-payments-to-a-preauthorize-mode.md +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Billpay - Switching invoice payments to a preauthorize mode -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/billpay-payment-methods -originalArticleId: 619f4d0f-a05b-4c62-98f7-c59ce3236b5d -redirect_from: - - /v1/docs/billpay-payment-methods - - /v1/docs/en/billpay-payment-methods -related: - - title: Billpay - link: docs/scos/user/technology-partners/page.version/payment-partners/billpay.html ---- - -Refer to [Billpay payment information](https://www.billpay.de/en/klarna-group-for-business/) for information about payment methods. - -The identity and credit check are checked within a single "pre-authorize" call after summary page was submitted. -This may lead to the "rejection" of the order. - -To switch to the authorize mode, switch Billpay configuration variables to "pre-authorize" set of configuration variables: -```php -switch Billpay configuration variables to "pre-score" set of the configuration variables: -```php -customerStepHandler->get(CheckoutDependencyProvider::CUSTOMER_STEP_HANDLER)->addToDataClass($request, $quoteTransfer); - $this->customerStepHandler->get(BillpayConstants::PAYMENT_METHOD_INVOICE)->addToDataClass($request, $quoteTransfer); - - return $quoteTransfer; - } - ``` - -Next, extend the `CheckoutDependencyProvider` to return the `StepHandlerPluginCollection`: -```php -add(new BillpayCustomerHandlerPlugin(), BillpayConstants::PAYMENT_METHOD_INVOICE); - $plugins->add(new CustomerStepHandler(), self::CUSTOMER_STEP_HANDLER); - return $plugins; - }; - ``` - -Lastly, change the `CustomerStep` constructor: -```php -customerClient = $customerClient; - $this->customerStepHandler = $customerStepHandler; - } - ``` - -#### Shipment Step - -One of the places we can call prescore is the shipment step. - -At this point, the checkout process can provide us with all the information we need to do prescoring. - -To do prescoring, add the Billpay client to Shippment step by modifying the StepFactory: -```php -getCalculationClient(), - $this->getProvidedDependency(CheckoutDependencyProvider::CLIENT_BILLPAY), - $this->createShipmentPlugins(), - CheckoutControllerProvider::CHECKOUT_SHIPMENT, - ApplicationControllerProvider::ROUTE_HOME - ); - } - ``` - -Then register the client in `CheckoutDependencyProvider`. - - ```php - add(new BillpayInvoiceSubFormPlugin()); - return $paymentSubForms; - }; - - $container[self::PAYMENT_METHOD_HANDLER] = function () { - $paymentMethodHandler = new StepHandlerPluginCollection(); - $paymentMethodHandler->add( - new BillpayPaymentHandlerPlugin(), - BillpaySharedConfig::PAYMENT_METHOD_INVOICE - ); - return $paymentMethodHandler; - }; - - ... - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function provideClients(Container $container) - { - - // other clients ... - - $container[self::CLIENT_BILLPAY] = function (Container $container) { - return $container->getLocator()->billpay()->client(); - }; - - return $container; - } - ``` - -Now all we need to do is modify the Shippment step constructor: -```php -calculationClient = $calculationClient; - $this->shipmentPlugins = $shipmentPlugins; - $this->billpayClient = $billpayClient; - } - ``` - -and add a client call to the execute method: -```php -shipmentPlugins->get(CheckoutDependencyProvider::PLUGIN_SHIPMENT_STEP_HANDLER); - $shipmentHandler->addToDataClass($request, $quoteTransfer); - - $quoteTransfer = $this->calculationClient->recalculate($quoteTransfer); - - //added prescoring step - if (Config::get(BillpayConstants::USE_PRESCORE)) { - $this->billpayClient->prescorePayment($quoteTransfer); - } - - return $quoteTransfer; - } - ``` - -### Twig Extension (Optional) - -To populate the [Billpay JS widget](https://techdocs.billpay.de/v1/en/For_developers/JavaScript-Widget.html) with data, use the Twig extension provided in the Billpay module. - -To register the Twig extension: - -* Add it to YvesBootstrap as follows: - -```php -protected function registerServiceProviders() - { - // other service providers ... - $this->application->register(new TwigBillpayServiceProvider()); - } - ``` - -**List of all available identifiers**: - -| Name | Description | Notes | -| --- | --- | --- | -| `salutation` | Customer salutation | Taken from billing address | -| `firstName` | Customer first name | Taken from billing address | -| `lastName` | Customer last name | Taken from billing address | -| `address` | Customer billing address street name | for example, Main Street | -| `addressNo` | Customer billing address street name extension | for example, 3a | -| `zip` | Billing address postal number | for example, 10317 | -| `city` | Billing address city | for example, Berlin | -| `phone` | Customer telephone number | | -| `dateOfBirth` | Customer date of birth | Entered at payment step | -| `cartAmount` | Total value of cart items with discounts | Equal to cart amount | -| `orderAmount` | Total value of order | | -| `currency` | currrency iso code | Defined in store configuration | -| `language` | Current user language | | -| `countryIso3Code` | Country iso3 code i.e deu | Defined in store configuration | -| `countryIso2Code` | Country iso2 code i.e de | Defined in store configuration | -| `identifier` | Unique session identifier | Autogenerated | -| `apiKey` | Billpay api key | Defined in config under key `BILLPAY_PUBLIC_API_KEY` | - -### Checking Your Setup - -You should be able to see the Billpay invoice on payment step of your checkout step. If you receive the "method not available" message when you select **Billpay invoice** at the payment step, check the `spy_payment_billpay_api_log` table in your database for logs. - -## Zed - -In Zed `BillpaySaveOrderPlugin` has to be registered in the `CheckoutDependencyProvider`: -```php -add(new IsInvoicePaidConditionPlugin(), 'Billpay/IsInvoicePaid'); - $collection->add(new IsPreauthorizedConditionPlugin(), 'Billpay/IsPreauthorized'); - $collection->add(new IsCancelledConditionPlugin(), 'Billpay/IsCancelled'); - $collection->add(new IsItemCancelledConditionPlugin(), 'Billpay/IsItemCancelled'); - - return $collection; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection - */ - protected function getCommandPlugins(Container $container) - { - $collection = parent::getCommandPlugins($container); - - $collection->add(new PreauthorizeCommandPlugin(), 'Billpay/Preauthorize'); - $collection->add(new InvoiceCreatedCommandPlugin(), 'Billpay/InvoiceCreated'); - $collection->add(new CancelOrderCommandPlugin(), 'Billpay/CancelOrder'); - $collection->add(new CancelItemCommandPlugin(), 'Billpay/CancelItem'); - - return $collection; - } - ``` - -### Check Your Settings - -In your checkout process you can now see the Billapay as a payment method in the payment checkout step. If you log in to ZED, you will find the OMS state machine registered under `http://mysprykershop.com/oms/index/draw?process=BillpayInvoice01&format=svg&font=14&state=`. - -If the link does not work, just click **Maintenance->OMS** to list all registered OMS state machines. - -Basic state machine will look somewhat like this and you can use it as sample in your project. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Billpay/basic_OMS_state_machine.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/integrating-billpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/integrating-billpay.md deleted file mode 100644 index 75484dd58ea..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/billpay/integrating-billpay.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Integrating Billpay -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/billpay-integration -originalArticleId: 22072a7e-3413-46c9-8b19-7df8894f6eb4 -redirect_from: - - /v1/docs/billpay-integration - - /v1/docs/en/billpay-integration -related: - - title: Billpay - link: docs/scos/user/technology-partners/page.version/payment-partners/billpay.html ---- - -Billpay offers multiple payment methods (Invoice, Direct Debit, PayLater, Instalment). Availability of payment methods differs from country to country. Please contact Billpay directly or visit the [Billpay website](https://www.billpay.de/en/) for details. - -The Billpay module provides integration with the [Invoice with prescoring](https://www.billpay.de/en/klarna-group-for-business/index.html) payment method. - -## Configuration - -Billpay comes with a `config.dist.php` file that you can use as a sample configuration for your project by copying its content to your project configuration file. You can find all of your project configuration files in the `config `folder. - -See [Configuration Management](/docs/scos/dev/back-end-development/data-manipulation/configuration-management.html) for details on the configuration. - -### Configuration Options: - -| Name | Description | -| --- | --- | -| `GATEWAY_URL` | url to Billpay API | -| `BILLPAY_MERCHANT_ID` | Merchant ID that Billpay will provide to you | -| `BILLPAY_PORTAL_ID` | Portal ID that Billpay will provide to you | -| `BILLPAY_SECURITY_KEY` | MD5 hash of the security key generated for this portal. (generated and delivered by BillPay) | -| `BILLPAY_PUBLIC_API_KEY` | Public API Key; generated and delivered by BillPay for your portal. | -| `BILLPAY_MAX_DELAY_IN_DAYS` | Amount of days that will be added to the payment due date (e.g. in case of delayed shipping) | -| `USE_MD5_HASH` | If your security key is not md5 hash encrypted, you can do that by setting this config to 1 | -| `USE_PRESCORE` | In if it is necessary to show all Billpay payment methods despite of Billpay prescore response, you can set this option to 0. It should be set to 1 by default. | - -When you add options above to your project configuration, it should look somewhat like this: -```php - [ - 'Billpay', - ], -]; - -$config[KernelConstants::DEPENDENCY_INJECTOR_ZED] = [ - 'Payment' => [ - 'Billpay', - ], - 'Oms' => [ - 'Billpay', - ], -]; -``` - -In order to use the Billpay module state machines, add the location path to configuration: -```php - 'BillpayInvoice01', -]; -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-performing-requests.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-performing-requests.md deleted file mode 100644 index c1ffb957070..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-performing-requests.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Braintree - Performing Requests -description: This article contains information on the state machine commands and conditions for the Braintree module in the Spryker Commerce OS. -last_updated: Nov 6, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-performing-requests -originalArticleId: 9a02e900-c7b7-4c57-9473-f3f1862c9664 -redirect_from: - - /v1/docs/braintree-performing-requests - - /v1/docs/en/braintree-performing-requests ---- - -In order to perform the necessary requests in the project based on Spryker Commerce OS or SCOS, you can easily use the implemented state machine commands and conditions. The next section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. - -## Braintree State Machine Commands and Conditions - -### Commands - -Authorize - -* Authorize the payment by validating the given payment data -* Response: - - Success: Payment Details accepted - - Declined: Request format error, payment details not accepted -* Plugin: `AuthorizePlugin` - -Revert - -* Revert a previous pre-authorization call -* Always reverts the complete pre-check or authorization -* Plugin: `RevertPlugin` - -Capture - -* Capture of previous (p)re-authorization call Response: - - Success: Previous (p)re-authorization still valid and accepted - - Declined: Previous (p)re- authorization expired, request format error, or internal error -* Plugin: `CapturePlugin` - -Refund - -* Refund previous captured amount -* Full and partial refunds possible -* Response: - - Success: Refund possible and accepted - - Declined: Previous capture to far in the past, request format error, or internal -* Plugin: `RefundPlugin` - -### Conditions - -|Name |Description |Plugin | -| --- | --- | --- | -| `IsAuthorizationApproved` | Checks transaction status log for successful authorization response | `IsAuthorizationApprovedPlugin` | -| `IsReversalApproved` | Checks transaction status log for successful reversal response | `IsReversalApprovedPlugin` | -| `IsCaptureApproved` | Checks transaction status log for successful capture response | `IsCaptureApprovedPlungin` | -| `IsRefundApproved` | Checks transaction status log for successful refund response | `IsRefundApprovedPlugin` | - -## Braintree Facade - -|Facade Method | Parameter | Return | Description | -| --- | --- | --- | --- | -| `saveOrderPayment` | `QuoteTransfer``CheckoutResponseTransfer` | void | Saves order payment method data according to quote and checkout response transfer data. | -| `preCheckPayment` | `QuoteTransfer` | `BraintreeTransactionResponseTransfer` | Sends pre-authorize payment request to Braintree gateway to retrieve transaction data. Checks that form data matches transaction response data. | -| `authorizePayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes payment confirmation request to Braintree gateway. | -| `capturePayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes capture payment request to Braintree gateway. | -| `revertPayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes cancel payment request to Braintree gateway. | -| `refundPayment` | `SpySalesOrderItem[]``SpySalesOrder` | `BraintreeTransactionResponseTransfer` | Calculate `RefundTransfer` for given `$salesOrderItems` and `$salesOrderEntity`.Processes refund request to Braintree gateway by calculated `RefundTransfer`. | -| `isAuthorizationApproved` | `OrderTransfer` | bool | Checks if pre-authorization API request got success response from Braintree gateway. | -| `isReversalApproved` | `OrderTransfer` | bool | Checks if cancel API request got success response from Braintree gateway. | -| `isCaptureApproved` | `OrderTransfer` | bool | Checks if capture API request got success response from Braintree gateway. | -| `isRefundApproved` | `OrderTransfer` | bool | Checks if refund API request got success response from Braintree gateway. | -| `postSaveHook` | `OrderTransfer``CheckoutResponseTransfer` | `CheckoutResponseTransfer` | Execute post-save hook. | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-request-workflow.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-request-workflow.md deleted file mode 100644 index 01b96f2dc01..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-request-workflow.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Braintree - Request workflow -description: This article describes the request flow for the Braintree module in the Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-workflow -originalArticleId: 95ca1fb0-2173-403a-9c9c-f44ebcbd9498 -redirect_from: - - /v1/docs/braintree-workflow - - /v1/docs/en/braintree-workflow -related: - - title: Braintree - link: docs/scos/user/technology-partners/page.version/payment-partners/braintree.html - - title: Braintree - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-performing-requests.html - - title: Installing and configuring Braintree - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/installing-and-configuring-braintree.html ---- - -Both credit card and PayPal utilize the same request flow in - -* Pre-check: to check the user information to make sure that all the needed information is correct before doing the actual pre-authorization. -* Authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is considered accepted when it is authorized. -* Revert: to cancel the authorization step which cancels the payment before capturing. -* Capture: to capture the payment and receive money from the buyer. -* Refund: to refund the buyer when returning products. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/installing-and-configuring-braintree.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/installing-and-configuring-braintree.md deleted file mode 100644 index 9e3611c36e0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/installing-and-configuring-braintree.md +++ /dev/null @@ -1,280 +0,0 @@ ---- -title: Installing and configuring Braintree -description: This article contains information on configuring the Braintree module for the Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-configuration -originalArticleId: eddde63c-cf64-4e2e-ba76-44b266613aab -redirect_from: - - /v1/docs/braintree-configuration - - /v1/docs/en/braintree-configuration -related: - - title: Braintree - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-performing-requests.html - - title: Braintree - Request workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-request-workflow.html - - title: Braintree - link: docs/scos/user/technology-partners/page.version/payment-partners/braintree.html ---- - -To configure Braintree module for Spryker Commerce OS (SCOS), do the following: - -Add `spryker-eco/braintree` to your project by running `composer require spryker-eco/braintree`. - -Please refer to `config/config.dist.php` for an example of module configuration. - -To setup the initial Braintree configuration, use the credentials you received after registering your Braintree merchant account: -```php -// the mode of the transaction, either development, integration, sandbox, production, qa (required) -$config[BraintreeConstants::ENVIRONMENT] = ''; - -// the id of the merchant used (required) -$config[BraintreeConstants::MERCHANT_ID] = ''; - -// the public key given by the defined merchant account (required) -$config[BraintreeConstants::PUBLIC_KEY] = ''; - -// the private key given by the defined merchant account (required) -$config[BraintreeConstants::PRIVATE_KEY] = ''; - -// merchant account id specifying the currency (Marketplace master merchant is used by default) -$config[BraintreeConstants::ACCOUNT_ID] = ''; - -// merchant account unique identifier (Marketplace master merchant is used by default) -$config[BraintreeConstants::ACCOUNT_UNIQUE_IDENTIFIER] = ''; - -// defaults to false -$config[BraintreeConstants::IS_VAULTED] = true; - -// defaults to false -$config[BraintreeConstants::IS_3D_SECURE] = true; -``` - -## Checkout Configuration - -To use Braintree in frontend, Braintree payment method handlers and subforms should be added to `Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php`. -```php -use Spryker\Yves\StepEngine\Dependency\Plugin\Form\SubFormPluginCollection; -use Spryker\Yves\StepEngine\Dependency\Plugin\Handler\StepHandlerPluginCollection; -use SprykerEco\Yves\Braintree\Plugin\BraintreeCreditCardSubFormPlugin; -use SprykerEco\Yves\Braintree\Plugin\BraintreeHandlerPlugin; -use SprykerEco\Yves\Braintree\Plugin\BraintreePayPalSubFormPlugin; -use Generated\Shared\Transfer\PaymentTransfer; - -... - -/** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ -protected function addSubFormPluginCollection(Container $container): Container -{ - $container[self::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPluginCollection = new SubFormPluginCollection(); - $paymentSubFormPluginCollection->add(new BraintreeCreditCardSubFormPlugin()); - $paymentSubFormPluginCollection->add(new BraintreePayPalSubFormPlugin()); - - return $paymentSubFormPluginCollection; - }; - - return $container; -} - -/** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ -protected function addPaymentMethodHandlerPluginCollection(Container $container): Container -{ - $container[self::PAYMENT_METHOD_HANDLER] = function () { - $paymentMethodHandlerCollection = new StepHandlerPluginCollection(); - $paymentMethodHandlerCollection->add(new BraintreeHandlerPlugin(), PaymentTransfer::BRAINTREE_CREDIT_CARD); - $paymentMethodHandlerCollection->add(new BraintreeHandlerPlugin(), PaymentTransfer::BRAINTREE_PAY_PAL); - - return $paymentMethodHandlerCollection; - }; - - return $container; -} -``` - -All subform and handler plugins are located in `SprykerEco\Yves\Braintree\Plugin\` namespace. - -## OMS Configuration - -Activate the following Braintree process: -```php -$config[OmsConstants::ACTIVE_PROCESSES] = [ - 'BraintreePayPal01', - 'BraintreeCreditCard01', -]; - -$config[OmsConstants::PROCESS_LOCATION] = [ - OmsConfig::DEFAULT_PROCESS_LOCATION, - APPLICATION_VENDOR_DIR . '/spryker-eco/braintree/config/Zed/Oms', -]; - -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - \SprykerEco\Shared\Braintree\BraintreeConfig::PAYMENT_METHOD_CREDIT_CARD => 'BraintreeCreditCard01', - \SprykerEco\Shared\Braintree\BraintreeConfig::PAYMENT_METHOD_PAY_PAL => 'BraintreePayPal01', -]; -``` - -Default implementation for commands and options should be added to `Pyz/Zed/Oms/OmsDependencyProvider.php`. - -1. Commands: -```php -$container->extend(OmsDependencyProvider::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection - ->add(new AuthorizePlugin(), 'Braintree/Authorize') - ->add(new RevertPlugin(), 'Braintree/Revert') - ->add(new CapturePlugin(), 'Braintree/Capture') - ->add(new RefundPlugin(), 'Braintree/Refund'); - - return $commandCollection; -}); -``` -2. Conditions: -```php -$container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection - ->add(new IsAuthorizationApprovedPlugin(), 'Braintree/IsAuthorizationApproved') - ->add(new IsReversalApprovedPlugin(), 'Braintree/IsReversalApproved') - ->add(new IsCaptureApprovedPlugin(), 'Braintree/IsCaptureApproved') - ->add(new IsRefundApprovedPlugin(), 'Braintree/IsRefundApproved'); - - return $conditionCollection; -}); -``` -All commands and conditions are located in `SprykerEco\Zed\Braintree\Communication\Plugin\Oms\` namespace. - -## Payment Configuration - -Default implementation for checkout payment plugins should be added to `Pyz/Zed/Checkout/CheckoutDependencyProvider.php` -```php -protected function getCheckoutPreConditions(Container $container) -{ - return [ - ... - new BraintreePreCheckPlugin(), - ]; -} - -protected function getCheckoutOrderSavers(Container $container) -{ - $plugins = [ - ... - new BraintreeSaveOrderPlugin(), - ]; - - return $plugins; -} - -protected function getCheckoutPostHooks(Container $container) -{ - return [ - ... - new BraintreePostSavePlugin(), - ]; -} -``` - -All payment plugins are located in the `SprykerEco\Zed\Braintree\Communication\Plugin\Checkout\` namespace. - -## Frontend Integration - -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - - ```php - {% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - - title: 'checkout.step.payment.title' | trans -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.payment, - options: { - attr: { - id: 'payment-form' - } - }, - submit: { - enable: true, - text: 'checkout.step.summary' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - } - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} -
{% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
- -
    - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - enableStart: false, - enableEnd: false, - layout: { - 'card_expires_month': 'col col--sm-4', - 'card_expires_year': 'col col--sm-8' - } - }, - embed: { - toggler: data.form.paymentSelection[key] - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set templateName = data.form.vars.template_path | replace('/', '-') {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set viewName = data.form.vars.template_path | split('/') {% raw %}%}{% endraw %} - - {% raw %}{{{% endraw %} form_row(embed.toggler, { - required: false, - component: molecule('toggler-radio'), - attributes: { - 'target-selector': '.js-payment-method-' ~ templateName, - 'class-to-toggle': 'is-hidden' - } - }) {% raw %}}}{% endraw %} - - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-configuration-for-the-legacy-demoshop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-configuration-for-the-legacy-demoshop.md deleted file mode 100644 index d3bf87618a8..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-configuration-for-the-legacy-demoshop.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Braintree - Configuration for the Legacy Demoshop -description: This article contains information on the configuration of the Braintree module for Spryker Legacy Demoshop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-configuration-legacy-demoshop -originalArticleId: fd7c283d-cf6d-4534-856c-e5659fad6a53 -redirect_from: - - /v1/docs/braintree-configuration-legacy-demoshop - - /v1/docs/en/braintree-configuration-legacy-demoshop - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-configuration-for-the-legacy-demoshop.html -related: - - title: Braintree - link: docs/scos/user/technology-partners/page.version/payment-partners/braintree.html - - title: Braintree - Request workflow for Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-workflow-for-legacy-demoshop.html - - title: Braintree - Performing Requests for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-performing-requests-for-the-legacy-demoshop.html ---- - -Add `spryker-eco/braintree` to your project by running `composer require spryker-eco/braintree`. - -Please refer to `config/config.dist.php` for an example of module configuration. - -To setup the initial Braintree configuration, use the credentials you received after registering your Braintree merchant account: -```php -// the mode of the transaction, either development, integration, sandbox, production, qa (required) -$config[BraintreeConstants::ENVIRONMENT] = ''; - -// the id of the merchant used (required) -$config[BraintreeConstants::MERCHANT_ID] = ''; - -// the public key given by the defined merchant account (required) -$config[BraintreeConstants::PUBLIC_KEY] = ''; - -// the private key given by the defined merchant account (required) -$config[BraintreeConstants::PRIVATE_KEY] = ''; - -// merchant account id specifying the currency (Marketplace master merchant is used by default) -$config[BraintreeConstants::ACCOUNT_ID] = ''; - -// merchant account unique identifier (Marketplace master merchant is used by default) -$config[BraintreeConstants::ACCOUNT_UNIQUE_IDENTIFIER] = ''; - -// defaults to false -$config[BraintreeConstants::IS_VAULTED] = true; - -// defaults to false -$config[BraintreeConstants::IS_3D_SECURE] = true; -``` - -## Checkout Configuration - -To use Braintree in frontend, Braintree payment method handlers and subforms should be added to `Pyz/Yves/Checkout/CheckoutDependencyProvider.php`. -```php -$container[CheckoutDependencyProvider::PAYMENT_METHOD_HANDLER] = function () { - $paymentHandlerPlugins = new StepHandlerPluginCollection(); - - $paymentHandlerPlugins->add(new BraintreeHandlerPlugin(), PaymentTransfer::BRAINTREE_CREDIT_CARD); - $paymentHandlerPlugins->add(new BraintreeHandlerPlugin(), PaymentTransfer::BRAINTREE_PAY_PAL); - - return $paymentHandlerPlugins; - }; - -$container[CheckoutDependencyProvider::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugins = new SubFormPluginCollection(); - - $paymentSubFormPlugins->add(new BraintreeCreditCardSubFormPlugin()); - $paymentSubFormPlugins->add(new BraintreePayPalSubFormPlugin()); - - return $paymentSubFormPlugins; - }; - ``` - -All subform and handler plugins are located in `SprykerEco\Yves\Braintree\Plugin\` namespace. - -## OMS Configuration - -Activate the following Braintree process: -```php -$config[OmsConstants::ACTIVE_PROCESSES] = [ - 'BraintreePayPal01', - 'BraintreeCreditCard01', -];``````php$config[OmsConstants::PROCESS_LOCATION] = [ - OmsConfig::DEFAULT_PROCESS_LOCATION, - APPLICATION_VENDOR_DIR . '/spryker-eco/braintree/config/Zed/Oms', -];``````php -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - \SprykerEco\Shared\Braintree\BraintreeConfig::PAYMENT_METHOD_CREDIT_CARD => 'BraintreeCreditCard01', - \SprykerEco\Shared\Braintree\BraintreeConfig::PAYMENT_METHOD_PAY_PAL => 'BraintreePayPal01', -]; -``` - -Default implementation for commands and options should be added to `Pyz/Zed/Oms/OmsDependencyProvider.php` - -1. Commands: -```php - $container->extend(OmsDependencyProvider::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection - ->add(new AuthorizePlugin(), 'Braintree/Authorize') - ->add(new RevertPlugin(), 'Braintree/Revert') - ->add(new CapturePlugin(), 'Braintree/Capture') - ->add(new RefundPlugin(), 'Braintree/Refund'); - - return $commandCollection; -}); -``` -2. Conditions: -```php - $container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection - ->add(new IsAuthorizationApprovedPlugin(), 'Braintree/IsAuthorizationApproved') - ->add(new IsReversalApprovedPlugin(), 'Braintree/IsReversalApproved') - ->add(new IsCaptureApprovedPlugin(), 'Braintree/IsCaptureApproved') - ->add(new IsRefundApprovedPlugin(), 'Braintree/IsRefundApproved'); - - return $conditionCollection; -}); -``` - -All commands and conditions are located in `SprykerEco\Zed\Braintree\Communication\Plugin\Oms\` namespace. - -## Payment Configuration - -Default implementation for checkout payment plugins should be added to `Pyz/Zed/Payment/PaymentDependencyProvider.php` -```php -$container->extend(PaymentDependencyProvider::CHECKOUT_PLUGINS, function (CheckoutPluginCollection $pluginCollection) { - $pluginCollection - ->add(new BraintreePreCheckPlugin(), BraintreeConfig::PROVIDER_NAME, PaymentDependencyProvider::CHECKOUT_PRE_CHECK_PLUGINS) - ->add(new BraintreeSaveOrderPlugin(), BraintreeConfig::PROVIDER_NAME, PaymentDependencyProvider::CHECKOUT_ORDER_SAVER_PLUGINS) - ->add(new BraintreePostSavePlugin(), BraintreeConfig::PROVIDER_NAME, PaymentDependencyProvider::CHECKOUT_POST_SAVE_PLUGINS); - - return $pluginCollection; - }); - ``` - -All payment plugins are located in `SprykerEco\Zed\Braintree\Communication\Plugin\Checkout\` namespace. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-performing-requests-for-the-legacy-demoshop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-performing-requests-for-the-legacy-demoshop.md deleted file mode 100644 index c3c093163f8..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-performing-requests-for-the-legacy-demoshop.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Braintree - Performing Requests for the Legacy Demoshop -description: This article contains information on the state machine commands and conditions for the Braintree module in the Spryker Legacy Demoshop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-requests-legacy-demoshop -originalArticleId: bc79bc75-ea5f-47c5-948b-6b4f2bba140b -redirect_from: - - /v1/docs/braintree-requests-legacy-demoshop - - /v1/docs/en/braintree-requests-legacy-demoshop - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-performing-requests-for-the-legacy-demoshop.html -related: - - title: Braintree - link: docs/scos/user/technology-partners/page.version/payment-partners/braintree.html - - title: Braintree - Request workflow for Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-workflow-for-legacy-demoshop.html - - title: Braintree - Configuration for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-configuration-for-the-legacy-demoshop.html ---- - -To perform the needed requests, you can easily use the implemented state machine commands and conditions. The next section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. - -## Braintree State Machine Commands and Conditions - -### Commands - -Authorize - -* Authorize the payment by validating the given payment data -* Response: - - Success: Payment Details accepted - - Declined: Request format error, payment details not accepted -* Plugin: `AuthorizePlugin` - -Revert - -* Revert a previous pre-authorization call -* Always reverts the complete pre-check or authorization -* Plugin: `RevertPlugin` - -Capture - -* Capture of previous (p)re-authorization call Response: - - Success: Previous (p)re-authorization still valid and accepted - - Declined: Previous (p)re- authorization expired, request format error, or internal error -* Plugin: `CapturePlugin` - -Refund - -* Refund previous captured amount -* Full and partial refunds possible -* Response: - - Success: Refund possible and accepted - - Declined: Previous capture to far in the past, request format error, or internal -* Plugin: `RefundPlugin` - -### Conditions - -| Name | Description | Plugin | -| --- | --- | --- | -| `IsAuthorizationApproved` | Checks transaction status log for successful authorization response | `IsAuthorizationApprovedPlugin` | -| `IsReversalApproved` | Checks transaction status log for successful reversal response | `IsReversalApprovedPlugin` | -| `IsCaptureApproved` | Checks transaction status log for successful capture response | `IsCaptureApprovedPlungin` | -| `IsRefundApproved` | Checks transaction status log for successful refund response | `IsRefundApprovedPlugin` | - -## Braintree Facade - -| Facade Method | Param | Return | Description | -| --- | --- | --- | --- | -| `saveOrderPayment` | `QuoteTransfer``CheckoutResponseTransfer` | void | Saves order payment method data according to quote and checkout response transfer data. | -| `preCheckPayment` | `QuoteTransfer` | `BraintreeTransactionResponseTransfer` | Sends pre-authorize payment request to Braintree gateway to retrieve transaction data.Checks that form data matches transaction response data. | -| `authorizePayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes payment confirmation request to Braintree gateway. | -| `capturePayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes capture payment request to Braintree gateway. | -| `revertPayment` | `TransactionMetaTransfer` | `BraintreeTransactionResponseTransfer` | Processes cancel payment request to Braintree gateway. | -| `refundPayment` | `SpySalesOrderItem[]``SpySalesOrder` | `BraintreeTransactionResponseTransfer` | Calculate `RefundTransfer` for given `$salesOrderItems` and `$salesOrderEntity`.Processes refund request to Braintree gateway by calculated `RefundTransfer`. | -| `isAuthorizationApproved` | `OrderTransfer` | bool | Checks if pre-authorization API request got success response from Braintree gateway. | -| `isReversalApproved` | `OrderTransfer` | bool | Checks if cancel API request got success response from Braintree gateway. | -| `isCaptureApproved` | `OrderTransfer` | bool | Checks if capture API request got success response from Braintree gateway. | -| `isRefundApproved` | `OrderTransfer` | bool | Checks if refund API request got success response from Braintree gateway. | -| `postSaveHook` | `OrderTransfer``CheckoutResponseTransfer` | `CheckoutResponseTransfer` | Execute post-save hook. | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-workflow-for-legacy-demoshop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-workflow-for-legacy-demoshop.md deleted file mode 100644 index ecba2c977e3..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/legacy-demoshop-integration/braintree-workflow-for-legacy-demoshop.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Braintree - Request workflow for Legacy Demoshop -description: This article describes the request flow for the Braintree module in the Spryker Legacy Demoshop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree-workflow-legacy-demoshop -originalArticleId: 4844884b-6bbe-4036-bb2d-77815bd30c9a -redirect_from: - - /v1/docs/braintree-workflow-legacy-demoshop - - /v1/docs/en/braintree-workflow-legacy-demoshop - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-workflow-for-legacy-demoshop.html -related: - - title: Braintree - link: docs/scos/user/technology-partners/page.version/payment-partners/braintree.html - - title: Braintree - Configuration for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-configuration-for-the-legacy-demoshop.html - - title: Braintree - Performing Requests for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-performing-requests-for-the-legacy-demoshop.html ---- - -Both credit card and PayPal utilize the same request flow. It basically consists of the following requests: - -* Pre-check: to check the user information in order to make sure that all the needed information is correct before doing the actual pre-authorization. -* Authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is basically considered accepted when it is authorized. -* Revert: to cancel the authorization step which basically cancels the payment before capturing. -* Capture: to capture the payment and receive money from the buyer. -* Refund: to refund the buyer when returning products. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-api-calls.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-api-calls.md deleted file mode 100644 index 5aeb4c76f99..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-api-calls.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Computop API calls -description: This article provides details on the API structure of the Computop module in the Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-api-details -originalArticleId: 12281b35-a28e-4db3-9309-79f627b713dc -redirect_from: - - /v1/docs/computop-api-details - - /v1/docs/en/computop-api-details -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -## Authorization Call: - -* Authorize money. -* There is no partial authorization. Please make one API call to make authorization for all items in the order. -* It is not possible to Authorize a higher amount than in the ORDER. - -## Inquire Call: - -Status inquiries within Paygate give detailed information about the amounts that are actually authorized, captured or credited. Especially before executing reversals via the interface reverse.aspx it is recommended to check the transaction status with inquire.aspx because Reverse.aspx re-verses not only authorizations but ALWAYS THE LAST TRANSACTION STEP. - -## Reverse Call: - -* Reverse.aspx does not only reverse authorizations, but also any LAST TRANSACTION STAGE! If the last transaction was a capture, Reverse.aspx initiates the reverse, e.g. a credit. Therefore, the utmost caution is urged. Use it at your own risk. We recommend checking the transaction status with Inquire.aspx before using Reverse.aspx. -* Use it just after "Inquire" call if it returns the previous action as "Authorization". - -## Capture Call: - -* Capture money. -* Shipment price is captured with the first capture request. -* Please contact the helpdesk, if you want to capture amounts < 100 (the smallest currency unit). -* It is not possible to capture a higher amount than in the ORDER or Auth. - -## Refund Call: - -* Refund money. -* The merchant has the chance to refund more money to the customer than captured. -* Shipment price will be refunded with the last possible refund request. If You do not need to refund shipment price: - - Create `Pyz\Zed\Computop\ComputopConfig`. - - Extend it from original `SprykerEco\Zed\Computop\ComputopConfig`. - - Update `isRefundShipmentPriceEnabled` method (set up "false"). - diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-oms-plugins.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-oms-plugins.md deleted file mode 100644 index e39886d8acf..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/computop-oms-plugins.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Computop - OMS plugins -description: This article contains information on the state machine commands and conditions for the Computop module in the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-oms-details -originalArticleId: 22ab5611-d105-455b-9afa-30c7610ed3bb -redirect_from: - - /v1/docs/computop-oms-details - - /v1/docs/en/computop-oms-details -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -The following plugins are used for performing calls to Paygate during OMS operation. - -## Authorize Plugin: -Makes an Authorize call to Computop. - -## Cancel Plugin: -Follow these steps to cancel the item in the order in case all the items or the last possible one got canceled: - -1. Inquire a call to Computop. -2. Reverse a call to Computop in case Inquire returned "Authorization" was the last action. -3. Change the status of the current item in our DB in case the Inquire call returned that "Authorization" was not the last action. No API calls are needed. -4. If there is any item that is not canceled yet: - - Change the status of the current item in our DB. No API calls are needed. There is no API call to change the order in Computop. - -## Capture Plugin: -Makes a Capture call to Computop. - -## Refund Plugin: -Makes a Refund call to Computop. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/installing-and-configuring-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/installing-and-configuring-computop.md deleted file mode 100644 index 4f54f6201bc..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/installing-and-configuring-computop.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Installing and configuring Computop -last_updated: Nov 4, 2020 -template: howto-guide-template ---- - -The [SprykerEco.Computop](https://github.com/spryker-eco/computop) bundle provides integration of the Computop industry partner with Spryker Commerce OS. It requires the [SprykerEco.ComputopApi](https://github.com/spryker-eco/computop-api) bundle that provides the REST Client for making API calls to the Computop Payment Provider. - -The `SprykerEco.Computop` module includes the integrations: -* Checkout process - payment forms with all the necessary fields that are required to make payment requests, save order information and so on. -* OMS (Order Management System) - state machines, all necessary commands for making modification requests and conditions for changing order statuses accordingly. - - -The `SprykerEco.Computop` module provides the following payment methods: - -* [Credit Card](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html) -* [Direct Debit](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html) -* [EasyCredit](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html) -* [iDeal](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html) -* [Paydirekt](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html) -* [PayNow](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html) -* [PayPal](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html) -* [SofortÜberweisung](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html) - -## Installing Computop - -To install the payment provider, run: -``` -composer require spryker-eco/computop -``` - -## Configuration -All the necessary configurations can be found in: -``` -vendor/spryker-eco/computop/config/config.dist.php -``` - -| Configuration Key | Type | Description | -| --- | --- | --- | -| `$config[ComputopApiConstants::MERCHANT_ID]` | string | Computop merchant identifier. | -| `$config[ComputopApiConstants::BLOWFISH_PASSWORD]` | string | Password for blowfish hashing. | -| `$config[ComputopApiConstants::HMAC_PASSWORD]` | string | Password for hmac hashing. | -| `$config[ComputopConstants::PAYDIREKT_SHOP_KEY]` | string | Shop key for Paydirect payment method. | -| `$config[ComputopConstants::IDEAL_ISSUER_ID]` | string | Issuer ID for Ideal payment method. | -| `$config[ComputopConstants::PAY_NOW_INIT_ACTION]` | string | Init API call endpoint for PayNow payment method. | -| `$config[ComputopConstants::CREDIT_CARD_INIT_ACTION]` |string | Init API call endpoint for Credit Card payment method. | -| `$config[ComputopConstants::PAYPAL_INIT_ACTION]` | string | Init API call endpoint for PayPal payment method. | -| `$config[ComputopConstants::DIRECT_DEBIT_INIT_ACTION]` | string | Init API call endpoint for Direct Debit payment method. | -| `$config[ComputopConstants::SOFORT_INIT_ACTION]` | string | Init API call endpoint for Sofort payment method. | -| `$config[ComputopConstants::PAYDIREKT_INIT_ACTION]` |string | Init API call endpoint for Paydirect payment method. | -| `$config[ComputopConstants::IDEAL_INIT_ACTION]` | string | Init API call endpoint for Ideal payment method. | -| `$config[ComputopConstants::EASY_CREDIT_INIT_ACTION]` | string | Init API call endpoint for Easy Credit payment method. | -| `$config[ComputopApiConstants::EASY_CREDIT_STATUS_ACTION]` | string | Status API call endpoint for Easy Credit payment method. | -| `$config[ComputopApiConstants::EASY_CREDIT_AUTHORIZE_ACTION]` | string | Authorize API call endpoint for Easy Credit payment method. | -| `$config[ComputopApiConstants::AUTHORIZE_ACTION]` | string | Authorize API call endpoint. | -| `$config[ComputopApiConstants::CAPTURE_ACTION]` | string | Capture API call endpoint. | -| `$config[ComputopApiConstants::REVERSE_ACTION]` | string | Reserve API call endpoint. | -| `$config[ComputopApiConstants::INQUIRE_ACTION]` | string | Inquire API call endpoint. | -| `$config[ComputopApiConstants::REFUND_ACTION]` | string | Refund API call endpoint. | -| `$config[ComputopApiConstants::RESPONSE_MAC_REQUIRED]` | array | MAC is required for methods (to check MAC on response). | -| `$config[ComputopConstants::CREDIT_CARD_TEMPLATE_ENABLED]` | bool | Is custom template enabled for Credit Card payment method. | -| `$config[ComputopConstants::CREDIT_CARD_TX_TYPE]` | string | TX TYPE for Credit Card payment method (empty string). | -| `$config[ComputopConstants::PAY_NOW_TX_TYPE]` | string | TX TYPE for PayNow payment method (empty string). | -| `$config[ComputopConstants::PAY_PAL_TX_TYPE]` | string | TX TYPE for PayPal payment method (Auth). | -| `$config[ComputopConstants::PAYMENT_METHODS_WITHOUT_ORDER_CALL]` | array | Array of payment methods without order call. | -| `$config[ComputopApiConstants::PAYMENT_METHODS_CAPTURE_TYPES]` | array | Array with mapping payment methods and their capture types (MANUAL or AUTO). | -| `$config[ComputopConstants::CRIF_ENABLED]` | bool | Is CRIF risk check enabled. | -| `$config[ComputopApiConstants::CRIF_ACTION]` | string | CRIF API call endpoint. | -| `$config[ComputopApiConstants::CRIF_PRODUCT_NAME]` | string | `QuickCheckConsumer` or
`CreditCheckConsumer` or
`QuickCheckBusiness` or
`CreditCheckBusiness` or
`IdentCheckConsume`. | -| `$config[ComputopApiConstants::CRIF_LEGAL_FORM]` | string | PERSON or COMPANY or UNKNOWN. | -| `$config[ComputopConstants::CRIF_GREEN_AVAILABLE_PAYMENT_METHODS]` | array | List of payment methods available with green response code. | -| `$config[ComputopConstants::CRIF_YELLOW_AVAILABLE_PAYMENT_METHODS] ` | array | List of payment methods available with yellow response code. | -| `$config[ComputopConstants::CRIF_RED_AVAILABLE_PAYMENT_METHODS]` | array | List of payment methods available with red response code. | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.md deleted file mode 100644 index 009724273bd..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Integrating the Сredit Сard payment method for Computop -description: Integrate Credit Card payment through Computop into the Spryker-based shop. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-credit-card -originalArticleId: bf6eec69-71e4-4fc9-9539-598e9d60c27c -redirect_from: - - /v1/docs/computop-credit-card - - /v1/docs/en/computop-credit-card -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-credit-card-flow-example.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//credit_card.twig` - -## State Machine Integration - -The Computop provides a demo state machine for the Credit Card payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopCreditCard', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopCreditCard', -]; -``` - -## Credit Card Payment Flow - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the to Computop (Pay gate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop).The customer sets up all data just after redirect to Computop. - Init action: "Order". -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId` On error, the customer will be redirected to "Payment" step with the error message by defaul. Response data is stored in the DB. -3. Authorization is added right after success init action by default. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details: - -For partial capturing: - -1. Case: Merchant uses neither ETM nor PCN (`PseudoCardNumber`). After authorization has been done, you are able to do one capture. This can be a partial or a complete capture of the authorized amount. After the capture is performed you cannot do another capture. If it is a partial capture, the rest of the initial authorized amount is released. -2. Case: Merchant uses ETM (Extended Transactions Management). You can do partial captures as long as the as the initial amount of the authorization has not been reached or you send `FinishAuth=Y` with the last capture you like to do. (see page 83 of Computop documentation) -3. Case: Merchant uses PCN. With the authorization request you get back the PCN and other credit card parameter (Expiry Date, Brand). PCN and the other parameters can be stored. - -You capture the full amount of the authorization via `capture.aspx` => Nothing else has to be done. - -You capture a partial amount of the authorization => The rest of the amount forfeited. To do the next partial capture, you have to use the PCN with the `direct.aspx` (page 53 of Computop documentation) and the additional parameter VBV=NO in the request to get a new authorization. After that you proceed as described above. diff --git "a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment\342\200\223method-for-computop.md" "b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment\342\200\223method-for-computop.md" deleted file mode 100644 index 8bf56bb3f0a..00000000000 --- "a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment\342\200\223method-for-computop.md" +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: Integrating the CRIF payment method for Computop -description: In this article, you can find information on the CRIF process for Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-crif -originalArticleId: 5e8627fe-46af-4e22-a8c8-608c2107354e -redirect_from: - - /v1/docs/computop-crif - - /v1/docs/en/computop-crif - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -## General Information About CRIF - -Popular with customers, risky for the merchant: Payment methods such as direct debit or purchase on account involve a high level of default risk. Computop Paycontrol, an automated credit rating with all standard credit agencies, combines flexibility and payment security for online business. With Paycontrol you can, amongst other things, automatically obtain information from CRIF without having to connect your shop system to individual information interfaces. - -CRIF (formerly Deltavista) provides information on about 80 million individuals, 6 million companies, and 10 million payment, register, and address records from Germany, Austria and Switzerland. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/CRIF-process-flow.png) - -## Calling the Interface - -To carry out a CRIF order check via a Server-to-Server connection, go to [that URL](https://www.computop-paygate.com/deltavista.aspx). - -For security reasons, Paygate rejects all payment requests with formatting errors. Therefore please use the correct data type for each parameter. - -## Integration with Checkout. -Integrated into Computop module CRIF provides risk check functionality based on customer, cart, address and other data. CRIF analyzes information and provides result as color response code (GREEN, YELLOW, RED) which corresponds to potential risks. Based on this result payment methods should be filtered. Only allowed payment methods should be displayed on checkout payment page. Module provides possibility to configure list of allowed payment methods for each response color. - -1. First of all you need to add CRIF specific configurations into `config_default.php` file: - -
-config/Shared/config_default.php - -```php -$config[ComputopConstants::CRIF_ENABLED] = false; // Enable or disable CRIF functionality. -$config[ComputopApiConstants::CRIF_ACTION] = 'https://www.computop-paygate.com/deltavista.aspx'; //CRIF API call enpoint. -$config[ComputopApiConstants::CRIF_PRODUCT_NAME] = ''; //This is checking method, could be: QuickCheckConsumer, CreditCheckConsumer, QuickCheckBusiness, CreditCheckBusiness, IdentCheckConsumer -$config[ComputopApiConstants::CRIF_LEGAL_FORM] = ''; // Legal form of the person/company sought, could be: PERSON, COMPANY, UNKNOWN - -$config[ComputopConstants::CRIF_GREEN_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns GREED code, for example: computopCreditCard, computopDirectDebit and so on. -$config[ComputopConstants::CRIF_YELLOW_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns YELLOW code, for example: computopPaydirekt, computopEasyCredit and so on. -$config[ComputopConstants::CRIF_RED_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns RED code, for example: computopSofort, computopPayPal and so on. -``` -
-
- -2. Extend `ShipmentStep` to add CRIF risk check call before checkout payment step: - -
-\Pyz\Yves\CheckoutPage\Process\Steps\ShipmentStep - -```php -computopClient = $computopClient; - } - - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return \Generated\Shared\Transfer\QuoteTransfer - */ - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $quoteTransfer = parent::execute($request, $quoteTransfer); - - return $this->computopClient->performCrifApiCall($quoteTransfer); - } -} -``` -
-
- -3. Extend `StepFactory` to update shipment checkout step: - -
-\Pyz\Yves\CheckoutPage\Process\StepFactory - -```php -getCalculationClient(), - $this->getShipmentPlugins(), - CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - HomePageControllerProvider::ROUTE_HOME, - $this->getComputopClient() - ); - } - - /** - * @return \SprykerEco\Client\Computop\ComputopClientInterface - */ - public function getComputopClient(): ComputopClientInterface - { - return $this->getProvidedDependency(CheckoutPageDependencyProvider::CLIENT_COMPUTOP); - } -} -``` -
-
- -4. Extend `CheckoutPageFactory` for project level `StepFactory` usage: - -
-\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
- -An example of the configuration can be taken from `vendor/spryker-eco/computop/config/config.dist.php` file. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.md deleted file mode 100644 index 2af503976a1..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Integrating the Direct Debit payment method for Computop -description: Integrate direct debit payment through Computop into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-direct-debit -originalArticleId: 96fd00fd-a9b0-42f4-bb17-219b1619f42e -redirect_from: - - /v1/docs/computop-direct-debit - - /v1/docs/en/computop-direct-debit -related: - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - - Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-direct-debit-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//direct_debit.twig` - -## State Machine Integration -The Computop provides a demo state machine for Direct Debit payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopDirectDebit', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopDirectDebit', -]; -``` - -## Direct Debit Payment Flow: - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. Init action: "Authorization". There is no Order call provided for this payment method. But Authorization call is working as Order call - without holding money. There is no call for holding money for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details: -For partial refunds: -1. Partial refunds are possible for direct debit transactions. -2. But please note, that you can not test it in test mode. -3. If you want to test it, you have to say it afterwards to Computop help desk, so that they can prepare the transaction. - diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.md deleted file mode 100644 index 15ddbc9284a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Integrating the Easy Credit payment method for Computop -description: Integrate Easy Credit payment through Computop into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-easy-credit -originalArticleId: 9fe4c81a-900f-452a-b078-23d04f144688 -redirect_from: - - /v1/docs/computop-easy-credit - - /v1/docs/en/computop-easy-credit -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-easy-credit-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//easy_credit.twig` - -## State Machine Integration -The Computop provides a demo state machine for Easy Credit payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopEasyCredit', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopEasyCredit', -]; -``` - -## Easy Credit Payment Flow: - -1. - There is a radio button on "Payment" step. - After submitting the order the customer will be redirected to the Computop (Paygate form implementation). - The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); - Customer sets up all data just after the redirect to Computop. - Init action: "Order". -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Status call is added right after the success init action. On requests, Spryker will use <`payId` parameter stored in the DB to identify a payment. Response data is stored in the DB. -4. Authorization is added by default right after place order. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.md deleted file mode 100644 index cdfc685c096..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Integrating the iDeal payment method for Computop -description: Integrate iDeal payment through Computop into the Spryker-based shop. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-ideal -originalArticleId: 12a62ff8-1e79-4c15-a8a8-a3c23ba93764 -redirect_from: - - /v1/docs/computop-ideal - - /v1/docs/en/computop-ideal -related: - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-ideal-flow-example.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//ideal.twig` - -## State Machine Integration - -The Computop provides a demo state machine for iDeal payment method which implements Capture flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopIdeal', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopIdeal', -]; -``` - -## iDeal Payment Flow: - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, f.e. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Capture". There are no Order and Authorization calls provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Refund action is implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.md deleted file mode 100644 index 6b9cd5859d9..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Integrating the Paydirekt payment method for Computop -description: Integrate Paydirekt payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paydirekt -originalArticleId: 799491cc-dc45-4820-a81a-6fc9455bbddd -redirect_from: - - /v1/docs/computop-paydirekt - - /v1/docs/en/computop-paydirekt -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-paydirekt-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//paydirekt.twig` - -## State Machine Integration -The Computop provides a demo state machine for Paydirekt payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopPaydirekt', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPaydirekt', -]; -``` - -## Paydirekt Payment Flow - -1. There is a radio button on "Payment" step. - After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Authorization". There is no Order call provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details - - Credits are possible up to 200% of the captured amount if such setup is enabled for the merchant and that payment method within Paygate by Computop helpdesk. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.md deleted file mode 100644 index a806ae02784..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.md +++ /dev/null @@ -1,364 +0,0 @@ ---- -title: Integrating the PayNow payment method for Computop -description: Integrate PayNow payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paynow -originalArticleId: 042e86fb-68fb-4f57-a6de-d77e851c5836 -redirect_from: - - /v1/docs/computop-paynow - - /v1/docs/en/computop-paynow -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - - Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop_paynow.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: `src//Yves/Computop/Theme//paynow.twig` - -## State Machine Integration - -The Computop provides a demo state machine for the PayNow payment method which implements `Authorization/Capture` flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopPayNow01', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPayNow01', - ]; - ``` - - ### Checkout Integration - -Add the following lines to `Yves\Checkout\CheckoutDependencyProvider.php` -```php -$container[static::PAYMENT_METHOD_HANDLER] = function () { - $paymentMethodHandler = new StepHandlerPluginCollection(); - ..... - $paymentMethodHandler->add(new ComputopPaymentHandlerPlugin(), PaymentTransfer::COMPUTOP_PAY_NOW); - - return $paymentMethodHandler; -}; - -$container[static::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugin = new SubFormPluginCollection(); - ..... - $paymentSubFormPlugin->add(new PayNowSubFormPlugin()); - - return $paymentSubFormPlugin; -}; - -protected function provideClients(Container $container) -{ - $container = parent::provideClients($container); - - ..... - - $container[static::CLIENT_COMPUTOP] = function (Container $container) { - return $container->getLocator()->computop()->client(); - }; - - return $container; -} -``` - -Computop PayNow payment method also provides a new Checkout Step for filling the Credit Card data and sending it to the Computop paygate. You have to create `Yves/Checkout/Process/Steps/PayNowStep.php` class with the following content: -
- Click here to expand the code sample - - ```php - isMethodPayNow($quoteTransfer)) { - return true; - } - - return false; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function postCondition(AbstractTransfer $quoteTransfer) - { - return true; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return array - */ - public function getTemplateVariables(AbstractTransfer $quoteTransfer) - { - return [ - 'data' => $quoteTransfer->getPayment()->getComputopPayNow()->getData(), - 'len' => $quoteTransfer->getPayment()->getComputopPayNow()->getLen(), - 'merchant' => $quoteTransfer->getPayment()->getComputopPayNow()->getMerchantId(), - 'action' => $quoteTransfer->getPayment()->getComputopPayNow()->getUrl(), - 'brandOptions' => $this->getBrandOptions(), - ]; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - protected function isMethodPayNow(AbstractTransfer $quoteTransfer) - { - return $quoteTransfer->getPayment()->getPaymentSelection() === ComputopConfig::PAYMENT_METHOD_PAY_NOW; - } - - /** - * @return array - */ - protected function getBrandOptions() - { - return [ - 'VISA' => 'Visa', - 'MasterCard' => 'Master Card', - 'AMEX' => 'American Express', - 'DINERS' => 'Diners Club', - 'JCB' => 'JCB', - 'CBN' => 'CBN', - 'SWITCH' => 'Switch', - 'SOLO' => 'Solo', - ]; - } -} -``` -
-
- -Then you need to add it to `Yves/Checkout/Process/StepFactory.php` right after the `PlaceOrder` step and before the `Success` step. -```php -protected function createPayNowStep() -{ - return new PayNowStep( - CheckoutControllerProvider::CHECKOUT_COMPUTOP_PAYNOW, - ApplicationControllerProvider::ROUTE_HOME - ); -} - -public function createStepCollection() -{ - $stepCollection = new StepCollection( - $this->getUrlGenerator(), - CheckoutControllerProvider::CHECKOUT_ERROR - ); - - $stepCollection - .... - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createPayNowStep()) - ->addStep($this->createSuccessStep()); - - return $stepCollection; -} -``` - -Also you need to add action to `Yves/Checkout/Controller/CheckoutController.php` -```php -public function paynowAction(Request $request) -{ - return $this->createStepProcess()->process($request); -} -``` - -And define this action in `Yves/Checkout/Plugin/Provider/CheckoutControllerProvider.php` -```php -protected function defineControllers(Application $app) -{ - $allowedLocalesPattern = $this->getAllowedLocalesPattern(); - - ..... - - $this->createController('/{checkout}/computop/paynow', self::CHECKOUT_COMPUTOP_PAYNOW, 'Checkout', 'Checkout', 'paynow') - ->assert('checkout', $allowedLocalesPattern . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); -} -``` - -The final step is to create a template for rendering `PayNow` step in `Yves/Checkout/Theme/default/checkout/paynow.twig` - -
- Click here to expand the code sample - - ```xml -{% raw %}{%{% endraw %} extends "@checkout/layout.twig" {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block breadcrumb {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
- - - - -
-
- -
-
-
-
-
-
-{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - ``` -
-
- -To make this specific step work only with PayNow payment method we have to update `Yves/Checkout/Process/Steps/PlaceOrderStep.php` -```php -public function execute(Request $request, AbstractTransfer $quoteTransfer) -{ - if ($this->isPaymentPayNow($quoteTransfer) && $this->isComputopPaymentExist($quoteTransfer)) { - return $quoteTransfer; - } - - $quoteTransfer = parent::execute($request, $quoteTransfer); - - if ($this->isPaymentPayNow($quoteTransfer)) { - $this->setComputopInitData($quoteTransfer); - } - - return $quoteTransfer; -} - -protected function isPaymentPayNow(QuoteTransfer $quoteTransfer) -{ - return $quoteTransfer->getPayment()->getPaymentSelection() === ComputopConfig::PAYMENT_METHOD_PAY_NOW; -} - -protected function isComputopPaymentExist(QuoteTransfer $quoteTransfer) -{ - $quoteTransfer = $this->computopClient->isComputopPaymentExist($quoteTransfer); - - return (bool)$quoteTransfer->getPayment()->getIsComputopPaymentExist(); -} -``` - -Also, you will need to add `ComputopClient` to `PlaceOrderSpet` dependecy `Yves/Checkout/Process/StepFactory.php` -```php -public function getComputopClient() -{ - return $this->getProvidedDependency(CheckoutDependencyProvider::CLIENT_COMPUTOP); -} - -protected function createPlaceOrderStep() -{ - return new PlaceOrderStep( - $this->getCheckoutClient(), - $this->getFlashMessenger(), - $this->getComputopClient(), - CheckoutControllerProvider::CHECKOUT_PLACE_ORDER, - ApplicationControllerProvider::ROUTE_HOME, - [ - 'payment failed' => CheckoutControllerProvider::CHECKOUT_PAYMENT, - ShipmentCheckoutConnectorConfig::ERROR_CODE_SHIPMENT_FAILED => CheckoutControllerProvider::CHECKOUT_SHIPMENT, - ] - ); -} -``` - -## PayNow Payment Flow - -1. There is a radio button on Payment step. After submitting the order, the customer is redirected to the to PayNow checkout step. The step contains Credit Card form with the following fields: - - Credit Card brand choice; - - Credit Card number; - - Credit Card expires date (in the format `YYYYMM`, e.g. 201807); - - Credit Card security code (CVV); - - Data (hidden field, encrypted parameters, e.g. currency, amount, description); - - Length (hidden field, length of `data` parameter); - - Merchant id (hidden field, assigned by Computop). - -Form posts directly to Computop paygate. After the process is requested, Computop redirects the customer to success or failure URL. - -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message. Response data is stored in the DB. -3. Authorization is added by default right after the success init action. Capture/Refund and Cancel actions are implemented in the Administration Interface (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.md deleted file mode 100644 index 1c76d9fd14b..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Integrating the PayPal payment method for Computop -description: Integrate PayPal payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paypal -originalArticleId: 3e851502-7c39-4380-b10a-7b287b580e65 -redirect_from: - - /v1/docs/computop-paypal - - /v1/docs/en/computop-paypal -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - -Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-paypal-flow-example.png) - -## Front-End Integration -To adjust frontend appearance, provide following templates in your theme directory: -`src//Yves/Computop/Theme//paypal.twig` - -## State Machine Integration -The Computop provides a demo state machine for PayPal payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - - ComputopConfig::PAYMENT_METHOD_PAY_PAL => 'ComputopPayPal', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPayPal', -]; -``` - -## PayPal Payment Flow: - -1.There is a radio button on "Payment" step. After submit order customer will be redirected to the to Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Authorization is added right after success init action by default. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.md deleted file mode 100644 index c453281aaaf..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Integrating the Sofort payment method for Computop -description: Integrate Sofort payment through Computop into the Spryker-based shop. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-sofort -originalArticleId: a7827af5-4b2b-4714-a99a-a935a0864bdd -redirect_from: - - /v1/docs/computop-sofort - - /v1/docs/en/computop-sofort -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-sofort-flow-example.png) - -## Front-End Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//sofort.twig` - -## State Machine Integration -The Computop provides a demo state machine for Sofort payment method which implements Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopSofort', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopSofort', -]; -``` - -## Sofort Payment Flow - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Capture". There are no Order and Authorization calls provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details -Important for a live MID is: - -1. Merchant must have a bank account at the Sofort Bank. -2. The contract with Sofort must be extended specifically for credits. -3. The credit function must be configured in the Sofort project, as well as in the Computop (on the MID). diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-callbacks.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-callbacks.md deleted file mode 100644 index 25aab6646d8..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-callbacks.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: CrefoPay callbacks -description: Callbacks are redirects performed by the CrefoPay system. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-callback -originalArticleId: 6b459597-184f-46c2-8bf4-507e27ad2813 -redirect_from: - - /v1/docs/crefopay-callback - - /v1/docs/en/crefopay-callback -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay—Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-payment-methods.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -Callbacks are redirects performed by the CrefoPay system. The CrefoPay system redirects customers back to the URLs configured for the merchants shop. For each shop, you can define a single URL of each of the following types: confirmation, success and error. -These callbacks are used only for payment methods that redirect to a different page like PayPal. - -Callback URLs can be configured in merchant back end and must have the following format: - -* Confirmation URL: `http://de.mysprykershop.com/crefo-pay/callback/confirmation ` -* Success URL: `http://de.mysprykershop.com/crefo-pay/callback/success` -* Failure URL: `http://de.mysprykershop.com/crefo-pay/callback/failure` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-capture-and-refund-processes.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-capture-and-refund-processes.md deleted file mode 100644 index f8cf7716570..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-capture-and-refund-processes.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: CrefoPay capture and refund Processes -description: This article describes the capture and refund processes for the Crefopay module in Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-capture-refund-processes -originalArticleId: 4faf3cbb-b1ef-481f-9710-f7416d4a0522 -redirect_from: - - /v1/docs/crefopay-capture-refund-processes - - /v1/docs/en/crefopay-capture-refund-processes -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: CrefoPay - link: docs/scos/user/technology-partners/page.version/payment-partners/crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay—Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-payment-methods.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -CrefoPay module can have different capture and refund processes: - -* separate transaction for each order item and expense; -* combined transaction for all order items. - -For these purposes, the module has different OMS plugins: - -* `CapturePlugin` -* `CaptureSplitPlugin` -* `RefundPlugin` -* `RefundSplitPlugin` - -You can use the following settings to manage expenses behavior: - -* `$config[CrefoPayConstants::CAPTURE_EXPENSES_SEPARATELY]` -* `$config[CrefoPayConstants::REFUND_EXPENSES_WITH_LAST_ITEM]` - -With `CapturePlugin` in place, the amount of items in order is captured as one transaction. If you use `$config[CrefoPayConstants::CAPTURE_EXPENSES_SEPARATELY]`, separate transaction will be created for all expenses. `CaptureSplitPlugin` triggers a separate transaction for each order item. - -`RefundSplitPlugin` triggers a separate refund call for each order item that you want to refund. `RefundPlugin` implemented for case when you want to refund amount that can be more than item amount. - -{% info_block warningBox "Note" %} -You'll get an exception if you trigger Refund process for items with different CaptureIDs (items captured in different transactions). -{% endinfo_block %} -`$config[CrefoPayConstants::REFUND_EXPENSES_WITH_LAST_ITEM]` allows you to refund expenses. It refunds them after the last item has been refunded. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-enabling-b2b-payments.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-enabling-b2b-payments.md deleted file mode 100644 index d4855f8d12a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-enabling-b2b-payments.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: CrefoPay—Enabling B2B payments -description: CrefoPay module provides B2B strategy in payments. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-business-to-business-model -originalArticleId: e847cdcf-82e3-4d2c-b4e1-c13b21c7ea0b -redirect_from: - - /v1/docs/crefopay-business-to-business-model - - /v1/docs/en/crefopay-business-to-business-model -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: CrefoPay - link: docs/scos/user/technology-partners/page.version/payment-partners/crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-payment-methods.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -CrefoPay module enables B2B strategy in payments. - -To enable the B2B business model for CrefoPay: - -1. Set `$config[CrefoPayConstants::IS_BUSINESS_TO_BUSINESS]` to true. -2. Add company data into `QuoteTransfer` on project level. It should be done before customer goes to checkout payment step. -
-Company Data -```php -$quoteTransfer->setCrefoPayCompany( - (new CrefoPayApiCompanyTransfer()) - ->setCompanyName('Company Name') - ->setCompanyRegisterType('UNKNOWN') - ->setCompanyRegistrationID('registration-id') - ->setCompanyTaxID('tax-id') - ->setCompanyVatID('vat-id') - ->setEmail('business.email@company.com') -); -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-notifications.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-notifications.md deleted file mode 100644 index 43dd4abb3c5..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-notifications.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: CrefoPay notifications -description: Merchant Notification System (MNS) is a push notification service for merchants that CrefoPay module uses. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-notifications -originalArticleId: 0f3de60e-6212-4c05-8e6f-c63885e31293 -redirect_from: - - /v1/docs/crefopay-notifications - - /v1/docs/en/crefopay-notifications ---- - -Merchant Notification System (MNS) is a push notification service for merchants. The MNS allows merchants to receive a multitude of notifications asynchronously in order to decouple the merchant system from CrefoPay’s payment systems. Also, with the MNS, merchants can react to any kind of change in the payment status of processed transactions. - -Notification calls will be targeted at the notification-URL that is configured for the shop. Multiple notification-URLs may be configured for a single shop. This allows merchants to inform more than one system, for example shop system and ERP system. - -The Notification-URL can be configured in merchant back end and must have the following format: `http://de.mysprykershop.com/crefo-pay/notification`. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-payment-methods.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-payment-methods.md deleted file mode 100644 index 769b3212700..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay-payment-methods.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: CrefoPay payment methods -description: CrefoPay supports key payment methods across different regions, channels, and verticals.- bill, cash on delivery, credit card, direct debit, Paypal, cash in advance, sofort payment -last_updated: Nov 6, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-provided-payment-methods -originalArticleId: 492a05d4-93dc-4995-b67b-4ba1a828d481 -redirect_from: - - /v1/docs/crefopay-provided-payment-methods - - /v1/docs/en/crefopay-provided-payment-methods -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: CrefoPay - link: docs/scos/user/technology-partners/page.version/payment-partners/crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay—Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -CrefoPay supports key payment methods across different regions, channels, and verticals. This article gives overview of these payment methods. - -## Bill -After checkout, shop generates a bill/invoice with the account information and payment reference provided by CrefoPay included. - -Account information and payment reference are provided in response to a reserve call. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayBill01.xml` - -## Cash on Delivery -After checkout, user makes payment only after receiving the product. This payment is not made via CrefoPay checkout, so CrefoPay cannot process it. As a result, merchants have to process 'Cash on Delivery' payments separately. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayCashOnDelivery01.xml` - -## Credit Card -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayCrediCard01.xml` - -## Credit Card with 3D Secure -If a credit card holder is registered with 3D Secure process, once a purchase is confirmed, they are forwarded to the entry page of their bank where they need to enter the password sent by their bank. Payment is carried out only after the correct password is entered. MasterCard's solution is "MasterCard Secure Code" while Visa's is "Verified by Visa". - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayCrediCard3D01.xml` - -## Direct Debit -Direct Debit is processed by the bank system once it is transferred to the bank gateway. This can take several days. While being processed, the order has PayPending status. - -As a result of the reconciliation process, the bank system provides feedback which is evaluated automatically within CrefoPay system: - -* in case of a positive feedback, the status of the order is set to Paid; -* in case of a negative return, it gets the Paymentfailed status; -* in case CrefoPay does not receive any feedback (which is a rare case), CrefoPay system waits for the so-called grace period to pass; -* in case CrefoPay system does not receive a negative feedback within this grace period, the status of the order is set to Paid. - -In case CrefoPay does not receive any feedback (which is a rare case), CrefoPay system waits for the so-called grace period to pass. If CrefoPay system does not receive a negative feedback within this grace period, the status of the order is set to Paid. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayDirectDebit01.xml` - -## PayPal -During checkout, user is redirected to PayPal login page. After a successful authentication or cancellation, PayPal informs CrefoPay about the outcome. Then, CrefoPay performs a callback and redirects the user back to the shop. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayPayPal01.xml` - -## Cash in Advance -After checkout, shop delivers the order after payment has been received from the user. - -The shop learns about the incoming payment by receiving a notification from the Merchant Notification Service. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPayPrepaid01.xml` - -## SofortÜberweisung -After confirmation an order during checkout, the user is redirected to the SOFORTBank website where they can select a bank. This takes them to the entry page of the selected bank to authenticate. Then, they trigger an online bank transfer from this environment. Similarly to PayPal, SofortÜberweisung informs CrefoPay about the outcome, CrefoPay performs a callback and redirects the user back to the shop. - -You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Zed/Oms/CrefoPaySofort01.xml` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay.md deleted file mode 100644 index 20308904a7b..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/crefopay.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: CrefoPay -description: Provide all steps within the payment process by integrating CrefoPay into the Spryker Commerce OS. -template: concept-topic-template ---- - -`SprykerEco.CrefoPay` [spryker-eco/crefo-pay](https://github.com/spryker-eco/crefo-pay) module provides integration of Spryker e-commerce system with the CrefoPay technology partner. It requires `SprykerEco.CrefoPayApi` [spryker-eco/crefo-pay-api](https://github.com/spryker-eco/crefo-pay-api) module that provides the REST Client for making API calls to CrefoPay Payment Provider. - -The `SprykerEco.CrefoPay` module includes integration with: - -* **Checkout process** - payment forms with all necessary fields that are required to make a payment request, save order information and so on. -* **OMS (Order Management System)** - state machines, all necessary commands for making modification requests and conditions for changing order statuses accordingly. - -The `SprykerEco.CrefoPay` module provides the following payment methods: - -* [Bill](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#bill) -* [Cash on Delivery](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#cash-on-delivery) -* [Credit Card](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#credit-card) -* [Card with 3D secure](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#credit-card-with-3d-secure) -* [Direct Debit](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#direct-debit) -* [PayPal](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#paypal) -* [Cash in advance](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#cash-in-advance) -* [SofortÜberweisung](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/crefopay/crefopay-payment-methods.html#sofortberweisung) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/installing-and-configuring-crefopay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/installing-and-configuring-crefopay.md deleted file mode 100644 index 2be5544781b..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/installing-and-configuring-crefopay.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Installing and configuring CrefoPay -description: This article provides instructions on the installation and configuration of the CrefoPay module for the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-configuration -originalArticleId: e08c223b-cd26-4c57-a977-83eee9370aee -redirect_from: - - /v1/docs/crefopay-configuration - - /v1/docs/en/crefopay-configuration - - /docs/scos/user/technology-partners/201811.0/payment-partners/crefopay/installing-and-configuring-crefopay.html -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: CrefoPay - link: docs/scos/user/technology-partners/page.version/payment-partners/crefopay.html - - title: CrefoPay payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-payment-methods.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay—Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -To integrate CrefoPay into your project, first you need to install and configure the CrefoPay module. This topic describes how to do that. - -## Installation -To install the CrefoPay module, run: -``` -composer require spryker-eco/crefo-pay -``` - -## Configuration -### General Configuration -You can find all necessary configurations in `vendor/spryker-eco/crefo-pay/config/config.dist.php`. - -The table below describes all general configuration keys and their values. -All necessary configurations can be found in `vendor/spryker-eco/crefo-pay/config/config.dist.php`. - -|Configuration Key |Type | Description| -| --- | --- | --- | -| `$config [CrefoPayConstants::MERCHANT_ID]`| int | Merchant ID assigned by CrefoPay. | -|` $config [CrefoPayConstants::STORE_ID]` |string |Store ID of the merchant assigned by CrefoPay as a merchant can have more than one store.| -| `$config [CrefoPayConstants::REFUND_DESCRIPTION]` | string | Description to be shown to the end user on the refund.| -| `$config [CrefoPayConstants::SECURE_FIELDS_API_ENDPOINT] `| string | Secure fields API endpoint.| -|`$config [CrefoPayConstants::IS_BUSINESS_TO_BUSINESS] `|bool | Set true in case of b2b model. | -| `$config [CrefoPayConstants::CAPTURE_EXPENSES_SEPARATELY] `|bool | If set true, allows capturing expenses in different transactions. | -| `$config [CrefoPayConstants::REFUND_EXPENSES_WITH_LAST_ITEM]`|bool|If set true, allows refunding expenses when the last item is refunded. | -|` $config [CrefoPayConstants::SECURE_FIELDS_PLACEHOLDERS] ` | array | Placeholders for CC payment method fields (account name, card number, cvv). | -| `$config [CrefoPayApiConstants::CREATE_TRANSACTION_API_ENDPOINT]` | string | Create Transaction API endpoint. | -| `$config [CrefoPayApiConstants::RESERVE_API_ENDPOINT] ` | string | Reserve API endpoint. | -| `$config [CrefoPayApiConstants::CAPTURE_API_ENDPOINT]` | string | Capture API endpoint. | -| `$config [CrefoPayApiConstants::CANCEL_API_ENDPOINT]` | string | Cancel API endpoint. | -|`$config [CrefoPayApiConstants::REFUND_API_ENDPOINT]` | string | Refund API endpoint. | -| `$config [CrefoPayApiConstants::FINISH_API_ENDPOINT]` | string | Finish API endpoint. | -| `$config [CrefoPayApiConstants::PRIVATE_KEY] ` | string | Integration private key. Provided by CrefoPay. | -| `$config [CrefoPayApiConstants::PUBLIC_KEY]` | string | Integration public key. Provided by CrefoPay. | -### Specific Configuration -Add necessary payment methods to State Machine (OMS) configuration in the following file: -
-inconfig_default.php - -```php -$config[OmsConstants::PROCESS_LOCATION] = [ - ... - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/crefo-pay/config/Zed/Oms', -]; -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'CrefoPayBill01', - 'CrefoPayCashOnDelivery01', - 'CrefoPayDirectDebit01', - 'CrefoPayPayPal01', - 'CrefoPayPrepaid01', - 'CrefoPaySofort01', - 'CrefoPayCreditCard01', - 'CrefoPayCreditCard3D01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - ... - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_BILL => 'CrefoPayBill01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CASH_ON_DELIVERY => 'CrefoPayCashOnDelivery01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_DIRECT_DEBIT => 'CrefoPayDirectDebit01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_PAY_PAL => 'CrefoPayPayPal01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_PREPAID => 'CrefoPayPrepaid01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_SOFORT => 'CrefoPaySofort01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CREDIT_CARD => 'CrefoPayCreditCard01', - CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CREDIT_CARD_3D => 'CrefoPayCreditCard3D01', -]; -``` -
-
- -See [CrefoPay payment methods](https://docs.demo-spryker.com/v4/docs/crefopay-provided-payment-methods) for more information on the payment methods provided by CrefoPay. - -## Next steps -Once you are done with the installation and configuration of the CrefoPay module, [integrate CrefoPay into your project](/docs/scos/user/technology-partners/201811.0/payment-partners/crefopay/crefopay-integration.html). diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/integrating-crefopay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/integrating-crefopay.md deleted file mode 100644 index ff8d1e5b141..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/crefopay/integrating-crefopay.md +++ /dev/null @@ -1,663 +0,0 @@ ---- -title: Integrating CrefoPay -description: This article provides instructions on integrating CrefoPay into the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay-integration -originalArticleId: 06496c60-a365-44ff-b615-c27e1ccb0d12 -redirect_from: - - /v1/docs/crefopay-integration - - /v1/docs/en/crefopay-integration - - /docs/scos/user/technology-partners/201811.0/payment-partners/crefopay/crefopay-integration.html -related: - - title: CrefoPay - link: docs/scos/user/technology-partners/page.version/payment-partners/crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-payment-methods.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay—Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -This article provides step-by-step instructions on integrating the CrefoPay system into your project. - -## Prerequisites -Prior to integrating CrefoPay into your project, make sure you [installed and configured the CrefoPay module](/docs/scos/user/technology-partners/201811.0/payment-partners/crefopay/installing-and-configuring-crefopay.html). - -## Integrating CrefoPay into Your Project -To integrate CrefoPay, do the following: - -1. Add shipment step plugin, payment subform plugins and payment method handlers: - -
- \Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider - -```php -extendShipmentHandlerPluginCollection($container); - $container = $this->extendSubFormPluginCollection($container); - $container = $this->extendPaymentMethodHandler($container); - - return $container; - } - -... - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendShipmentHandlerPluginCollection(Container $container): Container - { - $container->extend(static::PLUGIN_SHIPMENT_HANDLER, function (StepHandlerPluginCollection $shipmentHandlerPlugins) { - $shipmentHandlerPlugins->add(new CrefoPayQuoteExpanderPlugin(), static::PLUGIN_CREFO_PAY_SHIPMENT_STEP); - - return $shipmentHandlerPlugins; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendSubFormPluginCollection(Container $container): Container - { - $container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $paymentSubFormPluginCollection) { - $paymentSubFormPluginCollection->add(new CrefoPayBillSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayCashOnDeliverySubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayDirectDebitSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayPayPalSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayPrepaidSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPaySofortSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayCreditCardSubFormPlugin()); - $paymentSubFormPluginCollection->add(new CrefoPayCreditCard3DSubFormPlugin()); - - return $paymentSubFormPluginCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendPaymentMethodHandler(Container $container): Container - { - $container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $paymentMethodHandlerCollection) { - $paymentMethodHandlerCollection->add(new NopaymentHandlerPlugin(), NopaymentConfig::PAYMENT_PROVIDER_NAME); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_BILL); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CASH_ON_DELIVERY); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_DIRECT_DEBIT); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_PAY_PAL); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_PREPAID); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_SOFORT); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CREDIT_CARD); - $paymentMethodHandlerCollection->add(new CrefoPayPaymentExpanderPlugin(), CrefoPayConfig::CREFO_PAY_PAYMENT_METHOD_CREDIT_CARD_3D); - - return $paymentMethodHandlerCollection; - }); - - return $container; - } -} -``` -
-
- -2. Extend `ShipmentStep` to add payment methods filtering logic: - -
-\Pyz\Yves\CheckoutPage\Process\Steps\ShipmentStep - -```php -shipmentPlugins->get(CheckoutPageDependencyProvider::PLUGIN_CREFO_PAY_SHIPMENT_STEP); - - return $crefoPayPlugin->addToDataClass($request, $quoteTransfer); - } -} -``` -
-
- -3. Extend `StepFactory` for the project-level `ShipmentStep` usage: - -
-\Pyz\Yves\CheckoutPage\Process\StepFactory - -```php -getUrlGenerator(), - CheckoutPageControllerProvider::CHECKOUT_ERROR - ); - - $stepCollection - ->addStep($this->createEntryStep()) - ->addStep($this->createCustomerStep()) - ->addStep($this->createAddressStep()) - ->addStep($this->createShipmentStep()) - ->addStep($this->createPaymentStep()) - ->addStep($this->createSummaryStep()) - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createSuccessStep()); - - return $stepCollection; - } - - /** - * @return \SprykerShop\Yves\CheckoutPage\Process\Steps\ShipmentStep - */ - public function createShipmentStep() - { - return new ShipmentStep( - $this->getCalculationClient(), - $this->getShipmentPlugins(), - CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - HomePageControllerProvider::ROUTE_HOME - ); - } -} -``` -
-
- -4. Extend `CheckoutPageFactory` for the project-level `StepFactory` usage: - -
-\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
- -5. Extend checkout page layout to add `jQuery`: - -
-Pyz/Yves/CheckoutPage/Theme/default/templates/page-layout-checkout/page-layout-checkout.twig - -```php -{% raw %}{%{% endraw %} extends template('page-layout-main') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - breadcrumbs: _view.stepBreadcrumbs.breadcrumbs | default([]) -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block headScripts {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block sidebar {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block header {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include organism('header') with { - data: { - showSearchForm: false, - showNavigation: false - } - } only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block breadcrumbs {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include view('cart-checkout-breadcrumb', 'CheckoutWidget') with { - data: { - isCartPage: false, - checkoutBreadcrumbs: data.breadcrumbs - } - } only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block footer {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -6. Extend payment twig to add CrefoPay payment methods: - -
-Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - -```php -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - title: 'checkout.step.payment.title' | trans, - customForms: { - 'crefoPay/bill': ['bill', 'crefoPay'], - 'crefoPay/cash-on-delivery': ['cash-on-delivery', 'crefoPay'], - 'crefoPay/direct-debit': ['direct-debit', 'crefoPay'], - 'crefoPay/paypal': ['paypal', 'crefoPay'], - 'crefoPay/prepaid': ['prepaid', 'crefoPay'], - 'crefoPay/sofort': ['sofort', 'crefoPay'], - 'crefoPay/credit-card': ['credit-card', 'crefoPay'], - 'crefoPay/credit-card-3d': ['credit-card-3d', 'crefoPay'] - } -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('script-loader') with { - class: 'js-crefopay-payment-form__script-loader', - attributes: { - src: 'https://libs.crefopay.de/3.0/secure-fields.js' - } - } only {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} include atom('crefopay-checkbox-helper', 'CrefoPay') with { - attributes: { - 'trigger-selector': '.toggler-radio', - 'payment-container-selector': '.js-crefopay-payment', - 'target-selector': '.radio__input', - 'custom-attribute-name': 'data-crefopay', - 'custom-attribute-value': 'paymentMethod', - 'joint-container-selector': '.form' - } - } only {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.payment, - options: { - attr: { - id: 'payment-form' - } - }, - submit: { - enable: true, - text: 'checkout.step.summary' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - }, - customForms: data.customForms - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set paymentProviderIndex = loop.index0 {% raw %}%}{% endraw %} -
{% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
-
    - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - enableStart: false, - enableEnd: false, - customForms: data.customForms - }, - embed: { - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[key] - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} form_row(embed.toggler, { - required: false, - component: molecule('toggler-radio'), - attributes: { - 'target-selector': '.js-payment-method-' ~ embed.index, - 'class-to-toggle': 'is-hidden' - } - }) {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -7. Add controller provider: -
- -\Pyz\Yves\ShopApplication\YvesBootstrap - -```php - -
- -8. Add checkout plugins: - -
-\Pyz\Zed\Checkout\CheckoutDependencyProvider - - -```php - -
- -9. Add OMS commands and conditions: - -
- -\Pyz\Zed\Oms\OmsDependencyProvider - - -```php -extendCommandPlugins($container); - $container = $this->extendConditionPlugins($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendCommandPlugins(Container $container): Container - { - $container->extend(self::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - ... - $commandCollection->add(new CancelPlugin(), 'CrefoPay/Cancel'); - $commandCollection->add(new CapturePlugin(), 'CrefoPay/Capture'); //Or you can use CaptureSplitPlugin instead. OMS command name (second param) should not be changed. - $commandCollection->add(new RefundPlugin(), 'CrefoPay/Refund'); ////Or you can use RefundSplitPlugin instead. OMS command name (second param) should not be changed. - $commandCollection->add(new FinishPlugin(), 'CrefoPay/Finish'); - - return $commandCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendConditionPlugins(Container $container): Container - { - $container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - ... - $conditionCollection->add(new IsReserveCallSuccessfulPlugin(), 'CrefoPay/IsReserveCallSuccessful'); - $conditionCollection->add(new IsAcknowledgePendingReceivedPlugin(), 'CrefoPay/IsAcknowledgePendingReceived'); - $conditionCollection->add(new IsMerchantPendingReceivedPlugin(), 'CrefoPay/IsMerchantPendingReceived'); - $conditionCollection->add(new IsCiaPendingReceivedPlugin(), 'CrefoPay/IsCiaPendingReceived'); - $conditionCollection->add(new IsCancelCallSuccessfulPlugin(), 'CrefoPay/IsCancelCallSuccessful'); - $conditionCollection->add(new IsCanceledReceivedPlugin(), 'CrefoPay/IsCanceledReceived'); - $conditionCollection->add(new IsExpiredReceivedPlugin(), 'CrefoPay/IsExpiredReceived'); - $conditionCollection->add(new IsCaptureCallSuccessfulPlugin(), 'CrefoPay/IsCaptureCallSuccessful'); - $conditionCollection->add(new IsPaidReceivedPlugin(), 'CrefoPay/IsPaidReceived'); - $conditionCollection->add(new IsRefundCallSuccessfulPlugin(), 'CrefoPay/IsRefundCallSuccessful'); - $conditionCollection->add(new IsChargeBackReceivedPlugin(), 'CrefoPay/IsChargeBackReceived'); - $conditionCollection->add(new IsFinishCallSuccessfulPlugin(), 'CrefoPay/IsFinishCallSuccessful'); - $conditionCollection->add(new IsDoneReceivedPlugin(), 'CrefoPay/IsDoneReceived'); - - return $conditionCollection; - }); - - return $container; - } -} -``` -
-
- -10. Extend `PaymentDependencyProvider` to add payment method filter plugin: - -
-\Pyz\Zed\Payment\PaymentDependencyProvider - -```php - -
diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/configuring-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/configuring-heidelpay.md deleted file mode 100644 index 903c1308a5d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/configuring-heidelpay.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Configuring Heidelpay -description: This article contains information on configuring the Heidelpay module for the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-configuration-scos -originalArticleId: 264230a9-989e-4268-8d7a-7636ddbe9ea6 -redirect_from: - - /v1/docs/heidelpay-configuration-scos - - /v1/docs/en/heidelpay-configuration-scos - - /docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/configuring-heidelpay.html -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -Base settings are located in `config/Shared/config_default.php` - -|Configuration Key |Type |Description | -| --- | --- | --- | -| `HeidelpayConstants::CONFIG_HEIDELPAY_SECURITY_SENDER` | string | Security sender merchant config value, got from Heidelpay. | -| `HeidelpayConstants::CONFIG_HEIDELPAY_USER_LOGIN` | string | User login merchant config value, got from Heidelpay. | -| `HeidelpayConstants::CONFIG_HEIDELPAY_USER_PASSWORD` | string | User password merchant config value, got from Heidelpay. | -| `HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_CC_3D_SECURE` | string | Transaction channel for Credit Card payment method, got from Heidelpay | -| `HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL` | string | Transaction channel for Paypal payment method, got from Heidelpay | -| `HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL` | string | Transaction channel for iDeal payment method, got from Heidelpay | -| `HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_SOFORT` | string | Transaction channel for Sofort payment method, got from Heidelpay | -| `HeidelpayConstants::CONFIG_HEIDELPAY_APPLICATION_SECRET` | string | Application secret for sign requests. | -| `HeidelpayConstants::CONFIG_HEIDELPAY_SANDBOX_REQUEST` | bool | Setting for switching the requests to sandbox mode. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FRAME_CUSTOM_CSS_URL` | string | URL Setting with custom styles for iframe. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FRAME_PREVENT_ASYNC_REDIRECT` | string | Settings required by Heidelpay. Has to be  "FALSE". | -| `HeidelpayConstants::CONFIG_ENCRYPTION_KEY` | string | A key for encrypting Credit Card sensitive data. | -| `HeidelpayConstants::CONFIG_IS_SPLIT_PAYMENT_ENABLED_KEY` | bool | Setting for enabling split payments. | - -Store sensitive settings (DE, AT etc) can be found in `config/Shared/config_default_DE.php` - -|Configuration Key |Type |Description | -| --- | --- | --- | -| `HeidelpayConstants::CONFIG_HEIDELPAY_LANGUAGE_CODE` | string | Language code for iframe and so on, DE for example. | -| `HeidelpayConstants::CONFIG_YVES_URL` | string | Must be the same as `ApplicationConstants::BASE_URL_YVES` | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUCCESS_URL` | string | URL to return after success submit payment data. In general Checkout Success page. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FAILED_URL` | string | URL to return after failure submit payment data. In general Checkout Payment page. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_IDEAL_AUTHORIZE_URL` | string | URL to return after success submit iDeal payment data. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_STEP_PATH` | string | Path to payment step. In general `/checkout/payment` | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUMMARY_STEP_URL` | string | Summary step URL. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL` | string | URL to receive async requests from Heidelpay. | -| `HeidelpayConstants::CONFIG_YVES_CHECKOUT_REGISTRATION_SUCCESS_URL` | string | URL to finish success registration of Credit Card. | - -Also, you have to add payment methods to [State Machine (OMS) configuration](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay.html#building-a-state-machine-workflow-to-use-heidelpay-payment-methods): -```php -$config[OmsConstants::PROCESS_LOCATION] = [ - ... - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/heidelpay/config/Zed/Oms', -]; -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'HeidelpaySofort01', - 'HeidelpayPaypalAuthorize01', - 'HeidelpayPaypalDebit01', - 'HeidelpayIdeal01', - 'HeidelpayCreditCardSecureAuthorize01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - ... - HeidelpayConfig::PAYMENT_METHOD_CREDIT_CARD_SECURE => 'HeidelpayCreditCardSecureAuthorize01', - HeidelpayConfig::PAYMENT_METHOD_SOFORT => 'HeidelpaySofort01', - HeidelpayConfig::PAYMENT_METHOD_PAYPAL_AUTHORIZE => 'HeidelpayPaypalAuthorize01', - HeidelpayConfig::PAYMENT_METHOD_PAYPAL_DEBIT => 'HeidelpayPaypalDebit01', - HeidelpayConfig::PAYMENT_METHOD_IDEAL => 'HeidelpayIdeal01', -]; -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-oms-workflow.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-oms-workflow.md deleted file mode 100644 index 3a0e8ed8507..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-oms-workflow.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Heidelpay OMS workflow -last_updated: Nov 4, 2020 -template: concept-topic-template ---- - -We use state machines for handling and managing orders and payments. -To use Heidelpay, [create a new OMS](/docs/scos/dev/back-end-development/data-manipulation/create-an-order-management-system-spryker-commerce-os.html) which includes necessary Heildelpay payment methods. You can use the same state machines or build new ones. The state machine commands and conditions trigger Heidelpay facade calls in order to perform the needed requests to Heidelpay API. - -Some examples of the basic and fully functional state machines for each payment method were already built: `vendor/spryker-eco/heidelpay/config/Zed/Oms` - -* `HeidelpaySofort01.xml` -* `HeidelpayPaypalDebit01.xml` -* `HeidelpayIdeal01.xml` -* `HeidelpaySofort01.xml` -* `HeidelpayCreditCardSecureAuthorize01.xml` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.md deleted file mode 100644 index 3522aaab0d6..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Heidelpay workflow for errors -description: This article describes the procedure for handling errors in Heidelpay. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-error-workflow -originalArticleId: c2aa8f50-fd92-4573-b1eb-d7420b69fa49 -redirect_from: - - /v1/docs/heidelpay-error-workflow - - /v1/docs/en/heidelpay-error-workflow - - /docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html - - title: Integrating the Invoice Secured B2C payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.html ---- - -From the user's perspective, there is almost no difference between successful and unsuccessful order flow. - -The only exception is a redirect to the URL after the `placeOrderAction` (`/checkout/place-order`) is complete. Both URLs can be configured as follows: -```php - $config[HeidelpayConstants::CONFIG_YVES_URL] = 'http://' . $config[ApplicationConstants::HOST_YVES]; - - //url which is used in case if order was successfuly handled by Heidelpay - $config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUCCESS_URL] = 'http://' . $config[ApplicationConstants::HOST_YVES] . '/checkout/success'; - - //url which is used in case if order was unsuccessfully handled by Heidelpay - $config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FAILED_URL] = 'http://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/payment-failed?error_code=%s'; - ``` -Data flow containing information about the Heidelpay transaction error is marked red. -[Heidelpay error handling workflow](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/technology-partner-guides/payment-partners/heidelpay/heidelpay-workflow-for-errors.md/heidelpay-error-handling-workflow.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/installing-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/installing-heidelpay.md deleted file mode 100644 index a6981d2dd43..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/installing-heidelpay.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Installing Heidelpay -description: This article contains installation information for the Heidelpay module into the Spryker Legacy Demoshop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-installation -originalArticleId: 6209bf72-5ede-4287-883f-10c3f1822a53 -redirect_from: - - /v1/docs/heidelpay-installation - - /v1/docs/en/heidelpay-installation - - /docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -To install Heidelpay, if necessary, add the Heidelpay repo to your repositories in composer.json: - - ```php - "repositories": [ - ... - { - "type": "git", - "url": "https://github.com/spryker-eco/Heidelpay.git" - } - ], - ``` - -and run the following console command: -```php -composer require spryker-eco/heidelpay -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.md deleted file mode 100644 index 66550a78de0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.md +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Integrating Heidelpay into the Legacy Demoshop -description: This article contains information on integrating the Heidelpay module for the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-integration -originalArticleId: 390fa027-8abf-40c0-9000-0c3084aac28f -redirect_from: - - /v1/docs/heidelpay-integration - - /v1/docs/en/heidelpay-integration -related: - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Heidelay - Sofort (Online Transfer) - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html ---- - -**Configuration** -You can copy over configs to your config from the Heidelpay's module `config.dist.php` file. -The most important configuration items are explained in the table below, make sure to get the required configuration items from Heidelpay: - -| Configuration key* | Description | Obtained from Heidelpay? | Value for debugging | -| --- | --- | --- | --- | -| `CONFIG_HEIDELPAY_SECURITY_SENDER` | Hash which is needed for making requests to Heidelpay payment system | Yes | See "Authentifizierungsdaten" section in `https://dev.heidelpay.de/sandbox-environment`| -| `CONFIG_HEIDELPAY_USER_LOGIN` | Merchant login to the Heidelpay payment system | Yes | See "Authentifizierungsdaten" section in `https://dev.heidelpay.de/sandbox-environment`| -| `CONFIG_HEIDELPAY_USER_PASSWORD` | Merchant password to the Heidelpay payment system | Yes | See "Authentifizierungsdaten" section in `https://dev.heidelpay.de/sandbox-environment` | -| `CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_[YOUR_CHANNEL_NAME]**` | Transaction channel hash used for specified payment method in Heidelpay payment system, necessary for making API requests. | Yes | See "Authentifizierungsdaten" section for each payment method in `https://dev.heidelpay.de/sandbox-environment` | -| `CONFIG_HEIDELPAY_APPLICATION_SECRET` | Internal secret key, used by Heidelpay to "sign" API requests | Recommended | `debug_secret` | -| `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL` | A response URL used by Heidelpay to send Payment results to the system when the order is made. Make sure it is accessible from outside! | No | If your dev (staging/whatever) system is not accessible from outside, see "Usage from localhost" section below to figure out how to debug the system when developing locally. | -| `CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL` | A response URL used by Secure Credit Card payment method on the payment step of the checkout. Heidelpay payment system will use it to send asynchronous credit card registration response. | No | If your dev (staging/whatever) system is not accessible from outside, see "Usage from localhost" section below to figure out how to debug the system when developing locally. | -Configuration keys are used as follows: `$config[HeidelpayConstants::CONFIGURATION_KEY_HERE] = 'CONFIGURATION VALUE HERE'`
-** Repeat this configuration for each payment method you're going to use.
-
-Based on the payment methods you're going to use, remove unnecessary processes from `OmsConstants::ACTIVE_PROCESSES` and `SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING`. Please see example of the configuration below: -```php -// Navigation -$YVES_HOST_PROTOCOL = 'http'; - -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUCCESS_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/checkout/success'; -$config[HeidelpayConstants::CONFIG_YVES_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES]; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FAILED_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/payment-failed?error_code=%s'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_IDEAL_AUTHORIZE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/ideal-authorize'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUMMARY_STEP_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/checkout/summary'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/cc-register-response'; - -// Error handling -$config[ErrorHandlerConstants::DISPLAY_ERRORS] = true; -$config[ErrorHandlerConstants::ERROR_RENDERER] = WebExceptionErrorRenderer::class; - -// Heidelpay API -$config[HeidelpayConstants::CONFIG_HEIDELPAY_SECURITY_SENDER] = 'CONFIG_HEIDELPAY_SECURITY_SENDER'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_USER_LOGIN] = 'CONFIG_HEIDELPAY_USER_LOGIN'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_USER_PASSWORD] = 'CONFIG_HEIDELPAY_USER_PASSWORD'; - -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_CC_3D_SECURE] = 'CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_CC_3D_SECURE'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = 'CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = 'CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_SOFORT] = 'CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_SOFORT'; - -// Shop configuration values -$config[HeidelpayConstants::CONFIG_HEIDELPAY_APPLICATION_SECRET] = 'application_secret'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_SANDBOX_REQUEST] = true; - -$config[HeidelpayConstants::CONFIG_HEIDELPAY_LANGUAGE_CODE] = 'DE'; -$config[HeidelpayConstants::CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/payment'; - -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUCCESS_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/checkout/success'; -$config[HeidelpayConstants::CONFIG_YVES_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES]; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FAILED_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/payment-failed?error_code=%s'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_IDEAL_AUTHORIZE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/ideal-authorize'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_STEP_PATH] = '/checkout/payment'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_SUMMARY_STEP_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/checkout/summary'; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/cc-register-response'; - -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FRAME_CUSTOM_CSS_URL] = ''; -$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_PAYMENT_FRAME_PREVENT_ASYNC_REDIRECT] = "FALSE"; -$config[HeidelpayConstants::CONFIG_ENCRYPTION_KEY] = "encryption_key"; - -// Heidelpay Split-payment marketplace logic -$config[HeidelpayConstants::CONFIG_IS_SPLIT_PAYMENT_ENABLED_KEY] = true; -``` -**Add dependencies to `src/Pyz/Yves/Checkout/CheckoutDependencyProvider.php`:** - -```php -class CheckoutDependencyProvider extends SprykerCheckoutDependencyProvider -{ -... - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function providePlugins(Container $container) -... - return $pimplePlugin->getApplication(); - }; - -+ $container[static::PAYMENT_SUB_FORMS] = function () { -+ $paymentSubFormPlugin = new SubFormPluginCollection(); -+ -+ $paymentSubFormPlugin->add(new HeidelpaySofortSubFormPlugin()); -+ $paymentSubFormPlugin->add(new HeidelpayPaypalAuthorizeSubFormPlugin()); -+ $paymentSubFormPlugin->add(new HeidelpayPaypalDebitSubFormPlugin()); -+ $paymentSubFormPlugin->add(new HeidelpayIdealSubFormPlugin()); -+ $paymentSubFormPlugin->add(new HeidelpayEasyCreditSubFormPlugin()); -+ $paymentSubFormPlugin->add(new HeidelpayCreditCardSecureSubFormPlugin()); -+ return $paymentSubFormPlugin; -+ }; -+ $container[static::PAYMENT_METHOD_HANDLER] = function () { -+ $paymentMethodHandler = new StepHandlerPluginCollection(); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_SOFORT); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_PAYPAL_AUTHORIZE); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_PAYPAL_DEBIT); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_IDEAL); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_EASY_CREDIT); -+ $paymentMethodHandler->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_CREDIT_CARD_SECURE); -+ -+ return $paymentMethodHandler; -+ }; -+ return $container; } -+ -+ -``` - -**Add dependency to `src/Pyz/Zed/Oms/OmsDependencyProvider.php`:** - -```php - - class OmsDependencyProvider extends SprykerOmsDependencyProvider - { - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - public function provideBusinessLayerDependencies(Container $container) -... - -+ -+ $container->extend(static::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { -+ $conditionCollection -+ ->add(new IsAuthorizationCompletedPlugin(), 'Heidelpay/IsAuthorizationCompleted') -+ ->add(new IsDebitCompletedPlugin(), 'Heidelpay/IsDebitCompleted') -+ ->add(new IsCaptureApprovedPlugin(), 'Heidelpay/IsCaptureApproved'); -+ -+ -+ return $conditionCollection; -+ }); -+ -+ $container->extend(static::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { -+ $commandCollection -+ ->add(new AuthorizePlugin(), 'Heidelpay/Authorize') -+ ->add(new DebitPlugin(), 'Heidelpay/Debit') -+ ->add(new CapturePlugin(), 'Heidelpay/Capture'); -+ return $commandCollection; -+ }); -+ - return $container; - } - ``` -In case of need to use marketplace integration, you should extend product with the additional field Heidelpay Item Channel Id, before order will be placed. For example, setting your Heidelpay Item Channel ID can look like: - -```php -... -$product->setHeidelpayItemChannelId('........'); -``` - -**Add dependencies to `src/Pyz/Zed/Payment/PaymentDependencyProvider.php`:** - -```php -... - -+class PaymentDependencyProvider extends SprykerPaymentDependencyProvider -+{ -+ -+ -+ public function provideBusinessLayerDependencies(Container $container) -+ { -+ $container = parent::provideBusinessLayerDependencies($container); -+ $container->extend(static::CHECKOUT_PLUGINS, function (CheckoutPluginCollection $pluginCollection) { -+ $pluginCollection->add(new HeidelpaySaveOrderPlugin(), HeidelpayConfig::PROVIDER_NAME, PaymentDependencyProvider::CHECKOUT_ORDER_SAVER_PLUGINS); -+ $pluginCollection->add(new HeidelpayPostSavePlugin(), HeidelpayConfig::PROVIDER_NAME, PaymentDependencyProvider::CHECKOUT_POST_SAVE_PLUGINS); -+ return $pluginCollection; -+ }); -+ -+ -+ } -+} -``` - -**Add Heidelpay's controller provider to the Yve's bootstrap:** - -```php... -use SprykerEco\Yves\Heidelpay\Plugin\Provider\HeidelpayControllerProvider; -  -class YvesBootstrap -{ -... -protected function getControllerProviderStack($isSsl) -{ - return [ - ... - new HeidelpayControllerProvider($isSsl), - ]; -} -... -``` - -**Setup database and DTOs** -The Heidelpay-Bundle will integrate 3 new tables to your database scheme. Make sure that you integrate them in accordance with your project migration guideline. (e.g. run console `propel:diff` to see the migrations needed). - -```php -console propel:diff && console propel:migrate && console propel:model:build -``` - -You also have to genreate data transfer objects which is related with Heidelpay - -```php -console tr:ge -``` -**Change payment step template** -Change the following lines to change behavior on the payment selection step: - -```php -+++ b/src/Pyz/Yves/Checkout/Theme/default/checkout/payment.twig -@@ -11,22 +11,17 @@ - -
-
    -- {% raw %}{%{% endraw %} for name, choices in paymentForm.paymentSelection.vars.choices {% raw %}%}{% endraw %} -- --

    {% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}

    -- -- {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} --
  •   -- {% raw %}{{{% endraw %} form_widget(paymentForm.paymentSelection[key], {'attr': {'class': '__toggler'{% raw %}}}{% endraw %}) {% raw %}}}{% endraw %} -- {% raw %}{{{% endraw %} form_label(paymentForm.paymentSelection[key]) {% raw %}}}{% endraw %} --
    --
    -- {% raw %}{{{% endraw %} checkout.include_subform(paymentForm[paymentForm.paymentSelection[key].vars.value]) {% raw %}}}{% endraw %} --
    -+ {% raw %}{%{% endraw %} for method in paymentForm.paymentSelection {% raw %}%}{% endraw %} -+
  • -+ {% raw %}{{{% endraw %} form_widget(method, {'attr': {'class': '__toggler'{% raw %}}}{% endraw %}) {% raw %}}}{% endraw %} -+ {% raw %}{{{% endraw %} form_label(method) {% raw %}}}{% endraw %} -+
    -+
    -+ {% raw %}{{{% endraw %} checkout.include_subform(paymentForm[method.vars.value]) {% raw %}}}{% endraw %} -
    --
  • -- {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -- -+ {% raw %}{%{% endraw %} if not loop.last {% raw %}%}{% endraw %}
    {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -+
-+ - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - - -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay.md deleted file mode 100644 index 1bf867ead24..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-heidelpay.md +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: Integrating Heidelpay -description: This article contains information on integrating the Heidelpay module into the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-integration-scos -originalArticleId: ce209305-e134-4942-9caa-0881a56b8385 -redirect_from: - - /v1/docs/heidelpay-integration-scos - - /v1/docs/en/heidelpay-integration-scos - - /docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -To integrate Heidelpay, follow the steps below: - -## Back-end Integration - -1. Add sub form plugins and payment method handlers: - -
-Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider - -```php - protected function addSubFormPluginCollection(Container $container): Container -{ - $container[self::PAYMENT_SUB_FORMS] = function () { - $subFormPluginCollection = new SubFormPluginCollection(); - ... - $subFormPluginCollection->add(new HeidelpaySofortSubFormPlugin()); - $subFormPluginCollection->add(new HeidelpayPaypalAuthorizeSubFormPlugin()); - $subFormPluginCollection->add(new HeidelpayPaypalDebitSubFormPlugin()); - $subFormPluginCollection->add(new HeidelpayIdealSubFormPlugin()); - $subFormPluginCollection->add(new HeidelpayCreditCardSecureSubFormPlugin()); - - return $subFormPluginCollection; - }; - - return $container; -} - -protected function addPaymentMethodHandlerPluginCollection(Container $container): -{ - $container[self::PAYMENT_METHOD_HANDLER] = function () { - $stepHandlerPluginCollection = new StepHandlerPluginCollection(); - ... - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_SOFORT); - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_PAYPAL_AUTHORIZE); - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_PAYPAL_DEBIT); - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_IDEAL); - $stepHandlerPluginCollection->add(new HeidelpayCreditCardHandlerPlugin(), PaymentTransfer::HEIDELPAY_CREDIT_CARD_SECURE); - - return $stepHandlerPluginCollection; - }; - - return $container; -} -``` -
-
- -2. Add controller provider: - -
-\Pyz\Yves\ShopApplication\YvesBootstrap - - ```php - protected function getControllerProviderStack($isSsl) -{ - return [ - ... - new HeidelpayControllerProvider($isSsl), - ];> -} -``` -
-
- -3. Add checkout plugins: - -
-\Pyz\Zed\Checkout\CheckoutDependencyProvider - -```php - protected function getCheckoutOrderSavers(Container $container) -{ - $plugins = [ - ... - new HeidelpaySaveOrderPlugin(), - ]; - - return $plugins; -} - -protected function getCheckoutPostHooks(Container $container) -{ - return [ - ... - new HeidelpayPostSavePlugin(), - ]; -} -``` -
-
- -4. Add OMS commands and conditions: - -
-\Pyz\Zed\Oms\OmsDependencyProvider - -```php -public function provideBusinessLayerDependencies(Container $container) -{ - $container = parent::provideBusinessLayerDependencies($container); - $container = $this->addCommandPlugins($container); - $container = $this->addConditionPlugins($container); - - return $container; -} -protected function addConditionPlugins(Container $container): Container -{ - $container[self::CONDITION_PLUGINS] = function () { - $conditionCollection = new ConditionCollection(); - $conditionCollection->add(new IsAuthorizationCompletedPlugin(), 'Heidelpay/IsAuthorizationCompleted'); - $conditionCollection->add(new IsDebitCompletedPlugin(), 'Heidelpay/IsDebitCompleted'); - $conditionCollection->add(new IsCaptureApprovedPlugin(), 'Heidelpay/IsCaptureApproved'); - - return $conditionCollection; - }; - - return $container; -} - -protected function addCommandPlugins(Container $container): Container -{ - $container[self::COMMAND_PLUGINS] = function () { - $commandCollection = new CommandCollection(); - $commandCollection->add(new SendOrderConfirmationPlugin(), 'Oms/SendOrderConfirmation'); - $commandCollection->add(new SendOrderShippedPlugin(), 'Oms/SendOrderShipped'); - $commandCollection->add(new AuthorizePlugin(), 'Heidelpay/Authorize'); - $commandCollection->add(new DebitPlugin(), 'Heidelpay/Debit'); - $commandCollection->add(new CapturePlugin(), 'Heidelpay/Capture'); - - return $commandCollection; - }; - - return $container; -} -``` -
-
- -## Front-end Integration - -To make Heidelpay module work with your project, it's necessary to extend the frontend part: - -
-tsconfig.json - - ```json - "include": [ - "./vendor/spryker/spryker-shop/**/*", - "./vendor/spryker-eco/**/*", - "./src/Pyz/Yves/**/*" -], -``` -
-
- - -
-frontend/settings.js - - ```bash - // eco folders -eco: { - // all modules - modules: './vendor/spryker-eco' -}, -... - componentEntryPoints: { - // absolute dirs in which look for - dirs: [ - ... - path.join(context, paths.eco.modules), - ... - ], - ``` -
-
- -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - - ```twig - ... - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.payment, - options: { - attr: { - id: 'payment-form' - } - }, - submit: { - enable: true, - text: 'checkout.step.summary' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - } - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set paymentProviderIndex = loop.index {% raw %}%}{% endraw %} -
{% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
-
    - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - enableStart: false, - enableEnd: false - }, - embed: { - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[key] - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set paymentProviderIndex = (loop.index0) {% raw %}%}{% endraw %} -
    {% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
    -
      - {% raw %}{%{% endraw %} if choices is iterable {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
    • - {% raw %}{%{% endraw %} include molecule('payment-method', 'CheckoutPage') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[key], - } - } only {% raw %}%}{% endraw %} -
    • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} -
    • - {% raw %}{%{% endraw %} include molecule('payment-method', 'CheckoutPage') with { - data: { - form: data.form[data.form.paymentSelection[paymentProviderIndex].vars.value], - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[paymentProviderIndex], - parentFormId: data.options.attr.id - } - } only {% raw %}%}{% endraw %} -
    • - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -
    - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -
-src/Pyz/Yves/Twig/TwigConfig.php - - ```twig - protected function addCoreTemplatePaths(array $paths) -{ - ... - $paths[] = APPLICATION_VENDOR_DIR . '/spryker-eco/%1$s/src/SprykerEco/Yves/%1$s/Theme/' . $themeName; - - return $paths; -} -``` -
-
diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.md deleted file mode 100644 index 328ec73792d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Integrating the Credit Card Secure payment method for Heidelpay -description: Integrate Credit Card payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-credit-card -originalArticleId: 1c3457b3-f494-4499-802a-cac40c41f96a -redirect_from: - - /v1/docs/heidelpay-credit-card - - /v1/docs/en/heidelpay-credit-card -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -## Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/configuring-heidelpay.html). - -## Configuration - -Example (for testing only): -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = '31HA07BC8142C5A171744B56E61281E5'; -+$config[HeidelpayConstants::CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL] = $YVES_HOST_PROTOCOL . '://' . $config[ApplicationConstants::HOST_YVES] . '/heidelpay/cc-register-response'; -``` - -This value should be taken from HEIDELPAY - -## Registration Concept - -Payment flow with credit card is divided into two workflows - based on the existing "Registration" and without/with the new "Registration". **"Registration"** means that customer's **anonymized** credit card data will be persisted in the database in order to use it again next time, if customer **uses the same shipping address**. The idea is visually represented in the image below: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Heidelpay/Heidelpay+-+Credit+Card+Secure/9241664.png) - -## Checkout Payment Step Display - -With the credit card, two payment options are possible - using the already existing - registration (if available) or creating a new registration (always available) with the payment frame. `CreditCardSecureDataProvider` in Yves is responsible for that (`getOptions()` method). It makes a request into Zed in order to get available payment options, available for the current quote.  - -* Payment option - "new registration". The new credit card registration is done inside of the iframe* on the payment step. To be able to display the iframe, Zed makes a "registration" request for the current quote each time customer accesses the payment step. Iframe URL is generated by Heidelpay for one-time usage. Iframe will contain the standard form for entering credit card data. 
- -{% info_block errorBox "Attention" %} -Please note that iframe doesn't have a submit button, it will be submitted with javascript when customer submits the payment step. -{% endinfo_block %} - -* Payment option - "last successful registration". Zed will try to find an existing registration for current customer, based on the used shipping address ID (so it's available only for the registered customer). If one is found, then it will be added as a payment option. It contains anonymized credit card data and should be displayed as in the image in the [Registration Concept](#registration-concept) section. Each registration has it's "registration number" hash, which is then used to authorize money on the customer's credit card. - -* for security reasons, merchant is not allowed (or has to obtain a - special permit) to process/store credit card data directly on it's website. - -Each payment option has its own template. You can find and customize it under - `Yves/Theme/default/credit-card/`. - -## Payment Step Submitting - -* When customer chooses a new registration (fills in the payment form in the iframe) and clicks "Go To Summary" button, data inside the payment iframe will be serialised and sent as a POST request to Heidelpay payment system*. Heidelpay then processes the request and sends asynchronous POST request to the shop's `CONFIG_YVES_CHECKOUT_ASYNC_RESPONSE_URL` in Yves (`CreditCardController::registrationRequestAction`). This request will contain an anonymized customer credit card data and registration number (hash). This data will be persisted in Zed for future customer recognition and for the next step. In response, Heidelpay expects to get a plain URL where to redirect customer. In case of failure it is `HeidelpayController::paymentFailedAction()`, and in case of success - `CreditCardController::registrationSuccessAction()`. `RegistrationSuccessAction()` will find customer registration (through Zed) and set it to quote. Then customer is redirected to summary page** -* When customer chooses the existing registration, it is simply set to quote and customer goes to summary step as usual. - -* This javascript behavior can be found and customized under - `assets/Yves/js/modules/creditCardFrame.js` file.
-
** This overhead with payment->registrationRequest->registrationSuccess->summary is necessary, because `registrationRequest` is called asynchronously from the outside, where customer session is not available. Later on, `registrationSuccess` action is called already where customer session is available, so we can add registration to quote there. - -## Summary Review and Order Submitting - -On the review page, it might be necessary to display customer registration details (like anonymised credit card data, etc). For that use `Yves/Heidelpay/Theme/default/partial/summary.twig` as a reference and include it to your summary page template. - -On "save order" event save Heidelpay payment per order and items, as usual. - -When state machine is initialized, an event "send - authorize request" will trigger the authorize request. In case of success, the payment system will return a redirect URL for customer, where the payment can be completed. Request and response will be fully persisted in the database (`spy_payment_heidelpay_transaction_log`).  - -On "post save hook" event, we check in transaction log table if the authorize request was sent successfully and if so, we set external redirect response (URL is obtained from the previous step) and redirect the customer to the payment website, where customer confirms the payment using 3D secure validation and so on. Below is the code sample from `HeidelpayPostSavePlugin`: - -``` -/** - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayFacadeInterface getFacade() - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayBusinessFactory getFactory() - */ -class HeidelpayPostSavePlugin extends BaseAbstractPlugin implements CheckoutPostCheckPluginInterface -{ - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer - * - * @return void - */ - public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) - { - $this->getFacade()->postSaveHook($quoteTransfer, $checkoutResponseTransfer); - } -} -``` - -On payment confirmation, response is sent to the Heidelpay and Heidelpay makes an asynchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL` - URL (Yves), with the result of payment (see `HeidelpayController::paymentAction()`). This is called "external response transaction", the result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. - - The most important data here - is the payment reference ID which can be used for further transactions like capture/cancel/etc.  - -In the response Heidelpay expects an URL string which defines where customer has to be redirected. In case if customer successfully confirmed payment, it should be a link to checkout order success step, in case of failure - checkout payment failed action with error code (See See `HeidelpayController::paymentFailedAction()` and [Heidelpay workflow for errors](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html) section). Heidelpay redirects customer to the given URL and payment process is finished.  - -Capture the money - later on, when the item is shipped to the customer, it is time to call "capture" command of the state machine to capture money from the customer's account. It is done in CapturePlugin of the OMS command. In the provided basic order state machine for `CreditCardSecureAuthorize` method, command will be executed automatically, when order is manually moved into the "shipped" state. Now order can be considered as "paid". diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.md deleted file mode 100644 index 4be19ca2763..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.md +++ /dev/null @@ -1,435 +0,0 @@ ---- -title: Integrating the Direct Debit payment method for Heidelpay -description: Integrate direct debit payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/integrating-the-direct-debit-payment-method-for-heidelpay.html -originalArticleId: cba54b1e-33a2-4456-83cf-bd11447f14df -redirect_from: - - /v1/docs/integrating-the-direct-debit-payment-method-for-heidelpay.html - - /v1/docs/en/integrating-the-direct-debit-payment-method-for-heidelpay.html -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html - - title: Integrating the Invoice Secured B2C payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.html ---- - -## Setup -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -## Configuration -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_DIRECT_DEBIT] = ''; //You can use public test account for testing with channel `31HA07BC8142C5A171749A60D979B6E4` but replace it with real one when you go live. Config should be taken from Heidelpay. -$config[HeidelpayConstants::DIRECT_DEBIT_REGISTRATION_ASYNC_RESPONSE_URL] = $config[HeidelpayConstants::CONFIG_YVES_URL] . '/heidelpay/dd-register-response'; // This setting is store sensitive and should be set in store related config (config_default_DE.php for example). - -$config[OmsConstants::PROCESS_LOCATION] = [ - ... - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/heidelpay/config/Zed/Oms', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'HeidelpayDirectDebit01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - ... -HeidelpayConfig::PAYMENT_METHOD_DIRECT_DEBIT => 'HeidelpayDirectDebit01', -]; -``` -## The Process of a Direct Debit Account Registration -Payment flow with direct debit is divided into two workflows - based on the new "Registration," and without/with the existing "Registration." Existing "Registration" means that customer's bank account data (IBAN, Account Holder and so on) will be persisted in the database to use it again next time if customer uses the same shipping address. Otherwise, use the new "Registration" option. - -When you go to the checkout payment page and choose the DirectDebit payment method, there are two payment options - to use the already existing registration (if available) or to create a new registration (always available) with the two fields IBAN and Account Holder. Existing registration is available only for registered customer after he placed an order with DirectDebit payment method, and he uses the same shipping address. - -## Integration into Project -All general integration parts of Heidelpay module should be done before the following steps. - -1. Adjust `CheckoutPageDependencyProvider` on project level to add Direct Debit subform and payment method handler. Also, add `HeidelpayClient` into dependencies. It's used in specific `DirectDebitRegistration` checkout step. - -
-\Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider - -```php -extendSubFormPluginCollection($container); - $container = $this->extendPaymentMethodHandler($container); - $container = $this->addHeidelpayClient($container); - - return $container; - } - - ... - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendSubFormPluginCollection(Container $container): Container - { - $container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $subFormPluginCollection) { - ... - $subFormPluginCollection->add(new HeidelpayDirectDebitSubFormPlugin()); - - return $subFormPluginCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendPaymentMethodHandler(Container $container): Container - { - $container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $stepHandlerPluginCollection) { - ... - $stepHandlerPluginCollection->add(new HeidelpayDirectDebitHandlerPlugin(), HeidelpayConfig::PAYMENT_METHOD_DIRECT_DEBIT); - - return $stepHandlerPluginCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addHeidelpayClient(Container $container): Container - { - $container[static::CLIENT_HEIDELPAY] = function () use ($container) { - return $container->getLocator()->heidelpay()->client(); - }; - - return $container; - } -} -``` -
-
- -2. Extend `StepFactory` on project level to add specific `DirectDebitRegistration` checkout step. This step should be included right before the Payment step. - -
-\Pyz\Yves\CheckoutPage\Process\StepFactory - -```php -getUrlGenerator(), - CheckoutPageControllerProvider::CHECKOUT_ERROR - ); - - $stepCollection - ->addStep($this->createEntryStep()) - ->addStep($this->createCustomerStep()) - ->addStep($this->createAddressStep()) - ->addStep($this->createShipmentStep()) - ->addStep($this->createHeidelpayDirectDebitRegistrationStep()) - ->addStep($this->createPaymentStep()) - ->addStep($this->createSummaryStep()) - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createSuccessStep()); - - return $stepCollection; - } - - /** - * @return \Spryker\Yves\StepEngine\Dependency\Step\StepInterface - */ - public function createHeidelpayDirectDebitRegistrationStep(): StepInterface - { - return new HeidelpayDirectDebitRegistrationStep( - CheckoutPageControllerProvider::CHECKOUT_HEIDELPAY_DIRECT_DEBIT_REGISTRATION, - HomePageControllerProvider::ROUTE_HOME, - $this->getHeidelpayClient() - ); - } - - /** - * @return \SprykerEco\Client\Heidelpay\HeidelpayClientInterface - */ - public function getHeidelpayClient(): HeidelpayClientInterface - { - return $this->getProvidedDependency(CheckoutPageDependencyProvider::CLIENT_HEIDELPAY); - } -} -``` -
-
- -3. Extend Yves Factory to create `StepFactory` from project level instead of Spryker Core. - -
-\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
- -4. Extend `CheckoutController` on the project level to add an action for direct debit registration step. - -
-\Pyz\Yves\CheckoutPage\Controller\CheckoutController - -```php -createStepProcess()->process($request); - } -} -``` -
-
- -5. Extend `CheckoutPageControllerProvider` to register controller action described above. - -
-\Pyz\Yves\CheckoutPage\Controller\CheckoutController - -```php -addDirectDebitRegistrationRoute(); - } - - /** - * @return $this - */ - protected function addDirectDebitRegistrationRoute() - { - $this->createController( - '/{checkout}/integrating-the-direct-debit-payment-method-for-heidelpay.html-registration', - static::CHECKOUT_HEIDELPAY_DIRECT_DEBIT_REGISTRATION, - 'CheckoutPage', - 'Checkout', - 'heidelpayDirectDebitRegistration' - ) - ->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); - - return $this; - } -} -``` -
-
- -6. Adjust define data section in the template of Checkout Payment step to include DirectDebit payment method template. - -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - -```twig -... -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - - title: 'checkout.step.payment.title' | trans, - customForms: { - ... - 'heidelpay/direct-debit': ['direct-debit', 'heidelpay'], - } -} {% raw %}%}{% endraw %} -... -``` -
-
- -7. Adjust `OmsDependencyProvider` to add debit on registration and refund OMS commands and conditions related to it. - -
-\Pyz\Zed\Oms\OmsDependencyProvider - -```php -extendCommandPlugins($container); - $container = $this->extendConditionPlugins($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendCommandPlugins(Container $container): Container - { - $container->extend(self::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - ... - $commandCollection->add(new DebitOnRegistrationPlugin(), 'Heidelpay/DebitOnRegistration'); - $commandCollection->add(new RefundPlugin(), 'Heidelpay/Refund'); - - return $commandCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendConditionPlugins(Container $container): Container - { - $container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - ... - $conditionCollection->add(new IsDebitOnRegistrationCompletedPlugin(), 'Heidelpay/IsDebitOnRegistrationCompleted'); - $conditionCollection->add(new IsRefundedPlugin(), 'Heidelpay/IsRefunded'); - - return $conditionCollection; - }); - - return $container; - } -} -``` -
-
- -## OMS State Machine -You can find an example of DirectDebit state machine in `vendor/spryker-eco/heidelpay/config/Zed/Oms/HeidelpayDirectDebit01.xml` - -The state machine includes two main processes: **Debit on Registration** and **Refund**. After the order is placed successfully, the debit process starts. In this process, we use the identification of direct debit registration. In case of return order refund process is used. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.md deleted file mode 100644 index 5806feb7c60..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.md +++ /dev/null @@ -1,588 +0,0 @@ ---- -title: Integrating the Easy Credit payment method for Heidelpay -description: Integrate easy credit payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-easy-credit -originalArticleId: 03361db6-2987-44fd-8d92-54adb1d571ea -redirect_from: - - /v1/docs/heidelpay-easy-credit - - /v1/docs/en/heidelpay-easy-credit -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Invoice Secured B2C payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.html ---- - -## Setup - -The following configuration should be implemented after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -## Configuration - -| Configuration Key | Type | Description | -| --- | --- | --- | -| `HeidelpayConstants::CONFIG_HEIDELPAY_EASYCREDIT_CRITERIA_REJECTED_DELIVERY_ADDRESS` | string | Criteria to reject by delivery address (for example 'Packstation') | -| `HeidelpayConstants::CONFIG_HEIDELPAY_EASYCREDIT_CRITERIA_GRAND_TOTAL_LESS_THAN` | int | Criteria to reject if grand total less than (for example 200) | -| `HeidelpayConstants::CONFIG_HEIDELPAY_EASYCREDIT_CRITERIA_GRAND_TOTAL_MORE_THAN` | int | Criteria to reject if grand total greater than (for example 5000) | -| `HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_EASY_CREDIT` | string | Transaction channel for Easy Credit payment method (provided by Heidelpay) | - -1. Activate Heidelpay Easycredit payment method. -
-OMS Configuration - -```php -$config[OmsConstants::PROCESS_LOCATION] = [ - ... - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/heidelpay/config/Zed/Oms', -]; -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'HeidelpayEasyCredit01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - ... - HeidelpayConfig::PAYMENT_METHOD_EASY_CREDIT => 'HeidelpayEasyCredit01', -]; -``` -
-
- -2. Add Easycredit checkout steps to `StepFactory`. -
-\Pyz\Yves\CheckoutPage\Process\StepFactory - -```php -getUrlGenerator(), - CheckoutPageControllerProvider::CHECKOUT_ERROR - ); - - $stepCollection - ->addStep($this->createEntryStep()) - ->addStep($this->createCustomerStep()) - ->addStep($this->createAddressStep()) - ->addStep($this->createShipmentStep()) - ->addStep($this->createHeidelpayEasyCreditInitializeStep()) - ->addStep($this->createPaymentStep()) - ->addStep($this->createHeidelpayEasyCreditStep()) - ->addStep($this->createSummaryStep()) - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createSuccessStep()); - - return $stepCollection; - } - - /** - * @return \SprykerEco\Yves\Heidelpay\CheckoutPage\Process\Steps\HeidelpayEasycreditInitializeStep - */ - public function createHeidelpayEasyCreditInitializeStep(): HeidelpayEasycreditInitializeStep - { - return new HeidelpayEasycreditInitializeStep( - CheckoutPageControllerProvider::CHECKOUT_EASYCREDIT_INITIALIZE, - HomePageControllerProvider::ROUTE_HOME, - $this->getHeidelpayClient() - ); - } - - /** - * @return \SprykerEco\Yves\Heidelpay\CheckoutPage\Process\Steps\HeidelpayEasycreditStep - */ - public function createHeidelpayEasyCreditStep(): HeidelpayEasycreditStep - { - return new HeidelpayEasycreditStep( - CheckoutPageControllerProvider::CHECKOUT_EASYCREDIT, - HomePageControllerProvider::ROUTE_HOME - ); - } - - /** - * @return \SprykerEco\Client\Heidelpay\HeidelpayClientInterface - */ - public function getHeidelpayClient(): HeidelpayClientInterface - { - return $this->getProvidedDependency(CheckoutPageDependencyProvider::CLIENT_HEIDELPAY); - } -} -``` -
-
- -3. Extend `CheckoutPageFactory` to change step factory creation: -
-\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
- -4. Extend `CheckoutController` to add `Easycredit` step action: -
-\Pyz\Yves\CheckoutPage\Controller\CheckoutController - -```php -createStepProcess()->process($request); - } -} -``` -
-
- -5. Extend `CheckoutPageControllerProvider` to add `Easycredit` actions: -
-\Pyz\Yves\CheckoutPage\Plugin\Provider\CheckoutPageControllerProvider - -```php -addCheckoutEasycreditRoute(); - } - - /** - * @return $this - */ - protected function addCheckoutEasycreditRoute() - { - $this->createController( - '/{checkout}/easycredit', - self::CHECKOUT_EASYCREDIT, - 'CheckoutPage', - 'Checkout', - 'easyCredit' - ) - ->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); - - $this->createController( - '/{checkout}/easycredit-initialize', - self::CHECKOUT_EASYCREDIT_INITIALIZE, - 'CheckoutPage', - 'Checkout', - 'easyCredit' - ) - ->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); - - return $this; - } -} -``` -
-
- -6. Update `CheckoutPageDependencyProvider` with `Easycredit` related modifications: -
-\Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider - -```php -addHeidelpayClient($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addSubFormPluginCollection(Container $container): Container - { - $container[self::PAYMENT_SUB_FORMS] = function () { - $subFormPluginCollection = new SubFormPluginCollection(); - ... - $subFormPluginCollection->add(new HeidelpayEasyCreditSubFormPlugin()); - - return $subFormPluginCollection; - }; - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addPaymentMethodHandlerPluginCollection(Container $container): Container - { - $container[self::PAYMENT_METHOD_HANDLER] = function () { - $stepHandlerPluginCollection = new StepHandlerPluginCollection(); - ... - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), PaymentTransfer::HEIDELPAY_EASY_CREDIT); - - return $stepHandlerPluginCollection; - }; - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addHeidelpayClient(Container $container): Container - { - $container[static::CLIENT_HEIDELPAY] = function () use ($container) { - return $container->getLocator()->heidelpay()->client(); - }; - - return $container; - } -} -``` -
-
- -7. Update `payment.twig` template with `Easycredit` payment method: -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - -```html -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - - title: 'checkout.step.payment.title' | trans, - customForms: { - ... - 'heidelpay/easy-credit': ['easy-credit', 'heidelpay'], - } -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - ... -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -8. Update `summary.twig` to template to display `Easycredit` related fees: -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - -```html -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - transfer: _view.quoteTransfer, - cartItems: _view.cartItems, - shippingAddress: _view.quoteTransfer.shippingAddress, - billingAddress: _view.quoteTransfer.billingAddress, - shipmentMethod: _view.quoteTransfer.shipment.method.name, - paymentMethod: _view.quoteTransfer.payment.paymentMethod, - heidelpayEasyCredit: _view.quoteTransfer.payment.heidelpayEasyCredit | default(null), - - forms: { - summary: _view.summaryForm - }, - - overview: { - shipmentMethod: _view.quoteTransfer.shipment.method.name, - expenses: _view.quoteTransfer.expenses, - voucherDiscounts: _view.quoteTransfer.voucherDiscounts, - cartRuleDiscounts: _view.quoteTransfer.cartRuleDiscounts, - - prices: { - subTotal: _view.quoteTransfer.totals.subtotal, - storeCurrency: _view.quoteTransfer.shipment.method.storeCurrencyPrice, - grandTotal: _view.quoteTransfer.totals.grandtotal, - tax: _view.quoteTransfer.totals.taxtotal.amount, - discountTotal: _view.quoteTransfer.totals.discounttotal | default - } - }, - - title: 'checkout.step.summary.title' | trans -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-
-
- {% raw %}{{{% endraw %} 'checkout.step.summary.with_method' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %}data.paymentMethod{% raw %}}}{% endraw %} -
{% raw %}{{{% endraw %} 'checkout.step.summary.payment' | trans {% raw %}}}{% endraw %}
-
- {% raw %}{%{% endraw %} if data.heidelpayEasyCredit is not null {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} data.heidelpayEasyCredit.amortisationText {% raw %}}}{% endraw %} - -
-
-
    -
  • {% raw %}{{{% endraw %} 'heidelpay.payment.easy_credit.order_total' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.totalOrderAmount | money {% raw %}}}{% endraw %}
  • -
  • {% raw %}{{{% endraw %} 'heidelpay.payment.easy_credit.interest' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.accruingInterest | money {% raw %}}}{% endraw %}
  • -
  • {% raw %}{{{% endraw %} 'heidelpay.payment.easy_credit.total_inc_interest' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.totalAmount | money {% raw %}}}{% endraw %}
  • -
-
- {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} include molecule('display-address') with { - class: 'text-small', - data: { - address: data.billingAddress - } - } only {% raw %}%}{% endraw %} -
- -
- {% raw %}{{{% endraw %} 'checkout.step.summary.with_method' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} data.shipmentMethod {% raw %}}}{% endraw %} -
{% raw %}{{{% endraw %} 'checkout.step.summary.shipping' | trans {% raw %}}}{% endraw %}
-
- - {% raw %}{%{% endraw %} include molecule('display-address') with { - class: 'text-small', - data: { - address: data.shippingAddress - } - } only {% raw %}%}{% endraw %} -
-
- -
-
- {% raw %}{%{% endraw %} for item in data.cartItems {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set item = item.bundleProduct is defined ? item.bundleProduct : item {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('summary-item', 'CheckoutPage') with { - data: { - name: item.name, - quantity: item.quantity, - price: item.sumPrice | money, - options: item.productOptions | default({}), - bundleItems: item.bundleItems | default([]), - quantitySalesUnit: item.quantitySalesUnit, - amountSalesUnit: item.amountSalesUnit, - amount: item.amount - }, - embed: { - isLast: not loop.last, - item: item - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %}parent(){% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} if widgetExists('CartNoteQuoteItemNoteWidgetPlugin') {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if embed.item.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} widget('CartNoteQuoteItemNoteWidgetPlugin', embed.item) {% raw %}}}{% endraw %} {# @deprecated Use molecule('note-list', 'CartNoteWidget') instead. #} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elseif embed.item.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('note-list', 'CartNoteWidget') ignore missing with { - data: { - label: 'cart_note.checkout_page.item_note', - note: embed.item.cartNote - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if embed.isLast {% raw %}%}{% endraw %}
{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} if data.transfer.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if widgetExists('CartNoteQuoteNoteWidgetPlugin') {% raw %}%}{% endraw %} -
- {% raw %}{{{% endraw %} widget('CartNoteQuoteNoteWidgetPlugin', data.transfer) {% raw %}}}{% endraw %} {#@deprecated Use molecule('note-list', 'CartNoteWidget') instead.#} -
- {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} include molecule('note-list', 'CartNoteWidget') ignore missing with { - data: { - label: 'cart_note.checkout_page.quote_note', - note: data.transfer.cartNote - } - } only {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -
- {% raw %}{%{% endraw %} widget 'CheckoutVoucherFormWidget' args [data.transfer] only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elsewidget 'CheckoutVoucherFormWidgetPlugin' args [data.transfer] only {% raw %}%}{% endraw %} {# @deprecated Use CheckoutVoucherFormWidget instead. #} - {% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.summary, - submit: { - enable: can('SeeOrderPlaceSubmitPermissionPlugin'), - text: 'checkout.step.place.order' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - } - }, - embed: { - overview: data.overview - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('summary-overview', 'CheckoutPage') with { - data: embed.overview - } only {% raw %}%}{% endraw %} - -
- {% raw %}{{{% endraw %}parent(){% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
-
-{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -## Checkout Payment Step Display -Displays payment method name with a radio button. No extra input fields are required. - -## Payment Step Submitting -No further actions are needed, the quote being filled with payment method selection as default. After selecting Easy Credit as a payment method "HP.IN" request will be sent. In the response, Heidelpay returns an URL string which defines where the customer has to be redirected. If everything was ok, the user would be redirected to the Easy Credit Externally. - -## Summary Review and Order Submitting -Once the customer is redirected back to us, the response from Easy Credit is sent to the Heidelpay, and Heidelpay makes a synchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL URL` (Yves), with the result of payment (see `EasyCreditController::paymentAction()`). It is called "external response transaction," the result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. The most important data here - is the payment reference ID which can be used for further transactions like `finalize/reserve/etc`. - -After that, the customer can see the order summary page, where they can review all related data. - -There the user will see: - -* rate plan (`CRITERION.EASYCREDIT_AMORTISATIONTEXT`) -* interest fees (`CRITERION_EASYCREDIT_ACCRUINGINTEREST`) -* total sum including the interest fees (`CRITERION.EASYCREDIT_TOTALAMOUNT`) - -If the customer has not yet completed the HP.IN they must do that again. - -**On the "save order" event** - save Heidelpay payment per order and items, as usual. - -**When the state machine is initialized**, an event "send authorize on registration request" will trigger the authorize on registration request. In case of success, the state will be changed. - -Finalize - later on, when the item is shipped to the customer, it is time to call "finalize" command of the state machine. This will send HP.FI request to the Payment API. This is done in FinalizePlugin of the OMS command. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-ideal-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-ideal-payment-method-for-heidelpay.md deleted file mode 100644 index 2a10bad7cb1..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-ideal-payment-method-for-heidelpay.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Integrating the iDeal payment method for Heidelpay -description: Integrate iDeal payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-ideal -originalArticleId: 8e964d43-ad9d-4202-b3c9-89a444cfe182 -redirect_from: - - /v1/docs/heidelpay-ideal - - /v1/docs/en/heidelpay-ideal -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html - - title: Integrating the Paypal Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-debit-payment-method-for-heidelpay.html - - title: Integrating the Invoice Secured B2C payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html ---- - -### Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -#### Configuration - -Example (for testing only): -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = '31HA07BC8142C5A171744B56E61281E5'; -``` -This value should be taken from HEIDELPAY. - -#### Checkout Payment Step Display - -Displays payment method name with a radio button. No extra input fields are required. - -#### Payment Step Submitting - -No extra actions needed, quote being filled with payment method selection as default. - -#### Summary Review and Order - Submitting - -On "save order" event - save Heidelpay payment per order and items, as usual. - -When state machine is initialized, an event "send authorize request" will trigger the authorize request. In case of success, the payment system will return a redirect URL for customer, where the payment can be completed. Request and response will be fully persisted in the database (`spy_payment_heidelpay_transaction_log`).  - -On "post save hook" event we check in transaction log table if the authorize request was sent successfully and if so, we set an external redirect response to the next step (`IdealController::authorizeAction()`) where the form will be displayed with 3 fields: bank country, bank name and account holder name. The URL obtained in the previous step will be a "form action". When customer submits the form, he will be redirected to the iDeal website to complete the payment.  - -On payment confirmation, response from iDeal is sent to the Heidelpay and Heidelpay makes an asynchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL` URL (Yves), with the result of payment (see `HeidelpayController::paymentAction()`). This is called "external response transaction", the result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. - - The most important data here - is the payment reference ID which can be used for further transactions like capture/cancel/etc.  - -In the response Heidelpay expects an URL string which defines where customer has to be redirected. In case if customer successfully confirmed payment, it should be a link to the checkout order success step, in case of the failure - checkout payment failed action with the error code (see `HeidelpayController::paymentFailedAction()` and [Heidelpay workflow for errors](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html) section). Heidelpay redirects customer to the given URL and the payment process is finished.  - -Capture the money - later on, when the item is shipped to the customer, it is time to call "capture" command of the state machine to capture the money from the customer's account. This is done in CapturePlugin of the OMS command. In the provided basic order state machine for iDeal authorize method, command will be executed automatically, when order is manually moved into the "shipped" state. Now order can be considered as "paid". diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.md deleted file mode 100644 index 809095162b3..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-invoice-secured-b2c-payment-method-for-heidelpay.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Integrating the Invoice Secured B2C payment method for Heidelpay -description: Integrate invoice secured B2C payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-invoice-secured-b2c -originalArticleId: edb5c21a-b865-4445-92c9-060a7d1b4c1d -redirect_from: - - /v1/docs/heidelpay-invoice-secured-b2c - - /v1/docs/en/heidelpay-invoice-secured-b2c -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -## Setup -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -## Configuration -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_INVOICE_SECURED_B2C] = ''; //You can use public test account for testing with channel `31HA07BC8142C5A171749A60D979B6E4` but replace it with real one when you go live. Config should be taken from Heidelpay. - -$config[OmsConstants::PROCESS_LOCATION] = [ - ... - APPLICATION_ROOT_DIR . '/vendor/spryker-eco/heidelpay/config/Zed/Oms', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'HeidelpayInvoiceSecuredB2c01', -]; -$config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ - ... - HeidelpayConfig::PAYMENT_METHOD_INVOICE_SECURED_B2C => 'HeidelpayInvoiceSecuredB2c01', -]; -``` -## Notifications -Heidelpay InvoiceSecuredB2C payment method uses push notifications to inform the shop about the results of the transaction. An HTTP post request sends a push notification to a shop URL. The push notification contains the transaction response in XML format with all necessary data related to payment and transaction type. Headers of the HTTP request contain information about timestamp when the notification was sent and the number of retries. The body of the HTTP POST request includes the XML response of the reported transaction. There is no additional parameter encoding available; it is posted raw "text/xml". To confirm the notification, the shop server must reply with the HTTP status code "200". All other HTTP status codes are considered as an error, and a resend of the notification. Delivery is repeated up to 30 times if the merchant's server has not responded with HTTP status code "200“. The periods between the trials are increasing. -Notification URL for your website is `http://mysprykershop.com/heidelpay/notification`. It should be set up on Heidelpay's side with the help of Heidelpay support team. - - -## Integration into Project -All global integration parts of Heidelpay module should be done before the following steps. - -1. Adjust `CheckoutPageDependencyProvider` on project level to add `InvoiceSecuredB2c` subform and payment method handler. -
-\Pyz\Yves\CheckoutPage\CheckoutPageDependencyProvider - -```php -extendSubFormPluginCollection($container); - $container = $this->extendPaymentMethodHandler($container); - - return $container; - } - - ... - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendSubFormPluginCollection(Container $container): Container - { - $container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $subFormPluginCollection) { - ... - $subFormPluginCollection->add(new HeidelpayInvoiceSecuredB2cSubFormPlugin()); - - return $subFormPluginCollection; - }); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function extendPaymentMethodHandler(Container $container): Container - { - $container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $stepHandlerPluginCollection) { - ... - $stepHandlerPluginCollection->add(new HeidelpayHandlerPlugin(), HeidelpayConfig::PAYMENT_METHOD_INVOICE_SECURED_B2C); - - return $stepHandlerPluginCollection; - }); - - return $container; - } -} -``` -
-
- -2. Adjust define data section in the template of the Checkout Payment step to include `InvoiceSecuredB2c` payment method template. -
-src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig - -```php -... -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - - title: 'checkout.step.payment.title' | trans, - customForms: { - ... - 'heidelpay/invoice-secured-b2c': ['invoice-secured-b2c', 'heidelpay'], - } -} {% raw %}%}{% endraw %} -... -``` -
-
- -3. Adjust `OmsDependencyProvider` to add conditions that represent notification receiving. - -
-\Pyz\Zed\Oms\OmsDependencyProvider - -```php -extendConditionPlugins($container); - - return $container; - } - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function extendConditionPlugins(Container $container): Container - { - $container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - ... - $conditionCollection->add(new IsAuthorizationFinishedPlugin(), 'Heidelpay/IsAuthorizationFinished'); - $conditionCollection->add(new IsAuthorizationFailedPlugin(), 'Heidelpay/IsAuthorizationFailed'); - $conditionCollection->add(new IsFinalizingFinishedPlugin(), 'Heidelpay/IsFinalizingFinished'); - $conditionCollection->add(new IsFinalizingFailedPlugin(), 'Heidelpay/IsFinalizingFailed'); - $conditionCollection->add(new IsOrderPaidPlugin(), 'Heidelpay/IsOrderPaid'); - - return $conditionCollection; - }); - - return $container; - } -} -``` -
-
- -## Bank Account Information -After a customer placed an order, we receive payment response with information about bank account information where the customer has to pay. This information is stored into DB in `spy_payment_heidelpay.connector_invoice_account_info`. This information can be sent to the customer in the order confirmation e-mail or customer can be notified about this information in any other way. - -{% info_block errorBox "Attention" %} -As far as we receive payment response from Heidelpay asynchronously, we can never be sure that the bank account information is stored in the DB before the customer is redirected to the checkout success page. -{% endinfo_block %} - -## OMS State Machine -You can find an example of InvoiceSecuredB2c state machine in `vendor/spryker-eco/heidelpay/config/Zed/Oms/HeidelpayInvoiceSecuredB2c01.xml` - -The state machine includes two main processes: Authorization and Finalize. After the order is placed successfully, the authorization process starts. After success authorization call, state machine expects to receive a notification to get information about finishing authorization transaction. If successful notification received finalize process starts. Notification behavior for completing the process is the same as for authorization. After the order was successfully finalized, the state machine waits for receiving notifications with information about customer payment. If the order was fully paid, the shipment process could be started. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.md deleted file mode 100644 index d9402eb15ca..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Integrating the Paypal Authorize payment method for Heidelpay -description: Integrate Paypal Authorize payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-authorize -originalArticleId: 719daf9e-84fd-4538-bdf0-d626816ac4e0 -redirect_from: - - /v1/docs/heidelpay-authorize - - /v1/docs/en/heidelpay-authorize -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Heidelay - Sofort (Online Transfer) - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Split-payment Marketplace payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.html ---- - -### Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/configuring-heidelpay.html). - -#### Configuration - -Example (for testing only): -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA07BC8142C5A171749A60D979B6E4'; -``` - -This value should be taken from HEIDELPAY - -#### Checkout Payment Step Display -Displays payment method name with radio button. No extra input fields are required. - -#### Payment Step Submitting -No extra actions needed, quote is filled with payment method selection by default. - -### Workflow -#### Summary Review and Order -**Submitting** - -On "save order" event save Heidelpay payment per order and items, as usual. - -When state machine is initialized, a "send authorize request" event will trigger the authorize request. In case of success, payment system will return a redirect URL to customer, where the payment can be completed. Request and response will be fully persisted in the database (`spy_payment_heidelpay_transaction_log`).  - -On "post save hook" event, we check in the transaction log table if the authorize request was sent successfully and if so, we set external redirect response (URL is obtained from the previous step) and redirect the customer to Paypal website, where customer confirms the payment.
-Below is the code sample from `HeidelpayPostSavePlugin`: -```php -/** - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayFacadeInterface getFacade() - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayBusinessFactory getFactory() - */ -class HeidelpayPostSavePlugin extends BaseAbstractPlugin implements CheckoutPostCheckPluginInterface -{ - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer - * - * @return void - */ - public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) - { - $this->getFacade()->postSaveHook($quoteTransfer, $checkoutResponseTransfer); - } - ``` - -On payment confirmation, the response is sent to Heidelpay and Heidelpay makes an asynchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URLURL` (Yves), with the result of payment (see `HeidelpayController::paymentAction()`). This is called "external response transaction", and its result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. - -The most important data here is the payment reference ID which can be used for further transactions like `capture/cancel/etc`. - -In the response Heidelpay expects an URL string which defines where customer has to be redirected. In case if customer successfully confirmed payment, it should be a link to checkout order success step, in case of failure - checkout payment failed action with error code (see `HeidelpayController::paymentFailedAction()` and [Heidelpay workflow for errors](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html) section). Heidelpay redirects customer to the given URL and the payment process is finished.  - -Capture the money - later on, when the item is shipped to the customer, it is time to call "capture" command of the state machine to capture the money from the customer's account. It is done in CapturePlugin of the OMS command. In the provided basic order of state machine for Paypal authorize method, the command will be executed automatically, when order is manually moved into the "shipped" state. Now the order can be considered as "paid". diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-debit-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-debit-payment-method-for-heidelpay.md deleted file mode 100644 index 2d9ba063be3..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-debit-payment-method-for-heidelpay.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Integrating the Paypal Debit payment method for Heidelpay -description: Integrate Paypal debit workflow payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-paypal-debit -originalArticleId: c6a6c23c-fbe2-4d04-8df5-ef3e5e547cdb -redirect_from: - - /v1/docs/heidelpay-paypal-debit - - /v1/docs/en/heidelpay-paypal-debit -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Heidelay - Sofort (Online Transfer) - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html ---- - -### Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -#### Configuration - -Example (for testing only): - -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA07BC8142C5A171749A60D979B6E4'; -``` -This value should be taken from HEIDELPAY - -#### Checkout Payment Step Display - -Displays payment method name with radio button. No extra input fields are required. - -#### Payment step submit - -No extra actions needed, quote being filled with payment method selection as default. - -### Workflow - -#### Summary Review and Order Submit - -On "save order" event - save Heidelpay payment - per order and items, as usual. - -When state machine is initialized, an event "send debit request" will trigger debit request. In case of success, payment system will return a redirect url for customer, where the payment can be completed. Request and response will be fully persisted in the database (`spy_payment_heidelpay_transaction_log`).  - -On "post save hook" event, we check in transaction log table if the debit request was sent successfully and if so, we set external redirect response (URL is obtained from the previous step) and redirect customer to the Paypal website where the customer confirms the payment. 
-Below is the code sample from `HeidelpayPostSavePlugin`: -```php/** - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayFacadeInterface getFacade() - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayBusinessFactory getFactory() - */ -class HeidelpayPostSavePlugin extends BaseAbstractPlugin implements CheckoutPostCheckPluginInterface -{ - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer - * - * @return void - */ - public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) - { - $this->getFacade()->postSaveHook($quoteTransfer, $checkoutResponseTransfer); - } -} -``` -On payment confirmation response is sent to the Heidelpay and Heidelpay makes an asynchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL` - URL (Yves), with the result of payment (see `HeidelpayController::paymentAction()` ). This is called "external response transaction", the result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. - - The most important data here is the payment reference ID which can be used for further transactions like capture/cancel/etc.  - -In the response Heidelpay expects an URL string which shows where customer has to be redirected. In case if customer successfully confirmed payment, there should be a link to checkout order success step, in case of failure - checkout payment failed action with error code (see`HeidelpayController::paymentFailedAction()` and [Heidelpay workflow for errors](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html) section). Heidelpay redirects customer to the given URL and payment process is finished.  - -Now the order can be considered as "paid". diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.md deleted file mode 100644 index 5ce0fea6d4e..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-sofort-payment-method-for-heidelpay.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Heidelay - Sofort (Online Transfer) -description: Integrate Sofort payment through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-sofort -originalArticleId: 008f2689-26aa-447e-b334-2f980c7bd72c -redirect_from: - - /v1/docs/heidelpay-sofort - - /v1/docs/en/heidelpay-sofort -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -## Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/integrating-heidelpay.html). - -## Configuration - -Example (for testing only): -```php -$config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_SOFORT] = '31HA07BC8142C5A171749CDAA43365D2'; -``` - -## Checkout Payment Step Display -Displays payment method name with radio button. No extra input fields are required. - -## Payment Step Submitting -No extra actions needed, quote being filled with payment method selection as default. - -## Workflow -### Summary Review and Order - Submit - -On "save order" event - save Heidelpay payment, per order and items, as usual - -When state machine is initialized, an event "send authorize request" will trigger the authorize request. In case of success, payment system will return a redirect URL for customer where the payment can be completed. Request and response will be fully persisted in the database (`spy_payment_heidelpay_transaction_log`).  - -On "post save hook" event, we check in the transaction log table, if the authorize request was sent successful, and if so, we set external redirect response (URL is obtained from the previous step) and redirect customer to the Sofort webiste, where customer confirms the payment. 
-Below is the code sample from `HeidelpayPostSavePlugin`: -```php -/** - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayFacadeInterface getFacade() - * @method \SprykerEco\Zed\Heidelpay\Business\HeidelpayBusinessFactory getFactory() - */ -class HeidelpayPostSavePlugin extends BaseAbstractPlugin implements CheckoutPostCheckPluginInterface -{ - /** - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer - * - * @return void - */ - public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) - { - $this->getFacade()->postSaveHook($quoteTransfer, $checkoutResponseTransfer); - } -} -``` - -On payment confirmation, response is sent to the Heidelpay and Heidelpay makes an asynchronous POST request to the shop's `CONFIG_HEIDELPAY_PAYMENT_RESPONSE_URL` URL (Yves), with the result of payment (see `HeidelpayController::paymentAction()`). This is called "external response transaction", the result will be persisted in `spy_payment_heidelpay_transaction_log` as usual. - -The most important data here - is the payment reference ID which can be used for further transactions like capture/cancel/etc.  - -In the response Heidelpay expects an URL string which defines where customer has to be redirected. In case if customer successfully confirmed payment, it should be link to checkout order success step, in case of failure - checkout payment failed action with error code (see `HeidelpayController::paymentFailedAction()` and [Heidelpay workflow for errors](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay-workflow-for-errors.html) section). Heidelpay redirects customer to the given URL and payment process is finished.  - -Now order can be considered as "paid", no further capture is needed. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.md deleted file mode 100644 index ffac2baeb96..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-split-payment-marketplace-payment-method-for-heidelpay.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Integrating the Split-payment Marketplace payment method for Heidelpay -description: Integrate Split payment Marketplace through Heidelpay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay-split-payment-marketplace -originalArticleId: f54601d8-ab6f-49c0-a36b-36c99494b36b -redirect_from: - - /v1/docs/heidelpay-split-payment-marketplace - - /v1/docs/en/heidelpay-split-payment-marketplace -related: - - title: Heidelpay - link: docs/scos/user/technology-partners/page.version/payment-partners/heidelpay.html - - title: Integrating the Credit Card Secure payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-credit-card-secure-payment-method-for-heidelpay.html - - title: Configuring Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/configuring-heidelpay.html - - title: Integrating the Direct Debit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-direct-debit-payment-method-for-heidelpay.html - - title: Integrating Heidelpay into the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay-into-the-legacy-demoshop.html - - title: Integrating the Paypal Authorize payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-paypal-authorize-payment-method-for-heidelpay.html - - title: Integrating Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-heidelpay.html - - title: Installing Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/installing-heidelpay.html - - title: Heidelpay workflow for errors - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/heidelpay-workflow-for-errors.html - - title: Integrating the Easy Credit payment method for Heidelpay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/heidelpay/integrating-payment-methods-for-heidelpay/integrating-the-easy-credit-payment-method-for-heidelpay.html ---- - -## Setup - -The following configuration should be made after Heidelpay has been [installed](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/installing-heidelpay.html) and [integrated](/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/configuring-heidelpay.html). - -## Configuration - -Example: -```php -// Heidelpay Split-payment marketplace logic -$config[HeidelpayConstants::CONFIG_IS_SPLIT_PAYMENT_ENABLED_KEY] = true; -``` - -## Project Implementation - -A project level should set quote items and expenses information the field Heidelpay Item Channel Id. It could be done [using cart expander plugin](/docs/scos/dev/feature-walkthroughs/{{page.version}}/cart-feature-walkthrough/cart-module-reference-information.html#cart-expanders). - -Example: -```php -$quoteItem->setHeidelpayItemChannelId('........'); -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-invoice-pay-in-14-days.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-invoice-pay-in-14-days.md deleted file mode 100644 index a4c0d3fd235..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-invoice-pay-in-14-days.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Klarna - Invoice Pay in 14 days -description: In this article, you will find invoice pay scenarios for the payment process with Klarna. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/klarna-invoice-pay-in-14-days -originalArticleId: 8208530b-f631-4cb2-92a8-b6ac8483b30a -redirect_from: - - /v1/docs/klarna-invoice-pay-in-14-days - - /v1/docs/en/klarna-invoice-pay-in-14-days -related: - - title: Klarna - link: docs/scos/user/technology-partners/page.version/payment-partners/klarna.html - - title: Klarna payment workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-payment-workflow.html - - title: Klarna - Part Payment Flexible - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-part-payment-flexible.html - - title: Klarna state machine commands and conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html ---- - -## Payment Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/invoice_paymentworkflow.png) - -## Cancel Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/invoice_cancelworkflow.png) - -## Refund Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/flexible_refundworkflow.png) - -## Integrating Klarna Part Payment -The configuration to integrate Part payment using Klarna is: - -`SHARED_SECRET`: shared token. - -`EID`: the id of the merchant, received from Klarna. - -`TEST_MODE`: `true` or `false`. - -`KLARNA_INVOICE_MAIL_TYPE`: type for user notification. Possible values are: - -`KlarnaConstants::KLARNA_INVOICE_TYPE_MAIL` - -`KlarnaConstants::KLARNA_INVOICE_TYPE_EMAIL` - -`KlarnaConstants::KLARNA_INVOICE_TYPE_NOMAIL` - -`KLARNA_PCLASS_STORE_TYPE`: pClasses storage type. Could be `json`, `xml`, `sql`. Default type is `json`. - -`KLARNA_PCLASS_STORE_URI`: URI for pClasses storage. Default `APPLICATION_ROOT_DIR . '/data/DE/pclasses.json`'. - -`KLARNA_CHECKOUT_CONFIRMATION_URI`: checkout confirmation URI, `default value $domain . '/checkout/klarna/success`'. - -`KLARNA_CHECKOUT_TERMS_URI`: checkout terms URI, default value `$domain`. - -`KLARNA_CHECKOUT_PUSH_URI`: checkout push URI, default value `$domain . '/checkout/klarna/push'`. - -`KLARNA_CHECKOUT_UR`I: checkout URI, default value `$domain`. - -`KLARNA_PDF_URL_PATTERN`: pdf URL pattern, default value `https://online.testdrive.klarna.com/invoices/%s.pdf`. - -You can copy over configuration to your config from the Klarna modules `config.dist.php` file. - -## Perform Requests - -In order to perform the needed requests, you can easily use the implemented [Klarna State Machine Commands and Conditions](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html). The next section gives a summary of them. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-part-payment-flexible.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-part-payment-flexible.md deleted file mode 100644 index 1f79a0d38ea..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-part-payment-flexible.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Klarna - Part Payment Flexible -description: In this article, you will find part payment flexible scenarios for the payment process with Klarna. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/klarna-part-payment-flexible -originalArticleId: 10be374c-694c-47ea-8c1f-92cb876ba917 -redirect_from: - - /v1/docs/klarna-part-payment-flexible - - /v1/docs/en/klarna-part-payment-flexible -related: - - title: Klarna - link: docs/scos/user/technology-partners/page.version/payment-partners/klarna.html - - title: Klarna payment workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-payment-workflow.html - - title: Klarna - Invoice Pay in 14 days - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-invoice-pay-in-14-days.html - - title: Klarna state machine commands and conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html ---- - -## Payment Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/flexible_paymentworkflow.png) - -## Cancel Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/flexible_cancelworkflow.png) - -## Refund Workflow Scenarios -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Klarna/flexible_refundworkflow.png) - -## Integrating Klarna Part Payment -The configuration to integrate `Part Payment` using Klarna is: - -* `SHARED_SECRET`: shared token -* `EID`: the id of the merchant, received from Klarna. -* `TEST_MODE`: `true ` or `false`. -* `KLARNA_INVOICE_MAIL_TYPE`: type of the user notifications. Possible values are: - - `KlarnaConstants::KLARNA_INVOICE_TYPE_MAIL` - - `KlarnaConstants::KLARNA_INVOICE_TYPE_EMAIL` - - `KlarnaConstants::KLARNA_INVOICE_TYPE_NOMAIL` -* `KLARNA_PCLASS_STORE_TYPE`: pClasses storage type. Could be `json`, `xml`, `sql`. Default type is `json`. -* `KLARNA_PCLASS_STORE_URI`: URI for pClasses storage. Default `APPLICATION_ROOT_DIR . '/data/DE/pclasses.json'`. -* `KLARNA_CHECKOUT_CONFIRMATION_URI`: checkout confirmation URI, default value `$domain . '/checkout/klarna/success`'. -* `KLARNA_CHECKOUT_TERMS_URI`: checkout terms URI, default value `$domain`. -* `KLARNA_CHECKOUT_PUSH_URI`: checkout push URI, default value `$domain . '/checkout/klarna/push'`. -* `KLARNA_CHECKOUT_URI`: checkout URI, default value `$domain`. -* `KLARNA_PDF_URL_PATTERN:` pdf URL pattern, default value `https://online.testdrive.klarna.com/invoices/%s.pdf`. -* `NL_PART_PAYMENT_LIMIT`: maximum allowed limit for part payment in the Netherlands (in cents). - -You can copy over configuration to your config file from the Klarna bundles `config.dist.php` file. - -## Perform Requests -In order to perform the needed requests, you can easily use the implemented [Klarna State Machine Commands and Conditions](/docs/scos/user/technology-partners/{{page.verison}}/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html). The next section gives you a summary of them. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-payment-workflow.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-payment-workflow.md deleted file mode 100644 index f50eb882783..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-payment-workflow.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Klarna payment workflow -description: In this article, you will find part payment request flow with Klarna. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/klarna-payment-workflow -originalArticleId: ce2acfc2-0d42-4f5d-b272-b15d21a3688e -redirect_from: - - /v1/docs/klarna-payment-workflow - - /v1/docs/en/klarna-payment-workflow -related: - - title: Klarna - Invoice Pay in 14 days - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-invoice-pay-in-14-days.html - - title: Klarna - link: docs/scos/user/technology-partners/page.version/payment-partners/klarna.html - - title: Klarna - Part Payment Flexible - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-part-payment-flexible.html - - title: Klarna state machine commands and conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html ---- - -Both `Part Payment` and `Invoice` payment methods have the same request flow. It basically consists of the following steps: - -* Pre-check: reserves the amount of the purchase -* Check order status: checks if the order status is `pending accepted`. If it's not, OMS waits for 2 hours and then calls again `KlarnaApi` to retrieve the status of the order. In case the status is `denied` the order is canceled. -* Capture payment: activates the reservation that corresponds to the given reference number -* Update payment: if activation fails, we need to update the reservation that corresponds to the given reference number -* Refund: performs a partial refund. -* Cancel: cancels a reservation. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-state-machine-commands-and-conditions.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-state-machine-commands-and-conditions.md deleted file mode 100644 index 47acb6776e9..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/klarna/klarna-state-machine-commands-and-conditions.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Klarna state machine commands and conditions -description: This article includes the state machine commands and conditions provided by Klarna. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/klarna-state-machine-commands-and-conditions -originalArticleId: 349e7ae5-58e9-4d4e-b935-ac15225353d1 -redirect_from: - - /v1/docs/klarna-state-machine-commands-and-conditions - - /v1/docs/en/klarna-state-machine-commands-and-conditions -related: - - title: Klarna - Invoice Pay in 14 days - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-invoice-pay-in-14-days.html - - title: Klarna - link: docs/scos/user/technology-partners/page.version/payment-partners/klarna.html - - title: Klarna - Part Payment Flexible - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-part-payment-flexible.html - - title: Klarna payment workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-payment-workflow.html ---- - -## Commands - -Check - -* Checks order Status -* Update order status -* Plugin: `CheckPlugin` - -Capture - -* Activates the reservation that corresponds to the given reference number -* Response: - - Success: order activated - - Declined: capture failed. Need to update order -* Plugin: `CapturePlugin` - -Update - -* Updates a reservation -* Response: -* Success: Reservation updated -* Declined: Some error occurred -* Plugin: `UpdatePlugin` - -Cancel - -* Cancels a reservation -* Plugin: `CancelPlugin` - -Refund - -* Performs a partial refund -* Response: - - Success: Refund possible and accepted - - Declined: Some error occurred -* Plugin: `RefundPlugin` - -## Conditions - -| Name | Description | Plugin | -| --- | --- | --- | -| `IsOrderStatusApproved` | Checks if order payment status is pending accepted | `IsOrderStatusApprovedPlugin` | -| `IfHasCapture` | Checks if the capture response is successful | `IfHasCapturePlugin` | -| `IsOrderDenied` | Checks if order payment status is denied | `IsOrderDeniedPlugin` | - -## KlarnaFacade - -| Facade Method | Param | Return | Description | -| --- | --- | --- | --- | -| `saveOrderPayment` | `QuoteTransfer`, `CheckoutResponseTransfer` | void | Saves the payment for the submitted order | -| `reserveAmount` | `QuoteTransfer` | `KlarnaReserveAmountResponseTransfer` | Reserves the amount of the purchase | -| `updatePayment` | `QuoteTransfer` | `KlarnaReserveAmountResponseTransfer` | Update the reservation matching the given reservation number | -| `capturePayment` | `SpyPaymentKlarna`, `OrderTransfer` | array | Activate the reservation matching the given reservation number | -| `capturePartPayment` | array `$orderItems`, `SpyPaymentKlarna`, `OrderTransfer` | array | Activate the reservation matching the given reservation number | -| `refundPayment` | `SpyPaymentKlarna` | string | Performs a complete refund | -| `refundPartPayment` | array `$orderItems`, `SpyPaymentKlarna` | string | Performs a partial refund | -| `sendInvoiceByMail` | `SpyPaymentKlarna` | string | Sends an activated invoice to the customer via e-mail | -| `sendInvoiceByPost` | `SpyPaymentKlarna` | string | Requests a postal send-out of an activated invoice to a customer by Klarna | -| `getInstallments` | `QuoteTransfer` | `KlarnaInstallmentResponseTransfer` | Get available Part Payments | -| `getPaymentLogs` | `ObjectCollection $orders` | array | Return all payment logs for submitted orders | -| `getKlarnaCheckoutHtml` | `QuoteTransfer` | `KlarnaCheckoutTransfer` | Return checkout values | -| `getKlarnaSuccessHtml` | `KlarnaCheckoutTransfer` | `KlarnaCheckoutTransfer` | Return success values | -| `createCheckoutOrder` | `KlarnaCheckoutTransfer` | bool | Creates checkout order | -| `checkOrderStatus` | `SpyPaymentKlarna` | int | Return order status | -| `cancelOrder` | `SpyPaymentKlarna` | bool | Cancels payment | -| `getKlarnaPaymentById` | `int $salesOrderId` | array | Return order payment data | -| `getInvoicePdfUrl` | `int $salesOrderId` | string | Return pdf URL from config | -| `checkoutService` | `QuoteTransfer` | `KlarnaCheckoutServiceTransfer` | Perform a checkout service request | -| `getAddressUpdater` | `OrderTransfer` | `AddressUpdater` | Return `AddressUpdater` from the factory | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/installing-and-configuring-payolution.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/installing-and-configuring-payolution.md deleted file mode 100644 index 7773bb88459..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/installing-and-configuring-payolution.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Installing and configuring Payolution -description: This article contains information on configuring the Payolution module for the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution-configuration -originalArticleId: 6902a8df-a3d4-470a-ab59-035d284fcbc2 -redirect_from: - - /v1/docs/payolution-configuration - - /v1/docs/en/payolution-configuration -related: - - title: Integrating the installment payment method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.html - - title: Payolution - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-performing-requests.html - - title: Payolution request flow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-request-flow.html - - title: Payolution - link: docs/scos/user/technology-partners/page.version/payment-partners/payolution.html - - title: Integrating the invoice paymnet method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.html ---- - -Add `spryker-eco/payolution` to your project by running `composer require spryker-eco/payolution` -Please refer to `config/config.dist.php` for example of module configuration. - -To set up the initial Payolution configuration, use the credentials you received after registering your Payolution merchant account: -```php -$config[PayolutionConstants::TRANSACTION_GATEWAY_URL] = ''; -$config[PayolutionConstants::CALCULATION_GATEWAY_URL] = ''; -$config[PayolutionConstants::TRANSACTION_SECURITY_SENDER] = ''; -$config[PayolutionConstants::TRANSACTION_USER_LOGIN] = ''; -$config[PayolutionConstants::TRANSACTION_USER_PASSWORD] = ''; -$config[PayolutionConstants::CALCULATION_SENDER] = ''; -$config[PayolutionConstants::CALCULATION_USER_LOGIN] = ''; -$config[PayolutionConstants::CALCULATION_USER_PASSWORD] = ''; -$config[PayolutionConstants::TRANSACTION_CHANNEL_PRE_CHECK] = ''; -$config[PayolutionConstants::TRANSACTION_CHANNEL_INVOICE] = ''; -$config[PayolutionConstants::TRANSACTION_CHANNEL_INSTALLMENT] = ''; -$config[PayolutionConstants::CALCULATION_CHANNEL] = ''; -``` - -Next, specify modes and order limits: -```php -$config[PayolutionConstants::TRANSACTION_MODE] = 'CONNECTOR_TEST'; -$config[PayolutionConstants::CALCULATION_MODE] = 'TEST'; -$config[PayolutionConstants::MIN_ORDER_GRAND_TOTAL_INVOICE] = '500'; -$config[PayolutionConstants::MAX_ORDER_GRAND_TOTAL_INVOICE] = '500000'; -$config[PayolutionConstants::MIN_ORDER_GRAND_TOTAL_INSTALLMENT] = '500'; -$config[PayolutionConstants::MAX_ORDER_GRAND_TOTAL_INSTALLMENT] = '500000'; - ``` - -### Checkout Configuration - -To use Payolution in frontend, Payolution payment method handlers and subforms should be added to `Pyz/Yves/Checkout/CheckoutDependencyProvider.php` -```php - $container[static::PAYMENT_METHOD_HANDLER] = function () { - $paymentHandlerPlugins = new StepHandlerPluginCollection(); - - $paymentHandlerPlugins->add(new PayolutionHandlerPlugin(), PaymentTransfer::PAYOLUTION_INVOICE); - $paymentHandlerPlugins->add(new PayolutionHandlerPlugin(), PaymentTransfer::PAYOLUTION_INSTALLMENT); - - return $paymentHandlerPlugins; - }; - - $container[static::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugins = new SubFormPluginCollection(); - - $paymentSubFormPlugins->add(new PayolutionInstallmentSubFormPlugin()); - $paymentSubFormPlugins->add(new PayolutionInvoiceSubFormPlugin()); - - return $paymentSubFormPlugins; - }; - ``` - -All subform and handler plugins are located in `SprykerEco\Yves\Payolution\Plugin\` namespace. - -### OMS Configuration - -Please activate the following Payolution process. -```php -$config[OmsConstants::ACTIVE_PROCESSES][] = 'PayolutionPayment01'; - ``` - -Default implementation for commands and options should be added to `Pyz/Zed/Oms/OmsDependencyProvider.php` - -Commands: -```php -$container->extend(OmsDependencyProvider::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection - ->add(new PreAuthorizePlugin(), 'Payolution/PreAuthorize') - ->add(new ReAuthorizePlugin(), 'Payolution/ReAuthorize') - ->add(new RevertPlugin(), 'Payolution/Revert') - ->add(new CapturePlugin(), 'Payolution/Capture') - ->add(new RefundPlugin(), 'Payolution/Refund'); - - return $commandCollection; -}); -``` -Conditions: -```php -$container->extend(OmsDependencyProvider::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection - ->add(new IsPreAuthorizationApprovedPlugin(), 'Payolution/IsPreAuthorizationApproved') - ->add(new IsReAuthorizationApprovedPlugin(), 'Payolution/IsReAuthorizationApproved') - ->add(new IsReversalApprovedPlugin(), 'Payolution/IsReversalApproved') - ->add(new IsCaptureApprovedPlugin(), 'Payolution/IsCaptureApproved') - ->add(new IsRefundApprovedPlugin(), 'Payolution/IsRefundApproved'); - - return $conditionCollection; -}); -``` - -All commands and conditions are located in `SprykerEco\Zed\Payolution\Communication\Plugin\Oms\` namespace. - -### Payment Configuration - -Default implementation for checkout payment plugins should be added to `Pyz/Zed/Payment/PaymentDependencyProvider.php` -```php - $container->extend(static::CHECKOUT_PLUGINS, function (CheckoutPluginCollection $pluginCollection) { - $pluginCollection - ->add(new PayolutionPreCheckPlugin(), PayolutionConfig::PROVIDER_NAME, static::CHECKOUT_PRE_CHECK_PLUGINS) - ->add(new PayolutionSaveOrderPlugin(), PayolutionConfig::PROVIDER_NAME, static::CHECKOUT_ORDER_SAVER_PLUGINS) - ->add(new PayolutionPostCheckPlugin(), PayolutionConfig::PROVIDER_NAME, static::CHECKOUT_POST_SAVE_PLUGINS); - - return $pluginCollection; - }); - ``` - -All payment plugins are located in `SprykerEco\Zed\Payolution\Communication\Plugin\Checkout\` namespace. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.md deleted file mode 100644 index 1df20d27383..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Integrating the installment payment method for Payolution -description: Integrate installment payment through Payolution into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution-installment -originalArticleId: d0868100-793a-4f5c-9f68-e0d9a3160901 -redirect_from: - - /v1/docs/payolution-installment - - /v1/docs/en/payolution-installment -related: - - title: Payolution - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-performing-requests.html - - title: Payolution request flow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-request-flow.html - - title: Payolution - link: docs/scos/user/technology-partners/page.version/payment-partners/payolution.html - - title: Integrating the invoice paymnet method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.html - - title: Installing and configuring Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/installing-and-configuring-payolution.html ---- - -## Installment Scenarios - -### Standard Case -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Payolution/payolution-installment-standard-case.png) - -### Full Refund -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Payolution/payolution-installment-fullrefund-case.png) - -### Partial Refund -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Payolution/payolution-installment-partialrefund-case.png) - -## Integrating Payolution Installment Payment -The In order to integrate installment payment, two simple steps are needed: setting Payolution installment payment configuration and calling the facade functions. - -### Setting Payolution Installment Configuration -As installment requests use additional type of requests called Calculation Requests, two groups of configuration are defined: transaction configuration for handling the basic requests (pre-authorization, re-authorization, etc), and calculation configuration for handling calculation requests. The configuration to integrate installment payments using Payolution is: - -* `TRANSACTION_GATEWAY_URL`: the gateway URL to connect with Payolution services (required). -* `CALCULATION_GATEWAY_URL`: the gateway URL to connect with Payolution calculation service (required). -* `TRANSACTION_SECURITY_SENDER`: the sender id (required). -* `TRANSACTION_USER_LOGIN`: the sender username (required). -* `TRANSACTION_USER_PASSWORD`: the sender password (required). -* `CALCULATION_SENDER`: the sender name for the calculation request (optional, default is Spryker). -* `CALCULATION_USER_LOGIN`: the sender username for the calculation request (required). -* `CALCULATION_USER_PASSWORD`: the sender password for the calculation request (required). -* `TRANSACTION_MODE`: the mode of the transaction, either test or live (required). -* `CALCULATION_MODE`: the mode of the calculation, either test or live (required). -* `TRANSACTION_CHANNEL_PRE_CHECK`: a Payolution channel for handling pre-check requests, in case of using Pre-check (optional). -* `TRANSACTION_CHANNEL_INSTALLMENT`: a Payolution channel for handling installment requests except Pre-check and calculation as they have their own channel (required). -* `CALCULATION_CHANNEL`: a Payolution channel for handling calculation requests (required). -* `MIN_ORDER_GRAND_TOTAL_INSTALLMENT`: the allowed minimum order grand total amount for installment payments in the shop e.g. the minimum allowed payment is $2 (required). -* `MAX_ORDER_GRAND_TOTAL_INSTALLMENT`: the allowed maximum order grand total amount for installment payments in the shop e.g. the maximum allowed payment is $5000 (required). -* `PAYOLUTION_BCC_EMAIL_ADDRESS`: Payolution email address to send copies of payment details to Payolution. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.md deleted file mode 100644 index 17f39dbd61a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Integrating the invoice paymnet method for Payolution -description: Integrate invoice payment through Payolution into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution-invoice -originalArticleId: a7d58767-222b-4bf9-878a-a8b748d2a423 -redirect_from: - - /v1/docs/payolution-invoice - - /v1/docs/en/payolution-invoice -related: - - title: Payolution - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-performing-requests.html - - title: Payolution request flow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-request-flow.html - - title: Integrating the installment payment method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.html - - title: Payolution - link: docs/scos/user/technology-partners/page.version/payment-partners/payolution.html - - title: Installing and configuring Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/installing-and-configuring-payolution.html ---- - -## Workflow Scenarios - -Payments from Payolution to Merchant are not included in the sequence diagrams since they occur on a regular basis (e.g. every week). -```html - - - - - - - - - - - - - - - - - -
-

Standard Case

-

- - -

-
-

Full Refund Before Payment

-

- - -

-
-

Partial Refund Before Payment

-

- - -

-
-

Full Refund After Payment

-

- - -

-
-

Partial Refund After Payment

-

- - -

-
 
-``` -## Integrating Payolution Invoice Payment -To integrate invoice payments, two simple steps are needed: setting Payolution invoice payment configuration and calling the facade functions. - -### Setting Payolution Invoice Configuration -The configuration to integrate invoice payments using Payolution is: - -* `TRANSACTION_GATEWAY_URL`: the gateway URL to connect with Payolution services (required). -* `TRANSACTION_SECURITY_SENDER `: the sender id (required). -* `TRANSACTION_USER_LOGIN`: the sender username (required). -* `TRANSACTION_USER_PASSWORD`: the sender password (required). -* `TRANSACTION_MODE`: the mode of the transaction, either test or live (required). -* `TRANSACTION_CHANNEL_PRE_CHECK`: a Payolution channel for handling pre-check requests, in case of using Pre-check (optional). -* `TRANSACTION_CHANNEL_INVOICE`: a Payolution channel for handling invoice requests except Pre-check as it has its own channel (required). -* `MIN_ORDER_GRAND_TOTAL_INVOICE`: the allowed minimum order grand total amount for invoice payments in the shop e.g. the minimum allowed payment is $2 (required). -* `MAX_ORDER_GRAND_TOTAL_INVOICE`: the allowed maximum order grand total amount for invoice payments in the shop e.g. the maximum allowed payment is $5000 (required). -* `PAYOLUTION_BCC_EMAIL_ADDRESS`: Payolution email address to send copies of payment details to Payolution. - -### Performing Requests -In order to perform the needed requests, you can easily use the implemented state machine commands and conditions. See [Payolution—Performing Requests](/docs/scos/user/technology-partners/201811.0/payment-partners/payolution/payolution-performing-requests.html) for a summary. You can also use the facade methods directly which, however, are invoked by the state machine. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-performing-requests.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-performing-requests.md deleted file mode 100644 index 147f29de31a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-performing-requests.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Payolution - Performing Requests -description: This article includes the state machine commands and conditions provided by Payolution. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution-requests -originalArticleId: 9074c0c4-f412-4265-a957-b9f87aa45330 -redirect_from: - - /v1/docs/payolution-requests - - /v1/docs/en/payolution-requests - - /docs/scos/user/technology-partners/201811.0/payment-partners/payolution/payolution-performing-requests.html -related: - - title: Integrating the invoice paymnet method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.html - - title: Payolution request flow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-request-flow.html - - title: Integrating the installment payment method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.html - - title: Payolution - link: docs/scos/user/technology-partners/page.version/payment-partners/payolution.html - - title: Installing and configuring Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/installing-and-configuring-payolution.html ---- - -In order to perform the needed requests, you can easily use the implemented state machine commands and conditions. The next section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. - -## Payolution State Machine Commands and Conditions - -### Commands - -**PreAuthorize** - -* Send order and customer data to Payolution -* Risk check performed by Payolution -* Response: - - Success: Risk check passed - - Declined: Request format error or risk check failed -* Plugin: `PreAuthorizePlugin` - -**ReAuthorize** - -* Send updated order data (e.g. new price) -* New risk check (taking into account the previous pre-authorization call) -* Response: - - Success: Risk check passed and update accepted - - Declined: Request format error, update not accepted (e.g. price too high), or risk check failed -* Plugin: `ReAuthorizePlugin` - -**Revert** - -* Revert a previous pre-authorization call -* Always reverts the complete pre-authorization -* Plugin: `RevertPlugin` - -**Capture** - -* Capture of previous (p)re-authorization call -* Response: - - Success: Previous (p)re-authorization still valid and accepted - - Declined: Previous (p)re- authorization expired, request format error, or internal error -* Plugin: `CapturePlugin` - -**Refund** - -* Refund previous captured amount -* Full and partial refunds possible -* Response: - - Success: Refund possible and accepted - - Declined: Previous capture to far in the past, request format error, or internal -* Plugin: `RefundPlugin` - -## Conditions - -| Name | Description | Plugin | -| --- | --- | --- | -| `IsPreAuthorizationApproved` | Checks transaction status log for successful pre-authorization response | `IsPreAuthorizationApprovedPlugin` | -| `IsReAuthorizationApproved` | Checks transaction status log for successful re-authorization response | `IsReAuthorizationApprovedPlugin` | -| `IsReversalApproved` | Checks transaction status log for successful reversal response | `IsReversalApprovedPlugin` | -| `IsCaptureApproved` | Checks transaction status log for successful capture response | `IsCaptureApprovedPlungin` | -| `IsRefundApproved` | Checks transaction status log for successful refund response | `IsRefundApprovedPlugin` | - -## Payolution Facade - -| Facade Method | Param | Return | Description | -| --- | --- | --- | --- | -| `saveOrderPayment` | `QuoteTransfer``CheckoutResponseTransfer` | void | Saves the payment for the coming order | -| `preCheckPayment` | `QuoteTransfer` | `PayolutionTransactionResponseTransfer` | Performs the Pre-check request | -| `preAuthorizePayment` | `OrderTransfer`int (Payment entity ID) | `PayolutionTransactionResponseTransfer` | Performs the Pre-authorization request | -| `reAuthorizePayment` | `OrderTransfer`int (Payment entity ID) | `PayolutionTransactionResponseTransfer` | Performs the Re-authorization request | -| `revertPayment` | `OrderTransfer`int (Payment entity ID) | `PayolutionTransactionResponseTransfer` | Performs the Revert request | -| `capturePayment` | `OrderTransfer`int (Payment entity ID) | `PayolutionTransactionResponseTransfer` | Performs the Capture request | -| `refundPayment` | `OrderTransfer`int (Payment entity ID) | `PayolutionTransactionResponseTransfer` | Performs the Refund request | -| `calculateInstallmentPayments` | `OrderTransfer` | `PayolutionCalculationResponseTransfer` | Calculates available installments for the payment | -| `isPreAuthorizationApproved` | `OrderTransfer` | bool | Checks if the Pre-authorization request is approved | -| `isReAuthorizationApproved` | `OrderTransfer` | bool | Checks if the Re-authorization request is approved | -| `isReversalApproved` | `OrderTransfer` | bool | Checks if the Revert request is approved | -| `isCaptureApproved` | `OrderTransfer` | bool | Checks if the Capture request is approved | -| `isRefundApproved` | `OrderTransfer` | bool | Checks if the Refund request is approved | - -## Core Module Structure Diagram - -The Payolution core module uses the following class and flow and structure. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Payolution/payolution-core-bundle-structure.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-request-flow.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-request-flow.md deleted file mode 100644 index 62bf6cc7471..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/payolution/payolution-request-flow.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Payolution request flow -description: This article describes the request flow for Payolution. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution-workflow -originalArticleId: 6165d233-bd54-4328-9c00-fdb2a933d874 -redirect_from: - - /v1/docs/payolution-workflow - - /v1/docs/en/payolution-workflow -related: - - title: Integrating the invoice paymnet method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.html - - title: Integrating the installment payment method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.html - - title: Payolution - link: docs/scos/user/technology-partners/page.version/payment-partners/payolution.html - - title: Installing and configuring Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/installing-and-configuring-payolution.html - - title: Payolution - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-performing-requests.html ---- - -Both invoice and installment utilize the same request flow. It basically consists of the following requests: - -* Calculation (for installment only): to calculate the installment amounts, dues, and durations. -* Pre-check (optional): to check the user information in order to make sure that all the needed information is correct before doing the actual pre-authorization. -* Pre-authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is basically considered accepted when it is authorized. -* Re-authorize: to update an existing authorization if necessary. -* Revert: to cancel the authorization step which basically cancels the payment before capturing. -* Capture: to capture the payment and receive money from the buyer. -* Refund: to refund the buyer when returning products. - -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Payolution/payolution-workflow.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratenkauf-by-easycredit/installing-and-configuring-ratenkauf-by-easycredit.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratenkauf-by-easycredit/installing-and-configuring-ratenkauf-by-easycredit.md deleted file mode 100644 index 9055252fc3a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratenkauf-by-easycredit/installing-and-configuring-ratenkauf-by-easycredit.md +++ /dev/null @@ -1,1043 +0,0 @@ ---- -title: Installing and configuring ratenkauf by easyCredit -description: This article contains installation and configuration information for the ratenkauf by easyCredit module into the Spryker-based shop. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratenkauf-by-easycredit-installation-and-configuration -originalArticleId: 2fcd3cce-6bf2-48f5-838a-318476b0c6c7 -redirect_from: - - /v1/docs/ratenkauf-by-easycredit-installation-and-configuration - - /v1/docs/en/ratenkauf-by-easycredit-installation-and-configuration -related: - - title: ratenkauf by easyCredit - link: docs/scos/user/technology-partners/page.version/payment-partners/ratenkauf-by-easycredit.html ---- - -## Installation - -To install Easycredit, run the following command in the console: -```bash -composer require spryker-eco/easycredit -``` - -After installation, you have to run propel:install command or you can check the following migration: - -```php -CREATE SEQUENCE "spy_payment_easycredit_api_log_pk_seq"; - -CREATE TABLE "spy_payment_easycredit_api_log" -( - "id_payment_easycredit_api_log" INTEGER NOT NULL, - "type" VARCHAR NOT NULL, - "request" TEXT NOT NULL, - "response" TEXT NOT NULL, - "status_code" INT2, - "error_code" VARCHAR, - "error_message" VARCHAR, - "error_type" VARCHAR, - "created_at" TIMESTAMP, - "updated_at" TIMESTAMP, - PRIMARY KEY ("id_payment_easycredit_api_log") -); - -CREATE SEQUENCE "spy_payment_easycredit_order_identifier_pk_seq"; - -CREATE TABLE "spy_payment_easycredit_order_identifier" -( - "id_payment_easycredit_order_identifier" INTEGER NOT NULL, - "fk_sales_order" INTEGER NOT NULL, - "identifier" VARCHAR NOT NULL, - "confirmed" BOOLEAN NOT NULL, - PRIMARY KEY ("id_payment_easycredit_order_identifier") -); -``` - -To use FE functionality (js / css) with old demoshop, `shop-ui-compatibility` module is necessary required: - -```bash -composer require spryker-eco/shop-ui-compatibility -``` - -After installing `shop-ui-compatibility` use procedures described in this migration guide - [Setting up ShopUICompatibility Module in the Legacy Demoshop](/docs/scos/dev/migration-and-integration/201811.0/updating-the-legacy-demoshop-with-scos/setting-up-shopuicompatibility-module-in-the-legacy-demoshop.html). - -## Configuration -Perform the initial configuration of Easycredit: - -```php - 'Easycredit01', -]; - -... -$config[EasycreditConstants::SHOP_IDENTIFIER] = 'Your shop identifier'; -$config[EasycreditConstants::SHOP_TOKEN] = 'Your shop token'; -$config[EasycreditConstants::API_URL] = 'https://ratenkauf.easycredit.de/ratenkauf-ws/rest/v2'; -$config[EasycreditConstants::SUCCESS_URL] = $config[ApplicationConstants::BASE_URL_YVES] . '/easycredit/payment/success'; -$config[EasycreditConstants::CANCELLED_URL] = $config[ApplicationConstants::BASE_URL_YVES] . '/checkout/payment'; -$config[EasycreditConstants::DENIED_URL] = $config[ApplicationConstants::BASE_URL_YVES] . '/checkout/payment'; -``` - -## Integration - -1. First of all, update `CheckoutPageDependencyProvider` by adding a new payment subform and a payment method handler. -To show the Easycredit payment method on the payment step, you should define `SubFormPlugin` and `StepHandlerPlugin`. - -
-CheckoutPageDependencyProvider.php - -```php -public const CLIENT_EASYCREDIT = 'CLIENT_EASYCREDIT'; - -... - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - public function provideDependencies(Container $container): Container - { - $container = parent::provideDependencies($container); - $container = $this->addEasycreditClient($container); - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addSubFormPluginCollection(Container $container): Container - { - $container[static::PAYMENT_SUB_FORMS] = function () { - $subFormPluginCollection = new SubFormPluginCollection(); - $subFormPluginCollection->add(new EasycreditSubFormPlugin()); - - return $subFormPluginCollection; - }; - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addPaymentMethodHandlerPluginCollection(Container $container): Container - { - $container[self::PAYMENT_METHOD_HANDLER] = function () { - $stepHandlerPluginCollection = new StepHandlerPluginCollection(); - $stepHandlerPluginCollection->add(new EasycreditHandlerPlugin(), PaymentTransfer::EASYCREDIT); - return $stepHandlerPluginCollection; - }; - - return $container; - } - - /** - * @param \Spryker\Yves\Kernel\Container $container - * - * @return \Spryker\Yves\Kernel\Container - */ - protected function addEasycreditClient(Container $container): Container - { - $container[static::CLIENT_EASYCREDIT] = function (Container $container) { - return $container->getLocator()->easycredit()->client(); - }; - - return $container; - } -... -``` -
-
- -2. The next dependency provider you should update is `OmsDependencyProvider`. -To use commands and conditions for events in OMS, define them. - -
-OmsDependencyProvider - -```php -... -$container->extend(self::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection->add(new IsOrderConfirmedPlugin(), 'Easycredit/IsOrderConfirmed'); - return $conditionCollection; -}); -... -``` -
-
- -3. And one more dependency provider to be updated is `CheckoutDependencyProvider`. -To send requests to Easycredit, you need the technical order identifier value. After adding this plugin, the order identifier will be saved to the database in table `spy_payment_easycredit_order_identifier`. - -
-CheckoutDependencyProvider - -```php -... -protected function getCheckoutOrderSavers(Container $container) -{ - return [ - ... - new EasycreditOrderIdentifierPlugin(), - ]; -} - -... -``` -
-
- -To use Easycredit requests during the checkout process, you have to create your own checkout steps. To implement the checkout steps, follow the guidelines below: - -1. Extend `StepFactory`. - -
-CheckoutPageFactory - -```php - -
- -2. Implement `StepFactory` as shown in this example: - -
-StepFactory - -```php -getEasycreditClient() - ); - } - - /** - * @return StepInterface - */ - public function createSummaryStep(): StepInterface - { - return new SummaryStep( - $this->getProductBundleClient(), - CheckoutPageControllerProvider::CHECKOUT_SUMMARY, - HomePageControllerProvider::ROUTE_HOME - ); - } - - /** - * @return StepInterface - */ - public function createShipmentStep(): StepInterface - { - return new ShipmentStep( - $this->getCalculationClient(), - $this->getShipmentPlugins(), - CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - HomePageControllerProvider::ROUTE_HOME, - $this->getEasycreditClient() - ); - } - - /** - * @return \Spryker\Yves\StepEngine\Process\StepCollectionInterface - */ - public function createStepCollection(): StepCollectionInterface - { - $stepCollection = new StepCollection( - $this->getUrlGenerator(), {% raw %}{%{% endraw %} if data.easycredit {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('easycredit-summary', 'Easycredit') with { - data: { - interest: data.easycredit.interest, - url: data.easycredit.url, - text: data.easycredit.text - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - - CheckoutPageControllerProvider::CHECKOUT_ERROR - ); - $stepCollection - ->addStep($this->createEntryStep()) - ->addStep($this->createCustomerStep()) - ->addStep($this->createAddressStep()) - ->addStep($this->createShipmentStep()) - ->addStep($this->createPaymentStep()) - ->addStep($this->createEasycreditStep()) - ->addStep($this->createSummaryStep()) - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createSuccessStep()); - return $stepCollection; - } - - /** - * @return EasycreditClientInterface - */ - protected function getEasycreditClient(): EasycreditClientInterface - { - return $this->getProvidedDependency(CheckoutPageDependencyProvider::CLIENT_EASYCREDIT); - } -} -``` -
-
- -3. Now you can extend the basic steps on the project level and can create your Easycredit step that will be called when a user takes Easycredit as `PaymentMethod`. -Examples of steps implementations: - -
-EasycreditStep.php - -```php -easycreditClient = $easycreditClient; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function requireInput(AbstractTransfer $quoteTransfer) - { - return false; - } - - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return \Spryker\Shared\Kernel\Transfer\AbstractTransfer - */ - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $payment = $quoteTransfer->getPayment(); - if ($payment->getPaymentSelection() === 'easycredit') { - $responseTransfer = $this->easycreditClient->sendInitializePaymentRequest($quoteTransfer); - $this->redirectUrl = static::URL_EASYCREDIT_REDIRECT_URL . $responseTransfer->getPaymentIdentifier(); - $quoteTransfer->getPayment()->getEasycredit()->setVorgangskennung($responseTransfer->getPaymentIdentifier()); - } - return $quoteTransfer; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function postCondition(AbstractTransfer $quoteTransfer) - { - return true; - } - - /** - * Return external redirect url, when redirect occurs not within same application. Used after execute. - * - * @return string - */ - public function getExternalRedirectUrl() - { - return $this->redirectUrl; - } - - /** - * Requirements for this step, return true when satisfied. - * - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function preCondition(AbstractTransfer $quoteTransfer) - { - return true; - } - ``` -
-
- -
-ShipmentStep -```php -easycreditClient = $client; - } - - /** - * @param Request $request - * @param QuoteTransfer $quoteTransfer - * @return \Generated\Shared\Transfer\QuoteTransfer - */ - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $easycreditLegalTextTransfer = new EasycreditLegalTextTransfer(); - $easycreditLegalTextTransfer->setText($this->easycreditClient->sendApprovalTextRequest()->getText()); - $quoteTransfer->setEasycreditLegalText($easycreditLegalTextTransfer); - return parent::execute($request, $quoteTransfer); - } -} -``` -
-
- -
-SummaryStep -```php -getPayment() && $quoteTransfer->getPayment()->getEasycredit()) { - $easycreditData = [ - 'interest' => $quoteTransfer->getPayment()->getEasycredit()->getAnfallendeZinsen(), - 'url' => $quoteTransfer->getPayment()->getEasycredit()->getUrlVorvertraglicheInformationen(), - 'text' => $quoteTransfer->getPayment()->getEasycredit()->getTilgungsplanText(), - ]; - } - - return [ - 'quoteTransfer' => $quoteTransfer, - 'cartItems' => $this->productBundleClient->getGroupedBundleItems( - $quoteTransfer->getItems(), - $quoteTransfer->getBundleItems() - ), - 'easycredit' => $easycreditData, - ]; - } -} -``` -
-
- -4. To run the step process for the new Easycredit step, you should extend the default `CheckoutController` with a new action for handling the Easycredit step. -
-CheckoutController - -```php -createStepProcess()->process($request); - } -} -``` -
-
- -5. After creating a new action in the checkout controller, define a new route in `CheckoutPageControllerProvider`. -
-CheckoutPageControllerProvider.php - -```php -addEasycreditStepRoute(); - } - - protected function addEasycreditStepRoute() - { - $this->createController('/{checkout}/easycredit', static::CHECKOUT_EASY_CREDIT, 'CheckoutPage', 'Checkout', 'easyCredit') - ->assert('checkout', $this->getAllowedLocalesPattern() . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); - } -} -``` -
-
- -6. Also, the Easycredit bundle has its own `YvesController` for handling a success response from Easycredit, so you have to define a controller in `YvesBootstrap`. -
-YvesBootstrap.php - -```php - -
- -## Frontend part - -Еo show the Easycredit info on the PDP page, and Summary and Payment steps, you have to extend some views on the project level . - -You can find some examples below in `[`payment.twig`](#payment-step)`, [`summary.twig`](#summary-step) and [`pdp.twig`](#pdp-page). - -
-payment.twig - -Payment step - `src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` - -```php -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - title: 'checkout.step.payment.title' | trans, - customForms: { - 'Easycredit/easycredit': 1 - } -} {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.payment, - options: { - attr: { - id: 'payment-form' - } - }, - submit: { - enable: true, - text: 'checkout.step.summary' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - }, - customForms: data.customForms - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set paymentProviderIndex = loop.index0 {% raw %}%}{% endraw %} -
{% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
-
    - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - enableStart: false, - enableEnd: false, - customForms: data.customForms - }, - embed: { - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[key] - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} form_row(embed.toggler, { - required: false, - component: molecule('toggler-radio'), - attributes: { - 'target-selector': '.js-payment-method-' ~ embed.index, - 'class-to-toggle': 'is-hidden' - } - }) {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
  • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- -
-summary.twig - -Summary step - `src/Pyz/Yves/CheckoutPage/Theme/default/views/summary/summary.twig` - -```php -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - transfer: _view.quoteTransfer, - cartItems: _view.cartItems, - easycredit: _view.easycredit, - shippingAddress: _view.quoteTransfer.shippingAddress, - billingAddress: _view.quoteTransfer.billingAddress, - shipmentMethod: _view.quoteTransfer.shipment.method.name, - paymentMethod: _view.quoteTransfer.payment.paymentMethod, - - forms: { - summary: _view.summaryForm - }, - - overview: { - shipmentMethod: _view.quoteTransfer.shipment.method.name, - expenses: _view.quoteTransfer.expenses, - voucherDiscounts: _view.quoteTransfer.voucherDiscounts, - cartRuleDiscounts: _view.quoteTransfer.cartRuleDiscounts, - - prices: { - subTotal: _view.quoteTransfer.totals.subtotal, - storeCurrency: _view.quoteTransfer.shipment.method.storeCurrencyPrice, - grandTotal: _view.quoteTransfer.totals.grandtotal, - tax: _view.quoteTransfer.totals.taxtotal.amount, - discountTotal: _view.quoteTransfer.totals.discounttotal | default - } - }, - - title: 'checkout.step.summary.title' | trans -} {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-
-
- {% raw %}{{{% endraw %} 'checkout.step.summary.with_method' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %}data.paymentMethod{% raw %}}}{% endraw %} -
{% raw %}{{{% endraw %} 'checkout.step.summary.payment' | trans {% raw %}}}{% endraw %}
-
- - {% raw %}{%{% endraw %} include molecule('display-address') with { - class: 'text-small', - data: { - address: data.billingAddress - } - } only {% raw %}%}{% endraw %} -
- -
- {% raw %}{{{% endraw %} 'checkout.step.summary.with_method' | trans {% raw %}}}{% endraw %} {% raw %}{{{% endraw %} data.shipmentMethod {% raw %}}}{% endraw %} -
{% raw %}{{{% endraw %} 'checkout.step.summary.shipping' | trans {% raw %}}}{% endraw %}
-
- - {% raw %}{%{% endraw %} include molecule('display-address') with { - class: 'text-small', - data: { - address: data.shippingAddress - } - } only {% raw %}%}{% endraw %} -
-
- -
-
- {% raw %}{%{% endraw %} for item in data.cartItems {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set item = item.bundleProduct is defined ? item.bundleProduct : item {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('summary-item', 'CheckoutPage') with { - data: { - name: item.name, - quantity: item.quantity, - price: item.sumPrice | money, - options: item.productOptions | default({}), - bundleItems: item.bundleItems | default([]), - quantitySalesUnit: item.quantitySalesUnit, - amountSalesUnit: item.amountSalesUnit, - amount: item.amount - }, - embed: { - isLast: not loop.last, - item: item - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %}parent(){% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} if widgetExists('CartNoteQuoteItemNoteWidgetPlugin') {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if embed.item.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} widget('CartNoteQuoteItemNoteWidgetPlugin', embed.item) {% raw %}}}{% endraw %} {# @deprecated Use molecule('note-list', 'CartNoteWidget') instead. #} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elseif embed.item.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('note-list', 'CartNoteWidget') ignore missing with { - data: { - label: 'cart_note.checkout_page.item_note', - note: embed.item.cartNote - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if embed.isLast {% raw %}%}{% endraw %}
{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
- - {% raw %}{%{% endraw %} if data.transfer.cartNote is not empty {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if widgetExists('CartNoteQuoteNoteWidgetPlugin') {% raw %}%}{% endraw %} -
- {% raw %}{{{% endraw %} widget('CartNoteQuoteNoteWidgetPlugin', data.transfer) {% raw %}}}{% endraw %} {#@deprecated Use molecule('note-list', 'CartNoteWidget') instead.#} -
- {% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} include molecule('note-list', 'CartNoteWidget') ignore missing with { - data: { - label: 'cart_note.checkout_page.quote_note', - note: data.transfer.cartNote - } - } only {% raw %}%}{% endraw %} -
- {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -
- {% raw %}{%{% endraw %} widget 'CheckoutVoucherFormWidget' args [data.transfer] only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elsewidget 'CheckoutVoucherFormWidgetPlugin' args [data.transfer] only {% raw %}%}{% endraw %} {# @deprecated Use CheckoutVoucherFormWidget instead. #} - {% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} -
- % embed molecule('form') with { - class: 'box', - data: { - form: data.forms.summary, - submit: { - enable: can('SeeOrderPlaceSubmitPermissionPlugin'), - text: 'checkout.step.place.order' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - } - }, - embed: { - overview: data.overview - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block body {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('summary-overview', 'CheckoutPage') with { - data: embed.overview - } only {% raw %}%}{% endraw %} - -
- {% raw %}{{{% endraw %}parent(){% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if data.easycredit {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('easycredit-summary', 'Easycredit') with { - data: { - interest: data.easycredit.interest, - url: data.easycredit.url, - text: data.easycredit.text - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -
-
-{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- - -
-pdp.twig - -PDP page - `src/Pyz/Yves/ProductDetailPage/Theme/default/views/pdp/pdp.twig` - -```php -{% raw %}{%{% endraw %} extends template('page-layout-main') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - product: _view.product, - productUrl: _view.productUrl, - - title: product.metaTitle | default(_view.product.name), - metaTitle: product.metaTitle | default(_view.product.name), - metaDescription: _view.product.metaDescription | default, - metaKeywords: _view.product.metaKeywords | default -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block headScripts {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} parent() {% raw %}}}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block breadcrumbs {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} widget 'ProductBreadcrumbsWithCategoriesWidget' args [data.product] only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} elsewidget 'ProductCategoryWidgetPlugin' args [data.product] only {% raw %}%}{% endraw %} {# @deprecated Use ProductBreadcrumbsWithCategoriesWidget instead. #} - {% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block title {% raw %}%}{% endraw %} -

{% raw %}{{{% endraw %} data.product.name {% raw %}}}{% endraw %}

- -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
-
- {% raw %}{%{% endraw %} include molecule('product-carousel', 'ProductDetailPage') with { - class: 'box', - data: { - product: data.product - } - } only {% raw %}%}{% endraw %} -
- -
- {% raw %}{%{% endraw %} include molecule('product-configurator', 'ProductDetailPage') with { - class: 'box', - data: { - product: data.product - } - } only {% raw %}%}{% endraw %} -
-
- -{% raw %}{%{% endraw %} widget 'ProductAlternativeListWidget' args [data.product] only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} elsewidget 'ProductAlternativeWidgetPlugin' args [data.product] only {% raw %}%}{% endraw %} {# @deprecated Use ProductAlternativeListWidget instead. #} -{% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} include molecule('product-detail', 'ProductDetailPage') with { - class: 'box', - data: { - description: data.product.description, - attributes: data.product.attributes - } -} only {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} widget 'ProductReplacementForListWidget' args [data.product.sku] only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} elsewidget 'ProductReplacementForWidgetPlugin' args [data.product.sku] only {% raw %}%}{% endraw %} {# @deprecated Use ProductReplacementForListWidget instead. #} -{% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} widget 'ProductDetailPageReviewWidget' args [data.product.idProductAbstract] only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} elsewidget 'ProductReviewWidgetPlugin' args [data.product.idProductAbstract] only {% raw %}%}{% endraw %} {# @deprecated Use ProductDetailPageReviewWidget instead. #} -{% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} widget 'SimilarProductsWidget' args [data.product] only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} elsewidget 'SimilarProductsWidgetPlugin' args [data.product] only {% raw %}%}{% endraw %} {# @deprecated Use SimilarProductsWidget instead. #} -{% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} if widgetExists('ProductCmsBlockWidgetPlugin') {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} widget('ProductCmsBlockWidgetPlugin', data.product) {% raw %}}}{% endraw %} {# @deprecated Use molecule('product-cms-block', 'CmsBlockWidget') instead. #} -{% raw %}{%{% endraw %} else {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('product-cms-block', 'CmsBlockWidget') ignore missing with { - class: 'box', - data: { - idProductAbstract: data.product.idProductAbstract - } - } only {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -
-
- - {% info_block infoBox "Note" %} -You might want to configure the product detail page to add some validation and show the Easycredit badge in `src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-configurator/product-configurator.twig` -{% endinfo_block %} - -
-product-configurator.twig - -```php -... - {% raw %}{%{% endraw %} set easyCreditMinTreshold = 20000 {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set easyCreditMaxTreshold = 500000 {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} if data.product.price > easyCreditMinTreshold and data.product.price < easyCreditMaxTreshold {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} include molecule('easycredit-badge', 'EasyCredit' ) with { - data: { - title: 'EasyCredit:', - id: 'easy-credit-id' - }, - attributes: { - 'easycredit-options': '{ - "webshopId": "", - "finanzierungsbetrag": "' ~ data.product.price / 100 ~ '" , - "textVariante": "KURZ" - }' - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endif {% raw %}%}{% endraw %} -... -``` -
-
- diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.md deleted file mode 100644 index 28af60960ae..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Disabling address updates from the backend application for RatePay -description: Disable address updates from the backend application for Ratepay. -last_updated: Sep 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-disable-address-updates -originalArticleId: 6dae0972-c651-4cf4-998f-779ba71387c9 -redirect_from: - - /v1/docs/ratepay-disable-address-updates - - /v1/docs/en/ratepay-disable-address-updates - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-how-to-disable-address-updates-from-the-backend-application.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -To disable updates on addresses from the backend application, follow the steps described below: - -**Step 1**: - -* Overwrite on project side -`/vendor/spryker/spryker/Bundles/Sales/src/Spryker/
Zed/Sales/Presentation/Detail/boxes/addresses.twig` -* Remove ' `Edit`' button - -**Step 2**: - -* Overwrite on project side -`/vendor/spryker/spryker/Bundles/Sales/src/Spryker/
Zed/Sales/Communication/Controller/EditController.php` -* Disable ' `addressAction`' diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.md deleted file mode 100644 index 031ae8586fb..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Integrating the Direct Debit payment method for RatePay -description: Integrate direct debit payment through Ratepay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-direct-debit -originalArticleId: 2cdfdea7-5a65-4daa-9a38-c31c25a3fc65 -redirect_from: - - /v1/docs/ratepay-direct-debit - - /v1/docs/en/ratepay-direct-debit - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html ---- - -## Workflow Scenarios - - -### Payment Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-ddelv-payment-flow.png) - -### Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-ddelv-payment-flow.png) - -### Partial Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-ddelv-partial-cancellation-flow.png) - -### Refund Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-ddelv-refund-flow.png) - -## Integrating Direct Debit -In order to integrate direct debit payment, two simple steps are needed: set RatePAY Direct Debit payment configuration and call the facade functions. - -### Set RatePay Direct Debit Configuration - -The configuration to integrate Direct Debit payments using RatePAY is: - -* `PROFILE_ID`: merchant's login (required). -* `SECURITY_CODE`: merchant's password (required). -* `SHOP_ID`: shop identifier (required). -* `SYSTEM_ID`: system identifier (required). -* `CLIENT_VERSION`: client system version. -* `CLIENT_NAME`: client name. -* `RATEPAY_REQUEST_VERSION`: request version. -* `RATEPAY_REQUEST_XMLNS_URN`: request XMLNS urn. -* `MODE`: the mode of the transaction, either test or live (required). -* `API_TEST_URL`: test mode API url. -* `API_LIVE_URL`: live mode API url. -* `DEBIT_PAY_TYPES`: debit pay types, can be DIRECT-DEBIT or BANK-TRANSFER. - -## Performing Requests - -In order to perform the needed requests, you can easily use the implemented state machine commands and conditions. The [RatePAY State Machine Commands and Conditions](/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html) section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-installment-payment-method-for-ratepay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-installment-payment-method-for-ratepay.md deleted file mode 100644 index f2535c58a5d..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-installment-payment-method-for-ratepay.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Integrating the Installment payment method for RatePay -description: Integrate installment payment through Ratepay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-installment -originalArticleId: 84f0fbcc-ba5e-483e-8a03-b72dbfe595c0 -redirect_from: - - /v1/docs/ratepay-installment - - /v1/docs/en/ratepay-installment - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -The shop must implement the Calculation Request operation to calculate an example installment plan and show it to the customer. Some input parameters for the calculation are passed from the shop (e.g. the shopping basket total), others are stored in the merchant's RatePAY profile held by the Gateway (e.g. the allowed interest rate range). The merchant's profile parameters can be retrieved by the Configuration Request operation. - -## Workflow Scenarios - -### Payment Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-installment-payment-flow.png) - -### Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-installment-cancellation-flow.png) - -### Partial Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-installment-partial-cancellation-flow.png) - -### Refund Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-installment-refund-flow.png) - -## Integrating RatePAY Installment Payment - -In order to integrate installment payment, two simple steps are needed: set RatePAY installment payment configuration and call the facade functions. - -### Set RatePAY Installment Configuration - -The installment requests use two additional types of requests called Configuration and Calculation Requests. - -Three groups of configuration are defined: - -* transaction configuration for handling the basic requests (init-payment, payment-request, etc) -* installment configuration for handling configuration -* calculation for handling calculation requests. - -The configuration to integrate Installment payment method using RatePAY is: - -* `PROFILE_ID`: merchant's login (required). -* `SECURITY_CODE`: merchant's password (required). -* `SHOP_ID`: shop identifier (required). -* `SYSTEM_ID`: system identifier (required). -* `CLIENT_VERSION`: client system version. -* `CLIENT_NAME`: client name. -* `RATEPAY_REQUEST_VERSION`: request version. -* R `ATEPAY_REQUEST_XMLNS_URN`: request XMLNS urn. -* `MODE`: the mode of the transaction, either test or live (required). -* `API_TEST_URL`: test mode API url. -* `API_LIVE_URL`: live mode API url. -* `DEBIT_PAY_TYPES`: debit pay types, can be DIRECT-DEBIT or BANK-TRANSFER. -* `INSTALLMENT_CALCULATION_TYPES`: installment calculator types, can be by time or by date. - -You can copy over configs to your config from the RatePAY module's `config.dist.php` file. - -### Perform Requests - -In order to perform the needed requests, you can easily use the implemented state machine commands and conditions. The [RatePAY State Machine Commands and Conditions](/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html) section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-invoice-payment-method-for-ratepay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-invoice-payment-method-for-ratepay.md deleted file mode 100644 index 1a4cf04b3e0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-invoice-payment-method-for-ratepay.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Integrating the Invoice payment method for RatePay -description: Integrate invoice payment through Ratepay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-invoice -originalArticleId: 2f16b13f-4fb4-436b-9a05-5245aee85e5f -redirect_from: - - /v1/docs/ratepay-invoice - - /v1/docs/en/ratepay-invoice - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html -related: - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -## Workflow Scenarios -### Payment Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-installment-payment-flow.png) - -### Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-invoice-cancellation-flow.png) - -### Partial Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-invoice-partial-cancellation-flow.png) - -### Refund Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-invoice-refund-flow.png) - - -## Integrating RatePAY Invoice Payment -To integrate invoice payment, you need to: RatePAY invoice payment configuration and call the facade functions. - -## Setting RatePAY Invoice Configuration -The configuration to integrate invoice payments using RatePAY is: - - * `PROFILE_ID`: merchant’s login (required). - - * `SECURITY_CODE`: merchant’s password (required). - - * `SHOP_ID`: shop identifier (required). - - * `SYSTEM_ID`: system identifier (required). - - * `CLIENT_VERSION`: client system version. - - * `CLIENT_NAME`: client name. - - * `RATEPAY_REQUEST_VERSION`: request version. - - * `RATEPAY_REQUEST_XMLNS_URN`: request XMLNS urn. - - * `MODE`: the mode of the transaction, either test or live (required). - - * `API_TEST_URL`: test mode API url. - - * `API_LIVE_URL`: live mode API url. - -## Perform Requests -To perform the needed requests, use the [RatePAY State Machine Commands and Conditions](/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html) . You can also use the `facademethods`directly which, however, are invoked by the state machine. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-prepayment-payment-method-for-ratepay.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-prepayment-payment-method-for-ratepay.md deleted file mode 100644 index b8a775596b0..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-prepayment-payment-method-for-ratepay.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Integrating the Prepayment payment method for RatePay -description: Integrate prepayment through Ratepay into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-prepayment -originalArticleId: 906d644a-1bdf-45b9-9128-97524ec6a81c -redirect_from: - - /v1/docs/ratepay-prepayment - - /v1/docs/en/ratepay-prepayment - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -## Workflow Scenarios - -### Payment Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay_prepayment_payment_flow.png) - -### Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay_prepayment_cancellation_flow.png) - -### Partial Cancellation Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay_prepayment_payment_flow.pngng) - -### Refund Flow -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/payolution_installment_partialrefund_case.png) - -## Integrating RatePay Prepayment Payment - -To integrate prepayment payment: set RatePAY prepayment payment configuration and call the facade functions. - -### Set RatePay Prepayment Configuration - -The configuration to integrate prepayment payments using RatePAY is: - -* `PROFILE_ID`: merchant's login (required). -* `SECURITY_CODE`: merchant's password (required). -* `SHOP_ID`: shop identifier (required). -* `SYSTEM_ID`: system identifier (required). -* `CLIENT_VERSION`: client system version. -* `CLIENT_NAME`: client name. -* `RATEPAY_REQUEST_VERSION`: request version. -* `RATEPAY_REQUEST_XMLNS_URN`: request XMLNS urn. -* `MODE`: the mode of the transaction, either test or live (required). -* `API_TEST_URL`: test mode API URL. -* `API_LIVE_URL`: live mode API URL. - -### Performing Requests - -In order to perform the needed requests, you can easily use the implemented state machine commands and conditions. The RatePAY State Machine Commands and Conditions section gives a summary of them. You can also use the facade methods directly which, however, are invoked by the state machine. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-core-module-structure-diagram.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-core-module-structure-diagram.md deleted file mode 100644 index 51e450e8856..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-core-module-structure-diagram.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: RatePay- Core Module Structure Diagram -description: This article includes module schema with the class structure and flow. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-structure-diag -originalArticleId: dacb6b2e-3af2-4ff1-8fea-8579101f9803 -redirect_from: - - /v1/docs/ratepay-structure-diag - - /v1/docs/en/ratepay-structure-diag - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-core-module-structure-diagram.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -The RatePay core module uses the following class structure and flow. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay_core_module_structure.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-facade-methods.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-facade-methods.md deleted file mode 100644 index a19221d6abe..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-facade-methods.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: RatePay facade methods -description: This article includes facade methods provided by Ratepay. -last_updated: Sep 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-facade -originalArticleId: 0e9449c2-661f-44bc-a0e6-47310294ffdb -redirect_from: - - /v1/docs/ratepay-facade - - /v1/docs/en/ratepay-facade - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-facade-methods.html - - /docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/integrating-payment-methods-for-ratepay/ratepay-facade-methods.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -| Facade Method | Param | Return | Description | -| --- | --- | --- | --- | -| `saveOrderPayment` | `QuoteTransfer`, `CheckoutResponseTransfer` | void | Saves RatePAY payment method data according to quote and checkout response transfer data. | -| `initPayment` | `QuoteTransfer` | `RatepayResponseTransfer` | Performs the init payment request to RatePAY Gateway to retrieve transaction data. | -| `requestPayment` | `QuoteTransfer` | `RatepayResponseTransfer` | Performs check the customer and order details payment request to RatePAY Gateway. | -| `confirmPayment` | `OrderTransfer` | `RatepayResponseTransfer` | Performs the payment confirmation request to RatePAY Gateway. | -| `confirmDelivery` | `OrderTransfer`, array (Order Items) | `RatepayResponseTransfer` | Performs the delivery confirmation request to RatePAY Gateway. | -| `cancelPayment` | `OrderTransfer`, array (Order Items) | `RatepayResponseTransfer` | Performs the cancel payment request to RatePAY Gateway. | -| `refundPayment` | `OrderTransfer`, array (Order Items) | `RatepayResponseTransfer` | Performs the refund payment request to RatePAY Gateway. | -| `installmentConfiguration` | `QuoteTransfer` | `RatepayInstallmentConfigurationResponseTransfer` | Performs the installment payment method calculator configuration request to RatePAY Gateway. | -| `installmentCalculation` | `QuoteTransfer` | `RatepayInstallmentCalculationResponseTransfer` | Performs the installment payment method calculator calculation request to RatePAY Gateway. | -| `isPaymentConfirmed` | `OrderTransfer` | bool | Checks if the payment confirmation API request got success response from RatePAY Gateway. | -| `isDeliveryConfirmed` | `OrderTransfer` | bool | Checks if the delivery confirmation API request got success response from RatePAY Gateway. | -| `isRefundApproved` | `OrderTransfer` | bool | Checks if the payment refund API request got success response from RatePAY Gateway. | -| `isCancellationConfirmed` | `OrderTransfer` | bool | Checks if the payment cancellation API request got success response from RatePAY Gateway. | -| `requestProfile` | | `RatepayProfileResponseTransfer` | Retrieves profile data from Ratepay Gateway. | -| `expandItems` | `CartChangeTransfer` | `CartChangeTransfer` | Expands cart items with necessary for RatePAY information (short_description, long_description, etc). | -| `install` | `MessengerInterface` | void | Installs module translations to project glossary. | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-payment-workflow.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-payment-workflow.md deleted file mode 100644 index e8a7655c237..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-payment-workflow.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: RatePay - Payment Workflow -description: This article describes the request flow that uses Ratepay. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-payment-workflow -originalArticleId: 04bd95c1-61b9-4db3-9386-1b35585dd124 -redirect_from: - - /v1/docs/ratepay-payment-workflow - - /v1/docs/en/ratepay-payment-workflow - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-payment-workflow.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -Invoice, Prepayment and Direct Debit methods have the same request flow. -The payment workflow consists of the following requests: - -* `PAYMENT INIT`- Initialize the transaction and get a valid transaction-id. -* `PAYMENT QUERY`- Check the customer and order details, perform a configurable risk scoring, retrieve the payment products permitted in the given context. The PAYMENT_QUERY full can be booked with a guaranteed acceptance. This means that all products given back will be accepted by a following PAYMENT_REQUEST. -* `PAYMENT REQUEST`- Check the customer and order details, perform risk scoring, return either customer acceptance or rejection. -* `PAYMENT CONFIRM`- Finalize the payment process. -* `CONFIRMATION DELIVER`- Immediately after the ordered goods have been delivered to the customer, the merchant must send a Confirmation Deliver message to the RatePAY Gateway. - - Installment method has additional requests for installment calculator: - -* `CONFIGURATION REQUEST`- Retrieve the stored configuration parameters for a certain merchant profile. - -* `CALCULATION REQUEST`- Provides an installment plan depending on the request parameters and stored parameters of the merchant profile. - -## Payment Change Workflow -Trigger payment change processing and fee charging: - -`PAYMENT CHANGE`cancellation - Merchant cancels some or all items of the order. - -`PAYMENT CHANGE`refund - Merchant returns some or all items of the order. - -## Payment Workflow Diagram -![Payment Workflow Diagram](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-payment-workflow.png) - -## Checkout and Delivery process flow -![RatePay - Checkout Delivery Process Flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Ratepay/ratepay-checkout-delivery-process-flow.png) diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.md deleted file mode 100644 index 86ef7d3b13c..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: RatePay - State Machine Commands and Conditions -description: This article includes the state machine commands and conditions provided by Ratepay. -last_updated: Sep 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay-state-machine -originalArticleId: 8f294381-0ff4-4fe3-b87c-2d21afaf7532 -redirect_from: - - /v1/docs/ratepay-state-machine - - /v1/docs/en/ratepay-state-machine - - /docs/scos/user/technology-partners/201811.0/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html -related: - - title: RatePay - link: docs/scos/user/technology-partners/page.version/payment-partners/ratepay.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-facade-methods.html - - title: Disabling address updates from the backend application for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html ---- - -## Commands - -### ConfirmDelivery - -* Send delivery confirmation data to RatePAY -* Response: - - Success: Delivery confirmed - - Declined: Request format error or delivery confirmation error -* Plugin: `ConfirmDeliveryPlugin` - -### ConfirmPayment - -* Send payment confirmation data to RatePAY -* Response: - - Success: Payment confirmed - - Declined: Request format error or payment confirmation error -* Plugin: `ConfirmPaymentPlugin` - -### CancelPayment - -* Send order items cancellation data to RatePAY -* Response: - - Success: Order items canceled successfully - - Declined: Request format error or order items cancellation error -* Plugin: `CancelPaymentPlugin` - -### RefundPayment - -* Send refund order items data to RatePAY -* Response: - - Success: Order items refunded successfully - - Declined: Request format error or order items refund error -* Plugin: `RefundPaymentPlugin` - -## Conditions - -| Name | Description | Plugin | -| --- | --- | --- | -| `IsRefunded` | Checks transaction status for successful order items refund response | `IsRefundedPlugin` | -| `IsPaymentConfirmed` | Checks transaction status for successful order items payment response | `IsPaymentConfirmedPlugin` | -| `IsDeliveryConfirmed` | Checks transaction status for successful order items delivery response | `IsDeliveryConfirmedPlugin` | -| `IsCancellationConfirmed` | Checks transaction status for successful order items cancellation response | `IsCancellationConfirmedPlugin` | diff --git a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machines.md b/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machines.md deleted file mode 100644 index 5f8d12ac2eb..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/payment-partners/ratepay/ratepay-state-machines.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: RatePay state machines -description: Offer intelligent payment solutions for handling most popular paylater models like invoice and installments on the internet for the DACH region by integrating RatePay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template ---- - -We use state machines for handling and managing orders and payments. To integrate RatePAY payments, a state machine for RatePAY should be created. - -A basic and fully functional state machine for each payment method is already built: -* `RatepayInvoice01.xml` -* `RatepayPrepayment01.xml` -* `RatepayElv01.xml` -* `RatepayInstallment01.xml` - -You can use the same state machines or build new ones. The state machine commands and conditions trigger RatePay facade methods calls in order to perform the needed requests to RatePAY. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/product-information-pimerp/akeneo/installing-and-configuring-akeneo.md b/docs/scos/dev/technology-partner-guides/201811.0/product-information-pimerp/akeneo/installing-and-configuring-akeneo.md deleted file mode 100644 index 0cdedecd04a..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/product-information-pimerp/akeneo/installing-and-configuring-akeneo.md +++ /dev/null @@ -1,560 +0,0 @@ ---- -title: Installing and configuring Akeneo -description: This article provides installation and configuration details for the Akeneo module in the Spryker-based project. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/akeneo-installation-configuration -originalArticleId: 26ad93ae-58cf-484c-800c-b99ee756ef0b -redirect_from: - - /v1/docs/akeneo-installation-configuration - - /v1/docs/en/akeneo-installation-configuration -related: - - title: Akeneo - link: docs/scos/user/technology-partners/page.version/product-information-pimerp/akeneo.html ---- - -## Installation - -To install AkeneoPim, add `AkeneoPimMiddlewareConnector` by running the console command. Set `akeneo/api-php-client` version that you need. -```bash -composer require akeneo/api-php-client:^4.0.0 spryker-eco/akeneo-pim:^1.0.0 spryker-eco/akeneo-pim-middleware-connector:^1.0.0 -``` - -## Global Configuration - -Add `SprykerMiddleware` to your project's core namespaces: -```php -$config[KernelConstants::CORE_NAMESPACES] = [ - 'SprykerShop', - 'SprykerMiddleware', - 'SprykerEco', - 'Spryker', - ]; - ``` - -To set up the Akeneo initial configuration, use the credentials you received from your PIM: -```php -$config[AkeneoPimConstants::HOST] = ''; -$config[AkeneoPimConstants::USERNAME] = ''; -$config[AkeneoPimConstants::PASSWORD] = ''; -$config[AkeneoPimConstants::CLIENT_ID] = ''; -$config[AkeneoPimConstants::CLIENT_SECRET] = ''; -``` - -Next, specify your paths to the additional map files: -```xml -$config[AkeneoPimMiddlewareConnectorConstants::LOCALE_MAP_FILE_PATH] = APPLICATION_ROOT_DIR . '/data/import/maps/locale_map.json'; -$config[AkeneoPimMiddlewareConnectorConstants::ATTRIBUTE_MAP_FILE_PATH] = APPLICATION_ROOT_DIR . '/data/import/maps/attribute_map.json'; -$config[AkeneoPimMiddlewareConnectorConstants::SUPER_ATTRIBUTE_MAP_FILE_PATH] = APPLICATION_ROOT_DIR . '/data/import/maps/super_attribute_map.json'; -``` - -This being done, specify the ID of the category template that should be assigned to the imported categories: -```php -$config[AkeneoPimMiddlewareConnectorConstants::FK_CATEGORY_TEMPLATE] = 1; -``` - -Next, specify the name of a tax set for the imported products: -```php -$config[AkeneoPimMiddlewareConnectorConstants::TAX_SET] = 1; -``` - -Finally, specify the locales that should be imported to shops and stores in which imported products are to be available, and specify how prices should be mapped according to locales: -```php -$config[AkeneoPimMiddlewareConnectorConstants::LOCALES_FOR_IMPORT] = [ - 'de_DE', - 'de_AT', -]; -$config[AkeneoPimMiddlewareConnectorConstants::ACTIVE_STORES_FOR_PRODUCTS] = [ - 'DE', - 'AT' -]; -$config[AkeneoPimMiddlewareConnectorConstants::LOCALES_TO_PRICE_MAP] = [ - 'de_DE' => [ - 'currency' => 'EUR', - 'type' => 'DEFAULT', - 'store' => 'DE', - ], - 'en_US' => [ - 'currency' => 'USD', - 'type' => 'DEFAULT', - 'store' => 'US', - ], -]; -``` - -## Dependency Configuration - -Add Middleware Process console command to `src/Pyz/Zed/Console/ConsoleDependencyProvider.php` in your project: -```php -... -use SprykerMiddleware\Zed\Process\Communication\Console\ProcessConsole; -... - -protected function getConsoleCommands(Container $container) -{ - $commands = [ - ... - new ProcessConsole(), - ]; - ... - return $commands; -} -``` - -Create `ProcessDependencyProvider` on a project level for specifying `ConfigurationPlugins`. Add `src/Pyz/Zed/Process/ProcessDependencyProvider.php` file: -```php - -ProductAbstractDataImporterPlugin.php - - ```php - getFacade()->importProductsAbstract($data); - } -} -``` -
-
- -Implement your own `DataImporter` for importing products to the shop database. It can be a business module inside the `AkeneoPimMiddlewareConnector` module. Example: - -
-AkeneoDataImporter.php - - ```php - dataImporterPublisher = $dataImporterPublisher; - $this->dataSetStepBroker = $dataSetStepBroker; - $this->dataSet = $dataSet; - $this->writerPlugins = $writerPlugins; - } - - /** - * @param array $data - * - * @return void - */ - public function import(array $data): void - { - EventBehaviorConfig::disableEvent(); - foreach ($data as $item) { - $this->dataSet->exchangeArray($item); - $this->dataSetStepBroker->execute($this->dataSet); - /** @var DataSetWriterPluginInterface $writerPlugin */ - foreach ($this->writerPlugins as $writerPlugin) { - $writerPlugin->write($this->dataSet); - } - } - foreach ($this->writerPlugins as $writerPlugin) { - $writerPlugin->write($this->dataSet); - } - EventBehaviorConfig::enableEvent(); - $this->dataImporterPublisher->triggerEvents(); - } -} -``` -
-
- - -Implement facade methods for the `AkeneoPimMiddlewareConnector` module. Example: - -```php -class AkeneoPimMiddlewareConnectorFacade extends SprykerAkeneoPimMiddlewareConnectorFacade implements AkeneoPimMiddlewareConnectorFacadeInterface -... - /** - * @param array $data - */ - public function importProductsAbstract(array $data): void - { - $this->getFactory() - ->createProductAbstractImporter() - ->import($data); - } -... -``` - -## Dataset Step Broker and Writer - -Business Factory method is used for Importer creation. Determine the data writing approach and how you want to broke the payload. The `AkeneoImporter` you implemented usually expects the implementation of `\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerInterface`. - -For better understanding, see the example of the `AkeneoDataImporter` creation for importing abstract products in `AkeneoPimMiddlewareConnectorBusinessFactory.` - -
-AkeneoPimMiddlewareConnectorBusinessFactory - - ```php - ... -class AkeneoPimMiddlewareConnectorBusinessFactory extends SprykerAkeneoPimMiddlewareConnectorBusinessFactory -... - - /** - * @return \Pyz\Zed\AkeneoPimMiddlewareConnector\Business\AkeneoDataImporter\AkeneoDataImporterInterface - */ - public function createProductAbstractImporter() - { - return new AkeneoDataImporter( - $this->createDataImporterPublisher(), - $this->createProductAbstractImportDataSetStepBroker(), - $this->createDataSet(), - $this->getProvidedDependency(AkeneoPimMiddlewareConnectorDependencyProvider::PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS) - ); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetInterface - */ - public function createDataSet() - { - return new DataSet(); - } - - /** - * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerInterface - * - * @throws \Spryker\Zed\Kernel\Exception\Container\ContainerKeyNotFoundException - */ - public function createProductAbstractImportDataSetStepBroker() - { - $dataSetStepBroker = new DataSetStepBroker(); - $dataSetStepBroker->addStep(new ProductAbstractStep()); - - return $dataSetStepBroker; - } -... -``` -
-
- -As you can see, in `DataSetStepBroker,` you can add your own steps for preparing data for writers. You can find ready made steps in the `DataImport` module or implement your own steps. Example: - -
-ProductAbstractStep - - ```php - setSku($dataSet[static::KEY_ABSTRACT_SKU]); - - $productAbstractEntityTransfer - ->setColorCode($dataSet[static::KEY_COLOR_CODE]) - ->setFkTaxSet($dataSet[static::KEY_TAX_ID) - ->setAttributes(json_encode($dataSet[static::KEY_ATTRIBUTES])) - ->setNewFrom($dataSet[static::KEY_NEW_FROM]) - ->setNewTo($dataSet[static::KEY_NEW_TO]); - - $dataSet[static::DATA_PRODUCT_ABSTRACT_TRANSFER] = $productAbstractEntityTransfer; - } - - /** - * @param \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetInterface $dataSet - * - * @return void - */ - protected function importProductCategories(DataSetInterface $dataSet): void - { - $dataSet[static::DATA_PRODUCT_CATEGORY_TRANSFER] = []; - } -} -``` -
-
- -You can change default data mappers and translators for overriding keys or values. By default, Akeneo has a list of predefined mappers, translators and validators for each import type, but it can be adjusted to meet your requirements. Check the [middleware documentation](/docs/scos/dev/back-end-development/data-manipulation/data-ingestion/spryker-middleware.html) for more details. - -You also need to take care of that data that is to be written to the database. Two approaches can be used for that. - -For attributes and categories, Spryker has implemented writer steps, so no plugins are required for that. Example: - -
-AkeneoPimMiddlewareConnectorBusinessFactory - - ```php - /** - * @return \Pyz\Zed\AkeneoPimMiddlewareConnector\Business\AkeneoDataImporter\AkeneoDataImporterInterface - */ -public function createCategoryImporter(): AkeneoDataImporterInterface -{ - return new AkeneoDataImporter( - $this->createDataImporterPublisher(), - $this->createCategoryImportDataSetStepBroker(), - $this->createDataSet() - ); -} - -/** - * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerInterface - */ -public function createCategoryImportDataSetStepBroker() -{ - $dataSetStepBroker = new DataSetStepBroker(); - $dataSetStepBroker->addStep($this->createCategoryWriteStep()); - - return $dataSetStepBroker; -} - -/** - * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface - */ -public function createCategoryWriteStep() -{ - return new CategoryWriterStep($this->createCategoryReader()); -} - -/** - * @return \Spryker\Zed\CategoryDataImport\Business\Model\Reader\CategoryReader - */ -public function createCategoryReader(): CategoryReader -{ - return new CategoryReader(); -} -``` -
-
- -The example demonstrates how you can skip adding plugins for writing data to the database. - -Product import is a more complex operation, so Spryker provides bulk insertion plugins for that. They are faster than the writer steps. - -You can use the existing plugins or create your own. The right way to add external plugins is to use dependency providers. We have two types of writer plugins: Propel plugins and PDO plugins. Check the examples for both of them below. - -
-AkeneoPimMiddlewareConnectorBusinessFactory - - ```php - /** - * @return \Pyz\Zed\AkeneoPimMiddlewareConnector\Business\AkeneoDataImporter\AkeneoDataImporterInterface - */ -public function createProductAbstractImporter() -{ - return new AkeneoDataImporter( - $this->createDataImporterPublisher(), - $this->createProductAbstractImportDataSetStepBroker(), - $this->createDataSet(), - $this->getProvidedDependency(AkeneoPimMiddlewareConnectorDependencyProvider::PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS) - ); -} -``` -
-
- -
-AkeneoPimMiddlewareConnectorDependencyProvider - - ```php - ... -class AkeneoPimMiddlewareConnectorDependencyProvider extends SprykerAkeneoPimMiddlewareConnectorDependencyProvider -{ - public const PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS = 'PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS'; - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - protected function addProductAbstractPropelWriterPlugins(Container $container): Container - { - $container[static::PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS] = function () { - return [ - new ProductAbstractPropelWriterPlugin(), - ]; - }; - - return $container; - } - -... -} -``` -
-
- -When we use only `ProductAbstractPropelWriterPlugin`, `ProductStores`, `ProductPrices`, etc are not imported. If you want to import something other than products, you need to add more writer plugins. - -For example, if you want to import a product store, provide one more plugin in dependency provider. - -
-AkeneoPimMiddlewareConnectorDependencyProvider - - ```php - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ -protected function addProductAbstractPropelWriterPlugins(Container $container): Container -{ - $container[static::PRODUCT_ABSTRACT_PROPEL_WRITER_PLUGINS] = function () { - return [ - new ProductAbstractPropelWriterPlugin(), - new ProductAbstractStorePropelWriterPlugin(), - ]; - }; - - return $container; -} -``` -
-
- -In case you add more writer plugins, you might have to add more steps to dataset step broker. - -## Console Commands - -Now the following console commands are available in your project. Run them one by one. -```bash -1) Command to import super attributes: -vendor/bin/console middleware:process:run -p SUPER_ATTRIBUTE_IMPORT_PROCESS -o data/import/maps/super_attribute_map.json - -2) Command to prepare locale mapping: -vendor/bin/console middleware:process:run -p LOCALE_MAP_IMPORT_PROCESS -o data/import/maps/locale_map.json - -3) Command to prepare products attributes mapping: -vendor/bin/console middleware:process:run -p ATTRIBUTE_MAP_PROCESS -o data/import/maps/attribute_map.json - -4) Command to import categories: -vendor/bin/console middleware:process:run -p DEFAULT_CATEGORY_IMPORT_PROCESS - -5) Command to import products attributes: -vendor/bin/console middleware:process:run -p ATTRIBUTE_IMPORT_PROCESS - -6) Command to prepare product models data in local file: -vendor/bin/console middleware:process:run -p PRODUCT_MODEL_PREPARATION_PROCESS -o data/import/maps/product_models.json - -7) Command to import product model data (abstract products): -vendor/bin/console middleware:process:run -p DEFAULT_PRODUCT_MODEL_IMPORT_PROCESS -i data/import/maps/product_models.json - -8) Command to prepare products data in local file: -vendor/bin/console middleware:process:run -p PRODUCT_PREPARATION_PROCESS -o data/import/maps/products.json - -9) Command to import product model data (abstract products): -vendor/bin/console middleware:process:run -p DEFAULT_PRODUCT_IMPORT_PROCESS -i data/import/maps/products.json -``` - - - -1. On a project level, you can change `DefaultProductImportDictionary` instead of using the `EnrichAttributes` translator function or extending it. -2. Price attributes (`pim_catalog_price_collection`), except the one with `attribute_key = 'price'`, are skipped. For correct import, products should contain an attribute with `attribute_type pim_catalog_price_collection` and `attribute_key 'price'`. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/installing-and-configuring-seven-senders.md b/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/installing-and-configuring-seven-senders.md deleted file mode 100644 index 4745a8e8565..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/installing-and-configuring-seven-senders.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Installing and configuring Seven Senders -template: howto-guide-template ---- - - -This document describes how to install and configure the Seven Senders technology partner. - -## Installation - -To install Seven Senders, run the command in the console: -```bash -composer require spryker-eco/sevensenders:1.0.0 -``` - -## Configuration - -To set up the Seven Senders initial configuration, use the credentials you received from your Seven Senders server. Space id, key id and secret you can get from Settings → API keys panel on Seven Senders server: -```php -$config[SevensendersConstants::API_KEY] = ''; -$config[SevensendersConstants::API_URL] = ''; -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/integrating-seven-senders.md b/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/integrating-seven-senders.md deleted file mode 100644 index 7a7e8d58506..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/integrating-seven-senders.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Integrating Seven Senders -template: howto-guide-template ---- - -This document describes how to integrate the Seven Senders technology partner. - -## Oms commands - -Seven Senders module has two different commands: - -* `\SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Command\SevensendersOrderPlugin` -* `\SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Command\SevensendersShipmentPlugin` - -You can use this commands in `\Pyz\Zed\Oms\OmsDependencyProvider::getCommandPlugins` -```php -... -use Spryker\Zed\Oms\Communication\Plugin\Oms\Command\SendOrderConfirmationPlugin; -use Spryker\Zed\Oms\Communication\Plugin\Oms\Command\SendOrderShippedPlugin; -... - -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection - */ -protected function getCommandPlugins(Container $container) -{ - $collection = parent::getCommandPlugins($container); - - ... - $collection->add(new SevenordersOrderPlugin(), 'Sevensenders/NewOrder'); - $collection->add(new SevenordersShipmentPlugin(), 'Sevensenders/NewShipment'); - ... - - return $collection; -} -``` - -After you are ready to use commands in OMS setup: -```xml - - - - -``` - -## Oms conditions - -Sevensenders module has two different conditions: - -* `SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Condition\IsSuccessfulPreviousOrderResponseConditionPlugin` -* `SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Condition\IsSuccessfulPreviousShipmentResponseConditionPlugin` - -You can use these commands in `\Pyz\Zed\Oms\OmsDependencyProvider::getConditionPlugins` -```php -... -use SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Condition\IsSuccessfulPreviousOrderResponseConditionPlugin; -use SprykerEco\Zed\Sevensenders\Communication\Plugin\Oms\Condition\IsSuccessfulPreviousShipmentResponseConditionPlugin; -... - -/** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Condition\ConditionCollection - */ -protected function getConditionPlugins(Container $container) -{ - $collection = parent::getConditionPlugins($container); - - ... - $collection->add(new IsSuccessfulPreviousOrderResponseConditionPlugin(), 'Sevensenders/IsSuccessfulResponse'); - $collection->add(new IsSuccessfulPreviousShipmentResponseConditionPlugin(), 'Sevensenders/IsSuccessfulResponse'); - ... - - return $collection; -} -``` - -After you are ready to use commands in OMS setup: -```xml - - new - shipping confirmed - shipping_confirmed - -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-api-requests.md b/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-api-requests.md deleted file mode 100644 index 2324f0ff44f..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-api-requests.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Seven Senders—API requests -template: concept-topic-template ---- - -`\SprykerEco\Zed\Inxmail\Business\Api\Adapter\EventAdapter` extending `\SprykerEco\Zed\Sevensenders\Business\Api\Adapter\SevensendersApiAdapter` contains everything for sending data to Seven Senders system for events. - -You should use `\Generated\Shared\Transfer\SevensendersRequestTransfer` for request and `\Generated\Shared\Transfer\SevensendersResponseTransfer` -```xml - - - - - - - - - - - - - - -``` diff --git a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-mappers.md b/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-mappers.md deleted file mode 100644 index 7de82c6abb9..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-mappers.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Seven Senders—Mappers -template: concept-topic-template ---- - -For mapping data from Spryker to Seven Senders `\SprykerEco\Zed\Sevensenders\Business\Mapper\OrderMapper` and `\SprykerEco\Zed\Sevensenders\Business\Mapper\ShipmentMapper` are used by default. -```php - (string)$orderTransfer->getIdSalesOrder(), - 'order_url' => '', - 'order_date' => $orderTransfer->getCreatedAt(), - 'delivered_with_seven_senders' => true, - 'boarding_complete' => true, - 'language' => $orderTransfer->getLocale() ? $orderTransfer->getLocale()->getLocaleName() : '', - 'promised_delivery_date' => $orderTransfer->getShipmentDeliveryTime(), - ]; - - $transfer = new SevensendersRequestTransfer(); - $transfer->setPayload($payload); - - return $transfer; - } -} - -``` - -You can extend `OrderMapper` on the project level and map fields as you need. If you want to create a new mapper you should implement `SprykerEco\Zed\Sevensenders\Business\Mapper\MapperInterface`. diff --git a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-persistance-layer.md b/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-persistance-layer.md deleted file mode 100644 index 5ee808bf3e1..00000000000 --- a/docs/scos/dev/technology-partner-guides/201811.0/shipment/seven-senders/seven-senders-persistance-layer.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Seven Senders—Persistence layer -template: concept-topic-template ---- - -There is a table in the database for saving response and request data: - -```xml - - - - - - - - - - - - - - - - - - - -
- - - - -
-
-``` diff --git a/docs/scos/user/back-office-user-guides/201811.0/about-back-office-user-guides.md b/docs/scos/user/back-office-user-guides/201811.0/about-back-office-user-guides.md deleted file mode 100644 index 123a6aaa8bf..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/about-back-office-user-guides.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: About the Administration Interface Guide -description: The Spryker Back Office user guide provides shop owners with procedures on how to manage the online store in the Back Office using Spryker Commerce OS. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/about-the-back-office-user-guide -originalArticleId: 8b57dc93-092a-4e67-8701-b4d80fc78225 -redirect_from: - - /v1/docs/about-the-back-office-user-guide - - /v1/docs/en/about-the-back-office-user-guide - - /v1/docs/about-user-guides - - /v1/docs/en/about-user-guides ---- - -This is a non-technical guide for people who want to know how to manage their store or stores using the Spryker Commerce OS. - -In this guide, you will find: - -1. General information about the Back Office. -2. General information about how to manage the online store from the Back Office. -3. You will also find detailed procedural information describing the possible tasks you can do. This information will be divided into B2C related tasks and B2B related tasks where it is applicable. - -{% info_block infoBox "Reading Tips" %} -If you are only interested in a B2C scenario, feel free to ignore all content flagged as B2B. However, we highly recommend that B2B users first understand the shop management fundamentals by reviewing the B2C content before progressing to the B2B content. -{% endinfo_block %} - -The information is divided into concepts, tasks, and references. - -* In concept, you will find the general information about a specific Back Office feature. -* In the task, you find the steps you need to perform to make the data setup for a particular entity. -* In the reference topic, you will find all the information about the fields you see on the screen, specific behavior (if any) of an entity, and any other referential details you need to succeed in the task. - -In the concepts for each Back Office section, you will find a standardized flow of events for a person who uses this specific section. This will help you to understand how different departments interact with each other in order to make a setup in Spyker Back Office. diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/glossary.md b/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/glossary.md deleted file mode 100644 index 09a66a24e3b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/glossary.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Glossary -description: The section is used to create translations for a new locale or update the existing ones in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/glossary -originalArticleId: d96251e6-8793-41cd-8911-4e70c5a00310 -redirect_from: - - /v1/docs/glossary - - /v1/docs/en/glossary ---- - -The Glossary section in the Back Office is mostly used by administrators when a new locale for a store needs to be set up. In case no new locale needs to be set up, the Marketing Content Manager or Spryker Admin can use this section in order to improve the existing content (translations). - -**Standardized flow of actions for a DevOps** -![Flow of actions for a DevOps](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Glossary/glossary-section.png) - -{% info_block infoBox %} -This is how the DevOps interacts with the Development Team and uses the Back Office to set up a new locale for a store. -{% endinfo_block %} - -A glossary consists of -* a glossary key (which is used in the templates contained in the shop application) -* a glossary value for each locale defined in the online store - -You can manage the translations, however, when creating or updating a glossary key, the changes are persisted in the back-end database. The changes are available in the online store after the client data storage is updated (either by manually running the update storage command or after the cronjob that does this update was executed. That is why interaction with the Development Team is needed. -*** -**What's next?** -To know how the translations are managed, see the [Managing Glossary](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/glossary/managing-glossary.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/managing-glossary.md b/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/managing-glossary.md deleted file mode 100644 index fd650dfaf29..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/glossary/managing-glossary.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Managing Glossary -description: he guide provides instructions for shop owners to learn how to create and handle information in different languages in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-glossary -originalArticleId: 8300d80d-a054-4775-8cef-ef8a16379098 -redirect_from: - - /v1/docs/managing-glossary - - /v1/docs/en/managing-glossary ---- - -This article describes how the translations in the Glossary section are created and managed. -*** -To start managing translations, navigate to the **Glossary** section. -*** -**To create a new translation:** - -1. In the top-right corner of the **Overview of Translations** page click **Create Translation**. -2. On the **Create Translation** page, do the following: -3. Enter the glossary key in the **Name** field. -4. Populate the glossary values per the locales. -5. Once done, click **Save**. - -This is the example of how the translations can look like: -![Example of translations](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Glossary/Managing+Glossary/managing-glossary.png) - -*** -**To edit an existing translation:** - -1. On the **Overview of Translations** page, click **Edit** in the _Actions_ column for a specific glossary key. -2. On the **Edit Translation** page, change the translation values in the locales (the **Name** field is greyed out thus the glossary key itself is not available for modifications). -3. Once done, click **Save**. - diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/mime-type-settings/managing-mime-type-settings.md b/docs/scos/user/back-office-user-guides/201811.0/administration/mime-type-settings/managing-mime-type-settings.md deleted file mode 100644 index 2956a29d6b4..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/mime-type-settings/managing-mime-type-settings.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Managing MIME Type Settings -description: Use the procedures to create, edit, delete or activate a MIME type in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-mime-type-settings -originalArticleId: 2137e917-0827-4aef-9460-c0fbd840aa79 -redirect_from: - - /v1/docs/managing-mime-type-settings - - /v1/docs/en/managing-mime-type-settings -related: - - title: Managing File List - link: docs/scos/user/back-office-user-guides/page.version/content/file-manager/managing-file-list.html - - title: Managing File Tree - link: docs/scos/user/back-office-user-guides/page.version/content/file-manager/managing-file-tree.html ---- - -This article describes everything you need to know to create and manage the MIME type settings. -A media type (also known as a Multipurpose Internet Mail Extensions or MIME type) is a standard that indicates the nature and format of a document or file. These settings are added to either allow or restrict the ability to upload files of defines types to the system. - -If no MIME type settings are defines, files of any type can be uploaded. -*** -To start managing MIME type settings, navigate to the **File Manager > MIME Type Settings** section. -*** -## Adding MIME Type Settings -To add a MIME Type setting: -1. On the **MIME Type Setting** page, click **Add MIME type** in the top right corner. -2. On the **Add MIME type** page, populate the following fields: - * **MIME Type**. The MIME type should consist of a type and a subtype; these are all strings which, when concatenated with a slash (/) between them, comprise a MIME type. No whitespace is allowed: **type/subtype**. The type represents the general category into which the data type falls, such as video or text. The subtype identifies the exact kind of data of the specified type the MIME type represents. E.g.: **image/png** - * Optionally leave a comment in the **Comment** field. This information is viewable by only the Back Office users. -3. Select the **Is allowed** checkbox if you want to allow this file extension to be uploaded to the system. -4. Once done, click **Save**. -*** -## Editing and Deleting MIME Types -In the _Actions_ column, click one of the following depending on what you need: -* **Edit** to edit a setting. Update the attributes and click **Save**. -* **Delete** to delete a setting. -*** -## Allowing a MIME Type -There are two ways to allow a MIME type: - -* Select the **Is allowed** checkbox while creating/editing a MIME type. - ![Select is allowed](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+MIME+Type+Settings/allowing-mime-type.gif) -* Select the checkbox in the _Is Allowed_ column on the **MIME Type Settings** page and click **Save**. - ![MIME type settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+MIME+Type+Settings/mime-type-settings.gif) -*** -**Tips and tricks** -If you create a MIME type but do not allow it, no constraints are going to be applied. -If you create the MIME types as follows: -![Tips](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+MIME+Type+Settings/tips-one.png) - -Then you will be able to download only the following file types: -* text/csv -* application/pdf - -The following will be displayed on the **File Tree** page once you select to upload a not allowed file type: -![File tree](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+MIME+Type+Settings/file-tree.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/managing-tax-rates.md b/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/managing-tax-rates.md deleted file mode 100644 index 9374ce639e6..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/managing-tax-rates.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Managing Tax Rates -description: Use these procedures to create, update, view and/or delete tax rates in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-tax-rates-sets -originalArticleId: c40e2c6d-0402-4d8f-aa62-1b60b6fd15b9 -redirect_from: - - /v1/docs/managing-tax-rates-sets - - /v1/docs/en/managing-tax-rates-sets -related: - - title: Taxes Rates - Reference Information - link: docs/scos/user/back-office-user-guides/page.version/administration/tax-rates/references/tax-rates-reference-information.html ---- - -This topic describes the procedures that you need to perform to create, edit, and delete tax rates. -*** - -## Managing Tax Rates - -To start working with tax rates, navigate to the **Taxes > Tax Rates** section. -*** -### Creating a Tax Rate - -To define a rate under which the product, shipment, or a threshold are going to be taxed, you need to create a tax rate. -*** - -**To create a tax rate:** -1. On the **Overview of Tax Rates** page, click **Create Tax Rate** in the top right corner. -2. On the **Create Tax Rate** page, enter and select the attributes. See [Taxes: Reference information](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/references/tax-rates-reference-information.html) for more details. -3. Click **Save**. -*** -### Editing a Tax Rate - -In the ever-changing business world, there is a chance that the taxation policies can change too. - -**To update the tax rate**: -1. In the **List of tax rates > Actions** column, click **Edit** for a specific tax rate. -2. On the **Edit Tax Rate** page, change the attributes. See [Taxes: Reference information](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/references/tax-rates-reference-information.html) for more details. -3. Click **Save**. -*** - -**Tips and tricks** - -You can start editing a tax rate while viewing it: -1. On the **View Tax Rate** page, click **Edit** in the top right corner. -2. Go over the _Editing a Tax Rate_ procedure. -*** - -### Viewing a Tax Rate - -You can review a specific Tax Rate details by clicking **View** in the **List of tax rates > Actions** column. - -The **Tax Rate** details page includes the following information: -* Name -* Tax rate ID -* Country -* Percentage -* Created at -* Updated at - -To return back to the list, click **Back to Tax Rates**. -*** - -### Deleting Tax Rates - -It may happen that the tax rate that has been created some time ago is no longer valid. -You can permanently delete it from the system. -*** - -**To delete a tax rate:** -1. In the **List of tax rates > Actions** column, click **Delete** for a specific tax rate. -2. On the **Delete Tax Rate** page, click **Delete Tax Rate** to confirm the action. -The tax rate is deleted. Remember that it will also be deleted from the Tax Set to which it has been assigned. - - {% info_block warningBox "Note" %} - - Even if this was the only tax rate assigned to a tax set, the tax set itself will remain. - - {% endinfo_block %} - -*** - -**Tips and tricks** - -You can delete a tax rate while viewing it: -1. On the **View Tax Rate** page, click **Delete** in the top-right corner. -2. On the **Delete Tax Rate** page, confirm your action. -*** - -**What's next?** - -You cannot use the tax rate itself for Products, Shipment, and Threshold taxation. You use tax sets instead. -So you can proceed to the procedure of creating a tax set and assigning it to the tax rate. -*** diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/references/reference-information-tax-rates.md b/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/references/reference-information-tax-rates.md deleted file mode 100644 index 3db0eaea56e..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/references/reference-information-tax-rates.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Reference information - Taxes Rates -description: The guide provides additional information on the values you use when managing tax rates and tax sets in the Back Office. -last_updated: Sep 18, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/taxes-reference-information -originalArticleId: 2878e01b-7297-4956-9d43-b61107821c61 -redirect_from: - - /v1/docs/taxes-reference-information - - /v1/docs/en/taxes-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/references/tax-rates-reference-information.html ---- - -This topic contains the reference information that you need to know when working in the **Taxes > Tax Rates** and **Taxes > Tax Sets** sections. - -## Tax Rates - -On the **Overview of Tax Rates** page, you see the following: -* The tax rate ID and name -* The creation date and the country for which the rate is valid -* The Percentage that is going to be taxed -* The actions you can perform - -### Creating and Editing Tax Rate Page Attributes - -The following table describes the attributes that are used when creating or updating a tax rate. - -| Attribute |Description | -| --- | --- | -| **Name** | The name of your tax rate, e.g. _Germany Standard_. | -| **Country** | A drop-down list with the countries. You can select only one country for which this tax rate is valid.| -| **Percentage** | The tax rate percentage. | diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/taxes.md b/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/taxes.md deleted file mode 100644 index e3c0be5169b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-rates/taxes.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Taxes -description: The guide provides a quick overview of the Taxes section that enables shop owners to define tax rates for different countries in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/taxes -originalArticleId: 77bd22eb-026e-4eab-8a5b-dfb3878282e5 -redirect_from: - - /v1/docs/taxes - - /v1/docs/en/taxes ---- - -The **Taxes** section in the Back Office is mostly used by Spryker Admins. - -This section is designed to build tac policies based on country-specific regulations. - -Each specific product, as well as the shipment method, or threshold falls under specific taxations. Thus it is crucial for an e-commerce manager to work with the legacy department to define the tax rates and set up those appropriately. -**Standardized flow of actions for a Spryker Admin** -![Taxes - Spryker Admin](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Taxes/taxes-section.png) - -{% info_block infoBox %} - -This is how a Spryker Admin interacts with other departments to make sure that the tax-based regulations are met. - -{% endinfo_block %} -*** - -## Tax Rates and Sets - -In a tax system, a **tax rate** is the ratio (usually expressed as a percentage) at which a business or person is taxed. - -A **Tax set** is a set of tax rates that can be applied to a specific product. - -In the Back Office, a Spryker Admin creates the tax rates first and then, sets up the tax sets by assigning tax rates to those. - -The tax sets are later applied to Products, Thresholds, or Shipment Methods. -*** - -**What's next?** - -To know how to manage tax sets and rates, see [Managing Tax Rates and Sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/managing-tax-rates.html). - -To know more about the attributes you use to manage tax rates and sets, see [Taxes: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/references/tax-rates-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/managing-tax-sets.md b/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/managing-tax-sets.md deleted file mode 100644 index 78ed247c7fd..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/managing-tax-sets.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Managing Tax Sets -description: Use these procedures to create, update, view and/or delete tax sets in the Back Office. -last_updated: Sep 15, 2020 -template: back-office-user-guide-template -originalLink: -originalArticleId: 8e2ab836-79e9-4738-93a7-c92b16b79de4 -redirect_from: - -related: - - title: Taxes Rates - Reference Information - link: docs/scos/user/back-office-user-guides/page.version/administration/tax-rates/references/tax-rates-reference-information.html ---- - -## Managing Tax Sets - -To start working with tax sets, navigate to the **Taxes > Tax Sets** section. - -### Creating a Tax Set - -Remember how you created the tax rate? To be able to use this taxation rule for products, threshold, or shipment methods, you need to create a tax set and assign the tax rate to it. -*** -**To create a tax set:** -1. On the **Overview of Tax Sets** page, click **Create Tax Set** in the top right corner of the page. -2. On the **Create Tax Set** page, enter the tax set name and select one or several tax rates to assign. See [Taxes: Reference information](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/references/tax-rates-reference-information.html) for more details. -3. Click **Save**. - -*** - -### Editing a Tax Set - -In case you need to change the tax set: -1. In the **List of tax sets > Actions** column, click **Edit** for a specific tax set. -2. On the **Edit Tax Set** page, change the attributes. See [Taxes: Reference information](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/references/tax-rates-reference-information.html) for more details. -3. Click **Save**. - -*** - -**Tips and tricks** - -You can start editing a tax set while viewing it: -1. On the **View Tax Rate** page, click **Edit** in the top right corner. -2. Go over the _Editing a Tax Set_ procedure. -*** - -### Viewing a Tax Set - -You can review a specific Tax Set details by clicking **View** in the **List of tax sets > Actions** column. -The **Tax set details** page includes the following information: -* Name -* Tax set ID -* Tax rates -* Created at -* Updated at - -To return back to the list, click **Back to Tax Sets**. -*** - -### Deleting Tax Set - -You can permanently delete a tax set from the system. -*** - -**To delete a tax set:** -1. In the **List of tax sets > Actions** column, click **Delete** for a specific tax set. -2. On the **Delete Tax Set** page, click **Delete Tax Set** to confirm the action. -The tax set is deleted. - -{% info_block warningBox "Note" %} - -Remember that the tax rates assigned to the deleted tax set will become unassigned, but not deleted. - -{% endinfo_block %} - -*** - -**Tips and tricks** - -You can delete a tax set while viewing it: -1. On the **View Tax Set** page, click **Delete** in the top right corner. -2. On the **Delete Tax Set** page, confirm your action. diff --git a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/references/reference-information-tax-sets.md b/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/references/reference-information-tax-sets.md deleted file mode 100644 index b7258f69e4c..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/references/reference-information-tax-sets.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Reference information - Tax Sets -description: The guide provides additional information on the values you use when managing tax sets in the Back Office. -originalLink: -originalArticleId: afe1de9f-49e8-4472-831a-f62109072768 -last_updated: Nov 22, 2019 -template: back-office-user-guide-template -redirect_from: -- /docs/scos/user/back-office-user-guides/201811.0/administration/tax-sets/references/tax-sets-reference-information.html ---- - -This topic describes the procedures that you need to perform to create, edit, and delete tax sets. - -## Tax Sets - -On the **Overview of Tax Rates** page, you see the following: -* Tax set ID and name -* The creation date and actions that you can perform - -### Creating and Editing Tax Set Page Attributes - -The following table describes the attributes that are used when creating or updating a tax set. - -| Attribute |Description | -| --- | --- | -| **Name** | The name of your tax set, e.g. _Shipment Taxes_. | -| **Country** |A list of tax rates available in the Taxes > Tax Rates section. You can assign from one to many values by selecting the checkboxes next. | diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/attributes.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/attributes.md deleted file mode 100644 index 62489e26862..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/attributes.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Attributes -description: Use the Attributes section to add super attributes to product variants to highlight its specific peculiarities. -last_updated: Jan 15, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/attributes -originalArticleId: 1ef20e80-954d-4057-845c-367237640ceb -redirect_from: - - /v1/docs/attributes - - /v1/docs/en/attributes -related: - - title: Attributes- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/attributes/references/attributes-reference-information.html - - title: Product Attributes - link: docs/scos/user/features/page.version/product-feature-overview/product-attributes-overview.html ---- - -The attributes section is designed to create the super attributes that define the product variants and define the descriptive attributes that present the product features. -*** -**Product Attributes** -Creating and managing product attributes is the first step in enriching your product data. It is an essential part of maintaining and improving the online shop for your customers. Attributes can serve different purposes and are therefore stored in different ways. They may be used not only for product management but also to improve search and filter functionality in the shop. -You can easily build a list of characteristic attributes for your products, such as brand or special features. For these, you can define specific values to help you and your customers distinguish between products. - -**Super Attributes** -Super Attributes in the Spryker Commerce OS are used to distinguish between the different Product Variants of an abstract product. Super Attributes define each Concrete Product and can consist of whichever distinguishing feature you wish to highlight, such as size or color. This information can either be manually managed or imported and processed automatically. -*** -**What's next?** -To know how that attributes are created and managed, see the following articles: -* [Creating Product Attributes](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/create-product-attributes.html) -* [Managing Product Attributes](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/edit-product-attributes.html) - -To know more about the fields you enter and select when working with attributes, see the _References_ section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/creating-product-attributes.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/creating-product-attributes.md deleted file mode 100644 index d58ae9bb7ad..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/creating-product-attributes.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Creating Product Attributes -description: Use the Creating a product attribute procedure to add an attribute key, a super attribute and other values to create an attribute. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-attribute -originalArticleId: 9672420d-8113-47ff-ae83-dc4a4cd8353c -redirect_from: - - /v1/docs/creating-a-product-attribute - - /v1/docs/en/creating-a-product-attribute -related: - - title: Product Attributes - link: docs/scos/user/features/page.version/product-feature-overview/product-attributes-overview.html ---- - -This topic describes the procedure you need to perform in order to create a new product attribute, either a super attribute or a descriptive attribute. -*** - -To start working with attributes, navigate to the **Products > Attributes** section. -*** - -For a new product in your store, you need to create both super attribute and product attribute. The first one is needed to define the product variants and the second one to define the product characteristics. -*** - -**To create a new product attribute:** -1. On the **Product Attributes** page, click **Create Product Attributes**. -2. On the **Create a Product Attribute** page: - 1. In the **Attribute Key** field, add a new attribute to the product. - - {% info_block warningBox "Note" %} - - Keep in mind that it should not contain any special symbols. - - {% endinfo_block %} - - 2. In the **Input type** drop-down list, select the type of data input. - 3. Select the **Super attribute** checkbox to create a super attribute OR do not select the checkbox if you are creating a product descriptive attribute. - When the check box is selected, the **Allow input any value other than predefined** option becomes disabled as a super attribute always uses predefined values. - 4. In the **Predefined Values** field, add from one to many values by typing them and clicking **Enter** after each. - 5. Select the **Allow input any value other than predefined ones** checkbox if you want to allow adding values different than the predefined ones. -3. Click **Save**. - Once Save is selected, the **Translation** tab becomes enabled. -4. In the **Translations** tab, add the translation for your attribute key. -5. Click **Save**. -*** - -**Tips and tricks** - -If you want to apply this translation to other languages, click **Copy to other languages** icon next to the translation field. -*** - -**What's next?** - -Learn how the product attributes are managed in the [Managing Product Attributes](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/edit-product-attributes.html) article. - -Review the [References](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/references/attributes-reference-information.html) section to learn more about the attributes you populate for the Attribute entity and the examples of how the attributes are used. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/managing-product-attributes.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/managing-product-attributes.md deleted file mode 100644 index 0c882e4d514..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/managing-product-attributes.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Managing Product Attributes -description: Use the Managing Attributes procedures to view and updated product attributes in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-attributes -originalArticleId: a2ad2327-a608-4203-ab1e-3ec9cfe3760a -redirect_from: - - /v1/docs/managing-attributes - - /v1/docs/en/managing-attributes -related: - - title: Product Attributes - link: docs/scos/user/features/page.version/product-feature-overview/product-attributes-overview.html - - title: Creating Product Attributes - link: docs/scos/user/back-office-user-guides/page.version/catalog/attributes/creating-product-attributes.html - - title: Attributes- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/attributes/references/attributes-reference-information.html ---- - -This topic describes how you can manage the product attributes. -*** -To start managing attributes, navigate to **Products > Attributes**. -*** -When you have a product attribute created, you can view and edit them, if needed. Both actions can be invoked from the _Actions_ column of the **Product Attributes** page. -*** -## Viewing Product Attributes - -To view a product attribute, click **View** in the _Actions_ column. -On the **View Product Attributes** page that opens, you can view the General information of the attributes, their predefined values, and translations. - -You can start editing the attribute by clicking **Edit** in the top right corner of the page. -*** -## Editing Product Attributes -Here you can add or remove predefined values, and edit translations of the product attribute. - -**To edit a product attribute:** -1. Click **Edit** in the _Actions_ column. - On the **Edit Product Attributes** page, the Attribute key, input type, and super attribute are disabled, as they cannot be edited. -2. You can manage the predefined values by removing the existing or adding the new ones. -3. In order to manage the translations, you need to click **Save** on the **General Information** tab. -4. Once done, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/references/reference-information-attributes.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/references/reference-information-attributes.md deleted file mode 100644 index 4bf9df4a66c..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/references/reference-information-attributes.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Reference information - Attributes -description: Use this section to check the values you add, edit, or view when managing attributes in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/attributes-reference-information -originalArticleId: 5724321e-c043-4226-91ba-68932b037cae -redirect_from: - - /v1/docs/attributes-reference-information - - /v1/docs/en/attributes-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/attributes/references/attributes-reference-information.html ---- - -This topic describes the fields that you enter and select when creating product attributes, as well as provides examples of super attributes and product descriptive attributes. -*** -On the **Product Attributes** page, you see the following information in the table view: -* Autogenerated attribute ID -* Attribute key -* An identifier that shows if the attribute is a super attribute (_true_ if yes, and _false_ if no), and the attribute type -* Actions that you can invoke from this page (View and Edit) -*** -The following table describes the attributes you enter and select on the **Create a Product Attribute** page. - -| Attribute |Description | -| --- | --- | -| **Attribute Key** | The name of the attribute you create, e.g. **color**. | -| **Input type** |A drop-down list with the types for data input, e.g. **text**. | -| **Super attribute** |A checkbox that defines if the attribute you create is a super attribute for an abstract product. | -| **Predefined values** | The values for you attribute, e.g. if the attribute you create is a **color**, the values for it can be _red_, _green_, _black_, etc. | -| **Allow input any value other than predefined ones** | A checkbox that defines whether you can enter the values other than the predefined ones when creating or updating a product variant. | -| **Translation** | The translation for either an attribute key into the other language based on the locales for which you add the translation.| -| **Translate predefined values** | A checkbox that defines if the predefined values will also be translated. If selected, the predefined value itself and the **Translation** field for it appears. | -*** -The super attributes are displayed in the Variants tab of the **Create a Product** page of an abstract product. -![Create a product](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Attributes/Attributes:+Reference+Information/create-product.png) - -Once you select any super attribute, you will be able to select among its values. -![Select a superattribute](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Attributes/Attributes:+Reference+Information/select-superattribute.png) - -The descriptive attributes are displayed on the **Attribute Management** page of the abstract and concrete product. Unlike the super attributes that are defined during the abstract product creation, the descriptive attributes can be added and removed at any point in time. -![Attribute management](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Attributes/Attributes:+Reference+Information/attribute-management.png) - -In the online store, the descriptive attributes are displayed on the product details page of a specific product: -![Descriptive attributes](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Attributes/Attributes:+Reference+Information/descriptive-attributes.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/managing-products-availability.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/managing-products-availability.md deleted file mode 100644 index 2fdd9647d02..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/managing-products-availability.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Managing Products Availability -description: This guide provides steps on how to check whether products are in stock in the warehouse of the current store in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-products-availability -originalArticleId: a6d1f054-1489-4a3b-9770-cd68329555c8 -redirect_from: - - /v1/docs/managing-products-availability - - /v1/docs/en/managing-products-availability -related: - - title: Abstract and Concrete Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/abstract-and-concrete-products.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Availability- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/availability/references/availability-reference-information.html ---- - -This topic describes the actions you can do in the **Availability** section of the Back Office. -*** -To start working with availability, navigate to **Products > Availability**. -*** -This section allows inventory managers, or other team members responsible for stock updates, to check the products' stock. -The main advantage is that you do not need to make any manual calculations. The system does all the calculations automatically and you get the aggregated availability value. You will have a single table with a comparison of the product's stock value and the ordered value. It also calculates the bundled products stock. See [Availability: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/references/availability-reference-information.html). -*** - -## Checking Availability - -**To check** the product availability: -1. In the _Actions_ column of the **Products availability list** table, click **View** next to the corresponding product item. -This will take you to the **Product Availability** page. See [Availability: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/references/availability-reference-information.html) for more details. -2. In case of a multi-store setup, in the **Store** drop-down select the store locale to check the product's availability for each specific locale. -*** -## Editing Stock -**To edit** the product stock: -1. On the **Product Availability** page of the product whose variant availability you would like to change, click **Edit Stock** for the corresponding variant. -2. On the **Edit Stock** page, specify **Quantity** for the product (for the needed warehouse, if several are set up). -3. Select **Never out of stock** if you want the product to be always available. -4. Click **Save**. - -**To edit** the bundled product stock: -1. Navigate to the **Product Availability** page of a bundle whose bundled product variant availability you would like to change. -2. Click **View bundled products** in the **Variant availability** table. -3. In the **Bundled products** table that opens, click **Edit Stock** for the corresponding variant. -4. On the **Edit Stock** page, specify **Quantity** for the product (for the needed warehouse if several are set up). -5. Select **Never out of stock** if you want the product to be always available. -6. Click **Save**. - -{% info_block warningBox "Note" %} - -Please note that you are updating the product variant availability, not the bundle availability itself. To see examples on how the bundle availability is calculated, see [Availability: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/references/availability-reference-information.html). - -{% endinfo_block %} - -*** - -**Tips and tricks** - -You can edit stock for variants from the **Edit Concrete Product** page: -1. Navigate to the **Edit Product Abstract** using one of the following options: - 1. **Products > Products > Edit**. - 2. Click a hyperlinked SKU value in the **Availability > Product availability list** table. -2. In the **Variants** tab, click **Edit** next to the variant for which you would like to update the stock value. -3. Go to the **Price&Stock** tab. -4. Enter **Quantity** and select **Never out of stock** if you want the product to be always available. -5. Click **Save**. - -{% info_block infoBox "Info" %} - -Once on the **Edit Concrete Product** page, you can update any of the product details you need. - -{% endinfo_block %} diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/references/reference-information-availability.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/references/reference-information-availability.md deleted file mode 100644 index 672e6522f07..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/availability/references/reference-information-availability.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Reference information - Availability -description: The guide provides additional information you see when working with the product availability in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/availability-reference-information -originalArticleId: 9e29c3d8-27da-40cc-8d6a-91049c708ff4 -redirect_from: - - /v1/docs/availability-reference-information - - /v1/docs/en/availability-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/availability/references/availability-reference-information.html ---- - -This article includes the information you need to know when working with the **Availability** section in Back Office. -*** -## Overview page -On the **Overview of Products Availability** page, you see the following: -* The SKUs and names of the abstract products and the SKU values is a hyperlink to this product Edit page. -* The number of product in current stock and the number of reserved products (meaning ordered ones) -* The identifier for the bundled product and for those that are **never out of stock** (Yes/No values) -*** -## View Product Availability page -On the **View Product Availability** page, you see 2 sections: -* Abstract product availability -* Variant availability - -The Abstract product availability section is not modifiable. It only provides overview information. As the abstract product itself does not have any stock, the Current Stock value will display the summarized value of all its variants. - -Unlike the Abstract product availability, the Variant availability provides you with an option to edit stock. You invoke the edit stock flow from the Actions column. It also has the identifier of the product bundle. - -Both sections contain the following info: -* The SKU and name of the abstract product/product variant -* The availability value, the number of products in current stock and the number of reserved products (meaning ordered ones) -* The identifier for the **never out of stock** (Yes/No values) -*** -## Edit Stock page -The following table describes the attributes you see and enter on the Edit Stock page: - -| Attribute | Description | -| --- | --- | -| **Stock Type** | The name of the corresponding warehouse. The field is auto-populated and is not editable.| -| **Quantity** | The number of products available in the stock for a specific store and warehouse. | -| **Never out of stock** | A checkbox to set the product to be always available in a specific store and warehouse. Meaning even if the quantity is set to 0, the product will still be available. This option is usually used for digital items, like Gift Cards, for example.| -| **Available in stores** | This value is auto-populated according to your store setup and is not modifiable in UI. This just identifies for which store you define the product availability value. | - -## Availability Calculation: Example -A good example of availability calculation is a product bundle. -Let's say you have two products: a Smartphone and three Glass Screen Protectors for it. They are presented in the store as separate items but also included in a bundle. - -This means that a customer can either buy those separately from their product details pages or buy a "smartphone+3 glass screen protectors" bundle. - -Each product has its own stock and availability value if to buy separately. -But in case of a bundle, the availability is calculated based on each item availability taking into account their **quantity in the bundle**. - -Even if each item is available on its own, but the availability does not meet the minimum quantity for a bundle (e.g. there are only two glass screen protectors but the bundle goes with three), then all bundle is **unavailable**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/assigning-products-to-categories.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/category/assigning-products-to-categories.md deleted file mode 100644 index a527d42aba5..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/assigning-products-to-categories.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Assigning Products to Categories -description: The guide provides instructions on how to assign products to the category in the Back Office. -last_updated: Feb 11, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/assigning-products-to-categories -originalArticleId: d0b28506-6955-467f-a61b-9b5f2aa2276b -redirect_from: - - /v1/docs/assigning-products-to-categories - - /v1/docs/en/assigning-products-to-categories -related: - - title: Creating Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/creating-categories.html - - title: Managing Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/managing-categories.html - - title: Category- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/references/category-reference-information.html ---- - -This topic describes the steps you need to perform to assign a product(s) to the category. -*** - -There are three ways to assign products to your category. - -* Select **Edit** for a specific category and select **Assign Products** in the top right corner of the **Edit category** page. -* Select **Assign Products** option for a specific category in the _Actions_ column on the **Categories** table view page. -* Select **Assign Products** on the **View Category** Page. - -There is no difference between how you initiate the flow. In any event, you will be redirected to the same page. -*** - -**To assign products to a category:** -1. Select the checkbox next to the product(s) you want to assign in the _Selected_ column. -2. If you need to select all products displayed on the page, select **Select all** at the bottom of the table. - {% info_block infoBox %} - - If you do not see the needed product on the page, there is no need to navigate through the pages manually. Use the **Search** field to find your product. You can use either the SKU or Name value to find the needed product. - - {% endinfo_block %} - -3. Once done, click **Save**. - -*** - -**Tips and tricks** - -Let's say you have assigned too many products to your category and you need to remove some of them. -1. On the same **Assign Products** page, scroll down. You will see the **Products in this category** section. -2. Depending on the number of products you want to exclude from the category, either clear the checkbox in the _Selected_ column for specific products or click **Deselect All** (this will deselect all the products on the current page). -3. Everything looks good now? Click **Save**. - -*** - -**What's next?** - -You have created a category and assigned products to it. So now you can learn how to manage the categories. - diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/category.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/category/category.md deleted file mode 100644 index b60b0bb8a30..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/category.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Category -description: The section is designed to manage products under the category according to a specific criterion, including search and filter them in the online store. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/category -originalArticleId: 4f228fdc-8d7d-40e0-876f-f2c8e4622c60 -redirect_from: - - /v1/docs/category - - /v1/docs/en/category ---- - -The **Category** section in the Back Office is mostly used by Product Catalog Managers. -This section is designed to build a logical structure of products by assigning them to specific categories according to one or many common criteria. -The primary uses of categories are to develop dynamic category pages and enhance store's search and filter capabilities. - -**Standardized flow of actions for a Product Catalog Manager** -![Flow of actions](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Category/category-section.png) - -{% info_block infoBox %} -This is how a Product Catalog Manager can create a structure to display products by, for example, Electronics. Under this category, you can group all of your products that meet this criterion. Furthermore, you can create nested categories that split the products into smaller groups such as TVs, Mobile Phones, DVDs, etc. -{% endinfo_block %} - *** - **What's Next?** - To know how the categories are created and managed, see the following articles: -* [Creating Categories](/docs/scos/user/back-office-user-guides/{{page.version}}/category/creating-categories.html) -* [Assigning Products to Categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/assigning-products-to-categories.html) -* [Managing Categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/managing-categories.html) - -To know more about the attributes you use to create and manage the categories, see the following article: -* [Category: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/references/category-reference-information.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/creating-categories.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/category/creating-categories.md deleted file mode 100644 index d04ec32ad04..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/creating-categories.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Creating Categories -description: The guide describes procedures on how to create a category, add images and products, select a template in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-categories -originalArticleId: b3afc838-a419-415d-a2d0-c190d2b0010d -redirect_from: - - /v1/docs/creating-categories - - /v1/docs/en/creating-categories -related: - - title: Assigning Products to Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/assigning-products-to-categories.html - - title: Managing Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/managing-categories.html - - title: Category- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/references/category-reference-information.html ---- - -This topic describes how you create categories. -*** - -For example, you have several new products in your store. You want to group them into one logical chunk so that: -* You can have all new products under one category -* The buyer can see them all at once by navigating to that category - -Instead of assigning those to already existing categories, you can collect the products under a new category called, for example, **Newcomers**. -To do that, click **Create category** in the top right corner. - -The Create page is split into two tabs: **General** and **Image**: -* The **General** tab is used to provide all the descriptive information. -* The **Image** tab is used to provide visual support (mostly used with the **Sub Category grid** template.) -*** - -**To create a product category:** -1. In the **General** tab, enter and select the attributes for your category. See [Category: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/references/category-reference-information.html). -2. Enter the attributes of your image set. See [Category: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/references/category-reference-information.html). - - {% info_block infoBox %} - - Small images will be used when subcategories on the parent category page are displayed as a list, while the large images will be used when subcategories are displayed as a grid. - - {% endinfo_block %} - - {% info_block infoBox %} - - Even though you can add several image sets and several images to an image set, out of the box, there is no place in the back end and front end where several image sets or images can be displayed for a category. However, if you still do that, the following logic applies: - - * When adding several image sets, the image set going first or having the name 'default' will be applied to the category. - * When adding several images to the image set that is active for the category, the image with the lowest Sort Order field value is applied to the category. If there are several images with the same value, the image which has been added first is applied. The lowest possible value is "0". - - {% endinfo_block %} - -3. Click **Next** at the bottom of the page, or select the **Image** tab next to **General**. -4. In the **Image** tab, add an image to the category: - 1. Click **Add image set**. - 2. Enter the attributes of your image set. See [Category: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/references/category-reference-information.html). - {% info_block infoBox %} - - Keep in mind that small images will be used when subcategories on the parent category page are displayed as a list, while the large images will be used when subcategories are displayed as a grid. - - {% endinfo_block %} - - 3. If you want to assign several images or image sets, click **Add image** or **Add image set** respectively, and enter URLs. - Even though you can add several image sets and several images to an image set, out of the box, there is no place in the back end and front end where several image sets or images can be displayed for a category. However, if you still do that, the following logic applies: - * When adding several image sets, the image set going first or having the name 'default' will be applied to the category. - * When adding several images to the image set that is active for the category, the image with the lowest Sort Order field value is applied to the category. If there are several images with the same value, the image which has been added first is applied. The lowest possible value is "0". -4. Click **Save**. - -*** - -**Tips and tricks** - -* When you already know the exact parent category under which the category that you create is going to be nested, you can click **Add category to this node** for a specific parent category. This will redirect you to the **Create category** page where you can perform the steps described above. The only difference is that the **Parent** field will be autopopulated with the needed value. -* The same products can be assigned to multiple categories. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/managing-categories.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/category/managing-categories.md deleted file mode 100644 index 00d8b4c89d4..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/managing-categories.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Managing Categories -description: The guide provides instructions on how to set an order for products in categories, as well as view, update and delete categories. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-categories -originalArticleId: 1d195072-06f7-4a21-8bfc-3f61ab623fb5 -redirect_from: - - /v1/docs/managing-categories - - /v1/docs/en/managing-categories - - /docs.spryker.com/docs/scos/user/back-office-user-guides/201811.0/catalog/category/managing-categories.html -related: - - title: Creating Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/creating-categories.html - - title: Assigning Products to Categories - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/assigning-products-to-categories.html - - title: Category- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/category/references/category-reference-information.html ---- - -This topic describes how to manage categories: -* How to define an order according to which the products are going to be displayed. -* How to view, edit, and delete categories. -*** - -## Ordering Products in Categories - -You can adjust the order in which products under the category are displayed in the store. -To define the order of displaying products, you need to set the numbers under which each product will be displayed on the page. -{% info_block infoBox "Example" %} - -For example, you have ten products assigned to your category. For five of them, there is a seasonal discount applied. So you need those to be at the top of the list. - -{% endinfo_block %} - -*** - -**To change the order of products:** -1. Click **Assign Products** in the **Categories** table for a specific category. -2. Scroll down to the **Products in this category** section. -3. In the _Order_ column, set numbers 1-5 for specific products. - {% info_block warningBox "Note" %} - - In case you have several products with the identical order number value, the ordering will be performed based on the _product name_ attribute. - - {% endinfo_block %} - - {% info_block infoBox "Information" %} - - The product with 0 in the _Order_ column will be displayed at the bottom. - - {% endinfo_block %} - -5. Once the order you have set is correct, click **Save**. -*** - -## Viewing Categories - -Before updating a category, you can view it to make sure that this is the needed category. -*** - -**To view a category:** -1. In the _Actions_ column on the **Category** table view page, click **View**. -2. You are redirected to the page where you see some general information about this category, like: - * is the category active - * is it visible in the category tree - * what products does it contain - * in case if the category template is set to any CMS-related one, you will also have a chance to navigate directly to the **Edit CMS block** page by clicking the hyperlinked **CMS block name** in the **CMS Blocks** section. -3. To return back to the Category page, click **List of categories** in the top right corner. -*** - -## Editing Categories - -There are two ways to navigate to the Edit Category page: -* While viewing a specific category, click **Edit** in the top right corner of the **View category** page. -* Click **Edit** in the _Actions_ column on the **Categories** table view page. - -There is no difference between how you will initiate the flow. In any event, you will be redirected to the same page. -*** - -**To edit a category:** -1. Click **Edit**. -2. Update the needed values. See [Category: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/references/category-reference-information.html). -3. Click **Save**. -*** - -## Deleting Categories - -What if the category needs to be deleted? -If at some point of time you need to delete a category, you will use the **Category** page. -*** - -**To delete a category:** -1. For the category you need to delete, click **Delete** in the _Actions_ column. -2. On the **Delete category** page, you will be provided with detailed information about everything that will be de-assigned, moved, or deleted along with that category. -3. Select the checkbox next to **Yes, I am sure** to confirm your awareness and click **Delete**. - {% info_block warningBox "Note" %} - - Products assigned to this category will not be deleted. They will be de-assigned and continue to exist in the system. If the same products are assigned to other categories, they will stay assigned to those. - - {% endinfo_block %} -*** - -**Tips and tricks** - -If your category contains any nested categories, you can re-sort them by a simple drag-and-drop action: -1. To get to **Re-sort View**, click **Re-sort child categories** for a specific category on the table view page. -2. Once in **Re-sort View**, play around by dragging & dropping categories. -3. Once you see the correct order, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/references/reference-information-category.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/category/references/reference-information-category.md deleted file mode 100644 index 390e42d39a5..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/category/references/reference-information-category.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Reference information - Category -description: The guide provides reference information you see when working with categories in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/category-reference-information -originalArticleId: 4c36ddc7-f293-41c2-9044-838916dd5e07 -redirect_from: - - /v1/docs/category-reference-information - - /v1/docs/en/category-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/category/references/category-reference-information.html ---- - -This topic contains the reference information that you need to know when working in the **Category** section. -*** -## Categories Page -In the **Category** section, you see the following: -* Category key, category name, and the parent category to which a specific one is assigned -* Identifiers for Active, Visible and Searchable -* Template type -* Actions that you can do on a specific category -*** -## Category Page Template Types -When you create or update the categories, you select a template according to which your category (and the assigned to it products) is going to be displayed in your online store. - -The following templates are used to set up your category look: - -* **Catalog (default)** - Select this template if you want to display all product pages linked to the selected category. The product pages include the general product description, a price, an image, and a clickable **View** button that will redirect you to the product details page. - See how the **Catalog** template looks on Yves. -![Catalog](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Category/Category%3A+Reference+Information/Catalog.gif) - -* **Catalog+CMS Block** - Select this template if you want to show all product pages assigned to the selected category and a CMS Block. Depending on your design requirements, you need to set a specific CMS block and to specify where it should be displayed: top, middle, or bottom. See Content Management topics for more information. - - See how the **Catalog+CMS Block** template looks on Yves. -![Catalog + CMS block](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Category/Category%3A+Reference+Information/Catalog%2BCms+Block.gif) - - The category is in the catalog, and two CMS blocks are now displayed on the page: _Tackle Your To-Do's_ and _Build a Space That Spurs Creativity_ in the example). - -* **CMS Block** - Select this template if you want to display only a specific CMS block on the category page. In this case, choose a position of the CMS block on the page. - See how the **CMS Block** template looks on Yves. - -![CMS block](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Category/Category%3A+Reference+Information/CMS+Block.gif) - -Instead of navigating you to the catalog view, once such a category is selected you see the CMS block. - -* **Sub Category grid** - Select if you want to create a multilevel category structure. Here you can assign an image to each subcategory. - See how the **Sub Category grid** template looks on Yves. - -![Sub category grid](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Category/Category%3A+Reference+Information/sub+category.gif) - -*** -## Create and Edit Category Page Attributes -The following table describes the attributes you use when creating or updating a category. - -### General tab -| Attribute |Description| -| --- | --- | -|**Category key**|The value you enter can later be used to automatically assign products and CMS blocks to your category through the import. | -|**Active**|Defines if the category is in the active state and is visible in the shop application.| -| **Visible in the category tree** |Defines if the category is shown in the menu in the shop application. | -| **Allow to search for this category** |Defines if the category is available in search results. | -| **Parent**|A drop-down list with categories under which your category will be displayed in the hierarchical tree. It means that the category you are currently creating will be nested under the particular category you select. Only one value can be selected. | -| **Additional Parents**| A drop-down list with categories under which you can locate your specific category in addition to the Parent. Several values can be selected.| -|**Template**|A drop-down list with templates that you select to define the look of your category in the online store. (See _Category Page Template Types_)| -|**Translations**| In this section you define the meta details. Their purpose is to improve search ranking in the search engines.| -|**Translations: Name**|The name that serves as an ID for the back end.
The name that will be displayed to the customer on the shop website is rendered with the help of the category key.| -|**Translations: Meta Title**|The title that describes the category.| -|**Translations: Meta Description**|The description of the category. The text you enter as meta information will not be displayed on the website to the customer but will be located in the HTML code of the category page. | -|**Translations: Meta Keywords**|The keywords that are suitable for the category.| -If you select the CMS-related template (either Catalog+CMS Block, or CMS block), the following additional attributes appear: - -| Attribute | Description| -| --- | --- | -| **CMS Blocks: top** | Defines a CMS Block for a top position. Several values can be selected.| -| **CMS Blocks: middle** | Defines a CMS Block for a middle position. Several values can be selected. | -|**CMS Blocks: bottom** | Defines a CMS Block for a bottom position. Several values can be selected. | - -### Image tab - -| Attribute | Description | -| --- | --- | -| **Image Set Name**|Defines the name of the image set, e.g. Default. | -|**Small** | URL of the small version of the image. | -| **Large**| URL of the large version of the image. | -|**Sort Order**|A numeric identifier of the image in the order of other images of an image set. This defines the order in which the images are shown in the back end and front end. The order starts from "0".| diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-barcodes/viewing-product-barcodes.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-barcodes/viewing-product-barcodes.md deleted file mode 100644 index 583777bced3..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-barcodes/viewing-product-barcodes.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Viewing Product Barcodes -description: Use this section to review in the Back Office what barcodes have been generated for concrete products. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-barcodes -originalArticleId: 39819a25-78a0-46f8-b9a7-f49c644c22f0 -redirect_from: - - /v1/docs/product-barcodes - - /v1/docs/en/product-barcodes -related: - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html ---- - -Nowadays, B2B businesses face extraordinary challenges as more and more consumers are making comparisons of various e-commerce applications. To stay on top of the industry trends, improve customer experience and increase sales, every business must innovate with a deep understanding of their customer’s physical, emotional, and financial needs and triggers. - -Barcodes are often overlooked as a way to cut costs and save time. A valuable and viable choice for businesses looking to improve efficiency and reduce overhead, barcodes are both cost-effective and reliable. Both inexpensive and user-friendly, barcodes provide an indispensable tool for tracking a variety of data, from pricing to inventory. The ultimate result of a comprehensive barcoding system is a reduction in overhead. - -The Barcode Generator can be used for any kind of entity, and by default, Spryker provides a solution for products. -*** -**What is a barcode?** -A barcode is a square or rectangular image consisting of a series of parallel black lines (bars) and white spaces of varying widths that can be read by a scanner and printed. Barcodes are applied to entities as a means of quick identification. - -In the default configuration, barcodes are generated based on the SKU of a concrete product using the Code128 format. Though, Spryker provides highly customizable solutions through plugins with the help of which the setup can be changed. - -Barcodes are dynamically generated for concrete products. This ensures that barcodes are immediately valid. - -You can see the barcodes in the **Products > Product Barcode** section. The section is designed as a review; thus no actual actions are performed here. The barcode is generated automatically once a new concrete product is added. - -You can see Product ID, product name, SKU, and the barcode itself. - -![Product barcodes](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Barcodes/product-barcode.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/creating-product-lists.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/creating-product-lists.md deleted file mode 100644 index a1ff98d80b7..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/creating-product-lists.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Creating Product Lists -description: Use the procedure to create a product list by assigning products and selecting the category in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-list -originalArticleId: c67103bb-39c4-40e8-b9ac-170a92a29fc2 -redirect_from: - - /v1/docs/creating-a-product-list - - /v1/docs/en/creating-a-product-list ---- - -This article describes the steps you need to perform in order to create a product list for a specific merchant relation. -*** -The product lists can be considered as conditions under which the companies see the products in the online store. Let's say you want to hide a specific set of products, or even a category, from one of the companies with which you have a signed contract. You will create a blacklist for that purpose assigning those specific products to it. -*** -To start working with the product lists, navigate to the **Products > Product Lists** section. -*** - -**Prerequisites** - -You should have a merchant relationship set up in **Merchants** > **Merchant Relations** in order to create a product list. -*** - -**To create a product list:** - -1. Click **Create Product List** in the top right corner of the **Overview of Product Lists** page. - On the **Create a Product List** page you see the following tabs: - * General Information - * Assign Categories - * Assign Products -2. In the **General Information** tab: - 1. Enter the title of the product list. - 2. Select a type of the product list, either Whitelist or Blacklist. - 3. The owner type is Merchant Relationship by default and currently the only option. - 4. In the _Merchant relationship_ drop-down list, select the **Merchant relationship** you are creating the product list for. The values are taken from the **Merchant** > **Merchant Relations** section and are displayed in the _[Merchant Name] - [Business Unit]_ format. - - {% info_block infoBox "Note" %} - - Once the general information is added, you can save the changes and proceed to the other setup in a later event. In case you want to make a full setup at a time, click **Next** to proceed to the **Assign Categories** tab, or just click on it. - - {% endinfo_block %} - -3. In the **Categories** tab, select from one to many categories in the **Categories** field. - - {% info_block infoBox "Note" %} - - This step is optional as you can either add the categories to the list **OR** add specific products instead. You can also do both. - - {% endinfo_block %} - - Click **Next** to proceed to the **Assign Products** tab, or just click on it. - -4. In the **Assign Products** tab, do one of the following: - 1. Click **Browse** in the **Import Product List** area. Select the file to be uploaded. The file should contain **product_list_key** and **concrete_sku**. - **OR** - 2. In the **Select Products to assign** table, select the products that will be added to the list in the **Selected** column. -5. Once you are satisfied with the setup, click **Save**. - -*** - -**Tips and tricks** - -Assigning products and categories to product lists is optional during the product list creation. You can create a product list with no values assigned and update it in a later event. - -When you assign products, you can use the search field to filter the products by entering **SKU** or **product name**. - -Please note that if all concrete products belonging to the abstract one are selected the entire abstract product is also selected. If an abstract product is selected, all concrete products belonging to that abstract are also selected. -When you assign categories, in the **Categories** field, start typing the name of the Category you wish to assign to a product list. The auto-suggested matching results are reflected in the drop-down list. -*** - -**What's next?** - -* To learn what managing actions you can do with the product lists, see the [Managing Product Lists](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/managing-product-lists.html) article. -* To learn more about the attributes you select and enter while creating a product list, see the [Product Lists: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/references/product-lists-reference-information.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/managing-product-lists.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/managing-product-lists.md deleted file mode 100644 index 47f0a194ae9..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/managing-product-lists.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Managing Product Lists -description: Use these procedures to edit, export, remove a product list or remove products from the product list in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-lists -originalArticleId: 2d3f89d6-f107-46b6-afaa-392b2fe9b0ba -redirect_from: - - /v1/docs/managing-product-lists - - /v1/docs/en/managing-product-lists -related: - - title: Creating Product Lists - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-lists/creating-product-lists.html ---- - -his article describes the managing actions that you can perform with the product list. -*** -To start managing product lists, navigate to the **Products > Product Lists** section. -*** -## Editing a Product List -To edit a product list: - -1. Click **Edit** in the _Actions_ column of the **List of Product Lists** table. -2. On the **Edit List** page, do the following depending on your needs: - 1. Change general information for a product list, such as Title, Product List type, Merchant Relationship. - 2. (Un)assign product category or individual products to a list. -3. Once done, click **Save**. -*** -**Tips and tricks** -On this page, you can: -* Return to the list of product lists by clicking **Back to Product Lists** in the top right corner of the page. -* Export a product list into a CSV file. For this, click **Export**. -* Remove the list. To do this, click **Remove List** in the top right corner of the page. -*** -## Removing Products form a Product List - -To remove a product from a product list, do the following: -1. Open the existing product list or create a new one. -2. Navigate to the **Assign Products** tab. -3. In the **Products in this list** tab, define the products you would like to remove by selecting the respective checkboxes in the **Selected** column. - You can double-check the products that you are going to remove from the product list in the **Products to be deassigned** tab. -4. Click **Save**. -*** -## Exporting a Product List -To export a product list, in the **Edit List** page, click **Export**. -The list is exported into a **CSV** file. -*** -## Removing a Product List -To remove a product list: -1. From the **List of Product Lists** table, click **Remove List** in the _Actions_ column for the entry you want to remove. -**OR** -While editing the existing product list, click **Remove List** in the top right corner of the page. -2. On the **Remove List** page, click **Remove List** to confirm the action. -*** -**What's next?** -Now you know how to manage the products lists that already exist in the shop. - -Review [Product Lists: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/references/product-lists-reference-information.html) to learn about the attributes you see, select, and enter while managing a product list. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/product-lists.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/product-lists.md deleted file mode 100644 index 30ff1c9eb11..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/product-lists.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Product Lists -description: The section is used to define product restrictions for product sets by adding them to an appropriate product list in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-lists -originalArticleId: cab21403-229f-4837-8ce6-315f77835df7 -redirect_from: - - /v1/docs/product-lists - - /v1/docs/en/product-lists -related: - - title: Product Quantity Restrictions Feature Overview - link: docs/scos/user/features/page.version/non-splittable-products-feature-overview.html ---- - -Product Lists section in Back Office is designed to set specific restrictions for the **B2B** customers. -*** -**This feature is used for B2B purposes only as the restrictions are set based on merchant relations.** -*** -This is a page where Back Office users can define product restrictions for a defined set of products by adding them to an appropriate product list. -The product restrictions work on the basis of whitelist/blacklist lists: -* Whitelist: Products included in this product list type are always available for the customers. -* Blacklist: Products included in this product list type are hidden from the customer view. -In other words, blacklists and white lists are the conditions under which a product (a list of products) is displayed in the store for a specific merchant relation. If the product is blacklisted, the merchant relation company representative is not able to see it and search for it. -If a specific product (or a list of products) is whitelisted, the merchant relation company representative is able to see and search for only this specific product (list of products). The others are hidden from the view. -*** -**What's next?** - -* To learn how product lists are created, see [Creating a Product List](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/creating-product-lists.html). -* To learn how the product lists are managed, see [Managing Product Lists](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/managing-product-lists.html). -* To learn more about the attributes you select and enter when creating or managing product lists, see [Product Lists: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/references/product-lists-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/references/reference-information-product-lists.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/references/reference-information-product-lists.md deleted file mode 100644 index 0938ff23ec9..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/references/reference-information-product-lists.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Reference information - Product Lists -description: This guide provides reference information you use when creating, updating, and managing product list in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-lists-reference-information -originalArticleId: 1dcb8925-e51b-478d-aa23-a9ca311689b9 -redirect_from: - - /v1/docs/product-lists-reference-information - - /v1/docs/en/product-lists-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/product-lists/references/product-lists-reference-information.html ---- - -This topic describes the attributes that you see, enter, and select while creating or managing the product lists. -*** -## Overview of Product Lists page - -On the **Overview of Product Lists** page, you see the following information: - -* The autogenerated product list ID -* Product list title and type (with Blacklist or Whitelist) -* Merchant relation ID, merchant name and the business unit owner name -* The actions that you can perform with each specific product list (Edit List, Remove List) - -By default, the last created product list goes on top of the table. However, you can sort and search the list of product lists. - -All columns with headers having arrows in the **List of Product Lists** table are sortable. You can list the table by any available column except for the _Actions_. -*** -## Create and Edit Product List page - -The following table describes attributes you see on the Create/Edit a Product List page. - -| Attribute |Description | -| --- | --- | -| **Title** | The title of your product list. It is not available in the online store and is not visible for your customers.| -| **Type** | The type of the product list you create: Blacklist, Whitelist. | -| **Owner Type** | A type of relationship the product list should work. Currently, only Merchant Relationship is available as an Owner Type. | -| **Merchant relationship** | The Merchant relationship from the Merchant Relations section presented in the following format: _[Merchant Name] - [Business Unit]_ | diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/creating-product-options.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/creating-product-options.md deleted file mode 100644 index 6f7173af746..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/creating-product-options.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Creating Product Options -description: Use this procedure to create a product option along with its values in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-option -originalArticleId: 827fff89-4b27-4097-b542-b1f57475e8a0 -redirect_from: - - /v1/docs/creating-a-product-option - - /v1/docs/en/creating-a-product-option - - /docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/creating-a-product-option.html -related: - - title: Product Options feature overview - link: docs/scos/user/features/page.version/product-options-feature-overview.html ---- - -This article describes the procedure you need to perform in order to create a product option. -*** -To start working with the product options, navigate to the **Products > Product Options** section. -*** - -**Prerequisites** - -You should have an appropriate Tax Set created in the **Taxes** section in order to apply it to the product option group. -*** - -Let's say you want to add additional options to your product, like a warranty or a gift box. Those are exactly the things that are created in the Product Options section. Such options will have their own prices, and the user will be able to select the most suitable one. - -*** - -**To create a product option:** -1. Click **Create product option** in the top right corner of the **Product option list** page. -2. On the **Create new Product Options** page that opens, you see **General Information** and **Products** tabs. -In the **General Information** tab: - 1. Add the group name translation key. The format of the group name translation key should be as follows: **product.option.group.name.[your key]**. For example, product.option.group.name.test. - 2. Define a tax set assigned to your product option group by selecting the appropriate value from the drop-down list. - 3. In the **Option Values** section, enter an option name translation key value. The format of the option name translation key should be as follows: **product.option.[your key]**. For example, product.option.newtest. - {% info_block infoBox "Note" %} - - You can remove an option value by clicking **Remove** next to the Option name translation key and SKU fields. - - {% endinfo_block %} - - 4. Add a unique SKU for a product option value or proceed with the auto-generated one. - 5. In the **Prices** section, specify gross and net prices for a product option value. If you want to add several product options values, click **Add option** below the **Prices** section, and repeat the same step. - 6. In the **Translation** section, add a group name and option name that will be displayed in the shop application per each locale. You can copy the Group and Option names from one locale to another using the corresponding **Copy** icon. -3. Click **Next** to proceed to the **Products** tab, or just click on it. -4. In the **Products** tab, select product(s) to be assigned to the product. - Alternatively, you can click **Select all on the page**. In this case, all the products displayed on the page will be selected and added to the product option. The products you select will appear in the **Products to be assigned** tab. -5. Once done, click **Save**. -*** - -**Activating a Product Option** - -Your product option is created, however, it is not activated thus it will not be seen on the product details page. - -**To activate a product option:** - -On the **Edit product option** page, click **Activate** in the top right corner. - -**OR** - -On the **Product option list** page, click **Activate** for a specific product option in the _Actions_ column. -*** - -**Tips and tricks** - -While creating a product option, if you want to remove some product from the selected, clear checkboxes next to the products you selected or click **Deselect all on the page** (this will remove all products from the to-be-assigned list you selected on this page). - -You can switch between **All products** and **Products to be assigned** view by selecting the respective options on the top of the products table. -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Options/Creating+a+product+option/product-to-be-assigned-tab.png) - -If you know the name or the SKU of the product to which an option should be assigned, you can search for it in the **Search** field. -*** - -**What's next?** - -Once the option is created, you may want to know how those options are managed. See [Managing Product Options](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/managing-product-options.html) for more details. - -To learn more about the attributes that you see, enter and select while creating a product option, as well as if you are interested to see some examples of how the product options are used, see [Product Options: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/references/product-options-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/managing-product-options.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/managing-product-options.md deleted file mode 100644 index a2bb23985ae..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/managing-product-options.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Managing Product Options -description: Use this section to view the product option details in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-options -originalArticleId: 502e1e6b-b878-41a2-8dc7-8e0e7f9c080c -redirect_from: - - /v1/docs/managing-product-options - - /v1/docs/en/managing-product-options -related: - - title: Product Options feature overview - link: docs/scos/user/features/page.version/product-options-feature-overview.html - - title: Creating Product Options - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-options/creating-product-options.html - - title: Product Options- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-options/references/product-options-reference-information.html ---- - -This article describes the managing actions that you can perform with the product options. -*** -To start managing product options, navigate to the **Products > Product Options** section. -*** -Before you start managing the product option by editing or deactivating it, you may want to see the product option details. - -To view a product option details, click **View** in the _Actions_ column for a specific product option. - -On the **View product option** page that opens, you see the following details: -* General information, including the group name translation key, the tax set applied to it, created and updated dates, translation key along with the SKU, gross price and net price values. -* Translations section with values per each locale. -* The table with products to which this option is assigned. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/product-options.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/product-options.md deleted file mode 100644 index b221f48d10b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/product-options.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Product Options -description: This section can be used if you want to add some additional services to your product- gift wrappings, insurance, etc. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-options-management -originalArticleId: 596df1ae-975c-49a3-bdbc-bb0eeddfdf29 -redirect_from: - - /v1/docs/product-options-management - - /v1/docs/en/product-options-management -related: - - title: Product Options feature overview - link: docs/scos/user/features/page.version/product-options-feature-overview.html ---- - -The Product Options feature is meant for creating and managing product additions. With this feature, online stores can offer their customers an opportunity to add some additional item or service to their products during the product purchase. - -Product options are product additions that allow a Back Office user to create and add product additions for an abstract product in the Back Office. Warranty, insurance, or gift wrappings for products are examples of product options you can easily manage in your Spryker shop application. - -Product options are connected to abstract products. They appear in groups that can have multiple product option values. Each product option value contains a unique identifier and price configuration. On the group level, a tax set is attached to the product option values. Also, each option group can be linked to many different abstract products and vice versa. -*** -**What's next?** - -* To learn how the product options can be created, see [Creating a Product Option](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/create-product-options.html). -* To learn what managing actions you can do with a product option, see [Managing Product Options](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/managing-product-options.html). -* To learn more about the attributes you see, enter and select while creating or managing product options, see [Product Options: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/references/product-options-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/references/reference-information-product-options.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/references/reference-information-product-options.md deleted file mode 100644 index 366d40a67b2..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/references/reference-information-product-options.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Reference information - Product Options -description: This guide describes the values you use and enter when creating or updating product options in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-options-reference-information -originalArticleId: 09cd4969-01c3-4980-a0af-84935afa9087 -redirect_from: - - /v1/docs/product-options-reference-information - - /v1/docs/en/product-options-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/product-options/references/product-options-reference-information.html ---- - -This article describes the attributes you see, enter, and select when creating or managing product options. - -You will also find some examples of how the product options can be used. -*** -## Product Option List page -On the Product option list page, you see the following information: -* The autogenerated option group ID. -* Group name and the SKU for it. -* The name of the product option. -* Gross and net price of the product option. -* Status (either Active or Inactive). -* Actions that you can perform for each specific option (Edit, View, Activate/Deactivate). - -By default, the table is sorted by **Option group ID**. You can sort the table by the **Group name** and **Status** columns. -*** -## Create/Edit Product Option page -The following table describes the attributes you enter and select while creating or updating product options. - -| Attribute | Description | -| --- | --- | -| **Group name translation key** | A glossary key for a product option group. The format of the group name translation key should be as follows: **product.option.group.name.[your key]**. For example, product.option.group.name.test.

This field is not available for modification on the Edit Product Option page. | -| **Tax Set** | Conditions under which a specific product option group is going to be taxed. A drop-down list with the values from the **Taxes > Tax Sets** section. | -| **Option name translation key** | A glossary key for a product option value. The format of the option name translation key should be as follows: **product.option.[your key]**. For example, product.option.newtest.

This field is not available for modification on the Edit Product Option page. | -| **SKU** | A unique SKU for a product option value. This value can be autogenerated, and you can use the autogenerated one.
This field is not available for modification on the Edit Product Option page. | -| **Gross price and Net price** | The price value for gross and net mode.| -|**Group name** | The name of your option group. | -| **Option name** | The name of your option. | - -## Product Option Examples -On the following example, the Warranty and Insurance are the product option groups: -![Product option example](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Options/Product+Options%3A+Reference+Information/product-option-example.png) - -And the values available in the drop-down lists are the product options: -![Select an option](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Options/Product+Options%3A+Reference+Information/select-option-drop-down.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/managing-product-reviews.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/managing-product-reviews.md deleted file mode 100644 index 8294d51c1ae..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/managing-product-reviews.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Managing Product Reviews -description: Use this guide to check the reviews, change their status, and delete inappropriate ones in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-reviews -originalArticleId: 379984fb-8632-4f78-93c9-f2e7aee1d8db -redirect_from: - - /v1/docs/managing-product-reviews - - /v1/docs/en/managing-product-reviews -related: - - title: Product Rating & Reviews feature overview - link: docs/scos/user/features/page.version/product-rating-and-reviews-feature-overview.html ---- - -This topic describes how to manage product reviews received from the customers. - -Learn how to: - -* check the contents of a review, such as summary and description. -* change the status of the reviews to be displayed for shop users. -* delete the reviews you have found abusive, inappropriate, etc. - ------- - -To start working with reviews, navigate to the **Products > Product Reviews** section. - ------- - -## Checking Reviews - -Before changing the status of or deleting a review, you can first read its contents. - -**To read a review**, click the arrow in the very first column of the **List of product reviews** table. - -## Changing Statuses of Reviews - -You can change the statuses of the reviews that have been submitted by the customers of your shop. - -**To change the status of a review:** - -1. Click **Change status** in the **Actions** column. -2. Set the new status: **Approve** or **Reject**. - -## Deleting Reviews - -You can delete a review, so it will no longer be shown on the **List of product reviews**. - -**To delete a review**, click **Delete** in the *Actions* column. - -{% info_block warningBox "Note" %} - -Keep in mind that there is no confirmation screen or pop-up shown. The review is deleted right after you click **Delete**. - -{% endinfo_block %} - -*** - -**Tips and tricks** - -You can quickly navigate to the **View Product Abstract** or **View Customer** page in the Back Office. Click the hyperlinked **Product Name** or **Customer** value in the **List of product reviews** table. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/product-reviews.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/product-reviews.md deleted file mode 100644 index dc40c011913..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/product-reviews/product-reviews.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Product Reviews -description: The section is used to define the customers who can add reviews and ratings to products, as well as -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-reviews-management -originalArticleId: 4f6c7561-a5fb-4c3c-bb43-78087d6ad667 -redirect_from: - - /v1/docs/product-reviews-management - - /v1/docs/en/product-reviews-management -related: - - title: Product Rating & Reviews feature overview - link: docs/scos/user/features/page.version/product-rating-and-reviews-feature-overview.html ---- - -The **Product Reviews** section of the Back Office is mostly used by the Customer Service. - -This section allows approving, rejecting, and deleting the reviews sent by shop users. - -{% info_block infoBox %} -This is how the Customer Service deals with the customers' reviews to create a list of the approved (or rejected -{% endinfo_block %} product reviews.) - ------- - -**What's next?** - -To get information on how to manage the reviews, read the following article: - -* [Managing Reviews](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-reviews/managing-product-reviews.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/abstract-and-concrete-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/abstract-and-concrete-products.md deleted file mode 100644 index 13591cd74cc..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/abstract-and-concrete-products.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Abstract and Concrete Products -description: Create and manage abstract and concrete products throughout your online shop in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/abstract-and-concrete-products -originalArticleId: d32d4139-39e9-457d-9cdd-7570ed1bb674 -redirect_from: - - /v1/docs/abstract-and-concrete-products - - /v1/docs/en/abstract-and-concrete-products -related: - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Managing Products Availability - link: docs/scos/user/back-office-user-guides/page.version/catalog/availability/managing-products-availability.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -Products can extensively vary, for example, in size or color. In order to provide a nice shopping experience to your customers, the different Variants, or Concrete Products, are grouped under an Abstract Product. -The topmost hierarchy level, the Abstract Product, does not have its own stock but defines various default properties for the descendant Concrete Products, or Product Variants. The Concrete Product always belongs to one Abstract Product, has a distinctive stock and always differs from another Concrete Product with at least one Super Product Attribute. See articles under the _Attributes_ section to learn more about the super attributes. According to Spryker Commerce OS logic, you create an abstract product first. - -See [Products: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/products-reference-information.html) to know more about abstract products and concrete products. - -In most cases, large product catalogs are imported into the system. But Category Managers can create the products manually. When you have a new product in your store with only several variants, it makes sense to create the product manually. - -*** -**What's next?** -Let's start learning how the products are created by reviewing a real-life example. - -You have a new product in your store. The new product is a Smartphone that goes in three colors: red, green, and orange. Those colors are product variants. - -So first you create an abstract product. See the [Creating an Abstract Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.md deleted file mode 100644 index b040e58f320..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Adding Volume Prices -description: Use the guide to set or update discounts to products purchased in bulk from the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/adding-volume-prices -originalArticleId: 8f5cf85b-eb77-45a9-8f5e-79264957c627 -redirect_from: - - /v1/docs/adding-volume-prices - - /v1/docs/en/adding-volume-prices -related: - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html - - title: Creating an Abstract Product - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/create-abstract-products-and-product-bundles.html - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html ---- - -This article describes the procedure of adding the volume prices for the product. -*** - -Volume price is a pricing strategy that allows discounts for bulk purchases. Typically, the greater the number of units purchased, the greater the discount allowed. -Unlike the discount rules, the volume prices are set up for each specific concrete product or product variant. -*** - -{% info_block warningBox "Note" %} - -The volume prices only work with the default prices set up. - -{% endinfo_block %} - -**To set up a volume price:** -1. Navigate to the **Price & Tax** tab of either an **abstract** or **concrete** product. -2. For each currency set up in your store, you see the **Add Product Volume Price** option in the currency abbreviation column (_if the price is defined for the currency_): - ![Add product volume prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Adding+Volume+Prices/add-product-volume-price.png) -3. Click **Add Product Volume Price**. -4. On the **Add volume prices** page, define the quantity of products for which a special price will be applied (_gross and net for B2B cases_) and click either **Save and add more rows** if you have entered all the rows on the screen and need to enter more conditions, or **Save and exit** if you have set up everything you need. - {% info_block warningBox "Note" %} - - Once the column prices are set up, the **Add Product Volume Price** option becomes **Edit Product Volume Price**. You use this option to edit the defined prices or to add more. - - {% endinfo_block %} - -*** - -**What's next?** - -See the _Reference_ section for examples of how the volumes prices are used. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-abstract-products-and-product-bundles.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-abstract-products-and-product-bundles.md deleted file mode 100644 index cc5d32b583f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-abstract-products-and-product-bundles.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Creating an Abstract Product -description: Use the procedure to create an abstract product, set a price and validity period, define superattributes, images, and a store the product is available in. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-an-abstract-product -originalArticleId: 17bb02c1-708a-4c08-945e-e908642152a9 -redirect_from: - - /v1/docs/creating-an-abstract-product - - /v1/docs/en/creating-an-abstract-product -related: - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Editing Product Variants - link: docs/pbc/all/product-information-management/page.version/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This topic describes the procedures that you need to follow in order to create an abstract product and its variants. -*** - -To start working with products, navigate to the **Products > Products** section. -*** - -{% info_block warningBox "Pre-requisite" %} - -As a pre-requisite for the procedure described below, please make sure that at least one super attribute exists in the system so you could create product variants. See the _Attributes_ set of articles to learn about the attributes. Please also keep in mind that all the variants you are going to create will have only the super attribute(s) that you select while creating the abstract product. - -{% endinfo_block %} - -{% info_block errorBox "Important" %} - -Please keep in mind that you need to add at least one product variant while creating an abstract product. This is needed in order to be able to add more variants to this product in the future. - -{% endinfo_block %} - -According to the use case described in the Abstract and Concrete Products article, you are creating a Smartphone abstract product and add at least one variant to it. -*** - -**To create** an abstract product: -1. Click **Create Product** on the top-right corner of the **Product** page. -2. On the **Create a Product > General** tab: - 1. In the **Store relation** section, select the store(s) your product should be available for. - 2. Enter the SKU prefix. - 3. Type the name(s) and description(s) for your product. - 4. Enter **New from** and **New to** dates if you want to specify the period for the product to have the **New** label to be assigned to it, and have the product to be dynamically assigned to the **New** category. -3. Click Next to go to the **Price & Tax** tab or just click on it. -4. On the **Create a Product > Prices & Tax** tab: - 1. **B2B only:** In the **Merchant Price Dimension**, select the merchant relationship to define a special price per merchant relation. See the [Merchants](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/marketplace.html) and [Products: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/products-reference-information.html) articles to know more. - 2. Define the prices for each currency and store that you have in your set up. If you want to display promotions, enter both Default and Original prices. If no, you can enter only the Default price. - {% info_block infoBox "Info" %} - - Gross prices are prices after tax, while net prices are prices before tax. - - {% endinfo_block %} - - See [Products: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/products-reference-information.html) to know more about default and original prices and why you use them. - 3. In the **Tax Set** drop-down, select the tax set that contains the tax rate(s) under which this specific product will be taxed. -5. Click **Next** or click the **Variants** tab. - On the **Create a Product > Variants** tab, your task is to select at least one super attribute from the list and enter the values that define the difference between your product variants. - As described in the example, you have a smartphone that goes in three colors. Thus the color is your super attribute. - 1. Select the **color** checkbox. - 2. Then select red, green, and orange from the drop-down list, or you can start typing the color and select the needed one from autosuggestion (the colors are your concrete products). See the [Creating a Product Attribute](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/create-product-attributes.html) article to know more about super attributes. - {% info_block warningBox "Note" %} - - If you are on the Variants tab and do not see the needed super attributes, you can go and create one in the separate tab. See the [Creating a Product Attribute](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/attributes/create-product-attributes.html) article. - - {% endinfo_block %} - - 1. Click **Next** or select the **SEO** tab. - 2. **Optionally:** On the **Create a Product > SEO** tab, enter meta information to describe the page's content. - 3. Click **Next** or select the **Image** tab. - 4. **Optionally:** On the **Create a Product > Image** tab, add images for the product: - 1. If the image is different for all locales, for each locale you click **Add Image Set**. If the image is the same, this is enough to add the Default image set. - 2. Enter the name of your image set, add links for the small and large images (if you need both). - 3. If you need several images/image sets, click either **Add image** or **Add image set** respectively and repeat the procedure. -6. Click **Save**. -*** - -**Tips and tricks** - -Once you click **Save**, the page is refreshed. You will see the **Edit Product** page. You can start editing your product variants right from here by navigating to the **Variants** tab. -*** - -**What's next?** - -During the procedure described in this topic you have already added several product variants, but you did not do any set up for them, thus the next step is to work with the product variants to populate them with the needed data and activate them to make them and the smartphone itself available in the online store (as well as to add more variants if needed). diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-product-bundles.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-product-bundles.md deleted file mode 100644 index dd589f17bfc..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/creating-product-bundles.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Creating and Managing Product Bundles -description: Use the guide to assign product variants to a bundle, set its price, add SEO data and images in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-and-managing-product-bundles -originalArticleId: cbb68e74-7ae1-4253-bbc4-1eddb75435d1 -redirect_from: - - /v1/docs/creating-and-managing-product-bundles - - /v1/docs/en/creating-and-managing-product-bundles - - /docs/scos/user/back-office-user-guides/201811.0/products/products/managing-products/creating-and-managing-product-bundles.html -related: - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html ---- - -This article describes how you add the product bundles and manage them. -*** -With the Product Bundles feature, you can freely tie individual items together and sell them as a package. As opposed to a set, in which products are loosely grouped, the items in a bundle are always sold together. You can choose to create a special bundle price to make the purchase more attractive. -You need bundles to simplify the user journey. When they want to buy something together, it is easier to make it once than to go to the product details page for each separate item and add it to the cart separately. -For example, if your product is a smartphone, you can set it up to be sold with the smart card and a case. -*** -**To create a product bundle:** -1. On the **Product** page, click **Create Bundle Product** in the top right corner. -2. On the **Create a Product** page, do the procedure described in the [Creating an Abstract Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) article: -3. Populate the **General**, **Price & Tax**, **SEO**, and **Image** tabs. -4. Click **Save**. - The only difference is that you do not define the product variants for the bundle. - Only one variant is created **automatically** once you save the data. -5. On the Variants tab, click **Edit** in the _Actions_ column. -6. Populate the information similarly to how you do for the product variant. -7. In the **Assign bundled products** tab, define the product variants that are going to be included in the bundle by selecting the checkboxes in the _Select_ сolumn. -8. Once done, click **Save**. - -*** -**Tips and tricks** -If you already have a product that you want to be sold in a bundle, you can update the **Assign bundled products** tab for a variant. The product will automatically be transformed into a bundle. -*** -**What's next?** -Review the [Creating an Abstract Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) and [Creating a Product Variant](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/creating-product-variants.html) articles to learn more about how the products are created. - -The _References_ section contains the articles with the detailed information about the attributes you see on the product pages, and the examples of how the products are used. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/editing-abstract-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/editing-abstract-products.md deleted file mode 100644 index 4944ab2557d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-abstract-products/editing-abstract-products.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Editing Abstract Products -description: The guide walks you through the procedure of updating an abstract product in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/editing-an-abstract-product -originalArticleId: d895943d-a48c-419a-99cd-39eb94fc35a8 -redirect_from: - - /v1/docs/editing-an-abstract-product - - /v1/docs/en/editing-an-abstract-product -related: - - title: Creating an Abstract Product - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/create-abstract-products-and-product-bundles.html - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html ---- - -This article describes the procedure of editing abstract products. -*** -To start updating the product, navigate to the **Products > Products** section. -*** -**To update an abstract product:** -1. Click **Edit** in the _Actions_ column for a specific product you want to update. -2. Update the general information, update or define new prices and taxes, work on the SEO information and images, review the scheduled prices (if any) and click **Save**. -3. In the **Variants** tab, perform the actions described in [Updating a Product Variant](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/editing-product-variants.html). -4. To add more concrete products, click **Add Variant** in the top right corner of the page. -5. To manage the product attributes, click **Manage Attributes** in the top right corner of the page. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/adding-product-alternatives.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/adding-product-alternatives.md deleted file mode 100644 index 8415132af80..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/adding-product-alternatives.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Adding Product Alternatives -description: The guide describes a procedure on how to add or remove alternatives to the products in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/adding-product-alternatives -originalArticleId: c2f21c3c-e0a4-4777-a5db-01c9deda6ace -redirect_from: - - /v1/docs/adding-product-alternatives - - /v1/docs/en/adding-product-alternatives - - /docs/scos/user/back-office-user-guides/201811.0/products/products/managing-products/adding-product-alternatives.html -related: - - title: Creating an Abstract Product - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/create-abstract-products-and-product-bundles.html - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This article describes the procedure of setting the alternatives for the products. -*** - -To start working with product alternatives, navigate to the **Products > Products** section. -*** - -The product alternative is displayed on the Product Details page. This allows your customer to select another item with similar characteristics. It can also help your customers make a purchase if the product they initially review is out of stock. -For example, if smartphone 1 is out of stock, or discontinued, you can set smartphone 2 to be its alternative. -*** - -To set product alternatives for a product, do the following: -1. On the **Edit Concrete Product** page, switch to the Product Alternatives tab. -2. To add product alternatives, enter _Product Name_ or its _SKU_ in the **Add Product Alternative by Name** or **SKU** field. - You can add multiple alternative products. -![Adding product alternatives](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Adding+Product+Alternatives/add-product-alternative.png) - -4. Click **Save**. - -Once the setup is completed, the page is refreshed to display the table with the alternative products you have added. -To remove any alternative product, click **Remove** in the _Actions_ column. -*** - -**Tips and tricks** - -The product alternatives will be displayed on the concrete product page only when it is out of stock or discontinued. In any other case, no alternatives are displayed. However, for each product added as an alternative one, a **Replacement for** section is going to be displayed: -![Replacement for](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Adding+Product+Alternatives/replacement-for.png) - -In addition to the alternatives section, a dynamic label is assigned to the product for which the alternatives are set up. -![Product label alternatives](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Adding+Product+Alternatives/product-label-alternatives.png) - -*** -**What's next?** - -See the articles in the _References_ section for more examples of the alternative products. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/creating-product-variants.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/creating-product-variants.md deleted file mode 100644 index 7c443778569..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/creating-product-variants.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Creating Product Variants -description: Use the guide to configure a product variant, set a price and validity period, make it searchable on the website, and more -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-variant -originalArticleId: 5f4db30b-2c63-4929-9cce-acb280e95423 -redirect_from: - - /v1/docs/creating-a-product-variant - - /v1/docs/en/creating-a-product-variant -related: - - title: Creating an Abstract Product - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/create-abstract-products-and-product-bundles.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Editing Product Variants - link: docs/pbc/all/product-information-management/page.version/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This topic describes the procedure you need to follow in order to add a new product variant to the abstract product. -*** - -The procedure that you are going to perform is very similar to how you create the abstract product and update the product variants. -To know what attributes you see, enter, and select while creating a product variant, see [Concrete Product: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/concrete-product-reference-information.html). -*** - -To start creating the product variant, navigate to the **Products > Products** section. -*** - -**To create a product variant:** -1. On the **Product** page, click **Edit** in the _Actions_ column for the product for which you want to create a new variant. -2. On the **Edit Product Abstract** page, click **Add Variant** in the top right corner. -3. In the **General** tab, do the following: - 1. Add **SKU** or select **Autogenerate SKU**. - 2. Select a super attribute. - {% info_block warningBox "Note" %} - - The super attributes drop-down list includes only those selected during the abstract creation flow. - - {% endinfo_block %} - - 3. Add product name and description and select **Searchable** if you want your product to be searchable by its name in the online store. - 4. Enter **Valid From** and **Valid To** dates to specify when the product should go online in the web-shop. This step is optional. -4. Go to the **Price & Stock** tab. -5. In the **Price & Tax** tab, set prices and taxes for products: - 1. To take the prices over from the abstract product, select **Use prices from abstract product**. - {% info_block warningBox "Note" %} - - The merchant relation prices are inherited by Product Variants as well. - - {% endinfo_block %} - - 3. Otherwise, enter Original and eventually Default prices for the product for Gross and Net price modes. - 4. **B2B only:** In the **Merchant Price Dimension**, select the merchant relationship to define a special price per merchant relation. See [Merchants](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/marketplace.html) and [Products: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/products-reference-information.html) to know more. - 5. Select **Quantity** for the product and then select **Never out of stock** if you want the product to never go out of stock. -6. **Optionally**: Click **Next** to go to the next tab (Image) or select a necessary tab. - 1. In the Image tab, add images for the product and define the image order. -7. **Optionally**: Click **Next** of select the **Assign bundled products** tab. This tab is used only if you need to create a bundles product. See [Creating and Managing Product Bundles](/docs/scos/user/back-office-user-guides/{{page.version}}/products/products/managing-products/creating-and-managing-product-bundles.html) to know more. -8. Click **Save**. -*** - -Once you click **Save**, the page is refreshed and you will see two additional tabs: Discontinue and Product Alternatives. See [Discontinuing Products](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/discontinuing-products.html) and [Adding Product Alternatives](/docs/scos/user/back-office-user-guides/{{page.version}}/products/products/managing-products/adding-product-alternatives.html) to know more. -*** - -**What's next?** - -Once you have set things up, you will most likely need to know what managing actions you can do with your products. See articles in the [Managing Products](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/managing-products/managing-products.html) section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/discontinuing-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/discontinuing-products.md deleted file mode 100644 index 6dd44a0175c..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/discontinuing-products.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Discontinuing Products -description: Use the guide to make the product variant discontinued in the Back Office. -last_updated: Feb 11, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discontinuing-a-product -originalArticleId: a084c458-1110-491a-abda-de41dfaba06c -redirect_from: - - /v1/docs/discontinuing-a-product - - /v1/docs/en/discontinuing-a-product -related: - - title: Creating an Abstract Product - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/create-abstract-products-and-product-bundles.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This article describes what steps you need to follow to discontinue the product. -*** - -After releasing a better version of a product, a company might decide to discontinue the older version. -This means that a product or service that is discontinued is no longer being produced or offered. -Let's say you have such a product for which a newer version is being released and you want to notify your customers that the older version is discontinued. How you do that? You mark the product variant as discontinued. - -{% info_block infoBox %} - -You always discontinue a product variant, not an abstract product itself. - -{% endinfo_block %} -*** - -**To discontinue a product:** - -1. On the **Edit Concrete Product** page, switch to the **Discontinue** tab. -2. Click **Discontinue**. - Once Discontinue is selected, you see additional attributes and information. -3. You can add a note about the reason for the product being discontinued, or any other useful information. Just enter the text to the Add Note section for each locale. -4. Click **Save**. - -The date of the deactivation is available for you on the Discontinue tab. -Days left (active_until) value is set to 180 days by default. You can change it on the project level. -After the product is marked as discontinued, a corresponding label appears on the product detail page and search results in the shop application. - -The product with the Discontinued label cannot be added to cart. -{% info_block warningBox "Note" %} - -If the product added to the shopping list or wishlist is marked as discontinued, the Discontinued status will appear in the list and the online store customer will not be able to proceed to the checkout. - -{% endinfo_block %} diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/editing-product-variants.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/editing-product-variants.md deleted file mode 100644 index ba287b9fd3e..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/manage-concrete-products/editing-product-variants.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Editing Product Variants -description: The guide describes how to update the product variant in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/updating-a-product-variant -originalArticleId: 5082b7bb-d9e2-4b41-9261-e06bcb765385 -redirect_from: - - /v1/docs/updating-a-product-variant - - /v1/docs/en/updating-a-product-variant -related: - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This article describes how you update the product variant added during the abstract product setup. -The described procedure is also valid for an already existing product variant. -*** - -To start working with product variants, navigate to the **Products > Products** section. -*** - -**Pre-conditions** - -The procedure you are going to perform is very similar to the procedure described in the Creating a Product Variant article. See the [Creating a Product Variant](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/creating-product-variants.html) article to know more. Also, see [Concrete Product: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/references/concrete-product-reference-information.html) to know more about the attributes that you see, select, and enter while updating the product variant. -*** - -**To edit** a product variant: -1. Navigate to the **Edit Concrete Product** page using one of the following paths: - * **Products > View** in the _Actions_ column for a specific abstract product **>** scroll down to the **Variants tab > Edit** in the _Actions_ column for a specific product variant - * **Products > Edit** in the _Actions_ column for a specific abstract product **> Variants tab > Edit** in the _Actions_ column for a specific product variant -2. On the **Edit Concrete Product** page, update the following tabs: - 1. **General tab**: populate name and description, valid from and to dates, make the product searchable by selecting the Searchable checkbox for the appropriate locale (or all locales). - 2. **Price & Stock tab**: define the default/original, gross/net prices, and stock. - {% info_block warningBox "Note" %} - - The prices for the variant are inherited from the abstract product so you will see the same values as you have entered while creating the abstract product. **B2B:** The merchant relation prices are inherited by Product Variants as well. - - {% endinfo_block %} - - 3. **Image tab**: define the image(s), image set(s), and the image order for you product variant. - 4. **Assign bundled products** tab: this tab is used in case you need to create a product bundle. See the [Creating and Managing Product Bundles](/docs/scos/user/back-office-user-guides/{{page.version}}/products/products/managing-products/creating-and-managing-product-bundles.html) article to know more. - 5. **Discontinue** tab: This tab is used in case you want to discontinue the product. See the [Discontinuing a Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/discontinuing-products.html) article to know more. - 6. **Product Alternatives** tab: This tab is used to define the product alternatives for the product. See the [Adding Product Alternatives](/docs/scos/user/back-office-user-guides/{{page.version}}/products/products/managing-products/adding-product-alternatives.html) topic to know more. - 7. **Scheduled Prices** tab: here you can only review scheduled prices imported via a CSV file if any. The actual import is done in the **Prices > Scheduled Prices** section. -3. Once done, click **Save**. - -*** - -**What's next?** - -Following the same steps, you will update all variants that you have added to your abstract product. -You may also want to add more product variants. Learn how you do that by navigating to the [Creating a Product Variant](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/creating-product-variants.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/managing-products/managing-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/managing-products/managing-products.md deleted file mode 100644 index f48137388ff..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/managing-products/managing-products.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Managing Products -description: Use this guide to view product details, activate or update product attributes in the Back Office. -last_updated: Feb 11, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-products -originalArticleId: 6c8da871-37bf-492f-ae1d-301320e16e76 -redirect_from: - - /v1/docs/managing-products - - /v1/docs/en/managing-products -related: - - title: Creating Product Variants - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/creating-product-variants.html - - title: Discontinuing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/discontinuing-products.html - - title: Creating and Managing Product Bundles - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/creating-product-bundles.html - - title: Adding Product Alternatives - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-concrete-products/adding-product-alternatives.html - - title: Adding Volume Prices - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/manage-abstract-products/adding-volume-prices-to-abstract-products.html - - title: Products- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/products-reference-information.html - - title: Abstract Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/abstract-product-reference-information.html - - title: Concrete Product- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/references/concrete-product-reference-information.html ---- - -This article describes the managing actions that you do for both abstract and concrete products as those actions are very similar. -*** -To start managing products, navigate to the **Products > Products** section. -*** -## Activating a Product -The abstract product is inactive until at least one product variant is activated. You should understand that there is no option to activate -**To activate a product:** -1. Navigate to the product variant of the product that you want to activate: - **Edit abstract product > Variant > Edit product variant** -2. Click **Activate** on the top of the **Edit Concrete Product** page. -Starting now, the product is visible to the customers of your online store. -Please keep in mind that each variant needs to be activated in order to be visible to your customers. -*** -**Tips and tricks** -If at some point of time you want to hide the product variant from your customers, you just deactivate it using the same procedure described above. This deactivates only the product variant. The abstract product is active until at least one its variant is active. -*** -## Viewing a Product -If you need to review the product details without actually editing them, do the following: -1. In the _Actions_ column of the abstract product you want to view, click **View**. -2. On the **View Product** page, you can navigate to the view product variant, initiate the editing flow for it, or manage its attributes. -*** -**Tips and tricks** -If you notice something you would like to change for your product, click **Edit** on the top-right corner of the page. -*** - -## Managing Product Attributes -When you see the **Manage Attributes** option, keep in mind that you manage the attributes like brand, but not the super attributes. Such attributes like brand do not define the product variants differentiation, meaning they are not used while defining the concrete products of an abstract product. They rather go to the details section on the product details page in your online store. You can manage attributes for both, abstract and concrete products. -*** -The attributes that you add are taken from the **Products > Attributes** section of the Back Office. So the attribute you want to define should exist in that section. -*** -**To manage the product attributes:** -1. Select the **Manage Attributes** option for the concrete or abstract product in the _Actions_ column, or from the top-right corner of the **Edit** page. -2. On the **Manage Attributes for Product** page, start typing the first three letter of the attribute key. -3. Select the suggested value and click **Add**. -4. In the _Attributes_ section, define the **Default** value for your attributes and specify the value for the **locales**. - Repeat the procedure if needed. -5. Once done, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/products.md deleted file mode 100644 index 9768072b808..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/products.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Products -description: This section is designed to manage products from product creation to stock and product reviews, options, labels, relations, lists, etc in the Back Office. -last_updated: Nov 26, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/products -originalArticleId: 9caabe13-c261-453d-a5f5-39481dcc460b -redirect_from: - - /v1/docs/products - - /v1/docs/en/products -related: - - title: Abstract and Concrete Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/abstract-and-concrete-products.html - - title: Managing Product Attributes - link: docs/scos/user/back-office-user-guides/page.version/catalog/attributes/managing-product-attributes.html - - title: Managing Products - link: docs/scos/user/back-office-user-guides/page.version/catalog/products/managing-products/managing-products.html - - title: Viewing Product Barcodes - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-barcodes/viewing-product-barcodes.html - - title: Accessing Product Labels - link: docs/scos/dev/glue-api-guides/page.version/managing-products/retrieving-product-labels.html - - title: Managing Product Labels - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-labels/managing-product-labels.html - - title: Managing Product Lists - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-lists/managing-product-lists.html - - title: Managing Product Relations - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-relations/managing-product-relations.html - - title: Managing Product Reviews - link: docs/scos/user/back-office-user-guides/page.version/catalog/product-reviews/managing-product-reviews.html - - title: Managing Product Sets - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-sets/managing-product-sets.html ---- - -The **Products** section in the Back Office is mostly used by the team members involved in Product Management. -It is used by: -* Product Catalog Manager -**Products > Availability** section in the Back Office - **Standardized flow of actions for an Inventory Manager** -![Flow of actions for a Product Catalog Manager](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/products-section.png) - -* Customer Service -**Products > Reviews** section in Back Office - **Standardized flow of actions for a Customer Service Representative** -![Customer Service Slice of life](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Customer+Service+Slice+of+life.png) - -* Product Catalog Manager -**Products > Products, Attributes, Product Options, Product Labels, Product Sets, Product Relations** sections in Back Office - **Standardized flow of actions for a Product Catalog Manager** -![Flow of actions for a Product Catalog Manager](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/products-section-2.png) - -{% info_block infoBox %} -This is how different teams and team members work with different product management menus and interact with others to have the products managed correctly. -{% endinfo_block %} - -Products are the core of your shop and deserve a great deal of your attention, as selling them is the whole reason behind your online store. Therefore, it is essential to know how to manage the products you present to your customers. The whole product management, from product creation to stock and product reviews management, is done in the **Back Office > Products** section. -*** -Product management section is split into smaller sub-sections. Those sub-sections are used to present a flow and the logical order of actions in the following format: -* **Attributes**, which should exist prior to the product setup -* _B2B only_: **Packaging Types** (packaging types are imported) -* **Product Labels**, which is an optional setup step -* **Product Options** -* **Products** itself -* **Product Sets** -* **Product Bundles**, which is not an independent sub-section but a part of Products -* **Product Barcodes**, which are created automatically once the product is created -* **Product Relations** -* **Product Reviews**, which can be only approved or rejected as they come from the customers for each specific item in the online store -* **Availability**, which can be used continuously -* _B2B only_: **Product Lists**, which are not product-related in terms of usage as they are created based on the contract conditions (merchant relations) - -*** -**What's next?** -To know how the products and the other product management-related values are created and managed, see the articles in the **Related Articles** section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-abstract-product.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-abstract-product.md deleted file mode 100644 index b73a8747ad8..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-abstract-product.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Reference information - Abstract Product -description: Use this section to learn more about the attributes you use when creating or updating abstract products in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/abstract-product-reference-information -originalArticleId: c81afd4f-fe68-4753-9760-d917a0b34b29 -redirect_from: - - /v1/docs/abstract-product-reference-information - - /v1/docs/en/abstract-product-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/abstract-product-reference-information.html ---- - -The following tables describe the attributes that you use when creating and editing concrete and abstract products. - -{% info_block warningBox "Note" %} - -The set of tabs for Create and Edit pages, as well as for abstract and concrete products, is different. Hence the additional columns with identifiers are added for your convenience. - -{% endinfo_block %} - -**General tab** - -| Attribute |Description | Create Abstract Product | Update Abstract Product | -| --- | --- | --- | --- | -|**Store relation** | Defines the store for which the product can be available.
You can select multiple values. | **Yes** | **Yes** | -| **SKU Prefix** | A number that you assign to the product will help to track unique information related to that product. | **Yes** | **Display Only** | -| **Name** | The name of your product that will be displayed in the online store for your customers. | **Yes** |**Yes** | -| **Description** | The description of the product that your customer sees in the online store. | **Yes** | **Yes** | -| **New from**
**New to** | Defines the period of time for which a dynamic label **New** will be assigned to the product. Either no dates can be selected, or both. | **Yes** | **Yes** | - ---- -**Price & Stock tab** - -| Attribute |Description | Create Abstract Product | Update Abstract Product | -| --- | --- | --- | --- | -|**Merchant Price Dimension**|**B2B Only**
The drop-down list that allows selecting a merchant relation and set up a specific price for a specific merchant.
If the Default value is selected, the prices will be the same for everyone.
The values available for selection derive from **Merchants > Merchant Relations**.
Only one value can be selected.|**Yes**|**Yes**| -| **Gross price**
**Net price** | The price value for gross and net mode.
The price you populate will be inherited by all product variants you add during abstract product creation.| **Yes** | **Yes** | -|**Default**
**Original**|Default prices are prices your customers will pay, whereas original prices are the "previous price" in case you want to display promotions. If you specify only a default price, it will be displayed just like a normal product price. However, if both prices are specified, the original one will appear crossed out in the shop.|**Yes**|**Yes**| -|**Add Product Volume Price**
**Edit Product Volume Price**|Once selected, the **Add volume price** (**Edit volume price**) page opens. This option allows you to define specific prices for a specific quantity of products that a customer selects. It works only in case of Default prices.
**Add Product Volume Price** appears only when the price for a currency was set up and saved.
**Edit Product Volume Price** appears only what the volume price was already set up for a currency.|**No**|**Yes**| -|**Tax Set**|The conditions under which a product is going to be taxed.
The values available for selection derive from **Taxes > Tax Sets**
Only one value can be selected.|**Yes**|**Yes**| - ---- -**Variants tab** - -{% info_block warningBox "Note" %} - -No values are available for selection when you create a product bundle. When you create a bundle, one product variant will be added by default. - -{% endinfo_block %} - -* **While creating** an abstract product, you will see a list of super attributes that derive from **Products > Attributes**. You can select as many super attributes as you need and define from one to many values for them (those values will define the difference between the product variants). Please keep in mind that moving forward, you will be able to create product variants only based on the selected super attributes. As well as you need to add at least one super attribute and define at least one value for it in order to be able to add more product variants in the future. -* **While editing the abstract product/product bundle**, you will see a table that displays the product variants that exist for this abstract product. From this page, you can View, Edit, and Manage Attributes for the product variant. ---- - -**SEO tab** - -| Attribute |Description | Create Abstract Product | Update Abstract Product | -| --- | --- | --- | --- | -|**Title**|The meta title for your product.|**Yes**|**Yes**| -|**Keywords**|The meta keywords for your product.|**Yes**|**Yes**| -|**Description**|Meta description for your product.|**Yes**|**Yes**| - ---- - -**Image tab** - -| Attribute |Description | Create Abstract Product | Update Abstract Product | -| --- | --- | --- | --- | -|**Image Set Name**|The name of your image set.|**Yes**|**Yes**| -|**Small**|The link of the image that is going to be used in the product catalogs.|**Yes**|**Yes**| -|**Large**|The link to the image that is going to be used on the product details page.|**Yes**|**Yes**| -|**Sort Order**|If you add several images to an active image set, specify the order in which they are to be shown in the front end and back end using Sort Order fields. The order of images is defined by the order of entered numbers where the image set with sort order "0" is the first to be shown.|**Yes**|**Yes**| - ---- -**Scheduled Prices tab** - -On this tab, you see a table with the scheduled prices imported via a CSV file. The following information is available: -* Currency, store, net, and gross price values -* Start from (included) and Finish at (included) values that identify a period of time when a specific price is going to be set for a product automatically. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-concrete-product.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-concrete-product.md deleted file mode 100644 index 44bd78b22d7..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-concrete-product.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Reference information - Concrete Product -description: Use this section to learn more about the attributes you use when creating or updating product variants in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/concrete-product-reference-information -originalArticleId: f4fa3e0b-2f0b-42ee-87fe-d62fdd2ef8ed -redirect_from: - - /v1/docs/concrete-product-reference-information - - /v1/docs/en/concrete-product-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/concrete-product-reference-information.html ---- - -The following tables describe the attributes that you use when creating and editing concrete and abstract products. -{% info_block warningBox "Note" %} - -The set of tabs for Create and Edit pages, as well as for abstract and concrete products, is different. Hence the additional columns with identifiers are added for your convenience. - -{% endinfo_block %} - -**General tab** - -| Attribute |Description | Create Concrete Product|Update Concrete Product| -| --- | --- | --- | --- | -|**Store relation** | Defines the store for which the product can be available.
You can select multiple values. | **No**|**No**| -| **SKU Prefix** | A number that you assign to the product will help to track unique information related to that product. | **Yes**|**Display Only**| -| **Autogenerate SKU** | Allows the system to autogenerate the SKU once you click **Save**. | **Yes**|**No**| -| **Super Attributes** | This section is only available if you have added more than one super attribute and defined more than one value for it.
E.g. if you selected the **color** to be a super attribute and defined **green**, **white**, and **black**, you will see "**color**" in this section and a drop-down with the colors you defined.
Only one value can be selected. |**Yes**|**No**| -| **Name** | The name of your product that will be displayed in the online store for your customers. | | **Yes**|**Yes** | -| **Description** | The description of the product that your customer sees in the online store. | **Yes** |**Yes** | -| **Searchable** | A checkbox that defines if the concrete product can be searched via the Search function in the online store. If not selected, no values will be displayed when searching for this product. | **Yes** | **Yes**| -| **Valid from**
**Valid to** | Defines the period of time when the product is in active state. The **Valid from** date triggers the activation, while the **Valid to** date triggers the deactivation. Either no dates can be selected, or both. |**Yes** |**Yes** | - ---- - -**Price & Stock tab** - -| Attribute |Description | Create Concrete Product|Update Concrete Product| -| --- | --- | --- | --- | -|**Use prices from abstract product**|Once the checkbox is selected, the prices from the abstract product are taken over.|**Yes**|**No**| -|**Merchant Price Dimension**|**B2B Only**
The drop-down list that allows you to select a merchant relation and set up a specific price for a specific merchant.
If the Default value is selected, the prices will be the same for everyone.
The values available for selection derive from **Merchants > Merchant Relations**.
Only one value can be selected.|**Yes**|**Yes**| -| **Gross price**
**Net price** | The price value for gross and net mode.
For concrete products, the prices are inherited from their abstract product and can be updated vile editing the concrete product.|**Yes** |**Yes** | -|**Default**
**Original**|Default prices are the prices your customers will pay, whereas original prices are the "previous prices" in case you want to display promotions. If you specify only a default price, it will be displayed just like a normal product price. However, if both prices are specified, the original one will appear crossed out in the shop.|**Yes**|**Yes**| -|**Add Product Volume Price**
**Edit Product Volume Price**|Once selected, the **Add volume price** (**Edit volume price**) page opens. This option allows you to define specific prices for a specific quantity of products that a customer selects. Works only in case of Default prices.
**Add Product Volume Price** appears only when the price for a currency was set up and saved.
**Edit Product Volume Price** appears only what the volume price was already set up for a currency.|**No**|**Yes**| -|(Stock) **Type**|Display-only field that displays warehouses according to your store|**Yes**|**Yes**| -|(Stock) **Quantity**|The number of items available in the warehouse.|**Yes**|**Yes**| -|(Stock) **Never out of stock**|The check-box that once selected will make the product always available to be purchased.|**Yes**|**Yes**| - ---- - -**Image tab** - -| Attribute |Description | Create Concrete Product | Update Concrete Product | -| --- | --- | --- | --- | -|**Image Set Name**|The name of your image set.|**Yes**|**Yes**| -|**Small**|The link of the image that is going to be used in the product catalogs.|**Yes**|**Yes**| -|**Large**|The link to the image that is going to be used on the product details page.|**Yes**|**Yes**| -|**Sort Order**|If you add several images to an active image set, specify the order in which they are to be shown in the front end and back end using Sort Order fields. The order of images is defined by the order of entered numbers where the image set with sort order "0" is the first to be shown.|**Yes**|**Yes**| - ---- - -**Assign bundled products tab** - -On this tab, you see a table with the concrete products that you can select to be included in a bundle of a specific variant. If you do need to create a bundle, do not select the values and skip the tab. - ---- - -**Discontinue tab** - -Available on the Edit page only. -Once you select to discontinue the product, you can add a note about that on this tab. - ---- - -**Product Alternatives tab** - -The only field available is **Add Product Alternative by Name or SKU**. Here it is enough to enter three characters of a product name or SKU to see the autosuggested product list. From one to many values can be selected. If there is no need to set up an alternative product, you can skip this tab. - ---- - -**Scheduled Prices tab** - -On this tab, you see a table with the scheduled prices imported via a CSV file. The following information is available: -* Currency, store, net, and gross price values -* Start from (included) and Finish at (included) values that identify a period of time when a specific price is going to be set for a product automatically. diff --git a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-products.md b/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-products.md deleted file mode 100644 index d9ac3ea70d9..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/reference-information-products.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Reference information - Products -description: Use this section to learn more about attributes you use when working with products in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/products-reference-information -originalArticleId: a005798c-d219-417c-b1cd-018038954fc6 -redirect_from: - - /v1/docs/products-reference-information - - /v1/docs/en/products-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/catalog/products/references/products-reference-information.html ---- - -This topic describes the attributes that you see and enter on different product's pages. -*** - -## Products Overview Page - -On the **Products** page, you see the following: -* Product ID (autogenerated), name and SKU -* The tax set applied to this product -* The number of variants this product has -*** -A set of following examples will help you to understand what your online store customers will see once you set up volume prices, product alternatives, original and default prices, and discontinue a product. As well as you will find an example of a product bundle. -*** - -## Volume Prices - -Let's say you have a product that you want to sell with a special price if a user wants to buy a specific number of the same product. For example, a Smartphone with a flash memory equals 16GB costs 25 Euros per item, but you have defined that if a user buys three items, the cost will be 23 Euros instead of 25. - -![Volume prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Volume-prices.gif) - - -## Discontinued Products and its Alternatives - -Let's say the Smartphone with a flash memory equals 16GB is no longer popular and it is more efficient for you to discontinue it. But you need to propose some replacements for it to make sure that the user journey will be successful. -You will discontinue this product variant and set up other products to be displayed as alternatives. -![Discontinued and alternatives](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Discontinued-and-Alternative.gif) - -## Product Bundles - -Let's say you want to simplify the user journey and allow buying a bundle of products that are commonly used together (e.g. pens, notebooks, copy paper, and other stationery). -You create a bundle for that purpose. -![Product Bundles](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/Bundle.gif) - -## Default and Original Prices - -If you want to display the difference in price in order to show what the price was before and how it changed, you add both, Default and Original prices. -The default prices are displayed in the online store as a current price, while the original one is displayed strikethrough. -![Default and Original prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Managing+products/Products:+Reference+Information/default-and-original-prices.gif) \ No newline at end of file diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/assigning-blocks-to-category-or-product-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/assigning-blocks-to-category-or-product-pages.md deleted file mode 100644 index a118dd0473f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/assigning-blocks-to-category-or-product-pages.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Assigning Blocks to Category or Product Pages -description: The guide provides instructions on how to assign blocks to category and product pages in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/assigning-blocks-to-category-or-product-pages -originalArticleId: ac06d431-82da-4942-bbe4-3f4df89c3b37 -redirect_from: - - /v1/docs/assigning-blocks-to-category-or-product-pages - - /v1/docs/en/assigning-blocks-to-category-or-product-pages -related: - - title: CMS Block- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/references/cms-block-reference-information.html - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html - - title: Managing CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/managing-cms-blocks.html - - title: Creating CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/creating-cms-blocks.html ---- - -The topic describes how to create a category and a product details page by assigning CMS blocks to those pages. -*** -This might be useful if you decided to hold a marketing campaign, a set of activities (sales, discounts) geared towards some event or add a banner to the page. In this case, you can embed a CMS block containing the marketing content that will be displayed only on category or product detail pages you specify. -*** -To start creating the category or product detail pages, navigate to the **Content Management > Blocks** section. -*** -## Assigning a Block to a Category Page -To create a category page: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Edit Block** next to the block you would like to use to create a page. -{% info_block warningBox %} - -You can only add existing, active, and not expired block. If the block has not been created yet, see the [Creating a CMS Block](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/creating-cms-blocks.html) article first. - - -{% endinfo_block %} - -2. On the **Edit CMS Block: Block ID** page that opens, put a cursor on the container where the CMS block will be displayed depending on your design requirements: - - * Categories: top - * Categories: middle - * Categories: bottom -![Position blocks on a category page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Content+Management+System/Blocks/Assigning+Blocks+to+Category+or+Product+Pages/categories-position.png) - -{% info_block infoBox %} - -See [CMS Block: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) to learn more about attributes displayed on the **Edit CMS Block: Block ID** page. - -{% endinfo_block %} - -3. From the drop-down list, select the category which this block will be assigned to. -4. To keep the changes, click **Save**. -*** -## Assigning a Block to a Product Detail Page -To create a product detail page: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Edit Block** next to the block you would like to use to create a page. - {% info_block warningBox %} - - You can only add existing, active, and not expired block. If the block has not been created yet, see the [Creating a CMS Block](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/creating-cms-blocks.html) article first. - - {% endinfo_block %} - -2. Scroll down the page to the **Products** field and put a cursor there. - - {% info_block infoBox %} - - See [CMS Block: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) to learn more about attributes displayed on the **Edit CMS Block: Block ID** page. - - {% endinfo_block %} - - ![Assign blocks to a product detail page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Content+Management+System/Blocks/Assigning+Blocks+to+Category+or+Product+Pages/product-page-block.png) - -3. From the drop-down list, select any of the suggested abstract products. -4. To keep the changes, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/cms-block.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/cms-block.md deleted file mode 100644 index 40854bb0c0b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/cms-block.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: CMS Block -description: The subsection is designed to create, view and update CMS block content in the editor from the Back Office to display it later in the online store. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-block-guide -originalArticleId: ebc2e918-c341-4bfc-b00d-a52de6d09631 -redirect_from: - - /v1/docs/cms-block-guide - - /v1/docs/en/cms-block-guide -related: - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html ---- - -CMS blocks can be used for adding content such as banners, charts, static links, banner images or similar items to be displayed throughout the online store. - -You can create, view and edit CMS block appearance and content in the WYSIWYG editor. In the Blocks section, you can add CMS blocks to a CMS page, a product detail page or a category product page. Also, if you have several stores configured, you can define in which stores CMS blocks can be visible. You can create promotional banners and specify how long the block is available in your online store by setting Valid from and Valid to values. Moreover, you can enable or disable the block per locale by activating or deactivating it in the Back Office. - -{% info_block warningBox %} -You can work with CMS blocks after they have been installed for your project. -{% endinfo_block %} - -*** -**What's next?** - -* To know more about how to add a CMS block to a page, see [Creating a CMS Block](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/creating-cms-blocks.html). -* To know more about how to update and view CMS blocks, see [Managing CMS Blocks](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/managing-cms-blocks.html). -* To learn more about how to set up the validity period during which a CMS block is visible on the shop website, see [Defining the Validity Period for CMS Blocks](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/defining-validity-period-for-cms-blocks.html). -* To know more about how to enable or disable a CMS block, see [Enabling/Disabling a CMS Block](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/managing-cms-blocks.html#activating-or-deactivating-a-cms-block). -* To know more about how to create Category and Product Detail Pages, see [Assigning Blocks to Category and Product Detail Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/assigning-blocks-to-category-or-product-pages.html). -* To learn more about attributes you use to create and edit CMS blocks, see articles in the [CMS Blocks: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/creating-cms-blocks.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/creating-cms-blocks.md deleted file mode 100644 index b23af96dfc0..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/creating-cms-blocks.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Creating CMS Blocks -description: The guide provides instructions on how to create a CMS block in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-cms-block -originalArticleId: 6de8f15b-76d1-4618-bf82-487709d347af -redirect_from: - - /v1/docs/creating-cms-block - - /v1/docs/en/creating-cms-block -related: - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html - - title: Managing CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/managing-cms-blocks.html - - title: Defining Validity Period for CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/defining-validity-period-for-cms-blocks.html - - title: CMS Block- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/references/cms-block-reference-information.html ---- - -This topic provides a list of steps to create a CMS block in Back Office. -*** -To start working with the CMS blocks, navigate to the **Content Management > Blocks** section. -*** -Here you can create a new CMS block, specify for which store and how long it will be visible in the online store, as well as create category or product detail pages. - -## Creating a CMS Block - -To create a block: - -1. On the **Overview of CMS Blocks** page, click **Create block** in the top right corner. -2. On the **Create CMS Block** page that opens, enter the block details: - {% info_block warningBox %} - - **Store relation**, **Template**, and **Name** must be filled in. All other fields are optional. - - {% endinfo_block %} - - * Store relation - * Template - * Name - * Valid from and Valid to - * Categories: top - * Categories: middle - * Categories: bottom - * Products - -{% info_block infoBox %} - -Templates are project-specific and are usually created by a developer and a business person. If you are missing a CMS Block template, contact them and refer to the [HowTo - Create a CMS Block template](/docs/scos/dev/tutorials/201811.0/howtos/feature-howtos/cms/howto-create-cms-templates.html#adding-a-template-for-a-cms-block). - -{% endinfo_block %} - -See [CMS Blocks: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) to learn more about CMS blocks attributes.) - -3. To save the changes, click **Save**. This will successfully create a block and take you to the **Edit Block Glossary** page. - -*** - -**What's next?** - -A new block has been created. Now, you can add the content if needed. - -* To learn more about how to edit a CMS block, see the [Editing CMS Blocks](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/managing-cms-blocks.html#editing-blocks) section in the _Managing CMS Blocks_ article. - -* To know how you to add blocks to pages, see the [Assigning Blocks to Category and Product details Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/assigning-blocks-to-category-or-product-pages.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/defining-validity-period-for-cms-blocks.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/defining-validity-period-for-cms-blocks.md deleted file mode 100644 index fee8fec454e..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/defining-validity-period-for-cms-blocks.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Defining Validity Period for CMS Blocks -description: The guide provides a procedure to set a validity period for a CMS block during which it will be displayed in the online store. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/defining-validity-period-for-cms-blocks -originalArticleId: 85f5369d-97e6-45b7-a04c-b2c78df3b6c9 -redirect_from: - - /v1/docs/defining-validity-period-for-cms-blocks - - /v1/docs/en/defining-validity-period-for-cms-blocks -related: - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html - - title: Creating CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/creating-cms-blocks.html - - title: Managing CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/managing-cms-blocks.html - - title: CMS Block- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/references/cms-block-reference-information.html ---- - -This topic describes the steps of setting up the validity period for CMS blocks. -*** -The validity period is a period of time during which a CMS block will be visible in the online store. Thus, you will not have to return to CMS block settings to remove it from the page because there is no need in its usage any longer. For instance, this may be important to use when holding marketing or promotion campaigns or adding a banner dedicated to special events. -*** -**To define the validity period:** - -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Edit Block** next to the block you want to specify valid dates for. -2. On the **Edit CMS Block: Block ID** page that opens, enter **Valid from** and **Valid to** dates during which your CMS block will be available on the page. -3. To keep the changes, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/managing-cms-blocks.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/managing-cms-blocks.md deleted file mode 100644 index 43de99c2e84..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/managing-cms-blocks.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Managing CMS Blocks -description: The guide provides procedures on how to view, update, activate and deactivate CMS blocks in the editor from the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-cms-blocks -originalArticleId: 25d10977-c448-4fe3-8d75-22e813443e9d -redirect_from: - - /v1/docs/managing-cms-blocks - - /v1/docs/en/managing-cms-blocks -related: - - title: CMS Block - link: docs/scos/user/features/page.version/cms-feature-overview/cms-blocks-overview.html - - title: Creating CMS Blocks - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/creating-cms-blocks.html - - title: Assigning Blocks to Category and Product Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/assigning-blocks-to-category-and-product-pages.html ---- - -This topic describes the procedures of managing CMS blocks. -*** - -To start managing CMS blocks, navigate to the **Content Management** > **Blocks** section. -*** - -You can view, edit, and activate or deactivate (depending on the current status) blocks by clicking respective buttons in the _Actions_ column in the list of CMS blocks. -*** - -## Viewing CMS Blocks - -To view a block: - -1. On the **Overview of CMS Blocks** page, click **View Block** in the _Actions_ column. -2. On the **View CMS Block: Block ID** page that opens, the following information is available: - - * General information - * Placeholders - * Category and Product lists - -See [CMS Block: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) to learn more about attributes on this page. - -{% info_block warningBox "Note" %} - -When the lists are empty, this block is not assigned to any category or product page. - -{% endinfo_block %} - -*** - -**Tips and tricks** - -On the **View CMS Block: Block ID** page, you can do the following: - -* Edit a block general information and layout by clicking **Edit block** in the top right corner of the page. -* Edit block content and insert CMS widgets by clicking **Edit placeholders** in the top right corner of the page. -* Make a CMS block invisible on the store website by clicking **Deactivate** in the top right corner of the page. -* Make a CMS block visible on the store website by clicking **Activate** in the top right corner of the page. -* Return to the list of CMS blocks by clicking **Back to list** in the top right corner of the page. -*** - -## Editing Placeholders - -To edit a placeholder: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Edit Placeholder** next to the block you want to update. -2. On the **Edit Block Glossary: Block ID** page that opens, you can update a title or content of the CMS block. -3. To save the updates, click **Save**. The updated block will be displayed on the grid of List of CMS Blocks. -*** - -**Tips and tricks** - -On the **Edit Block Glossary: Block ID** page, you can do the following: - -* Edit a block general information and layout by clicking **Edit block** in the top right corner of the page. -* Make a CMS block invisible on the store website by clicking **Deactivate** in the top right corner of the page. -* Make a CMS block visible on the store website by clicking **Activate** in the top right corner of the page. -* Return to the list of CMS blocks by clicking **Back to list** in the top right corner of the page. - -*** - -## Editing Blocks - -To edit a CMS block: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Edit Block** next to the block you want to update. -2. On the **Edit CMS Block: Block ID** page that opens, you can perform the following actions on the CMS block: - - * Specify a locale where the store will be available. - * Select a template of the block. - * Change the block name. - * Define the validity range for your block to be visible in the online store. - * Assign a block to a category or a product detail page. - -{% info_block infoBox %} - -See [CMS Blocks: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html) for more details. - -{% endinfo_block %} - -*** - -**Tips and tricks** - -On the **Edit CMS Block: Block ID** page, you can do the following: - -* Return to the page where you can edit block title and content. For this, click **Edit placeholders** in the top right corner of the page. -* Make the CMS block invisible on the store website by clicking **Deactivate** in the top right corner of the page. -* Make the CMS block visible on the store website by clicking **Activate** in the top right corner of the page. -* Return to a list of CMS blocks. To do this, click **Back to list**. - -*** - -## Activating or Deactivating a CMS Block - -You can make a CMS block either active (visible on the store website) or inactive (invisible on the store website). - -To activate a CMS block: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Activate** next to the block you want to update. -2. The status will be changed from _Inactive_ to _Active_. The CMS block with the updated status will appear on the grid of CMS blocks. - -To deactivate a CMS block: -1. On the **Overview of CMS Blocks** page in the _Actions_ column, click **Deactivate** next to the block you want to update. -2. The status will be changed from _Active_ to _Inactive_ and the block will be removed from the store website. The CMS block with the updated status will appear on the grid of CMS blocks. - -*** - -**What's next?** - -* To learn how to set the time period during which CMS blocks will be visible on the store website, see [Defining Validity Period for CMS Blocks](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/defining-validity-period-for-cms-blocks.html). - -* To know what attributes you enter and select while editing the CMS block, see [CMS Block: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content-management/blocks/references/cms-block-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/references/reference-information-cms-block.md b/docs/scos/user/back-office-user-guides/201811.0/content/blocks/references/reference-information-cms-block.md deleted file mode 100644 index 42b90c296ff..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/blocks/references/reference-information-cms-block.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Reference information - CMS Block -description: The guide provides reference information you need when managing CMS blocks in the Back Office. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-block-reference-information -originalArticleId: 21f8d583-3591-49cb-91e1-fd2792732786 -redirect_from: - - /v1/docs/cms-block-reference-information - - /v1/docs/en/cms-block-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/content/blocks/references/cms-block-reference-information.html - - /docs/scos/user/back-office-user-guides/201811.0/content-management/blocks/references/cms-block-reference-information.html ---- - -This topic contains the reference information you need to know when working with CMS Blocks in the **Content Management** > **Blocks** section. -*** -## CMS Blocks Page -On the **Overview of CMS Blocks** page, you see the following: - -| Attribute | Description | -| --- | --- | -| **Block ID** | A sequence number. | -| **Name** | The name of a CMS block. | -| **Template** | Defines a placeholder structure of the CMS block. | -| **Status** | A block status that can be active (visible in the online store) or inactive (invisible in the online store). | -| **Stores** | Locale(s) for which the block will visible on the store website. | -| **Actions** |A set of actions that can be performed on a CMS block. | - -On this page, you can also: - -* Switch to the page where you can create a new CMS block. -* Sort blocks Block Id, Name, Template, and Status. -* Filter content items by Block Id, Name, and Template. -*** -## Create and Edit CMS Block Page -The following table describes the attributes you enter when creating or editing a CMS block. - -|Attribute | Description| -| --- | --- | -| **Store relation** | A store locale for which the block will be available. | -| **Template** | A template that defines a placeholder structure of your block. | -| **Name** | A name of the block. | -| **Valid from** and **Valid to** | Dates that specify how long your active block will be visible in the online store. | -| **Categories: top** | A block or blocks assigned to a category page. The block will be displayed on the top of the page. | -| **Categories: middle** | A block or blocks assigned to a category page. The block will be displayed in the middle of the page. | -| **Categories: bottom** | A block or blocks assigned to a category page. The block will appear at the bottom of the page. | -| **Products** | A block or blocks assigned to a product details page. | -*** -## View CMS Block page -The following table describes the attributes you see when viewing a CMS block. - -| Attribute | Description | -| --- | --- | -| **General information** | The section provides details regarding the locales for which the block is available, its current status, block template and time period during which it is visible in the online store. | -| **Placeholders** | The section shows the translation of the block title and content per locale. | -| **Category list** | The section contains a list of category pages which the block appears on. | -| **Product lists** | The section contains a list of product detail pages which the block appears on. | diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/content-management-system.md b/docs/scos/user/back-office-user-guides/201811.0/content/content-management-system.md deleted file mode 100644 index 0ff10d8f35d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/content-management-system.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Content Management System -description: The section is designed to create and manage the content of your shop in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-guide -originalArticleId: bcca5467-1c3e-4fd0-8023-6500fbfd927b -redirect_from: - - /v1/docs/cms-guide - - /v1/docs/en/cms-guide - - /docs/scos/user/back-office-user-guides/201811.0/content/pages/F -related: - - title: CMS - link: docs/scos/user/features/page.version/cms-feature-overview/cms-feature-overview.html - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: CMS Block - link: docs/scos/user/back-office-user-guides/page.version/content/blocks/cms-block.html ---- - -The **Content Management** section in the Back Office is mostly used by Marketing Content Managers and Marketing Team. -*** -The section is designed to create, manage and display content in the storefront. The content is represented by **CMS Pages**, **CMS Blocks**, **Content Items**, and **Content Item Widgets**. This section also allows you to set up a URL redirect from one site to another. For example, you have several sites for your shop. However, you decide to remove one of them to display all the content on one website. - -**Standardized flow of actions for a Marketing Content Manager** -![Flow of actions for a Marketing Team](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Content+Management+System/content-management-section.png) - -{% info_block infoBox %} -This is how a Marketing Content Manager can work with the content using the Back Office and interact with other departments to launch a marketing campaign. -{% endinfo_block %} - -In the **Content Management** section, you can see the following: - -* Blocks -* Pages -* Redirects - -**CMS blocks** are parts of the page content that can be used for banners, charts, static links, banner images or similar items to be displayed throughout the shop website. - -**CMS pages** are additional pages you can create and manage to provide additional information about the shop like About Us, Terms and Conditions pages, or landing pages for promotions. - -*** -**What's Next?** - -To learn more about how to create, manage, view, and publish CMS pages, see the following articles: - -* [Creating a new page](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/creating-cms-pages.html) -* [Managing CMS page versioning](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-page-versions.html) -* [Managing CMS pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html) -* [Assigning Blocks to CMS, Category and Product pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/assigning-blocks-to-category-or-product-pages.html) - -To know about how to create and manage CMS blocks, see the following articles: - -* [Creating a new CMS block](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/creating-cms-blocks.html) -* [Managing CMS block details](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/managing-cms-blocks.html) -* [Assigning blocks to product and category pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/blocks/assigning-blocks-to-category-or-product-pages.html) - -To learn more about how to configure URL redirects, see the following article: - -* [Creating a URL redirect](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/creating-cms-redirects.html) -* [Managing CMS Redirects](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/managing-cms-redirects.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/file-manager.md b/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/file-manager.md deleted file mode 100644 index 4ca2e45f0ee..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/file-manager.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: File Manager -description: The section can be used to upload media files, build a file tree structure, view existing files, and set MIME types in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/file-manager -originalArticleId: 94feb193-724f-438c-aee9-74d66b819e12 -redirect_from: - - /v1/docs/file-manager - - /v1/docs/en/file-manager ---- - -The File Manager section in Spryker Back Office is mostly used by the Marketing Content Manager to download different types of files that are going to be used in the **Content Management > Content Items** section to create **File List** content items. -
**Standardized flow of actions for a Marketing Content Manager** -![File Manager - Marketing Content Manager](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/file-manager-section.png) - -{% info_block infoBox %} -This is how the Marketing Content Manager works in the Back Office to make the file setup that is going to be used when setting up a content item for a marketing or promotional campaign. -{% endinfo_block %} - -In the File Manager section, a Marketing Content Manager can do the following: - -* upload the files -* build the file tree structure by creating file directories and changing their order -* review the files available in the system -* define the MIME types -*** -To know more about the procedures that you need to follow to work in a file manager section, see the following articles: -* [Managing File Tree](/docs/scos/user/back-office-user-guides/{{page.version}}/content/file-manager/managing-file-tree.html) -* [Managing MIME Type Settings](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/mime-type-settings/managing-mime-type-settings.html) -* [Managing File List](/docs/scos/user/back-office-user-guides/{{page.version}}/content/file-manager/managing-file-list.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-list.md b/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-list.md deleted file mode 100644 index 1655c8c5220..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-list.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Managing File List -description: Use the procedures to view, edit, and delete files from the system in the Back Office. -last_updated: Oct 4, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-file-list -originalArticleId: 2532cd2d-6207-4851-97bf-455f6ce84de9 -redirect_from: - - /v1/docs/managing-file-list - - /v1/docs/en/managing-file-list -related: - - title: Managing File Tree - link: docs/scos/user/back-office-user-guides/page.version/content/file-manager/managing-file-tree.html - - title: Managing MIME Type Settings - link: docs/scos/user/back-office-user-guides/page.version/administration/mime-type-settings/managing-mime-type-settings.html ---- - -The File List section is a way to quickly review all the files from the file tree. -*** -**Prerequisites** -In the File List section, you will be able to do the actual managing action only in case you already have the files in the file tree. -*** -To start working with the file list, navigate to the **File Manager > File List** section. -*** -## Viewing a File -To view a file: -1. On the **File List** page in the _Actions_ column, click **View**. -2. On the **View File** page, you see the version, file name, the date and time when the file was uploaded. -*** -**Tips and tricks** -On this page, you can download the file: -1. Click **Download** in the _Actions_ column. -2. Follow the download pop-up instructions. -*** -## Editing a File -To edit a file: -1. On the **File List** page in the _Actions_ column, click **Edit**. -2. On the **Edit File** page, update the attributes. -3. Once done, click **Save**. - -On the **Edit File** page, an additional tab name **File versions** appear. - -The **File versions** tab shows the version of the file. -* A new version is created in case you download a new file instead of the one already used. -* If you only update the attributes, no new version is created. -*** -**Tips and tricks** -In the **File versions** tab, you can manage the versions by: -* Removing the not needed versions. Click **Delete** in the _Actions_ column for the version you want to remove. -* Downloading a specific version by clicking **Download**. -*** -## Deleting a File -If the file is no longer needed, you can permanently delete it from the system. -**To delete a file**, in the _Actions_ column, click **Delete** for a file you want to remove. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-tree.md b/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-tree.md deleted file mode 100644 index 497663b5525..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/file-manager/managing-file-tree.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Managing File Tree -description: Use the procedures to create or delete a file directory, upload media files, change the order for file directories in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-file-tree -originalArticleId: a17723bb-035a-4ab3-885e-6717258db21f -redirect_from: - - /v1/docs/managing-file-tree - - /v1/docs/en/managing-file-tree -related: - - title: Managing MIME Type Settings - link: docs/scos/user/back-office-user-guides/page.version/administration/mime-type-settings/managing-mime-type-settings.html - - title: Managing File List - link: docs/scos/user/back-office-user-guides/page.version/content/file-manager/managing-file-list.html ---- - -The File Tree section is used to upload the files, create/delete the directories and manage the files/directories order. - -This article describes the procedures that you can follow to manage the file tree. -*** -To start managing file tree elements, navigate to the **File Manager > File Tree** section. -*** -**Prerequisites** -If there are no MIME types defined in the MIME Type Settings section, you will be able to download any type of file. If you have at least one MIME type defined as Is Allowed, you will be able to download only the files of that type, unless you add more allowed types. See [Managing MIME Type Settings](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/mime-type-settings/managing-mime-type-settings.html) for more details. -*** -## Creating a File Directory -To preserve a logical structure of the files that are going to be uploaded to the system and used for the marketing campaigns, you should define the structure according to which your files are going to be stored. Structured marketing campaign materials will also help the other Marketing Team members to work with the File Manager section. - -To create a file directory: -1. On the **Overview of File Tree** page, click **Create File Directory** in the top right corner. -2. On the **Create Directory Element** page, enter the name of your directory to the **Name** field and populate the **Title** field for all locales. -3. Once done, click **Save**. - -The created folder will be displayed on the left of the **Overview of File Tree** page. -You can create multilevel structures by changing the directory order. -*** -## Reordering Directories - -To reorder directories, drag and drop them to the necessary place. -![Reordering directories](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+File+Tree/reordering-directories.gif) - -Once you are satisfied with the order, click **Save Order**. -*** -## Deleting Directories -To delete a directory: -1. Click on the directory in the **File Tree** section. -2. Click **Delete Directory** in the top right corner of the page. -3. On the system message pop-up, click **Confirm** to confirm the action. -![Deleting directories](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/File+Manager/Managing+File+Tree/deleting-directories.gif) -*** -## Uploading Files -Once you have set up the directory structure you can proceed with uploading files to those folders. - -To upload a file: -1. Click on the directory to which a file needs to be uploaded. -2. In the top right corner of the **Files List** section, click **Add File**. -3. On the **Add a file** page, do the following: - * Enter the file name. - You can leave this field blank and select the use file name checkbox. In this case, the uploaded file name is going to be used. - * Click **Browse...** and select the file to upload. - * Select the **Use file name** checkbox if you want the file name be used instead of the entered file name. - * Optionally, populate the **Alt** and **Title** fields for each locale. -4. Once done, click **Save**. -The file is uploaded to the selected folder. -*** -## Managing Files -Once the file is uploaded, you can manage it from two locations: -* File List (see [Managing File List](/docs/scos/user/back-office-user-guides/{{page.version}}/content/file-manager/managing-file-list.html) for more details) -* File Tree - -**To manage a file:** -1. Navigate to the folder where the file locates and click on it. -2. In the **Files list** section, select one of the following in the _Actions_ column for a file: - 1. **View** to view the file. You are redirected to the View file page where you can download it by clicking **Download** in the _Actions_ column. - 2. **Edit** to edit the file. You will be redirected to the Edit file page where you can update the file information. You can even download another file instead of the one that is already in use. - 3. **Delete** to delete a file. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/managing-navigation-elements.md b/docs/scos/user/back-office-user-guides/201811.0/content/navigation/managing-navigation-elements.md deleted file mode 100644 index 57cdf9b6654..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/managing-navigation-elements.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Managing Navigation Elements -description: Use these procedures to create, edit, activate or deactivate a child node, view and manage a navigation tree and create the new navigation in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-navigation -originalArticleId: 9e8203a1-3383-45e8-b115-33320686bd0f -redirect_from: - - /v1/docs/managing-navigation - - /v1/docs/en/managing-navigation -related: - - title: Navigation Module - link: docs/scos/dev/feature-walkthroughs/page.version/navigation-feature-walkthrough/navigation-module.html ---- - -This topic describes the procedures that you need to perform to manage navigation elements and navigation nodes. -*** -To start managing navigation elements and nodes, navigate to the **Navigation** section. -*** -## Creating a New Navigation Element -To create a navigation element: -1. Click **Create Navigation** in the top right corner of the **Overview of Navigation Elements** page. -2. On the **Create Navigation Elements** page, specify the following: - * **Name** - give your navigation tree a name. - * **Key** - specify the navigation key. The key is used to reference the navigation from Yves. -3. Select the **Active** checkbox if you want to make the navigation item active, or leave it unchecked if you want to have it inactive. If a navigation item is inactive, this element and all its nodes will not be visible in the online store. -4. Click **Save**. -*** -The Navigation list displays all the elements in your system. Here you can see if they are active or not, modify, activate or deactivate, as well as delete flow for a navigation element. - -You can also search for a navigation element by starting to type its name or key in the **Search** field. As you type, the list of found navigation elements with the matching values in the **Name** and **Key** fields will be displayed in the **List of navigation elements** table. -*** -## Creating a Child Node - -**To create a child node to an existing navigation element:** -1. Click on the navigation element in the **List of navigation elements** table to select the element. -2. Add the relevant information in the **Create child node** section. -3. Click **Save**. -![Creating a child node](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Managing+Navigation/create-child-node.gif) - -After saving your node, the view will be updated and instead of the **Create child** node frame you should now be able to see the **Update node** frame. The newly added node now should appear in your navigation tree. -*** -**To create a child node to another node:** -1. Click on the navigation element in the **List of navigation elements** table to select the element. -2. Click on the node under the navigation element in the **Navigation tree** section. -3. In the **Create child node** section, click **Create child node**. -4. Add the relevant information in the **Create child node** section. -5. Click **Save**. - ![Creating a child node to another node](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Managing+Navigation/create-child-node-to-node.gif) -*** -## Editing, Deleting, Deactivating/Activating a Navigation Element - -To **edit, delete, deactivate or activate** a navigation element, in the **List of navigation elements** table > _Actions_ column, click one of the following depending on the action you need to perform: -1. **Activate** - to activate an element. The status is changed from _Inactive_ to _Active_. -2. **Edit** - to edit the name of the navigation element (the **Key** field is not available for modifications). Once done, click **Save**. -3. **Deactivate** - to deactivate an element. The status is changed from _Active_ to _Inactive_. -4. **Delete** - to delete a navigation element. Once selected, the element is deleted. -*** -## Reordering Nodes - -1. To reorder nodes, drag and drop elements in the tree. -2. To keep the changes, click **Save order**. -![Reordering nodes](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Managing+Navigation/reordering-nodes.gif) -*** -**Tips and tricks** -To know more about the node types that you select, see [Navigation Node Types](/docs/scos/user/back-office-user-guides/{{page.version}}/content/navigation/references/navigation-reference-information.html) in the References section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/navigation.md b/docs/scos/user/back-office-user-guides/201811.0/content/navigation/navigation.md deleted file mode 100644 index ebbce53326b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/navigation.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Navigation -description: The section can be used to create navigation elements with CMS pages, categories, and other relevant links, and build a nested structure with nodes. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/navigation-guide -originalArticleId: 9187174d-a44f-463a-b048-cefce0b61947 -redirect_from: - - /v1/docs/navigation-guide - - /v1/docs/en/navigation-guide ---- - -The Navigation section of Spryker Back Office is mostly used by Backend Developers in cooperation with Product Catalog Managers to build the online store navigation. -
**Standardized flow of actions for a Backend Developer** -![Navigation - Backend Developer](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/navigation-section.png) - -{% info_block infoBox %} -This is how the Backend Developer works in the Back Office and with other teams to set up the online store navigation. -{% endinfo_block %} -*** -Spryker's Navigation allows creating complex navigation elements with CMS pages, categories, and any other relevant links. You can even group certain items together into secondary menus and customize their look and feel. With Navigation, you can build and manage as many navigation elements as needed. All navigation elements can have their own nested structure of navigation nodes. -You can use navigation elements to build your store's main navigation, footer links for backlinks, etc. -*** -**What's next?** - -* To know how the navigation elements are managed, see [Managing Navigation](/docs/scos/user/back-office-user-guides/{{page.version}}/content/navigation/managing-navigation-elements.html). -* To know more about the Navigation node types, see [Navigation Node Types](/docs/scos/user/back-office-user-guides/{{page.version}}/content/navigation/references/navigation-reference-information.html) in the References section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/references/reference-information-navigation.md b/docs/scos/user/back-office-user-guides/201811.0/content/navigation/references/reference-information-navigation.md deleted file mode 100644 index 95c0e9dec65..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/navigation/references/reference-information-navigation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Reference information - Navigation -description: The guide provides the navigation node types and additional node-related information. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/navigation-node-types -originalArticleId: 07415859-7edf-4866-ad2d-f837d45e723c -redirect_from: - - /v1/docs/navigation-node-types - - /v1/docs/en/navigation-node-types - - /docs/scos/user/back-office-user-guides/201811.0/content/navigation/references/ navigation-reference-information.html - - /docs/scos/user/back-office-user-guides/201811.0/content/navigation/references/navigation-reference-information.html ---- - -This article describes the navigation node types. -*** -Navigation nodes can be of different types: - -| Node Type | Node Description | -| --- | --- | -|Label
![Label](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Navigation+Node+Types/label.png) | Labels do not link to any specific URL; they are used for grouping other items accessed from the menu.| -| Category
![Category](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Navigation+Node+Types/category.png) | Category is used to link an existing category you have to the navigation node. A category must exist in the Category section. | -|CMS Page
![CMS page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Navigation+Node+Types/cms-page.png) | CMS page can be assigned to a node. A CMS page must exist in the **Content Management > Pages** section.| -| External URL
![External URL](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Navigation+Node+Types/external-url.png) |External URL is a link that is typically opened in a new tab. | -|Link
![Link](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Navigation/Navigation+Node+Types/link.png) | Link to internal pages, i.e. login, registration, etc. | -Depending on the type of the node there is various node related information that can be managed: -* Localized title (**all types of nodes**): This is the name of the node exactly how it will be displayed in the store (for example if you link a category to your node, the node name can be even different from the name of the category). -* Localized custom CSS class (**all types of nodes**): If the class is defined in the shop, then a correct class reference will define the look and feel of the node. This is also localized, which means that for different locales you can have different appearances for the same node. -* Active/not active (**all types of nodes**): If necessary, you can also completely deactivate a node. This will also make the node and the nodes below it invisible in your shop for as long as it’s inactive. -* Localized category URL (**only for “Category” type**): When you are assigning a category, to the node you can search by the category name to select the correct category URL you want to assign. Keep in mind that this also is localized information, so for multiple locales, you will need to make sure that you select the same category for all locales. If your category has multiple parents in the category tree, the same category can have different URLs. In this case, you will need to pick one of those URLs. -* Localized CMS page URL (**only for “CMS” type**): When you are assigning a CMS page to the node, you can search by the CMS page name to select the correct CMS page URL you want to assign. Keep in mind that this is also localized information, so for multiple locales you will need to make sure that you select the same CMS page for all locales. -* Link (**only for “Link” type**): This is the relative path of your internal link. For example, if you would like to link a login page that is under “/login”, then this is exactly what you will use as an input for the Link field. -* External URL (**only for “External URL” type**): If you would like to link an external URL to your nodes, you will use this field to define the absolute URL. This could be used, for example, to link your corporate websites page in your shop. Unlike internal links, the URL of the external link should be absolute which means it needs to include the protocol as well as domain, e.g. https://mydomain.com/page diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/assigning-blocks-to-category-and-product-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/assigning-blocks-to-category-and-product-pages.md deleted file mode 100644 index 2a93d6cf294..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/assigning-blocks-to-category-and-product-pages.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Assigning Blocks to Category and Product Pages -description: The guide provides instructions on how to assign blocks to category and product detail pages, and add CMS blocks to a CMS page in the Back Office. -last_updated: Feb 11, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/assigning-blocks-to-category-and-product-pages -originalArticleId: da1bd7e5-47c9-47e0-84ea-0be240553198 -redirect_from: - - /v1/docs/assigning-blocks-to-category-and-product-pages - - /v1/docs/en/assigning-blocks-to-category-and-product-pages -related: - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html ---- - -This topic describes how you can create category or product detail pages by adding a CMS block to a page. -*** -To assign a block to a category or product, navigate to the **Content Management** > **Pages** section. -*** - -**Prerequisites** - -Make sure that the block to be added _exists_, is _active_ and has _not expired_. - -*** - -**To add a CMS block to a CMS page:** - -1. On the **Overview of CMS Pages** page in the _Actions_ column, click **Edit > Placeholders** next to the page you want to add a block to. -2. On the **Edit Placeholders: [Page Name]** page that opens, switch to the **Placeholders** tab and place your cursor where you want to insert a CMS block. -3. Enter the following information: - - {% raw %}{{{% endraw %} cms_block( {'Block name'} ) {% raw %}}}{% endraw %} where **Block name** is a name of the block. - - {% info_block infoBox %} - - Alternatively, you can create a CMS block on the page manually. To do this, click **Cms content widgets usage information**, copy the **cms_block** code and paste it into the page. - - {% endinfo_block %} - -4. Replace **block_name_placeholder** with the name of the block you want to add to this current page. - - {% info_block infoBox %} - - You can get a block name in the _Name_ column of the List of CMS blocks on the Overview of CMS Blocks page. - - {% endinfo_block %} - -5. To keep the changes, click **Save**. -*** - -**Tips and tricks** - -If you want to create different versions of the page per locale, add the general information to the section in the corresponding language. -*** - -**What's next?** - -The block has been added to the page. So, you can preview the page draft to see how it will look like on the store website or publish the page. - -* To learn how to preview the page draft, see the [Previewing a Page](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html#previewing-cms-pages) section in [Managing CMS Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html). - -* To learn how to publish the page, see the [Publishing a Page](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html#publishing-a-page) section in [Managing CMS Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/cms-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/cms-pages.md deleted file mode 100644 index 1e7b312c2bd..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/cms-pages.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: CMS Pages -description: The CMS Pages section is designed to create, view, update, publish CMS pages, compare its versions, and activate/deactivate in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-pages -originalArticleId: baff2269-9604-4d91-8e40-a47bee520928 -redirect_from: - - /v1/docs/cms-pages - - /v1/docs/en/cms-pages -related: - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html ---- - -CMS page is an extra HTML page of your Spryker shop that you, as a Back Office user, can create and edit using the WYSIWYG editor. The examples of CMS pages are About Us, Impressum, Terms and Conditions pages. - -You can create, view, publish and edit CMS pages in the **Pages** section. It is possible to create several versions of the same page: keep new changes or discard them and, thus, return to any previous version using the Versioning History functionality. Additionally, you can define how long the page will be visible on the store website. -*** -**What's next?** - -* To know more about how to create a CMS page, see [Creating a CMS Page](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/creating-cms-pages.html). - -* To know more about how to publish, view, edit and activate or deactivate CMS pages, see [Managing CMS Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html). - -* To know more about how to view the version history of CMS pages and compare versions, see [CMS Versioning](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-page-versions.html). - -* To learn more about attributes you use to create and edit CMS pages, see articles in the [CMS Pages: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/references/cms-pages-reference-information.html) section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/creating-cms-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/creating-cms-pages.md deleted file mode 100644 index 1c4c7dcb114..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/creating-cms-pages.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Creating CMS Pages -description: The guide provides a procedure to create a CMS page, make it searchable per store in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-cms-page -originalArticleId: 4526f95f-0538-4618-887d-818b2c0e5695 -redirect_from: - - /v1/docs/creating-a-cms-page - - /v1/docs/en/creating-a-cms-page -related: - - title: Managing CMS Page Versions - link: docs/scos/user/back-office-user-guides/page.version/content/pages/ managing-cms-page-versions.html - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: CMS Pages- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/pages/references/cms-pages-reference-information.html - - title: Editing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/editing-cms-pages.html - - title: Managing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/managing-cms-pages.html - - title: Assigning Blocks to Category and Product Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/assigning-blocks-to-category-and-product-pages.html ---- - -This topic provides a list of steps to create a CMS page in the Back Office. -*** - -To start working with the CMS pages, navigate to the **Content Management** > **Pages**. -*** - -CMS page is an additional page of your online shop, such as Terms and Conditions, About Us, Contact Us, etc. Here you can create, publish, edit, and manage CMS pages, as well as add content item widgets coupled with the template and multiple CMS blocks. -*** - -## Creating a CMS Page - -To create a page: -1. In the top right corner, click **Create page**. -2. On the **Create CMS Page** page that opens, you can see two tabs: General and SEO. -3. In the **General** tab, do the following: - * Use the **store relation** to set a store for which your page will be visible on the website. If you want your CMS page not to be displayed per specific locale, clear a respective checkbox. - * **Optional**: Select **Is searchable** if you want your page to be searched for on the web. - * Select a page template that will determine a page layout. This is a **mandatory** step. - - {% info_block infoBox %} - - Templates are project-specific and are usually created by a developer and a business person. If you are missing a CMS Page template, contact them and refer to the [HowTo - Create a CMS Page template](/docs/scos/dev/tutorials/201811.0/howtos/feature-howtos/cms/howto-create-cms-templates.html#adding-a-template-for-a-cms-page). - - {% endinfo_block %} - - * **Optional**: Enter **Valid from** and **Valid to** if you want to define the validity period during which your page will be available in the shop. - * Enter **Name** and **URL** of the page per locale. This is a **mandatory** step. - -4. In the **SEO** tab, enter meta information: title, keywords, and description. The meta details are important for SEO purposes, such as optimizing webpage ranking by search engines and improving website usability. -5. To keep the changes, click **Save**. -*** - -**Tips and tricks** - -* Keep in mind that by default, store relation is enabled for all stores. To hide your page per specific locale(s), clear checkboxes per that(those) locale(s). - -* Please consider the following cases: - * If **Is searchable** is selected, but **store relation** is turned off for all stores, the CMS page will not be displayed and will not be searchable. - * If **Is searchable** is not selected, but **store relation** is turned on, the CMS page will be shown but will not be searchable. - * If you want to create **different** versions of the page per locale, add the general information to the section in the corresponding language. - -*** - -**What's next?** - -Until now, you have created a page draft. The page itself will be available in the online store after you publish it. - -To learn how to view or publish the page, see [Managing CMS Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/editing-cms-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/editing-cms-pages.md deleted file mode 100644 index b567ccda0aa..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/editing-cms-pages.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Editing CMS Pages -description: The guide provides instructions on how to update page layout, SEO data and page content in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/editing-cms-pages -originalArticleId: 5f6a56f6-fcd0-4620-88a3-a71329e7c1f3 -redirect_from: - - /v1/docs/editing-cms-pages - - /v1/docs/en/editing-cms-pages -related: - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: Creating CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/creating-cms-pages.html - - title: Managing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/managing-cms-pages.html - - title: Managing CMS Page Versions - link: docs/scos/user/back-office-user-guides/page.version/content/pages/ managing-cms-page-versions.html - - title: Assigning Blocks to Category and Product Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/assigning-blocks-to-category-and-product-pages.html ---- - -The topic describes how to edit CMS pages in the Back Office. -*** -To start editing CMS pages, navigate to the **Content Management > Pages** section. -*** -## Editing CMS Pages -You can edit page layout, modify SEO information or update page content. -**To edit a page:** -1. On the **Overview of CMS Pages** page, click **Edit** in the _Actions_ column. -2. From the drop-down list, you can select the following options: - * Page - * Placeholders - -### Selecting the Edit > Page option -To change general information of the page and SEO details: -1. Select **Edit** > **Page**. -2. On the **Edit CMS Page: [Page Name]** page that opens, you can see the following: - In the **General** tab: - * Store relation - * Template - * Valid from and Valid to - * Name and URL per locale - - In the **SEO** tab (per locale): - * Meta title - * Meta keywords - * Meta description -*** -**Tips and tricks** -On the **Edit CMS Page: [Page name]** page, you can do the following: - -* Publish the current version of the page by clicking **Publish** on the top of the page. -* View general information about a published page, and its URL and metadata by clicking **View** on the top of the page. -* Switch to the page where you can edit a title and content of the page by clicking **Edit Placeholders** on the top of the page. -* Cancel changes since the previous publish by clicking **Discard Draft** on the top of the page. -* Remove the published version of the page from the store website by clicking **Deactivate** on the top of the page. -* Make the page visible on the store webs ite by clicking **Activate** on the top of the page. -* Switch to the list of pages by clicking **Back to CMS** on the top of the page. - -### Selecting the Edit > Placeholders option -To change the title and content of the page: -1. Select **Edit** > **Placeholders**. -2. On the **Edit Placeholders: [Page Name]** editor that opens, insert your cursor into the placeholder where you would like to update the content. -3. Using options on the editor menu, edit the content of your page. -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Content+Management+System/Pages/Editing+CMS+Pages/placeholders.png) - -{% info_block infoBox %} - -In the placeholders editor, you can insert a banner, abstract product list, product set, and downloadable files using content item widgets. See the [Adding Content Item Widgets to a Page](F#adding-content-item-widgets-to-pages) article for more details. - -{% endinfo_block %} - -*** -**Tips and tricks** -On the **Edit Placeholders: [Page Name]** editor, you can do the following: - -* Publish the current version of the page by clicking **Publish** on the top of the page. -* View general information about a published page, and its URL and metadata by clicking **View** on the top of the page. -* See how the current version of the page will be displayed on the website before publishing by clicking **Preview** on the top of the page. -* Switch to the page where you can edit general information and meta details of the page by clicking **Edit Page** on the top of the page. -* Cancel changes since the previous publish by clicking **Discard Draft** on the top of the page. -* Remove the published version of the page from the store website by clicking **Deactivate** on the top of the page. -* Make the page visible on the store website by clicking **Activate** on the top of the page. -* Switch to the list of pages by clicking **Back to CMS** on the top of the page. -*** -**What's next?** -To know more about the attributes you see, select and enter while managing CMS pages, see the [CMS Pages: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/references/cms-pages-reference-information.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-page-versions.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-page-versions.md deleted file mode 100644 index 9fccd88b801..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-page-versions.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Managing CMS Page Versions -description: The guide provides instructions on how to view CMS page versions, roll back to a specific version or view SEO information in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-pages-versioning -originalArticleId: 898c8975-afad-4205-bb75-d74b53a96443 -redirect_from: - - /v1/docs/cms-pages-versioning - - /v1/docs/en/cms-pages-versioning - - /docs/scos/user/back-office-user-guides/201811.0/content/pages/ managing-cms-page-versions.html -related: - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: Creating CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/creating-cms-pages.html - - title: Editing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/editing-cms-pages.html - - title: Managing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/managing-cms-pages.html - - title: Assigning Blocks to Category and Product Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/assigning-blocks-to-category-and-product-pages.html - - title: CMS Pages- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/pages/references/cms-pages-reference-information.html ---- - -This article describes how you can manage versions of CMS pages: view general information, SEO details, compare CMS versions, and roll back to the selected version or discard changes to a page. -*** -To start working with the CMS page versions, navigate to the **Content Management** > **Pages** section. -*** -## Viewing CMS Pages History -To view version history for a CMS page: - -1. On the **Overview of CMS pages** page in the _Actions_ column, click **View** and select **Version History** from the drop-down list next to the page whose version history you want to view. -2. On the **Version History: [Page Name]** page, the following information is available: - * Information on the current version and when it was published - * Name of the page and the template it is using - * SEO information: title, keywords, and description - * Placeholders that displays a page title and contain content - * Option to roll back all the changes to the specific CMS version - * Option to compare the current version with the selected one - -On the **Version History: [Page Name]** page, you can return to the list of CMS pages by clicking **Back to CMS** on the top of the page. -*** -### Rolling back to a CMS Page Version -To roll back to the specific version: -1. On the **Version History: [Page Name]** page from the drop-down list, select the version that you want to return to. -![Rolling back to the selected version](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Content+Management+System/Pages/CMS+Pages+Versioning/page-versioning.png) - -2. Click **Rollback to Selected Version** in the top right corner of the page. This will copy all data from the older version and publish the previous version in the online store. - -*** -### Comparing CMS Versions -To compare CMS versions to see what changes you have made to the current version: -1. On the **Version History: [Page Name]** page from the drop-down list, select the version you want to compare with the current one. -2. Click **Compare**. The information of the selected version will be displayed next to the information about the current version. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-pages.md deleted file mode 100644 index bea18931575..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/managing-cms-pages.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Managing CMS Pages -description: The guide provides instructions on how to preview, publish, update and activate or deactivate CMS pages in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-cms-pages -originalArticleId: 961f91e7-410a-4e8c-a2e2-88bd007f4490 -redirect_from: - - /v1/docs/managing-cms-pages - - /v1/docs/en/managing-cms-pages -related: - - title: Managing CMS Page Versions - link: docs/scos/user/back-office-user-guides/page.version/content/pages/ managing-cms-page-versions.html - - title: CMS Page - link: docs/scos/user/features/page.version/cms-feature-overview/cms-pages-overview.html - - title: CMS Pages- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/content/pages/references/cms-pages-reference-information.html - - title: Editing CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/editing-cms-pages.html - - title: Creating CMS Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/creating-cms-pages.html - - title: Assigning Blocks to Category and Product Pages - link: docs/scos/user/back-office-user-guides/page.version/content/pages/assigning-blocks-to-category-and-product-pages.html ---- - -This article describes the managing actions you can perform on CMS pages: -publish, view, preview, edit, and activate or deactivate CMS pages. - -*** -To start managing CMS pages, navigate to the **Content Management** > **Pages** section. -*** - -## Previewing CMS Pages - -If you would like to see how your page will look like before you publish it, you can preview it in your browser. - -{% info_block warningBox "Note" %} - -To be able to preview a draft of your page, you need to link your Zed account to an Yves account. - -{% endinfo_block %} - -**To link a Zed customer to an Yves customer:** - -1. Navigate to **Users Control** > **User**. -2. On the **Users list** page, click **Assign Customers to User: Zed account e-mail** in the _Actions_ column. This will take you to the **Assign Customers** page. -3. Select a user you would like to assign to your Zed account. - {% info_block warningBox "Note" %} - - Keep in mind that a customer **cannot** be assigned to multiple users at a time. - - {% endinfo_block %} - -4. To keep the changes, click **Save**. - -After you linked your Yves customer to your Zed user, make sure that you are logged in to Zed with your Zed account and logged in to Yves with the assigned customer account. - -Now, we can proceed with the steps to preview a draft of your page. - -You can use the Preview mode from either the **Overview of CMS Pages** page or the **Edit Placeholders** editor. - -**To preview a draft of your CMS page from the Overview of CMS Pages page:** - -1. On the **Overview of CMS Pages** page, click **View** and select **Preview** from the drop-down list next to the page whose draft you want to view. -2. The page in the Preview mode will be opened in a new tab of your browser. - -**To preview a draft of your CMS page from the Edit Placeholders editor**, see the [Editing Placeholders](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/editing-cms-pages.html#selecting-the-placeholders-option) section. - -*** - -## Publishing a Page - -Until now we have created a draft of the page and added some content. Thus, to keep changes and display them on the shop website, you need to publish them. - -You can publish your page either from the **Overview of CMS Pages** page or from the **Edit Placeholders** editor. - -**To publish a page from the Overview of CMS Pages page:** - -1. On the **Overview of CMS Pages** page, click **Publish** in the _Actions_ column. -2. The page will be successfully published. - -**To publish a page from the Edit Placeholders editor**, see the [Edit Placeholders](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/editing-cms-pages.html#selecting-the-placeholders-option) section. -*** - -## Viewing a Page - -To view a page: -1. On the **Overview of CMS Pages** page, click **View** in the _Actions_ column. -2. From the drop-down list, you can select the following options: - * **Preview**: This option allows you to see the way the page will look like in the online store before publishing it. - * **In Zed**: This option opens the View CMS Page editor that includes general information about a published page, as well as its URL and metadata. - * **In Shop**: This option opens a live page in the online store. - * **Version History**: This option opens the Version History: Page name page that displays all available versions of the page and general information of the version you are currently using. - 3. To view the page details in Zed, click **View > In Zed**. - 4. On the **View CMS Page: [Page name]** page that opens, the following information is available: - * General information - * URLs - * SEO information - * Placeholders - -{% info_block infoBox %} - -See [CMS Page: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/references/cms-pages-reference-information.html) to learn more about attributes on this page. - -{% endinfo_block %} - -*** -**Tips and tricks** - -On the **View CMS Page: [Page name]** page, you can do the following: - -* Navigate to the page where you can view all available versions for the page, general information of the version you are currently using, and roll back to the previous page version if needed, as well as compare version. To do this, click **Version History** on the top of the page. - -* Make changes to page layout or its SEO information by clicking **Edit page** on the top of the page. - -* Add some content to a page by clicking **Edit placeholders**. - -* Remove a published page (make it invisible) from the store website by clicking **Deactivate**. - -* Make the page visible on the website clicking **Activate**. - -* Return to the _Overview of CMS pages_ page by clicking **Back to CMS**. - -*** -## Activating and Deactivating Pages - -You can activate (make visible in the shop application) or deactivate (make invisible in the shop application) CMS pages. - -To activate a page, click **Activate** in the _Actions_ column on the _Overview of CMS Pages_ page. - -To deactivate a page, click **Deactivate** in the _Actions_ column on the _Overview of CMS Pages_ page. This will change the status to Inactive and remove the page from the store website. -*** - -**What's next?** - -To know more about the attributes you see, select and enter while managing CMS pages, see the [CMS Pages: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/references/cms-pages-reference-information.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/pages/references/reference-information-cms-pages.md b/docs/scos/user/back-office-user-guides/201811.0/content/pages/references/reference-information-cms-pages.md deleted file mode 100644 index d2139b3ac5f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/pages/references/reference-information-cms-pages.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Reference information - CMS Pages -description: The guide provides reference information you see when creating, viewing and editing CMS pages in the Back Office. -last_updated: Oct 28, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-pages-reference-information -originalArticleId: dbb8ae5c-db7c-4063-ae13-c1bb53f0aed9 -redirect_from: - - /v1/docs/cms-pages-reference-information - - /v1/docs/en/cms-pages-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/content/pages/references/cms-pages-reference-information.html ---- - -This topic contains the reference information you need to know when working with CMS Pages in the **Content Management > Blocks** section. -*** -## Overview of CMS Pages -On the **Overview of CMS Pages** page, you see the following: - -| Attribute | Description | -| --- | --- | -| **#** | A sequence number. | -| **Name** | The name of a CMS page. | -| **Url** | An address of a page displayed in the address bar of the browser. | -| **Template** | Defines a structure of the CMS page. | -| **Status** | A page status that can be active (visible on the store website), inactive (invisible on the store website), and unpublished. | -| **Stores** | Locale(s) for which the page will visible on the store website. | -| **Actions** |A set of actions that can be performed on a CMS page. | - -On this page, you can also: - -* Create a new CMS page. -* Sort pages a sequence number (#), Name, and Template. -* Filter content items by a sequence number, Name, and Template. - -*** -## Edit CMS Page -The following table describes the attributes you enter when creating or editing a CMS page. - -|Attribute | Description| -| --- | --- | -| **Store relation** | A store locale for which the page will be available. | -| **Is searchable** | An option that can be selected if you want your page to be searched for on the web. | -| **Template** | A template that defines the page layout. | -| **Valid from** and **Valid to** | Dates during which a page will be visible on the shop website. | -| **Name** | A name of the page. | -| **Url** | An address of the page on the web. | -| **SEO** | Meta information that includes a meta title, meta keywords, and a meta description. | - -*** -## View CMS Page page -The following table describes the attributes you see when viewing a CMS block. - -| Attribute | Description | -| --- | --- | -| **General information** | The section provides details regarding the locales for which the block is available, its current status, block template and time period during which it is visible on the website. | -| **Urls** | Addresses of the page on the web. | -| **SEO** | Meta information that includes a meta title, meta keywords, and a meta description per locale. | -| **Placeholders** | The section shows the translation of the block title and content per locale. | diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/creating-cms-redirects.md b/docs/scos/user/back-office-user-guides/201811.0/content/redirects/creating-cms-redirects.md deleted file mode 100644 index f9d8c665371..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/creating-cms-redirects.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Creating CMS Redirects -description: The guide provides instructions for shop owners on how to create CMS redirects in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-cms-redirects -originalArticleId: b347bf0d-53e4-4afb-a652-02983300d730 -redirect_from: - - /v1/docs/creating-cms-redirects - - /v1/docs/en/creating-cms-redirects -related: - - title: CMS Redirects- References - link: docs/scos/user/back-office-user-guides/page.version/content/redirects/references/cms-redirects-references.html ---- - -This topic provides a list of steps to create a redirect in the Back Office. -*** -To start working with the CMS redirects, navigate to the **Content Management > Redirects** section. -*** - -**To create a CMS redirect:** -1. On the **CMS Redirect** page, click **Add CMS Redirect** in the top right corner of the page. -2. On the **Add a CMS Redirect** page that opens, enter the following details: -* **Url**: Specify a URL from which you want to create a redirect link. -* **To URL**: Add a URL that you want your existing URL to be redirected to. -* **Redirect status code**: Select a status code from the drop-down list. -3. To keep the changes, click **Save**. This will take you to the list of CMS Redirects page where you can find a new redirect URL. - -On the **Add a CMS Redirect** page, you can return to the list of redirects by clicking **Back to CMS** in the top right corner of the page. -*** -#### Next steps -The redirect URL has been created. However, you can either edit it or delete. - -* To learn how to edit and/or delete a redirect, see [Managing CMS Redirects](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/managing-cms-redirects.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/managing-cms-redirects.md b/docs/scos/user/back-office-user-guides/201811.0/content/redirects/managing-cms-redirects.md deleted file mode 100644 index 27f8fd090ca..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/managing-cms-redirects.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing CMS Redirects -description: The guide provides procedures on how to update or delete URL redirects in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/editing-cms-redirects -originalArticleId: 1efd68ee-90cb-426a-a461-690eeb2cd01d -redirect_from: - - /v1/docs/editing-cms-redirects - - /v1/docs/en/editing-cms-redirects -related: - - title: Creating CMS Redirects - link: docs/scos/user/back-office-user-guides/page.version/content/redirects/creating-cms-redirects.html ---- - -This topic provides a list of steps to edit or delete a redirect in the Back Office. -*** - -To start managing CMS redirects, navigate to the **Content Management > Redirects** section. -*** - -## Editing a CMS Redirect - -**To edit a CMS redirect:** -1. On the **CMS Redirect** page in the _Actions_ column, click **Edit** next to the URL you want to update. -2. On the **Edit a CMS redirect** page, you can update the following information: - * Url - * To URL - * Redirect status code -3. To keep the changes, click **Save**. - -{% info_block infoBox %} - -See the [CMS Redirects: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/references/cms-redirects-references.html) article to learn more information about the attributes you need to enter. - -{% endinfo_block %} - -{% info_block warningBox %} - -Keep in mind that if you modify the **existing** URL from which a redirect is configured, a new URL will be created and added to the list of CMS redirects. - -{% endinfo_block %} - -*** -**Tips and tricks** - -On the **Edit a CMS redirect** page, you can do the following: - -* Create a new CMS redirect by clicking **+Add CMS Redirect** in the top right corner of the page. -* Return to the list of redirects by clicking **Back to CMS** in the top right corner of the page. -*** - -## Deleting a CMS Redirect - -**To delete a CMS redirect:** -1. Navigate to the **Content Management > Redirects**. -2. On the **CMS Redirect** page in the _Actions_ column, click **Delete** next to the URL you want to delete. -3. This will successfully delete the redirect and remove it from the list of redirects. -*** - -**What's next?** - -To learn more about attributes you enter on the page, see the [CMS Redirects: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/references/cms-redirects-references.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/redirects.md b/docs/scos/user/back-office-user-guides/201811.0/content/redirects/redirects.md deleted file mode 100644 index 4e95835691f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/redirects.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Redirects -description: The Redirects section is designed to set up URL redirects to a different URL, as well as add a status code in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/redirects -originalArticleId: b18c4188-8954-483b-9898-9066eaf02bc5 -redirect_from: - - /v1/docs/redirects - - /v1/docs/en/redirects ---- - -The main focus of this section is to set up a URL redirect from one site to another. - -The section is designed to configure URL redirects and forward customers to a different URL. Here you can specify the URL you need to redirect from, a new URL, and the status code which plays a major role for search engines. -*** -**What's next?** -To know more about how to create a content item, see [Creating a CMS Redirect](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/creating-cms-redirects.html). - -To learn how to update and delete CMS redirects, see [Managing CMS Redirects](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/managing-cms-redirects.html). - -To learn more about attributes you use to create and edit redirects, see [CMS Redirects: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/content/redirects/references/cms-redirects-references.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/references/reference-information-cms-redirects.md b/docs/scos/user/back-office-user-guides/201811.0/content/redirects/references/reference-information-cms-redirects.md deleted file mode 100644 index 7baedebc567..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/content/redirects/references/reference-information-cms-redirects.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Reference information - CMS Redirects -description: The guide provides reference information you see when creating and updating URL redirects in the Back Office. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/cms-redirects-references -originalArticleId: 4d16d533-a6b6-4f14-b4e7-3fdc48ce4397 -redirect_from: - - /v1/docs/cms-redirects-references - - /v1/docs/en/cms-redirects-references - - /docs/scos/user/back-office-user-guides/201811.0/content/redirects/references/cms-redirects-references.html ---- - -This topic contains the reference information you need to know when working with redirects in the **Content Management > Redirects** section. -*** - -## CMS Redirects, Create and Edit Page -On the **CMS Redirect** page, you see the following: - -| Attribute | Description | -| --- | --- | -| **ID** | A redirect identifier. | -|**From Url** | A URL from which a new URL destination is configured. | -| **To Url** | A new URL destination. | -| **Status** | A redirect status code. | -| **Actions** | A set of actions that can be performed on a redirect. | - -On the **CMS Redirects** page, you can also: - -* Switch to the page where you can create a new redirect. -* Sort content items by **ID** and **From Url**. -* Filter content items by **ID**, **From Url**, **To Url** and **Status** diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/company-account.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/company-account.md deleted file mode 100644 index f9b4f53d807..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/company-account.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Company Account -description: The section can be used to create a company record, set up company units and company unit addresses, create company user roles, etc in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/company-account-guide -originalArticleId: f0cf1f0f-e3c7-4074-8fbd-4ca8807aa889 -redirect_from: - - /v1/docs/company-account-guide - - /v1/docs/en/company-account-guide -related: - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html ---- - -The Company Account section is designed to manage the company structure and is mostly used by Sales people in cooperation with Spryker Admins that provides the details of the signed contracts. - -**Standardized flow of actions for a Sales Representative** -![Company Account - Sales Representative](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/company-account-section.png) - -{% info_block infoBox %} -This is how the Sales people interact with Spryker Admins to set up the company account. -{% endinfo_block %} - -The company accounts can be set up either in the Storefront by the company representatives or in the Back Office. The data is synchronized and the same structure is displayed in both places. - -| Online Store | Back Office | -| --- | --- | -| ![Online store](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/online-store-company-account.png) | ![Back Office](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/back-office-company-account.png) | - -The Company Account section consists of the sections that are logically connected to each other. So the setup flow looks the following: -* **Companies** - create a company record -* **Company Units** - set up company units by assigning them to the company -* **Company Unit Addresses** - set up the company unit addresses and assign them to the company units -* **Company Roles** - create company user roles to use them when creating users -* **Company Users** - create company users and assign them to appropriate business units - -*** -**What's next?** -Let's say that you have received contract details according to which you need to set up the company infrastructure. - -{% info_block infoBox %} -Some setup that you do now (creating a company record -{% endinfo_block %} is going to be used when creating Merchant relations.) - -So you need to know how the company infrastructure is being set up. -See the following articles and follow the procedures described there to set up a company account: -* [Managing Companies](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-companies.html) -* [Managing Company Units](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-units.html) -* [Managing Company Unit Addresses](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-unit-addresses.html) -* [Managing Company Roles](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-roles.html) -* [Managing Company Users](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-users.html) - -To know more about the attributes that you see, enter, and select while managing company accounts, see [Company Account: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/references/company-account-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-companies.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-companies.md deleted file mode 100644 index 742a6d82de9..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-companies.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Managing Companies -description: Use the procedures to create and edit companies, approve and activate/deactivate a company, and/or deny a company in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-companies -originalArticleId: fbbe5576-78f3-457e-8bde-83378a0d1174 -redirect_from: - - /v1/docs/managing-companies - - /v1/docs/en/managing-companies -related: - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html - - title: Managing Company Users - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-users.html - - title: Managing Company Unit Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-unit-addresses.html - - title: Managing Company Units - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-units.html - - title: Managing Company Roles - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-roles.html - - title: Company Account- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/references/company-account-reference-information.html ---- - -This topic describes how you create and manage company records, which is the initial step in setting up the company infrastructure. -*** -To start managing a company record, navigate to the **Company Account > Companies** section. -*** - -## Creating a Company - -To create a new company record, do the following: -1. On the **Overview of Companies** page, click **Create Company** in the top right corner. -2. On the **Create Company** page, enter the name of the company you would like to create. -3. Click **Save**. - The new created company will appear in the _List of the Companies_ table on the **Companies** page. - -{% info_block errorBox "Important" %} - -Once the company is created, one business unit for it is created by default. This is considered to be headquarters and can be managed in the same ways as the other business units. See [Managing Company Units](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-units.html) for more details. - -{% endinfo_block %} - -*** - -The companies can be managed by triggering certain actions in the _Actions_ column in the _List of Companies_ table on the **Companies** page. -Specifically, company roles can be **Edited**, **De(Activated)**, **Approved**, and **Denied**. -*** - -## Managing a Company - -Right after the Company has been created whether in the shop application or in the Back Office, it appears with **Pending** status in the **List of Companies** table. To become active and available to be used, it needs to be approved and then activated. -![Managing a company](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Managing+Companies/managing-company.png) - -### Approving and Activating a Company - -To approve the company and activate the company: -1. Click **Approve** in the _Actions_ column. - As a result, the status of the company is changed to **Approved**. -2. Click **Activate** in the _Actions_ column. As a result, the activity state of the company will change from **Inactive** to **Active**. - -![Approving a company](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Managing+Companies/activating-company.png) -*** - -### Denying a Company - -In case you cannot approve the registration, you can deny it. -To disapprove the company, click **Deny**. -![Denying a company](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Managing+Companies/denying-company.png) - -You can approve and activate the record in a later event. The record itself will continue existing in the system. -*** - -### Deactivating a Company - -**If you want to deactivate the company** so it will not appear in the online store, click **Deactivate**. -*** - -### Editing a Company - -If you want to change the name of the existing company, click **Edit** in the _Actions_ column. -*** - -**What's next?** - -The company record is added and now you can proceed with creating a company unit. See [Managing Company Units](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-units.html) for more details. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-roles.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-roles.md deleted file mode 100644 index 219e7bbf847..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-roles.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Managing Company Roles -description: Use the procedures to create, update, delete, and assign company roles in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-company-roles -originalArticleId: d36afa06-1a49-4e55-a3b8-8677bfbeaeae -redirect_from: - - /v1/docs/managing-company-roles - - /v1/docs/en/managing-company-roles -related: - - title: Company Account- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/references/company-account-reference-information.html - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html - - title: Managing Company Users - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-users.html - - title: Managing Company Unit Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-unit-addresses.html - - title: Managing Companies - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-companies.html - - title: Managing Company Units - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-units.html ---- - -This topic describes the procedures of creating and managing company roles. This is one of the steps in the Company Account setup. -*** -You can create a role only if a company exists. -*** -To start managing company roles, navigate to the **Company Account > Company Roles** section. -*** - -## Creating a Company Role - -To create a new company role: - -1. On the **Overview of Company Roles** page, click **Add Company User Role** in the top right corner. -2. On the **Create Company Role** page, enter the required information: select **Company** from the drop-down list and fill in the **Name** of the Company Role. -3. Selecting **Is Default** means that the role will be applied to all new company users automatically. -4. In the **Unassigned Permissions** section, select as many permissions as you need by selecting the checkboxes on the left of each value. -5. Once done, click **Save**. -*** - -## Editing a Company Role - -To edit a company role: -1. On the **Overview of Company Roles** page in the _Actions_ column, click **Edit** if you want to change the details for a company role. -2. On the **Edit Company Role** page, update the needed attributes. -*** - -## Deleting a Company Role - -To delete a company role: -1. On the **Overview of Company Roles** page in the _Actions_ column, click **Delete**. -2. On the confirmation page, click **Delete** company role to confirm the action. - {% info_block infoBox "Info" %} - - If you delete a default role, the following message is displayed: - _You cannot delete a default role; please set another default role before the delete action._ - - {% endinfo_block %} - -*** - -**What's next?** - -Once the role is created, you can proceed with creating a company user and assign the created role to it. -See [Managing Company Users](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-users.html) to know how the company users are created and managed. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-unit-addresses.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-unit-addresses.md deleted file mode 100644 index 5c3ce3a5e87..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-unit-addresses.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Managing Company Unit Addresses -description: Use the procedures to create and update company unit addresses after company units have been created in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-company-unit-addresses -originalArticleId: 29c3ef90-87eb-4d86-933a-c48e235d54c5 -redirect_from: - - /v1/docs/managing-company-unit-addresses - - /v1/docs/en/managing-company-unit-addresses -related: - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html - - title: Managing Company Users - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-users.html - - title: Managing Companies - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-companies.html - - title: Managing Company Units - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-units.html - - title: Managing Company Roles - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-roles.html ---- - -This page describes the procedure of creating and managing company unit addresses. The address is created to be assigned to a company business unit. -*** -To start managing company unit addresses, navigate to the **Company Account > Company Unit Addresses** section. -*** -## Creating a Company Unit Address - -To create a company business unit: -1. On the **Overview of Business Unit Addresses** page, click **Create Company Unit Address** in the top right corner. -2. On the **Create Company Unit Address** page: - * Select _company_ and _country_ from the respective drop-down lists (the company values are taken from the **Company Account > Companies** section). - * Enter the City, Zip Code, and Street values to complete the address. Number, Addition to address, Comment, and Labels fields are optional. See [Company Account: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/references/company-account-reference-information.html) to know more about the attributes you select and enter. -3. Once done, click **Save**. -*** -## Editing Company Unit Address -To edit a company unit address: -1. On the **Overview of Business Unit Addresses** page in the _Actions_ column, click **Edit Company Unit Address** if you want to change address details such as the Company the address belongs to, Country, City, Zip Code, Street, Number of the building, Additional Information for the address, Comments, and Address labels. -2. Once done, click **Save**. -*** -Once the address is created, you can assign it to the business unit. -**To assign an address:** -1. Navigate to the **Company Accounts > Company Units** section. -2. In the **List of company business units** page in the _Actions_ column, click **Edit** for a business unit you want to update with an address. -3. On the **Edit Company Business Unit** page, click in the **Addresses** field. You can select from one to many values. The list of values available for selection is limited to those addresses assigned to the company the same as the business unit is assigned to. -4. Once done, click **Save**. - -*** - -**What's next?** - -To know more about the attributes you select and enter on the **Create** and **Edit Company Unit Address** pages, see [Company Account: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/references/company-account-reference-information.html). - -The next step in the company account setup is to created company roles and users. See the [Managing Company Roles](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-roles.html) and [Managing Company Users](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-users.html) articles. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-units.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-units.md deleted file mode 100644 index 132723cc935..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-units.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Managing Company Units -description: Use the procedures to create, edit, and delete company units in the Back Office after a company has been created. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-company-units -originalArticleId: 7033252f-7c5a-435f-9067-f19650229fcb -redirect_from: - - /v1/docs/managing-company-units - - /v1/docs/en/managing-company-units -related: - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html - - title: Managing Company Users - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-users.html - - title: Managing Company Unit Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-unit-addresses.html - - title: Managing Companies - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-companies.html - - title: Managing Company Roles - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-roles.html - - title: Company Account- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/references/company-account-reference-information.html ---- - -This article describes the procedures you can perform in order to create and manage the company units. -*** -To start managing company units, navigate to the **Company Account > Company Units** section. -*** -## Creating Company Business Units - -To create a new company business unit: - -1. In the top right corner of the **Overview of Company Business Units** page, click **Create Company Business Unit**. -2. On the **Create Company Business Unit** page, populate all required information: select company from the drop-down list and enter the name of the business unit. - Parent, IBAN, and BIC fields are optional and can be populated later. -3. Click **Save**. - The new created business unit will appear in the _Company Business Units_ table on the **Company Units** page. - -The fields that you enter and select are described in [Company Account: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/references/company-account-reference-information.html). -*** - -The business units can be managed by triggering certain actions in the _Actions_ column in the **Company Business Units** table. Specifically, business units can be **Edited** and **Deleted**. -*** - -## Editing a Business Unit - -To edit a business unit: -1. Click **Edit** in the _Actions_ column if you want to change the details for a business unit such as Parent BU, Name, IBAN, and BIC. - {% info_block infoBox "Info" %} - - Once the company business unit address is created, you can attach it to a business unit on the **Edit Company Business Unit** page. See [Managing Company Unit Addresses](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-unit-addresses.html) for more details. - - {% endinfo_block %} - -2. Once done, click **Save**. - -## Deleting a Business Unit - -If you want to delete an existing business unit, click **Delete** in the _Actions_ column. -*** - -**What's next?** - -You need to create a company unit address so that you can attach it to your business unit. See [Managing Company Unit Addresses](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-unit-addresses.html) for more details. - -See [Company Account: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/references/company-account-reference-information.html) to know about the attributes you see, select and enter while working with company units. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-users.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-users.md deleted file mode 100644 index 27673507894..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/managing-company-users.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Managing Company Users -description: Use the procedures to create, edit, enable/disable, delete, and attach company users to business units in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-company-users -originalArticleId: ae800edd-4a29-4977-aeec-2ccdd6469d01 -redirect_from: - - /v1/docs/managing-company-users - - /v1/docs/en/managing-company-users -related: - - title: Company Account- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/references/company-account-reference-information.html - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html - - title: Managing Company Unit Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-unit-addresses.html - - title: Managing Companies - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-companies.html - - title: Managing Company Units - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-units.html - - title: Managing Company Roles - link: docs/scos/user/back-office-user-guides/page.version/customer/company-account/managing-company-roles.html ---- - -This topic describes the procedures for creating and managing company users. This is the final step in the company account setup. -*** - -The company user can be created only if the company role, company, and business unit exist. -*** - -To start managing company users, navigate to the **Company Account > Company Users** section. -*** - -## Creating a Company Users - -To add a new company user: - -1. On the **Overview of Company Users** page, click **Add User** in the top right corner. -2. On the **Create Company User** page: - 1. Enter customer's email, salutation, first name, last name, and gender in the respective fields. - 2. If you want the email with change password details be sent to the customer, select the **Send password token through email** checkbox. - 3. Enter the date of birth and phone values. - 4. Select company and business units from the respective drop-down lists. - 5. Check the checkbox for Roles you want to assign to the user. The values available for selection are limited by those assigned to a company. See [Managing Company Roles](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-company-roles.html) to learn how the company roles are created. -3. Once done, click **Save**. -*** - -## Attaching a Company User to a Business Unit - -This is a very important step in a company account setup. -To attach a company user to a new company business unit, **within the same company**: -1. On the **Overview of Company Users** page in the _Actions_ column, click **Attach to BU** for a user for which you want to change the assigned business unit. -2. On the **Attach to Business Unit** page: - 1. Select a business unit you would like the company user to be attached to from the drop-down list. - 2. Assign the role under the **Assigned Roles** section. -3. Click **Save**. -*** - -## Editing a Company User - -To edit a company user: -1. On the **Overview of Company Users** page in the _Actions_ column, click **Edit** for the user you want to update. -2. Update the needed values and click **Save**. - {% info_block infoBox "Info" %} - - All values are available for modifications except for the email. The **Email** field is greyed out and is not available for modifications. - - {% endinfo_block %} - -*** - -## Enabling/Disabling a Company User - -If the company User is currently deactivated, there will be the **Enable** option in the _Actions_ column. Click it to activate the user. - -And vice versa, if the user is enabled, they can be disabled here. Click **Disable** to deactivate the user. -![Enabling a company user](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Managing+Company+Users/enabling-company-user.png) - -## Deleting a Company User - -To delete a company user: -1. On the **Overview of Company Users** page, click **Delete** in the _Actions_ column. -2. On the **Company user deletion confirmation** page, confirm the deletion. - {% info_block warningBox "Note" %} - - If confirmed, the user will be deleted from everywhere and will no longer be able to log in to the online store. - - {% endinfo_block %} diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/references/reference-information-company-account.md b/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/references/reference-information-company-account.md deleted file mode 100644 index fea91ee7053..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/company-account/references/reference-information-company-account.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Company Account- Reference Information -description: The guide provides additional information on the values you use when working with company roles, company unit addresses, company units, and company users. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/company-account-reference-information -originalArticleId: 61a46698-538e-428e-ab32-ba174b489af4 -redirect_from: - - /v1/docs/company-account-reference-information - - /v1/docs/en/company-account-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/customer/company-account/references/company-account-reference-information.html ---- - -This article describes the information that you may need to know when working with the company account setup. -*** - -The following table describes the information that you see on the overview pages of the **Company Account** section. - -| Page Name | Information | -| --- | --- | -| **Overview of Company Users** | You see the user ID, the company name to which the user is assigned the user name, roles assigned to the user, company business unit to which the user is assigned, status of the user and the actions that you can perform (**Edit**, **Disable**, **Delete**, **Attach to BU**) | -| **Overview of Company Business Units**|You see the autogenerated ID, your company name, business unit parent and the business unit name, address of headquarters business unit, IBAN and BIC, the list of actions that you can do (**Edit**, **Delete**). | -| **Overview of Companies** | You see the company ID and name, either Active, or Inactive label, the company status (either **Approved** or **Declined**), and the actions you can perform (**Edit**, **Activate**/**Deactivate**, **Approve**/**Deny**). | -| **Overview of Company Roles** | You see the role ID, the name of the company to which the role is assigned, role name, and the actions that you can perform (**Edit**, **Delete**). | -| **Overview of Business Unit Addresses** | You see the company unit address ID, country, city, zip code, company name, address, number, addition to address, any labels if those are assigned and the actions that you can perform (**Edit Company Unit Address**). | - -*** - -## Create/Edit Company User - -The following table describes the attributes you see, select, or enter while creating or editing a company user. - -| Attribute |Description | -| --- | --- | -| **Email** | The email of the customer that is used for logging in to the online store. It is not available for modifications on the **Edit** page. | -| **Salutation** | Formal salutation for the customer (_Mr_, _Mrs_, _Ms_, _Dr_). | -| **First Name** | Customer first name. | -| **Last Name** | Customer last name.| -| **Gender** | Customer gender. | -| **Date of birth** | Customer date of birth. | -|**Company** | A drop-down list with the companies from the Company Account > Companies section. This selection defines the list of available business unit. | -| **Business Unit** | Business unit to which the user is going to be assigned. The list of the available values depends on the selected company. | -| **Assigned Roles** | The roles assigned to the customer. | -|**Unassigned Roles**|The roles that you can select to be assigned to the customer.| - -*** - -## Create/Edit Company Business Unit - -The following table describes the attributes you see, select, or enter while creating or editing a company business unit. - -| Attribute |Description | -| --- | --- | -| **Company** | A drop-down list with the companies. On the **Create** page, all companies form the **Companies** section are available for selection. On the **Edit** page, the filed is a display only. The company selected during the business unit creation cannot be changed. | -| **Parent** | The parent business unit. The values available for selection depend on the selected companies. | -| **Name** | The name of the business unit you create.| -| **IBAN** | The International Bank Account Number. | -|**BIC** | The Bank Identifier Code. | -| **Addresses** |This field is available on the Edit page. This is a multi-select list that includes the values from the Company Unit Addresses section but only those assigned to a company. Meaning the values available for selection are defined by the selected company.| - -*** - -## Create/Edit Company Unit Address - -The following table describes the attributes you see, select, or enter while creating or editing a company unit address. - -| Attribute | Description | -| --- | --- | -| **Company** | A drop-down list with the values from the **Company Account > Company** section. | -| **Country** | A drop-down list with the countries available for selection. | -| **City** | A text field where you enter the city name. | -| **Zip Code** | A text field where you enter zip code value. | -| **Street** | A text field where you enter the street name. | -| **Number** | A text field where you enter the street number. | -|**Addition to address**|A text field where you enter any additions to the address that you create.| -|**Comment**|A text field where you enter any comment regarding the customer address.| -|**Labels**| A multi-select field with the labels for selection.| - -*** - -**Examples** - -**Company User Profile** - -| Back Office: Company User Record | Online Store: Company User Profile | -| --- | --- | -| ![Back Office: Company User Profile](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-user-profile-backoffice.png) | ![Online Store: Company User Profile](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-user-profile-online-store.png) | - -**Company Roles** - -| Back Office: Company Roles | Online Store: Company Roles | -| --- | --- | -| ![Back Office: Company Role](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-role-backoffice.png) | ![Online Store: Company Role](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-role-online-store.png) | - -**Company Users** - -| Back Office: Company Users |Online Store: Company Users | -| --- | --- | -| ![Back Office: Company User](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-user-backoffice.png) | ![Online Store: Company User](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Company+Account/Company+Account:+Reference+Information/company-user-online-store.png) | diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-access.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-access.md deleted file mode 100644 index 72e43f618dd..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-access.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Managing Customer Access -description: The guide provides a procedure on how a shop owner can define restrictions for actions for non-logged in users. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-customer-access -originalArticleId: e8a62413-873d-4e81-91ba-b21a62068a72 -redirect_from: - - /v1/docs/managing-customer-access - - /v1/docs/en/managing-customer-access - - /docs/scos/user/back-office-user-guides/201811.0/customer/customers-customer-access-customer-groups/managing-customer-access.html -related: - - title: Managing Customer Groups - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-groups.html - - title: Managing Customer Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-addresses.html - - title: Managing Customers - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customers.html - - title: Customer Accounts - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-account-management-feature-overview.html ---- - -The Customer Access page was designed to define what information can be viewed for the not-logged-into online store customers. -*** -To start defining specific restrictions for not logged in customers, navigate to the **Customers > Customer Access** section. -*** -To define the restrictions: -1. In the **Customer Access** section, select one of the following content types under the **Hide the following information from not logged in users**: - * **price** - if selected, no prices will be shown to not logged in customers - * **add-to-cart** - if selected, there will be no **Add to Cart** option displayed - * **wishlist** - if selected, no **Wishlist** option is available - * **Shopping List** - if selected, no **Add to Shopping List** option is available - * **Can place an order** - if selected, the not logged in user is not able to place in order. - {% info_block errorBox "**B2B Only**" %} -This option is selected by default and cannot be deselected. -{% endinfo_block %} -2. Click **Save** to save the changes. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-addresses.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-addresses.md deleted file mode 100644 index 281edee7cae..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-addresses.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Managing Customer Addresses -description: The guide provides procedures on how to create, update, and view customer addresses in the Back Office -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-customer-addresses -originalArticleId: e4cd5664-d210-42d5-b46f-36db813cd167 -redirect_from: - - /v1/docs/managing-customer-addresses - - /v1/docs/en/managing-customer-addresses - - /docs/scos/user/back-office-user-guides/201811.0/customer/customers-customer-access-customer-groups/managing-customer-addresses.html -related: - - title: Managing Customer Groups - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-groups.html - - title: Managing Customers - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customers.html - - title: Customer Accounts - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-account-management-feature-overview.html - - title: Managing Customer Access - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-access.html ---- - -This topic describes the procedures of managing customer addresses. You will also find the procedure of reviewing the orders placed by your customers. -*** -To start working with customer details, navigate to the **Customers > Customers** section. -*** -## Editing Customer Address -To edit a customer's address: -1. On the **View Customer** page, scroll down to the **Addresses** section and click **Edit** next to the address to be edited. -2. On the **Edit address** page, make your changes and click **Save**. - -## Creating Customer Addresses -To create a new address: -1. On the **View Customer** page, click **Add new Address** in the top right corner of the page. -2. Enter the new address for the customer. -3. Once done, click **Save**. - -By default, the first address added to a customer account is considered both for billing and for shipping. - -If you need to have a different billing address or shipping address, do the following: -1. Create an address as described above. -2. Go to the **Edit Customer** page either from the **Customers** page or from the **View Customer** page. -3. Choose one address to be the billing address and one address to be the shipping address. -4. Click **Save**. - -## Viewing Customer Orders -To view orders made by a specific customer: -1. Navigate to the **View Customer** page and scroll down to the **Orders** section. -2. To find a specific order, start typing either its Order Reference value or any other value that the table with the list of orders contains, in the **Search** field. As you type, the list of matching orders will be created in the table. -3. To view order details, click **View** - this will take you to the **View Order** page from the **Sales > Orders** section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-groups.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-groups.md deleted file mode 100644 index 5e389752b7f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customer-groups.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Managing Customer Groups -description: The guide provides instructions on how to create, edit, and view customer groups in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-customer-groups -originalArticleId: e0ec7125-b6c9-40e4-ad8e-128f6e3d6cd9 -redirect_from: - - /v1/docs/managing-customer-groups - - /v1/docs/en/managing-customer-groups - - /docs/scos/user/back-office-user-guides/201811.0/customer/customers-customer-access-customer-groups/managing-customer-groups.html -related: - - title: Managing Customer Access - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-access.html - - title: Managing Customers - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customers.html - - title: Managing Customer Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-addresses.html - - title: Customer Accounts - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-account-management-feature-overview.html ---- - -This article describes how you can create and manage customer groups. -*** -To start working with customer groups, navigate to the **Customers > Customer Groups** section. -*** -Out-of-the-box, there are no connections between customer groups and any other Back Office feature, except for the Discounts. You can set up the discount conditions to be applied to a specific customer group. See [Discount Conditions: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-conditions-reference-information.html) for more information on what the discount conditions are. -*** -## Adding a Customer Group -To add a customer group: - -1. On the **Customer groups** page, click **Add Customer Group** in the top right corner. - On the **Add a Customer Group** page there are two tabs: **General Information** and **Customers**. -2. In the **General Information** tab, enter the name and description for your customer group. -3. Click **Next** to proceed to the **Customers** tab, or just click on it. -4. In the **Customers** tab, select the checkboxes in the _select_ column for the customers you want to assign to this group. - You can select as many customers as needed. -5. Once done, click **Save**. -*** -## Editing a Customer Group -To edit a customer group: -1. On the **Customer groups** page, click **Edit** in the _Actions_ column for the specific group you want to edit. -2. Update the needed attributes. - To unassign a user from the group, scroll down to the **Assigned customers** table and clear the checkbox on the left of the user you want to unassign. **OR** if you want to reassign all customers, click **De-select All**. -3. Click **Save** -*** -## Viewing Customer Groups -To view a customer group, click **View** in the _Actions_ column for a specific customer group you want to view. - -On this page, you can: -* Click **Edit Customer Group** in the top right corner and initiate the editing flow. -* Click **View** in the _Actions_ column for a specific customer assigned to this group. This will take you to the **View Customer** page (the **Customers > Customers** section). diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customers.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customers.md deleted file mode 100644 index df5111c0226..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/managing-customers.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Managing Customers -description: This guide provides instructions on how shop owners can add and manage personal information, customer billing, and shipping addresses in the Back Office. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-customers -originalArticleId: 70806e28-c52d-4e23-b001-2d43ed86169e -redirect_from: - - /v1/docs/managing-customers - - /v1/docs/en/managing-customers - - /docs/scos/user/back-office-user-guides/201811.0/customers/customers-customer-access-customer-groups/managing-customers.html - - /docs/scos/user/back-office-user-guides/201811.0/customer/customers-customer-access-customer-groups/managing-customers.html -related: - - title: Customer Accounts - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-account-management-feature-overview.html - - title: Managing Customer Access - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-access.html - - title: Managing Customer Groups - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-groups.html - - title: Managing Customer Addresses - link: docs/scos/user/back-office-user-guides/page.version/customer/customers-customer-access-customer-groups/managing-customer-addresses.html ---- - -This article describes the procedures for creating and managing customers. -*** -To start managing customers, navigate to the **Customers > Customers** section. -*** -## Creating a Customer - -**To create a new customer:** -1. Click **Add Customer** in the top-right corner of the **Customers** page. -2. On the **Add a customer** page, enter the customer information. The customer information must include first name, last name, and the email address that will be linked to the new account. The email address is important for completing the registration (by accessing the link that will be sent by email) or for later use of the forgot password functionality. -3. Send password token by email by selecting the **Send password token through email** checkbox. After saving the customer data, an email will be sent to the customer containing a link. By accessing the link, the customer will be able to set a password for the account. - {% info_block infoBox "Info" %} - - If you don’t select this option, the customer is still able to set a password for their account, by clicking the reset password link from the online store. - - {% endinfo_block %} - -4. To complete the customer creation, click **Save**. - -To know more about the attributes you see, select, and enter while creating a customer, see the [Customers: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customers-customer-access-customer-groups/references/customers-reference-information.html) article. - -## Editing Customers - -**To edit a customer:** -1. For a specific customer, you need to update, click **Edit** in the _Actions_ column on the **Customers** page. -2. On the **Edit Customer** page you see the same attributes as on the **Add a customer** page, but with the following exceptions: - * The **Email** field is greyed out and is not available for updates. - * You see two additional drop-down lists: **Billing Address** and **Shipping Address**. The values in those fields appear only if the addresses were added in the customer profile in the online store, or from the **Back Office > View** specific customer page. Those are not available for modifications from the **Edit Customer** page. -3. Update the needed values and click **Save**. -*** - -**Tips and tricks** - -From the **Edit customer** page you can: -* Switch to the **View** customer page, where you can manage the addresses by adding a new address or updating the existing one (see the _Viewing Customer Details_ section below) -* Delete the customer record (see the _Deleting a Customer Record_ section below) -*** - -## Viewing Customer Details - -The **View customer details** page is designed to serve more purposes than just seeing the details. - -On this page, you can view the orders placed by the customer, edit the addresses, or add another address, leave descriptive messages in the **Notes** section. - -To know how the customer addresses are managed, see the [Managing Customer Addresses](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customer-customer-access-customer-groups/managing-customer-addresses.html) article. - -### Viewing customer details - -**To view customer details:** -1. Click **View** in the list of customers. -OR -2. Click **View** in the top right corner of the **Edit Customer** page. - -If the customer has addresses, they can be edited in the **Addresses** section of the **View Customer** page. - -### Leaving a note - -**To leave a note:** -1. On the **View Customer** page, scroll down to the **Notes** section. -2. In the **Message** box, type your message and click **Add Note**. - -### Deleting a customer record - -**To delete a customer record:** -1. In the *Actions* column of the **Customers** table, click **View** for the customer record you want to delete. -2. On the **View Customer** page, click **Delete** on top of the page. -3. On the **Customer deletion confirmation** page, click **Delete account**. -OR - -1. In the *Actions* column of the **Customers** table, click **Edit** for the customer record you want to delete. -2. On the **Edit Customer** page, click **Delete** on top of the page. -3. On the **Customer deletion confirmation** page, click **Delete account**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/references/reference-information-customers.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/references/reference-information-customers.md deleted file mode 100644 index be1c0497627..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customer-customer-access-customer-groups/references/reference-information-customers.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Reference information - Customers -description: The guide provides reference information you view when creating and updating customers in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/customers-reference-information -originalArticleId: 6a7bd179-bbf5-4f6e-a466-0eb1196e1b79 -redirect_from: - - /v1/docs/customers-reference-information - - /v1/docs/en/customers-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/customer/references/customers-reference-information.html - - /docs/scos/user/back-office-user-guides/201811.0/customer/customers-customer-access-customer-groups/references/customers-reference-information.html ---- - -This article contains the information you need to know when working with the **Customers** section in Back Office. -*** -## Customers page -On the **Customers** page in the **Customers** > **Customers** section, you see a table with all the registered customers. The following information is included in the table: - -* Date of the customer registration -* Customer email -* Customer last name and first name -* Zip code, city, and country -* The actions that you can perform on a customer record (**View**, **Edit**, and for _B2B only_: **Attach to company**) -*** -## Add Customer/Edit Customer pages - -The following table describes the attributes you enter and select when creating or editing customers. - -|Attribute| Description| -|---|---| -| **Email**|An email address that will be linked to the new account. The email address is important for completing the registration (by accessing the link that will be sent by email) or for later use of the forgot password functionality. On the Edit customer page, this field is greyed out and not available for modifications.| -|**Salutation**|A formal salutation for your customer (e.g. **Mr**, **Mrs**).| -|**First Name**|Customer's first name.| -|**Last Name**|Customer's last name.| -|**Gender**|Customer's gender. The drop-down list with the following values available for selection: **Male** and **Female**.| -|**Date of birth**|Customer's date of birth in format **mm/dd/yyyy**. Once you click on the field, the calendar opens where you can select the date.| -|**Phone**|Customer's phone number.| -|**Company**| Customer's company.| -|**Locale**|The selected from a drop-down list value defines the locale for your customer.| -|**Send password token through email**|If the checkbox is selected, after saving the customer data, an email will be sent to the customer containing a link. By accessing the link, the customer will be able to set a password for the account. If you don’t select this option, the customer is still able to set a password for their account, by clicking the reset password link from the shop interface. | -|Edit page only: **Billing Address**|A drop-down list with the addresses set up for the customer. The selected address defines the billing address for your customer.| -|Edit page only: **Shipping Address**|A drop-down list with the addresses set up for the customer. The selected address defines the shipping address for your customer.| -![Add or edit customers page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Customers/Customers%3A+Reference+Information/customers-reference-information.png) - -*** -## Add New Address page - -The following table describes the attributes you enter and select when adding a new customer address. - -|Attribute|Description| -|---|---| -|**Salutation**
**First Name**
**Last Name**|Customer's salutation. If the other person is the point of contact for this new address, you need to populate the fields with the respective data. If the customer is the same, populate the fields with the same values.| -|**Address line 1**
**Address line 2**
**Address line 3**|The fields where you enter the address information except for the city, zip code, and country.| -|**City**
**Zip Code**
**Country**|City, zip code, and country of the customer.| -|**Phone**|Customer's phone number.| -|**Company**|Customer's company.| -|**Comment**|Any specific comment regarding the customer or customer address (e.g. _"This address is going to be used only if the order costs less than 900 euros."_).| -![Add new address page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Customers/Customers%3A+Reference+Information/Add+new+address+page.png) - -*** - -## B2B: Attach Customer to Company page - -The following table describes the attributes that you select while attaching the customer to a company. - -{% info_block infoBox "Info" %} - -Once you click **Save**, you are redirected to the **Company Account > Company Users** page where your customer's data will be stored. - -{% endinfo_block %} - -|Attribute|Description| -|---|---| -|**Company**|A drop-down list with the companies from the **Company Account > Companies** section. Your selection defines the values available in the **Business Unit** drop-down list, as only the business units of the selected company are going to be displayed.| -|**Business Unit**|A drop-down list with the values from **Company Account > Company Units** section assigned to the Company that you selected in the **Company** drop-down list.| -|**Assigned Roles**|Displays the assigned roles if any.| -|**Unassigned Roles**|The roles that you can assign to the customer. The available roles are defined once they are assigned to the company in the **Company Account > Company Roles** section.| diff --git a/docs/scos/user/back-office-user-guides/201811.0/customer/customers.md b/docs/scos/user/back-office-user-guides/201811.0/customer/customers.md deleted file mode 100644 index 0f6e5e7369b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/customer/customers.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Customers -description: The Customers section is designed for managing customer's data such as personal information, billing, and shipping addresses. -last_updated: Jan 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/customers -originalArticleId: b5736d42-fb7e-423a-a624-b859e262657c -redirect_from: - - /v1/docs/customers - - /v1/docs/en/customers -related: - - title: Customer Accounts - link: docs/scos/user/features/page.version/customer-account-management-feature-overview/customer-account-management-feature-overview.html ---- - -The **Customers** section in the Back Office is mostly used by Spryker Admins. - -This section is used for managing customer data from the Back Office by adding personal information like name and email address, as well as customer billing and shipping addresses. In most cases, the customer profiles are added by customers in the online store. In the B2B world, customer data is also managed in the online store. - -{% info_block warningBox "Important" %} -The customer registration can be completed only by the customer by setting up the password for the account (either by following the link sent by email or by clicking the reset password button in the shop). -{% endinfo_block %} - -**Standardized flow of actions for a Spryker Admin** -![Flow of actions](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Customers/customers-section.png) - -{% info_block infoBox %} -This is how a Spryker Admin interacts with other departments to build customers' accounts with a specific set of access rules. -{% endinfo_block %} -*** -**What's next?** -To know how to manage customers, customer groups and customer access, see the following articles: - -* [Managing Customers](/docs/scos/user/back-office-user-guides/{{page.version}}/customers/customers-customer-access-customer-groups/managing-customers.html), [Managing Customer Addresses](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customer-customer-access-customer-groups/managing-customer-addresses.html) -* [Managing Customer Groups](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customer-customer-access-customer-groups/managing-customer-groups.html) -* [Managing Customer Access](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customer-customer-access-customer-groups/managing-customer-access.html) - -To know more about the attributes you use to manage customers, customer groups, and customer access, see the following article: - -* [Customers: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customers-customer-access-customer-groups/references/customers-reference-information.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/dashboard/references/reference-information-dashboard.md b/docs/scos/user/back-office-user-guides/201811.0/dashboard/references/reference-information-dashboard.md deleted file mode 100644 index 3533fe43a6b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/dashboard/references/reference-information-dashboard.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Reference information - Dashboard -description: The guide provides an overview of the Count Orders, Orders by Status, and Top Orders charts you can see when working from the Dashboard. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/dashboard-reference-information -originalArticleId: ad87350e-b8de-4bc6-971c-590b6ee1c53b -redirect_from: - - /v1/docs/dashboard-reference-information - - /v1/docs/en/dashboard-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/dashboard/references/dashboard-reference-information.html ---- - -This topic provides an overview of the dashboard charts presented in the Dashboard section in Spryker Back Office. -*** - -**To view** the dashboard charts, click **Dashboard** on the left. -*** - -## Count Orders -The very first chart you see on the **Dashboard** page is **Count Orders**. This chart provides a summary of orders made for the last 7 days. - -{% info_block infoBox %} - -The x-axis shows days, and the y-axis shows the number of orders. - -{% endinfo_block %} - -![Count orders](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Dashboard/count-orders.png) - -## Orders by Status - -The Orders by status chart shows you the statuses of all the orders that currently exist in the system. - -{% info_block infoBox %} - -You can hover your mouse over the chart to see the details. - -{% endinfo_block %} - -Once the status of an order is updated in the **Sales > Orders** section, the change is reflected on this chart. -![Order status](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Dashboard/orders-status.png) - -## Top Orders - -The Top Products chart visualizes 10 most sold products. - -{% info_block infoBox %} - -The x-axis shows placed orders, and the y-axis shows product names. You can hover your mouse over each line and see the number of ordered items. - -{% endinfo_block %} - -![Top orders](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Dashboard/top-orders.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/dashboard/viewing-dashboard.md b/docs/scos/user/back-office-user-guides/201811.0/dashboard/viewing-dashboard.md deleted file mode 100644 index 162cf8dc0fd..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/dashboard/viewing-dashboard.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing Dashboard -description: The dashboard provides an overview of basic order-related statistics. This page presents you with a summary of order counts, order statuses, top products. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/dashboard -originalArticleId: 89dfd727-df84-4e30-887a-86260e05a26f -redirect_from: - - /v1/docs/dashboard - - /v1/docs/en/dashboard ---- - -The **Dashboard** section in Back Office is mostly used by E-Commerce Managers. -This section is used to provide analytical data to management so that they can build the KPI-based plans and report to investors and other interest groups on daily, weekly, or monthly basis. -**Standardized flow of actions for a Spryker Admin** -![Flow of actions](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Dashboard/flow-of-actions-of-spryker-admin.png) - -{% info_block infoBox %} -This is how the Dashboard data is communicated inside and outside of Spryker Back Office. -{% endinfo_block %} - -This section was designed as a reference location. Thus, no actual actions can be performed there. This is utilized as a quick overview of basic order-related statistics. -*** -**What's next?** -To know more about the charts that are presented in the Dashboard section, see the [Dashboard: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/dashboard/references/dashboard-reference-information.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/general-back-office-overview.md b/docs/scos/user/back-office-user-guides/201811.0/general-back-office-overview.md deleted file mode 100644 index c1c95b384cb..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/general-back-office-overview.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: General Back Office Overview -last_updated: Oct 24, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/general-back-office-overview -originalArticleId: aee0da60-3f48-4849-b336-44ab6f248bd4 -redirect_from: - - /v1/docs/general-back-office-overview - - /v1/docs/en/general-back-office-overview ---- - -A Spryker-based shop ships with a comprehensive, intuitive administration area comprised of numerous features that give you a strong hold over the customization of your store. Here you can tailor features to your specific needs, manage orders, products, customers, modify look & feel of your store by, for example, designing the eye-catching marketing campaigns and promotions, and much more. - -The Spryker Back Office provides you with a variety of sections that are logically connected to each other. -{% info_block infoBox "Spryker Back Office" %} - -It provides the product and content management capabilities, categories and navigation building blocks, search and filter customizations, barcode generator, order handling, company structure creation (_for B2B users_, merchant-buyer contracts' setup. - -{% endinfo_block %} - -With Spryker Back Office you can: -* Manage orders placed by your customers as well as create orders for customers -* Create and manage customers -* Build and manage product categories -* Create and manage CMS blocks and pages -* Handle translations -* Manage products and all elements related to them (availability, labels, options, types, etc.) -* Customize search and filters for the online store -* Create and manage discounts -* Build and manage the main navigation of your online store -* Create new carrier companies and shipment methods as well as manage those -* Create admin users, add roles and user groups - -Depending on the roles and teams in your project, you can limit the access of different Back Office users to specific Back Office areas. - -**Back Office provides both, B2B and B2C capabilities.** -{% info_block infoBox "Info" %} - -The following diagram shows what features are used for both **B2B and B2C**, and which are **B2B specific**. - -{% endinfo_block %} - -![B2B and B2C features](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.md/b2b-and-b2c-features.png) - -You can always define what exactly is going to be needed for your specific project. diff --git a/docs/scos/user/back-office-user-guides/201811.0/maintenance/maintenance.md b/docs/scos/user/back-office-user-guides/201811.0/maintenance/maintenance.md deleted file mode 100644 index 5d01446b845..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/maintenance/maintenance.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Maintenance -description: The section provides information in the Back Office that ensures the system works as expected. -last_updated: Nov 26, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/maintenance -originalArticleId: c04ab1dc-8d89-4f97-aa00-ce2dc9144677 -redirect_from: - - /v1/docs/maintenance - - /v1/docs/en/maintenance ---- - -The **Maintenance** section is designed mostly for DevOps. -This section contains a piece of very technical information that is useful for team members who deals with the technical aspects of the project. -**Standardized flow of actions for a DevOps** -![Maintenance - DevOps](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Maintenance/maintenance-section.png) - -{% info_block infoBox %} -This is how a DevOps uses the Maintenance section to ensure that the system works as designed. -{% endinfo_block %} - -The following important technical information can be found in these sections: -* Dependencies -* Stability -* Architecture Sniffer -* Used Plugins -* Module Overview -* System Information -* PHP Information -* OMS -* Sync permissions -* Queue Processes -* Search -* State Machine -* Storage - -As for the users with no technical background, the OMS information can be used. This information will help to understand how the process of order processing works for a specific store: -![OMS workflow](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Maintenance/oms-maintenance.gif){height="320" width="640"} diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-cart-rules.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-cart-rules.md deleted file mode 100644 index 25a03f7f6f5..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-cart-rules.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Creating Cart Rules -description: Use the procedure to create a cart-based discount rule along with its conditions in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-cart-rule-discount -originalArticleId: 173c3b58-644c-4ec7-b4ec-66b72415b8bc -redirect_from: - - /v1/docs/creating-a-cart-rule-discount - - /v1/docs/en/creating-a-cart-rule-discount -related: - - title: Discount- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-reference-information.html - - title: Discount Calculation- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-calculation-reference-information.html - - title: Discount Conditions- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-conditions-reference-information.html - - title: Voucher Codes- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/voucher-codes-reference-information.html - - title: Token Description Tables - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/token-description-tables.html ---- - -This topic describes how to create a Cart Rule discount. -*** - -To start working with discounts, navigate to the **Discounts** section. -*** - -A cart rule is a discount that is applied automatically when all attached discount conditions are fulfilled and if the cart rule is active. Unlike a voucher code, it does not require any input from the customer. -*** - -**To create a cart rule discount:** -1. On the **Discount** page, click **Create new discount** in the top right corner. -2. On the **Create Discount page > General tab**, do the following: - 1. In **Store relation**, check the stores you wish the discount to be active in. - 2. In **Discount Type** drop-down, select **Cart Rule**. - 3. In the **Name** field, specify the name for the discount. - 4. _Optional_: Enter the description of the discount in the **Description** field. - 5. Specify if the discount is exclusive. See [Discount: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-reference-information.html) for more details. - 6. Specify the validity interval (lifetime) of the discount. -3. Click **Next** or select the **Discount calculation** tab to proceed. -4. On the **Create Discount page >Discount calculation** tab, do the following: - 1. Select either Calculator percentage, or Calculator fixed in the **Calculator type** drop-down. See [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) for more details. - {% info_block warningBox "Note" %} - - The next step varies based on the selected calculator type. - - {% endinfo_block %} - - a. **Calculator fixed**: Enter the prices to be discounted - b. **Calculator percentage**: Enter the values (percentage) to be discounted - 2. Select the **Discount application type** and define what products the discount will be applied to. See [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) for more information. - 5. Click **Next**, or select the **Conditions** tab to proceed. - 6. On the **Create Discount page >Conditions** tab, do the following: - 1. Select the **Apply when** conditions or click **Plain query** and enter the query manually. See [Discount Conditions: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-conditions-reference-information.html). - 2. Enter the value for **The discount can be applied if the query applies for at least X item(s).** field. -7. Click **Save** to create the new discount. -*** - -**What's next?** - -See [Managing Discount](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/managing-discounts.html) to know more about the actions you can do once the discount is created. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-vouchers.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-vouchers.md deleted file mode 100644 index 02b51080ef1..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/creating-vouchers.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Creating Vouchers -description: Use the procedure to create discount vouchers your customer can redeem during checkout. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-discount-voucher -originalArticleId: 13121ebc-47b9-44a8-bd96-361d4f83c607 -redirect_from: - - /v1/docs/creating-a-discount-voucher - - /v1/docs/en/creating-a-discount-voucher -related: - - title: Discount- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-reference-information.html - - title: Discount Calculation- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-calculation-reference-information.html - - title: Discount Conditions- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-conditions-reference-information.html - - title: Voucher Codes- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/voucher-codes-reference-information.html - - title: Token Description Tables - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/token-description-tables.html ---- - -This topic describes how to create a Discount Voucher. -*** - -To start working with discounts, navigate to the **Discounts** section. -*** - -Vouchers are codes that customers can redeem during checkout. Voucher codes are grouped into pools to apply logic to multiple vouchers at once. You can generate a single voucher to be used by multiple customers or a pool of dedicated one-time per-customer voucher codes. -*** - -**To create a discount voucher:** -1. On the **Discount** page, click **Create new discount** in the top-right corner. -2. On the **Create Discount page > General tab**, do the following: - 1. In **Store relation**, check the stores you wish the discount to be active in. - 2. In **Discount Type** drop-down, select **Voucher codes**. - 3. In the **Name** field, specify the name for the voucher. - 4. _Optional_: Enter the description for the voucher in the **Description** field. - 5. Specify if the voucher is exclusive. See [Discount: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-reference-information.html) for more details. - 6. Specify the validity interval (lifetime) of the voucher. -3. Click **Next** or select the **Discount calculation** tab to proceed. -4. On the **Create Discount page >Discount calculation** tab, do the following: - 1. Select either Calculator percentage, or Calculator fixed in the **Calculator type** drop-down. See [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) for more details. - {% info_block warningBox "Note" %} - - The next step varies based on the selected calculator type. - - {% endinfo_block %} - - a. **Calculator fixed**: Enter the prices to be discounted - b. **Calculator percentage**: Enter the values (percentage) to be discounted - 2. Select the **Discount application type** and define what products the voucher will be applied to. See [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) for more details. -5. Click **Next**, or select the **Conditions** tab to proceed. -6. On the **Create Discount page >Conditions** tab, do the following: - 1. Select the **Apply when** conditions or click **Plain query** and enter the query manually. See [Discount Conditions: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-conditions-reference-information.html) for more details. - 2. Enter the value for **The discount can be applied if the query applies for at least X item(s).** field. -7. Click **Save** to create the new voucher. -8. -*** - -When you click **Save**, an additional tab named **Voucher Codes** appear. Here, you can generate, view and export voucher codes (if they were already created). -The list is empty until codes are generated. - -*** - -On the **Voucher code** tab, do the following: -1. Enter the **Quantity** for voucher codes you want to generate. -2. _Optional_: Enter a **Custom code**. -3. Set the **Add Random Generated Code Length** by selecting the value from a drop-down list. -4. Set the **Maximum number** of uses. -5. Click **Generate** to complete the process. - The voucher codes will be generated according to your specifications. The codes will be displayed in the table at the bottom of the page. -5. Click **Activate** in the top right corner to activate the voucher. -6. -Even if a voucher is valid and the decision rules are satisfied, a voucher can only be redeemed if it’s currently active. - -{% info_block infoBox %} - -See [Voucher Codes: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/voucher-codes-reference-information.html) for more details. - -{% endinfo_block %} - -*** - -**Tips and tricks** - -Once you generated voucher codes, you can export them as a **.csv** file. -To do that, click **Export** below **Generate**. -*** - -**What's next?** - -See [Managing Discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/managing-discounts.html) to know more about the actions you can do once the discount is created. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/discount.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/discount.md deleted file mode 100644 index 100653b6095..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/discount.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Discount -description: This section can be used to create discounts and specify their types, vouchers, and cart rules, as well as to define what and when to apply the discount to. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discount-1 -originalArticleId: 4ce874f6-10d5-4e94-948a-7b3cf2755cc5 -redirect_from: - - /v1/docs/discount-1 - - /v1/docs/en/discount-1 ---- - -The **Discount** section in the Back Office is mostly used by the Marketing Content Manager. -This section allows creating discounts for products. - -**Standardized flow of actions for a Marketing Content Manager** -![Discounts - Marketing Content Manager](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/discounts-section.png) - -{% info_block infoBox %} -This is how the Marketing Content Manager interacts with the other departments and team members to introduce the planned discounts and use the Back Office to create those. -{% endinfo_block %} -Discounts that you create can either be cart-based or in the form of vouchers. Also, discounts can be set to be "exclusive." -In terms of the way a discount is calculated, there are two types of discounts: the percentage discount and fixed amount discount. - -* * * -**What's next?** -To know how the discounts are created and managed, see the following articles: -* [Creating a Discount Voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) -* [Creating a Cart Rule Discount](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html) -* [Managing Discounts](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/managing-discounts.html) - -To know more about the attributes you use to create and manage the discounts, see the following articles: -* [Discount: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-reference-information.html) -* [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) -* [Discount Conditions: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-conditions-reference-information.html) -* [Voucher Codes: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/voucher-codes-reference-information.html) -* [Token Description Tables](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/token-description-tables.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/managing-discounts.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/managing-discounts.md deleted file mode 100644 index dfac9640fd7..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/managing-discounts.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Managing Discounts -description: Use these procedures to view and update discounts, activate/deactivate discounts, and add voucher codes in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-discounts -originalArticleId: b101c98e-4502-4fe4-b22b-b9a9e0a7b21f -redirect_from: - - /v1/docs/managing-discounts - - /v1/docs/en/managing-discounts -related: - - title: Discount- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-reference-information.html - - title: Discount Calculation- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-calculation-reference-information.html - - title: Discount Conditions- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/discount-conditions-reference-information.html - - title: Token Description Tables - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/token-description-tables.html - - title: Voucher Codes- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/discount/references/voucher-codes-reference-information.html ---- - -This topic provides the list of actions that you can perform with the discounts and steps you need to follow. - -*** - -## Editing a Discount - -To edit a discount, do the following: -1. On the **Overview of Discounts** page, click **Edit** in the _Actions_ column. -2. Update the attributes and click **Save**. - {% info_block infoBox %} - - To find out more information about the attributes that you see on the **Edit Discount** page, see [Discount: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-reference-information.html). - - {% endinfo_block %} - -*** - -## Viewing a Discount - -To view a discount, do the following: -1. On the **Overview of Discounts** page, click **View** in the _Actions_ column. -2. On the **View discount** page, do one of the following: - 1. Click **Edit** to edit the attributes. - 2. Click **List of discounts** to get back to the **Discount Overview** page. -*** - -## Adding Voucher Codes (Voucher Discount Type) - -You can add voucher codes while editing the discount entity. -And you can also do the following: -1. On the **Overview of Discounts** page, click **Add code** in the _Actions_ column. - You are redirected to the **Voucher codes** tab of the **Edit Discount** page. - Follow the steps described in [Creating a Discount Voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html). -3. Once the codes are generated, click **Save**. -*** - -## Activating/Deactivating Discounts - -You can activate/deactivate a discount while editing it. - -Click **Activate/Deactivate** in the top-right corner of the **Edit Discount** page. - -**OR** - -On the **Overview of Discounts** page, click **Activate**/**Deactivate** in the _Actions_ column. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-calculation.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-calculation.md deleted file mode 100644 index 3a7f68ea2dd..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-calculation.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Reference information - Discount Calculation -description: The guide provides additional information on the values you use when working with discount calculations in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discount-calculation-reference-information -originalArticleId: 11807cc3-340b-46d7-b947-4c9a93da5147 -redirect_from: - - /v1/docs/discount-calculation-reference-information - - /v1/docs/en/discount-calculation-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/discount-calculation-reference-information.html ---- - -This topic contains the information that you need to know when working with discount calculations in the **Discount calculation** tab. -*** - -## Calculator Type -The discount can be calculated in two ways: -* **Percentage Value**: The discount is calculated as a percentage of the discounted items. If selected, you will need to set the percentage value (e.g. 25) -* **Fixed Value**: A fixed amount is discounted. If you select this type, you will need to specify the amount (Gross, or Net, or Both) for each currency used in your store. - -Example: - -| Product Price | Calculator Plugin | Amount | Discount Applied | Price to Pay | -| --- | --- | --- | --- | --- | -| 50 € | Calculator Percentage | 10 |5 € | 45 € | -| 50 €| Calculator Amount | 10 €| 10 €| 40 €| -*** -## Discount Application Type -You can select one of the following options: -* Query String -* Promotional Product - -### Query String -You can use a query to define discount conditions. Only products that satisfy the query's conditions are discountable. Queries also define if the discount is applied to one or several products. Discount conditions are set by using either **Query Builder** or by specifying a **Plain query**. - -Use the Query Builder to construct queries (guided) or the Plain query field to enter them (free text). You can switch between both modes by clicking the corresponding button (note: incomplete queries cannot be transferred between the two modes). -**Query Builder** -![Discount_Calculation_Query](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Calculation:+Reference+Information/query-string.png) - -**Plain Query** -![Discount_Calculation_Plain Query](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Calculation:+Reference+Information/discount-calculation-plain-query.png) - -The query builder lets you combine different conditions with connectors (**AND** and **OR**). Multiple conditions (rules) can be added and grouped in this way. Each condition (rule) consists of: -* field (e.g. **attribute.color**) -* operator (e.g. equal: **=**) -* value tokens (e.g. **blue**) -{% info_block infoBox "Info" %} - -The fields and values are defined by your shop data. - -{% endinfo_block %} - -These tokens are used to build plain queries too. The pattern of the plain query is as follows: -![Plain Query Pattern](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Calculation:+Reference+Information/plain-query-pattern.png) - -You can find plain query examples in the following table. - -|Plain query|Explanation| -|---|---| -|day-of-week = '1'|Discount applies if the order is placed on Monday.| -|shipment-carrier != '1' AND price-mode = 'GROSS_MODE'|Discount applies if the shipment carrier with the attribute "1" is not chosen and gross pricing is selected.| -|currency != 'EUR' OR price-mode = 'GROSS_MODE'|Discount applies if the selected currency is not Euro or the pricing mode is gross.| -{% info_block infoBox "Info" %} - -See [Token Description Tables](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/token-description-tables.html) for more information. - -{% endinfo_block %} - -### Discount promotion to product - -Sometimes, it is more profitable to give away free products or provide a discount for the products that are not yet in the cart instead of the ones that are already there. This discount application type enables you to do just that. When a customer fulfills the discount conditions, the promotional product appears below other items. The SKU of the promotional product you wish to be available for adding to cart is entered in the **Abstract product sku** field. Then, you enter the **Quantity** of the chosen promotional product to be available for adding to cart. -![Application type](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Calculation:+Reference+Information/Application+type.png) -*** - -You can either give away the promotional product completely for free or provide a discount for this product by specifying the percentage value or a fixed amount to be discounted from the promotional product's price (when giving the product for free, the percentage value should be 100%, while the fixed-price value should be equal to the product's price). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-conditions.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-conditions.md deleted file mode 100644 index 97a1f84c5cb..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount-conditions.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Reference information - Discount Conditions -description: The guide provides additional information you use when working with discount calculations in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discount-conditions-reference-information -originalArticleId: cff7dcc7-fc61-408a-bd77-20078b2c0b1e -redirect_from: - - /v1/docs/discount-conditions-reference-information - - /v1/docs/en/discount-conditions-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/discount-conditions-reference-information.html ---- - -This topic describes the information that you need to know when working with discount conditions in the **Conditions** tab. -*** -Conditions are also called decision rules. -*** -* A cart rule can have one or more conditions linked to it. The cart rule is redeemed only if every condition linked to it is satisfied. -* Vouchers can be linked to one or more conditions. Vouchers are only redeemed if all linked conditions are satisfied. - -The conditions are created in the form of a query and may be entered as a plain query or via the query builder. (See [Discount Calculation: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/references/discount-calculation-reference-information.html) for more details.) - -{% info_block infoBox "Info" %} -If you do not need to add a condition, you can leave the query builder empty. -{% endinfo_block %} - -Example: Discount is applied if five or more items are in the cart and it is Tuesday or Wednesday. -![Discount Condition](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Conditions:+Reference+Information/discount-condition.png) - -The minimum order amount value specifies the threshold which should be reached for the products in a cart with a certain attribute to be discounted. When added to cart, products with the attribute specified by a query are measured against the threshold. By default, the minimum order amount value is 1. It means that any discount is applied if the number of items (that meet the rules) inside the cart is superior or equal to 1. - -Example: Discount is applied if 4 or more items with the Intel Core processor are in the cart. -![Threshold](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Conditions:+Reference+Information/threshold.png) -*** -**More Advanced Example** - -To create a discount that will have an extensive number of conditions, you use the condition **groups**. Meaning you collect different rules under different groups and split them into separate chunks. -Let's say you have received a task to create a discount with the following conditions: - -**B2B Scenario** -The discount is going to be applied if one of the following is fulfilled: -1. The price mode is **Gross**, and: - * the subtotal amount is greater or equal: 100 € (Euro) **OR** 115 CHF (Swiss Franc) - -**OR** - -2. The price mode is **Net**, and: - * the subtotal amount is greater or equal: 80 € (Euro) **OR** 95 CHF (Swiss Franc) - -The setup will look like the following: -![B2B scenario](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Conditions:+Reference+Information/b2b-scenario.png) -*** -**B2C Scenario** -The discount is going to be applied if one of the following is fulfilled: -1. On **Tuesday**, and: - * the item color is red, this item does not have the label **New**, and the customer adds at least two items (or more) to a cart - -**OR** - -2. On **Thursday**, and: - * the item color is white, this item does not have the label **New**, and the customer adds at least two items (or more) to a cart - -The setup will look like the following: -![B2C scenario](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Discount+Conditions:+Reference+Information/b2c-scenario.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount.md deleted file mode 100644 index 238e919d5e0..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-discount.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Reference information - Discount -description: This guide provides additional information on the values you use when working with discounts in the Back Office. -last_updated: Sep 18, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/discount-reference-information -originalArticleId: 5b807435-f756-4259-9fb6-8211c34e73ea -redirect_from: - - /v1/docs/discount-reference-information - - /v1/docs/en/discount-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/discount-reference-information.html ---- - -This topic provides you with the information that you need to know when working with discounts. -{% info_block warningBox "Note" %} - -You can find the information related to discount calculation, conditions and voucher codes in separate articles. See the **Related Articles** section. - -{% endinfo_block %} - -## Discount Overview Page - -In the **Discount** section, you see the following: - -* The discount ID and name -* The amount that is discounted -* The type of discount, its validity period, and status -* The identifier for Exclusive -* The actions that you can do on each specific discount - -By default, the last created discount goes on top of the table. However, you can sort and search the list of discount. - -All columns with headers having arrows in the List of Orders table are sortable. -*** - -## Actions Column - -All the discount management options that you can invoke from the _Actions_ column on the **Discount Overview** page are described in the following table. - -| Action |Description | -| --- | --- | -|**Edit** | Takes you to the **Edit Discount** page. Here, you can modify discount settings or generate voucher codes if it is a voucher discount. | -| **View**| Takes you to the **View Discount** page. Here, you can find all the information about the chosen discount. | -| **Add code**| You can see this action only if the chosen discount is of a voucher type. It takes you directly to the **Voucher codes** tab of the **Edit Discount** page. Here, you can generate new voucher codes, export or delete the ones that are already created. | -| **Activate/Deactivate** | Activates or deactivates a specific discount. If a voucher discount is deactivated, its codes are invalid when entered in a cart. If a cart rule is deactivated, it won't be automatically applied even if the discount rules are fulfilled. | - -## Edit Discount > General tab - -The following table describes the attributes you enter and select on the **Edit Discount** page, the **General** tab: - -| Attribute |Description | -| --- | --- | -|**Store relation** |The stores you wish the discount to be active in. Multiple stores can be selected.| -| **Discount Type** | A drop-down list where you select either **Voucher code** or **Cart rule** discount type. | -| **Name** | A unique name that will be displayed to your customers. | -| **Description** | A unique description of the discount. | -| **Non-Exclusive** | Defines the discount exclusivity. Non-exclusive discounts can be redeemed in conjunction with other non-exclusive discounts.| -| **Exclusive** | Defines the discount exclusivity. An exclusive discount can only be used on its own. You **cannot apply** other discounts with an exclusive one unless a higher exclusive discount is used. Then, the higher discount is redeemed. | -| **Valid from** and **Valid to**| Vouchers are redeemable/the cart rule is active between Valid From and Valid To dates, inclusive. E.g.: voucher can be redeemed/discount applies to the cart starting from 1/1/2018 until 31/12/2019.| - -{% info_block infoBox "Info" %} -The name and the description should be meaningful to help other Back Office users understand what the discount does. Besides, the given name is displayed in the customer's cart when redeeming the voucher. Therefore, it must be unique. -{% endinfo_block %} diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-voucher-codes.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-voucher-codes.md deleted file mode 100644 index 30424585a9e..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/reference-information-voucher-codes.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Voucher Codes- Reference Information -description: This guide provides reference information when working with voucher codes in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/voucher-codes-reference-information -originalArticleId: 0197d7bc-ceff-4d96-a533-4482442d51ed -redirect_from: - - /v1/docs/voucher-codes-reference-information - - /v1/docs/en/voucher-codes-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/voucher-codes-reference-information.html ---- - -This topic describes the information that you need to know when working with voucher codes in the **Voucher code** tab. -*** -You enter and select the following attributes on the **Edit Discount > Voucher code** tab: - -| Attribute | Description | -| --- | --- | -| **Quantity** | The number of vouchers you need to generate. | -| **Custom code** | When generating a single voucher code, you can enter it manually. If you want to create multiple codes at once, add a "Random Generated Code Length" to the custom code.| -| **Add Random Generated Code Length** | This value defines the number of random characters to be added to the custom code. If you do not add any custom value, you can just select this value. The system will generate the codes with the length you select. | -| **Max number of uses (0 = Infinite usage)** | Defines the maximum number of times a voucher code can be redeemed in a cart. | - -Use the placeholder **[code]** to indicate the position you want random characters to be added to. -
**For example:** - * **123[code]** (the randomly generated code will be added right after the custom code); - * **[code]123** (the randomly generated code will be added in front of the custom code). -*** -**Maximum number of uses** -| Value | Behavior | -| --- | --- | -| **0** | Infinitely redeemable. | -| **1** | The voucher can be redeemed once. | -| **n > 1** | The voucher can be redeemed _n_ times. | - -![Voucher code](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Voucher+Codes:+Reference+Information/voucher-code.png) - -*** -**Voucher Code Pool** -The voucher codes of a discount are all contained in the same voucher code pool. One customer may only redeem one voucher code per pool per cart. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/token-description-tables.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/token-description-tables.md deleted file mode 100644 index 7c9d4b01dec..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/discount/references/token-description-tables.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Token Description Tables -description: This guide provides reference information in tables about fields and value types, operators you enter when creating a plain query. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/token-description-tables -originalArticleId: d2a8b44c-2c19-4b5d-ac2e-1bdbab371735 -redirect_from: - - /v1/docs/token-description-tables - - /v1/docs/en/token-description-tables ---- - -This topic contains a set of tables that describe fields, value types, and operators you use when building a plain query. -*** -## Tokens - -![Token](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Discount/Token+Description+Tables/tokens.png) - -| Value | Description | -| --- | --- | -| **Fields** | The available fields may include SKU, item-price, item-quantity or a variety of attributes (e.g. **currency** on the image above). | -| **Operator** | The operator compares the value of a field on the left with the value(s) on the right (e.g. equals ‘=’, greater than ‘>’). If the expression evaluates to true, the discount can be applied. (operator is **equal** on the image above) | -| **Value** | The value types must match the selected field. The asterisk (*) matches all possible values. (on the image above, the value is **Swiss Franc**)| -| **Combine Conditions** | ‘AND’ and ‘OR’ operators are used to combine conditions. (**AND** on the image above) | -|**Grouping**|When building more complex queries, conditions may be grouped inside parentheses ‘( )’.| - -## Fields and value types (Plain Query) -|Field|Plain Query|Value Type|Description| -|-|-|-|-| -|**Calendar week**|calender-week|Number|Week number in a year (1-52)| -|**Day of week**|day-of-week|Number|Day of week (1-7)| -|**Grand total**|grand-total|Number (Decimal)|The sum of all totals| -|**Subtotal**|sub-total|Number (Decimal)|The sum of item prices w/o shipment expenses and discounts| -|**Item price**|item-price|Number (Decimal)|The price of one item| -|**Item quantity**|item-quantity|Number|The number of items| -|**Month**|month|Number|The month of the year (1-12)| -|**SKU**|sku|String|Any value depends on how SKUs are stored| -|**Time**|time|hour:minute|Time of the day| -|**Total quantity**|total-quantity|Number|Total cart quantity| -|**Attribute**|attribute.*|String, number|Any value| -|**Customer Group**|customer-group|String|Any value, use a customer group name for an exact match| - -## Operators (Plain Query) -|**Operator**|Operator for plain query|Value type|Description| -|-|-|-|-| -|**Contains**|CONTAINS|String, Number|Checks if the value is contained in the field| -|**Doesn’t contain**|DOES NOT CONTAIN|String, Number|Checks if the value is not contained in the field -|**Equal**|=|String, Number|Checks if the value is equal to the value of the right operand| -|**Not Equal**|!=|String, Number|Checks if the value is not equal to the value of the right operand| -|**In**|IS IN|List|Values need to be semicolon separated| -|**Not In**|IS NOT IN|List|Values need to be semicolon separated| -|**Less**|<|Number|Checks if the value is less than the value of the right operand| -|**Less or equal**|<=|Number|Checks if the value is less than or equal to the value of the right operand| -|**Greater**|>|Number|Checks if the value is greater than the value of the right operand| -|**Greater or equal**|>=|Number|Checks if the value is greater than or equal to the value of the right operand| diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/creating-product-labels.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/creating-product-labels.md deleted file mode 100644 index 844297d2205..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/creating-product-labels.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Creating Product Labels -description: Use these procedures to create and/or activate/deactivate product labels in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-label -originalArticleId: d1f7c347-fa1a-4e41-b514-9a96904624fc -redirect_from: - - /v1/docs/creating-a-product-label - - /v1/docs/en/creating-a-product-label -related: - - title: Product Labels feature overview - link: docs/scos/user/features/page.version/product-labels-feature-overview.html - - title: Product Labels- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-labels/references/product-labels-reference-information.html ---- - -This topic describes how you create and activate product labels. -*** -To start working with product labels, navigate to **Products > Product Labels**. -*** -When you add a product and add the valid from/to dates, you trigger a dynamic label **New** to be assigned to this product. -But if you want to add another eye-catching label to the product, you need to create it first. Please note, the labels have the priorities. The newly created label will always have the lowest priority and will be displayed at the end of all the attributes already assigned to a product until you have prioritized them. -*** -**To create a product label:** - -1. In the top right corner of the **Product Labels** page, click **Create Product Label**. -2. On the **Create the Product Label** page > **General Information** tab, do the following: - 1. Enter the name of your label in the **Name** field. - 2. **Optional:** You can activate the product right away by selecting the **Is Active** checkbox. - 3. **Optional:** If you want this label to be the only one displayed for a product, select the **Is Exclusive** checkbox. Even if you have other labels assigned, only the exclusive one will be displayed. - 4. **Optional:** Define the validity period for the label by setting the valid from and to dates. - 5. **Optional:** The **Front-end Reference** defines the location and the look of a product label. - 6. **Optional:** If needed, define the translations for each locale setup in your store. -3. Switch to the **Products** tab. -4. In the **Available products** table, define the product(s) to which this label needs to be assigned by selecting respective checkboxes in the _Select_ column. -5. Once done, click **Save**. -*** -**Tips and tricks** -* If a product has one exclusive and no or several non-exclusive labels, only the exclusive one is applied to the product. -* If you want to assign labels to all products in the table, click **Select All**. -* To find a specific product or filter products by categories or name, start typing in the Search field. The list of matching items would be displayed. -*** -If you did not select the **Is Active** checkbox while creating the label, your label will be inactive. -*** -**To activate the label:** -1. You can edit the label and select the respective checkbox -**OR** -3. On the **Overview of Product Label** page, click **Activate** in the _Actions_ column. - -The same applies if you want to deactivate the label. Clear the checkbox on the **Edit** page, or click **Deactivate** in the _Actions_ column. -*** -**What's next?** - -* To learn how the product labels are managed, see [Managing Product Labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/managing-product-labels.html). -* To learn how you can prioritize the labels, see [Prioritizing Labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/prioritizing-labels.html). -* To learn more about the attributes you select and enter while creating or managing the labels or see some examples of product labels, see the [References](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/references/product-labels-reference-information.html) section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/managing-product-labels.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/managing-product-labels.md deleted file mode 100644 index bd4591b4b1d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/managing-product-labels.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Managing Product Labels -description: The Managing Product Labels section describes the procedures you can use to view, edit, activate and/or deactivate product labels in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-labels -originalArticleId: 3ee5bca7-4008-4995-9a8a-8bc39ef40fb8 -redirect_from: - - /v1/docs/managing-product-labels - - /v1/docs/en/managing-product-labels -related: - - title: Product Labels feature overview - link: docs/scos/user/features/page.version/product-labels-feature-overview.html - - title: Accessing Product Labels - link: docs/scos/dev/glue-api-guides/page.version/managing-products/retrieving-product-labels.html - - title: Creating Product Labels - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-labels/creating-product-labels.html ---- - -This topic describes the procedures of managing product labels. -*** - -To start managing product labels, navigate to **Products > Product Labels**. -*** - -You can view, edit, and activate or deactivate (depending on the current status) product labels by clicking respective buttons in the _Actions_ column in the list of Product Labels. -*** - -## Viewing Product Labels - -To view a product label: -1. On the **Overview of Product Labels** page, click **View** in the _Actions_ column. - Clicking View will take you to the **View Product Label** page. -2. On the **View Product Label** page, the following information is available: - * General information about the label, including the name, exclusivity, and validity period. - * Translation - * Products to which the label is assigned. -3. Being on the **View Product Label** page, do one of the following: - * To view the product to which a specific label is assigned, click **View** in the action column of the product to which this label applies table. This will take you to the **View Abstract Product** page. - * To activate/deactivate the label, click **Activate**/**Deactivate** in the top right corner of the page. - * To edit the label, click **Edit** in the top right corner of the page. - * To return back to the **Overview of Product Tables** page, click **Back to Product Labels** -*** - -## Editing a Product Label - -{% info_block warningBox "Note" %} - -Products for the dynamic labels (like **New**, or **Discontinued** are assigned dynamically; there is no way to manage relations manually. - -{% endinfo_block %} - -To edit a product label: -1. Click **Edit** in the _Actions_ column of the **Overview of Product Labels** page. -2. On the **Edit Product Label** page, edit the values. See [Product Labels: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/references/product-labels-reference-information.html). -3. Once done, click **Save**. -*** - -## Activating/Deactivating a Product Label - -There are several ways to activate/deactivate a product label: - -* Activate the label while creating/editing it by selecting the **Is Active** checkbox. The deselection of the checkbox deactivates the label. - -* Deactivate the label while editing it by clicking **Deactivate** in the top right corner of the **Edit** page. - -* Activate/deactivate a label while viewing it by clicking **Activate/Deactivate** in the top right corner of the **View** page. - -* Activate/deactivate a label by selecting **Activate/Deactivate** in the _Actions_ column of the **Overview of Product Labels** page. -*** - -**What's next?** - -* Learn how to prioritize a label in the [Prioritizing Labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/prioritizing-labels.html) topic. -* To learn what attributes you enter and select while editing the product label, see the [Product Labels: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/references/product-labels-reference-information.html) article. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/prioritizing-labels.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/prioritizing-labels.md deleted file mode 100644 index 21a5a36224d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/prioritizing-labels.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Prioritizing Labels -description: Use the procedure to set a specific order for product labels to display them in the storefront that fits your preferences. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/prioritizing-labels -originalArticleId: c7fec111-9bde-4646-a7bb-05e33ee92f2a -redirect_from: - - /v1/docs/prioritizing-labels - - /v1/docs/en/prioritizing-labels -related: - - title: Product Labels feature overview - link: docs/scos/user/features/page.version/product-labels-feature-overview.html - - title: Accessing Product Labels - link: docs/scos/dev/glue-api-guides/page.version/managing-products/retrieving-product-labels.html - - title: Managing Product Labels - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-labels/managing-product-labels.html - - title: Product Labels- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-labels/references/product-labels-reference-information.html ---- - -This article describes how you can prioritize the labels. -*** -To start working with product labels, navigate to the **Products > Product Labels** section. -*** -You can update the order in which labels appear for the products. -For example, you can set the labels NEW to be always displayed first for products. -![Prioritize product labels](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Labels/Prioritizing+Labels/Prioritizing-Labels.gif) - -*** -**To prioritize product labels:** -1. Click **Prioritize Product Labels** in the top right corner of the **Overview of Product Page**. - 2. On the **Prioritize Product Labels** page, use drag-and-drop to change the priority. -3. Once done, click **Save**. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/product-labels.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/product-labels.md deleted file mode 100644 index bc75aea3a83..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/product-labels.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Product Labels -description: Use the Product Labels section to highlight specific products in your online store by adding a prodcut label in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-labels -originalArticleId: bf980c4a-42e2-416b-8d01-711d5b0c40b6 -redirect_from: - - /v1/docs/product-labels - - /v1/docs/en/product-labels -related: - - title: Product Labels feature overview - link: docs/scos/user/features/page.version/product-labels-feature-overview.html - - title: Accessing Product Labels - link: docs/scos/dev/glue-api-guides/page.version/managing-products/retrieving-product-labels.html ---- - -The product labels are designed for the purpose of adding a variety of information to products. -*** -You can assign Product Labels to highlight specific products in your shop. Customize the look and text of the Labels as they appear in the shop. Any association can be a Label, such as "Sale" or "Christmas." Products that are new in your shop can automatically be marked with the Dynamic Product Label "New" for a predefined time range. You can add validity dates to labels, sort them by importance or relevance, and allow your customers to filter and search for them in your shop. - -Labels are mapped to products to highlight them in the shop. Customers can also filter products by their labels. Abstract products that are new can be automatically marked with a "new" label for a defined time period. -*** -**What's next?** -Learn how the product labels are created and managed in the following articles: -* [Creating a Product Label](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) -* [Managing Product Labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/managing-product-labels.html) -* [Prioritizing Labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/prioritizing-labels.html) - -To learn more about the attributes you select and enter while creating or managing product labels, see [Product Labels: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/references/product-labels-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/references/reference-information-product-labels.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/references/reference-information-product-labels.md deleted file mode 100644 index 7716d1e9c21..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/references/reference-information-product-labels.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Reference information - Product Labels -description: The guide provides additional information about the values you use when creating or updating product labels in the Back Office. -last_updated: Sep 10, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-labels-reference-information -originalArticleId: 039634ea-8ab3-4359-9bd5-aa4aef49c6ab -redirect_from: - - /v1/docs/product-labels-reference-information - - /v1/docs/en/product-labels-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/product-labels/references/product-labels-reference-information.html ---- - -This topic describes the attributes that you see, select, and enter on the Product Label pages. -*** - -## Overview of Product Labels page - -In the table of the **Overview of Product Labels** page, you see the following information: -* Order number of the product label and the priority numeric value -* Product label name -* Exclusivity identifier (yes/no) and the validity period (n/a if no validity period is set up) -* The number of products to which the label is assigned -* Product Label status and the actions that can be initiated - -## Create/Edit a Product Label page - -**General tab** - -| Name | Description | -| --- | --- | -| **Name** | The name of the product label, e.g. Discounts Available. | -| **Is Active** | A checkbox that, if selected, activates the product label. | -| **Is Exclusive** | A checkbox that defines the product label exclusivity. If you want a specific label to be the only one displayed for a product, you select this checkbox. Even if you have other labels assigned, only the exclusive one will be displayed. | -| **Valid From**
**Valid To** | The period for which the label will be displayed for a product. If no dates are specified, the label will always be displayed. | -| **Front-end Reference** | Defines the location and the view of a product label. | -| Translations: **Name** | The name of the product label translated to a respective language. | diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/creating-product-relations.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/creating-product-relations.md deleted file mode 100644 index de4c54c3e82..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/creating-product-relations.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Creating Product Relations -description: Use this procedure to create a product relation and enter all the required values in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-relation -originalArticleId: 4f80a197-1cd7-438a-95a2-4470f03f9be5 -redirect_from: - - /v1/docs/creating-a-product-relation - - /v1/docs/en/creating-a-product-relation -related: - - title: Product Relations Feature Overview - link: docs/scos/user/features/page.version/product-relations-feature-overview.html ---- - -This topic describes the procedure that needs to be performed in order to create a product relation. -*** - -To start working with product relations, navigate to the **Products > Product Relations** section. -*** - -**To create a product relation:** -1. On the **Product Relations** page, click **Create Relation** in the top right corner. -2. On the **Add Product Relations** page > **Relation Type** tab: - 1. Either select the checkbox for **Update regularly** or leave the checkbox blank. - 2. In the **Relation type** drop-down, select the type (Related products or Upselling). See [Product Relations: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/references/product-relations-reference-information.html) to know more about the product relation types and see some examples of how those types are used. - 3. In the **Select product** section, find an abstract product for which the relation needs to be added and click **Select** in the _Actions_ column. - {% info_block infoBox "Tip" %} - - To easily find the product in the table, you can enter the abstract product SKU or name into the **Search** field. You can add only one product here. - - {% endinfo_block %} - -3. Click **Next** to proceed to the **Assign Products** tab or just click on the tab. -4. On the **Assign products** tab, in the **Assign related products** section: - 1. Click **Add rule** or **Add group**, depending on the conditions you want to specify. See [Product Relations: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/references/product-relations-reference-information.html) to know more about rules and groups. - 2. For your rule/group, select the **AND** or **OR** operator. You use AND operator if you need several conditions to be met, and OR if you need one or another condition to be met. - 3. Populate the required drop-downs and fields for your rule/group. - 4. Click **Save** so that your changes are saved and the table automatically updated to display the abstract product(s) that meet the specified rules/groups. -*** - -**Tips and tricks** - -You can delete a rule or group by clicking **Delete** for a specific entry. -When adding the query, you can check the products that meet those criteria. - -In the **Assign related products** table, click **View** to get to the **View Product Abstract** page, or **View > in Shop** to see the product in the online store. - -While defining the rules for the products to be assigned, you select **Add group** in case you need a set of conditions to be met in order to display the **Similar Products** section. - -**Add rule** is normally used when there is only one condition that should be met in order to display the **Similar Products** section for the abstract product. You can specify as many rules/groups as you need. -*** - -You can add as many abstract products as you need. - -**Activating a Product Relation** - -Your product relation is created, but not active. - -To activate the created product relation, click **Activate** in the top-right corner of the Edit Product Relations page. -*** - -**Tips and tricks** - -On this page, you also can: -* Click **View** in the _Actions_ column to view the assigned abstract product in Back Office. -* Click **View in shop** to view the assigned abstract product in Yves. -*** - -**What's next?** - -* To know how the product relations can be managed, see the [Managing Product Relations](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/managing-product-relations.html) article. -* To know more about the attributes you select and enter while creating a product relation, see [Product Relations: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/references/product-relations-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/managing-product-relations.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/managing-product-relations.md deleted file mode 100644 index 97007ff3a8b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/managing-product-relations.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Managing Product Relations -description: Use these procedures to view, update, activate or deactivate, and/or delete a product relation in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-relations -originalArticleId: 0a955ec5-4180-4859-9433-7e120f600268 -redirect_from: - - /v1/docs/managing-product-relations - - /v1/docs/en/managing-product-relations -related: - - title: Product Relations Feature Overview - link: docs/scos/user/features/page.version/product-relations-feature-overview.html - - title: Creating Product Relations - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-relations/creating-product-relations.html ---- - -This topic describes the managing actions that you can perform with the product options. -*** -To start managing product options, navigate to the **Products > Product Options** section. -*** -## Editing a Product Relation -**To edit a product relation:** - -1. On the **Product relations** page, select **Edit** in the _Actions_ column for the relation you want to edit. -2. On the **Edit Product Relation** page > **Relation type** tab, you can only update the relation type for the abstract product. -3. On the **Assign Products** tab, you can update the **Assign related products** section by deleting, adding, or updating the rules and group of rules. -4. Once done, click **Save**. - -## Activating, Deactivating and Deleting Product Relations -**To activate, deactivate, or delete a product relation:** -1. On the **Product relations** page, find a specific relation. -2. In the _Actions_ column, select one of the following: - 1. **Activate** to activate the relation. Once selected the Status is changed to _Active_. - 2. **Deactivate** to deactivate the product relation. Once selected the Status is changed to _Inactive_. - 3. **Delete** to delete the product relation. Once selected, the relation is deleted from the system. - -## Viewing a Product Relation -There are 2 places where you can view the product relation: -* In the Back Office -* In the online store - -**To view a product relation in the Back Office:** -1. On the **Product Relations** page, click **View** in the _Actions_ column for a specific product relation. -2. On the View Product Relation page that opens, you can see the following details: - * **General Information:** if this relation is in Active state, what is the relation type, what is the SKU and name of the abstract product for which the relation is created. The preview image is also available. - * **Related products:** number, SKU, name, price, category and the status of the abstract product(s) that is defined to be a similar one. - -**To view a product relation in the online store:** -1. On the **Product Relations** page, click **View in Shop** in the _Actions_ column for a specific product relation. - You are redirected to the abstract product PDP. -2. On the PDP of an abstract product, scroll down to the Similar products section to see what products are assigned to it as "similars." -![Product relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Relations/Managing+Product+Relations/product-relations.png) - -*** -**Tips and tricks** -When you select the **View in Shop** option, keep the following in mind: -* No matter what relation type is, you will be redirected to the abstract PDP page. So if the relation type is upselling, you will not be able to see the **Similar products** section until you add the product to cart and actually navigate to that cart. -* The relation you want to view in the online store must be active. If inactive, you will be redirected to the PDP, but there will be no **Similar products** section for the abstract product. The same applies to upselling. -*** -**What's next?** -To learn about the attributes that you select and enter while managing product relations, see [Product Relations: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/references/product-relations-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/product-relations.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/product-relations.md deleted file mode 100644 index d4b66f8101d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/product-relations.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Product Relations -description: This section can be used to define and manage product relations, set types of relations and assign related products in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-relations-management -originalArticleId: 13e5b35f-b9ad-4c9d-8083-5ec6c035a032 -redirect_from: - - /v1/docs/product-relations-management - - /v1/docs/en/product-relations-management -related: - - title: Product Relations Feature Overview - link: docs/scos/user/features/page.version/product-relations-feature-overview.html ---- - -Product relations help shop owners to promote the related goods as well as to point the customers' attention to the goods that they may also want to see. -Product relations are built on the abstract product and not the concrete products. One abstract product can have from one to many product relations. Once you define a product to which a relation is added, you need to also set a specific set of rules, or even a group, under which the relation is going to be built. Keep in mind that this is a one-way relation, meaning that only the product that you have defined will have the Similar Products section on its PDP (product details page) or in the cart, depending on the relation type. But the related product(s) that you assign to it will not get the same view unless you perform the same procedure for each individual item. -{% info_block infoBox "Info" %} -You can choose to either use Spryker's condition rule builder to manually define relations or import the information from an external source. -{% endinfo_block %} - -Product relations are built on a base of abstract products, not concrete products. -To summarize, you can: -* Type: **Upselling** - Display one to many similar products in the cart. -* Type: **Related products** - Display one to many similar products on the Product Details Page. -*** -**What's next?** - -* To know how you create the product relation, see [Creating a Product Relation](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/creating-product-relations.html). -* To know the product relations are managed, see [Managing Product Relations](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/managing-product-relations.html). -* To know more about the attributes that you select and enter while creating or managing a product relation and see some examples of how the product relations look in the online store, see [Product Relations: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/references/product-relations-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/references/reference-information-product-relations.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/references/reference-information-product-relations.md deleted file mode 100644 index 53d863fb87d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/references/reference-information-product-relations.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Reference information - Product Relations -description: This section provides reference information for the values you enter when creating, updating, or viewing product relations in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-relations-reference-information -originalArticleId: 06c695ae-45fc-43d3-a915-217e6b32ba6e -redirect_from: - - /v1/docs/product-relations-reference-information - - /v1/docs/en/product-relations-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/product-relations/references/product-relations-reference-information.html ---- - -This topic describes the attributes you select and enter while creating or managing product relations. -*** -## Product relations page -On the **Product relations** page, the following information is presented in a tabled view for each product relation: - -* Product relation order number -* Abstract product SKU and name -* Relation type (either up-selling or related-products) -* The number of products assigned to this product relation -* The status of the product relation (either Active or Inactive) -* The actions that you can perform fora specific product relation (View, View in Shop, Edit, Activate/Deactivate, Delete) - -By default, the table is sorted by the order number column. You can sort the table by any of the available columns, except for the _Actions_ column. - -## Create New Product Relation page -The following table describes the attributes that you select and enter while creating a new product relation. - -| Attribute | Description | -| --- | --- | -| **Update regularly:** | A checkbox that, once selected, the product relation will be updated automatically on a regular basis according to the relation's conditions.| -| **Relation type** | A drop-down list that allows you to select the type of product relation that needs to be created - Related products, or Upselling. This defines where the similar products section is going to be displayed.| -| **Select product** | A table where all products available for selection are listed.| -| **Assign related products** | A set of rules under which the products will be included in a similar section. The query contains the following parameters: _attribute_ + _operator_ + _value_.| - -## Assigning Related Product Rules, Groups, and Types -The rules, as well as the group of rules, are used in order to specify the specific conditions under which this or that similar product should appear on the **Abstract Product** page, or in the cart. - -Let's say you have a _Pen_ as an abstract product, and you need another abstract product _Pencil_ to be displayed as a similar product on the _Pen_ product details page. - -For this specific case, you will specify **Related products** as a relation type. As a rule, you can select from a wide range of abstract product attributes to specify, like SKU, category, size, and so on. You can also specify if the attribute you select is equal, greater, less (or any other value from the list) than a defined value: -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Relations/Product+Relations%3A+Reference+Information/product-relations-reference.png) - -Or you can set the _Pencil_ abstract product to appear as a similar product for a _Pen_ in the cart (once the _Pen_ is actually added to the cart). For that, you will select Upselling as a Relation type and set the appropriate rule. - -But if you have a specific requirement to display similar products for _Pen_ only if the SKU of a similar product is equal to some value and the brand is equal to a specific value, you will create a Group of rules: -![Group of rules](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Relations/Product+Relations%3A+Reference+Information/group-of-rules.png) - -So the place where a similar product will appear is defined by the relation type value. While a similar product itself is defined by rules or group of rules. - -**Related Products Relation type:** -![Related products relation type](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Relations/Product+Relations%3A+Reference+Information/related-products-in-product-relation.gif) - -**Upselling Relation Type** -![Upselling relation type](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Relations/Product+Relations%3A+Reference+Information/upselling-relation-type.gif) diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/creating-product-sets.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/creating-product-sets.md deleted file mode 100644 index 286463a67d2..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/creating-product-sets.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Creating Product Sets -description: Use the procedure to create a product set with the entered required values in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/creating-a-product-set -originalArticleId: 076a9407-d415-4f4b-b02f-33a337584f90 -redirect_from: - - /v1/docs/creating-a-product-set - - /v1/docs/en/creating-a-product-set -related: - - title: Product Sets- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-sets/references/product-sets-reference-information.html - - title: Product Sets feature overview - link: docs/scos/user/features/page.version/product-sets-feature-overview.html ---- - -This article describes the procedure that you need to perform in order to create a product set. -*** - -To start working with product sets, navigate to the **Products > Product Sets** section. -*** - -You create a product set to improve the customer's shopping experience. You collect similar products into a logical chunk that can be bought by a single click. Let's say you have a _Pen_. The logically connected items to this product can be a _Pencil_, a _Notebook_, and _Sticky Notes_. You can collect these products under a set named _Basic office supplies_. Instead of searching for each specific items, your customer will add this set to cart. -*** - -**To create a product set:** -1. In the top-right corner of the **Product Sets** page, click **Create Product Set**. - On the **Create Product Set** tab, you see four tabs: **General**, **Products**, **SEO**, and **Images**. -2. On the **General** tab that is used to provide the general information about your product set, like name, URL, and description, do the following: - 1. Fill in the desired name of your new Product Set. - 2. Give your Product Set a URL slug. Do not leave spaces in this tag; instead, any multi-word URL fill in the spaces with a dash or underscore. - 3. **Optional:** Enter a description for your Product Set. This can be anything you want that identifies the _what_ or _why_ of your Product Set. - If you have multiple languages, you will be required to fill in the same information in all languages. - 4. At the bottom of the **General** tab, you will find Product Set Key, Weight and a checkbox for Active. Enter the values for the attributes. To know more about these attributes, see [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html). -3. Select **Next** to proceed to the **Products** tab, or just click on it. - The **Product** tab is where you will select which products should be included in your product set. -4. To add products, simply select the checkbox next to your desired products in the **Selected** column. You can use the available search tool on the top right of the **Select Products to assign** tab on this page. You can select as many products as needed — there is no limit. - {% info_block errorBox "Important" %} - - Any Product Set requires a minimum of two Products. - - {% endinfo_block %} - -5. Select **Next** to proceed to the **SEO** tab, or just click on it. - This tab is used to add a piece of friendly SEO information for your product set to improve the search. -6. On the **SEO** tab, enter the SEO information for your product set. See [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html) to know more about the SEO attributes. Fill in all this information for any languages your store requires. None of the SEO descriptions or title will be shown in the online store. -7. Select the **Next** to proceed to the **Images** tab, or just click on it. -8. In the **Images** tab, click **Add image set**. -9. Enter the name of your image set and add the URLs to the images. For more information about the attributes you enter, see [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html). You can select as many images as you would like in your image set by selecting **Add Image**. - Following the same procedure, choose images particular to your different online stores. - {% info_block infoBox "Info" %} - - If you do not specify different images for your different stores, the system will use the photos displayed in the **Default** drop-down. - - {% endinfo_block %} - -10. Once you are satisfied with the setup, click **Submit**. -*** - -**Activating a Product Set** - -If you did not select the Active checkbox on in the General tab, your product set will be inactive. -To activate it, click **Activate** on the **View Product Set** page, or select **Activate** in the _Actions_ column of the **Product Sets** page. - -*** - -**What's next?** - -* To know how the product sets are managed, see [Managing Product Sets](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/managing-product-sets.html). -* To know more about the attributes that you select and enter while creating a product set, as well as to see some examples of product sets, see [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/managing-product-sets.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/managing-product-sets.md deleted file mode 100644 index bf631324f69..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/managing-product-sets.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Managing Product Sets -description: Use these procedures to view, update or change the order of product sets, as well as activate/deactivate and/or delete them in the Back Office. -last_updated: Jan 15, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-product-sets -originalArticleId: 2ff88c7f-c157-40fb-b81c-9e6863d7d46b -redirect_from: - - /v1/docs/managing-product-sets - - /v1/docs/en/managing-product-sets -related: - - title: Product Sets- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-sets/references/product-sets-reference-information.html - - title: Product Sets feature overview - link: docs/scos/user/features/page.version/product-sets-feature-overview.html - - title: Creating Product Sets - link: docs/scos/user/back-office-user-guides/page.version/merchandising/product-sets/creating-product-sets.html ---- - -This article describes the managing actions that you can perform with a product set. -*** - -To start managing product sets, navigate to the **Products > Product Sets** section. -*** - -## Editing a Product Set - -To edit a product set: -1. In the _Actions_ column of the **Product Sets** table, click **Edit** for the product set you want to update. -2. On the **Edit Product Set** page, update the needed attributes. The procedure is very similar to the procedure of creating a product set (see [Creating a Product Set](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/creating-product-sets.html) for more details). The only difference is that in the **Products** tab, in addition to the **Select Products to assign** table, you will see the **Products in this Set** table at the bottom of the page. In this table you can: - 1. Clear the checkbox in the _Selected_ column to remove a specific product from the set. - 2. Define the position of the products in the set by putting the appropriate numbers to the _Position_ column. The product that has 0 in the _Position_ column goes first. - ![Editing a product set](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Sets/Managing+Product+Sets/editing-product-set.png) - - {% info_block infoBox "Info" %} - - The attributes you see are described in the [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html). - - {% endinfo_block %} - -3. Once done, click **Submit**. -*** - -**Tips and tricks** - -On this page, you can click **View** in the top right corner of the page and switch to the **View Product Set** page. -*** - -## Reordering Product Sets - -The weight defines the order of the product sets displayed in the Product Sets section. - -If you want to reorder the product sets, you: -1. Click **Reorder Product Sets** in the top right corner of the **Product Sets** page. -2. On the **Reorder Product Sets** page, define the order by putting the appropriate numbers in the _Weight_ column. Product Sets with higher numbers listed first. - - ![Reordering product sets](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Sets/Managing+Product+Sets/reorder-product-sets.png) - -3. Once done, click **Submit**. -*** - -## Viewing a Product Set - -To view a product set: -1. In the _Actions_ column of the **Product Sets** table, click **View** for the product set you want to view. -2. On this page, you can: - 1. Switch to the **Edit Product Set** page by clicking **Edit** in the top right corner. - 2. Deactivate a product set by clicking **Deactivate** in the top right corner. - 3. Open the **View Product Abstract** page of a specific product included in the set by clicking the hyperlinked product name in the _Product details_ column of the **Products** table. -*** - -## Activating/Deactivating a Product Set - -To activate/deactivate a product set: -1. In the _Actions_ column of the Product Sets table, click **Deactivate** for a specific product set. - **Or** -2. Navigate to the **View Product Set** table and click **Deactivate** in the top right corner. -*** - -## Deleting a Product Set - -**To delete a product set**, click **Delete** in the _Actions_ column of the **Product Sets** page. - -This will not delete the products included in this set. Those products will continue existing in the system, and customers will be able to buy them. Only the logical connection between the products will be erased, and the product set will not be displayed for your customers. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/product-sets.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/product-sets.md deleted file mode 100644 index 49ea3cc0f78..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/product-sets.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Product Sets -description: This section is used if you want to create or update s product set based on specific relations, as well as activate or deactivate them in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-sets -originalArticleId: 14a73a3c-ea5b-4473-bbe5-0cab2a0741c1 -redirect_from: - - /v1/docs/product-sets - - /v1/docs/en/product-sets -related: - - title: Product Sets feature overview - link: docs/scos/user/features/page.version/product-sets-feature-overview.html ---- - -Product Sets let customers shop for special sets of products that can be manually curated based on any characteristic of the products you wish. -Multiple products can be offered as a set so that the customer can add them to cart with a single click. Each set has its own URL and all sets can be shown on a separate section in the catalog. - -* Dedicated catalog for product sets with adjustable order of the sets by the weight parameter -* Product set page with a variant selector (for products with multiple variants), SEO metadata, and images per set -* Place product sets in CMS placeholders - -*** -**What's next?** - -* To know why and how the product sets are created, see [Creating a Product Set](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/creating-product-sets.html). -* To know how the product sets are managed, see [Managing Product Sets](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/managing-product-sets.html). -* To learn the attributes that you see, enter, and select while creating or managing product sets, see [Product Sets: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-sets/references/product-sets-reference-information.html). diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/references/reference-information-product-sets.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/references/reference-information-product-sets.md deleted file mode 100644 index 04c8a4ab434..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/references/reference-information-product-sets.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Reference information - Product Sets -description: This guide describes the values you enter when creating or updating product sets in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/product-sets-reference-information -originalArticleId: c29cacfc-18d7-47f3-a53e-68ce31c488ff -redirect_from: - - /v1/docs/product-sets-reference-information - - /v1/docs/en/product-sets-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/product-sets/references/product-sets-reference-information.html ---- - -This article describes the attributes that you select and enter while creating or managing product sets. -*** -## Product Sets page - -On the Product Sets page, you see a table with all product sets available in the system. -For each product set, the following information is presented: - -* The autogenerated product set ID -* Product set name -* The number of products included in the product set -* The weight of the product set -* Product set status (either Active or Inactive) -* The actions that you can do on a product set (View, Edit, Deactivate, Delete) -*** - -## Create/Edit Product Set page - -The following tables describe the attributes that you enter and select while creating or managing a product set. - -**General tab** - -| Attribute |Description | -| --- | --- | -| **Name** | The name of your product set. | -| **Url** | The URL slug for your product set. Do not leave spaces in this tag. Instead, any multi-word URL fill in the spaces with a dash or underscore.| -| **Description** | An eye-catching description for your product set. | -| **Product Set Key** |This attribute is needed when you want to define a specific page to display the product set. It is important to note when creating your Product Set Key to not include spaces. Please use an underscore or dash instead of spaces otherwise the content widget cannot read it. | -| **Weight** | The number that represents the importance of your product set. Product sets with a higher weight will be shown first or on top.| -| **Active** | A checkbox that defines if the Product Set is displayed anywhere in the online store. | - -**SEO tab** - -| Attribute |Description | -| --- | --- | -| **Title** | A SEO-friendly title for the product set. | -| **Keywords**|Any SEO relevant keywords for an added boost in search ranking. | -| **Description** |A SEO-friendly product set description. | -**Images tab** - -| Attribute | Description | -| --- | --- | -| **Image Set Name** |A name of your image set. No spaces are allowed, please use an underscore or dash. | -| **Small Image URL**
**Large Image URL** | Allows adding images via a URL. Please make sure the image you are adding is available from a public URL. This means any images in a private Dropbox or Google folder will not work. | -| **Sort Order**|If you add several images to an active image set, specify the order in which they are to be shown in the front end and back end using Sort Order fields. The order of images is defined by the order of entered numbers where the image set with sort order "0" is the first to be shown. | - -## Product Set Example - -This is how the product set looks like in the online store: -![Product set example](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Sets/Product+Sets%3A+Reference+Information/product-set-example.png) - -The Back Office set up for this product set looks the following way: -![Product set in the Back Office](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Sets/Product+Sets%3A+Reference+Information/product-set-in-back-office.png) - -![Product set in the Back Office](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Products/Products/Product+Sets/Product+Sets%3A+Reference+Information/product-set-example-in-back-office.png) diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-category-filters.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-category-filters.md deleted file mode 100644 index f7e67400278..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-category-filters.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Managing Category Filters -description: Use the procedure to arrange items into categories, manage category filters by adding, reordering, or removing them in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-category-filters -originalArticleId: cc43514b-4c74-4a90-965e-2371483a7217 -redirect_from: - - /v1/docs/managing-category-filters - - /v1/docs/en/managing-category-filters -related: - - title: Search Preferences Types - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/references/search-preferences-types.html - - title: Managing Filter Preferences - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/managing-filter-preferences.html - - title: Managing Search Preferences - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/managing-search-preferences.html - - title: Reference- Search Preferences - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/references/reference-search-preferences.html ---- - -This topic describes the procedure of setting up category filters. -*** - -To start setting up the category filters, navigate to the **Search and Filters > Category Filters** section. -*** - -**Prerequisites** - -To set up a category filter, you need to have a filter preference setup in the **Search and Filters > Filter Preferences** section. -{% info_block errorBox "Note" %} - -Before adding a filter to the category, make sure that the product (with an attribute with a specific attribute key for which a filter preference exists is assigned to this specific category. Otherwise, the filter will not bring any results once selected in the online store. - -{% endinfo_block %} - -*** - -On the **Overview of Category Filters** page, you see the **Root nodes list**, **Category tree**, and -**Category Filters for** sections. You select the root in the **Root nodes list** by clicking on it and the **Category tree** section is updated to show the categories in the node. - -To manage the category filters, you click on a specific category and the **Category Filters for** section appears displaying the active filters that are already assigned to a category and the **Add filter** field. -*** - -## Adding a Filter to a Category - -This procedure will show you how to customize filter behavior by adding the filters to category. - -**To add a filter to the category:** -1. Select the root category from the Root nodes list table. - The Category tree will be populated by the nodes nested under the selected root category. -2. Choose a category for which you would like to overwrite the default global settings. - To find a specific category, start entering its name in the **Search** field and the results will be automatically highlighted in the category tree. -3. After selecting a category, the **Category Filters for [Category name]** frame opens to show the current configuration. -![Adding a filter to a category](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/add-filter-to-category.png) - - Categories in the category tree view that have manually defined filter settings are marked with a pencil icon next to their name. -![Category tree view](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/category-tree-view.png) - -4. Start typing the name of the existing filter in the **Add filter** field. As you type, the autocompleted drop-down will appear so you can select a filter there. -5. After selecting the filter, click **Add**. The filter will appear in the **Active filters** list. -6. Once done, click **Save**. -*** - -**Tips and tricks** - -Clicking **Reset to global settings** in **Category Filters for [Category name]** will remove the customized filter settings. -![Reset to global settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/reset-to-global-settings.png) - -*** -## Reordering Filters - -**To reorder filters**, just drag and drop them to the necessary place. -![Reordering filters](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/reordering-filters.gif) - -*** -## Removing a Filter - -It is possible to remove either all filters from the active filters at once or just single filters. -1. **To remove all filters** > Click **Remove all**. - ![Removing a filter](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/removing-filter.png) -2. **To remove single filters** > Click a **basket** icon at the filter you want to remove. Once done, click **Save**. - The removed filters will be moved to the **Inactive filters** list. -![Removing a single filter](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/remove-single-filter.gif) - -*** - -**Tips and tricks** - -To add the removed filters again, click on the **green plus sign** at the filters you want to add back from Inactive filters. -![Add a removed filter](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Managing+Category+Filters/add-removed-filter.gif) diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-filter-preferences.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-filter-preferences.md deleted file mode 100644 index d18e567e42e..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-filter-preferences.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Managing Filter Preferences -description: Use the procedure to reorder filters, specify a filter type and add translations to the filter name in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-filter-preferences -originalArticleId: 0dda1c26-b1bf-4983-9e3a-66148fb71cda -redirect_from: - - /v1/docs/managing-filter-preferences - - /v1/docs/en/managing-filter-preferences -related: - - title: Search Preferences Types - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/references/search-preferences-types.html - - title: Managing Search Preferences - link: docs/scos/user/back-office-user-guides/page.version/merchandising/search-and-filters/managing-search-preferences.html ---- - -This article describes the procedures of creating and managing filter preferences. -*** -To start working with the filter preferences, navigate to the **Search and Filters > Filter Preferences** section. -*** -**Prerequisites** -Please make sure that the attribute you are going to create a filter preference for is created and assigned to a product. -*** -## Creating a Filter Preference -**To create a filter preference:** -1. In the top right corner of the **Filter preferences** page, click **Create filter**. -2. On the **Create filter** page, do the following: - 1. Enter the attribute key to the respective field. The attribute key can be found in **Product Attributes > Attributes Key** of a specific attribute. - 2. In the **Filter Type** drop-down, select either multi-select or range. - 3. Enter the translations for all locations set up in your store. -3. Click **Save**. -*** -The filter is created by it will not be available for use unless you synchronize the filter preferences. - -To do the synchronization, click **Synchronize filter preference** in the top right corner of the **Filter Preferences** page. -*** -## Editing Filter Preferences -To edit a filter preference: -1. In the _Actions_ column of the **Filter preferences** table, click **Edit** for the filter you need to update. -2. Update the needed values. - **Attribute key** is greyed out and is not available for modifications. - 3. Once done, click **Save**. - 4. On the **View filter** page, click **List of filters** in the top right corner. - 5. On the **Filter preferences** page, click **Synchronize filter preferences**. -*** -## Viewing and Deleting Filter Preferences - **To view a filter**, click **View** in the _Actions_ column for a specific filter. - *** -**To delete a filter:** - 1. Click **Delete** in the _Actions_ column for a specific filter. - **OR** -2. Click **Delete** in the top right corner of the page while viewing a filter. - -*** -**What's next?** -Once the filter preference is created, you can use it in the **Category Filters** section. That is done to enable specific category(s) to which the product with this attribute is assigned, to be filtered based on this specific filter. - -See [Managing Category Filters](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-category-filters.html) to know how to set up the category filters. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-search-preferences.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-search-preferences.md deleted file mode 100644 index b229850f775..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/managing-search-preferences.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Managing Search Preferences -description: Use the procedure to customize search by product attributes and specify search preference types in the online shop. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-search-preferences -originalArticleId: ccf5849a-ba9e-43a1-a364-e3082511fa76 -redirect_from: - - /v1/docs/managing-search-preferences - - /v1/docs/en/managing-search-preferences ---- - -This topic describes how you can add new attributes to search and manage the existing search preferences. -*** -To start working with search preferences, navigate to the **Search and Filters > Search Preferences** section. -*** -**Prerequisites** -When adding a search preference, the **Attribute Key** value is taken from the **Product Attributes > Specific Attribute** entity. Make sure that you are populating the field with an existing attribute key of an attribute assigned to a product; otherwise, the search result will be blank in the online store. -*** -## Creating a New Attribute to Search - -To create a new attribute to search, do the following: -1. Click **Add attribute to search** in the top right corner of the **Search Preferences** page. -2. On the **Add attribute to search** page, enter the attribute key and (optionally) specify "Yes" or "No" for search preference types. - See [Search Preferences Types](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/references/search-preferences-types.html) in the **References** section to know more about the search types. -3. Click **Save**. -4. On the **Search Preferences** page, click **Synchronize search preferences** for your changes to take effect. - -This will create a new non-super attribute and register it in the system, so your customers will be able to find products with this attribute in the online store if you enable search preference types for it. -*** -## Editing Search Preferences -To edit a search preference: -1. Find an attribute you want to change the search preferences for in the **Search Preferences** table. -2. Click **Edit** in the _Actions_ column of the attribute. -3. On the **Edit search preferences** page, you can define how the attribute will behave for search by specifying _Yes_ or _No_ for the **Full text**, **Full text boosted**, **Suggestion terms**, or **Completion terms** fields. See [Search Preferences Types](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/references/search-preferences-types.html) in the **References** section to know more about the search types. -4. Once done, click **Save**. -5. On the **Search Preferences** page, click **Synchronize search preferences** for your changes to take effect. -*** -## Deactivating Search Preferences - -When you have some or all search preferences activated, you can deactivate individual search preferences, or deactivate them all in bulk. - -**To deactivate individual search preferences** of an attribute, do the following: -1. Click **Edit** in the _Actions_ column for a respective attribute. -2. On the **Edit search preferences** page, set a specific search preference type to **No**. - -**To deactivate all search preferences** for specific attributes at once, click **Deactivate all** in the _Actions_ column of an attribute for which you want to disable all search preferences. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences-types.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences-types.md deleted file mode 100644 index bfbbef0ab7d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences-types.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Reference information - Search Preferences Types -description: This guide provides additional information about search preferences types- full text, full text boosted, suggestion, and completion terms. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-preferences-types -originalArticleId: 4bc2f755-e434-4369-9253-bf007bfd7d9e -redirect_from: - - /v1/docs/search-preferences-types - - /v1/docs/en/search-preferences-types - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/search-preferences-types.html ---- - -There is a set of search preferences' types that you can specify for your attribute key. All of those types possess different features. In this article, you can find out the detailed information about the search preferences. -*** -## Full Text - -Full text implies that, if set to **Yes**, the attributes will be included for full-text search. It means that a user will be able to find products when they search for a text which is present in the value of a searchable attribute. -*** -**Example** -The _focus_adjustment_ attribute key has the following values: -* Auto -* Auto/Manual - -If **Include for full text** is set to Yes for this attribute, then, when typing any of the values of this attribute in the **Search** field of the online store, all words will be searched, and the full phrase will have a higher weight than separate words from it. Meaning, if **Auto/Manual** is typed, the results having **Auto/Manual** value for the Focus Adjustment attribute will be displayed first in the search results flyout: -![Full text](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Search+Preferences+Types/full-text.png) -*** -## Full text boosted - -Full text boosted implies that, if set to **Yes**, the attributes will be included for full text boosted. It means that the attribute values of these specific attributes will receive a higher relevance than other attributes having the same values. -*** -**Example** -The _alarm_clock_ and _waterproof_ attributes both have **Yes** and **No** attribute values, but: -* _alarm_clock_ has the **Include for full text search** value set to **Yes** -* _waterproof_ has **Include for full text boosted** set to **Yes** - -In this case, when typing **Yes** in the **Search** field on the web-shop, the products that have the **Waterproof** attributes with the "**yes**" value will appear higher in the list of results than products with Alarm clock attributes with the same value. -![Full text boosted](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Search+Preferences+Types/full-text-boosted-attribute-values.png) - -{% info_block infoBox "Info" %} - -If several attributes having the same values have been included for full text boosted, they all will appear in the search results. Their order is provided by Elasticsearch and can be further improved by customizing its analyzers. - -{% endinfo_block %} -*** -## Suggestion terms - -Suggestion terms implies that, if set to **Yes**, the attributes will be included for a suggestion. This search preferences type implements the "_did you mean_" search functionality which provides alternative suggestions when a user may have misspelled a search term. -*** -**Example** -The _storage_media_ attribute has the **SSD** and **Flash** values. If **Include for suggestion** has been set to **Yes**, then when a user types _flashs_ in the **Search** field, the search results page will contain a box with suggested search term "_flash_". -![Include for suggestion](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Search+Preferences+Types/include-for-suggestion.png) - -And vise versa, if you don't include an attribute for the suggestion, when a user searches by its values and misspells them, there will be no result for the user's search. -![Do not include for suggestion](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Search+Preferences+Types/do-not-include-for-suggestion.png) -*** -## Completion terms - -Completion terms implies that, if set to **Yes**, the attributes will be included for completion. It means that typing a word in the search field brings up predictions, which makes it easy to finish entering the search form. -*** -**Example** -The _storage_media_ attribute has **SSD** and **Flash** values. If **Include for completion** has been set to **Yes**, then when user types "_fla_" in the search field, the search term will be autocompleted with "_sh_," and there will be a list of suggested terms in the search results flyout: -![Completion terms](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/Search+Preferences+Types/completion-terms.png){height="200" width="500"} -*** -**Tips and tricks** - -When you first decide on activating search preference types for attributes, keep in mind, that enabling all of them is **highly unrecommended**, as this will result in a huge list of search results. -Instead of this, you might want to consider enabling search preference types for only those attributes that you really want your users to find while searching, or the attributes that refer to products you want to appear in the search results above all. -{% info_block infoBox "Example" %} - -There is a new device in your shop which is popular on the market for its video recording properties. You know that users are very interested in a device with such property and they might search for products by it. - -Suppose, you have created the _video_recording_ attribute in your shop with the values **Geotaging** and **Autofocus**. - -However, suppose there are other attributes having the same values. - -Since you want to advertise the specific new device more, it would make sense for you to disable, or at least to restrict the number of active search preference types for all other attributes with **Geotagging** and **Autofocus** values and enable an individual (or even all search preference types for the _video_recording_. - -This way you will make the _video_recording_ product attribute searchable and therefore the products with this attribute will stand out in the search results when your customers search by attributes. - -{% endinfo_block %} - -Also, it does not make much sense to activate search preferences for attributes with the **numeric** and **Yes/No** values. As numbers may occur not only in attributes but in product SKUs, names and descriptions (which are actually ranked higher than attributes in search results), therefore the probability that a user will find what they were looking for is low, but the list of search results will be huge, and the search term will be present in multiple places. -Besides, it is very unlikely that users will be searching for an attribute with a numeric value or the Yes/No values. diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences.md deleted file mode 100644 index 420d210016f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-information-search-preferences.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Reference information - Search Preferences -description: This guide provides an additional procedure to synchronize search preferences in the Back Office. -last_updated: Oct 28, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/reference-search-preferences -originalArticleId: 598a0944-bd7d-4abf-bda0-ccb212cd5147 -redirect_from: - - /v1/docs/reference-search-preferences - - /v1/docs/en/reference-search-preferences - - /docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/references/reference-search-preferences.html ---- - -## Synchronize Search Preferences -After adding/updating all necessary attributes, you need to apply the changes by clicking **Synchronize search preferences**. This triggers an action that searches for all products that have those attributes and were modified since the last synchronization and touches them. This means that next time, the search collector execution will update the necessary products, so they can be found by performing a full text search. - - {% info_block infoBox "Synchronization" %} -Depending on the size of your database, the synchronization can be slow sometimes. Make sure that you don't trigger it often if it's not necessary. -{% endinfo_block %} - -To have your search collector collect all the dynamic product attributes, make sure you also followed the steps described in the Dynamic product attribute mapping section. - -## Current Constraints -Currently, the feature has the following functional constraints which are going to be resolved in the future. - -* search preference attributes are shared across all the stores in a project -* you cannot define a search preference for a single store diff --git a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/search-and-filters.md b/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/search-and-filters.md deleted file mode 100644 index 3b427a5e8ae..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/merchandising/search-and-filters/search-and-filters.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Search and Filters -description: The article introduces an overview of Search and Filter that enables shop owners to handle and customize search and filtering preferences in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/search-and-filters -originalArticleId: 33bd0196-0d7a-4fd1-9256-3356da1050d2 -redirect_from: - - /v1/docs/search-and-filters - - /v1/docs/en/search-and-filters ---- - -The **Search and Filters** section in the Back Office is designed to build a successful user journey in finding the right product to buy. -The **Search and Filter** section is mostly used by Product Catalog Managers. -**Standardized flow of actions for a Product Catalog Manager** -![Search and Filter - Product Catalog Manager](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Search+and+Filters/search-and-filter-section.png) - -{% info_block infoBox %} -This is how a Product Catalog Manager interacts with the other teams to create the search and filter preferences. -{% endinfo_block %} - -An essential part of organizing products in a store is to arrange items into categories. Category Filters allow you to refine and customize the way filters are listed when you search by category. With Category Filters, you can improve and optimize how visitors to the store locate products. - -When a category holds a relatively small amount of products it is easy to simply scroll to locate an item. However, when the volume of products per category grows to be a long list spanning several pages, it is unreasonable to expect that a customer would stay and look at hundreds of items. - -Customizing category filters is how you use your unique knowledge of your products and consumer behavior to influence and improve your customer's user experience by: -* Making products easier to locate -* Selectively removing unnecessary filters from categories -* Prioritizing the display of filters for specific categories -*** -**What's next?** -There is no defined flow for working with search and filters. The most important to remember that if you create a new product attribute for a product and want your category to be filtered by it, and allow searching by this element, you should: -1. Create filter preferences based on the product attribute key. -2. Update the folder order, if needed. -3. Update the category filters. -4. Set up the search preference. - -See the following articles to know more about the search and filter preferences: -* [Managing Filter Preferences](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-filter-preferences.html) -* [Managing Category Filters](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-category-filters.html) -* [Managing Search Preferences](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-search-preferences.html) -* [Search Preferences Types](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/references/search-preferences-types.html) diff --git a/docs/scos/user/back-office-user-guides/201811.0/sales/order-matrix/viewing-the-order-matrix.md b/docs/scos/user/back-office-user-guides/201811.0/sales/order-matrix/viewing-the-order-matrix.md deleted file mode 100644 index 294be1f806f..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/sales/order-matrix/viewing-the-order-matrix.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing the Order Matrix -description: The guide provides reference information you see when working with the ordered items in the Back Office. -last_updated: Oct 22, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/order-matrix-reference-information -originalArticleId: 8e16df9b-4925-4041-a642-677df3894eb5 -redirect_from: - - /v1/docs/order-matrix-reference-information - - /v1/docs/en/order-matrix-reference-information -related: - - title: OMS (Order Management System) Matrix - link: docs/scos/user/features/page.version/order-management-feature-overview/oms-order-management-system-matrix.html ---- - -The Order Matrix page displays the information about ordered items. - -When you navigate to the **Overview of Order Matrix** page (**Sales > Order Matrix**), you see the following information: -* The statuses of the ordered items -* The number of items with a specific status -![Order Matrix](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Sales/Order+Matrix/order+matrix.png) - -The numbers are hyperlinked. If selected, you will be redirected to the **Overview of Orders** page. The table will display only the order(s) that contains the items with the selected status. - -_For example_, you have five items with the **exported** status. When you click _5_ on the **Overview of Order Matrix** page, you will see the **Overview of Orders** page filtered by orders with the exported items only. diff --git a/docs/scos/user/back-office-user-guides/201811.0/sales/orders/managing-orders.md b/docs/scos/user/back-office-user-guides/201811.0/sales/orders/managing-orders.md deleted file mode 100644 index 542f2718a34..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/sales/orders/managing-orders.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Managing Orders -description: The guide provides instructions on how to manage orders including setting statuses for the order, claiming and commenting on orders in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-orders -originalArticleId: fe82f065-1141-4af1-b02e-6aae3ab10bd2 -redirect_from: - - /v1/docs/managing-orders - - /v1/docs/en/managing-orders -related: - - title: Orders- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/sales/orders/references/orders-reference-information.html - - title: Order Management - link: docs/scos/user/features/page.version/order-management-feature-overview/order-management-feature-overview.html ---- - -When a customer buys something from your online store, the information on their order is automatically transferred to the Orders page. -*** - -This page is designed to manage all orders created by your customers. -*** - -To start managing an order, navigate to the **Sales > Orders** section and click **View** in the _Actions_ column for a specific order. -*** - -You manage the orders by: -* setting specific statuses for the order, or specific items from the order -* commenting on the orders (the comments can be viewed by other Sales team members) -*** - -## Setting Order Statuses - -**To set statuses for all items in the orders:** -1. In the *Order Overview >Trigger all matching states* section, click **pay**, which is the first status in the flow. - This will put the next status in the flow, which is _ship_, to all the items from the order. -3. Continue changing statuses following this procedure. - -**To set statuses for several items in the order shipment:** -1. Scroll down to the **Order Items > Shipment #** section, select the items for which the status needs to be changed by selecting the checkbox on the left of the product image. -2. In the _Trigger all matching states of order inside this shipment_ section, click the status that needs to be assigned to those items. - - -**To set statuses for a specific item in the order:** -In the **Order Items** section, click the status icon in the _Trigger event_ column for a specific shipment item. -*** - -To learn more about the order statuses, see [Orders: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/sales/orders/references/orders-reference-information.html). -*** - -## Claiming Orders - -You can create a reclamation for individual orders on the Overview of Orders page. Creating a reclamation means that the order is flagged as "Reclamation," and the reclamations will not be linked to neither an order status nor to a state machine. There are two reasons for this: first is that this would be different in every project and second is that claims have to be checked on an individual basis and may not influence order item status at all. -*** - -**To create a new reclamation for an order:** -1. On the **Overview of Orders** page, find the order you want to create a reclamation for and click **Claim** in the _Actions_ column. -2. On the **Create Reclamation** page, select either all or individual products for which you want to create the reclamation and click **Create Reclamation**. -The appropriate record is created in the **Reclamations** section. - -{% info_block infoBox %} - -Clicking **Back to Orders** in the top right corner of the page prior to saving the changes will discard all the changes and take you to the **Overview of Orders** page. - -{% endinfo_block %} - -*** - -## Commenting the Orders - -You can leave notes for a specific order by commenting it. -*** -For example, if you want your team members to know that you are responsible for managing a specific order, you can leave a comment about that. - -As another example, the customer may contact you to provide additional details about his order. You can leave the comments you receive in the *Comments* section. -*** - -**To comment the order:** -1. On the **View Order: [Order ID]** page, scroll down to the *Comments* section at the bottom of the page. -2. Enter the comment in the *Message* field. -3. Click **Send Message**. -Your message appears in the *Comments* section. -*** - -**Tips and tricks** - -You can send an email to the customer, review the customer details, and edit the customer addresses. - -**To send an email to your customer:** -On the **Overview of Orders** page, click the hyperlinked customer email in the _Email_ column. - - -**To view or edit the customer details** stored in the **Customers > Customers** section: - -* On the **Overview of Orders** page, click hyperlinked customer name in the *Customer Full Name* column. -* On the **View Order** page, scroll down to the *Customer* section and click the hyperlinked **Order Reference**. - (You are redirected to the **Customers > Customers** section, **View Customer** page). - - -**To edit the Billing address**: -1. On the **View Order** page, scroll down to the **Customer** section. -2. Click **Edit** under the **Billing** address. The **Edit Address for Order** page opens. - ![Edit billing address button](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Sales/Managing+Orders/edit-billing-information.png) - -3. Make the updates and click **Save**. - diff --git a/docs/scos/user/back-office-user-guides/201811.0/sales/orders/references/reference-information-orders.md b/docs/scos/user/back-office-user-guides/201811.0/sales/orders/references/reference-information-orders.md deleted file mode 100644 index 28b8344e35d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/sales/orders/references/reference-information-orders.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Reference information - Orders -description: The guide provides reference information you see when creating, updating and viewing order details in the Back Office. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/orders-reference-information -originalArticleId: 70e65dbc-dc77-4fd4-aeac-c31e1da324cd -redirect_from: - - /v1/docs/orders-reference-information - - /v1/docs/en/orders-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/sales/orders/references/orders-reference-information.html ---- - -This topic contains the reference information that you need to know when managing orders in the **Sales > Orders** section. -*** - -## Orders Page -By default, the last created order goes on top of the table. However, you can sort the table by the order number, order reference, created date, customer emails, or the number of items ordered. - -On the **Orders** page, you see the following: -* Order number, reference, and the creation date -* Customer name and email -* Order state, the grand total of the order, and the number of items ordered -* Actions that you can do on this page - -## Order Statuses -You can set different statuses for your order. The following describes the statuses you can select: - -| Order Status| Description | -| --- | --- | -| **Pay** | Select this status once you receive the payment for the order from your customer. | -| **Ship** | Select this status once the order is shipped.| -| **Stock-update** | Select this status when you update the number of available products of products in the **Products > Availability** section. | -| **Close**| Select this status when your customer has successfully received the ordered items and is satisfied with their quality.| -| **Return** | Select this status if the customer returns you either all or several items from the order. | -|**Refund**|Select this status in case of refund.| - -Statuses flow: -* **Payment pending** - the initial order statuses. -* When you select **Pay**, the status becomes exported. -* When you select **Ship**, the status becomes shipped. -* When you select **Stock-update**, the status becomes delivered. -* When you select **Close**, the status becomes closed. -* In case the customer returns the ordered items: when you select **Return**, the status becomes returned. -* In case of a return, when you select **Refund**, the status becomes refunded. - diff --git a/docs/scos/user/back-office-user-guides/201811.0/sales/refunds/viewing-refunds.md b/docs/scos/user/back-office-user-guides/201811.0/sales/refunds/viewing-refunds.md deleted file mode 100644 index 38d93a1f0d5..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/sales/refunds/viewing-refunds.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Viewing Refunds -description: The article provides reference information about attributes Back Office users see when viewing the list of refunds. -last_updated: Sep 6, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/refunds-reference-information -originalArticleId: 5004abc8-87f2-4088-8e07-00e7fc55e8b6 -redirect_from: - - /v1/docs/refunds-reference-information - - /v1/docs/en/refunds-reference-information ---- - -If a customer changes their mind about an order, you can give him/her a refund for the order. -*** -To view the refunds, navigate to the **Sales > Refunds** section. -*** -This page just displays the information so no actual actions can be done there. -On the **Refunds** page you see the **List of refunds** table that contains the following information: - -| Value |Description | -| --- | --- | -| **Refind Id**| The ID of a specific refund. | -|**Sales Order Id** |The ID of the order that derives from the **Sales > Orders** section. | -| **Refund date** |The date when a specific refund has been created.| -| **Amount** |The amount of money to refund. This amount value derives from Item Total in **Sales > Orders**.| - -**How refunds appear in the Refunds section?** -When a customer receives the items they ordered, they may encounter issues with some or all of them. In this case, a customer contacts the sales department asking them for a refund. A sales department representative navigates to the **Sales > Orders** section and opens the order. They change the status of order item (or all items) to **return** and then to **refund**. Once this is done, an appropriate record appears in the **Refunds** section. diff --git a/docs/scos/user/back-office-user-guides/201811.0/sales/sales.md b/docs/scos/user/back-office-user-guides/201811.0/sales/sales.md deleted file mode 100644 index 776ec7b9e02..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/sales/sales.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Sales -description: The article introduces for shop owners a quick overview of the Sales section, such as Refunds, Orders, Order Matrix, and Reclamations in the Back Office. -last_updated: Feb 11, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/sales-management -originalArticleId: 3dc759cc-a9b4-4edc-889d-a13bbd5321d3 -redirect_from: - - /v1/docs/sales-management - - /v1/docs/en/sales-management -related: - - title: Managing Orders - link: docs/scos/user/back-office-user-guides/page.version/sales/orders/managing-orders.html - - title: Orders- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/sales/orders/references/orders-reference-information.html - - title: Viewing Refunds - link: docs/scos/user/back-office-user-guides/page.version/sales/refunds/viewing-refunds.html - - title: Viewing the Order Matrix - link: docs/scos/user/back-office-user-guides/page.version/sales/order-matrix/viewing-the-order-matrix.html ---- - -The **Sales** section in Back Office is mostly used by the Sales Department. -This section is designed to manage the orders. Understanding how sales orders work is an important part of running a shop, as the entire business depends on how efficiently the orders that customers make in your shop can be managed. This section stores information about all orders made by the customers, the refunds, and reclamations. You can also find the reclamations there. -**Standardized flow of actions for the Sales Department** -![Sales Slice-of-Life](https://cdn.document360.io/9fafa0d5-d76f-40c5-8b02-ab9515d3e879/Images/Documentation/Sales%20Slice-of-Life.png) -{% info_block infoBox %} -This is how the order management is managed by the Sales Department representatives. The flow may also include the agent assist functionality when the order is created on behalf of a customer in the online store. -{% endinfo_block %} - -In this section you see the following: -* Refunds -* Reclamations -* Orders -* Order Matrix - diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-groups.md b/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-groups.md deleted file mode 100644 index eb3806e6a4d..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-groups.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Managing Groups -description: Use the procedures to create, edit a group and assign a role to this group in the Back Office. -last_updated: Feb 13, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-groups -originalArticleId: 01019cd7-5346-460b-ae6a-eb2729ea1ff3 -redirect_from: - - /v1/docs/managing-groups - - /v1/docs/en/managing-groups - - /docs/scos/user/back-office-user-guides/201811.0/users/managing-user-groups/creating-user-groups.html -related: - - title: Roles- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/roles-reference-information.html - - title: User- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/user-reference-information.html - - title: Managing Roles - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-roles.html - - title: Managing Users - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-users.html - - title: User and Rights Management - link: docs/scos/dev/feature-walkthroughs/page.version/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.html ---- - -This topic describes the procedures that you need to perform to create and update groups. -*** -To start working with groups, navigate to the **Users Control > Groups** section. -*** -## Creating a Group - -Now you need to create a group to assign a role to it. - -To create a group: -1. Click **Create Group** in the top right corner of the **Groups** table view page. -2. Enter the name of your group in the **Title** field. -3. In the **Assigned Roles** drop-down menu, select the role to assign to this group and click **Save**. - {% info_block warningBox "Note" %} - - You can select from one to many roles to be assigned. - - {% endinfo_block %} - -This will redirect you to the **Edit Group** page. The page contains the same fields as the **Create Group** page. The only difference is that on the **Edit** page you will see the **Users** section. - -In this section, you can see what users are assigned to this specific group and de-assign them if needed. -*** - -## Editing a Group - -To edit the group: -1. In the **Groups > Actions** column, click **Edit**. -2. On the **Edit Group** page you can: - * Rename the group by changing the value in the **Title** field. - * Assign a new role to a group. - You can also remove the already assigned roles by clicking **X** on the left of the assigned role. -4. Once you finish updating the values, click **Save**. -*** - -To de-assign a user from a group: -1. In the **Groups > Actions** column, click **Edit**. -2. On the **Edit group** page in the **Users** section, click **Delete** in the _Actions_ column. - - {% info_block infoBox %} - - This action will not delete the user itself. It will just delete the association between this specific user and group. - - {% endinfo_block %} - -*** - -**Tips and tricks** - -In case you need to know what roles are assigned to a specific group without initiating the update flow, do the following: -1. On the **Groups** table view page, click the hyperlinked value in the _Roles_ column. - All roles assigned to this group are listed in the **Roles in Group** pop-up that appears. -2. Click **Close** to close the pop-up window. -*** - -**What's next?** - -The preliminary steps are performed so you can proceed and create an actual user record. diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-roles.md b/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-roles.md deleted file mode 100644 index f267b9483b3..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-roles.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Managing Roles -description: Use the procedures to create, update or delete the role, add a rule for the role, and assign the role to a group in the Back Office. -last_updated: Jul 29, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-roles -originalArticleId: a9de7bce-fd4b-4793-93c7-c627b5f135b6 -redirect_from: - - /v1/docs/managing-roles - - /v1/docs/en/managing-roles -related: - - title: Roles- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/roles-reference-information.html - - title: User- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/user-reference-information.html - - title: Managing Groups - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-groups.html - - title: Managing Users - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-users.html ---- - -This topic describes the procedures that you need to perform to create, edit, and delete roles. -*** -To start working with roles, navigate to the **Users Control -> Roles** section. -*** - -## Creating a Role - -To create a role: -1. On the **Role list** table view page, click **Add new Role** in the top right corner. -2. On the **Create new Role** page, enter the name of the role and click **Create**. -This will redirect you to the **Edit Role** page where you define the permissions that this role will possess. -3. In the **Rule** section, enter and select the following and click **Add Rule**: - * Bundle - * Controller - * Action - * Permission - -See [Adding Rules for Roles](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/managing-roles.html#adding-rules-for-roles) for information on how to create rules. -{% info_block warningBox "Note" %} - -You can add from one to many rules to a specific role. Each time you click **Add rule**, the created rule appears in the **Assigned Rules** section. - -{% endinfo_block %} - -You have set up a role to be assigned to a group. -*** - -**Tips and tricks** - -In case you need a specific role to have access to all sections, you can put an asterisk (*) value for a bundle, controller, and action. Add _allow for permission_. This will grant access to everything you see in Back Office and allow to perform any action. -*** - -## Editing a Role - -To edit a role: - -1. In the **Role list > Actions** column, click **Edit** for a specific role. -2. On the **Edit Role** page, you can: - 1. Add more rules to the role. - 2. Delete the already assigned rule by clicking **Delete** in the **Assigned Rules > Actions** column. - -### Adding Rules for Roles - -In the **Roles** section of the **Edit Role** page, you can define what a user can or cannot do in the Admin UI. To restrict a user from accessing a specific action, you need to specify what bundle (module) and controller this action refers to. - -#### Extracting the Bundle, Controller, and Action Values - -Information about bundles, controllers, and actions is contained in tabs in the Back Office, and can be retrieved from links. - -**Example**: -1. Go to **Products > Availability** section and click **View** in **Actions**. -2. Check the link in your browser. It will look somewhat like this: `zed.de.b2b-demo-shop.local/availability-gui/index/view?id-product=152&id-store=1` -where: - -* *availability-gui* is **bundle**, -* *index* is **controller**, -* *view* is **action**. - -The bundle, controller and action values can also be found in the `navigation.xml` file either at -at `/project/config/Zed/navigation.xml` or at ```https://github.com/spryker/[bundle_name]/src/Zed/[bundle_name]/communication/navigation.xml```. -See example of the `navigation.xml` file of the AvailabilityGui module: - -
-navigation.xml - -``` - - - - - - - Availability - availability-gui - index - index - - - - Product Availability - availability-gui - index - view - 0 - - - - - Edit Stock - availability-gui - index - edit - 0 - - - - - - -``` -
- -{% info_block infoBox %} - -Information about modules is available in their readme files. Check the [readme file of the AvailabilityGui](https://github.com/spryker/availability-gui/blob/master/README.md) module for example. - -{% endinfo_block %} - -#### Restricting User Access to Modules and Actions - -You can restrict user access to all or specific modules and their actions. -Keep in mind that user will not be able to perform actions on modules unless you explicitly allow them to. Therefore, if you want to restrict users from accessing particular modules/actions, first give them access to all modules, and then restrict access to specific ones. - -{% info_block warningBox %} - -To allow access to all modules, type * in **Bundle**, **Controller** and **Action** fields, and select _allow_ in the **Permission** field. - -{% endinfo_block %} - -**Example** -Imagine you need to deny adding product attributes for a user. Do the following: -1. First, allow all actions for all modules for the user. For this, in **Rule** section of the **Edit Role** page, put `*` into fields **Bundle**, **Controller** and **Action**, and select _allow_ in the **Permission** field. -2. Go to the page for which you want to restrict access: **Products > Attributes > Create Product Attributes**. - -{% info_block infoBox %} - -From the `zed.de.b2b-demo-shop.local/product-attribute-gui/attribute/create` link, you can already tell that:
-- _product-attribute-gui_ is bundle, -- _attriubte_ is controller, -- _create_ is action. -You can verify the bundle, controller and action values in the [navigation.xml file ](https://github.com/spryker/product-attribute-gui/blob/master/src/Spryker/Zed/ProductAttributeGui/Communication/navigation.xml) of the product-attriubute-gui module under the *Create a Product Attribute* label: -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Users+Control/Roles%2C+Groups+and+Users/Managing+Roles/Create+attribute.png) - -{% endinfo_block %} - -1. Go back to the **Edit Role** page and fill in the required fields: -**Bundle**: _product-attribute-gui_ -**Controller**: _attriubte_ -**Action**: _create_ -**Permission**: _deny_ -4. Click **Save**. - -That's it! When the user with this role clicks **Create a Product Attribute**, they will get the **Access denied** view. -*** -## Deleting a Role - -To delete a role: - -1. In the **Role list > Actions** column, click **Delete** for the role that needs to be deleted. -2. This action will permanently delete the record. -*** - -**Tips and tricks** - -While updating the role, you can initiate a new role creation flow. - -To do that: -1. Click **Create role** in the top right corner of the **Edit Role** page. - The **Create new Role** page opens. -2. Repeat the steps described in the [Creating a Role](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/managing-roles.html#creating-a-role) procedure. -*** - -**What's next?** - -You need to create a group to assign this role to it. See the [Creating a Group](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-user-groups/creating-user-groups.html#creating-a-group) section in _Managing Groups_. diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-users.md b/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-users.md deleted file mode 100644 index 6cdddaea4f1..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/managing-users.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Managing Users -description: The procedures help create, edit, activate/deactivate or delete Back Office users, set a language to the Back Office user account, and make a user be an agent. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/managing-users -originalArticleId: 18e23108-6483-493b-aadd-70c82e356fab -redirect_from: - - /v1/docs/managing-users - - /v1/docs/en/managing-users - - /docs/scos/user/back-office-user-guides/201811.0/users/managing-users/creating-users.html -related: - - title: Roles- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/roles-reference-information.html - - title: User- Reference Information - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/references/user-reference-information.html - - title: Managing Roles - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-roles.html - - title: Managing Groups - link: docs/scos/user/back-office-user-guides/page.version/users/roles-groups-and-users/managing-groups.html ---- - -This topic describes all procedures that you need to perform to manage the user records in the **Content Management > Users** section. -*** -You will learn how to: -* Create a new user record -* Assign customers to a specific user -* Edit a user -* Deactivate/activate a user -* Delete a user from the system -*** -## Creating Users - -You have already done the primary setup (you have created a role and group), so now it is time to add an actual user record to the system. -*** -**To create a user record**: -1. Click **Add New User** in the top right corner of the **User** page. -2. Enter and select the following attributes. - - * E-mail, Password, Repeat Password - * First Name and Last Name - * Assigned groups - * Agent - * Interface language. - -{% info_block infoBox "Info" %} - -See [User: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/references/user-reference-information.html) to know more about these attributes. - -{% endinfo_block %} - -3. Click **Create**. - -*** -**Tips and tricks** -There is a way to initiate a create-new-user flow while editing a user record. To do that, on the **Edit User** page, click **Add User** in the top right corner. -*** - -## Assigning Customers to Users -The Assign Customers option is used to assign store customers' records to the Back office user records. This is done to enable the Back Office user to preview the CMS Pages in the online store (see [CMS Pages](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html#previewing-cms-pages) set of topics). -*** -**To assign a customer**: -1. Navigate to the **Users** page. -2. In the **Users List > Action** column, select **Assign Customers**. -3. In the **List of customers > Select customers to assign** table, select the check-box next to the customer you want to assign (multiple customers can be selected). -4. Click **Save**. - -{% info_block infoBox "Info" %} - -A customer cannot be assigned to multiple users at a time. - -{% endinfo_block %} - -*** -**Tips and tricks** -To de-assign a customer: -1. On the **Assign Customers to User** page, scroll down to the *Assigned customer*s table. -2. Deselect the check-box next to the customer(s) that needs to become unassigned, and click **Save**. -*** - -## Editing a User -**To edit a user:** -1. In **Users List > Action** column, click **Edit** if you want to change user's details. See [User: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/references/user-reference-information.html) for more details. -2. When the updates are done, click **Update**. -*** -## Activating and Deactivating a User -**To activate or deactivate a user:** -1.In the **Users List > Action** column, click **Activate** (or **Deactivate**). - -{% info_block infoBox "Info" %} -If a user has deactivated themselves, this user will get logged out immediately and the message about the successful deactivation will be shown. - -{% endinfo_block %} - -1. The status in the _Status_ column will be changed to *Active* or *Deactivated* depending on the action you performed. - *** - ## Deleting a User -**To delete a user:** - 1. In the **Users List > Action** column, click **Delete**. -2. On the **Warning** page, click **Delete** to confirm the action. - -{% info_block infoBox %} - -The user's status in the _Status_ column will change to _Deleted_, however, the user will still stay in the **Users List** table. If the user has deleted themselves, this user will get logged out immediately and the message about the successful deletion will be shown. - -{% endinfo_block %} diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-roles.md b/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-roles.md deleted file mode 100644 index 2c9626ccefa..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-roles.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Reference information - Roles -description: The guide provides additional information on the values you enter when creating or editing roles in the Back Office. -last_updated: Nov 25, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/roles-reference-information -originalArticleId: b82ef47b-f13d-4f5d-8a66-f3eb1dfc9f6a -redirect_from: - - /v1/docs/roles-reference-information - - /v1/docs/en/roles-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/roles-reference-information.html ---- - -This topic contains the reference information that you need to know when working in the **Users Control > Roles** section. -*** -## Roles Page -On the **Roles** page, you see the creation date, role name, and the actions that you can perform. -*** -## Create and Edit Role Page - -The following table describes the attributes that are used when creating or updating a role. - -| Attribute | Description| -| --- | --- | -| **Name** |A unique name for the role, e.g. _Category Manager Role_. | -|**Bundle** | Bundle, in other words, is a module. It is used to identify what module a specific user can or cannot manage. See for information on | -|**Controller** | This identifies the controller responsible for the bundle. | -| **Action** | This identifies what action can be performed for a specific module. | -| **Permission** | Can be either allow or deny. | - diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-user.md b/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-user.md deleted file mode 100644 index d9962fb6283..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/reference-information-user.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Reference information - User -description: The guide provides additional information about the values you enter when managing users in the Back Office. -last_updated: Oct 23, 2019 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/user-reference-information -originalArticleId: 102c93b8-1041-42c0-b3bb-d169b0eb0aeb -redirect_from: - - /v1/docs/user-reference-information - - /v1/docs/en/user-reference-information - - /docs/scos/user/back-office-user-guides/201811.0/users/roles-groups-and-users/references/user-reference-information.html ---- - -This topic contains the reference information that you need to know when working in the **Users Control > Users** section. -*** - -## User Page - -On the **Users** page, you see the following: -* Users' emails and first and last names -* Last login date and status -* Identifier of an agent user -* Actions that you can perform -*** - -## Agent User - -While creating or editing a user, you can make a specific user to be an agent. - -This is very helpful for Customer Service and Sales departments. - -**Who is an agent user?** -This is a user that can do the same actions in the online store as a regular buyer. - -**Why this option is needed?** -Let's pretend that there is a customer that needs assistance with his order. He needs a store representative to find the needed items in the catalog and submit an order on his behalf. This is exactly what an agent can do. - -**How this can be done?** -An agent user goes to Yves using _/agent/login_ at the end of the online store URL and logins with their Back Office credentials. - -In the **Search** field on the top, he searches for the customer email. Once found, clicks **Confirm** on the right. - -Since now he can perform the same actions as a regular customer. Once all needed actions are done and the order is placed, he clicks **End Customer Assistance**. -{% info_block infoBox %} - -Click to see how it looks on Yves.
![Agent User](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Users+Control/User:+Reference+Information/Agent+User.gif) - -{% endinfo_block %} - -*** - -## Create and Edit User Page Attributes - -The following table describes the attributes that are used when creating or updating a user. - -| Attribute |Description | -| --- | --- | -|**Email**| The email that is going to be used by this user to log in to Back Office. | -|**Password**| The password that is going to be used by this user to log in to Back Office. | -|**Repeat Password**| The same value that you enter for the **Password** field. | -|**First Name**| The first name of the team member for which the user is being created. | -|**Last Name**| The last name of the team member for which the user is being created. | -|**Assigned Groups**|The list of all groups that are currently available in the system. You can select from one to many values by selecting the appropriate checkboxes. | -|**Agent**| Identifies if this is a user agent. See the _Agent User_ section above. | -|**Interface Language**|The list of the available languages. This defines in what language the user will see the Back Office interface. Once the account language is changed, the respective user will see that their interface is translated into the corresponding language upon their next login.| -|**Status**|**Available on the Edit User page only**
Identifies if this user is in active status. All records are **Active** upon creation by default. The available values are: **active** (meaning able to log in to Back Office), **blocked** (the user is not able to log in), **deleted** (the user is not able to log in)| diff --git a/docs/scos/user/back-office-user-guides/201811.0/users/users.md b/docs/scos/user/back-office-user-guides/201811.0/users/users.md deleted file mode 100644 index ea0e621789b..00000000000 --- a/docs/scos/user/back-office-user-guides/201811.0/users/users.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Users Control -description: The section can be used to create, update, and Back Office users, user groups and roles in the Back Office. -last_updated: May 19, 2020 -template: back-office-user-guide-template -originalLink: https://documentation.spryker.com/v1/docs/users-control -originalArticleId: 291e7416-9fd4-4dd0-899d-32e3eddda8d3 -redirect_from: - - /v1/docs/users-control - - /v1/docs/en/users-control -related: - - title: Company User Roles and Permissions Feature Overview - link: docs/scos/user/features/page.version/company-account-feature-overview/company-user-roles-and-permissions-overview.html ---- - -The Users Control section in the Back Office is mostly used by Spryker Admins. -This section is designed to build a logical organizational structure of users that performs different types of actions in the Back Office. -The bigger is the online shop, the more clients it has, the more back office users it may need. Therefore, the primary uses of the Users Control section are to create those users, build the user group structure and either grant or restrict the access to a defined list of sections. - **Standardized flow of actions for a Spryker Admin** - -![Users and Control - Spryker Admin](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Back+Office+User+Guides/Users+Control/users-control-section.png) - -{% info_block infoBox %} -This is how a Spryker Admin interacts with other departments to build a team structure with a specific set of access rules for each specific team member. -{% endinfo_block %} - -The Users Control section is structured in the following way: -* Roles -* Groups -* Users - -These sections are logically connected by the following: -* Each user must be assigned to one or several groups. -* The group must be assigned with one or several roles. - -Thus, first of all, a Spryker Admin identifies the list of roles that each user is going to have in the **Roles** section. Next, the team should be split into groups in the **Groups** section. And finally, the users for each team member are created and assigned to the defined list of groups in the **User** section. - -**What's next?** -To know how to manage roles, groups and users, see the following articles: -* [Managing Roles](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/managing-roles.html) -* [Managing Groups](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-user-groups/creating-user-groups.html) -* [Managing Users](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-users/creating-users.html) - -To know more about the attributes you use to manage roles, groups, and users, see the following articles: -* [Roles: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/references/roles-reference-information.html) -* [User: Reference Information](/docs/scos/user/back-office-user-guides/{{page.version}}/users/roles-groups-and-users/references/user-reference-information.html) diff --git a/docs/scos/user/features/201811.0/alternative-products-feature-overview.md b/docs/scos/user/features/201811.0/alternative-products-feature-overview.md deleted file mode 100644 index 1793c99255b..00000000000 --- a/docs/scos/user/features/201811.0/alternative-products-feature-overview.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Alternative Products Feature Overview -description: Product alternatives is a great way to ease the user’s product finding process. It lets the user jump over product pages until they find a relevant item. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/alternative-products-overview -originalArticleId: 38e4d083-8998-470f-8320-0b2ef149e6ae -redirect_from: - - /v1/docs/alternative-products-overview - - /v1/docs/en/alternative-products-overview ---- - -Suggesting product alternatives and substitutes is a great way to ease the user’s product finding process. Instead of forcing the user to hunt around product lists until they find just the right product, product alternatives let the user to jump from one product page to the next until they find a relevant item. It is an effective way to keep users on product pages. - -For marketplace relations, **Alternative Products** are useful because for the Marketplace Owner it is irrelevant from what Merchant a buyer has bought a specific product. In case a specific Merchant does not have this product, the alternative product can be shown on the marketplace. - -The **Alternative Products** feature allows the shop owner to set the alternatives for both abstract and concrete products in the **Back Office: Products > Products**. - -The schema below illustrates relations between the alternative products: -![Database relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Alternative+Products/Alternative+Products+Feature+Overview/alternative-schema.png) - -All the available alternative products will be shown on the abstract product details page, if one of the following occurs: - -* All concrete products of an abstract one are in status "out of stock" -* [Discontinued Products](/docs/scos/user/features/{{page.version}}product-feature-overview/discontinued-products-overview.html) feature is enabled - -{% info_block infoBox %} -Alternative products can be attached to any product, but will be displayed only if the product becomes "out of stock" or "Discontinued". -{% endinfo_block %} - -## Replacement for -Upon entering the product details page for the suggested alternative product, a shop user will see that the current product is listed in **Replacement for** section: -![Replacement for](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Alternative+Products/Alternative+Products+Feature+Overview/replacement-for.png) - - diff --git a/docs/scos/user/features/201811.0/cart-feature-overview/cart-feature-overview.md b/docs/scos/user/features/201811.0/cart-feature-overview/cart-feature-overview.md deleted file mode 100644 index 1c8dd4524b7..00000000000 --- a/docs/scos/user/features/201811.0/cart-feature-overview/cart-feature-overview.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Cart -description: The Spryker Commerce OS offers a powerful and feature rich online shopping cart that acts as a gateway for customer and order management. -last_updated: Jan 13, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cart -originalArticleId: 6faf6ca7-fadf-4f69-b045-6b5cff907675 -redirect_from: - - /v1/docs/cart - - /v1/docs/en/cart ---- - -
-
- - -
-
-The Spryker Commerce OS offers a powerful and feature rich online shopping cart that acts as a gateway for customer and order management. With the cart your customers can easily add products to cart and organize items in the cart and manage their purchases. Any changes the customer makes within the cart trigger an automatic sum-recalculation that is immediately applied to the total in the sum. Pre-defined taxes are applied and shown automatically. Moreover, the cart provides the Flexibly to define discount rules and allow customers to apply vouchers and coupon codes. - -Read more if you are responsible for creating marketing content or are responsible for finances and end-customer experience. - -The main benefits of working with the cart are to create a convenient and predictable purchase experience to ensure an increase in conversion rates that is typically gained by using a feature-rich shopping cart. -
-
- -**Features:** - diff --git a/docs/scos/user/features/201811.0/cart-feature-overview/cart-notes-overview.md b/docs/scos/user/features/201811.0/cart-feature-overview/cart-notes-overview.md deleted file mode 100644 index 227f200d084..00000000000 --- a/docs/scos/user/features/201811.0/cart-feature-overview/cart-notes-overview.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Cart Notes Overview -description: Customers can add notes to a particular item or the whole cart, e.g some special instructions about how to prepare and deliver an order. -last_updated: Oct 17, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cart-notes-overview -originalArticleId: b7ec1174-e611-4b3f-9d58-151c7ecd39f8 -redirect_from: - - /v1/docs/cart-notes-overview - - /v1/docs/en/cart-notes-overview - - /v1/docs/cart-notes - - /v1/docs/en/cart-notes ---- - -Cart Notes enable shop administrators to include a notes field in the cart. Customers can add notes to a particular item or the whole cart, e.g some special instructions about how to prepare and deliver an order.] - -![Cart notes](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Cart+Notes/Cart+Notes+Feature+Overview/cart-notes.png) - -The cart note is being added to quote or to a particular item in the quote and pushed to order details. - -The shop administrator can see the special request in the **Administration Interface: Sales > Orders section**: - -![Cart Notes in Back Office](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Cart+Notes/Cart+Notes+Feature+Overview/cart-note-in-admin-interface.png) - - - diff --git a/docs/scos/user/features/201811.0/cart-feature-overview/cart-widget-overview.md b/docs/scos/user/features/201811.0/cart-feature-overview/cart-widget-overview.md deleted file mode 100644 index abaf04cc1e4..00000000000 --- a/docs/scos/user/features/201811.0/cart-feature-overview/cart-widget-overview.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Cart Widget overview -description: Many B2B customers use multiple shopping carts. Shopping cart widget allows them to access shopping carts from any place in the online shop in one click. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cart-widget-overview -originalArticleId: b793b5cd-8d32-44e4-853b-eae56343f158 -redirect_from: - - /v1/docs/cart-widget-overview - - /v1/docs/en/cart-widget-overview - - /v1/docs/cart-widget - - /v1/docs/en/cart-widget ---- - -Shopping Cart is a part of the online shop where the record of the items a buyer has ‘picked up’ from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. Many B2B customers use multiple shopping carts to cover different purchasing purposes. With Shopping cart widget they can access their shopping carts from any place in the online shop just in one click. - -For customers' convenience and ease of use, the shopping cart widget is placed in the very header of the webshop. When a customer puts a cursor on the Carts icon, a drop-down list with all their shopping carts is displayed. - -For each shopping cart, the following details are provided: - -* Shopping cart name -* Number of items added to cart -* Access level to a shopping cart (see [Shared Cart Feature Overview](/docs/scos/user/features/{{page.version}}/shared-carts-feature-overview.html) for more details) -* Price mode -* Cart Total -* View all carts which opens Shopping cart menu in the customer account -* Create new cart which adds a new list in Shopping cart section - -![Shopping Cart Widget](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shopping+Cart+Widget+Overview/shopping-cart-widget.png) - - diff --git a/docs/scos/user/features/201811.0/catalog-feature-overview.md b/docs/scos/user/features/201811.0/catalog-feature-overview.md deleted file mode 100644 index 28405825c7d..00000000000 --- a/docs/scos/user/features/201811.0/catalog-feature-overview.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Catalog feature overview -description: Catalogs are used to clearly build and organize your products to meet you and your customer's demands. -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-catalog-management -originalArticleId: 786d3e8e-cb93-41bc-9c9b-1c71b871e3d9 -redirect_from: - - /v1/docs/product-catalog-management - - /v1/docs/en/product-catalog-management - - /v1/docs/catalog-management - - /v1/docs/en/catalog-management ---- - -Catalogs are used to clearly build and organize your products to meet your and your customer's demands, primarily to make sure everyone can quickly find what they are looking for. - -Product catalogs are built by assigning attributes (defining characteristics) to products and organizing them into custom category trees. In the tree structure, you can create categories that nest sub-categories in them. - -For example, Electronics is a category that can encompass all the electronics you sell. You can also group different types of electronics under that category into smaller logical groups such as TVs, Cameras, Mobile Phones, etc. This approach allows you to structure the information logically. - -With this information, we can build navigation and display product pages that dynamically list products based on a selected category. - -Catalogs have full translation and SEO support in addition to other necessary dimensions such as stock level management and pricing. - -Building a custom category strategy allows you to leverage your product information to create and manage product-based content in your store: stock levels and pricing. You can dynamically create category pages and include category filters. This will help you to display all your products on a page by category that lists all electronics in one place (with details and images). An advanced filter will provide customers with the option to further drill-down by one of the following: - -* Sub-categories (TVs, Cameras, Mobile Phones for the electronics category) -* Attributes (such as size, color and capacity) - -To keep your catalog dynamic, you can include auto-generated pages based on categories and create templates for these dynamic pages. This allows you to flexibly support the growth of your product range while maintaining an up-to-date catalog. - -The main benefits of working with the catalog are to pave the way for a smooth shopping journey with well-organized categories that organize and extend your catalog to match your business needs. - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Catalog feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/catalog-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/category-management-feature-overview.md b/docs/scos/user/features/201811.0/category-management-feature-overview.md deleted file mode 100644 index 1264b6b31dd..00000000000 --- a/docs/scos/user/features/201811.0/category-management-feature-overview.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Category Management feature overview -description: The feature allows keeping your product catalog organized and comprehensible for the customers who can easily navigate the storefront and search products quicker -last_updated: Nov 18, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/catalog-management -originalArticleId: 5e9364e6-5a35-4fba-9b4c-bdc0f76bfdd5 -redirect_from: - - /v1/docs/catalog-management - - /v1/docs/en/catalog-management - - /v1/docs/category-management - - /v1/docs/en/category-management - - /v1/docs/category-pages - - /v1/docs/en/category-pages - - /v1/docs/define-category-hierarchy - - /v1/docs/en/define-category-hierarchy - - /v1/docs/product-catalog-management - - /v1/docs/en/product-catalog-management - - /v1/docs/product-to-category-association - - /v1/docs/en/product-to-category-association ---- - -A category is a set of products that share a common attribute and, therefore, can be united logically. The *Category Management* feature allows Back Office users to structure products into a logical system where each product belongs to a category or set of interrelated categories. You can [assign categories to all or individual stores](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/assigning-products-to-categories.html) from the Back Office or [import stores for categories](). For details on how a Back Office user can group products under categories, see [Assigning products to categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/assigning-products-to-categories.html). - -## Root, parent, and child categories - -The product catalog is structured in a category tree, which consists of root, parent, and child categories. - -A *root category* is a base category that stands on top of the category hierarchy. Product and child categories are assigned to root categories, but root categories can not be assigned to anything. Also, a store can only be linked to one root category tree, while a root category tree can be linked to multiple stores. Root categories are added through [data import](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/categories/file-details-category.csv.html) and cannot be created in the Back Office, unlike other categories, which can be added in both ways. - -A parent category is a category that has products and other categories assigned to it. Categories, assigned to parent categories are referred to as child categories. Products belonging to a child category that is assigned to a parent one belong to the parent category too. You can assign child categories to parent ones via the Back Office or by importing the categories. For information on how to create child categories for the parent categories, see [Creating categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/assigning-products-to-categories.html) and [Managing categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/creating-categories.html). For information on how to import the child categories, see [File details: category.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/categories/file-details-category.csv.html). - -On the Storefront, in comparison to parent category names, child category names are indented so that they can be identified. - -In the image below, the Cameras & Camcorders parent category has the Digital Cameras, Camcorders, Actioncams, and Dashcams child categories. Cameras & Camcorders is a root category, so it cannot have a parent one. - -![parent-category.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Catalog+Management/Category+Management/Category+Management+Feature+Overview/parent-category.png) - - -## Category templates - -A Back Office user defines the visual representation of a category on the Storefront by assigning a template to the category. For information on how to do that, see [Creating categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/creating-categories.html). - -For more information about types of category templates, see [Category page template types](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/creating-categories.html#category-page-template-types). - -## Category filters - -Through category filters, you can locale items better and add customizable category filters to the catalog pages on the Storefront. They also allow you to add, rearrange, and define filters for any given parameter in the category tree, such as price or brand. For details on how a Back Office user can add and manage category filters, see Managing category filters. - -### Filter preferences - -The default filter functionality includes s*tandard filters* and *dynamic filters and facers*. - -#### Standard filters - -On the Storefront, the standard filters allow buyers to narrow down the search results by filtering products according to the specified price range, product ratings, product labels, color, material, brand, etc. For more details about standard filters, see [Standard filters](/docs/scos/user/features/{{page.version}}/search-feature-overview/standard-filters-overview.html). - -#### Dynamic filters and facets - -Compared to standard filters, dynamic filters and facets allow creating more advanced filter options. For example, you can customize facet filters for any product attribute: the design, quantity of filters, or order criteria by which filters are displayed on the Storefront. For more details on how to configure the filter preferences in the Back Office, see [Managing filter preferences](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-filter-preferences.html). - -## Video tutorial -Check out this video on managing categories: - -{% wistia g3l3c7xt93 960 720 %} - -## Current constraints - -Currently, the Category Management feature has the following functional constraints, which are going to be resolved in the future: - -* A category page is accessible via the same URL across all the stores. If the category is not available in the given store, the URL will lead to a 404. -* Root categories cannot be created in the Back Office. They are imported through CSV files. - -* A store can only be linked to one root category tree, but in the future, a store will be able to have multiple root category trees. -* Category URLs are locale-dependent. -* Category URLs are available in all the stores that share the same locales. -* Price Range Filter is not supported with merchant relations. That is why this filter is not included in the [B2B demo shop](/docs/scos/user/intro-to-spryker/b2b-suite.html). However, in the [B2C demo shop](/docs/scos/user/intro-to-spryker/b2c-suite.html), you can still filter the products using the price range filter. - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create a category](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/creating-categories.html) | -| [Assign products to categories](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/assigning-products-to-categories.html) | -| [Manage categories](/docs.spryker.com/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/category/managing-categories.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Category management feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/category-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/checkout-feature-overview/checkout-feature-overview.md b/docs/scos/user/features/201811.0/checkout-feature-overview/checkout-feature-overview.md deleted file mode 100644 index b997746153f..00000000000 --- a/docs/scos/user/features/201811.0/checkout-feature-overview/checkout-feature-overview.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Checkout feature overview -description: The checkout workflow is a multi-step process that can be fullly customized to fit your needs. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/checkout -originalArticleId: fa61ef62-5e9c-48a9-8e8b-32eb0c05a4f5 -redirect_from: - - /v1/docs/checkout - - /v1/docs/en/checkout ---- - -
-
- - -
-
-The Checkout workflow is a multi-step process that can be fully customized to fit your needs. - -The standard steps included are: customer registration and login, shipping and billing address, shipment method and costs, payment method, checkout overview and checkout success. - -You can easily design the process to accommodate different checkout types and to adapt to different preferences, such as one-page checkout or an invoice page replacing the payment page, by means of our step-engine. -
-
- - -**Features:** - diff --git a/docs/scos/user/features/201811.0/checkout-feature-overview/define-payment-and-shipment-methods.md b/docs/scos/user/features/201811.0/checkout-feature-overview/define-payment-and-shipment-methods.md deleted file mode 100644 index 6716ff19502..00000000000 --- a/docs/scos/user/features/201811.0/checkout-feature-overview/define-payment-and-shipment-methods.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Define Payment and Shipment Methods -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/define-payment-shipment-methods -originalArticleId: f1086b20-6bed-4f65-bff7-79b928fdfdfb -redirect_from: - - /v1/docs/define-payment-shipment-methods - - /v1/docs/en/define-payment-shipment-methods ---- - -The Spryker Commerce OS offers integrations with several payment and shipment providers that can be offered to the customers during the checkout process. -The selection of shipment methods can be arranged by carrier and availability. Payment methods can easily be customized to your business needs. diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/cms-blocks-overview.md b/docs/scos/user/features/201811.0/cms-feature-overview/cms-blocks-overview.md deleted file mode 100644 index 7774a088a17..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/cms-blocks-overview.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: CMS Blocks overview -description: With the CMS Block feature, you can easily add promotional banners and define validity date ranges to emphasize specific, time-limited content. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cms-block -originalArticleId: a162a32a-87f1-4eac-b899-b7d64804b411 -redirect_from: - - /v1/docs/cms-block - - /v1/docs/en/cms-block - - /v1/docs/multi-store-cms-block - - /v1/docs/en/multi-store-cms-block - - /v1/docs/category-block - - /v1/docs/en/category-block ---- - -Embed custom blocks of content into your shop. Blocks come with full management and control capabilities. You can easily add promotional banners and define validity date ranges to emphasize specific, time limited content. You can create connections to other objects (e.g. Customer Groups (show a block only for a specific group), Countries (show a block for products from a specific country), etc. - -Valid from-to dates help you to easily define how long a block should appear in a shop frontend. For example, when you want to build a promotion banner for a limited time. - -If you have an international store set-up, you can define which CMS Blocks appear in which stores. Block templates are handled separately from CMS content and local content, so you can build different blocks for different languages. - -Global activation allows you to globally activate or deactivate a given block, so you can disable a certain block and it will be disabled throughout all locales. - -Each placeholder in the block has locale specific content (for as many locales as you have). - -You can also assign categories and products to a given block, add Blocks to product and category pages. Alternatively, you can use blocks for static content by placing them in a page template. - -Blocks help to place content in certain places in your template, so you can easily create for example, banners on the top of a page or add SEO text to the bottom of a page. - -## If you are: -
-
- - - -
-
    -
  • Back Office User
  • -
  • Create a CMS Block
  • -
  • Manage CMS Blocks
  • -
  • Define validity period for CMS Blocks
  • -
  • Assign Blocks to Category or Product pages
  • diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/cms-feature-overview.md b/docs/scos/user/features/201811.0/cms-feature-overview/cms-feature-overview.md deleted file mode 100644 index 013b785d787..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/cms-feature-overview.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: CMS feature overview -description: The Spryker Commerce OS offers a feature-rich content management system that allows providing the right content at the right place at the right time. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cms -originalArticleId: e72a74c5-67b1-4864-8a86-1f58e184229e -redirect_from: - - /v1/docs/cms - - /v1/docs/en/cms ---- - -
    -
    - - -
    -
    -The Spryker Commerce OS offers a feature-rich content management system that allows you to provide the right content at the right place at the right time. The intuitive, user-friendly WYSIWYG editor interface enables you to flexibly create, edit, preview, draft and publish CMS pages, blocks and widgets. Combining dynamic placeholders with CMS content allows you to automatically retrieve and display catalog items to build highly effective and adaptable promotional pages. - -The CMS gives you full control over the content in terms of: - -* Searchability -* Drafting -* Versioning -* Ordering (by ID) -* Activation -* Deactivation - -All CMS elements can be fully localized to support content creation for multiple stores. Easily create promotional campaigns by setting time restrictions for certain pages and blocks. - -To enhance the visibility of your shop, the Spryker Commerce OS comes with several SEO tools that enable you to define customized meta titles, keywords, meta descriptions and create search engine friendly URLs. - -### Definitions that are used within the capability - -| Concept | Definition | -| --- | --- | -| Page | Pages defined in CMS refer to web pages that are meant to be displayed in the front-end application (Yves). A page is defined by an URL and a template. | -| Page URL | When accessing the URL assigned to a page defined in CMS, the associated template will be loaded. | -| Template | The CMS uses Twig templates that are placed under src/Pyz/Yves/Cms/Theme/default/template/ folder. | -| Placeholder | Placeholders enable putting context to a template; a placeholder has a glossary key assigned, so at runtime, the placeholders are replaced by the corresponding glossary key value, considering the context. | -| Block | Partial page that can be embedded in other web pages. | -| URL Redirect | Technique for delivering a page under more then one URL address. When a request is made to an URL that was redirected, a page with a different URL is opened. | -| URL Redirect Status | When an URL is being redirected, the response contains a status code that describes the reason the redirect happened. The URL redirect status code plays an important role in search engine ranking. | - -**Features:** - -
    -CMS Page -CMS Block diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/cms-page-drafts-and-previews.md b/docs/scos/user/features/201811.0/cms-feature-overview/cms-page-drafts-and-previews.md deleted file mode 100644 index 87abd273f8b..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/cms-page-drafts-and-previews.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: CMS Page Drafts and Previews -description: With the CMS draft feature, a Back Office user can create drafts of CMS pages without affecting the current live version of the page. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/page-draft-preview -originalArticleId: 89f6ad56-8a76-4ab1-a328-6cd1cc2f8d47 -redirect_from: - - /v1/docs/page-draft-preview - - /v1/docs/en/page-draft-preview ---- - -With the CMS draft feature the Back Office user can create drafts of CMS pages without affecting the current live version of the page. It is possible to preview draft version of content before publishing it to see how the page will look like when it is live. This article will tell you how to enable the preview draft page feature. - -## Prerequisites -* Upgrade the `spryker/cms` module to at least 6.2 version. Additional information on how to migrate the `spryker/cms` module can be found in [Migration Guide - CMS](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cms-module.html). -* If you have the `spryker/cms-collector` module installed, upgrade it to at least 2.0 version. Additional information on how to migrate the `spryker/cms-collector` module can be found in [Migration Guide - CMS Collector](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmscollector-module.html). -* If you do not have the `spryker/cms-collector` module installed, register your CMS page data expander plugins to the `spryker/cms` module in the `CmsDependencyProvider` dependency provider. - -
    -Example of CMS page data expander plugin registration: - -```php - -
    - -* Optionally, upgrade the `spryker/cms-gui` module to at least 4.3 version if you want to have access to the Yves [preview pages from the Back Office](/docs/scos/user/back-office-user-guides/{{page.version}}/content/pages/managing-cms-pages.html#previewing-cms-pages). - -## Usage in Yves -1. Create a controller action for preview pages in Yves. -2. Use `CmsClientInterface::getFlattenedLocaleCmsPageData` to retrieve the flattened draft data for a specific locale. - -
    -Example of data retrieval: - -```php -getClient()->getFlattenedLocaleCmsPageData( - (new FlattenedLocaleCmsPageDataRequestTransfer()) - ->setIdCmsPage($idCmsPage) - ->setLocale((new LocaleTransfer())->setLocaleName($this->getLocale())) - ); - - return $localeCmsPageDataRequestTransfer->getFlattenedLocaleCmsPageData(); - } -``` - -
    -
    - -3. The retrieved CMS data structure should match the Storage's data structure at this point. -4. You can use your original CMS page rendering twig to display the preview version. -5. Check out our [Demoshop](https://github.com/spryker/demoshop) for more detailed examples and ideas regarding the complete Yves integration. - -## Configuring Yves Preview Page Access from the Back Office - Optional - -1. Define the Yves preview page URI in configuration with a numeric sprintf placeholder which stands for the CMS page id. - -
    -Example of preview page URI registration: - -```php - -
    - -2. Optionally add the **Preview** button group item to the "List of CMS pages" in the Back Office by registering the `CmsPageTableExpanderPlugin` plugin to access the preview page. - -
    -Example of page table expander plugin registration: - -```php - -
    - -3. Optionally add the **Preview** action button to the **Edit Placeholders** in the Back Office by registering the `CreateGlossaryExpanderPlugin` plugin to access the preview page. - -
    -Example of glossary expander plugin registration: - -```php - -
    - -## Restricting Access to Preview Page -You can restrict customer access to the preview page by installing and configuring `spryker/customer-user-connector` module. - - diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/cms-pages-overview.md b/docs/scos/user/features/201811.0/cms-feature-overview/cms-pages-overview.md deleted file mode 100644 index 23f9912eecb..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/cms-pages-overview.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: CMS Pages overview -description: CMS page is an extra HTML page of your Spryker shop that you can create and edit in the Back Office using the WYSIWYG editor. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/cms-page -originalArticleId: 019050cc-2d71-407d-ba0c-045bf109ecc1 -redirect_from: - - /v1/docs/cms-page - - /v1/docs/en/cms-page - - /v1/docs/content-search-widget - - /v1/docs/en/content-search-widget - - /v1/docs/customizable-templates - - /v1/docs/en/customizable-templates - - /v1/docs/multi-store-content-translation - - /v1/docs/en/multi-store-content-translation - - /v1/docs/page-versions - - /v1/docs/en/page-versions - - /v1/docs/wysiwyg-editor - - /v1/docs/en/wysiwyg-editor - - /v1/docs/friendly-urls - - /v1/docs/en/friendly-urls - - /v1/docs/landing-pages - - /v1/docs/en/landing-pages - - /v1/docs/meta-tags - - /v1/docs/en/meta-tags - - /v1/docs/seo - - /v1/docs/en/seo - - /v1/docs/url-redirects - - /v1/docs/en/url-redirects - - /docs/scos/user/features/201811.0/v1/docs/scos/user/features/201811.0/cms-feature-overview/cms-pages-overview.html ---- - -When you decide to create customized content for your online shop, one of the best options is the CMS page feature. CMS page is an extra HTML page of your Spryker shop that you, as a shop administrator, can create and edit in the Back Office using the WYSIWYG editor. The About Us, Impressum, Terms, Contacts, and Conditions pages are the examples of CMS pages that you can easily add to your online shop. The CMS pages have unique URLs and layout. Moreover, you can add to a CMS page any of the available CMS content widgets that will enrich the page with the dynamic content and help fulfill its purpose. - -With the CMS pages feature, you can: - -* fully localize your CMS pages including name and HTML meta header information; -* increase your shop's visibility and search engine ranking by adding SEO meta information to your CMS pages; -* specify exact to and from dates to make CMS Pages publicly available within a defined time period; -* assign a CMS page to a specific locale thus making it visible or hidden for a specific store (Multi-store CMS feature). - -This CMS pages feature is ideal for specific landing pages with dedicated URLs to promote content and products, for example, for marketing campaigns. - -**If you are:** - -
    -
    - - - -
    -
      -
    • Back Office User
    • -
    • Create a CMS Page
    • -
    • Manage a CMS Page
    • -
    • Edit a CMS Page
    • -
    • Manage Versions of a CMS Page
    • -
    • Assigning Blocks to Category and Product Pages
    • diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/publish-to-live.md b/docs/scos/user/features/201811.0/cms-feature-overview/publish-to-live.md deleted file mode 100644 index babbe9bf63a..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/publish-to-live.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Publish to Live -description: Once your CMS Page or Block content is final you can publish it to your shop website with a single click. -last_updated: Oct 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/publish-to-live -originalArticleId: b1b2f222-1f52-451c-a77c-050e39f773ad -redirect_from: - - /v1/docs/publish-to-live - - /v1/docs/en/publish-to-live ---- - -{% info_block infoBox %} -Publishing functionality is a part of the backoffice. -{% endinfo_block %} - -When you add or edit CMS Pages and Blocks in the backoffice, the changes are not available in your online shop. - -In order to make your page or block live, you need to publish the changes once they are final: - -* For the CMS Block you need to activate it by clicking **Activate**. -* For the CMS Page, you need to publish it by clicking **Publish**. - - - -Let's say you have a CMS page with a special promotion information for a red t-shirt. - -Either your marketing team, or an e-commerce manager, creates a CMS page record in the Back Office with an appropriate title and description for it. - -They know that in the description section, a suitable image should be added. But the image itself is not yet provided to the team. - -So they save the page but not publish it. Once the image is provided, the team: - -* updates the page by adding this image; -* saves the changes; -* publishes it so that your shop visitors see this wonderful promotion. - -Since now this page is live and visible in the store. diff --git a/docs/scos/user/features/201811.0/cms-feature-overview/time-restricted-content-page-publishing.md b/docs/scos/user/features/201811.0/cms-feature-overview/time-restricted-content-page-publishing.md deleted file mode 100644 index 17b804d0b82..00000000000 --- a/docs/scos/user/features/201811.0/cms-feature-overview/time-restricted-content-page-publishing.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Time Restricted Content Page Publishing -description: Specify exact validity dates to make CMS Pages publicly available within a defined time period. -last_updated: Oct 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/time-restricted-page-publishing -originalArticleId: c8b7e31e-fa65-42da-b0a2-495d5ad25d85 -redirect_from: - - /v1/docs/time-restricted-page-publishing - - /v1/docs/en/time-restricted-page-publishing ---- - -{% info_block infoBox %} -The validity period is defined in the Back Office. -{% endinfo_block %} - -Marketing teams and e-commerce managers can define the time limits for a specific CMS Page during which it can be viewed by the shop visitors. - -Let's say your shop needs to have a limited promotional offer for green t-shirts for a Saint Patrick's Day. In the **Back Office -> Pages** section, you will create a CMS page for this specific date range, making the promotion visible starting one week before the holiday (**Valid from** date) and ending the week after the holiday (**Valid to** date). So the page will be available only for several weeks. - - - -Once the defined **Valid to** date ends, the page will be automatically hidden from your storefront. diff --git a/docs/scos/user/features/201811.0/company-account-feature-overview/business-units-overview.md b/docs/scos/user/features/201811.0/company-account-feature-overview/business-units-overview.md deleted file mode 100644 index b2500c52fcb..00000000000 --- a/docs/scos/user/features/201811.0/company-account-feature-overview/business-units-overview.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Business Units overview -description: Once a company administrator has created a company, and it has been activated and approved, they can start building the organizational structure. -last_updated: Oct 10, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/business-unit-management-feature-overview -originalArticleId: 385d8ffd-ca66-486c-929e-330f2edf78f2 -redirect_from: - - /v1/docs/business-unit-management-feature-overview - - /v1/docs/en/business-unit-management-feature-overview - - /v1/docs/business-unit-management - - /v1/docs/en/business-unit-management ---- - -Once a company administrator has created a company which has been activated and approved in the Administrator Interface, they can start building the organizational structure of their company in _My Company_ section of the web-shop. - -The very first step of defining the company structure is setting up business units and creating the business units hierarchy. - -The **business units hierarchy** poses a system in which business units are arranged into levels: - -* upper level -* lower level -* the same level - -The business unit of the upper level is referred to as **parent business unit**, and the business units below it are its **child business units**. - -Upon company registration, a default business unit named "Headquarters" is automatically created under Business Units section. - -![default-business-unit_1_.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/default-business-unit_1_.png) - -The company administrator can create, edit, delete as well as arrange business units in hierarchical order in the Business Units section. - -To create a business unit, its name and email address must be specified. - -{% info_block infoBox %} -The user can also select a parent business unit of the newly created unit. If it is not selected, the new business unit will be created with "0" level in hierarchy, for example, as a parent. -{% endinfo_block %} -![new-bu.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/new-bu.png) - -The parent and child business units are visually differentiated by means of indents. This differentiation is described in the following table: - -| Level | Indents | -| --- | --- | -| 0 level business units (parents) | Have no indents before their lines. | -| 1 level business units | Have a single indent before them. | -| 2 level business units | Have a double indent. | -| And so on | - -Example: -![business-units-hierarchy.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/business-units-hierarchy.png) - -The following are special characteristics of business units: - -* It is not possible to assign a parent business unit to its child. -* Deleting a parent business unit does not delete its children. The hierarchy is kept, and just goes one level up. - -{% info_block infoBox %} -A business unit's children that are one level below it, become 0 level parent business units, and their children become 1 level children. -{% endinfo_block %} - -* A business unit can be assigned with one or multiple addresses. -* The existing addresses can be assigned to business units right at the stage of their creation, and the new addresses can be added on the _Edit Business Unit_ page. - -![business-units-address.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/business-units-address.png) - -* The addresses can also be unassigned by clearing the respective address's check box under the Assign Addresses section and clicking Submit. - -![unassign-address.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/unassign-address.png) - -This will move the address to Unassigned addresses section. - -![unassigned-addresses.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Business+Unit+Management/Business+Units+Management+Feature+Overview/unassigned-addresses.png) - - - diff --git a/docs/scos/user/features/201811.0/company-account-feature-overview/company-account-feature-overview.md b/docs/scos/user/features/201811.0/company-account-feature-overview/company-account-feature-overview.md deleted file mode 100644 index 554888c1927..00000000000 --- a/docs/scos/user/features/201811.0/company-account-feature-overview/company-account-feature-overview.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Company Account feature overview -last_updated: Nov 18, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/company-account-management -originalArticleId: 651daa19-81f1-4754-8483-97311e931720 -redirect_from: - - /v1/docs/company-account-management - - /v1/docs/en/company-account-management ---- - -
      -
      - - -
      -
      - The Spryker Commerce OS lets you accurately model your business structure in the Administration Interface in order to reflect Purchasing Process, Permissions and Roles. With the Company Account, hierarchical business units, shipping and billing addresses as well as permission management are easily set. This is the basis for many following B2B environment features, that ensure smooth and safe processes. - -Companies can contain many business units, which are made up of one or more company users. By providing this structure customers (buyers) on a Spryker system may accurately model their purchasing processes according to their real company structure. -
      -
      - -**Features:** - - diff --git a/docs/scos/user/features/201811.0/company-account-feature-overview/company-accounts-overview.md b/docs/scos/user/features/201811.0/company-account-feature-overview/company-accounts-overview.md deleted file mode 100644 index 9871f4e7838..00000000000 --- a/docs/scos/user/features/201811.0/company-account-feature-overview/company-accounts-overview.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Company Accounts overview -description: In the context of permissions management, the top level of a B2B business model hierarchy is a Company. Each company has its organizational structure. -last_updated: Oct 10, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/company-account-general-organizational-structure -originalArticleId: c8979fd3-8ea1-4d66-a853-8490a9d7ae6e -redirect_from: - - /v1/docs/company-account-general-organizational-structure - - /v1/docs/en/company-account-general-organizational-structure - - /v1/docs/company-account-overview - - /v1/docs/en/company-account-overview ---- - -In the context of permissions management, the top level of a B2B business model hierarchy is a Company. The Company represents a legal organization, which is related to stores and has specific metadata (e.g. a tax-number). A Company can have a name, activity state and status attributes represented by _name, is-active_ and _status_ fields respectively. - -Upon initial registration of a Company, it appears in the B2B shop with the Pending status in the Administrator Interface. After the Company has been checked, it gets the “Approved” status. - - -![companies_overview.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+Account/Company+Account+Feature+Overview/companies_overview.png) - -Each company consists of several **Business Units**, that can be viewed as physical divisions of a Company. The Business Units in their turn can have a hierarchical structure as well, which means that they can have own departments, teams etc. Business units also have metadata (e.g. tax-number). - -![company-account-overview.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+Account/Company+Account+Feature+Overview/company-account-overview.png) - -The level below the Business Unit is the **Company Address**. - -{% info_block infoBox %} - -The Company Address is the physical representation of a Company. - -{% endinfo_block %} - -One Company Address can be assigned to several Business Units. - -{% info_block infoBox %} - -If, for example, IT and Sales departments are physically located in the same office, one and the same address will be assigned to them. - -{% endinfo_block %} - -However, it might also be so that a department is distributed between several locations (for example if company is a building firm and each unit is a construction site) and therefore has several addresses. In this case, for each order made for this department, one should select which address of the department the order should be delivered to. Additionally, it is possible to assign default billing and shipping addresses to Business Units. - -The process of a new Company registration begins with the registration of a **Customer (Company User)**. A user, or employee, of a Company is referred to as a **Company User**. A Company User always belongs to one business unit. - -The Company User contains all the information about the Customer and has a one-to-one relation to the Customer. Actually, when a new Company User is created, a new Customer is created at the same time. Therefore, Customer and Company User always go together. The only difference between them is that Company User can contain meta information which is related only to Company, whereas customer has just B2C information, which is not related to a company. - -The scheme below illustrates relations between Company, Business Unit, Company (Unit) Address and Company User (Customer). - -![schema_1.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+Account/Company+Account%3A+Module+Relations/schema_1.png) - - diff --git a/docs/scos/user/features/201811.0/company-account-feature-overview/company-user-roles-and-permissions-overview.md b/docs/scos/user/features/201811.0/company-account-feature-overview/company-user-roles-and-permissions-overview.md deleted file mode 100644 index 81e34c6dc80..00000000000 --- a/docs/scos/user/features/201811.0/company-account-feature-overview/company-user-roles-and-permissions-overview.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Company User Roles and Permissions overview -description: Usually employees within a company have different roles (purchasing, administration, supervision, etc.). These roles are referred to as Company Roles. -last_updated: Oct 31, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/company-user-roles-and-permissions-overview -originalArticleId: 47f18c9b-7065-43f7-b22e-f54911648b72 -redirect_from: - - /v1/docs/company-user-roles-and-permissions-overview - - /v1/docs/en/company-user-roles-and-permissions-overview - - /v1/docs/company-user-roles-and-permissions - - /v1/docs/en/company-user-roles-and-permissions ---- - -Usually employees within a company have different roles (e.g. purchasing, administration, supervision, etc.). These roles are related to Company Users and are referred to as **Company Roles**. A role can be default (“is_default” flag), which means that it is used for all new users automatically. - -Upon initial creation of the first Company User, the default role is Admin. After the Admin user has been created, he/she creates the structure of the company and can define the default role to be used further on. - -![roles.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/roles.png) - -## Permissions -Each Company role contains a set of permissions in the form of **Permission** keys attributed to them. - -The Permission keys define what the users are allowed to do. - -{% info_block infoBox %} -For example, a user can be allowed to add products to cart. -{% endinfo_block %} -Permissions that can be used are not limited in any way - you can create and integrate any permissions. Each of the permissions is represented as a plugin in the code. - -Here is another example of the connection between company roles and permissions: - -* When a user registers a Company in the system, he/she actually creates a request for Company account registration. -* After the Company account has been approved, this first Company User becomes the Company administrator. -* Therefore, one of the roles within the Company will be Administrator who will have all the permissions with regard to creation and management of company profile, user accounts and user rights. - -One and the same user can have several Company Roles assigned to them. It means that the same user can be Junior Sales Manager and Team Leader, which in its turn implies that this user has permissions assigned to both roles: Junior Sales Manager and Team Leader. Here it should be noted that the permissions, entitling the user with more rights, win. - -{% info_block infoBox %} -For example, suppose Junior Sales Managers are allowed to place an order for up to 1000 Euro, whereas Team Leaders can place orders for up to 2000 Euro. If a user has both roles assigned to him, he/she will be allowed to place orders for up to 2000 Euro, and not 1000 Euro.
      Or, for example, if Junior Sales Managers are not allowed to view specific products, but Team Leaders can, the users having both Junior Sales Manager and Team Leader roles will be allowed to view those products. -{% endinfo_block %} - -![roles-permissions.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/roles-permissions.png) - -Company roles and permissions and their relation to the organizational structure can be schematically represented as follows: - -![roles_structure.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/roles_structure.png) - -## Permission Types -Permissions can be simple and complex. - - - - - - - - - - - - - - - - - - - -
      Permission TypeDescriptionExample
      Simple Simple permissions are those that do not have any logic behind them and answer the question “Does the customer have a permission?”. Simple permissions implement only PermissionPluginInterface (Shared). -

      A Company User is allowed (or not allowed) to access product details page.

      - - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/simple_permissions.png) - - -
      ComplexComplex permissions have some logic behind them and answer the question “Does the customer have a permission with some parameters and business logic?”. Complex permissions implement ExecutablePermissionPluginInterface (Shared). -

      A Company User is allowed (or not allowed) to place an order with grand total over 1000 Euro.

      - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/complex_permissions.png) -
      InfrastructuralSome permissions should not be managed in the UI, but programatically. Infrastructural permissions implement InfrastructuralPermissionPluginInterface (Shared). -

      Read shared cart, which is managed by the Shared Carts feature.

      -
      - -{% info_block infoBox %} -Some of the Permissions can be configured for specific roles, for example, “allow adding no more than X items to cart” for junior support engineer.
      Or for example, some specific products are not allowed to be viewed by anyone, but Admin and Top Managers.
      These values are referred to as **Company Role Permissions**. -{% endinfo_block %} - -Permission can also be **Yves-side** and **Zed-side**. - -* **Yves permissions** do not need to get any data from the database. They refer to key-value storage, or to search to check the right for actions. -{% info_block infoBox %} -For example, the permission to view a product, a page, or permission to place an order, permission to place an order with grand total less X, would be Yves-side permissions. -{% endinfo_block %} - -* Permissions that require some data from the database or some additional business-logic on top to check the rights for actions, are referred to as **Zed permissions**. - -{% info_block infoBox %} -For example, the permission to add to cart up to X [order value] would be the Zed-side permission. In this case the process of permissions check would be as follows:
      • After the user clicked **Add to cart**, the request comes to Zed and the pre-checks are made following the “add to cart” request.
      • After that, the calculations are run. The calculations apply discounts per item, and then per cart (total).
        The logic behind this is simple: a user might have a discount for a specific item, and a discount for order starting from a specific order value. The order value would be calculated taken the discount per items into account, and therefore the discount per cart would be applied after all discounts per items have been calculated.
      • After the calculations have been made, the cart is saved.
      -{% endinfo_block %} - -Obviously, the permissions can not be checked at the step when user just clicks **Add to cart**, because actual order value has not been calculated yet (pre-checks have not been made yet, discounts have not been calculated). Also, the permissions check request can not be started after the cart has been updated - that would be too late, as, the cart has already been persisted. The request for rights check is made somewhere in between - specifically, right after the discounts have been calculated. That is why the so-called “termination hooks” have been implemented deep in logic, where the permissions checks are made. - -The termination hooks (plugin stack) do not allow the permissions sneak into the business logic foundation so it will remain clean from the permissions and not overwhelmed with “can” “if not; then…” etc. - -![termination_hooks.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Company+User+Permissions/Company+Roles+and+Permissions+Feature+Overview/termination_hooks.png) - -The termination hooks are performed one by one, and process termination can happen for any reason, and one of them would be the permissions. - - diff --git a/docs/scos/user/features/201811.0/customer-access-feature-overview.md b/docs/scos/user/features/201811.0/customer-access-feature-overview.md deleted file mode 100644 index 31dc2c46d05..00000000000 --- a/docs/scos/user/features/201811.0/customer-access-feature-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Customer Access feature overview -description: Hide Content from Logged out Users allows deciding whether certain information is visible to logged out users or not -last_updated: Oct 10, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/hide-content-from-logged-out-users-overview -originalArticleId: 3d595d66-1d35-4435-9e9a-190c4ea4966c -redirect_from: - - /v1/docs/hide-content-from-logged-out-users-overview - - /v1/docs/en/hide-content-from-logged-out-users-overview - - /v1/docs/hide-content-from-logged-out-users - - /v1/docs/en/hide-content-from-logged-out-users ---- - -Customer Access feature allows Store Administrators to decide whether a certain information is visible to logged out users or not. - -After enabling the feature in your project, Store Administrator can see a new submenu **Customer Access** under **Customer** menu. Using Customer Access submenu, Store Administrator can hide the following content types: - -![content-types.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Hide+Content+from+Logged+out+Users/Hide+Content+from+Logged+out+Users+Overview/content-types.png) - -* **price** -A visitor will not see the price if they are not logged in: - - -**Settings in Admin UI (on the left)** -**Shop application (on the right)** - -![price_not_shown_for_non_logged_in_user.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Company+Account+Management/Hide+Content+from+Logged+out+Users/Hide+Content+from+Logged+out+Users+Overview/price_not_shown_for_non_logged_in_user.png) - -* **order-place-submit** -Having clicked on the Checkout button, the visitor is taken to the login page. - -* **add-to-cart** -To be able to add the item to the cart, a visitor needs to log in. - -* **wishlist** -Add to wishlist button is not available for a logged out user. - -* **shopping-list** -Add to shopping list button is not available for a logged out user. - -These content types are predetermined, though, you can extend the configuration on a project level. By default, all content types are hidden for a logged out user. - -{% info_block errorBox %} -An unauthorized user will not be able to proceed with the checkout even if Add to Cart button is available. The user will see the login page. -{% endinfo_block %} - - diff --git a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-account-management-feature-overview.md b/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-account-management-feature-overview.md deleted file mode 100644 index 3f1f849ee91..00000000000 --- a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-account-management-feature-overview.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Customer Account Management feature overview -description: Let your customers create an Account to save their contact details, addresses, order history and preferences, such as language and shipping options. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/customer-accounts -originalArticleId: aa31b439-134a-4f99-87c7-3b225249aac0 -redirect_from: - - /v1/docs/customer-accounts - - /v1/docs/en/customer-accounts - - /v1/docs/crm - - /v1/docs/en/crm ---- - -Let your customers create an Account to save their personal details. - -Customer accounts can have the following set of details: - -* contact details -* addresses -* order history -* preferences, such as language and shipping options. - -There are slight differences in customer accounts' information for the B2B and B2C shops. The following table describes such differences and similarities: - -| Customer Account Sections | B2B Shop | B2C Shop | -| --- | --- | --- | -| Overview | v | v| -| Profile | v | v | -| Addresses | v | v | -| Order History | v | v | -| Newsletter | v | v | -| Shopping Lists | v | | -| Shopping Carts | v | | -| Wishlist | | v | - -As a Back Office user, you can view and edit your customer's account details and check their orders and order history. - -{% info_block infoBox %} -The customer accounts can be managed by customers directly on the Yves side. If updates are done by a customer, the data is synchronized and shop administrator will see the relevant information in the **Back Office > Customers > Customers** section. The exceptions are newsletter subscription and password change, as this information is not stored in Zed. -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-groups-overview.md b/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-groups-overview.md deleted file mode 100644 index 743cacbdd8f..00000000000 --- a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-groups-overview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Customer Groups overview -description: The Customer Groups feature allows you to organize customers into groups to help you target users for discounts and promotions. -last_updated: Feb 9, 2021 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/customer-groups -originalArticleId: f9af6c03-e0f1-420c-ad78-f6e8a8cf8f41 -redirect_from: - - /v1/docs/customer-groups - - /v1/docs/en/customer-groups ---- - -The Customer Groups feature allows you to organize customers into groups to help you target users for discounts and promotions. - - ## If you are: - - diff --git a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-login-overview.md b/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-login-overview.md deleted file mode 100644 index 0ada0a7875f..00000000000 --- a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/customer-login-overview.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Customer Login overview -description: Tailor customer registration to your needs. A customer can register with an email address and a password, or you can choose to ask for more details. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/login-registration-forms -originalArticleId: 90a16f1f-b4a1-44b0-8a72-d2c9673e8491 -redirect_from: - - /v1/docs/login-registration-forms - - /v1/docs/en/login-registration-forms ---- - -Tailor the customer registration to your needs. - -A customer can simply register with an email address and a password or you can choose to ask for more details. - -![Login registration](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Customer+Relationship+Management/Login+%26+Registration+Forms/login_registration.gif) - -Once a customer enters the required information, a customer account is created. - -{% info_block infoBox %} -All the required information is marked with an asterisk. -{% endinfo_block %} - -In the Back Office you, as a store administrator, will be able to see the Registration Date for each user that creates a profile. - -This information is stored in the **Back Office > Customers > Customers** section. As well as all the details entered by the customer during registration are stored in that section. - diff --git a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/password-management-overview.md b/docs/scos/user/features/201811.0/customer-account-management-feature-overview/password-management-overview.md deleted file mode 100644 index f4d91c7c66a..00000000000 --- a/docs/scos/user/features/201811.0/customer-account-management-feature-overview/password-management-overview.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Password Management overview -description: All accounts are password protected. Passwords can easily be restored with a restore-password link. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/password-management -originalArticleId: 3de5f1ff-69a5-4dea-b9db-85b627f00156 -redirect_from: - - /v1/docs/password-management - - /v1/docs/en/password-management ---- - -All accounts are password protected. Therefore all customers are asked to provide their unique passwords during the registration. As well as each time a customer logs into the store, the email address and password values must be provided. - -If the customer account is created via the **Customers > Customers** section in the Back Office, a store administrator selects the **Send password token through email** check-box and the new customer receives an email with a link to the page where the password can be changed. - -![Password protection](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Customer+Relationship+Management/Password+Management/password_protection.gif) - -Also, passwords can easily be restored with a restore-password link. - -![Restore a password](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Customer+Relationship+Management/Password+Management/password_restore.gif) - diff --git a/docs/scos/user/features/201811.0/features.md b/docs/scos/user/features/201811.0/features.md deleted file mode 100644 index d5f47333663..00000000000 --- a/docs/scos/user/features/201811.0/features.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Features -last_updated: Nov 27, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/about-features -originalArticleId: c4e30365-8de5-46f8-ba61-b9c286e8ddb9 -redirect_from: - - /v1/docs/about-features - - /v1/docs/en/about-features ---- - -As a staring point to working with the Spryker Commerce OS, we created a list of all the capabilities we have to offer that arrive out-of-the-box. - -{% info_block infoBox %} -What to know more? Learn about [Demo Shops](/docs/scos/user/intro-to-spryker/master-suite.html) we provide. -{% endinfo_block %} - -Capabilities are high level descriptions of what a certain facet of Spryker can do. Each Capability is mapped to a list of Features. A Feature is a specific aspect of a Capability, for example, the Inventory Management Capability includes the features, **Stock and Availability Management** and **Multiple Warehouse Stock Management** . All the features together help to define the exact scope of a Capability. This helps us to guide you to the relevant functionality you are looking for. -![Features on the Capability page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/features-list-on-capability-page.png) - - Each Feature has its own distinct functionality, this is the actionable information about a feature and describes the different activities you can perform with a feature like, Add, Delete, Modify, Extend etc. The Functionality for each Feature is listed according to user type to help distinguish between content intended for **Developers** (PHP Developers and Front End Developers), **End Users** who work with the Administration Interface (Category Managers, Sales, Marketing and Finance or any other people involved in creating and customizing your main interaction point with your customers), and **E-commerce users** (shop administrators who manage the account in the shop application). - -**Click on a link to find out more about:** - -| Capability | Description | -| --- | --- | -| [Back Office](/docs/scos/user/features/{{page.version}}/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.html) | A powerful and user-friendly Administration Interface that allows you to manage all back office tasks with ease. Easily manage and create customer accounts and define who can access the Administration Interface. Keep track of all your internal processes including the management of your products, orders, customers and many more. | -| [Cart](/docs/scos/user/features/{{page.version}}/cart-feature-overview/cart-feature-overview.html) | The Spryker Commerce OS offers a powerful and full-feature online shopping cart that acts as gateway for customer and order management. Allow your customers to easily organize and manage their purchase and apply vouchers and coupon codes. | -| [Catalog Management](/docs/scos/user/features/{{page.version}}/catalog-feature-overview.html) | Build and organize a unique catalog that meets customers' demands and allows them to find what they are looking for quickly. Easily manage product pages, translations, stock levels and pricing. With the powerful Category Management features you can easily build a custom category strategy that allows you to flexibly grow your product range and keep your catalog updated. | -| [Checkout](/docs/scos/user/features/{{page.version}}/checkout-feature-overview/checkout-feature-overview.html) | The multi-step checkout allows you to create a fully customized checkout workflow. Every step of the process can be adapted to suit your business needs. | -| [CMS \(Content Management\)](/docs/scos/user/features/{{page.version}}/cms-feature-overview/cms-feature-overview.html) | Seamlessly match your content with your store with the powerful and flexible CMS solution. The WYSIWYG editor permits you to build, edit and publish content effortlessly. The Spryker Commerce OS CMS supports localization and the creation of time restricted content, enabling you to flexibly create content for multiple stores and promotional campaigns. | -| [Company Account](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-account-feature-overview.html) | Provide your B2B customers with a way to accurately map their business hierarchies, permissions and role management. With the creation of distinctive Business Units, the internal hierarchy can easily be mapped and each Unit can independently operate. A convenient Roles & Permissions System enables your customer's buyers to clearly define purchasing and approval processes. | -| [CRM \(Customer Relationship Management\)](/docs/scos/user/features/{{page.version}}/customer-account-management-feature-overview/customer-account-management-feature-overview.html) | The compact and powerful customer management tool allows you to easily manage customer accounts and effectively monitor their shopping habits. Group your customers and create more personalized shopping experiences. | -| [Cross-sell and Up-sell](/docs/scos/user/features/{{page.version}}/cross-sell-and-up-sell/cross-sell-and-up-sell.html) | Drive your sales and reduce marketing spend with the upselling and cross-selling features. Easily define specific product relations to present customers with recommendations, let them browse through shop-the-look collections or buy bundled products during promotions. | -| [SDK](/docs/scos/dev/sdk/development-tools/development-tools.html) | Create a reliable base for your OS that ensures security and high performance. Provide your developers with a collection of useful coding tools that help them validate their code while they work. The Spryker Commerce OS also offers production/staging deployment solutions for several different cloud platforms. | -| [Gift Cards](/docs/scos/user/features/{{page.version}}/gift-cards-feature-overview.html)| Effectively up your sales by allowing your customers to purchase and redeem gift cards. Gift card purchases can boost your brand awareness and help you reach new customers. Additionally you also benefit from shoppers who redeem gift cards, as they usually spend 20%+ more than the gift card's value. | -| [Inventory Management](/docs/scos/user/features/{{page.version}}/inventory-management-feature-overview.html)| Check your inventory levels at a glance. The powerful Administration Interface allows you to easily keep an overview of your stock levels to display accurate availabilities on your store site. | -| [Mailing and Notifications](/docs/scos/user/features/{{page.version}}/mailing-and-communication/mailing-and-communication.html) | Drive customer engagement and keep them up-to-date. Send automated account emails and confirmations or offer different types of newsletter subscriptions. | -| [Media Management](/docs/scos/user/features/{{page.version}}/file-manager-feature-overview/file-manager-feature-overview.html) | Reduce your bounce rate effectively and create an enhanced shopping experience by providing impactful visuals while simultaneously maintaining fast response times. Easily add images and videos to any of your pages. To ensure fast response times all media is hosted on a separate server. | -| [Multi-Channel](/docs/scos/user/features/{{page.version}}/multi-channel/multi-channel.html) | Provide a holistic shopping experience by meeting your customers where they are. You can easily promote and sell your products and services across multiple channels beyond your store's website. The responsive layout ensures a seamless experience across multiple devices. | -| [Navigation](/docs/scos/user/features/{{page.version}}/navigation-feature-overview.html) | Create an effortless store flow with a strong shop navigation. Flexibly add any kind of navigational elements and plan the visibility of promotional content. | -| [Order Management](/docs/scos/user/features/{{page.version}}/order-management-feature-overview/order-management-feature-overview.html) | Efficiently keep track of your order processing and ensure quick fulfillment. Easily view and edit incoming orders through the Administration Interface and keep your order management running smoothly. | -| [Packaging & Measurement Units](/docs/scos/user/features/{{page.version}}/packaging-and-measurement-units/packaging-and-measurement-units.html) | The Spryker Commerce OS lets you flexibly define values for selling your products in weight, length or quantity. Individual Packaging enables you to sell the same item in different bundle sizes. This enables you to enrich your product choice and gives more flexibility for your customers. | -| [Payment](/docs/scos/user/features/{{page.version}}/payment/payment.html) | Meet your customers' demands by offering the payment methods they prefer. Integrate multiple payment gateways easily, define their availability and customize how they appear on your site. | -| [Price](/docs/scos/user/features/{{page.version}}/prices-feature-overview/prices-feature-overview.html) | Incorporate your pricing strategy into your Commerce OS effortlessly and save valuable time. | -| [Product Management](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-feature-overview.html)| Ensure a smooth shopping experience with powerful product management features. Build appropriate category hierarchies, assign custom labels to products and include additional services like gift wrapping. Run effective promotional campaigns via time limited offers and provide product recommendations and Shop-the-Look collections. | -| [Promotions and Discounts](/docs/scos/user/features/{{page.version}}/promotions-and-discounts-feature-overview.html) | Drive your sales with the highly flexible promotion features. Offer free shipping, special prices, free gifts, threshold promotions or several types of discounts. You can also expand your reach with discount vouchers and coupon codes. Enhance customer engagement by specifying the visibility of certain content or personalizing any CMS element. | -| [Rating and Reviews](/docs/scos/user/features/{{page.version}}/product-rating-and-reviews-feature-overview.html) | Empower your customers to create ratings and reviews of your products to receive valuable feedback. | -| [Search and Filter](/docs/scos/user/features/{{page.version}}/search-feature-overview/search-feature-overview.html) | Let shoppers browse your catalog quickly with the highly flexible filter and search features. Include full-text search, search suggestions and auto-completion to refine the search results. Offer unique filtering options by specifying by which categories or attributes your catalog should be organized. | -| [SEO](v1/docs/scos/user/features/{{page.version}}/cms-feature-overview/cms-pages-overview.html) | Improve the search engine ranking of your store and let potential customers find your store quickly. Powerful SEO features enable you to add customized meta information to all your content and create search engine friendly URLs. | -| [Shipment](/docs/scos/user/features/{{page.version}}/shipment-feature-overview.html) | Integrate multiple shipment carriers and methods to ensure fast and easy delivery through the carriers your customers prefer. Offer free shipping and rule-based discounts, allow multi-currency pricing and enable a shipment method to be selected automatically based on the shipping address. | -| [Shopping List](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-lists-feature-overview.html) | Enable your Business customers to save the products they wish to purchase through the Shopping List Capability. Different roles and permission systems ensure a smooth sharing and contribution management amongst a company's users. Printing a Shopping List, with or without a barcode, make the reordering process easy for your customers. With a direct-to-cart feature, customers can immediately add items to their Cart." prefer. Offer free shipping and rule-based discounts, allow multi-currency pricing and enable a shipment method to be selected automatically based on the shipping address. | -| [Tax](/docs/scos/user/features/{{page.version}}/tax-feature-overview.html) | Adhere to the respective tax regulations in the countries you sell and effortlessly configure and manage tax rates for products, shipments and additional services like gift-wrapping. To support global expansion, the Spryker Commerce OS enables you to easily define tax rates for different countries. | -| [Technology Partner Intgraions](/docs/scos/user/technology-partners/{{page.version}}/technology-partners.html) | Leverage the tools, knowledge and experience of industry leaders to augment your activity with well-known, payment providers, performance and hosting solutions. | -| [Wishlists](/docs/scos/user/features/{{page.version}}/wishlist-feature-overview.html) | Let your B2B customers optimize their internal processes and workflows by offering an intricate approval management tool. Not only can your customers appropriately mimic hierarchy and budget, but it also ensures an easy and fast ordering process. | diff --git a/docs/scos/user/features/201811.0/file-manager-feature-overview/asset-management.md b/docs/scos/user/features/201811.0/file-manager-feature-overview/asset-management.md deleted file mode 100644 index 5397d389798..00000000000 --- a/docs/scos/user/features/201811.0/file-manager-feature-overview/asset-management.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Asset Management -description: Apart from images, you can also add a great variety of other assets to your shop, like presentations, pdf documents, graphics, banners and many more. -last_updated: Oct 15, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/asset-management -originalArticleId: 43e5d07a-c447-40d0-bd85-7e31bca82426 -redirect_from: - - /v1/docs/asset-management - - /v1/docs/en/asset-management ---- - -Apart from images, you can also add a great variety of other assets to your shop, like presentations, pdf documents, graphics, banners and many more. This gives you the chance to create rich, compelling and attractive content for your customers. diff --git a/docs/scos/user/features/201811.0/file-manager-feature-overview/file-manager-feature-overview.md b/docs/scos/user/features/201811.0/file-manager-feature-overview/file-manager-feature-overview.md deleted file mode 100644 index 577bb46ef2e..00000000000 --- a/docs/scos/user/features/201811.0/file-manager-feature-overview/file-manager-feature-overview.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: File Manager feature overview -description: Reduce your bounce rate and create an enhanced shopping experience by providing impactful visuals while simultaneously maintaining fast response times. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/media-management -originalArticleId: 33b45ad1-dd65-4f22-93f8-c5024dbb75a5 -redirect_from: - - /v1/docs/media-management - - /v1/docs/en/media-management ---- - -
      -
      - - -
      -
      -Reduce your bounce rate effectively and create an enhanced shopping experience by providing impactful visuals while simultaneously maintaining fast response times. The user-friendly WYSIWYG (What You See Is What You Get) CMS editor allows you to smoothly add images and videos to any of your product and content pages. To maintain high performance and ensure fast response times, the Spryker Commerce OS uses a separate server to host media. -
      -
      - -**Features:** - diff --git a/docs/scos/user/features/201811.0/file-manager-feature-overview/file-uploader.md b/docs/scos/user/features/201811.0/file-manager-feature-overview/file-uploader.md deleted file mode 100644 index e285197f9f2..00000000000 --- a/docs/scos/user/features/201811.0/file-manager-feature-overview/file-uploader.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: File Uploader -description: File Uploader feature allows a Store Administrator to upload files in accordance to their specifications for a file type to the Back Office. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/file-uploader -originalArticleId: 3dc7ae02-bb4e-4e84-b7b7-9943f9db483d -redirect_from: - - /v1/docs/file-uploader - - /v1/docs/en/file-uploader ---- - -In B2B business environment, media management can become a tricky task for e-commerce store owners. At some point or another a merchant would need their e-commerce shop to include an option to upload the text or media files (e.g. tutorials, instructions, license agreements, additional pictures or photos) for the products and easily manage them within the system. - -File Uploader feature allows a Back Office user to upload files in accordance to their specifications for a file type to the Back Office, place them in CMS Widgets as blocks or pages in the shop so that end customers can click on them and download the files. - -## If you are: - - diff --git a/docs/scos/user/features/201811.0/gift-cards-feature-overview.md b/docs/scos/user/features/201811.0/gift-cards-feature-overview.md deleted file mode 100644 index 056972d99d4..00000000000 --- a/docs/scos/user/features/201811.0/gift-cards-feature-overview.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Gift Cards feature overview -last_updated: Sep 29, 2021 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/gift-cards-purchase-redeeming -originalArticleId: d95b8918-3ef7-40cc-8620-99637467b617 -redirect_from: - - /v1/docs/gift-cards - - /v1/docs/en/gift-cards - - /v1/docs/gift-card-purchase-management - - /v1/docs/en/gift-card-purchase-management - - /v1/docs/gift-cards-purchase-redeeming - - /v1/docs/en/gift-cards-purchase-redeeming ---- - -{% info_block warningBox %} -Gift Cards are sensible data and can be used to pay orders, therefore please keep in mind that they should be protected just like real money. -{% endinfo_block %} - -This article describes general concepts of gift cards, their purchase and redeeming process as well as various use case scenarios. - -## Introduction - -In the Spryker shop, the gift cards follow the same rules and bought as products, they can even be bundles, however they are purely virtual and do not require shipping. Gift card can be applied as a voucher and redeemed to pay an order. Therefore, the gift cards have two characteristics - a product characteristic and a voucher (+payment method) characteristic. When gift card is bought, it is treated like a product, and when it is applied - it’s a voucher that can be used as a payment method. - -Gift cards have variants just like abstract products, for example, for example, a New Year Gift Card can have all the different values - 50 Euro, 100 Euro, etc. - in this case, the New Year Gift Card would be handled like an abstract product, and 50 Euro, 100 Euro etc. gift cards would be its variants. - -When customer puts a gift card to cart, it is possible to change variant, quantity and remove it from cart, just like any abstract product. It should be noted however, that no discounts are applied on gift card products, since the price paid for the gift card must equal the value of the gift card. Even though technically it is possible to have different amounts for gift card’s price and value (say, the gift card price is 100 Euro however the gift card value is 150 Euro), but you need to consult your local legislation to make sure it would be legal in your country. -![Gift cards](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Gift+Cards/Gift+Cards+Purchase+and+Redeeming/gift_card.png) - -It is not possible to pay a gift card by using another gift card, even if order contains other products besides the gift card. Also, the range of payment methods that can be used to pay for gift cards can be limited. That is, it is possible to filter out the payment methods for gift cards. By default, invoice payment method is not available for gift cards to avoid fraud. Payment methods available for gift cards can be specified in the configuration file. - -After customer buys a gift card, he/she gets a code sent to the provided e-mail address. - -Once the gift card code has been generated, it becomes a voucher that can be used as a payment method. - -The gift card product-voucher transition workflow can be schematically represented as follows: -![Git card product-voucher transition workflow schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Gift+Cards/Gift+Cards+Purchase+and+Redeeming/GC+product-voucher+transition.png) - -When buying a gift card, the shipment method selection step is skipped on Yves. In the background, there is “noshipment” constant in the app configuration, which can be selected to configure shipment for specific type of products, in our case, to gift cards. - -## Buying With Gift Cards - -With a gift card code in place, users get an alternative payment method to pay for their orders. The payment workflow with the gift card would be as follows: - -1. User puts products to cart, and, assume he/she has discounts for the products and also applies a voucher. -2. **Order subtotal** is calculated: General products’ prices without the discounts etc. -3. **Order grand total** is calculated: Price including discounts, vouchers, taxes etc. -4. **Gift card** is applied: Grand total minus Gift Card value. If the order value is lower or equals the gift card value, the checkout workflow stops here, as the gift card is used to fully pay the order. -5. If the order value is higher than the value of the applied gift, price to pay is calculated: remaining sum to be paid using an additional payment method. -6. Payment method selection and payment. - -Schematically, the order placement process with gift card looks as follows: -![Order placement process](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Gift+Cards/Gift+Cards+Purchase+and+Redeeming/gc_payment_process.png) - -In the Back Office, the Back Office user can see if an order was paid with a gift card and/or a regular payment method. The amount paid with the gift card as well as the amount paid with a regular payment method (if applicable) are shown as well. -![Gift card payment method](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Gift+Cards/Gift+Cards+Purchase+and+Redeeming/gift_card_payment_method.png) - -## Gift Card Value Checking Strategies - -Gift card value checking strategy means the way the gift cards are checked for the value they represent. There are two strategies that can be followed: Replacement and Balance. Out of the box, Replacement strategy is applied for the gift cards in Spryker shop. However it can be defined on the project level which strategy is to be used, by installing a respective module and enabling a plugin. - -### Replacement Strategy -Replacement means that if after using a gift card it has a remaining balance, a new gift card with the value equal to the remaining balance is issued for the gift card owner. For example, a user has a gift card for 100 Euro, but spends just 60 Euro to pay the order. In this case a new 40 Euro gift card with a new code will be sent to the user. The old gift card code would not be valid anymore. - -For this strategy, gift cards have a pattern for codes generation. For each gift card code generation a pattern from the previous gift card is used. For example, if code X-GC-{number} is used for gift cards generation, where {number} is the pattern, the 100 Euro gift card code generated for customers would be X-GC-1, and the code generated for the remaining 40 Euro would be X-GC-2 etc. - -The main advantage of this strategy is that one and the same gift card code can not be used twice if the gift card has a remaining balance on it after a purchase has been made. This might be especially useful, for example, in case when a customer wants another customer use a part of value from his/her gift card. In this case, the initial gift card owner would get an email with the new code for the remaining gift card value. - -### Balance Strategy - -In case of the Balance strategy, gift card purchase history and gift card balance information are checked. If after paying an order a gift card has remaining balance on it, then, in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but old gift card code is used instead. The remaining gift card value is calculated by the formula: GC Value - Value of all orders where it is used. - -With this strategy, the shop administrator will see gift card balance information: date when the gift card was used, customer who used the gift card, gift card code and spent value. - -Even though the Balance strategy is a bit more complicated than Replacement, it provides the shop owner with detailed information about the gift card as well as the purchase history with it. From the customer’s perspective, this strategy might be a better option if a gift card is used by one person and it does not make sense to send emails with new codes every time a gift card was used. diff --git a/docs/scos/user/features/201811.0/inventory-management-feature-overview.md b/docs/scos/user/features/201811.0/inventory-management-feature-overview.md deleted file mode 100644 index dc5450903ab..00000000000 --- a/docs/scos/user/features/201811.0/inventory-management-feature-overview.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Inventory Management feature overview -description: Learn how you can manage warehouse, stock, and availability with the Inventory Management feature -last_updated: Dec 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v3/docs/inventory-management -originalArticleId: 3260f265-35f7-4739-abb2-0734b9c8f04a -redirect_from: - - /v1/docs/inventory-management - - /v1/docs/en/inventory-management - - /v1/docs/about-inventory - - /v1/docs/en/about-inventory - - /v1/docs/stock-availability-management - - /v1/docs/en/stock-availability-management - - /v1/docs/multiple-warehouse-stock - - /v1/docs/en/multiple-warehouse-stock ---- - -Thr *Inventory Management* feature refers to warehousing and managing your store’s stock. In this context, a *warehouse* is the physical place where your products are stored, and *stock* is the number of products available in the warehouse. See [Warehouse management](#warehouse-management) and [Stock management](#stock-management) for details on how to manage them. -Stock does not always reflect the real availability of products, as not all the items available in stock are available for sale. For example, if items are *reserved*, that is, there are pending orders with these items, they can not be ordered, even though physically, they are still in stock. The value that reflects the difference between the current quantity of products in stock and the quantity of these products in the pending orders, is referred to as the *availability* of products. The availability is calculated per store. See [Availability management](#availability-management) for details on how to manage availability. - -## Warehouse management - -You can [create warehouses in the Back Office](/docs/scos/user/user-guides/{{page.version}}/back-office-user-guide/administration/warehouses/creating-warehouses.html) or [import them](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse.csv.html). - -A warehouse can be assigned to a single store or shared between several stores. You can manage relations between stores and warehouses in the Back Office or by importing the warehouse and store data. See [Managing warehouses](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/manage-in-the-back-office/edit-warehouses.html) for details on how you can manage warehouses and stores in the back office and [File details: warehouse_store.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse-store.csv.html) on how you can import the warehouse and store data. - -### Defining a warehouse address -You can define the warehouse address that will be used as the shipping origin address by importing the warehouse address data. See [File details: warehouse_address.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-warehouse-address.csv.html) for details about the import file. - -## Stock management - -Stock defines the physical amount of products you have in your warehouse. Spryker Commerce OS allows you to define stocks for your products in different warehouses. - -A product is associated with at least one stock product. It should be noted that only concrete products can have stocks. Additionally, in the Back Office, you can define a product to be never out of stock to make it available at any time. - -When order is made, stock is not updated automatically in the system, you have to set it manually. You can define stock only for concrete products. You can set stock by: - -* Editing product stock in the Back Office. See [Editing stock](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/managing-products-availability.html#editing-stock) for details. -* Importing the quantities of items stored in each of the warehouses. See [Stocks](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/stocks/stocks.html) for details. - -### How Spryker stores your product stock -Spryker holds your product stock in a type called DECIMAL(20,10), which means that your product stock can be 20 digits long and have a maximum of 10 digits after the comma. For example: - -* 1234567890.0987654321 -* 0.0987654321 -* 1234567890098765432.1 -* 12345.6789009876 -* 1.0000000000 - -### Calculating the current stock for products -A product quantity from stock is being reserved when an order containing it is being processed. The state machine is reserving stocks by setting the *reserved* flag. To calculate the available stock per store, not only the maintained stock (the sum of *active* stocks related to the current store from each storage location) is taken into account, but also the currently processed orders. - - -## Availability management - -In contrast to stock, availability considers not just the number of products in the warehouse but also current open orders. - -When a buyer places an order, the products in the order become *reserved*, and the product availability changes. The changes are reflected in the Back Office: The availability is equal to the stock before the order is placed, and after the order is placed, the availability decreases, but the stock remains the same. - -Product availability before the order: - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/before-order-placement.png) - -Product availability after the order: - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/after-order-placement.png) - -See [Checking availability](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/managing-products-availability.html#checking-availability) for details on how you can check product availability in the Back Office. - -{% info_block infoBox %} - -Availability of a product bundle is defined by the availability of each product in the bundle. If at least one of them is out of stock, the entire bundle is unavailable. - -{% endinfo_block %} - -In the [state machine](/docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.html), a developer can use the `reserved` parameter to define the states at which the order items are reserved. There can also be states that release an item. For example, when payment fails and order is cancelled, the item is not reserved anymore: - -
      -State machine example - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Inventory+Management/state-machine.png) - -
      - -{% info_block infoBox "Unavailable products on the Storefront" %} - -For SEO purposes, products that are not available can still be displayed on the Storefront with the inactive **Add to cart** button. - -{% endinfo_block %} - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create a warehouses](/docs/scos/user/user-guides/{{page.version}}/back-office-user-guide/administration/warehouses/creating-warehouses.html) | -| [Manage warehouses](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/manage-in-the-back-office/edit-warehouses.html) | -| [Manage product availabilities](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/availability/managing-products-availability.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Inventory Management feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/nventory-management-feature-walkthrough/inventory-management-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/mailing-and-notifications-feature-overview.md b/docs/scos/user/features/201811.0/mailing-and-notifications-feature-overview.md deleted file mode 100644 index 8de7d55e1c9..00000000000 --- a/docs/scos/user/features/201811.0/mailing-and-notifications-feature-overview.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Mailing and Notifications feature overview -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/mailing-communication -originalArticleId: 42100948-3ca2-4171-bbee-0d3ef6cb0ae5 -redirect_from: - - /v1/docs/mailing-communication - - /v1/docs/en/mailing-communication - - /v1/docs/newsletter-subscription - - /v1/docs/en/newsletter-subscription - - /v1/docs/transactional-email-management - - /v1/docs/en/transactional-email-management - - /docs/scos/user/features/201811.0/mailing-and-communication/mailing-and-communication.html ---- - -The *Mailing & Notifications* feature allows you to manage newsletters and notifications. - -## Newsletter subscriptions - -Offer Newsletter Subscriptions to your customers to increase loyalty. Send updates on product related news, special offers or any other update you wish to share. The Spryker Commerce OS offers opt-in and opt-out options. - -The newsletter subscription locates in the **Newsletter** section of the user profile. - -All your customers need to do is to agree for the newsletter subscription. Once they submit the agreement form, an email is triggered to confirm that the request is received and the sign-up is successful. - -![Newsletter](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Mailing+%26+Communication/Newsletter+Subscription/subscribe-to-the-newsletter.gif) - -## Transactional email management - -Keep your customers updated with a variety of emails you can either send via the internal SMTP system or an external email provider of your choice. - -Automated Emails regarding order status, shipping or transactions are just a few examples of how you can support the purchase process and increase brand loyalty. - -The following links provide additional information about the Mail module, plugins, and procedures: - -* `MailTypePlugin` creation and registration—[HowTo - Create and Register a MailTypePlugin](/docs/scos/dev/tutorials-and-howtos/howtos/howto-create-and-register-a-mailtypeplugin.html) -* `MailProviderPlugin` general overview and the registration procedure—[HowTo - Create and Register a Mail Provider](/docs/scos/dev/tutorials-and-howtos/howtos/howto-create-and-register-a-mail-provider.html) -* Tutorial that helps to understand the procedure for sending an email—[Tutorial - Sending a Mail](/docs/scos/dev/tutorials-and-howtos/introduction-tutorials/tutorial-sending-an-email.html). - - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Mailing & Notification feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/mailing-and-notifications-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/measurement-units-feature-overview.md b/docs/scos/user/features/201811.0/measurement-units-feature-overview.md deleted file mode 100644 index d5d3b9ac1c3..00000000000 --- a/docs/scos/user/features/201811.0/measurement-units-feature-overview.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Measurement Units Feature Overview -description: The Measurement Units per Products feature allows selling products by any unit of measure defined by a shop administrator. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/measurement-units-feature-overview -originalArticleId: 4d6b1a7d-d8f3-45ee-8a77-f14bec3e3189 -redirect_from: - - /v1/docs/measurement-units-feature-overview - - /v1/docs/en/measurement-units-feature-overview - - /v1/docs/measurement-units - - /v1/docs/en/measurement-units - - /docs/scos/user/features/201811.0/packaging-and-measurement-units/packaging-and-measurement-units.html - - /docs/scos/user/features/201811.0/measurement-units/measurement-units-feature-overview.html ---- - -The Measurement Units per Products feature allows selling products by any unit of measure defined by the shop administrator. For example, apples can be offered in "Item" or "Kilogram", cables can be offered in "Centimeter", "Meter" or "Feet" etc. To support alternate units of measure, there must be a base unit value, relative to which all the internal conversions and calculations will be made. Such value is referred to as base unit. The base unit is assigned to abstract products and by default it is "item", however it can be changed to any other unit. - -Besides the base unit, the shop owner can define **sales units** - alternate units of measure in which items will be offered in the shop. Sales units are assigned to concrete products, but if sales units are not defined, the **base unit** is used as a default sales unit. If there are several sales units and no default sales unit is defined, then the first unit to show will be the first in the alphabetical order. - -The sales units are displayed on product details page. It is also possible to define the sales units in the Administration Interface, but choose not to display them in the web shop. Actually, sales units are only shown on the website, but then immediately converted into the base unit, as internally the system only works with the base units. - -Sales units can be configured per store, that is, they have a store relation. - -{% info_block infoBox %} -For example, you might have bought a quintal of apples, but want to use kilograms as the base unit, and you choose to offer the apples in "Items", "Kilograms" and "Pounds" in one of your stores. In this case, kilograms is both base and sales unit. Therefore, this unit of measure will be used to manage stock and make all the internal calculations. "Items" and "Pounds" in this example will be the sales units applicable to the respective store. -{% endinfo_block %} - -The shop owner can define if conversion factor between base and sales units should be displayed in the web shop. If it is set to "true", then: - -| Example | Display Value | Product Details Page | -| --- | --- | --- | -| The base unit is meter and the sales unit is feet | "**1 meter=3,048 feet**" is displayed under the drop-down field with measuring units on product details page | ![Quantity](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Measurement+Units/Measurement+Units+Feature+Overview/quantity.png) | - -On the cart page, the user sees quantity both in base unit and sales unit. - -| Example | Display Value | Cart Page | -| --- | --- | --- | -| Suppose if base unit of cables is meters and the user selects to buy 12.19 feet of cable | Both, the quantity **4** and **12.19** feet are displayed on the cart page.
      12.19 (sales unit) = 4 (base unit) |![Quantity on the cart page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Measurement+Units/Measurement+Units+Feature+Overview/quantity_cart.png) | - -If user puts one and the same product in different sales units, they will be shown as two different items in the cart. - -The schema below illustrates relations between products and measurement units, where: - -* **conversion** - factor to convert a value from sales to base unit. If it is "null" then the information is taken from the global conversions (`MeasurementUnitConverter.php` file). -* **precision** - ratio between a sales unit and a base unit. For example, a base unit is "item", and user selects "kg" as a sales unit. -* **is_displayed** - If true, then the value is shown in shop. -* **is_default** - If true then the unit is shown as default unit in shop. -![Module relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Measurement+Units/Measurement+Units+Feature+Overview/product_units_relation.png) - -Let's take an example to better understand the feature. Suppose, 1 apple (1=factor) weights 0,1 Kg, then ratio will be 10 (1kg = 10 apples). If the precision is 100, the user can specify a number as 0.40 Kg (which will be 4 apples). Likewise, if in this case the user selects kg and precision is set to "1", it's quantity in sales units on the cart page will be "0", as precision 1 implies that no digits are shown after the decimal sign. Actually, - -`(Base Unit Value) = (User Input Sales Unit Value) * Precision / Factor` - -There can be two types of conversions in the system: - -* **Global conversions** - are defined in the code already (like from cm to meter). -* **Product-specific conversions** - are defined per product (like from 1 meter of cable to its weight). - - -If a global unit conversion exists between the base and sales unit, then factor and precision fields are optional. If no global unit conversion exists between the base and sales unit then factor and precision fields are mandatory. If precision is "null", then the information is taken from the product measurement unit's default_precision (default value is 1). - -| Core Level | Project Level | -| --- | --- | -| All the standard conversion ratios are defined in `Bundles/UtilMeasurementUnitConversion/src/Spryker/Service/UtilMeasurementUnitConversion/Model/MeasurementUnitConverter.php`. | Conversion, precision, as well as is_displayed and is_default parameters can be defined in `spy_product_measrument_sales_unit table`.
      Name of the measurement unit and some other data are stored to the `sales_order_item`.
      | - -## Current Constraints -- In the Spryker Commerce OS you cannot define measurement units for products. Currently, they are imported into the database manually. -- We strive to shift all business logic to our backend, however, with Measurements Units, a part of the calculations (e.g. quantity restrictions) are performed on Yves. -- On the shopping cart as well as the shopping list page, products do not have a dropdown to change the measurement units. You can select a measurement unit on the product details page only. -- A shopper cannot reorder the items with the selected measurement units as they are not added automatically. They should be added manually on the product details page. -- In the [Quick Add to Cart](/docs/scos/user/features/{{page.version}}/quick-add-to-cart-feature-overview.html) form and [search widget](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-lists-feature-overview.html#search-widget-for-shopping-lists), the products use the default measurement units that cannot be changed. - - diff --git a/docs/scos/user/features/201811.0/merchant-custom-prices-feature-overview.md b/docs/scos/user/features/201811.0/merchant-custom-prices-feature-overview.md deleted file mode 100644 index 66fa0a72117..00000000000 --- a/docs/scos/user/features/201811.0/merchant-custom-prices-feature-overview.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Merchant Custom Prices feature overview -description: This feature relates to prices set for individual merchant relations. Customers see only prices applying to them, based on their merchant relation. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/price-per-merchant-relation-feature-overview -originalArticleId: 717776ce-6677-4ef9-8c2a-1218a3120c73 -redirect_from: - - /v1/docs/price-per-merchant-relation-feature-overview - - /v1/docs/en/price-per-merchant-relation-feature-overview - - /v1/docs/price-per-merchant-relation - - /v1/docs/en/price-per-merchant-relation ---- - -When talking about product prices that depend on customers they refer to, we differentiate between two types: default prices and specific prices. - -- **Default prices** are the prices shown by default to all regular customers -- **Specific prices** are different prices meant for specific target audience -![Prices diagram](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Prices+per+Merchant+Relations/Prices+per+Merchant+Relation+Feature+Overview/prices_diagram.png) - -The different price categories that can be selected based on contextual information, like customer, merchant relationship, etc. is referred to as **price dimension**. - -Currently we have the following price dimensions: - -- Mode (Net/Gross) -- Volume -- Store -- Currency -- Merchant Relationship - -All prices in Spryker OS are stored in *spy_price_product_store*, however connections to price dimensions are stored to different tables. - -{% info_block infoBox %} -For example spy_price_product_default contains only connections to prices, which were imported during store installation or created using Zed UI, and connections to prices pertain to merchant relations, would reside in spy_price_product_merchant_relationship. So the spy_price_product_default table poses a set of relations between spy_price_product_default and fk_price_product_store table and related entities. -{% endinfo_block %} - -The **Prices per Merchant Relation** feature relates specifically to prices set for individual merchant relations. This feature implies that customers see only prices applying to them, based on their merchant relation, or default prices if merchant relation doesn't have prices for some products. - -The specific prices apply only to merchant relation assignee (business units, as a rule) and not to merchant relation owners. If a business unit of a customer has several merchant relations with different prices for one and the same product, the lowest price is offered. - - -**Default prices in the web-shop** -![Default prices in the web-shop](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Prices+per+Merchant+Relations/Prices+per+Merchant+Relation+Feature+Overview/default_prices.png) - -**Prices for merchant referring to a specific relation** -![Prices for merchant referring to a specific relation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Prices+per+Merchant+Relations/Prices+per+Merchant+Relation+Feature+Overview/merchant_prices.png) - -Besides setting specific prices for individual merchant relations products manually, the prices can also be added in bulk by importing them from a .csv file. The .csv file for import must contain populated `merchant_relation_key`, `abstract_sku and/or concrete_sku`, `price_type`, `store,currency`, `price_net`, `price_gross` fields. - -To import the specific prices for merchant relations from the .csv file residing in `data/import` inside the module `PriceProductMerchantRelationshipDataImport`, run - - - -```bash -console data:import product-price-merchant-relationship -``` -Or, if you want to import merchant from your file, indicate a path to it: - -```bash -console data:import product-price-merchant-relationship [-f [path_to_csv_file] -``` - - -To remove all imported merchant relation prices you can run: - -```bash -console price-product-merchant-relationship:delete -``` -Or, you can remove merchant relation prices referring to specific merchant relations by specifying their IDs: - -```bash -console price-product-merchant-relationship:delete [-m X] . X = MR ID -``` - diff --git a/docs/scos/user/features/201811.0/multi-channel/multi-channel.md b/docs/scos/user/features/201811.0/multi-channel/multi-channel.md deleted file mode 100644 index cd4eab19dae..00000000000 --- a/docs/scos/user/features/201811.0/multi-channel/multi-channel.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Multi-Channel -description: You can easily promote and sell your products and services across multiple channels beyond your store's website, on- and offline. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/multi-channel -originalArticleId: ef3a2410-828f-408e-886d-d91c50530eb9 -redirect_from: - - /v1/docs/multi-channel - - /v1/docs/en/multi-channel ---- - -
      -
      - - -
      -
      -You can easily promote and sell your products and services across multiple channels beyond your store's website, on- and offline. Build your Commerce OS with a responsive layout and ensure a smooth shopping experience across multiple devices, too. The responsive layout ensures that all content is displayed correctly across mobile, tablet and desktop devices of any kind. Allow your customers to seamlessly access your shop from any device. -
      -
      - -**Features:** - diff --git a/docs/scos/user/features/201811.0/multi-channel/multiple-touchpoints-integration.md b/docs/scos/user/features/201811.0/multi-channel/multiple-touchpoints-integration.md deleted file mode 100644 index 1acf05a40cc..00000000000 --- a/docs/scos/user/features/201811.0/multi-channel/multiple-touchpoints-integration.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Multiple Touchpoints Integration -description: With the Spryker Commerce OS, you can flexibly integrate any and as many customer-facing touchpoints as you wish. -last_updated: May 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-touchpoint-integration -originalArticleId: f73a0d15-3d23-4c04-a55f-cb3e0895b781 -redirect_from: - - /v1/docs/multiple-touchpoint-integration - - /v1/docs/en/multiple-touchpoint-integration ---- - -With the Spryker Commerce OS you can flexibly integrate any and as many customer facing Touchpoints you wish. Always stay ahead of your competition with for example, voice, car, bot or smart home commerce integrations. diff --git a/docs/scos/user/features/201811.0/multi-channel/responsive-design.md b/docs/scos/user/features/201811.0/multi-channel/responsive-design.md deleted file mode 100644 index 8bebb1d2f88..00000000000 --- a/docs/scos/user/features/201811.0/multi-channel/responsive-design.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Responsive Design -description: Customers visiting your store from a mobile device will be able to smoothly navigate and experience a seamless shopping journey. -last_updated: May 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/responsive-design -originalArticleId: cdb7f333-3c7d-4bbc-93d5-a6593ce5d59b -redirect_from: - - /v1/docs/responsive-design - - /v1/docs/en/responsive-design ---- - -Customers visiting your store from a mobile device will be able to smoothly navigate and experience a seamless shopping journey, thanks to the high-end responsive design of the Spryker Commerce OS. diff --git a/docs/scos/user/features/201811.0/multiple-carts-feature-overview.md b/docs/scos/user/features/201811.0/multiple-carts-feature-overview.md deleted file mode 100644 index edaebc5798c..00000000000 --- a/docs/scos/user/features/201811.0/multiple-carts-feature-overview.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Multiple Carts feature overview -description: Shopping Cart is where the record of the items a buyer has ‘picked up’ from the online store is kept. Select products, review them and add more with ease. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-carts-per-user-overview -originalArticleId: f1a35213-d5d5-4aeb-bd29-8416903ee604 -redirect_from: - - /v1/docs/multiple-carts-per-user-overview - - /v1/docs/en/multiple-carts-per-user-overview - - /v1/docs/multiple-cart-per-user - - /v1/docs/en/multiple-cart-per-user - - /docs/scos/user/features/201811.0multiple-carts-feature-overview.html ---- - -Shopping Cart is a part of the online shop where the record of the items a buyer has ‘picked up’ from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. - -## Creating and Managing Multiple Shopping Carts -There are two ways to create a shopping cart: - -* through a shopping cart widget in the header of shop -* from Shopping Cart page in *My Account* menu - -New items are added to the shopping cart by clicking **Add to Cart** on the product details page. - -Customers can create not just one, but multiple shopping carts to be used for different needs. - -{% info_block infoBox %} -These could be, for instance, a shopping cart for daily purchases or a shopping cart for goods that you purchase once in a month. -{% endinfo_block %} - -After a shopping cart has been created, it appears in the shopping carts table on _Shopping Cart_ page in _My Account_. - -The table with shopping carts shows details for each of the carts, including: - -* Name of the shopping cart -* Access level (Owner, Read-only or Full access) -* Number of products added to cart -* Price mode (Net or Gross) -* Cart Total -* Possible actions to manage shopping carts: edit name, duplicate, [share](/docs/scos/user/features/{{page.version}}/shared-carts-feature-overview.html), delete, switch cart to shopping list (see the *Actions* table for details) - -![Multiple carts list](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Multiple+Carts+per+User+Feature+Overview/multiple-carts-list.png) - -The table bellow provides detailed information on the possible actions to manage shopping carts. - -| Action | Description | -| --- | --- | -| Edit Name | Allows a customer to edit the name of the shopping cart. | -| Duplicate | Creates a copy of the chosen shopping cart including the items added to the cart.
      The duplicate copy of the cart is named according to the template: ` Copied At `
      A cart can be converted into shopping list on Shopping cart page by clicking on **To shopping list**.| -| Delete | Deletes the shopping cart.
      Deleting a shopping cart also deletes the items added to it. | - -To learn more about sharing the shopping cart, check out [Shared Cart documentation](/docs/scos/user/features/{{page.version}}/shared-carts-feature-overview.html). - -Active shopping cart is highlighted in bold. - -{% info_block infoBox %} -Only one shopping cart can be set as active in the customer account. -{% endinfo_block %} - -There are 2 ways to set a shopping cart as active: - -* clicking on the cart name in the shopping cart widget in the header of the shop -* clicking on the cart name in the Shopping Cart page in My Account menu - -After the shopping cart is set to active, the user is redirected to a respective cart page where the table with the following information is available: - -* Product image -* Product name -* SKU -* Product attributes -* Product options -* Quantity -* Note -* Price mode -* Item price -* Cat Note -* Discount -* Subtotal -* Tax -* Grand Total - -![Shopping Cart Page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Multiple+Carts+per+User+Feature+Overview/shopping-cart-page.png) - - - - - diff --git a/docs/scos/user/features/201811.0/navigation-feature-overview.md b/docs/scos/user/features/201811.0/navigation-feature-overview.md deleted file mode 100644 index c4e51f11bda..00000000000 --- a/docs/scos/user/features/201811.0/navigation-feature-overview.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Navigation feature overview -description: The navigation is built in a tree structure to support multiple levels of linking, e.g. to categories, external links, search results and CMS pages. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/hierarchical-navigation -originalArticleId: 2ec405d4-e199-43c5-9e45-46c66921fa2b -redirect_from: - - /v1/docs/hierarchical-navigation - - /v1/docs/en/hierarchical-navigation - - /v1/docs/content-based-shop-navigation - - /v1/docs/en/content-based-shop-navigation - - /v1/docs/navigation - - /v1/docs/en/navigation - - /v1/docs/product-based-shop-navigation - - /v1/docs/en/product-based-shop-navigation ---- - -The Spryker Commerce OS navigation is built in a tree structure to support multiple levels of linking to: - -* categories -* external links -* search results -* CMS pages, etc. - -Breadcrumbs help your customers navigate through your shop easily by highlighting the path to the page they are on. Breadcrumbs appear on product details, catalog and checkout pages. - -Customize your store's navigation in the **Back Office** and add, edit or delete elements. Build relationships to pages outside the store, to support SEO capabilities through backlinks for improved ranking, or special promotions. Easily set validity dates for your navigational elements. Breadcrumbs highlight the path to the page the user is on. - -* Define different types of navigation (any sort of list) that can be placed anywhere in the shop and can be administrated manually -* Validity dates -* Links to internal & external URLs -* Auto-suggest to create links to category & CMS pages - -## Current Constraints -Currently, the feature has the following functional constraints which are going to be resolved in the future: - -* Navigation elements are hardcoded inside templates and inherit their store relation. -* If a template is implemented in a store, its navigation elements are shown there too diff --git a/docs/scos/user/features/201811.0/non-splittable-products-feature-overview.md b/docs/scos/user/features/201811.0/non-splittable-products-feature-overview.md deleted file mode 100644 index d832f5047ec..00000000000 --- a/docs/scos/user/features/201811.0/non-splittable-products-feature-overview.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Non-splittable Products feature overview -description: The article describes the concept of product quantity restrictions- its types and how they can be set -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-quantity-restrictions-overview -originalArticleId: 0860adb4-807a-425b-9f29-877a552ac8e9 -redirect_from: - - /v1/docs/product-quantity-restrictions-overview - - /v1/docs/en/product-quantity-restrictions-overview - - /v1/docs/product-quantity-restrictions - - /v1/docs/en/product-quantity-restrictions - - /docs/scos/user/features/201811.0/non-splittable-products/non-splittable-products-feature-overview.html ---- - -On the *Edit product* page of the Administration interface, the administrator can set **quantity restrictions** for product concretes. Quantity restriction values define the amount of items that customer can put into the cart. You can set three values for quantity restrictions: minimum, maximum, interval. Minimum value defines the smallest allowable quantity of a specific item in cart. Maximum quantity restricts the allowable quantity of items in cart to a specific value. Interval value determines an increment value by which the quantity can be changed. For example, if you specify minimum quantity as 5, interval as 3, and maximum quantity as 14, it means that user can put 5, 8, 11 and 14 items to cart. If user puts an unacceptable quantity of items to cart, they will be suggested to buy another, allowable, quantity of items. - -The shop administrator can either enable or disable the quantity restrictions in the *Quantity restrictions* tab for products. If they are enabled, the minimum and interval values must be specified, and maximum value is optional. If the quantity restrictions are not set, basic rules are applied - minimum quantity is 1 and no maximum restriction. - -## Current Constraints -According to the current setup, quantity suggestions in the quantity restrictions do not work with the shopping lists. A buyer can add any quantity of the product in the shopping list. It can lead to a situation where the customer is forced to guess what amount should be added from a shopping list - because they will not see quantity suggestion on the shopping list page. However, when they add this product from a shopping list to a shopping cart, an error message will appear notifying the buyer that a selected amount cannot be added (if any quantity restrictions were set up for this product). - - diff --git a/docs/scos/user/features/201811.0/order-management-feature-overview/oms-order-management-system-matrix.md b/docs/scos/user/features/201811.0/order-management-feature-overview/oms-order-management-system-matrix.md deleted file mode 100644 index b6cc542405d..00000000000 --- a/docs/scos/user/features/201811.0/order-management-feature-overview/oms-order-management-system-matrix.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: OMS (Order Management System) Matrix -description: Efficiently keep track of the order processing and ensure quick fulfillment. With the Order Management, you can keep your order processing running smoothly. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/oms-matrix -originalArticleId: 0eeea4d1-d793-41b2-ba4c-995893adbdca -redirect_from: - - /v1/docs/oms-matrix - - /v1/docs/en/oms-matrix ---- - -The **OMS Matrix** gives you a quick overview of all orders and their current statuses, taken from the State Machine. It allows you to see how many order items currently exist in each status and for how long they have been there. From this overview you can easily go into a detail per status and order page. - -It is a view into all sales order items and their current states. The matrix shows how many items exist per state and how long they stay here already. - -They have started highly manually: every step from order to fulfillment was done by a support team. A typical culture of heroes. With increasing amount of sales orders, the entire process or subprocesses have been automated, for example with a lot of if-then-else statements. This easily ends up in unmaintainable spaghetti code. Others have introduced an ERP system, which results in a distributed logic between shop and ERP. In both cases the documentation of the implemented process can only be found in the code and development efficiency decreases with the increasing complexity. But this has also an effect on operations: Support teams need to use many tools to understand the flow of a sales order. Process insight and process performance indicators are missing. Typically there are a set of KPI aggregated in a Data Warehouse, but KPI reflect a result, if you want to understand why a specific result was realized Process Performance Indicators allow to dig deeper. - - - -## Process Management as a Solution? -Business Process Management is a management discipline that focuses on processes rather than on departments or functional units. Processes describe how and where value is created for a customer. Typically processes start outside of the company, are then processed within to finally end outside again. - -Order 2 Cash is an important process that describes all activities needed that an incoming sales order needs to go through to finally end in a positive cash flow. So rather than managing a single department (finance, fulfillment, logistics), the entire flow of tasks is in focus. Because only a well orchestrated collaboration of all departments and third parties like logistic leads to efficient value creation for the customer. The process is the link between customers, departments, suppliers and logistics. - -![Process management](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/OMS+matrix/process_management.png) - -### How Do You Manage a Process? -First of all it is important to understand what tasks are executed in which order. Defining “to be” process ensures common understanding for all involved parties. A process model helps to make implicit knowledge of individual player explicitly understandable for everyone involved. This understanding helps to align everyone and execute tasks in a standardized fashion. - -If a to be processes is established it needs to be monitored. Does the idea of how a sales order should be process reflects the reality? Process performance indicators help to measure how efficient a process creates value for the customer. Together with the process model they give the basis to improve the process. If a process is executed more often, aspects that were an edge case at the beginning, are now worth to be explicitly modeled in the next version. - -{% info_block infoBox "Managing the Sales Process " %} -The goal of continuous process improvement is to enter a cycle of (re -{% endinfo_block %}design, execution and monitoring. That means a specific process is actively managed. Ideally an improvement iteration can be done in very short time.) - -## Sales Order Processing in the eCommerce World -Processes in the eCommerce world have the potential to be highly automated. That means that the different tasks are executed in the IT landscape. Often spanning different IT systems. Creation of sales order in a shop systems, fulfillment with the help of fulfillment provider, finance and controlling in an ERP system. To actively manage theses processes an understanding of the implemented processes is needed as well as a possibility to measure their performance. In my time as a consultant we did often archeology projects, how I used to call them. To understand the current implementation we had to analyze the code. Documentation was typically only maintained until the mid of a project. Process performance indicators were nearly always missing. Only indirect measurement were possible. This is not a good basis for continuous improvement. If you don’t know where you are, it is impossible to tell where to go next. - -At the same time processes are highly individual. If you sell concert tickets, music or other digital products, you need totally different processes than someone who sells physical goods. And if you have a make to order process installed it looks different again. - -So the driving forces are the need to design and execute highly individual processes and manage them continuously to increase process efficiency. A classical approach with specification and implementation is slow and error prone. (see business IT gap) Spryker takes a totally different approach, instead of writing specifications and implementing them, process model are executed. That is right: The process model itself is understood by the spryker engine. - -## Sales Order Process Management With Spryker -A typical improvement cycle with Spryker looks like this: first the “to be” processes are modeled involving process and technical experts. This makes sure business and it aspects are reflected. Misunderstandings can be identified very fast and common understand of the order processing process can be established in the company. The process model is then transferred into an technical notation that the Spryker engine can execute. The process model allows to add hooks that execute php coding. Examples are sending a shipment notification email, creating a credit card preauthorization or registering a shipment with the logistic provider. The process model itself orchestrates these technical functions. It tells in which order which technical building blocks have to be executed. - -![Sales order process](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/OMS+matrix/sales_order_process.png) - -Every state in the process model can be mapped to a business state. This allows to measure process performance. How many processes are in pick pack ship subprocess? How much time does it typically take? How many credit card authorizations have failed? How long does it take to process a return? Furthermore the Spryker user interface allows to track where in the process every sales order item is. This give a process insight to support teams that talk with customers. How many processes fail? Is a problem an edge case or is it worth to be automated? All kind of Process Performance Indicators (PPI) can be defined. - -If it is about to start the next process improvement iteration, the current process model is already available. No need to look into the coding to understand what the engine actually executes. The process model combined with the performance indicator form the basis for the next improvement. Which can also be realized in very short time. The process models needs to be updated, and new hooks are implemented. Then the new process can be executed and monitored again. - -The advantages are clear: highly individual processes can be designed with a model that allows a common understanding of all stakeholders. The process itself can be measured and weak spots identified. This allows the company to do what is actually supposed to do: Continuously improving the way how customer value is created. diff --git a/docs/scos/user/features/201811.0/order-management-feature-overview/order-management-feature-overview.md b/docs/scos/user/features/201811.0/order-management-feature-overview/order-management-feature-overview.md deleted file mode 100644 index cf6ce431450..00000000000 --- a/docs/scos/user/features/201811.0/order-management-feature-overview/order-management-feature-overview.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Order Management -description: Efficiently keep track of the order processing and ensure quick fulfillment. With the Order Management, you can keep your order processing running smoothly. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/order-management -originalArticleId: e3a5a9ad-1a94-41c9-ae61-130ce211295c -redirect_from: - - /v1/docs/order-management - - /v1/docs/en/order-management - - /v1/docs/offer-management - - /v1/docs/en/offer-management - - /v1/docs/order-processing - - /v1/docs/en/order-processing ---- - -
      -
      - - -
      -
      -Efficiently keep track of your order processing and ensure quick fulfillment. Manage incoming orders through the Administration Interface and effortlessly view and edit orders, track their progress or contact customers of open orders directly. With the compact Order Management features you can easily keep your order processing running smoothly. -
      -
      - -**Features:** - diff --git a/docs/scos/user/features/201811.0/order-management-feature-overview/splittable-order-items-overview.md b/docs/scos/user/features/201811.0/order-management-feature-overview/splittable-order-items-overview.md deleted file mode 100644 index 73da2f52759..00000000000 --- a/docs/scos/user/features/201811.0/order-management-feature-overview/splittable-order-items-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Splittable Order Items overview -description: Product concretes are splittable. Avoid the creation of numerous sales order items, make them non-splittable (no many sales orders, only one will be created). -last_updated: Oct 15, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/splittable-order-items-feature-overview -originalArticleId: 8667bd89-9a09-4ba9-a079-8cd191cd0cc3 -redirect_from: - - /v1/docs/splittable-order-items-feature-overview - - /v1/docs/en/splittable-order-items-feature-overview - - /v1/docs/splittable-order-items - - /v1/docs/en/splittable-order-items ---- - -As a final step of checkout, for each item in the cart, sales order items are created. By default, each product concrete is splittalble: for example, if the product concrete is a pallet containing 1000 cans, 1000 sales order items will be created in the database upon checkout. To avoid creation of numerous individual sales order items for such products, you can make them non-splittable - i.e instead of many sales orders, just one will be created. This can be achieved by specifying either "true" of "false" value for `is_quantity_splittable` field in the product table. `is_quantity_splittable` attribute (true by default) controls how many sales order items should be created as a result of checkout. - -Depending on the `is_quantity_splittable` value, different amount of splittable order items (SOI) is created. But the following is always true: - -``` -cart item quantity = sum(SOI[i].quantity) -``` - -The table below shows quantities that will be created in the system if a concrete product, containing 5 product, would have `is_quantity_splittable` attribute set to true and false: - -| Cart item | is_quantity_splittable | Cart Item Quantity | Number of SOIs created | Quantities Within the SOIs | -| --- | --- | --- | --- | --- | -| example concrete 1 | true | 5 | 5 | _1 | -| example concrete 2 | false | 5 | 1 | 5 | - -Product concrete with `is_quantity_splittable = true` has a separate line for each order item in the web shop: -![Order details](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Splittable+Order+Items/Splittable+Order+Items+Feature+Overview/SOI.png) - -Product concrete with `is_quantity_splittable = false` is counted as one sales item in the web shop: -![is_quantity_splittable = false](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Splittable+Order+Items/Splittable+Order+Items+Feature+Overview/SOI-false.png) - -It is possible to import splittable information for product concretes in the `product_concrete.csv` file by setting the value of the `is_splittable` field to either 1 or 0. - -To import concrete products, run the following command: - -`console data:import product-concrete` - -For non-splittable order items, a Back Office user sees just one product per non-splittable item in the Back Office. For example, if a customer makes an order containing a non-splittable product in the quantity of 2, just 1 sales item with quantity = 2 (1 line) is created in the database. A Back Office user aslo sees just one sales order item (1 line) in _Number of Items_ column of the **Order Overview** page, and actual quantity of items in the order is shown in the _Quantity_ field of the Order details page. - -Both non-splittable and splittable order items can be refunded in the Back Office. However, unlike splittalbe orders, it is impossible to refund orders with unsplittable items partially - only the whole order can be refunded, irrespective of its quantity. Currently, there are 2 prices in the `ItemTransfer` which are in balance: _RefundableAmount_ and _CanceledAmount_. The refundable amount is calculated by the formula: - -`refundable amount: sumPriceToPayAggregation - canceledAmount` - - diff --git a/docs/scos/user/features/201811.0/packaging-units-feature-overview.md b/docs/scos/user/features/201811.0/packaging-units-feature-overview.md deleted file mode 100644 index 155ae3dea42..00000000000 --- a/docs/scos/user/features/201811.0/packaging-units-feature-overview.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Packaging Units feature overview -description: Unit of measure that is used as packaging for a product is referred to as packaging unit and a shop can sell the same product in different packaging units. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/packaging-units-overview -originalArticleId: ae2ad425-2702-4361-bf2f-d42e0720e690 -redirect_from: - - /v1/docs/packaging-units-overview - - /v1/docs/en/packaging-units-overview - - /v1/docs/packaging-units - - /v1/docs/en/packaging-units - - /v1/docs/packaging-measurement-units - - /v1/docs/en/packaging-measurement-units ---- - -{% info_block infoBox "Terminology used throughout the article" %} -
      DefinitionDescription
      Packaging unitUnit of measure that that is used to pack product items into one packaged product.
      Leading productProduct of a packaging unit that shares its stock to another product.
      Non-leading productProduct with which stock is shared.
      Product packaging unit groupGroup of products in a packaging unit that has a leading product.
      QuantityNumber of times a product/package is added in the cart.
      AmountStock unit included in the packaged product.
      Base unitBasic unit of measure for a product, relative to which all conversions are made.
      Sales unitAlternate unit of measure used besides the default base unit.
      Sales orderPlaced order.
      Sales order itemOrdered product included in a sales order.
      Sales unit amountAmount of items in a sales unit.
      -{% endinfo_block %} - -The Packaging Unit feature introduces a **packaging unit** that is a unit of measure used as packaging for a product. It allows including the amount of stock into a product a customer wants to buy. A shop owner can sell the same product in different packaging units, for example, apples can be sold as an "Item", a "Bag" of apples or a "Pallet" of apples. The "bag", "pallet", "box" etc. are referred to as *packaging unit types*. - -Each packaging unit is defined on an abstract product level and is represented by one product variant, for example: - -| ABSTRACT PRODUCT | CONCRETE PRODUCT / VARIANT | PACKAGING UNIT | -| --- | --- | --- | -| Apple | "An apple" | Item | -| Apple | "Bag of apples" | Bag | -| Apple | "Pallet of apples" | Palett | - -## Leading products - -The **leading product** represents the relation between two concrete products and holds the availability. The measurement unit, defined on an abstract product level, is the stock unit for all the concrete products of the abstract product. A group of products in a packaging unit, that has a leading product, is called a **product packaging unit group**. Each packaging unit includes a certain amount of products by default (default amount). The shop owner can choose whether the packaging unit, for example, a bag, has a separate stock or shares stock with the contained item. In our example, the different product variants have their own SKUs and prices, but they represent the same physical product in the warehouse. To share the information about availability among these variants, we use the concept of a **leading product**. - -However, leading products are not always relevant. Packaging units that represent a package of items which quantity can not be changed, do not need a leading product. In this case, the availability of the packaged items themselves, not individual items in the package, matters. Such packaged products actually behave like normal abstract products for which customers might have a possibility to select applicable sales units (see Measurement Units per Product to learn about product sales units). - -Basically, when a packaging unit does not use the leading product, it means that the stock is not shared. - -{% info_block infoBox "Info" %} - -For example, if there is a leading product in the product abstract with 3 packagings, where 1 of the packages "has no lead product", it means that the 2 other packages actually consume the same product when you buy them. But the 3rd packaging (which does not use the leading product - -{% endinfo_block %} is completely independent from a stock perspective, it only depends on its own stock.) - -To reflect the availability of a leading product for a packaging unit and to define which concrete product SKU is the leading one, the `lead_product_sku` attribute is used. - -The shop owner can define various sales units for the packaging units. For example, for a chocolate bar, the base unit could be set to item, and the sales units could be box, packet or gift box with variable or fixed amount of chocolate bars in them. - -![Packaging Unit](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/sales-units-dropdown.png) - -Read on to learn about the product packaging unit amount options. - -## Product packaging unit amount - -A packaging unit usually contains multiple items of a product. For instance, a "Bag of apples" can contain 10, 20, 40... apples. This information is called the **amount** of a packaging unit. - -The packaging unit amount can be: - -| PACKAGING UNIT AMMOUNT | DESCRIPTION | -| --- | --- | -| Default (default_amount) | Default amount of items that a customer can buy.
      For example, a customer can buy 40 apples.
      Also, this value is used for calculating a price when the custom amount is provided. The Amount field in the online shop is pre-filled with a value set in `default_amount`.| -| Variable (is_variable=true) | Customer can buy any number of that item (respecting the amount restrictions). In case of a variable amount the price is adjusted by the formula: (Price) * (Customer Input) / (Default Amount). | -| Fixed (is_variable=false) | Customer can buy a pre-determined, fixed amount of items. When is_variable is set to "false", all amount_* values are set as NULL. When the amount is non-variable the customer can still see the default amount, but can not change it.
      However, if a product has a sales unit set for it, the customer is able to select a different sales unit for the amount, which will adjust the displayed amount according to that sales unit.
      See Measurement Units per Product to learn about product sales units. | -| Interval amount (amount_interval) | Interval of amounts that a customer can buy.
      For instance, you can buy only 40, 80, 120, ... but not 45.
      The interval is shifted by the minimum value (e.g: minimum = 5, interval = 3; valid values: 5, 8, 11, ...). Only relevant if is_variable=true.
      If the amount is set as variable, by default, the interval amount is set to 1. | -| Minimum amount (amount_minimum) | Minimum amount that a customer can buy.
      For instance, you cannot buy less than 1 apple.
      Only relevant if is_variable=true. If the amount is set as variable, by default, the minimum amount equals the interval amount.| -| Maximum amount (amount_maximum) | Maximum amount that a customer can buy.
      For instance, you cannot buy more than 10 apples.
      Only relevant if is_variable=true. | - -The schema below shows relations between products, packaging units, their types, and amounts: - -![Database relations scheme](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/database-relation-scheme.png) - -All packaging units having leading products, have a base unit of measure and can also have various sales units reflecting the amount of items in the packaging units. - -{% info_block infoBox "Info" %} - -For example, a packaging unit "bag" can be set to have "item" as a base unit and can also have "kg" and "g" as sales units (see Measurement Units per Product to learn about base and sales units for products). - -{% endinfo_block %} - -The amount of items contained in a sales unit is referred to as **sales unit amount**. If a customer chooses a sales unit amount, which is in between 2 available amounts (due to amount restriction settings), a higher or lower amount should be selected. - -{% info_block infoBox "Info" %} - -If there is no lower/higher amount available, the customer is suggested to buy just a higher/lower amount respectively. - -{% endinfo_block %} - -When the very same item is added to the cart with a different amount of sales units or with the same amount but a different sales unit, the item appears in the cart in the form of separate items. - -{% info_block infoBox "Info" %} - -Meaning it will be one sales order containing multiple order items. - -{% endinfo_block %} - -## Stock Calculation and Definition - -In Spryker Commerce OS, customers can buy a product defined by the following elements: - -* Quantity that means the number of times a customer adds the product to cart -* Amount (only for packaged products) that means how many items the packaged product contains - -The stock will then be calculated as follows: -*Reserved stock = Quantity x Amount* - -The Quantity value will always be an integer. It is used to split the ordered products into **sales order items**. - -For example, a customer wants to purchase 3 smartphones. In terms of Spryker OS, 1 smartphone is bought 3 times. In the Back Office, you'll see the order split into 3 sales order items: sales order item #1 with 1 smartphone, sales order item #2 with 1 smartphone, and sales order item #3 with 1 smartphone. This allows you to refund each smartphone separately. - -### Products with a decimal value in the stock - -The shop owner can also define stock in a decimal value, for example, 2.5, 5.65, 0.75, etc. - -For example, you define your stock as 'kilogram' and have in stock 400.50 kg salmons. Each salmon weighs 2.5 kg. A customer wants to buy 10 salmons. If you consider each salmon to be a usual concrete product in your system, you will end up with a wrongly calculated stock. Since according to the formula, the customer buys 1 (amount) salmon 10 (quantity) times, which equals 10. To define a proper relation between your stock and what your customers can purchase, you need to use the Packaging Unit feature, which will convert salmons into packages: 1 salmon = 2.5 kg = 1 package. So, when your customer buys 10 salmons, you get the correct calculation: Quantity (10 packages) multiplied by Amount (2.5) equals 25 kg of stock. - -## Packaging units scenarios - -**Case 1. Products are sold as a package containing some fixed amount of stock.** - -In this example, we sell Atlantic salmon as a package containing **37.44** kg of fish and set a price per kilogram. 37,44 is the default value for the **Amount** field. Here your customer can change only quantity but cannot select the **Amount** value, because **Amount** is not a variable in this case. - -Thus, when the customer wants to buy 3 packages of fish, it means that they buy 3 packages with 37,44 kg per package. - -![case 1](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+&+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/case1.png) - -To calculate stock, Quantity is multiplied by Amount (the default value). The resulting value will be subtracted from the current stock. - -**Case 2. Products are sold in measurement units, the amount of stock is variable.** - -In this example, we sell potatoes as kilograms and, thus, set a price per kilogram. Potatoes are sold as a package containing 1 kg (the default value for the **Amount** field). However, a customer can select how much potatoes they want to buy per package because **Amount** has been defined as a variable. In our example, the customer decided to buy 2 packages with 2.5 kg per each. -![Case2](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+&+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/case2.png) - -**Case 3. Products are sold with shared stock enabled.** - -In this example, we can sell VGA cables as items (ring) and meters (as long as you want). The price has been set per meter. We define that VGA cables share their stock with **VGA cables as long as you want**. It means that the leading product for VGA cable has been set to the **VGA cable as long as you want** product packaging type. - -If a customer selects **Ring**, they can set only quantity (in our example, 3) because **Amount** has not been specified as a variable. - -![Case3](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+&+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/case3.png) - -After the customer places the order, in the Back Office, we see the following: - -* Availability for the leading product (**VGA cables as long as you want**) decreased by 4.5 (amount of reserved products) -* Availablity for the non-leading product (**VGA cables**) decreased by 3 (quantity of reserved products). -Then, the customer decided to select the **As long as you want** packaging unit type. In this case, they can set quantity and specify how many meters or centimeters of cables there will be in the packaging unit amount. This is possible because **Amount** is a variable for this packaging unit type. - -![Case3-1](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+&+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/case3-1.png) - -In our example, the customer set the **meter** for a sales unit, selected **3.5** - for the **Amount** field and **2** - for the **Quantity** field. The default value for **"As long as you want"** is set to **0.5**. - -Once the order has been placed, we can navigate to the Back Office and see the following: - -* Availability for the leading product (**VGA cables as long as you want**) decreased by 11.5 (amount of reserved products) -* Availablity for the non-leading product (**VGA cables**) didn't change from the previous time. -The figure below shows how these items and packaging units appear in the cart. - -![Cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Packaging+%26+Measurement+Units/Packaging+Units/Packaging+Units+Feature+Overview/cart-with-items.png) - -In our example, the following conditions are met: - -* We put different packaging units into the cart. -* The products have different sales units. -* The amount has different sales units. -* There are products with a fixed and a variable amount of stock. - -## Current constraints - -* In the Spryker Commerce OS, you cannot define packaging units for products in the Back Office. Currently, they are imported to the database manually. See HowTo - Import Packaging Unit Types for more details. -* We strive to shift all business logic to our backend, however, with Packaging Units, calculations are performed on Yves. -* On the shopping cart as well as the shopping list page, products do not have a drop-down to change the packaging units. You can select a packaging unit on the product details page only. -* A shopper cannot reorder the items with the selected packaging units as they are not added automatically. They should be added manually on the product details page. -* In the Quick Order form and search widget, the products use the default packaging units that cannot be changed. Flexible packaging units are not supported on the **Quick Order** page. - -{% info_block infoBox "Example:" %} - -You have a product in your shop - a pen. And there exists a packaging unit for a pen - a box with a minimum amount of 5 items in it up to the maximum amount of 50 pens available. Every shopper can define the necessary amount of pens that will be included in the box and order several such boxes. But on the Quick Order page, if the customer adds a pen with the packaging unit 'box', the box consisting of minimum 5 items will be added by default. - -{% endinfo_block %} - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Import Packaging Unit Types](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/data-imports/howto-import-packaging-units.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Packaging Units feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/packaging-units-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/payments-feature-overview.md b/docs/scos/user/features/201811.0/payments-feature-overview.md deleted file mode 100644 index bb714a51dae..00000000000 --- a/docs/scos/user/features/201811.0/payments-feature-overview.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Payments feature overview -description: Orders can be paid with none, one or multiple payment methods that can be selected during checkout. Offer multiple payment methods for a single order. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-payment-methods-per-order -originalArticleId: 9fa017f8-21c6-442e-9b21-07f7a4729af5 -redirect_from: - - /v1/docs/multiple-payment-methods-per-order - - /v1/docs/en/multiple-payment-methods-per-order - - /v1/docs/dummy-payment - - /v1/docs/en/dummy-payment - - /v1/docs/payment-provider-integration - - /v1/docs/en/payment-provider-integration - - /docs/scos/user/features/201811.0/payment/payment.html - ---- - -The *Payments* feature allows your customers to pay for orders with none (for example, a [gift card](/docs/scos/user/features/{{page.version}}/gift-cards-feature-overview.html), one or multiple payment methods during the checkout process. Most orders are paid with a single payment method but in some cases, it may be useful to allow multiple payment methods. For instance, the customer may want to use two credit cards or a gift card in addition to a traditional payment method. - -With different payment gateways, like Amazon Pay, PayPal and BS Payone, you can adapt to your customers' needs and define the availability of payment methods based on customer preferences and country-specific regulations. - -To make it possible, your customers to select a payment method during the checkout, you should fulfill the following conditions: - -* Make it active. -* Assign to specific stores. - -This can be configured in the Back Office. - -The Spryker Commerce OS offers integrations with several payment providers that can be used in the checkout and order management. Easily define the availability of a provider based on customer preferences and local regulations and specify the order the providers are displayed in during checkout. - -## Payment providers - -The Spryker Commerce OS supports integration of the following payment providers, which are our official partners: - -* [Adyen](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/adyen.html) -* [AfterPay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/afterpay.html) -* [Amazon Pay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/amazon-pay.html) -* [Arvato](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/arvato.html) -* [Billie](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/billie.html) -* [Billpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/billpay/billpay.html) -* [Braintree](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/braintree.html) -* [BS Payone](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/bs-payone/bs-payone.html) -* [Computop](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/computop.html) -* [CrefoPay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/crefopay.html) -* [Heidelpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/heidelpay.html) -* [Klarna](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/klarna.html) -* [Payolution](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/payolution.html) -* [Powerpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/powerpay.html) -* [ratenkauf by easyCredit](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/ratenkauf-by-easycredit.html) -* [RatePay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/ratepay.html) - -## Dummy payment - -By default, Spryker provides the [DummyPayment](https://github.com/spryker/dummy-payment) module, which has Credit Card and Invoice payments implemented. You can use these implemented payment methods, or refer to the DummyPayment modulewhen implementing additional payment methods in your project. -For details on how a new payment method is implemeted, see the articles on [how to implement the Direct Debit payment method](/docs/scos/dev/back-end-development/data-manipulation/payment-methods/direct-debit-example-implementation/implementing-direct-debit-payment.html). Based on the examples in these articles, you can implement other payment methods for your projects. - -## Payment methods in the Back Office - -In the Back Office, you can view all payment methods available in the shop application, make a payment method active (visible) or inactive (invisible) in the Payment step of the checkout process. In addition, you can define stores in which a payment method will be displayed. If changed, the payment methods will be updated in the checkout as well. - -{% info_block warningBox "Note" %} -Keep in mind that prior to managing payment methods in the Back Office, first, you need to create them by [importing payment methods data using a .CSV file](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-payment-method.csv.html). -{% endinfo_block %} - -![List of payment methods](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Payment/Payment+Methods+Overview/payment-methods-list.png) - -See [Managing Payment Methods](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/payment-methods/managing-payment-methods.html) to learn more on how to make a payment method available during the checkout and assign it to different stores. - - - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Manage payment methods](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/payment-methods/managing-payment-methods.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Payments feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/payments-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/prices-feature-overview/prices-feature-overview.md b/docs/scos/user/features/201811.0/prices-feature-overview/prices-feature-overview.md deleted file mode 100644 index 2d607dc9242..00000000000 --- a/docs/scos/user/features/201811.0/prices-feature-overview/prices-feature-overview.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Prices feature overview -description: In the article, you can find the price definition, its types, how the price is inherited and calculated. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/price-functionality -originalArticleId: 99858c26-17a4-4ba5-85af-901cf5441c8c -redirect_from: - - /v1/docs/price-functionality - - /v1/docs/en/price-functionality - - /v1/docs/price - - /v1/docs/en/price - - /v1/docs/net-gross-price - - /v1/docs/en/net-gross-price - - /v1/docs/auto-detect-currency - - /v1/docs/en/auto-detect-currency - - /v1/docs/multiple-currencies-per-store - - /v1/docs/en/multiple-currencies-per-store ---- - -A price can be attached to an abstract product as well as to a concrete product. The price is stored as an integer, in the smallest unit of the currency (e.g. for Euro that would be cents). - -Each price is assigned to a price type ( e.g. gross price, net price ) and for a price type there can be one to n product prices defined. Price type entity is used to differentiate between use cases: for example we have DEFAULT and ORIGINAL type where we use it for sale pricing. - -The price can have gross or net value which can be used based on a price mode selected by customer in Yves. You can have shop running in both modes and select net mode for business customer, for example. Price also has currency and store assigned to it. -![Price calculation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Price+Functionality/price_calculation.png) - -## Price Inheritance - -As a general rule, if a concrete product doesn’t have a specific entity stored, then it inherits the values stored for its abstract product. This means that when getting the price entity for a specific product, first a check is made if a price is defined for the SKU corresponding to that product: if yes, then it returns that price, but if not, then it queries an abstract product linked to that product and checks if it has a price entity defined. - -If it still can’t find a price, then it throws an exception (basically this shouldn’t happen if the products have been exported and are up to date). - -The diagram bellow summarizes the logic for retrieving the price for a product: -![Price retrieval logic](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Price+Functionality/price_retrieval_logic.png) - -## Price Calculation - -The concerns for the product price calculation are the following : - -* retrieve valid price for the product -* calculate amount of tax - -price for the options that were selected for the product (e.g.: frame, fabric, etc.) -For more information, see [Checkout Calculation](/docs/scos/user/features/{{page.version}}/cart-feature-overview/calculation/calculation-3.0.html). diff --git a/docs/scos/user/features/201811.0/prices-feature-overview/volume-prices-overview.md b/docs/scos/user/features/201811.0/prices-feature-overview/volume-prices-overview.md deleted file mode 100644 index 1670e0e8a86..00000000000 --- a/docs/scos/user/features/201811.0/prices-feature-overview/volume-prices-overview.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Volume Prices overview -description: Volume pricing helps the merchants to gain the commitment of the customers. Providing volume discounts results in increasing the placement of large orders. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/volume-prices-overview -originalArticleId: bd5f06f6-f8bc-4e53-ad12-a82b1f07abba -redirect_from: - - /v1/docs/volume-prices-overview - - /v1/docs/en/volume-prices-overview - - /v1/docs/volume-prices - - /v1/docs/en/volume-prices ---- - -In highly competitive markets, the business tactic is made compelling by issuing drastic discounts when buying products in large quantities or volumes. - -Volume pricing helps the merchants to gain the commitment of the customers. Providing volume discounts result in increasing the placement of large orders with the small ones. Large orders are preferred as they reduce the expenses incurred by the company. - -Such incentives allow a business company to purchase additional inventory at a reduced cost and allow sellers or manufacturers to reduce the products by selling more units and increase their revenues per transaction. - -The schema below illustrates the connection between `spy_price_product_store` table links `spy_price_product_merchant_relationship` with the `spy_currency` and `spy_store` tables. -![Database schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-dbschema.png) - -`price_data` in` spy_price_product_store` table contains a JSON with prices per mode, currency and type. - -{% info_block infoBox %} -("price_data" -{% endinfo_block %} field is a JSON with attributes such as volume prices, merchant prices, customer prices and then a specific set of prices inside its price type (["QTY" => 10, "GROSS(DEFAULT)" => 100, "NET(DEFAULT)" => 90]).) - - -You can find the example of the JSON below: - -```js -[ - "EUR" => [ - "GROSS_MODE" => [ - "DEFAULT" => 9999, - "ORIGINAL" => 12564, - ], - "NET_MODE" => [ - "DEFAULT" => 8999, - "ORIGINAL" => 11308, - ], - - "price_data" => ["QTY" => 10, "GROSS(DEFAULT)" => 100, "NET(DEFAULT)" => 90], ["QTY" => 20, "GROSS(DEFAULT)" => 90, "NET(DEFAULT)" => 80] - ], - "CHF" => [ - "GROSS_MODE" => [ - "DEFAULT" => 11499, - "ORIGINAL" => 14449, - ], - "NET_MODE" => [ - "DEFAULT" => 10349, - "ORIGINAL" => 13004, - ], - ], -], -``` - -Volume prices are configured per store and per currency and a Store Administrator can set volume prices for every locale. - -Volume prices are set for both gross and net mode and are either inherited from the abstract product or specified directly for a standalone concrete product. - -{% info_block infoBox %} -The concrete product can also have its own volume prices different from its abstract (if they are explicitly defined per `concrete_sku`). -{% endinfo_block %} - -A specific volume price for a concrete product has a higher priority over an inherited one from its abstract product. - -The volume prices are imported using [data importer](https://github.com/spryker/price-product-data-import/blob/master/data/import/product_price.csv). The JSON with volume prices is added to the `price_data.volume_prices` column as shown in the example: -![CSV file containing volume prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-csv.png) - -After the import is completed the volume prices are shown on the product detail page: -![Volume prices displayed on the product detail page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-pdp.png) - -Once the product is added to the shopping list or to the cart, the item price corresponding to the volume price is displayed for that quantity. If the user increases or decreases the quantity in cart (but not in shopping list since here we don't really change quantities), the price is updated once the user goes over or under a threshold defined by the volume prices. - -## Threshold -Volume pricing is applied when a certain threshold is reached. - -Threshold is a minimum value that serves as a benchmark/boundary for a discounted price when the product is dependent on the volume (e.g. the number of units of the product) bought. - -{% info_block infoBox %} -This means that if you buy more quantity of products or sometimes may be group of products, you would get discount based on the volume of purchase. All of the individual products exceeding the threshold will receive the special price. -{% endinfo_block %} - -The volume price is applicable only if the shopper exceeds a certain quantity threshold - the number of units the customer chooses to buy. - -The following table illustrates a typical volume pricing model: - -| Quantity of products | Price per products | Total Price | -| --- | --- | --- | -| 1 | $100 | $100 | -| 5 | $70 | $350 | -| 10 | $50 | $500 | -| 20 | $40 | $800 | - -The new price will go into effect after 5 units are purchased and only apply to the units beyond that threshold. The buyer would still pay full price for the first 5 units they procured. - -{% info_block infoBox %} -If the customer selects five, each unit will cost $70. If the customer selects 12, each unit will cost $50. -{% endinfo_block %} - -Volume prices can also mean higher prices per item at increasing thresholds. - -{% info_block infoBox %} -That is a particular case of electricity bills where you pay more if you use more. -{% endinfo_block %} - -## Current Constraints - -{% info_block infoBox %} -Currently, the feature has the following functional constraints which are going to be resolved in the future. -{% endinfo_block %} - -* unlike other prices in Spryker which support both price types (DEFAULT and ORIGINAL), volume price supports only DEFAULT price type - -* as volume price does not support ORIGINAL price type, you cannot define a promotion for a volume price - -* volume prices cannot be applied to the [prices per merchant relation](/docs/scos/user/features/{{page.version}}/merchant-custom-prices-feature-overview.html). - - diff --git a/docs/scos/user/features/201811.0/product-barcode-feature-overview.md b/docs/scos/user/features/201811.0/product-barcode-feature-overview.md deleted file mode 100644 index cde27404111..00000000000 --- a/docs/scos/user/features/201811.0/product-barcode-feature-overview.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Product Barcode feature overview -description: The Barcode Generator can be used for any kind of entity, and by default, we provide a solution for products. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/barcode-generator-feature-overview -originalArticleId: 07d9b906-d116-4cd2-91b2-e12eee90beda -redirect_from: - - /v1/docs/barcode-generator-feature-overview - - /v1/docs/en/barcode-generator-feature-overview - - /v1/docs/barcode-generator - - /v1/docs/en/barcode-generator ---- - -The Barcode Generator can be used for any kind of entity, and by default, we provide a solution for products. - -## What is a barcode? - -A barcode is a square or rectangular image consisting of a series of parallel black lines (bars) and white spaces of varying widths that can be read by a scanner and printed. Barcodes are applied to entities as a means of quick identification. -![Barcode example](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Barcode+Generator/Barcode+Generator+Feature+Overview/barcode.png) - -In the default configuration, barcodes are generated based on the SKU of a concrete product using [Code128](https://en.wikipedia.org/wiki/Code_128) format. Though, Spryker provides highly customizable solutions through plugins with the help of which the setup can be changed. - -{% info_block infoBox %} - -You can read more about the product types we differentiate in [Product Abstraction](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-feature-overview.html). - -{% endinfo_block %} - -{% info_block errorBox %} - -In your project, you can also implement QR codes functionality by creating similar plugins. - -{% endinfo_block %} - -Barcodes are dynamically generated for concrete products. This ensures that barcodes are immediately valid. - -The feature also has plugins support to change the way the barcodes are generated. This includes support for different barcode formats. - -The barcodes will help the store administrator to update the product stock numbers according to the actual information provided by the warehouse. - -Creating barcodes requires 2 main prerequisites: - -1. **Unique product codes for each product you offer –** These can be UPC codes that identify manufactured goods, unique SKU numbers that you use to track inventory your way, or other identifying numbers. -2. **A system that lets you input codes to create barcodes –** Your codes need to be entered into a device or software system that can translate the numeric or alphanumeric code into a scannable barcode. - -Nowadays, B2B businesses are faced with extraordinary challenges as more and more consumers are making comparisons of various e-commerce applications. To stay on top of the industry trends, improve customer experience and increase sales, every business must innovate with a deep understanding of their customer’s physical, emotional and financial needs and triggers. - -Barcodes are often overlooked as a way to cut costs and save time. A valuable and viable choice for businesses looking to improve efficiency and reduce overhead, barcodes are both cost-effective and reliable. Both inexpensive and user-friendly, barcodes provide an indispensable tool for tracking a variety of data, from pricing to inventory. The ultimate result of a comprehensive barcoding system is a reduction in overhead. - - - -|BACK OFFICE USER GUIDES| -|---| -| [Viewing product barcodes](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-barcodes/viewing-product-barcodes.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Barcode feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-barcode-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-bundles-feature-overview.md b/docs/scos/user/features/201811.0/product-bundles-feature-overview.md deleted file mode 100644 index e7c30ca64c7..00000000000 --- a/docs/scos/user/features/201811.0/product-bundles-feature-overview.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Product Bundles feature overview -description: With the Product Bundles feature you can freely tie individual items together and sell them as a package. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-bundle -originalArticleId: 98e54456-44fc-4c3f-917c-88a06a864c59 -redirect_from: - - /v1/docs/product-bundle - - /v1/docs/en/product-bundle ---- - -With the Product Bundles feature you can tie individual items together and sell them as a package. As opposed to a set, in which products are loosely grouped, the items in a bundle are always sold together. You can choose to create a special bundle price to make the purchase more attractive. Since each bundle's product is still handled like an individual item in the Order Management Process, bundle availability is always calculated and displayed based on the item with the smallest available stock to avoid overselling. - -A bundle represents two or more products, sold as a set; it is a distinct product that incorporates other concrete products. - -Example: -![Product bundle](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Bundles/product_bundles.png) - -{% info_block infoBox %} - -Bundles are handled in different ways:
      For example, a marketing bundle of two items that gives a 20% discount is purchased as a single item and then split for processing into its two constituent items. Another scenario is when products are put together from separate purchase items, for example when tires and rims are sold as separate items and then delivered assembled as wheels. - -{% endinfo_block %} - - -* A bundle can contain multiple quantities of the same item -* The availability of a bundle product is equal to the item with the lowest availability - -## Product-Bundle module - -Product bundles are two or more existing products combined into a new type of product for the sole purpose to be displayed as one product in the shop frontend and to be sold together. Typically the products are concrete products, because both need to be potential order items. The new (bundled) product does not physically exist in the bundled state. The Product-Bundle can be bought by customers, but in the order management system the items are handled separately, this way the shop owner can manage the products separately. - -### Characteristics of product bundles - -* The quantity of each concrete product may be more than 1 -* A product bundle has a localized name and description -* A product bundle has a sku -* A product bundle has a price and tax set -* A product bundle has a virtual stock that is dependent on the stock of the bundled products -* The stock level has a upper boundary (see Stock calculation) -* A product bundle can have attributes with localized values -* A product bundle can have localized SEO information -* A product bundle can have multiple localized image sets - -## Product bundle entity relationship diagram - -![Product bundle entity diagram](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Bundles/product_bundles_entity_diagram.png) - -## Availability calculation - -Bundle availability is calculated from bundled product availability. When bundled product availability is changed, for example state machine move through reserved flags then all bundles is updated accordingly. - -Bundle is updated when: - -* Stock of bundled product is changed. -* Availability of bundled product is changed. -* When creating bundle. -* Adding new bundled products to bundle. -* When state machine sets flag reserved to bundled product. - - -## Stock calculation - -Bundle have "dynamic stock", the stock is defined by bundled products. It cannot be imported as regular products. That means a bundle will get maximum possible stock quantity based on bundled product quantity. Stock is calculated for each warehouse separately. - -For example. - -* Bundled item 1 quantity x **2** - -For given item stock is: - -* In Warehouse **1: Item 1 stock x 10** -* In Warehouse 2: **Item 1 stock x 5** - -Then product bundle stock is: - -* Warehouse 1: **Bundle stock x 5** -* Warehouse 2: **Bundle stock x 2** - -## Product bundle structure in cart - -Because of changed structure, cart uses special Yves class to handle bundle operations ProductBundleAwareCartOperationHandler. - -When bundle item added to cart there is additional ExpandBundleItemsPlugin cart expander plugin which extracts bundled items from given bundle SKU. - -For example: - -1. Item with SKU “123” is added to cart, expander will look if this item is bundle. If it’s bundle then it will read all bundled items from persistence. -2. Item with SKU “123” is then added to `QuoteTransfer:bundleItems`. -3. This item is given special `ItemTransfer:bundleItemIdentifier` unique id which have each bundle in cart. -4. At the same time bundled items are created and stored into `CartChangeTransfer:items` with referenced bundled identifier `ItemTransfer:relatedBundleItemIdentifier` this is the same id where bundle got assigned. This helps to track back belonging bundle items in quote object. - -If bundled items have quantity > 1 then it will be split as separate items in cart. - -BundleProduct have price this price, it is distributed to whole bundled items. Overwriting original product price. If bundle have price 100, and there is 3 bundled products, each will get price 33,34,33 distributed, 34 is to cover rounding error. - -## Persisting when placing an order, end of checkout - -Bundle product information is stored to `spy_sales_order_item_bundle`. When order is placed in order detail page you will see all bundled items stored as separate row. This allows process state machine separately for each item, for example (ship, refund, return, etc.). - -If bundled item moves to reserved state machine state then corresponding bundle availability will be updated also. - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create product bundles](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Bundles feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-bundles-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-feature-overview/discontinued-products-overview.md b/docs/scos/user/features/201811.0/product-feature-overview/discontinued-products-overview.md deleted file mode 100644 index 3716a5ea53a..00000000000 --- a/docs/scos/user/features/201811.0/product-feature-overview/discontinued-products-overview.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Discontinued Products overview -description: Discontinued products are shown during a certain period of time after the manufacturer or a distributor announces that the product is no longer produced. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/discontinued-products-overview -originalArticleId: 6066f94b-0eea-4450-9071-a41b2cfa39e5 -redirect_from: - - /v1/docs/discontinued-products-overview - - /v1/docs/en/discontinued-products-overview - - /docs/scos/user/features/201811.0product-feature-overview/discontinued-products-overview.html ---- - -## Out of Stock vs. Discontinued Products -While we try to keep all the items in stock, we occasionally run out of products. In such a case the concrete product is tagged as out of stock and cannot be added to cart: -![Discontinued PDP](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Discontinued+Products/Discontinued+Products+Feature+Overview/discontinued-pdp-page.png) - -Once the stock is updated with the positive number - the concrete product will be available for purchase. - -Products are **discontinued** when the manufacturer or a current distributor has communicated that the product will no longer be produced. Still, the discontinued product may have stock (the stock number can either be positive or negative). - -Discontinued products have a certain period of time when they will still be shown on the website (active_until). After this period ends - the products will become deactivated. - -{% info_block warningBox %} - -Only [concrete products](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-feature-overview.html) can become discontinued. - -{% endinfo_block %} - -The schema below illustrates the relations between discontinued products, abstract and concrete products: -![Module relations](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Discontinued+Products/Discontinued+Products+Feature+Overview/discontinued-schema.png) - - diff --git a/docs/scos/user/features/201811.0/product-feature-overview/product-attributes-overview.md b/docs/scos/user/features/201811.0/product-feature-overview/product-attributes-overview.md deleted file mode 100644 index a5b0518d3b8..00000000000 --- a/docs/scos/user/features/201811.0/product-feature-overview/product-attributes-overview.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Product Attributes overview -description: Creating and managing product attributes is the first step in enriching the product data. It is a part of maintaining and improving the online shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-attributes -originalArticleId: 15b27022-e72e-4a3a-b70d-b56c42e34d30 -redirect_from: - - /v1/docs/product-attributes - - /v1/docs/en/product-attributes - - /v1/docs/super-attributes - - /v1/docs/en/super-attributes ---- - -Creating and managing product attributes is the first step in enriching your product data. It is an essential part of maintaining and improving the online shop for your customers. Attributes can serve different purposes and are therefore stored in different ways. They may be used not only for product management, but also to improve search and filter functionality in the shop. - -You can easily build a list of characteristic attributes for your products, such as brand or special features. For these you can define specific values to help you and your customers distinguish between products. All products can get assigned a multitude of attributes to simplify the filter and category functions. The Spryker Commerce OS offers a set of pre-defined Product Attribute values or offers to simply import your own sets. - -* Any attribute types and values can be imported (no pre-defined schema needed) -* Optional pre-defined values -* Create and manage attributes with predefined values for usage in the shop - -One way to describe a characteristic of a product is the attribute mechanism. It allows to store a list of key value pairs. There are 4 possible locations where attributes can be stored. - -Common attributes to all variant are stored on the level of the abstract product. - -{% info_block infoBox %} -However if they contain language or locale specific data, the localized abstract product attributes are the right location. -{% endinfo_block %} - -If attributes like the size of the t-shirt distinguish variants, they are stored on product level. - -{% info_block infoBox %} -Again if the attributes are language or locale specific they are stored on localized product attributes. -{% endinfo_block %} - -The attribute mechanism is only recommended if the information stored is for display purpose only. As soon as you want to program against it, we recommend extending one of the four tables. - -## Attribute Key Metadata -Redis can work with key value pairs as defined in the product attributes tables. However elastic search needs more information about the attributes semantic. Is the content of an attribute part of the fulltext search or is it used to sort the attribute. Therefore needed metadata is stored in the attribute meta data tables. These are used by the front end exporter to control which attributes of the product is stored where in the elastic search structure. - -## Product Attribute Management -In Zed, product management attributes support creating and editing products. You can add keys for your attribute name and values, enabling the translation to different languages (localized). Multiple ways of handling translations are offered. The following examples highlight the use cases. - -### Example 1 for localized attributes and non-localized values - In a shop with two languages Product Y exists with an attribute “**weight**” and an attribute values is “*63.5 g*”. Translations are only necessary for the attribute name and not the attribute value in this case. - -In the DB a key “**attribute.weight**” is saved. The key can now be translated into different languages via the glossary: - -Key = attribute.weight -Value (en_EN) = Weight -Value (de_DE) = Gewicht - -The attribute value “*63.5* g” exists as a value-key and serves as a key and a value at the same time in the DB: - -Value (non-localized)=63.5 g -What you see on the English version of the shop: Weight = 63.5 g -What you see on the German version of the shop: Gewicht = 63.5 g - -### Example 2 for localized attributes and values - In a shop with two languages Product X exists with an attribute “**Protection Feature**” and an attribute value “*waterproof*”. Both, attribute name and value need translations. - -In the DB a key “**attribute.protection_feature**” is saved. The key can be translated into different languages via the glossary: - -Key = attribute.protection_feature -Value (en_EN) = Protection Feature -Value (de_DE) = Schutzfunktion - -The attribute value “waterproof” is now translated, a non-localized value (as in [Example 1](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-attributes-overview.html#example-1-for-localized-attributes-and-non-localized-values)) is not sufficient: - -Value (en_EN) = Waterproof -Value (de_DE) = Wasserdicht - -What you see on the English version of the shop: -Protection Feature = Waterproof - -What you see on the German version of the shop: -Schutzfunktion = Wasserdicht - -### Example 3 for different localized attributes and values for different languages - - Product Z has the attribute “length” and is sold in 3 countries, Germany, Ireland, and the United States. Due to the fact that the United States does not use the metric system, the attribute values should be displayed in feet in the US and in meters in Germany and Ireland. -For this scenario there are two ways of doing it. One way **1** is to work with a non-localized attribute key for Germany and Ireland, and a localized key for the US, because (like in [Example 1](/docs/scos/user/features/{{page.version}}/product-feature-overview/product-attributes-overview.html#example-1-for-localized-attributes-and-non-localized-values)) two languages could share the same translation for the attribute. The other way **2** is to add localized attribute keys and values for each language. - -**(1)Non-Localized key and localized key for the US** -In the DB a key “attribute.length” is saved for non-localized values and a localized key “attribute.length.us” for the translations in the metric system. - -Key = attribute.length -Value (en_IE) = Length -Value (de_DE) = Länge - -Key = attribute.length.us -Value (en_US) = Length - -Now for each of the attribute keys we add the attribute values, which are 1.5 meter for the Ireland and Germany, and 4.92 feet for the US. - -For the key “attribute.length” the value is: -Value = 1.5 meter - -For the key “attribute.length.us” the value is: -Value = 4.92 feet - -**(2)Localized keys for US, DE and IE** -In the DB three localized keys, namely “attribute.length.de”, “attribute.length.ie”, and “attribute.length.us” are saved. - -Key = attribute.length.de -Value (de_DE) = Länge - -Key = attribute.length.ie -Value (en_IE) = Length - -Key = attribute.length.us -Value (en_US) = Length - -Now for each of the attribute keys we add the attribute values. - -For the key “attribute.length.de” the value is: -Value = 1.5 meter - -For the key “attribute.length.ie” the value is: -Value = 1.5 meter - -For the key “attribute.length.us” the value is: -Value = 4.92 feet - -What you see on the Irish and German versions of the shop: -Length = 1.5 meter -Länge = 1.5 meter - -What you see on the US version of the shop: -Length = 4.92 feet - -## Attributes in the PIM -Translations for the attribute values in the PIM are optional and users may add new values in the process of creating a new product in the PIM. The input type ranging from text input to numerical values can be defined upfront. Adding new attribute values in the product creation process can be disabled, thereby restricting the user to the predefined value. All attributes that appear in the attribute management are called declared attributes. - -## What are “declared” attributes? -Declared attributes are the attributes that can be used in the PIM. There are two ways of declaring an attribute. On the one hand, when you create a new attribute it is automatically declared and can then be used for creating products in the PIM. On the other hand, you may import products with existing attributes in JSON format. The imported attributes are displayed in the PIM, but cannot be edited. Only after adding the exact same attribute key to the list of attributes in the attribute management, it becomes available in the PIM. - -## What are super attributes? -The Spryker Commerce OS product data model allows for the creation of multiple variants of one product. For the shop to be able to differentiate between these variants some characteristic needs to differ between them. A super attribute must be added to every product variant in order to display multiple variants of an abstract product in the shop frontend (Unless there is only one variant, which makes the use of super attributes for differentiation purposes obsolete). Attributes become super attributes by marking them as such in the attribute management interface. Important to note is that the variants do not need to share the same super attributes in order to belong to the same abstract product. Here is are two examples: - -(1) Abstract product X has concrete product A and B: A: Super attribute = (color:blue) B: Super attribute = (color:green) - -(2) Abstract product Y has concrete products C and D: C: Super attribute = (color:red) D: Super attribute = (size: 45) - -## Super attributes in the Spryker Commerce OS Demoshop -In this example on the product detail page there will be the possibility to select either the attribute color or the attribute size. For a variant to be selectable, it should have a unique combination of values for its super attributes compared to the other variants from the same abstract product. - -![Product attribute management](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Attributes/product_attribute_management.png) - -## Current Constraints -{% info_block infoBox %} -Currently, the feature has the following functional constraints which are going to be resolved in the future. -{% endinfo_block %} - -When creating an abstract product, you can define as many super attributes as you want and this will create the same number of variants. You can also add a new variant to an existing product that already has other variants. However: - -* you can only use the existing super attribute in this case - -* if you want to add another super attribute to variants, you need to delete the abstract product with its concrete products and recreate it from scratch - -You can define attributes by importing them or inside the Backoffice: - -* Define which attribute is a super attribute: [https://github.com/spryker-shop/b2c-demo-shop/blob/master/data/import/product_attribute_key.csv](https://github.com/spryker-shop/b2c-demo-shop/blob/master/data/import/product_attribute_key.csv) - -* Define attribute configuration: [https://github.com/spryker-shop/b2c-demo-shop/blob/master/data/import/product_management_attribute.csv](https://github.com/spryker-shop/b2c-demo-shop/blob/master/data/import/product_management_attribute.csv) - - -It is possible to import a product without having defined previously its attributes. However: - -* attribute values are then non-editable for the product since the Backoffice does not know how to manage them. - -{% info_block warningBox %} -It is recommended to always define the attributes that your products will use. -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-feature-overview/product-feature-overview.md b/docs/scos/user/features/201811.0/product-feature-overview/product-feature-overview.md deleted file mode 100644 index dfa76c3e17a..00000000000 --- a/docs/scos/user/features/201811.0/product-feature-overview/product-feature-overview.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Product feature overview -description: Product Management system allows gathering product characteristics and exported them to Spryker. Products can be managed in the Back Office and displayed in Yves -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product -originalArticleId: f4bc9d9e-6547-447b-80ed-5768831736ef -redirect_from: - - /v1/docs/product - - /v1/docs/en/product - - /v1/docs/product-abstraction - - /v1/docs/en/product-abstraction - - /v1/docs/product-review-filter-and-sort - - /v1/docs/en/product-review-filter-and-sort - - /v1/docs/product-management - - /v1/docs/en/product-management - - /docs/scos/user/features/201811.0/product/product-feature-overview/products-overview.html - - /docs/scos/user/features/201811.0/product-feature-overview/product-feature-overview.htmlproduct-abstraction.html ---- - -Product data is central data for shops. It contains characteristics that describe the product as well as characteristics that control behavior of the shop. For example the color of a product is an important information that the customer might need, whereas the weight of the product can be used to calculate the delivery costs. - -Typically, product data is maintained and enriched in an external Product Information Management (PIM) system. As soon as all characteristics are gathered, they can be exported to Spryker. An import interface will transform the incoming product data into the Spryker specific data structure and persist it. After persisting the product, the data is exported to Redis and Elasticsearch. This way, Yves can access the relevant product data very fast. A basic UI allows to access the product data from Zed back-end. - -![Product information management](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product/product_information_management.png) - -With the Spryker Commerce OS you can easily build a product hierarchy structure with Abstract and Concrete Products. - -Products can come with multiple Variants, such as size or color. In order to provide a better shopping experience to your customers, the different Variants, or Concrete Products, are grouped under an Abstract Product. - -The topmost hierarchy level, the Abstract Product, does not have its own stock, but defines various default properties for the descendant Concrete Products, or Variants. The Concrete Product, or Variant, always belongs to one Abstract Product, has a distinctive stock and always differs from another Concrete Product with at least one Super Product Attribute. - -With the Spryker Commerce OS you can easily build a product hierarchy structure. - -Products can come with multiple Variants, such as size or color. In order to provide a nice shopping experience to your customers, the different Variants, or Concrete Products, are grouped under an Abstract Product. The topmost hierarchy level, the Abstract Product, does not have its own stock, but defines various default properties for the descendant Concrete Products, or Product Variants. The Concrete Product, or Variant, always belongs to one Abstract Product, has a distinctive stock and always differs from another Concrete Product with at least one Super Product Attribute. Super Attributes in the Spryker Commerce OS are used to distinguish between the different Product Variants of an abstract product. Super Attributes define each Concrete Product and can consist of whichever distinguishing feature you wish to highlight, such as size or color. This information can either be manually managed or imported and processed automatically. Consider the example of a T-shirt, the Abstract Product, that is available in the sizes small, medium, and large, three different Product Variants. The Abstract Product ""T-shirt"" appears as a search result. On the product detail page the customer can select between the product variants small, medium, large and put it into the cart. You can clearly define time frames for the availability of products, without having to manually manage the inventory. This is especially useful for promotions or seasonal items. - -## Abstract and Concrete Products (Variants) -Spryker Commerce OS’s data structure for products allows to design a product hierarchy, which Yves relies on to display products in the correct way. Every product consists of an abstract product and one or more concrete products, also called variants. Your customers cannot buy an abstract product. The item that can be put into cart is always the concrete product. - -You can clearly define time frames for the availability of products, without having to manually manage the inventory. This is especially useful for promotions or seasonal items. - -### Example -Imagine your product is a **shoe**. This shoe comes in three different sizes: - -- 40 -- 41 -- 42 - -Now technically you could have 3 different standalone products with three product detail pages. - -- From a customer perspective this is unnecessary overhead, especially considering that a product catalog should not display three times a product that will most likely look identical. -- From a product management perspective, the same product would have to be created three times with the only difference being the size. -![Product variants](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Abstraction/product_variants.png) - -## Differentiate Between Abstract and Concrete Products -In Spryker Commerce OS, both abstract and concrete products have: - -* SKU -* name -* description -* price -* product attributes -* media assets - -This information, besides the SKU, is inherited from the abstract to the concrete products when they are created. However, only the concrete product has stock and may have one or more additional attributes that we call super attributes (In the example above the super attribute is the size). This structure allows to create multiple variants of a product, which eventually are the products that your customers buy. -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Abstraction/producterd.png) - -## Product Hierarchy in the Spryker Commerce OS Demoshop -In the catalog of the shop frontend, the abstract products are listed (e.g. shoe model X blue). Once the customer has selected one of these abstract products and proceeded to the product detail page, the abstract products information is displayed first. Only after having selected the distinctive characteristic of a variant (e.g. size 41 for the shoe in the example above) the concrete product information is displayed (e.g. shoe model X color = blue size = 41). Note that the structure of the products is a business decisions and that both, abstract and concrete products, share the same URL in the Spryker Commerce OS demoshop. diff --git a/docs/scos/user/features/201811.0/product-feature-overview/timed-product-availability-overview.md b/docs/scos/user/features/201811.0/product-feature-overview/timed-product-availability-overview.md deleted file mode 100644 index 52001ff9817..00000000000 --- a/docs/scos/user/features/201811.0/product-feature-overview/timed-product-availability-overview.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Timed Product Availability overview -description: Timed product availability, or product TTL (Time to Live) allows you to define when your products are available online and when they are not. -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-ttl-feature-overview -originalArticleId: 7600976c-105b-426f-85c2-25bbb7c19565 -redirect_from: - - /v1/docs/product-ttl-feature-overview - - /v1/docs/en/product-ttl-feature-overview - - /v1/docs/product-ttl - - /v1/docs/en/product-ttl ---- - -Timed product availability, or product TTL (Time to Live) allows you to define when your products are available online and when they are not. To get the main idea of the TTL, go to the general feature overview for more detailed information on how it works as well as familiarize yourself with its usage scenarios. - -## Timed Product Availability Feature Details - -The Timed Product Availability feature is implemented through the `isActive` field by introducing two more fields for product concretes in the Back Office - **Valid from** and **Valid to**. A product can have exactly one "life" - one (or no) start, one (or no) end. If the **Valid from** date has not come yet, or if **Valid to** has been reached, the value of isActive field is set to `false` and the product is invisible for customers. This being said, the product validity settings overrule manual (de)activation of products. - -{% info_block infoBox %} -Which means that, if, for example, the following **conditions** are met:
      * a product has been manually set to *Deactivated*
      * this product has **Valid from** and **Valid to** values specified
      * **Valid to** date lies in the future
      The **result** is: the product will be displayed until after the time set in "Valid to" field.
      To deactivate the product in this case, it would be necessary to clear the values in the **Valid from** and **Valid to** fields. -{% endinfo_block %} - -Time set for the product validity **Valid from** and **Valid to** fields is accurate up to the minute. However, technically it is possible to change the accuracy (up to the second or up to the days) via a cronjob. The time is set in GMT by default. - -## Use Cases -The table below shows possible usage scenarios with the TTL feature and resulting system behavior. - -| Validity dates settings | Result | -| --- | --- | -| "Valid from" is set, "Valid to" is set and lies in the future | Product goes online starting from "Valid to" time and remains online until after the "Valid to" time. | -| "Valid from" is set, "Valid to" is not set | Product goes online from "Valid from" time and never goes offline. | -| "Valid from" is not set, "Valid to" is set | Product goes online after manual activation and remains online till "Valid to" time is reached. | -| "Valid to" is set in the past | Product will be deactivated shortly. | -| "Valid from" is set, "Valid to" is set and lies in the future, the product is deactivated manually | Message saying that the product will be activated because of setting "Valid from" and "Valid to" time.| - - - diff --git a/docs/scos/user/features/201811.0/product-groups-feature-overview.md b/docs/scos/user/features/201811.0/product-groups-feature-overview.md deleted file mode 100644 index e6a8b6814ca..00000000000 --- a/docs/scos/user/features/201811.0/product-groups-feature-overview.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Product Groups feature overview -description: Product Groups feature allows product catalog managers to group products by attributes. -last_updated: Jul 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-group -originalArticleId: d1da27f4-e909-41fc-839f-ef472b5b6338 -redirect_from: - - /v1/docs/product-group - - /v1/docs/en/product-group ---- - -The *Product Groups* feature allows product catalog managers to group products by attributes, like color or size. A typical use case is combining the same product in different colors into a product group (not to be confused with [product variant](/docs/scos/user/features/{{page.version}}/product/product-feature-overview/products-overview.html)). The feature changes the way shop users interact with products by improving accessibility and navigation. - -## Product groups on the Storefront - -{% info_block warningBox "Examplary content" %} - -By default, there is no way to display product groups on Storefront. This section describes an examplary implementation which you can add to your project. See [HowTo - Display product groups by color on Storefront](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-display-product-groups-by-color-on-the-storefront.html) for more details. - -{% endinfo_block %} - - -On the Storefront, the product group is not displayed as a group. Instead, the behavior of all the UI elements related to the products in the group changes. It affects product abstract card and *Product details* page. - -Product abstract card: - -1. Hovering over the product abstract card opens a pop-up menu with the colors of all the products included into the group. -2. Hovering over or clicking a color circle changes the abstract product image, title, rating, label, and the price. -3. Having hovered over the desired color, a shop user clicks on the product abstract card to be redirected to the *Product details* page of the corresponding product. - -![Product group - product abstract card](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Groups/Product+Groups+Feature+Overview/product-group-product-abstract-card.gif) - - -*Product details* page: - -* Hovering over a color circle changes the abstract product image. -* Once you stop hovering over a color circle, the image changes back to the image of the product you are viewing. -* Clicking on a color circle redirects the shop user to the page of the corresponding abstract product. - - -![Product group - product details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Groups/Product+Groups+Feature+Overview/product-group-product-details-page.gif) - -## Product groups in the Back Office - -In the Back Office, a product catalog manager can view what product group an abstract product belongs to. See [Viewing a Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/managing-products/managing-products.html#viewing-products) to learn more. - -Also, they can insert product groups into CMS pages via content widgets in the [WYSIWYG editor](/docs/scos/user/features/{{page.version}}/content-items-feature-overview.html#content-item-widget). - -## Creating product groups - -Currently, only a developer can create product groups by [importing them](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/product-merchandising/file-details-product-group.csv.html) or modifying the database. Only abstract products can be added to product groups. - - -## Current constraints - -Currently, the feature has the following functional constraints which are going to be resolved in the future: - -* There is no user interface to manage product groups in the Back Office. -* Products can only be grouped by the color attribute. - -## Video tutorial - -Check out this video tutorial on product groups: - -{% wistia r5l2kit2c1 960 720 %} - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Check what product group a product belongs to by viewing a product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/managing-products/managing-products.html#viewing-products) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Groups feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-groups-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-labels-feature-overview.md b/docs/scos/user/features/201811.0/product-labels-feature-overview.md deleted file mode 100644 index a7c43d361b1..00000000000 --- a/docs/scos/user/features/201811.0/product-labels-feature-overview.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Product Labels feature overview -last_updated: Jun 4, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-label -originalArticleId: 00705d94-ea42-42e7-8bf5-890d22fb6c79 -redirect_from: - - /v1/docs/product-label - - /v1/docs/en/product-label ---- - -The Product Label feature enables product catalog managers to highlight the desired products by adding a special type of information - product labels. - - -## Product label - -A *product label* is a sales-related piece of information conveying a message about the product to a buyer. - -The product labels are applied to products to be displayed on their product cards and product details pages. - -
      - -Product label on a product card—Storefront - -![product label on product card](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/product-label-on-product-card.png) - -
      - -
      -Product label on a product details page - Storefront - -![product label on product details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/product-label-on-product-details-page.png) - -
      - -A Back Office user can [create product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) and assign them to products in the Back Office. - -A developer can create [dynamic product labels](#dynamic-product-label). - - -## Dynamic product label -*Dynamic product label* is a product label that follows the condition rules defined on a code level. Unlike the regular product label, the dynamic product label is automatically applied to the product that fulfils the condition rules. A developer can edit the rules or create new dynamic product lablels. - -The following dynamic product labels are shipped by default: -* *Discontinued* -The *Discontinued* product label is added when you discontinue a product. The label is active until the product becomes inactive. See [Discontinuing a product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/discontinuing-products.html) to learn more. - -* *Alternatives available* -The *Alternatives available* product label goes along with the *Discontinued* product label. It is added when you discontinue a product that has existing [alternative products](/docs/scos/user/features/{{page.version}}/alternative-products-feature-overview.html). The label is active until the product becomes inactive. See [Adding product alternatives](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-concrete-products/adding-product-alternatives.html) to learn more. - -* *NEW* -The *NEW* label is added when you create a product. It is active for the time period defined inclusively in the **New from** and **New to** fields. See [Creating an Abstract Product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) to learn more. -* *SALE* -The *SALE* product label is added to a product automatically when the product’s original price is superior to the default price. See [Creating an abstract product](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) to learn more. - -{% info_block infoBox "Prices" %} - -A default price shows the current value of the product on Storefront. - -An original price is displayed as a strikethrough to identify that the value of the product has been decreased as if there is a promotion. - -{% endinfo_block %} - - -## Product label design -A Back Office user can select the design and the position of the product label on a product card. The following label designs are shipped by default: - -
      -alternative - -![alternative product label design](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/alternatives-available-product-label-design.png) - -
      - - -
      -discontinued - -![discontinued product label design](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/discontinued-product-label-design.png) - -
      - - -
      -top - -![top product label design](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/top-product-label-design.png) - -
      - - - -
      -new - -![new product label design](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/new-product-label-design.png) - -
      - -
      -sale - -![sale product label design](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/sale-product-label-design.png) - -
      - -When creating a product label, a Back Office user selects a design by entering its name as a **Front-end Reference**. See [Creating product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) to learn more. - -If the product label designs shipped by default are not sufficient for your project, a developer can create new HTML classes to use as a Front-end Reference. - - -## Product label priority - -When several product labels are applied to a product, all of them are displayed on its product card and product details page. - -![product label priority ](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/alternatives-available-product-label-design.png) - - -A Back Office user can define the order in which product labels are displayed on product card and product details page by entering a **Priority** value when creating a product label. - -The product labels are displayed in ascending order of Priority. So, the label with the smallest priority value always goes first while the product label with highest Priority value goes last. - -In the picture above, the priority value of *Alternatives available* product label is *4*. The Priority value of *Discontinued* product label is *5*. - -See [Creating product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) to learn how a Back Office user can define the product label priority. - -## Product label store relations - -A Back Office user can define the stores each product label is displayed in. For example, if a promotion campaign targets Germany, the *Sale* product label can be displayed only in the *DE* store. - -See [Creating product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) to learn how a Back Office user can define store relation for a product label. - -A developer can also [import store relations for product labels](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/merchandising-setup/product-merchandising/file-details-product-label-store.csv.html). - -## Product label statuses - -A product label can have the following statuses: - -* Active -* Inactive - -If a product label is active, it is displayed on all the product pages it is applied to. If a product label is inactive, it is still applied to the selected product, but it is not displayed on the respective product pages. This might be useful when you want to prepare for an event beforehand. You can create an inactive product label and apply it to the desired products. When the event starts, you just need to activate the label to show it on all the product pages it is applied to. - -See [Activating/deactivating a product label](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/managing-product-labels.html#editing-product-labels) to learn how a Back Office user can activate and deactivate product labels in the Back Office. - -## Product label exclusivity - -*Exclusive* product label is a product label that, when applied to a product, discards all the other product labels applied to it. The other product labels are still applied to the product, but only the exclusive one is displayed on the respective product card and product details page. This might be useful when running several discounts in a store at the same time. By assigning the labels with corresponding discount names to desired products, you can show the shop users to which products each discount is applied. - -See [Creating product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) to learn how a Back Office user can create an exclusive product label. - -## Product label filtering on the Storefront - -Shop users can view product cards with labels on any Storefront page. Also, they can filter products by labels on category and search results pages. - -![Filter product labels](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Label/Product+Label+Feature+Overview/filter-labels-yves.png) - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/creating-product-labels.html) | -| [Manage product labels](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-labels/managing-product-labels.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Labels feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-labels-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-lists-feature-overview.md b/docs/scos/user/features/201811.0/product-lists-feature-overview.md deleted file mode 100644 index 9a0fc76f243..00000000000 --- a/docs/scos/user/features/201811.0/product-lists-feature-overview.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Product Lists feature overview -description: Product lists is a Spryker Commerce OS feature that allows creating product lists. -template: concept-topic-template ---- - -Configure product availability for specific companies by blacklisting or whitelisting products for them. Let's say you want to hide some products, or even a category, from a company you've signed a contract with. You create a blacklist of those products and assign it to the company. This will make it impossible for this company to purchase the blacklisted product. - - - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create product lists](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/creating-product-lists.html) | -| [Manage product lists](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-lists/managing-product-lists.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Lists feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-lists-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-options-feature-overview.md b/docs/scos/user/features/201811.0/product-options-feature-overview.md deleted file mode 100644 index 179a9dbc0ad..00000000000 --- a/docs/scos/user/features/201811.0/product-options-feature-overview.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Product Options feature overview -description: The article describes the creation process of product options and how it is managed in the Back Office -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-options-overview -originalArticleId: d25fc6cd-4f40-43b9-8b04-82af6a953888 -redirect_from: - - /v1/docs/product-options-overview - - /v1/docs/en/product-options-overview - - /v1/docs/product-options - - /v1/docs/en/product-options ---- - -The **Product Options** feature allows a Back Office user to create and assign product options to abstract products. Product options are product additions that a customer can select on the product detail page before adding the product to the cart. For example, the product options can be gift wrappings for products, insurance, warranty, etc. Product options do not have stock, but a SKU linked to product abstracts. Thus, you cannot purchase them without buying a corresponding product. - -Each product option is defined by: - -* product option group name -* tax set assigned on the product option group -* option value -* translation - -*Product option group* holds all available options, or *option values* that buyers select. For example, you can have the "Warranty" product option group and create "1-year warranty" and "2-year warranty" values for it. - -With the feature in the Back Office, you can create, update, activate or deactivate, and view all product options available in the system, define a price for product options and select products to which they will be added. - -In the Storefront, customers can select and add options to products on the product detail page. - -## Product Options in the Back Office - -In the Back Office, you can perform the following actions on product options: - -* create a product option -* update, view or activate/deactivate product options -* create multiple option values in one option group -* specify gross and net prices for options values -* assign product option groups to products -* activate product options to make them visible in the Storefront - -See [Creating a Product Option](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/create-product-options.html#creating-a-product-option) and [Managing Product Options](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/managing-product-options.html) to learn more about how to work with product options in the Back Office. - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Options/Product+Options+Overview/product-option-back-office.png) - -{% info_block infoBox %} - -Each product option group may contain as many product options as you need. For example, you can offer insurance services (**product option group**) for the product with several **product options**: -* One-year coverage insurance $100 -* Two-yer coverage insurance $150 -* Three-year coverage insurance $200 etc. - -{% endinfo_block %} - -## Product Options on the Storefront - -On the product detail page, the new product option group (1) will be displayed as a drop-down list with the option values (2). - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Options/Product+Options+Overview/product-option-yves.png) - -For more information about what other actions customers can perform on the product detail page, see [Shop Guide - Managing Products](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-managing-products.html). - -## Current constraints - -{% info_block infoBox %} - -Currently, the feature has the following functional constraints which are going to be resolved in the future. - -{% endinfo_block %} - -* Product options are available in all the stores where the corresponding concrete product is available -* Unlike cart, shopping list does not support product options -* If you add a product with an option to shopping list, the product option gets discarded -* You cannot define product option prices in a per-merchant manner -* If you create a product option, the price will be the same for all merchants -* Unlike other prices in Spryker, product option price is not bound to any of the available price types (DEFAULT or ORIGINAL) - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Create a product option](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/create-product-options.html) | -| [Manage product options](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/managing-product-options.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Options feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-options-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-rating-and-reviews-feature-overview.md b/docs/scos/user/features/201811.0/product-rating-and-reviews-feature-overview.md deleted file mode 100644 index cb3c21d17d2..00000000000 --- a/docs/scos/user/features/201811.0/product-rating-and-reviews-feature-overview.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Product Rating and Reviews feature overview -description: The Product Reviews feature allows customers to add reviews and ratings to abstract products. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-reviews -originalArticleId: 2b5b1a00-8f1b-4889-8f0a-d0b99923b4e9 -redirect_from: - - /v1/docs/product-reviews - - /v1/docs/en/product-reviews - - /v1/docs/product-review-feature-configuration - - /v1/docs/en/product-review-feature-configuration - - /v1/docs/rating-revew-management - - /v1/docs/en/rating-revew-management ---- ---- - -The Product Reviews feature allows customers to add reviews and ratings to abstract products. In a dedicated Back Office section, you can manage customers' ratings and reviews to moderate content and collect information before publishing them live. Rating information can be used for sorting and filtering products. Product ratings and reviews can be displayed for customers on demand. - - -This feature is supported by 3 modules: - -1. **ProductReview module**: Manages the Product Review’s core functionalities such as CRUD Zed actions, aggregated data access from database, Search and Storage access from Yves, database schema, and transfer object definitions. -2. **ProductReviewCollector module**: Provides full Collector logic to export Product Reviews to Search and Storage. -3. **ProductReviewGui module**: Provides a Zed Admin UI to supervise (approve, reject and delete) Product Reviews. - -## Current constraints - -Currently, the feature has the following functional constraints which are going to be resolved in the future: - -* Product reviews are linked to locales, but not stores. -* A review is available in all the stores that share the locale of the store in which it has been originally created. - -## Video tutorial - -For more details on managing ratings and reviews, check the video: - -{% wistia efvyq9vfb8 960 720 %} - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Manage product reviews](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-reviews/managing-product-reviews.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Product Rating & Reviews feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/product-rating-reviews-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/product-relations-feature-overview.md b/docs/scos/user/features/201811.0/product-relations-feature-overview.md deleted file mode 100644 index 82508dde55d..00000000000 --- a/docs/scos/user/features/201811.0/product-relations-feature-overview.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Product Relations Feature Overview -description: Product relations helps shop owners to promote the related goods as well as to point the customers' attention on the goods that they may also want to see. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-relations-feature-overview -originalArticleId: 7a9a8ce2-5848-4c90-81e9-661af9f7827f -redirect_from: - - /v1/docs/product-relations-feature-overview - - /v1/docs/en/product-relations-feature-overview - - /v1/docs/cross-sell-upsell - - /v1/docs/en/cross-sell-upsell - - /v1/docs/cross-sell - - /v1/docs/en/cross-sell - - /v1/docs/product-relations-sales - - /v1/docs/en/product-relations-sales - - /v1/docs/upsell - - /v1/docs/en/upsell - - /docs/scos/user/features/201811.0/cross-sell-and-up-sell/cross-sell-and-up-sell.html ---- - -Product relations help shop owners to promote the related goods as well as to point the customers' attention to the goods that they may also want to see. - -Product relations are built on the abstract product and not the concrete products. One abstract product can have from one to many product relations. Once you define a product to which a relation is added, you need to also set a specific set of rules, or even a group, under which the relation is going to be built. Keep in mind that this is a one-way relation, meaning that only the product that you have defined will have the Similar Products section on its PDP (product details page) or in the cart, depending on the relation type. But the related product(s) that you assign to it will not get the same view, unless you perform the same procedure for each individual item [to tie it to any other in the Back Office](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/product-relations/creating-product-relations.html). - -![One-way connection](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Relations/Product+Relations+Feature+Overview/One-Way+Connection.gif) - -## Product Relation Types -In Spryker, currently Back Office users can define two types of relations: related products and upselling. - -| Related products | Upselling | -| --- | --- | -| With this type of relation, similar products are displayed on the product detail page for the currently selected abstract product. | With this type of relation, similar products are displayed in the cart overview page when a specific abstract product is added to the cart. | - -## Database Entity Relation Schema - Product -![Database entityt relation schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Relations/Product+Relations+Feature+Overview/db_relation_schema.png) - -| Database Entity | Description | -| --- | --- | -| spy_product_relation.fk_product_abstract | This is the product for which relation is build. | -| spy_product_relation.is_active | Defines that if relation is not active it will still be exported, but not visible. | -| spy_product_relation_product_abstract.fk_product_abstract | This is the related product. | -| spy_product_relation_product_abstract | This is order in which products should be listen when rendering relations. | - -### Legacy Demoshop Only -#### Query Builder - Product Relation - -Query builder in Zed allows to select and bulid a dynamic related product query. - -The query ships with pre-set rules: - -* `sku` - filter by an abstract product sku. -* `name` - filter by an abstract product name. The locale is Zed’s default locale. - -{% info_block infoBox %} -If a product matches in that locale it will be related in both locales. -{% endinfo_block %} - -* `created_at` - string value date when the abstract product was created. -* `category` - the name of category in the current zed locale. -* `attributes` - the list of attributes as defined in spy_product_attribute_key database table. - -{% info_block infoBox %} -These rules can be combined with and or or operators, and it is also possible to nest them to make complex rules. -{% endinfo_block %} - -When a product relation form in a saved configured rule is executed, all matching abstract product ids are saved in `spy_product_relation_product_abstract` relation table. - -When a query is selected and a relation in saved, the relation needs to be manually updated to reflect latest changes (run again the given query). The console command `product-relation:update` will run all active relations with the `is_rebuild_scheduled` flag selected in the database table `spy_product_relation`. - -{% info_block infoBox %} -This command can also be executed by spryker cron jobs and manually triggered via Jenkins. -{% endinfo_block %} - -## Yves Datastore Collector - Product Relation -The product relation collector exports relations to the Yves data store. - -This collector is located in the ProductRelationCollector module. - -1. Include this module in your composer.json file and update. -2. Then add the plugin ProductRelationCollectorPlugin from this module to `\Pyz\Zed\Collector\CollectorDependencyProvider::provideBusinessLayerDependencies`. - -```php - new ProductRelationCollectorPlugin(), - ]; -}; -?> -``` - -{% info_block infoBox %} -The new collector uses product_relation type in the `touch` table. -{% endinfo_block %} - -## Current Constraints -{% info_block infoBox %} -Currently, the feature has the following functional constraints which are going to be resolved in the future. -{% endinfo_block %} - -* you cannot define a product relation for a single store -* you cannot define more than 1 relation of the same type for a product - - diff --git a/docs/scos/user/features/201811.0/product-sets-feature-overview.md b/docs/scos/user/features/201811.0/product-sets-feature-overview.md deleted file mode 100644 index e57ca71735b..00000000000 --- a/docs/scos/user/features/201811.0/product-sets-feature-overview.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Product Sets feature overview -description: Learn about the modules that build up the Product Set feature -last_updated: Oct 28, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/product-set -originalArticleId: eb31dad0-41fe-426d-8618-c1140c1d3557 -redirect_from: - - /v1/docs/product-set - - /v1/docs/en/product-set ---- - -The *Product Sets* feature allows you to create and sell collections of products. For example, you can create a stationary workspace set, a set of clothing or accessories, or furniture for a specific room. - -![product-set-on-the-storefront](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Sets/product-set-on-the-storefront.png) - -When browsing a product set, a Storefront user can select variants per product in a set, add an individual or all products from the set to cart. - -![product-set-actions](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Product+Sets/product-set-actions.png) - - -A Back Office user can define the following: -* The order of products in a set dispalyed on the Storefront. -* The order of products sets displayed on the Storefront. It's relevant if you have multiple product sets on the same page. -* Unique product set URL. - - -A Back Office user can add a product sets to any page by [creating a product set content item](/docs/scos/user/back-office-user-guides/{{page.version}}/content/content-items/creating-content-items.html) and [adding it to CMS pages and blocks](/docs/scos/user/back-office-user-guides/{{page.version}}/content/content-items/adding-content-items-to-cms-pages-and-blocks.html). - - -For more details on product sets, check the video: - -{% wistia 9co7uw35a9 960 720 %} - -### Current Constraints -Currently, the feature has the following functional constraints which are going to be resolved in the future: - -* Product sets are shared across all the stores of a project. -* You cannot restrict availability of a product set to a store. diff --git a/docs/scos/user/features/201811.0/promotions-discounts-feature-overview.md b/docs/scos/user/features/201811.0/promotions-discounts-feature-overview.md deleted file mode 100644 index d9ed3b3e443..00000000000 --- a/docs/scos/user/features/201811.0/promotions-discounts-feature-overview.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Promotions & Discounts feature overview -description: The feature allows creating different types of discounts and applying multiple in-built discount settings suitable for any business requirements. -last_updated: Jul 31, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/discount-feature-overview-201903 -originalArticleId: 4437dd91-d431-4096-bdd9-ffa15fd2d603 -redirect_from: - - /v1/docs/discount-feature-overview-201903 - - /v1/docs/en/discount-feature-overview-201903 - - /v1/docs/discount - - /v1/docs/en/discount - - /v1/docs/promotions-discount - - /v1/docs/en/promotions-discount - - /v1/docs/cart-rules-discounts - - /v1/docs/en/cart-rules-discounts - - /docs/scos/user/features/201811.0/promotions-and-discounts-feature-overview.html ---- - -The Promotions & Discounts feature enables product catalog managers to provide free value to their customers by discounting a percentage or a fixed sum of an order's subtotal or an item's price on predefined conditions. - -## Discount Types - -There are two discount types: - -* Voucher -* Cart rule - -A product catalog manager selects a discount type when [creating a voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) or [creating a cart rule](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html). - -## Voucher - -A Voucher is a discount that applies when a customer enters an active voucher code on the *Cart* page. -![Cart voucher](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/cart_voucher.png) - -Once the customer clicks **Redeem code**, the page refreshes to show the discount name, discount value and available actions: **Remove** and **Clear all**. The **Clear all** action disables all the applied discounts. The **Remove** action disables a single discount. -![Cart voucher applied](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/cart_voucher_applied.png) - -Multiple voucher codes can be generated for a single voucher. The code has a **Max number of uses** value which defines how many times the code can be redeemed. - -You can eneter codes manually or use the code generator in the Back Office. -![Generate codes](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/generate_codes.png) - -See [Creating a Voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) to learn how a product catalog manager can create a voucher in the Back Office. - -## Cart Rule - -A Cart rule is a discount that applies to cart once all the [decision rules](#decision-rule) linked to the cart rule are fulfilled. - - -The cart rule is applied automatically. If the decision rules of a discount are fulfilled, the customer can see the discount upon entering cart. Unlike with [voucher](#voucher), the **Clear all** and **Remove** actions are not displayed. -![Cart rule](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/cart-cart-rule.png) - -See [Creating a Cart Rule](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html) to learn how a product catalog manager can create a cart rule in the Back Office. - -### Decision Rule -A decision rule is a condition assigned to a discount that should be fulfilled for the discount to be applied. - -A discount can have one or more decision rules. Find an examplary combination below: -| Parameter | RELATION OPERATOR | Value | -| --- | --- | --- | -| total-quantity | equal | 3 | -| day-of-week| equal | 5 | - -In this case, the discount is applied if the cart contains 3 items and the purchase is made on the fifth day of the week (Friday). - -Multiple decision rules form a query. A query is a request for information based on the defined parameters. In the Discount feature, a query requests information from a cart to check if it is eligible for the discount. By specifying decision rules, you define the parameters of the query. - -In the Back Office, a product catalog manager creates decision rules in a Query Builder. The decision rules created in the Query Builder are transformed into a single query. - -The decision rules from the previous example look as follows in the Query Builder: - -![Query builder](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/query-builder.png) - -A product catalog manager can enter the query manually as well. - -The same decision rules look as follows as a plain query: -![Plain query](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/plain-query.png) - -You can switch between Query Builder and Plain query modes to see how the specified decision rules look in either of them. - - -Decision rules are combined with *AND* and *OR* combination operators. With the AND operator, all the rules should be fulfilled for the discount to be applied. With the OR operator, at least one of them should be fulfilled for the discount to be applied. - - -In the following example, for the discount to be applied, a cart should contain 3 items and the purchase should be made on Wednesday. -![AND operator](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/and-operator.png) - -In the following example, for the discount to be applied, a cart should either contain 3 items or the purchase should be made on Wednesday. -![OR operator](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/or-operator.png) - -{% info_block infoBox "Info" %} - -When rules are combined by the OR operator, they do not exclude each other. If a cart fulfills both such rules, the discount is still applied. - -{% endinfo_block %} - -#### Decision Rule Group - -A rule group is a separate set of rules with its own combination operator. - -![Decision rule group](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+%26+Discounts/Discount/Discount+Feature+Overview/decision-rule-group.png) - -With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it is evaluated on all the levels of the hierarchy. On each level, there can be both rules and rule groups. - -![Decision rule hierarchy](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+%26+Discounts/Discount/Discount+Feature+Overview/decision-rule-hierarchy.png) - -When a cart is evaluated on a level that has a rule and a rule group, the rule group is treated as a single rule. The diagram below shows how a cart is evaluated against the rules on the previous screenshot. - -### Discount Threshold -Threshold is a minimum number of items in cart that should fulfill all the specified decision rules for the discount to be applied. -The default value is *1* . It means that a discount is applied if at least one item fulfills the discount's decision rules. - -In the following example, the discount is applied if there are four items with the Intel Core processor in cart. -![Threshold](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/threshold.png) - -## Discount Application - -Discount application is a discount configuration option that defines the products to which a discount is applied. - -There are two types of discount application: - -* Query String -* Promotional product - - -### Query String -Query String is a discount application type that uses [decision rules](#decision-rule) to dynamically define what products a discount applies to. - -The discount in the example below, applies to white products. -![Query collection](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/collection-query.png) - -The product selection based on the query string is dynamic: -* If, at some point, the color attribute of a product changes from white to anything else, the product is no longer eligible to be discounted. -* If, at some point, a product receives the white color attribute, it becomes eligible for the discount. - -### Promotional Product - -Promotional product is a discount application type that discounts a particular product, regardless of whether the product is added to cart or not. - -When a promotional product is available to a customer, the discount name is not displayed in the overview section. Instead, the **Promotional products** section is displayed in the cart, allowing to add the available quantity of the product to cart. -![Promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/promotional-product-frontend.png) - -A product catalog manager selects the promotional product by entering an abstract product SKU in the Back Office. Also, they define the quantity of the product to be sold with a discount. - -![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/collection-promotional-product.png) - - - -## Discount Calculation -Calculation defines the value to be deducted from a product's original price. There are two types of discount calculation: - -* Calculator percentage -* Calculator fixed - -{% info_block infoBox %} -With the calculator fixed type, the currency of the respective shop is used for calculation. -{% endinfo_block %} - -See examples in the table below. -| Product price | Calculation type | Amount | Discount applied | Price to pay | -| --- | --- | --- | --- | --- | -| €50 | Calculator percentage | 10 | €5 | €45 | -| €50 | Calculator fixed | 10 | €10 | €40 | - -A product catalog manager defines calculation when [creating a voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) or [creating a cart rule](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html). -![Discount calculation](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/discount_calculation.png) - -## Discount Exclusiveness -Discount exclusiveness defines if a discount value of a discount can be combined with the discount value of other discounts in a single order. - -A product catalog manager defines calculation when [creating a voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) or [creating a cart rule](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html). -![Exclusive discount](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/exclusivity.png) - -### Exclusive Discount - -An exclusive discount is a discount that, when applied to a cart, discards all the other discounts applied to it. If a cart is eligible for multiple exclusive discounts, the highest-value discount is applied. - -In the following example, a cart with the order total amount of €100 contains the following discounts. -| Discount name | Discount amount | Discount type | Exclusiveness | Discounted amount | -| --- | --- | --- | --- | --- | -| D1 | 15 | Calculator percentage | Exclusive | €15 | -|D2|5| Calculator fixed | Exclusive | €5 | -|D3|10| Calculator percentage | Non-exclusive | €10 | - -The discount exclusivity is resolved as follows: -1. The discounts D1 and D2 are exclusive, so the non-exclusive discount D3 is discarded. -2. The discount D1 providers more free value than the discount D2. -3. As a result, the discount D1 is applied. - - -### Non-exclusive Discount -A non-exclusive discount is a discount that can be combined with other non-exclusive discounts in a single order. - -In the following example, a cart with the order total amount of €30 contains the following discounts. -| Discount name | Discount amount | Discount type | Exclusiveness | Discounted amount | -| --- | --- | --- | --- | --- | -| D1 | 15 | Calculator percentage | Non-exclusive | €15 | -| D2 | 5 | Calculator fixed | Non-exclusive | €5 | -| D3 | 10 |Calculator percentage | Non-exclusive | €10 | - -As all the discounts are non-exclusive, they are applied together. - -## Discount Validity Interval -Validity interval is a time period during which a discount is active and can be applied. - - -If a cart is eligible for a discount outside of its validity interval, the cart rule is not applied. If a customer enters a voucher code outside of its validity interval, they get a "Your voucher code is invalid." message. - - -A product catalog manager defines calculation when [creating a voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) or [creating a cart rule](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/discount/creating-cart-rules.html). -![Validity interval](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Promotions+&+Discounts/Discount/Discount+Feature+Overview/validity-interval.png) diff --git a/docs/scos/user/features/201811.0/quick-add-to-cart-feature-overview.md b/docs/scos/user/features/201811.0/quick-add-to-cart-feature-overview.md deleted file mode 100644 index dfd27a4ba6f..00000000000 --- a/docs/scos/user/features/201811.0/quick-add-to-cart-feature-overview.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Quick Add to Cart feature overview -description: On the Quick Add to Cart form in the web-shop, a customer can enter product SKU and Quantity and proceed by adding it to cart or by creating an order right away. -last_updated: Oct 21, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/quick-order-overview-201903 -originalArticleId: 080a6dc8-600f-44f5-b0c2-114684e8bf3b -redirect_from: - - /v1/docs/quick-order-overview-201903 - - /v1/docs/en/quick-order-overview-201903 - - /v1/docs/quick-order-201903 - - /v1/docs/en/quick-order-201903 ---- - -The *Quick Order* feature allows placing bulk orders for wholesale and returning customers. - -On the *Quick Order* page, customers can add multiple products along with the required quantities in a fast and efficient way. They can search for a specific concrete product by SKU or name with the help of Search Widget for Concrete Products. When starting to fill out the *SKU/Name* field, a drop-down list with auto-suggested appropriate items appears. A shop visitor can select the concrete product by clicking on it in the drop-down list. - -{% info_block infoBox %} - -Use the Tab button to automatically fill in a partially typed product name or SKU. - -{% endinfo_block %} - -{% info_block infoBox %} - -By default, we use SKU as a product identifier for filtering the results. The identifier determines what input to validate in the *SKU/Name* field. You can configure to use more than one identifier such as EAN, GTIN, or Article number on the project level by changing the template in the `ProductSearchWidget` module and use any of the available fields for the product. - -{% endinfo_block %} - -To view how to create a quick order, see [Quick Order on the Storefront](#quick-order-on-the-storefront). - - -As a shop owner, you can also integrate the Quick Order with [Measurement Units](/docs/scos/user/features/{{page.version}}/measurement-units/measurement-units-feature-overview.html). Thus, when the product is selected, the base measurement unit for that product appears in the "Measuring Unit" column. - -{% info_block errorBox %} - -The integration is possible only if the Measurement Units feature is enabled in your project. - -{% endinfo_block %} - -Moreover, after adding a quick order to cart, a shop owner can observe the default amount and default sales units for the product packaging unit in the cart overview. -![Quick Order packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/quick-order-packaging-units.png) - -When the customer has found the products they need, they can set the quantity of each product using a scroll-down box. By default, "1" is set in the *Quantity* field. If there are any quantity restrictions applied to the product, they are taken into account: the customer can choose only the value which meets the quantity restrictions. See [Quantity Restrictions for Quick Order](#quantity-restrictions-for-quick-add-to-cart) to learn more about how the quantity limitations are applied to the *Quick Order* form. - -Once the products and their quantities have been selected, the order can be: - -* Moved to a shopping list -* Added to a shopping cart -* Checked out - -{% info_block infoBox %} - -For both Moved and Added to a Shopping List options, in a drop-down list you can select one of the shopping lists to automatically add the products. - -{% endinfo_block %} - -It is also possible to add products to cart in bulk. To do so, the customer adds SKUs and quantities of products in the *Paste your order* form, separating SKUs and quantities by one of the following separators, depending on specific project configuration: - -* Spaces -* Semicolons -* Commas -* Other separators - - -{% info_block warningBox %} - -However, separators should be the same for all products entered in this form at a time. If products and quantities are added in the correct format and with acceptable separators, but the separators are different for different products (for example, 1234567, 2 in one case and 1234568;3 in another, an error message is shown after verification. If SKUs and format have passed the verification, the products and their quantities are automatically entered in the* SKU* and *Qty* fields of the *Quick Order* form, and the customer can either add them to cart or create the order. - -{% endinfo_block %} - -## Quantity restrictions for Quick Order -Quick Order quantity rules fall under limitations set by [quantity restrictions](/docs/scos/user/features/{{page.version}}/non-splittable-products/non-splittable-products-feature-overview.html). Quantity restriction values define the number of items that customers can put into the cart. - -When manually filling the *SKU/Name* field, the quantity selector allows a visitor to put the valid numbers based on [quantity restrictions](/docs/scos/user/features/{{page.version}}/non-splittable-products/non-splittable-products-feature-overview.html) set for that SKU. That means, for example, if a concrete product has the minimum quantity restriction for 4 units, the interval restriction to 2 units, and the maximum quantity is 12, the shopper can put 4, 6, 8, 10, and 12 items to cart. - -The *Quantity* field in the Quick Order adheres to these quantities. Therefore, if the shopper enters an invalid number into the *Quantity* field, for instance, 5, the number will automatically change to the next higher quantity set in quantity restrictions, that is 6. - -## Product prices for Quick Order -To see the price, a shop visitor has to select the concrete product and set the item quantity. - -The price is displayed dynamically, taking into account the quantity, currency, store, and [merchant relation](/docs/scos/user/features/{{page.version}}/merchant-b2b-contracts/merchant-b2b-contracts.html) dimensions, respectively. If the item has any [volume prices](/docs/scos/user/features/{{page.version}}/prices-feature-overview/volume-prices-overview.html), the price is adjusted to the correct price set for the quantity the user has selected. - -## File upload form for concrete products -To save your buyers' time and help them order the products in bulk quickly, enable your customers to use the *File Upload* form. The *File Upload* form allows users to add multiple products to the *Quick Order* page by uploading data using a .csv file. - -{% info_block infoBox %} - -You can update the project configuration in case you need to use other file formats. - -{% endinfo_block %} - - -After the feature is integrated, a buyer can see a box on the *Quick Order* page: - -![File Upload form](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/file-upload-form.png) - -Buyers can upload a CSV by choosing a file from their local system or via drag & drop. To make the process more clear, they can download a sample CSV file and add the necessary data (SKU and Qty) there: - -![File Upload csv file](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/file-upload-csv.png) - -{% info_block infoBox %} - -Make sure to populate the product data in the following format: [CONCRETE_SKU, QUANTITY]. -It is possible to upload only one file at a time. - -{% endinfo_block %} - -By default, only concrete SKUs are validated. On successful upload, items and quantities are extracted and filled out in the quick order form fields. - -In case the quantity is not valid due to [quantity restrictions](/docs/scos/user/features/{{page.version}}/non-splittable-products/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. - -If there are already products added to the quick order list, the products from the CSV file are added to the bottom of the quick order template. - -## Quick Order on the Storefront - -Using the Quick Order feature on the Storefront, company users can: -* Create a new quick order. -* Add products to the quick order in bulk. -* Upload products using the upload form. -* Add a quick order o a shopping list. -* Add a quick order to a shopping cart. - -The following figure shows how to perform these actions: -![create-quick-order](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Quick+Order/Quick+Order+Feature+Overview/create-quick-order.gif) diff --git a/docs/scos/user/features/201811.0/refunds-feature-overview.md b/docs/scos/user/features/201811.0/refunds-feature-overview.md deleted file mode 100644 index 841d407ac62..00000000000 --- a/docs/scos/user/features/201811.0/refunds-feature-overview.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Refunds feature overview -description: Refunds can be handled automatically in the Admin Interface, once the order has been delivered. All refunds can be listed per order or as a full overview. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/refund-management -originalArticleId: 3de4512d-d0fe-4602-8868-3820be462d33 -redirect_from: - - /v1/docs/refund-management - - /v1/docs/en/refund-management ---- - -Refunds can be handled automatically in the Back Office, once the order has been delivered. Your customers can return the entire order or parts thereof by means of the order splitting mechanism. Every order contains information on the total possible refund value and how much has already been refunded. - -All refunds can be listed per order or as a full overview. All sales order items contain the information how much many money can be refunded in total and how much was refunded so far. - -For the refunded items, you can use the default OMS states to be displayed on the* Return Details* pages on the Storefront, or set custom state names so they would make more sense for the Storefront users. For details on how to set the custom state names on the Storefront for refunded orders, see [HowTo - display custom names for order item states on the Storefront](/docs/scos/dev/tutorials-and-howtos/howtos/feature-howtos/howto-display-custom-names-for-order-item-states-on-the-storefront.html). - - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [View refunds](/docs/scos/user/back-office-user-guides/{{page.version}}/sales/refunds/viewing-refunds.html) | -| [See the reference information for refunds](/docs/scos/user/back-office-user-guides/{{page.version}}/sales/refunds/viewing-refunds.html#reference-information-viewing-refunds) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Refunds feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/refunds-feature-walkthrough/refunds-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/reorder-feature-overview.md b/docs/scos/user/features/201811.0/reorder-feature-overview.md deleted file mode 100644 index 5cf90a2f6da..00000000000 --- a/docs/scos/user/features/201811.0/reorder-feature-overview.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Reorder feature overview -description: The Reorder feature simplifies the order placement process for your customers- it allows them to reorder their previous orders in just one click. -last_updated: Oct 15, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/reorder -originalArticleId: 191c2598-98d9-41bc-81df-30c5a86f93cf -redirect_from: - - /v1/docs/reorder - - /v1/docs/en/reorder ---- - -One of the biggest factors that influences customer loyalty and persuades them to repeatedly buy from your shop, is shopping convenience. Reorder feature simplifies the order placement process for your customers: it allows them to reorder their previous orders in just one click. All the customers would need to do is go to the _Order History_ in their _Customer Account_ and reorder either the entire order, or individual items from it. - -![Reorder orders on the View order page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Reorder/reorder_view_orders.png) - -![Reorder order details](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Order+Management/Reorder/reorder_order_details.png) - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Reorder feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/reorder-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/choosing-the-right-suite-for-you.md b/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/choosing-the-right-suite-for-you.md deleted file mode 100644 index 6a36eafc777..00000000000 --- a/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/choosing-the-right-suite-for-you.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Choosing the Right Suite for You -last_updated: Sep 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/choosing-the-right-suite-for-you -originalArticleId: f09f4be5-efad-48dd-abad-149629dd3282 -redirect_from: - - /v1/docs/choosing-the-right-suite-for-you - - /v1/docs/en/choosing-the-right-suite-for-you ---- - - diff --git a/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/sample-suite-and-custom-suite.md b/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/sample-suite-and-custom-suite.md deleted file mode 100644 index f9274d88ede..00000000000 --- a/docs/scos/user/features/201811.0/sample-suite-and-custom-suite/sample-suite-and-custom-suite.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Sample Suite and Custom Suite -last_updated: Sep 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/sample-suite-and-custom-suite -originalArticleId: b79aa0e1-eba4-46d1-af80-aeea2b88f40c -redirect_from: - - /v1/docs/sample-suite-and-custom-suite - - /v1/docs/en/sample-suite-and-custom-suite ---- - - diff --git a/docs/scos/user/features/201811.0/search-feature-overview/category-filters-overview.md b/docs/scos/user/features/201811.0/search-feature-overview/category-filters-overview.md deleted file mode 100644 index ee7b092bb8b..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/category-filters-overview.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Category filters overview -description: You can add, rearrange and define filters for any given parameter in the category tree, such as price or brand. -last_updated: Oct 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/filter-search-by-category -originalArticleId: d074f85b-0e3a-4dd1-b775-d10ab67d110f -redirect_from: - - /v1/docs/filter-search-by-category - - /v1/docs/en/filter-search-by-category ---- - -To help your customers locate items in your shop more easily you can add customizable Category Filters. You can add, rearrange and define filters for any given parameter in the category tree, such as price or brand. - -* Create white list of filters for every category - -## Current Constraints - -{% info_block infoBox %} -Currently, the feature has the following functional constraints which are going to be resolved in the future. -{% endinfo_block %} - -* category filters are shared across all the stores of a project - -* it is impossible to restrict availability of a category filter to a store - diff --git a/docs/scos/user/features/201811.0/search-feature-overview/dynamic-filters-and-facets.md b/docs/scos/user/features/201811.0/search-feature-overview/dynamic-filters-and-facets.md deleted file mode 100644 index f8db2e154d8..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/dynamic-filters-and-facets.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Dynamic Filters and Facets -description: Freely define facet filters for any Product Attribute. The design, placement on page, quantity of filters, content and order are completely customizable. -last_updated: Sep 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/dynamic-filter-facets -originalArticleId: ee78eb92-2ec9-4a23-8fbd-4f0f7ab77db8 -redirect_from: - - /v1/docs/dynamic-filter-facets - - /v1/docs/en/dynamic-filter-facets ---- - -You can freely define facet filters for any Product Attribute. The design, placement on page, quantity of filters, content and order by which they are listed in your shop are completely customizable. Apart from the Standard Filters there are others that make use of a product's metadata to create additional and more advanced filter options. An example hereof is the "New" Product Indication that allows you to display items that were added to your catalog recently. - -- Every product attribute can be used as a filter - -- Different filter types: single- and multi-select, and range filter diff --git a/docs/scos/user/features/201811.0/search-feature-overview/search-feature-overview.md b/docs/scos/user/features/201811.0/search-feature-overview/search-feature-overview.md deleted file mode 100644 index e555ad7532e..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/search-feature-overview.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Search feature overview -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/search -originalArticleId: 05ecac63-65a8-4486-ab9e-388a53186eaa -redirect_from: - - /v1/docs/search - - /v1/docs/en/search - - /v1/docs/search-filter - - /v1/docs/en/search-filter ---- - -One of the most important features in an e-commerce application is to give the customer the ability to find the products that he needs. Depending on how easy it is to find the products the customer is searching for and how relevant the search results are, the search feature is a crucial aspect for an e-commerce business. - -Spryker provides a fully functional solution to integrate `Elasticsearch` as a search engine. You can extend this solution or customize it to fit for your needs. - -Spryker uses [Elasticsearch](https://www.elastic.co/products/elasticsearch) version 5.x. - -We’ll have a look on how to configure and use the `Search` module: diff --git a/docs/scos/user/features/201811.0/search-feature-overview/search-preferences.md b/docs/scos/user/features/201811.0/search-feature-overview/search-preferences.md deleted file mode 100644 index d04257d5b5e..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/search-preferences.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Search Preferences -last_updated: Sep 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/search-preferences -originalArticleId: 155fd355-4af5-4255-8928-3685983f778f -redirect_from: - - /v1/docs/search-preferences - - /v1/docs/en/search-preferences ---- - -In Zed there’s a section (*Search and Filters -> Search Preferences*) for managing searchable product attributes. - -To be able to search after a product in the shop that has a specific attribute (e.g. color, size, etc.), you can click **Add attribute to search** to create new, or **Edit** if it already exists in your list then set “full text” or “full text boosted” settings to “Yes”. - -After adding/updating all necessary attributes, you’ll need to apply the changes by clicking **Synchronize search preferences**. This will trigger an action that searches for all products that have those attributes and were modified since the last synchronization and *touches* them. This means that next time, the search collector execution will update the necessary products, so they can be found by performing a full text search. - -{% info_block infoBox "Synchronization " %} -Depending on the size of your database, the synchronization can be slow sometimes. Make sure that you don't trigger it often if it's not necessary. -{% endinfo_block %} - -To have your search collector collect all the dynamic product attributes, make sure you also followed the steps described in the Dynamic product attribute mapping section. - -## Current Constraints - -{% info_block infoBox %} -Currently, the feature has the following functional constraints which are going to be resolved in the future. -{% endinfo_block %} - -* search preference attributes are shared across all the stores in a project -* you cannot define a search preference for a single store diff --git a/docs/scos/user/features/201811.0/search-feature-overview/search-types-overview.md b/docs/scos/user/features/201811.0/search-feature-overview/search-types-overview.md deleted file mode 100644 index 6a548d36a52..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/search-types-overview.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Search types overview -redirect_from: - - /v1/docs/full-site-search - - /v1/docs/en/full-site-search - - /v1/docs/multi-language-search - - /v1/docs/en/multi-language-search - - /v1/docs/textual-search - - /v1/docs/en/textual-search -template: concept-topic-template ---- - -This document describes the default search types shipped with the *Search* feature. - - -## Full-site search -The default full-site search has the following functionality: - -* *Fuzzy search*: Suggests search results that do not exactly match the search request. -* *Auto-completion*: Helps customers by predicting the rest of a search string and offers a list of matching options. -* *Search suggestions*: Proposes on-the-fly page suggestions for products, categories, or CMS Pages. -* *Did-you-mean*: Offers typo corrections for the search string. -* *Mimic a dynamic category* by saving a search result and embedding it like a category page in your navigation. - -## Multi-language search -If you set up a multi-language store, the search function automatically checks and adjusts the language your customer has selected. All search functions, such as auto-complete or auto-suggest, are then applied to the selected language. - -## Textual search -By default, all content on CMS and Product Pages, such as product name, description text, or allocated attributes, is searchable. Additionally, Product Attributes and can be boosted in the search results. You can easily define which products or content should be included into or excluded from the full-text search. - -See [Managing search preferences](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-search-preferences.html) for details on how you can manage the search preferences. - -## Current constraints - -Currently, the feature has the following functional constraints: - -* Search preference attributes are shared across all the stores in a project. -* You cannot define a search preference for a single store. - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Manage search preferences](/docs/scos/user/back-office-user-guides/{{page.version}}/merchandising/search-and-filters/managing-search-preferences.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Search feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/search-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/search-feature-overview/standard-filters-size-type-color-etc....md b/docs/scos/user/features/201811.0/search-feature-overview/standard-filters-size-type-color-etc....md deleted file mode 100644 index f3731d92b61..00000000000 --- a/docs/scos/user/features/201811.0/search-feature-overview/standard-filters-size-type-color-etc....md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Standard Filters (Size, Type, Color, Etc...) -description: SCOS offers a variety of different filter types to ease the process of product discovery. These filters include single- or multi-select and range filters. -last_updated: Oct 25, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/standard-filters -originalArticleId: d82fa803-15bb-49bd-ae48-a701c4a3b61c -redirect_from: - - /v1/docs/standard-filters - - /v1/docs/en/standard-filters - - /docs/scos/user/features/201811.0/search-feature-overview/standard-filters-size-type-color-etc....html ---- - -The Spryker Commerce OS offers a variety of different filter types to ease the process of product discovery. These filters include single- or multi-select and range filters. diff --git a/docs/scos/user/features/201811.0/shared-carts-feature-overview.md b/docs/scos/user/features/201811.0/shared-carts-feature-overview.md deleted file mode 100644 index 0168d53acbf..00000000000 --- a/docs/scos/user/features/201811.0/shared-carts-feature-overview.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Shared Carts feature overview -description: In B2B world shopping carts can be created and used by different individuals. A shopping cart can be shared with the users of the current business unit. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shared-cart-overview -originalArticleId: cd1e674b-ca7a-4e90-994d-6768c99bceee -redirect_from: - - /v1/docs/shared-cart-overview - - /v1/docs/en/shared-cart-overview - - /v1/docs/shared-cart - - /v1/docs/en/shared-cart ---- - -Shopping Cart is a part of the online shop where the record of the items a buyer has ‘picked up’ from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. - -There are two ways to access a shopping cart: - -* through a shopping cart widget in the header of the webshop -* from Shopping Cart page in My Account menu - -New items are added to the shopping cart by clicking on **Add to Cart** on the product details page. - -To share a shopping cart, a user needs to click **Share cart** in the **Actions** column (on the _Shopping Cart_ page, in _My Account_ menu) for a cart they would like to share . - -![Shared cart button](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shared+Cart+Feature+Overview/share-cart-button.png) - -## Permissions Management for Shared Shopping Carts -A shopping cart can be shared with the users of the current business unit. The Share cart `` page consists of the users within the business unit to share the shopping cart with. - -![Shared cart page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shared+Cart+Feature+Overview/share-cart-page.png) - -There are 3 types of access rights that can be granted on shopping carts: - -* no access -* read-only -* full access - -### No access -_**No access**_ means that shopping cart is not shared and therefore can not be seen by a user. - -{% info_block warningBox %} -No access permission is applied automatically to a newly-created cart. -{% endinfo_block %} - -### Read-only -_**Read-only**_ permission allows: - -**_Reading shopping cart_**. On the Shopping cart page, the user sees shopping cart name, access level (Read only), as well as the table of items with the following information: - -* Product image -* Product name -* SKU -* Product attribute -* Product options -* Quantity -* Note -* Price mode -* Item price -* Cart Note -* Discount -* Subtotal -* Tax -* Grand Total - -{% info_block warningBox %} -With Read-only permission, no cart actions are available to the user.![Read-only cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shared+Cart+Feature+Overview/read-only-cart.png -{% endinfo_block %} ) - -### Full access -_**Full access**_ permission allows: - -1. **Reading shopping cart**: On the _Shopping cart_ page, the user sees a shopping cart name, access level (_Full access_), as well as the table of items with the following information: - * Product image - * Product name - * SKU - * Product attribute - * Product options - * Quantity - * Note - * Price mode - * Item price - * Cat Note - * Discount - * Subtotal - * Tax - * Grand Total - -2. **Changing quantity of items added to cart**: On the Shopping Cart summary page, a user can change the item quantity for the product added to the cart. - -3. **Adding products to cart**: A user can add any products to the cart with full access. - -4. **Removing products from the cart**: Having clicked on Remove, the user can remove an item from the cart. Having clicked on Clear cart, deletes all the items in the cart. - -5. **Leaving notes for products in the cart**: A user can leave a note to a particular product in the cart on Shopping cart summary page. - -6. **Leaving notes for the cart**: A user can leave a note to a cart on Shopping cart summary page. - -7. **Entering voucher code**. - -8. **Adding the cart to the shopping list**. A cart can be converted into shopping list on Shopping cart summary page. - -9. **Proceeding to the checkout**. - -![Full access cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shared+Cart+Feature+Overview/full-access-cart.png) - -10. **Editing shopping cart name**: The shopping cart name can be updated on Shopping cart page. - -11. **Duplicating shopping cart**: The shopping cart can be duplicated on Shopping cart page. - -13. **Deleting shopping cart**: The shopping cart can be deleted on Shopping cart page. Deleting a shared shopping cart also deletes it for users it has been shared with. - -![Shopping Cart Actions](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+Cart/Cart/Shared+Cart+Feature+Overview/shopping-cart-actions.png) - -By default, the user who has created the cart has Owner access permission. Owner access permission allows everything that allows Full access permission and an ability to share the cart with other users. - -If user does not need a cart, that has been shared with them, it is possible to remove it from their shopping carts and thus cancel sharing. To do so, the user clicks Dismiss on the Shopping Cart page in Actions next to the respective shared shopping cart. It is possible to dismiss sharing shopping carts with both Read only and Full access rights. Own shopping carts cannot be dismissed. - -{% info_block errorBox %} -If the shared cart has been dismissed individually by the user, this user will not be able to see it in case this cart is shared next time. -{% endinfo_block %} - -## Current Constraints -With the current functionality, the shopping cart cannot be shared outside of a [Business Unit](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/business-units-overview.html) where the owner belongs. - - - - - diff --git a/docs/scos/user/features/201811.0/shipment-feature-overview.md b/docs/scos/user/features/201811.0/shipment-feature-overview.md deleted file mode 100644 index e07b642fd59..00000000000 --- a/docs/scos/user/features/201811.0/shipment-feature-overview.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Shipment feature overview -description: With the feature, you can create and manage carrier companies and their delivery methods per specific store. -last_updated: Jan 13, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shipment-carriers-methods -originalArticleId: 1369619e-34db-4e28-854a-f0189585f623 -redirect_from: - - /v1/docs/shipment-carriers-methods - - /v1/docs/en/shipment-carriers-methods - - /v1/docs/shipment-feature-overview - - /v1/docs/en/shipment-feature-overview - - /v1/docs/shipment-summary - - /v1/docs/en/shipment-summary - - /v1/docs/shipment - - /v1/docs/en/shipment - - /v1/docs/shipment-overview - - /v1/docs/en/shipment-overview - - /v1/docs/shipment-calculation-rules - - /v1/docs/en/shipment-calculation-rules - - /v1/docs/multiple-currency-shipment - - /v1/docs/en/multiple-currency-shipment - - /v1/docs/shipment-calculation-rules - - /v1/docs/en/shipment-calculation-rules - - /docs/scos/user/features/201811.0/shipment/shipment-feature-overview.html ---- - -The *Shipment* feature allows you to create and manage carrier companies and assign multiple delivery methods associated with specific stores, which your customers can select during the checkout. With the feature in place, you can define delivery price and expected delivery time, tax sets, and availability of the delivery method per store. - -The main concepts regarding shipping are as follows: - -* **Carrier company**: A company that provides shipping services such as DHL, FedEx, Hermes, etc. -* **Delivery method**: Shipping services provided by a carrier company such as DHL Express, DHL Standard, Hermes Next Day, Hermes Standard, etc. - -A sales order can have multiple delivery methods from different carrier companies. - -In the Back Office, you can create a carrier company and configure multiple delivery methods. For each delivery method, you can set a price and an associated tax set, define a store in which the delivery method can be available, as well as activate or deactivate the delivery method. For more information on how to create and manage delivery methods in the Back Office, see [Creating and managing delivery methods](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/delivery-methods/creating-and-managing-delivery-methods.html). - -{% info_block warningBox %} - -If a Back Office user creates or edits a shipment of an order created by a customer, the grand total paid by the customer is not affected: - -* If a new shipment method is added, its price is 0. -* If the shipment method is changed, the price of the previous shipment method is displayed. - -{% endinfo_block %} - -Additional behaviors can be attached to a delivery method from the Back Office by selecting specific plugins. For more information on method plugins types, see [Reference information: Shipment method plugins](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shipment-feature-walkthrough/shipment-method-plugins-reference-information.html). - -Each shipment method has a dedicated price and tax set in the various currencies you define. The price displayed to the customer is calculated based on the store they visit or their preferred currency selection. - -{% info_block infoBox "Shipment calculation rules" %} - -You can give shipment discounts based on the carrier, shipment method, or cart value. Intricate calculations enable you to freely define a set of rules to be applied to the various discount options. - -{% endinfo_block %} - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Get a general idea of the Shipment feature](/docs/scos/user/features/{{page.version}}/shipment/shipment-feature-overview.html) | -| [Create a carrier company](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/delivery-methods/creating-carrier-companies.html) | -| [Create and manage delivery methods](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/delivery-methods/creating-and-managing-delivery-methods.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Shipment feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shipment-feature-walkthrough/shipment-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-notes-overview.md b/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-notes-overview.md deleted file mode 100644 index cf7186715c3..00000000000 --- a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-notes-overview.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Shopping List Notes overview -description: With the feature, you can leave and manage notes for each item in the order. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-list-notes -originalArticleId: e3ade7f9-36e2-4c8b-9155-f3a168321d54 -redirect_from: - - /v1/docs/shopping-list-notes - - /v1/docs/en/shopping-list-notes - - /v1/docs/shopping-list-notes-overview - - /v1/docs/en/shopping-list-notes-overview ---- - -The Shopping List Notes feature allows buyers to manage notes for individual items they have on their shopping lists. For example, a bakery might have created a shopping list with products they buy on a regular basis. Suppose, they have 10 kg flour bag on the shopping list, but they want to make sure that they always have enough amount of flour in their stock and therefore need to buy more sometimes. They can leave a note at the "flour bag" product saying "check if more than one bag should be purchased". Notes to shopping list items are added on *Edit shopping list* page. Customers can edit and delete the created shopping list notes there as well. - -When customer transfers shopping list items to cart, their notes are taken over as well, under the following conditions: - -* If an item **with notes** exists in a shopping list, and is transferred to cart, where the same item does not exist, the item is added with notes. -* If an item **with notes exists in a shopping list, and is transferred to cart**, **where the same item already exists** (with or without notes), the item is added as a **separate item** with notes. -* If an item **without notes** exists in a shopping list, and is transferred to cart, where the same item already exists **without notes**, the items are **merged**. -* If an item **without notes exists in a shopping list, and is transferred to cart, where the same item already exists with a note**, the item is added as a **separate item**. diff --git a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-printing-overview.md b/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-printing-overview.md deleted file mode 100644 index 66e5e0a6531..00000000000 --- a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-printing-overview.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Shopping list printing overview -description: With the feature in place, shop visitors can print their own shopping lists and shopping lists shared with them from their account or Shopping list view page. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/printing-shopping-list-overview -originalArticleId: 55e4b987-9319-412f-bd04-6e20abff7b28 -redirect_from: - - /v1/docs/printing-shopping-list-overview - - /v1/docs/en/printing-shopping-list-overview - - /v1/docs/printing-shopping-list - - /v1/docs/en/printing-shopping-list ---- - -Shopping lists are used by companies to prepare and manage the list of products they intend to buy or the products that they buy regularly. The shopping lists are highly popular among restaurants, as they can easily prepare lists of food they order on a regular basis. However "digital" version of the shopping lists is not always convenient, as, for example restaurants, cafes and bakeries prefer a paper version of the shopping list in the kitchen to collect handwritten notes or pin them to a wall and subsequently make an order. The Print Shopping List feature makes it possible for your customers to print the list of products with barcodes they added to the shopping list in the web shop, as well as shopping lists shared with them. They can even order items from the printed shopping lists with the help of a barcode scanner. - - -The web shop users can print their shopping lists, as well as shopping lists shared with them, in two ways: - -* from *My Account→Shopping Lists* page: -![Overview page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Print+Shopping+List/Printing+a+Shopping+List+Feature+Overview/actions-overview-page.png) - -* from Shopping List View page (which can be accessed by clicking on the name of a shopping list on Shopping Lists page): -![Shopping list details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Print+Shopping+List/Printing+a+Shopping+List+Feature+Overview/shopping-list-details-page.png) - -Clicking *Print* opens a printable version of a *Shopping List* page, which contains the shopping lists name, product barcode, SKU, name, default price and note: -![Printing page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Print+Shopping+List/Printing+a+Shopping+List+Feature+Overview/print.png) diff --git a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-widget-overview.md b/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-widget-overview.md deleted file mode 100644 index e112a72e0d5..00000000000 --- a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-list-widget-overview.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Shopping list widget overview -description: For convenience and ease of use, when customer puts a cursor on the shopping list icon, a drop-down list with all their shopping lists is displayed. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-list-widget -originalArticleId: ff3f791d-c5e6-4526-a7cb-0b152425a1fa -redirect_from: - - /v1/docs/shopping-list-widget - - /v1/docs/en/shopping-list-widget - - /v1/docs/shopping-list-widget-overview - - /v1/docs/en/shopping-list-widget-overview ---- - -Shopping list is a list of items that a customer plans to buy. Many of the B2B customers compile shopping lists of items they buy on a regular basis. Also, such customers often use multiple shopping lists to cover their specific purchasing needs. For example, cafes prefer using Shopping list feature to create several shopping lists where they save items they keep ordering every day, week etc. - -For customers' convenience and ease of use, the shopping list widget is placed in the very header. When customer puts a cursor on the shopping list icon, a drop-down menu with all their shopping lists is displayed. For each shopping list the following details are provided in the drop-down menu: - -* Shopping list name. -* First and last name of the person who created the shopping list. -* Level of access for shopping list: full access (green) or read only (grey). See [Multiple and Shared Shopping Lists Overview](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-lists-feature-overview.html) to learn more about shopping lists sharing and access levels. -* Number of items in the shopping list. -* *Create New List* button which adds a new list in *Shopping list* section. -* *All Shopping Lists* button which leads to *Shopping Lists* page with all the shopping lists available for the customer. -![Shopping List widget](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Shopping+List+Widget/Shopping+List+Widget+Feature+Overview/Shopping-list-widget.png) diff --git a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-lists-feature-overview.md b/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-lists-feature-overview.md deleted file mode 100644 index 244a4659966..00000000000 --- a/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-lists-feature-overview.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Shopping Lists feature overview -description: A general overview of the Multiple and shared shopping lists feature. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-list -originalArticleId: fdf220a1-7d96-4263-b088-2c1aff5a9cd1 -redirect_from: - - /v1/docs/shopping-list - - /v1/docs/en/shopping-list - - /docs/scos/user/features/201811.0/shopping-lists-feature-overview/multiple-and-shared-shopping-lists-overview.html ---- - -A shopping list is a list of the items that shoppers buy or plan to buy frequently or regularly. For example, a consumer can compile a shopping list of the products they purchase every week. Shopping lists allow a buyer to have a quick overview of the products they are planning to buy and the sum of money they are going to spend. - -A shopping list is always saved, disregarding if a company user logs out and logs in again—the list is still available. The shopping list does not reserve products on stock, so adding an item to the shopping list does not affect item availability. However, a company user can easily convert any shopping list into a shopping cart to proceed with the Checkout. -There are two ways to create a shopping list: - -* Through a [shopping list widget](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-list-widget-overview.html) in the header of the shop. -* From the *Shopping Lists* page in the *My Account* menu. See [Multiple and Shared Shopping Lists on the Storefront](#multiple-and-shared-shopping-lists-on-the-storefront) for more detailed instruction. - -New items are added to shopping lists by clicking **Add to Shopping List** on the product details page. - -Company users can create not just one but multiple shopping lists to be used for different needs or to purchase products at different periods. - -{% info_block infoBox "Example" %} - -For instance, these could be separate shopping lists for daily, weekly, and monthly purchases. - -{% endinfo_block %} - -The detailed information on managing shopping lists is represented in the [Multiple and Shared Shopping Lists overview](#multiple-and-shared-shopping-lists-on-the-storefront) section. - -## Permissions management for shared shopping lists - -Users of companies with business units can **share** their shopping lists within the company business units. The shopping lists can either be shared with the entire business unit or its members. Company users can view shopping lists shared with them on the *My Account* -> *Shopping lists* page. The shopping lists can be shared by clicking **Share** on this page as well. The *Share [SHOPPING LIST NAME]* page consists of two sections: *Business Units* and *Users*. Here, the shopping list owner can select either the entire business unit or individual users to share the shopping list with. -To view how to share shopping lists with business units or its members, see the [Multiple and Shared Shopping Lists on the Storefront](#multiple-and-shared-shopping-lists-on-the-storefront) section. - -Three types of shopping list access rights can be granted: - -* No access -* Read only -* Full access - -### No access - -**No access** means that a shopping list is not shared and therefore can not be seen by a business unit/user. - -### Read only - -**_Read only_** permissions allows: - -1. **Reading Shopping list**: On the *Shopping List View* page, the user sees a shopping list name, owner, access level (*Read only*), number of users the shopping list is shared with, as well as the table of items with the following information: - -* Product image -* Product name -* SKU -* Product attribute -* Product options -* Product comments (see [Shopping List Notes overview](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-list-notes-overview.html) for more details) -* Quantity -* Item price -* Availability -* Actions: The **Add to Cart** button - -{% info_block infoBox %} - -Alternative products are not shown for discontinued products since they can not be basically added to the cart, and a user with *Read only* rights can not amend the shopping list by adding these products to it. - -{% endinfo_block %} - - -2. **Changing quantity of items for adding to cart**: On the *Shopping List View* page, a user can change the item quantity to be added to cart. - -3. **Printing a shopping list**: A user can print a shopping list from the *My Account*→*Shopping Lists* or page or from the *Shopping List View* page. For details, see [Multiple and Shared Shopping Lists on the Storefront ](#multiple-and-shared-shopping-lists-on-the-storefront). - -4. **Adding shopping list items to cart**: A user can select the necessary which are available and add them to cart. - -## Full access - -**_Full access_** permissions allow: - -1. Reading a shopping list: On the _Shopping List View_ page, the user sees the name of owner, access level (Full access), the number of users the shopping list is shared with, as well as the table of items with the following information: - * Product image - * Product name - * SKU - * Product attribute - * Product options - * Product notes (see [Shopping List Notes overview](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-list-notes-overview.html) for more details) - * Quantity - * Item price - * Availability - * Actions: **Add to cart** icon, **Remove** button - -{% info_block infoBox %} - -Besides other products, a user with *Full access* rights is allowed to see alternatives for discontinued items, which can be added to the shopping list. - -{% endinfo_block %} - -2. **Changing the number of items for adding to cart**: On the *Shopping List View* page, the user can change the item quantity to be added to the cart. - -3. **Printing a shopping list**: A user can print a shopping list from the *My Account*→*Shopping Lists* or page or from the *Shopping List View* page. For details, see [Multiple and Shared Shopping Lists on the Storefront ](#multiple-and-shared-shopping-lists-on-the-storefront). - -4. **Editing a shopping list**: Having clicked **Edit**, the user is taken to the *Edit Shopping list* page. - -5. **Changing quantity for a shopping list**: The number of items in the shopping list can be changed on the *Edit Shopping list* page. - -6. **Sharing a shopping list**: A shopping list can be shared by clicking the **Share** button or the **Shared with** link. - -7. **Deleting a shopping list** - -8. **Deleting items in a shopping list**: The shopping list items can be deleted on the **Edit Shopping list** page. -![Shared full access](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview+v201907.0/shared-full-access.png) - -It is possible to grant different access rights on a shopping list to a business unit and users belonging to it. For example, a shopping list can be shared with *Read only* permissions to a business unit, but some of its users might be granted *Full access* permissions. In this case, these users will have *Full access* to the shopping list, whereas the rest of the business unit members will be entitled to *Read only* access. - -## Search widget for shopping lists - -Starting from v. 2019.03.0, it is possible to integrate the [Search Widget for Concrete Products](/docs/scos/user/features/{{page.version}}/product-feature-overview/search-widget-for-concrete-products-overview.html) feature. The search widget allows adding the products to the shopping list directly from the shopping list page. The shoppers do not need to go to product detail pages to add products to a list anymore. - -{% info_block warningBox %} - -Without the Search widget, you will not be able to search for products. Therefore, make sure that the Search Widget for Concrete Products feature is integrated into your project. - -{% endinfo_block %} - -![Search widget](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview+v201907.0/shopping-list-search-widget.png) - -## Subtotal for a shopping list - -Starting from v.201907.0, every shopping list has Subtotal for all the items added to the shopping list according to the selected Price Mode and Currency. -![Subtotal for shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview+v201907.0/subtotal-for-shopping-list.png) - - -## Multiple and Shared Shopping Lists on the Storefront - - Company users can perform the following actions using the Multiple and Shared Shopping Lists feature on the Storefront: - -
      -Create, delete, and add a shopping list to cart - -![create-delete-and-add-shopping-lists-to-cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview/create-delete-add-to-cart-shopping-lists.gif) - -
      - -
      - -Edit shopping lists - -![edit-shopping-lists](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview/manage-shopping-lists.gif) - -
      - -
      - -Add products from the product details page to a shopping list - -![add-products-from-the-product-detail-page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview/add-products-from-the-product-detail-page.gif) - -
      - - -
      - -Dissmiss a shared shopping list, share and print a shopping list - -![dismiss-share-and-print-a-shopping-list](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Shopping+List/Multiple+and+Shared+Shopping+Lists/Multiple+and+Shared+Shopping+Lists+Overview/dismiss-share-and-print-a-shopping-list.gif) - -
      - - -## Video tutorial - -Check out this video tutorial on how to use shopping lists. - -{% wistia zk32pr3lgt 960 720 %} - -## Current constraints - -We do not support product options in Subtotal of the Shopping Lists. For example, a shopping list includes 3 office chairs, each of them cost €15. The subtotal will show €45 for 3 items. But if we add a product option, e.g., gift wrapping for €5 each to these three office chairs, the subtotal should display €60 (€15/chair + €5/gift wrapping * 3). However, the shopping list will display just the product price - €45. - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Get a general idea of the shopping list widget](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-list-widget-overview.html) | -| [Get a general idea of Shopping List Notes](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/shopping-list-notes-overview.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Shopping Lists feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/shopping-lists-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/back-office-translations-overview.md b/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/back-office-translations-overview.md deleted file mode 100644 index 0859c39e8e1..00000000000 --- a/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/back-office-translations-overview.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Back Office Translations overview -template: concept-topic-template -originalLink: https://documentation.spryker.com/v5/docs/back-office-translations-overview -redirect_from: - - /v1/docs/back-office-translations-overview - - /v1/docs/en/back-office-translations-overview - - /v1/docs/back-office-translations - - /v1/docs/en/back-office-translations ---- - -The Back Office Translations feature introduces a way to translate the Administration interface (Zed) into different languages in a per-user manner. In terms of hierarchy, only the user with administrative rights who has access to User Control section of Zed, can manage the feature. For example, a team of developers might include a French and a German. In this case, the Shop Administrator might set up French and German Zed translations for their accounts accordingly, and those translations wouldn't interfere with each other. - -There are two ways to assign a language to a user account: from the Create new User page of the User Control>User section or from the Edit User page of User Control>User section if the user is already created. Once the account language is changed, the respective user will see that their interface is translated into the corresponding language upon their next login. - -Translations are added by means of uploading .csv extension files to the folders of the target modules - `data/translation/Zed/{ModuleName}/{locale_code}.csv` - -File name examples can be found below: - -* `en_US.csv` -* `en_UK.csv` -* `de_DE.csv` -* `fr_FR.csv` - -Once a new translation file is uploaded, regenerate translation cache to reflect the changes by running the following commands: - -``` -translator:clear-cache -translator:generate-cache -``` - -Each file should consist of _key_ and _translation_ columns without headers. Example: - - -| | | -| --- | --- | -| Add Group | Gruppe hinzufügen | -| Add new Role | Neue Rolle hinzufügen | -| Add Rule | Regel hinzufügen | - -{% info_block warningBox %} -If a translation is missing, the corresponding key is displayed instead. -{% endinfo_block %} - -Unlike _Glossary_ section of Zed which is used for managing Front-end(Yves) translations, there is no interface for managing Zed translations currently. All the translations are managed by updating corresponding .csv files directly. Similarly to uploading translation files, you need to regenerate translation cache to reflect the changes after updating them. Use the commands to do that. - -Newly created and all the existing modules are shipped with German translation by default. If you want to add a different language, you can follow the instructions from the [Back Office translations feature integration guide](/docs/scos/dev/feature-integration-guides/201903.0/spryker-core-back-office-feature-integration.html). - -The scheme below illustrates relations between Translator, UserExtension, User, UserLocale and UserLocaleGui modules: - -![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Back+Office/Back+Office+Translations/Back+Office+Translations+Feature+Overview/module-diagram.png) diff --git a/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.md b/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.md deleted file mode 100644 index 6bbdd8c7983..00000000000 --- a/docs/scos/user/features/201811.0/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Spryker Core Back Office feature overview -description: The article provides general information about the actions you can perform in Spryker Back Office. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/back-office -originalArticleId: 43d61897-09b0-46d4-9368-d5e871dd5627 -redirect_from: - - /v1/docs/the-back-office-overview - - /v1/docs/en/the-back-office-overview - - /v1/docs/back-office-login-overview - - /v1/docs/en/back-office-login-overview - - /v1/docs/back-office - - /v1/docs/en/back-office - - /v1/docs/spryker-core-back-office - - /v1/docs/en/spryker-core-back-office - - /v1/docs/back-office-management - - /v1/docs/en/back-office-management - - /v1/docs/customer-management - - /v1/docs/en/customer-management - - /v1/docs/data-protection - - /v1/docs/en/data-protection ---- - -A Spryker-based shop ships with a comprehensive, intuitive administration area comprised of numerous features that give you a strong hold over the customization of your store. Here you can tailor features to your specific needs, manage orders, products, customers, modify look & feel of your store by, for example, designing the eye-catching marketing campaigns and promotions, and much more. - -The Spryker Back Office provides you with a variety of sections that are logically connected to each other. - -{% info_block infoBox "Spryker Back Office" %} - -It provides the product and content management capabilities, categories and navigation building blocks, search and filter customizations, barcode generator, order handling, company structure creation (_for B2B users_), merchant-buyer contracts' setup. - -{% endinfo_block %} - -With Spryker Back Office, you can: -* Manage orders placed by your customers as well as create orders for customers -* Create and manage customers -* Build and manage product categories -* Create and manage CMS blocks and pages -* Handle translations -* Manage products and all elements related to them (availability, labels, options, types, etc.) -* Customize search and filters for the online store -* Create and manage discounts -* Build and manage the main navigation of your online store -* Create new carrier companies and shipment methods as well as manage those -* Create admin users, add roles and user groups - -Depending on the roles and teams in your project, you can limit the access of different Back Office users to specific Back Office areas. - -**Back Office provides both, B2B and B2C capabilities.** - -{% info_block infoBox "Info" %} - -The following diagram shows what features are used for both **B2B and B2C**, and which are **B2B specific**. - -{% endinfo_block %} - -![B2B and B2C features](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/spryker-core-back-office-feature-overview/spryker-core-back-office-feature-overview.md/b2b-and-b2c-features.png) - -You can always define what exactly is going to be needed for your specific project. - - -## Current constraints - -Currently, the feature has the following functional constraint: - -Each of the Identity Managers is an ECO module that should be developed separately. After the module development, the Identity Manager’s roles and permissions should be mapped to the roles and permissions in Spryker. The mapping is always implemented at the project level. - - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Get a general idea of the Back Office Translations](/docs/scos/user/features/{{page.version}}/spryker-core-back-office-feature-overview/back-office-translations-overview.html) | -| **Work with the Back Office**: | -| [Log in to the Back Office](/docs/scos/user/back-office-user-guides/{{page.version}}/logging-in-to-the-back-office.html) | -| [View Dashboard](/docs/scos/user/back-office-user-guides/{{page.version}}/dashboard/viewing-dashboard.html) | -| [Mange Punch Out](/docs/scos/user/back-office-user-guides/{{page.version}}/punch-out/managing-punch-out-connections.html) | -| [View Order Matrix](/docs/scos/user/back-office-user-guides/{{page.version}}/sales/order-matrix/viewing-the-order-matrix.html) | -| [Manage customers](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/customer-customer-access-customer-groups/managing-customers.html) | -| [Create an abstract product and product bundles](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html) | -| [Create content items](/docs/scos/user/back-office-user-guides/{{page.version}}/content/content-items/creating-content-items.html) | -| [Create a voucher](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) | -| [Manage users](/docs/scos/user/back-office-user-guides/{{page.version}}/users/managing-users/creating-users.html) | -| [Manage merchants](/docs/scos/user/back-office-user-guides/{{page.version}}/marketplace/merchants-and-merchant-relations/managing-merchants.html) | -| [Create a warehouse](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/warehouses/creating-warehouses.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Spryker Core back Office feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/spryker-core-back-office-feature-walkthrough/spryker-core-back-office-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/tax-feature-overview.md b/docs/scos/user/features/201811.0/tax-feature-overview.md deleted file mode 100644 index 1a610247772..00000000000 --- a/docs/scos/user/features/201811.0/tax-feature-overview.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Tax feature overview -description: With the Tax feature you can define taxes for the items you sell. -last_updated: Apr 3, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/international-tax-rates-sets-1 -originalArticleId: 8154d4a6-f229-4f15-bc05-22f1356e7c75 -redirect_from: - - /v1/docs/tax - - /v1/docs/en/tax - - /v1/docs/manage-tax-rates-sets - - /v1/docs/en/manage-tax-rates-sets - - /v1/docs/international-tax-rates-sets-1 - - /v1/docs/en/international-tax-rates-sets-1 - - /v1/docs/international-tax-rates-sets - - /v1/docs/en/international-tax-rates-sets - - /v1/docs/internationalization - - /v1/docs/en/internationalization ---- - -The *Tax* feature allows you to define taxes for the items you sell. The feature is represented by two entities: tax rates and tax sets. - -The tax rate is the percentage of the sales price that buyer pays as a tax. In the default Spryker implementation, the tax rate is defined per country where the tax applies. See [Managing tax rates](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/managing-tax-rates.html) for details on how to create and manage tax rates for countries in the Back Office. - -A tax set is a set of tax rates. You can [define tax sets in the Back office](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html) or[ import tax sets](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-tax.csv.html) into your project. - -Tax sets can be applied to abstract product, product option and shipment: - - -| ENTITY | INSTRUCTIONS ON DEFINING TAX SETS FOR THE ENTITY IN THE BACK OFFICE | DETAILS ON THE IMPORT FILE TO IMPORT TAX SETS FOR THE ENTITY | -| --- | --- | --- | -| Abstract product | [Defining prices](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/products/manage-abstract-products-and-product-bundles/create-abstract-products-and-product-bundles.html#defining-prices) | [File details: product_abstract.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/catalog-setup/products/file-details-product-abstract.csv.html#file-details--product_abstract-csv) | -| Product option | [Creating a product option](/docs/scos/user/back-office-user-guides/{{page.version}}/catalog/product-options/creating-a-product-option.html#creating-a-product-option) | [File details: product_option.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/special-product-types/product-options/file-details-product-option.csv.html) | -| Shipment | [Creating a delivery method](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/delivery-methods/creating-and-managing-delivery-methods.html#creating-a-delivery-method) | [File details: shipment.csv](/docs/scos/dev/data-import/{{page.version}}/data-import-categories/commerce-setup/file-details-shipment.csv.html) | - -## International tax rates and sets - -Align your business with international tax standards by defining tax rates and sets. Determine country-based tax rates for products, options and shipments, that will automatically be applied to the respective shops. - -In a tax system, the tax rate is the ratio (usually expressed as a percentage) at which a business, person, items are taxed. - -Tax set is a set of tax rates that can be applied to a specific product. - -Keeping that in mind, the tax rate is created first. -![Tax rate](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Tax/International+Tax+Rates+&+Sets/tax-rate.gif) - -Once the rate is defined, you can attach it to a tax set(s). A tax set can contain from one to many tax rates. -![Tax set](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Tax/International+Tax+Rates+&+Sets/tax-set.gif) - -The described values are defined in the **Back Office** > **Taxes** section. - -![Tax section](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Tax/International+Tax+Rates+&+Sets/taxes-section.gif) - -## Related Business User documents - -|BACK OFFICE USER GUIDES| -|---| -| [Get a general idea of the Tax feature](/docs/scos/user/features/{{page.version}}/tax-feature-overview.html) | -| [Manage tax rates](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-rates/managing-tax-rates.html) | -| [Manage tax sets](/docs/scos/user/back-office-user-guides/{{page.version}}/administration/tax-sets/managing-tax-sets.html) | - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Tax feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/tax-feature-walkthrough/tax-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/features/201811.0/wishlist-feature-overview.md b/docs/scos/user/features/201811.0/wishlist-feature-overview.md deleted file mode 100644 index 7a42512b8ee..00000000000 --- a/docs/scos/user/features/201811.0/wishlist-feature-overview.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Wishlist feature overview -description: Help your customers track and save items for later purchase through multiple Wish Lists, which are connected to the users' accounts. -last_updated: Aug 2, 2021 -template: concept-topic-template -originalLink: https://documentation.spryker.com/2021080/docs/wishlist-feature-overview -originalArticleId: 6af20838-1a7d-4112-9f8b-802995363403 -redirect_from: - - /v1/docs/wishlist - - /v1/docs/en/wishlist - - /v1/docs/wishlist-schema - - /v1/docs/en/wishlist-schema - - /v1/docs/wishlist-management - - /v1/docs/en/wishlist-management - - /v1/docs/wishlist-items-mgmt - - /v1/docs/en/wishlist-items-mgmt - - /v1/docs/convert-wishlist-cart - - /v1/docs/en/convert-wishlist-cart - - /v1/docs/named-wishlists - - /v1/docs/en/named-wishlists - - /v1/docs/multiple-wishlists - - /v1/docs/en/multiple-wishlists ---- - -Help your customers track and save items for later purchase through multiple wishlists, which are connected to the users' accounts. - - - -Customers can manage their wishlists in the *Wishlist* section of the customer account. In there, they can see the list of wishlists that they have, the number of items inside each one, the date of creation, **Edit** and **Delete** options. - - - -{% info_block warningBox "Warning" %} - -Note the following: -* Only logged-in customers can use the Wishlist functionality. -* If the same item is added to the cart from multiple wishlists, then in the cart, this item will have the quantity value updated based on the number of times this specific item was added. -* Each wishlist is an independent entity. - -{% endinfo_block %} - -## Naming a wishlist - -Users can easily keep track of their wishlists by naming each one individually. - -When the customer selects Add to Wishlist for the first time, and there are no wishlists in the system yet, one will be created automatically with name *My Wishlist*. - -The wishlist name can be later changed in the *Wishlist* section as well as new wishlists added. - -## Converting a wishlist to cart - -The direct-to-cart function enables your customers to simply add items from their wishlist to a shopping cart with a single click. - -Specifically, the customer can: - -* Add all the products from the wishlist to the cart by selecting the Add all available products to cart -* Add selected items from the wishlist to the cart by using the **Add to Cart** option for a specific item. - - - -## The Wishlist feature on the Storefront - -Buyers can do the following actions using the Wishlists feature: -
      -Create, rename, and edit a wishlist - -![create-rename-delete-wishlist](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Wishlist/Multiple+Wishlists/create-rename-delete-wishlist.gif) - -
      - -
      -Add a product from the product details page to a wishlist - -![add-product-from-product-details-page-to-wishlist](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Wishlist/Multiple+Wishlists/add-product-from-product-details-page-to-wishlist.gif) - -
      - -
      -View a wishlist's details, remove products from the wishlist, and add all products from the wishlist to cart - -![view-details-remove-products-and-add-all-products-from-wishlist-to-cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Wishlist/Multiple+Wishlists/view-details-remove-products-and-add-all-products-from-wishlist-to-cart.gif) - -
      - -
      -Add selected products from the wishlist to cart - -![add-selected-products-to-cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Wishlist/Multiple+Wishlists/add-selected-items-to-cart.gif) - -
      - -## Video tutorial - -For more details on wishlists, check the video: - -{% wistia g7hzsa9xw7 960 720 %} - -{% info_block warningBox "Developer guides" %} - -Are you a developer? See [Wishlist feature walkthrough](/docs/scos/dev/feature-walkthroughs/{{page.version}}/wishlist-feature-walkthrough.html) for developers. - -{% endinfo_block %} diff --git a/docs/scos/user/intro-to-spryker/docs-release-notes.md b/docs/scos/user/intro-to-spryker/docs-release-notes.md index 06bf2694e7c..ba5aac8d0b4 100644 --- a/docs/scos/user/intro-to-spryker/docs-release-notes.md +++ b/docs/scos/user/intro-to-spryker/docs-release-notes.md @@ -4,6 +4,53 @@ description: Spryker docs release notes template: concept-topic-template last_updated: Aug 2, 2023 --- + +## August 2023 + +In August 2023, we have added and updated the following pages: + +### New pages + +- [HowTo: Reduce Jenkins execution by up to 80% without P&S and Data importers refactoring](/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-costs-without-refactoring.html): Learn how to save Jenkins-related costs or speed up background jobs processing by implementing a single custom worker for all stores. +- [Release notes 202307.0](/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/release-notes-202307.0.html). +- [Security release notes 202307.0](/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/security-release-notes-202307.0.html). +- [Spryker security checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.html): Learn how to check for security fixes in the Spryker modules. +- [Open-source vulnerabilities checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/open-source-vulnerabilities.html): Learn how to check if your PHP application depends on PHP packages with known security vulnerabilities. +- [Dynamic multistore docs](/docs/pbc/all/dynamic-multistore/202307.0/dynamic-multistore.html): + - [Dynamic Multistore feature overview](/docs/pbc/all/dynamic-multistore/202307.0/base-shop/dynamic-multistore-feature-overview.html). + - [Dynamic Multistore feature integration guide](/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore.html). + - [Dynamic Multistore + Availability Notification feature integration guide](/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-availability-notification-feature.html). + - [Dynamic Multistore + Cart feature integration guide](/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-cart-feature.html). + - [Dynamic Multistore + CMS feature integration guide](/docs/pbc/all/dynamic-multistore/202307.0/base-shop/install-and-upgrade/install-features/install-dynamic-multistore-cms-feature.html). +- [Service Points + Customer Account Management feature integration guide](/docs/pbc/all/service-points/202400.0/unified-commerce/install-and-upgrade/install-the-customer-account-management-service-points-feature.html). +- [Npm checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.html): Learn how you can identify security vulnerabilities in the npm dependencies with the Npm checker. +- [HowTo: Set up XDebug profiling](/docs/scos/dev/tutorials-and-howtos/howtos/howto-setup-xdebug-profiling.html): Learn how to set up XDebug profiling in a local development environment. +- [Vertex integration guide](/docs/pbc/all/tax-management/202307.0/vertex/install-vertex.html#integrate-acp-connector-module-for-tax-calculation). +- [Select target branch for PRs](/docs/scu/dev/select-target-branch-for-prs.html): Learn how to select a target branch on Spryker CI. +- [Configure Spryker Code Upgrader](/docs/scu/dev/configure-spryker-code-upgrader.html): Learn how to configure the Spryker Code Upgrader. +- [Oryx: Design tokens](/docs/scos/dev/front-end-development/202307.0/oryx/styling/oryx-design-tokens.html): Learn about the design tokens that provide a centralized and consistent approach for styling components in Oryx applications. +- [Oryx: Icon system](/docs/scos/dev/front-end-development/202307.0/oryx/styling/oryx-icon-system.html): Learn about the icons that provide a consistent design system throughout components in Oryx applications. +- [Oryx: Localization](/docs/scos/dev/front-end-development/202307.0/oryx/oryx-localization.html): Learn how localization is handled in Oryx applications. +- [Oryx: Typography](/docs/scos/dev/front-end-development/202307.0/oryx/styling/oryx-typography.html): Learn about typography in Oryx. +- [File manager feature integration guide](/docs/pbc/all/content-management-system/202400.0/base-shop/install-and-upgrade/install-features/install-the-file-manager-feature.html). +- [Scheduled Prices feature integration guide](/docs/pbc/all/price-management/202400.0/base-shop/install-and-upgrade/install-features/install-the-scheduled-prices-feature.html). +- [Product Lists feature integration guide](/docs/pbc/all/product-information-management/202400.0/base-shop/install-and-upgrade/install-features/install-the-product-lists-feature.html). + + +### Updated pages + +- [Minimum allowed shop version](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.html): Learn how to resolve issues with project upgradability when your projects contains old package dependencies that are already not supported. +- [Product Offer Shipment feature integration guide](/docs/pbc/all/offer-management/202400.0/unified-commerce/install-and-upgrade/install-the-product-offer-shipment-feature.html). +- [Shipment + Service Points feature integration guide](/docs/pbc/all/carrier-management/202400.0/unified-commerce/install-and-upgrade/install-the-shipment-service-points-feature.html). +- [Product Rating and Reviews feature integration guide](/docs/pbc/all/ratings-reviews/202307.0/install-and-upgrade/install-the-product-rating-and-reviews-feature.html). +- [Shipment feature integration guide](/docs/pbc/all/carrier-management/202400.0/base-shop/install-and-upgrade/install-features/install-the-shipment-feature.html). +- [Best practises: Jenkins stability](/docs/cloud/dev/spryker-cloud-commerce-os/best-practices/best-practises-jenkins-stability.html): Learn how to improve the stability of the scheduler component.. +- [Decoupled Glue infrastructure: Integrate the authentication](/docs/scos/dev/migration-concepts/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-the-authentication.html): Learn how to create an authentication token for the Storefront and Backend API applications in your project. +- [Add variables in the Parameter Store](/docs/cloud/dev/spryker-cloud-commerce-os/add-variables-in-the-parameter-store.html):Learn how to define variables in the Parameter Store. + +For more details about these and other updates to the Spryker docs in August 2023, refer to the [docs release notes page on GitHub](https://github.com/spryker/spryker-docs/releases). + + ## July 2023 In July 2023, we have added and updated the following pages: @@ -28,7 +75,7 @@ In July 2023, we have added and updated the following pages: - [Security Release Notes 202306.0](/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.html): Added missing security HTTP headers. - [Merchant Users Overview](/docs/pbc/all/merchant-management/202212.0/marketplace/marketplace-merchant-feature-overview/merchant-users-overview.html): Added information about the assignment of groups for the merchant user. - [Handle data with Publish and Synchronization](/docs/scos/dev/back-end-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.html): Publish and Synchronization (P&S) lets you export data from Spryker backend (Zed) to external endpoints. -- [How send a request in Dynamic Data API](/docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-send-request-in-dynamic-data-api.html): Added error codes and error code descriptions. +- [How send a request in Data Exchange API](/docs/scos/dev/glue-api-guides/202304.0/dynamic-data-api/how-to-guides/how-to-send-request-in-data-exchange-api.html): Added error codes and error code descriptions. - [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/202307.0/install-and-upgrade/install-features/install-the-spryker-core-feature.html): Updated code sample. - [Install Docker prerequisites on Linux](/docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-linux.html): Learn about the steps you need to take before you can start working with Spryker in Docker on Linux. - [Payment Service Provider](/docs/pbc/all/payment-service-provider/202212.0/payment-service-provider.html): Different payment methods for your shop. @@ -42,7 +89,7 @@ In July 2023, we have added and updated the following pages: - [Handling security issues](/docs/scos/user/intro-to-spryker/support/handling-security-issues.html): Use this document to learn how to report a security issue and to understand how we handle these reports. - [Install the Measurement Units feature](/docs/pbc/all/product-information-management/202307.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.html): The guide describes how to integrate the [Measurement Units](/docs/pbc/all/product-information-management/202307.0/base-shop/feature-overviews/measurement-units-feature-overview.html) feature into your project. -For more details about these and other updates to the Spryker docs in July 2023, refer to the [docs release notes page on GitHub](https://github.com/spryker/spryker-docs/releases) +For more details about these and other updates to the Spryker docs in July 2023, refer to the [docs release notes page on GitHub](https://github.com/spryker/spryker-docs/releases). ## June 2023 @@ -115,7 +162,7 @@ In May 2023, we have added and updated the following pages: - [Oryx: Boilerplate](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-boilerplate.html): Create maintainable and upgradeable applications using the Oryx boilerplate. - [Oryx: Feature sets](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-feature-sets.html): Learn what the feature sets in Oryx are all about. - [Oryx: Packages](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-packages.html): Use Oryx packages from npm to ensure you can easily upgrade to newer versions. - - [Oryx: Routing](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-routing.html): Lear how to set up the Oryx routing. + - [Oryx: Routing](/docs/scos/dev/front-end-development/202212.0/oryx/building-pages/oryx-routing.html): Lear how to set up the Oryx routing. - [Oryx: Versioning](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-versioning.html): Learn about the methods used in Oryx to deliver an advanced application development platform while maintaining stability. - [Oryx: Supported browsers](/docs/scos/dev/front-end-development/202212.0/oryx/oryx-supported-browsers.html): Learn what browsers Oryx supports. - [Dependency injection](/docs/scos/dev/front-end-development/202212.0/oryx/dependency-injection/dependency-injection.html): Learn about the dependency injection that lets you customize logic but keep your project upgradable. diff --git a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/release-notes-2018.11.0.md b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/release-notes-2018.11.0.md deleted file mode 100644 index 49949739048..00000000000 --- a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/release-notes-2018.11.0.md +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Release Notes 2018.11.0 -description: This document contains a business level description of major new features and enhancements released in November of 2018. -last_updated: Jun 16, 2021 -template: concept-topic-template -originalLink: https://documentation.spryker.com/2021080/docs/release-notes-2018-11-0 -originalArticleId: 32076dc8-dd8a-438c-8029-cbf2eb7cf2e3 -redirect_from: - - /2021080/docs/release-notes-2018-11-0 - - /2021080/docs/en/release-notes-2018-11-0 - - /docs/release-notes-2018-11-0 - - /docs/en/release-notes-2018-11-0 - - /v5/docs/release-notes-2018-11-0 - - /v5/docs/en/release-notes-2018-11-0 - - /v4/docs/release-notes-2018-11-0 - - /v4/docs/en/release-notes-2018-11-0 - - /v3/docs/release-notes-2018-11-0 - - /v3/docs/en/release-notes-2018-11-0 - - /v2/docs/release-notes-2018-11-0 - - /v2/docs/en/release-notes-2018-11-0 - - /v1/docs/release-notes-2018-11-0 - - /v1/docs/en/release-notes-2018-11-0 - - /v6/docs/release-notes-2018-11-0 - - /v6/docs/en/release-notes-2018-11-0 -related: - - title: Security Release Notes 2018.11.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.html - - title: Multiple and Shared Shopping Lists overview - link: docs/pbc/all/shopping-list-and-wishlist/page.version/base-shop/shopping-lists-feature-overview/shopping-lists-feature-overview.html - - title: Shopping Cart - link: docs/scos/user/features/page.version/cart-feature-overview/cart-feature-overview.html - - title: Reorder feature overview - link: docs/scos/user/features/page.version/reorder-feature-overview.html ---- - - The Spryker Commerce OS is an end-to-end solution for e-commerce. This document contains a business level description of major new features and enhancements released in November of 2018. - -{% info_block infoBox %} - -For information about installing the Spryker Commerce OS, see [Getting Started Guide](/docs/scos/dev/developer-getting-started-guide.html). - -{% endinfo_block %} - -## Demo Shops - -### B2B Demo Shop - -Spryker’s new B2B Demo Shop was made to provide you with the right combination of modules and functionalities to represent the most common B2B commerce use case. You will get an integrated and stable product that is consistent in both technological and feature completeness point of view. This Demo Shop is our recommended starting point for all standard B2B commerce projects. It comes with the new modern look-and-feel and atomic design approach. -![B2B Demo Shop](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image1.png) - -**Documentation**: [B2B Demo Shop](/docs/scos/user/intro-to-spryker/intro-to-spryker.html#spryker-b2bb2c-demo-shops). - -### Non-authenticated B2B Shop User Permissions Manager - -Spryker has improved permissions control mechanism for non-authenticated B2B shop users. A shop administrator can hide/show specific shop features such as prices, shopping lists, an ability to add products to the cart or going to the checkout. -![Non-authenticated B2B shop users](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image2.png) - -**Documentation**: [Hide Content from Logged-out Users](/docs/scos/user/features/201811.0/customer-access-feature-overview.html) - -### B2C Demo Shop - -For everyone interested in B2C commerce use cases, we provide Spryker’s B2C Demo Shop. It also consists of the most common combination of modules and functionalities to cover your needs in the B2C commerce. -![B2C Demo shop](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image4.png) - -**Documentation**: [B2C Demo Shop](/docs/scos/user/intro-to-spryker/b2c-suite.html) - -### B2B Company Account - -Let your customers model their company hierarchies by defining business units including multiple addresses to make the ordering process more convenient. They can create and manage users and assign roles and permissions to the Business Units to give full control where it’s needed. The Business on Behalf feature provides users with the ability to log in to different business units with the same credentials fully inheriting business unit permissions. -![B2B company account](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image8.png) - -**Documentation**: [Company Account](/docs/scos/user/features/201811.0/company-account-feature-overview/company-account-feature-overview.html) - -### B2B Shopping List - -Shopping list is the feature that allows customers to create and share multiple lists of products between company business units or single users, allowing them to make regular or wholesale purchases in the most convenient way. All or selected products can be added to a Shopping Cart. Shopping lists can be shared between users with a different set of permissions. A user can also print a shopping list along with the barcodes. -The shopping list widget provides quick access to the available shopping lists from the top menu. -![B2B shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image16.png) - -**Documentation**: [Shopping List](/docs/scos/user/features/201811.0/shopping-lists-feature-overview/shopping-lists-feature-overview.html) - -### B2B Cart - -Shopping cart experience has been improved and enhanced to meet B2B customers needs. Cart information is persistent throughout multiple sessions. Users can create multiple carts in their accounts and enable/disable sharing of the cart with particular users or whole business units. It is also possible to clone an existing cart with all products inside. Notes can also be added to the cart or cart item level. A user can access the list of available carts and switch between them from a shopping cart widget in the top menu. -![B2B cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image6.png) - -**Documentation**: [Cart](/docs/scos/user/features/201811.0/cart-feature-overview/cart-feature-overview.html) - -### Quick Order - -The Quick Order functionality aims to help customers who want to purchase multiple products in bulk. A customer can prepare a list of product SKUs and quantity separated by spaces, semicolons or commas and paste it in the Quick Order page or manually add SKU and quantity per item one by one. -![Quick order](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image13.png) - -**Documentation**: [Quick Order](/docs/scos/user/features/201811.0/quick-add-to-cart-feature-overview.html) - -### Reorder - -Customers can now resubmit any of their previous orders; the whole list of products can be reordered in one click using recent orders from Customer Account / Orders History. -![Reorder](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image9.png) - -A customer can also reorder one or several products from the previous order on the Order Details page. -![Reorder on the Order details page](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image17.png) - -**Documentation**: [Reorder](/docs/scos/user/features/201811.0/reorder-feature-overview.html) - -## Product Management Enhancements - -### Discontinued Products - -Indicate products that are no longer available in your store with a "discontinued" label. At the same time, you can offer alternative products to your customers to keep up revenues and customer loyalty. - -**Documentation**: [Discontinued Products](/docs/scos/user/features/201811.0/product-feature-overview/discontinued-products-overview.html) - -### Alternative Products - -A shop owner can define a list of alternative products that will be suggested to customers if the selected item is not available. -![Alternative products](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/Image+3.png) - -**Documentation**: [Alternative Products](/docs/scos/user/features/201811.0/alternative-products-feature-overview.html) - -### Measurement Units - -The measurement units feature allows shop owners to specify multiple measurement units per product: meter, centimeter, gallon, pint, and piece. This feature provides additional flexibility to how products can be measured and sold. No matter what you sell – fruits, fabric, clothing or any other items, this feature will help you to apply custom measurement settings to any product. -![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image15.png) - -**Documentation**: [Measurement Units](/docs/scos/user/features/201811.0/measurement-units-feature-overview.html) - -### Packaging Units - -Offer cost-efficient and flexible packaging units that suit the type of the product and your customer needs, such as bags, palettes, or packets in addition to single item packaging. - -Packaging units can either contain a fixed or variable quantity of items. -![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image18.png) - -**Documentation**: [Packaging Units](/docs/scos/user/features/201811.0/packaging-units-feature-overview.html) - -### Barcode Generator - -Enrich your products with an individual barcode that is generated based on the SKU number. The barcode can be printed for scanning directly from a product or attached to a shopping list for easy reordering. - -**Documentation**: [Barcode Generator](/docs/scos/user/features/201811.0/product-barcode-feature-overview.html) - -### Products Restrictions - -With the Product Restrictions feature, you as a shop owner can easily define who of your customers gets to see what items or categories. Any item in your product catalog can be either whitelisted or blacklisted per customer. The lists can be uploaded or imported to make it easier to set up. - -**Documentation**: [Product Restrictions](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-product-restrictions-feature-overview/merchant-product-restrictions-feature-overview.html) - -### Merchant Concept - -We have introduced the concept of Merchant to allow our customers to implement the Marketplace functionality. In a non-marketplace setup, there is always one Merchant. Product Restrictions and Customer Specific Prices are implemented by linking a B2B customer to the Merchant. - -**Documentation**: [Merchants and Merchant Relations](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-feature-overview.html) - -## General Cart Enhancements - -### Minimum Order Value - -Easily set a minimum order value for any of your products where either the customer cannot proceed to checkout unless the value is reached, or the difference is added as a special fee to the total sum. -![Minimum order value](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image11.png) - -**Documentation**: [Minimum Order Value](/docs/scos/user/features/{{site.version}}/checkout-feature-overview/order-thresholds-overview.html) - -## Price Management Enhancements - -### Net/Gross Price - -You can easily manage gross and net prices per product, country, and currency. Please note that you cannot mix Net and Gross prices in the same shopping cart. -![Net and gross price](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image14.png) - -**Documentation**: [Net & Gross Prices](/docs/pbc/all/price-management/{{site.version}}/base-shop/extend-and-customize/configuration-of-price-modes-and-types.html) - -### Volume Prices - -With the Volume Prices feature, you can define individual prices for a product for different order quantities. Set specific volume thresholds for your products to encourage your customers to purchase larger quantities of a product in order to receive the special volume discount. -![Volume prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image12.png) - -**Documentation**: [Volume Prices](/docs/scos/user/features/201811.0/prices-feature-overview/volume-prices-overview.html) - -### Customer-specific Prices - -Offer your customers individual agreements and customize the prices per business unit accordingly. To avoid unnecessary repetition of values, the data is compressed in the database. -![Customer-specific price](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image7.png) - -The shop owner can set up a price per merchant/business unit combination. -![Customer-specific price per merchant unit combination](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image10.png) - -**Documentation**: [Prices per Merchant Relations](/docs/scos/user/features/201811.0/merchant-custom-prices-feature-overview.html) - -### Agent Assist - -With the Agent Assist feature, you may enable your employees to help your customers with true efficiency, all while operating the same storefront interface. No more confusing backend UI. Agent Assist allows your employees to log-in to the storefront using a particular URL, search for a customer to assist and pick them up to do business on their behalf. A feature flag in the session allows for versatile customizations of the storefront functionality during an agent assist session. This feature may also be used as a point of sale solution in physical retail stores. -![Agent assist](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Releases/Release+notes/Release+Notes+2018.11.0/image3.png) - -**Documentation**: [Agent Assist](/docs/pbc/all/user-management/{{site.version}}/base-shop/agent-assist-feature-overview.html) - -### Add Concrete Product to Existing Abstract Product - -With this improvement, you will be able to attach new product concretes to existing abstract products directly in the backend interface. - -**Documentation**: [Products](/docs/scos/user/features/201811.0/product-feature-overview/product-feature-overview.html) diff --git a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.md b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.md deleted file mode 100644 index 880ceeac4eb..00000000000 --- a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Security Release Notes 2018.11.0 -description: The following information pertains to security-related issues that were discovered and resolved during 2018.11.0 release. -last_updated: Jun 16, 2021 -template: concept-topic-template -originalLink: https://documentation.spryker.com/2021080/docs/security-release-notes-2018-11-0 -originalArticleId: bf1c212d-678b-4494-b427-c8c5b7303d65 -redirect_from: - - /2021080/docs/security-release-notes-2018-11-0 - - /2021080/docs/en/security-release-notes-2018-11-0 - - /docs/security-release-notes-2018-11-0 - - /docs/en/security-release-notes-2018-11-0 - - /v5/docs/security-release-notes-2018-11-0 - - /v5/docs/en/security-release-notes-2018-11-0 - - /v4/docs/security-release-notes-2018-11-0 - - /v4/docs/en/security-release-notes-2018-11-0 - - /v3/docs/security-release-notes-2018-11-0 - - /v3/docs/en/security-release-notes-2018-11-0 - - /v2/docs/security-release-notes-2018-11-0 - - /v2/docs/en/security-release-notes-2018-11-0 - - /v1/docs/security-release-notes-2018-11-0 - - /v1/docs/en/security-release-notes-2018-11-0 - - /v6/docs/security-release-notes-2018-11-0 - - /v6/docs/en/security-release-notes-2018-11-0 ---- - -The following information pertains to security related issues that were discovered and resolved. - -Issues are listed by description and affected modules. - -{% info_block infoBox %} - -If you need any additional support with this content please contact [support@spryker.com](mailto:support@spryker.com). - -{% endinfo_block %} - -## Use of unserialize() - -Issue with the debugging tool: Transfer Repeater was fixed to prevent running the tool in production where it might cause a security vulnerability. - -**Affected module:** -
      ZedRequest - Fixed in version: 3.5.0 - -## Possible SQL Injection - -Product Options got a validation plugin, which proves the Product Option existence. - -**Affected module:** -
      ProductOptions - Fixed in version: 6.5.0 - -## Vulnerable JS dependencies - -Several JS dependencies vulnerabilities have been found and fixed: -* **Ratepay** contains a vulnerable dependency of JQuery7 (>=1.4.0 <=1.11.3 || >=1.12.4 <=2.2.4). -* **Gui/assets** contains a vulnerable dependency of JQuery-UI8 (<=1.11.4). -* **ProductRelation** contains a vulnerable dependency of Moment9 (<2.19.3). - -**Affected modules:** - -* Ratepay - Fixed in version: 0.6.11 -* Gui - Fixed in version: 3.15.0 -* ProductRelation - Fixed Version: 2.1.6 - -## Possible Vulnerability on File Creation -A create file vulnerability occurs when user input is embedded unsanitized into a file path used for file operations. As a solution, we used a safe base path by using method `basename()` for local files. - -**Affected Module:** -
      ZedRequest - Fixed in version: 3.5.0 - -## Obsolete dependencies in Zed Gui package.json -In order to fix security vulnerabilities in 3-rd party libraries, the JQuery-UI version has been updated to 1.12.1. - -**Affected Module:** -
      Gui - Fixed in version: 3.15.0 - -## Possible Open Redirection Vulnerability -Open Redirection vulnerabilities occur when applications use data controlled by a user into the target address of a redirect in an unsafe way. An attacker may construct an address within the application that causes a redirect to an arbitrary external location. This behavior can be used for example, for phishing attacks against application users. Allowed domains now can be configured and the application will disallow any other redirects to unknown domains. - -**Affected Module:** -
      Kernel – Fixed in version 3.23.1 - -## XSS Vulnerabilities in Development mode -Spryker Commerce OS was audited and extensively tested for XSS vulnerabilities. Due to strict checks of input almost no XSS vulnerabilities have been uncovered. However, it was possible to inject XSS code when the development version was used. The reason was that error messages might contain a malicious payload. This is not a problem in production environments, because the detailed errors are not shown. - -**Affected Module:** -
      Currency – Fixed in version 3.5.0 diff --git a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.md b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.md index a6b0b2cbca0..688b96b8a57 100644 --- a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.md +++ b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.md @@ -174,23 +174,6 @@ console transfer:generate 8. Add configuration to `config/Shared/config_default.php`: ```php -use Spryker\Shared\SecurityBlockerBackoffice\SecurityBlockerBackofficeConstants; -use Spryker\Shared\SecurityBlockerStorefrontAgent\SecurityBlockerStorefrontAgentConstants; -use Spryker\Shared\SecurityBlockerStorefrontCustomer\SecurityBlockerStorefrontCustomerConstants; - -// >>> Redis Security Blocker -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_PERSISTENT_CONNECTION] = true; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_SCHEME] = 'tcp://'; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_HOST] = '127.0.0.1'; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_PORT] = 6379; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_PASSWORD] = false; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_REDIS_DATABASE] = 7; - -// >>> Security Blocker Default -$config[SecurityBlockerConstants::SECURITY_BLOCKER_BLOCKING_TTL] = 600; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_BLOCK_FOR] = 300; -$config[SecurityBlockerConstants::SECURITY_BLOCKER_BLOCKING_NUMBER_OF_ATTEMPTS] = 10; - // >>> Security Blocker Storefront Agent $config[SecurityBlockerStorefrontAgentConstants::AGENT_BLOCK_FOR_SECONDS] = 360; $config[SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_TTL] = 900; @@ -210,8 +193,6 @@ $config[SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_A 9. Add translations to `data/import/common/common/glossary.csv`: ```csv -security_blocker_page.error.account_blocked,"Too many log in attempts from your address. Please wait %minutes% minutes before trying again.",en_US -security_blocker_page.error.account_blocked,"Warten Sie bitte %minutes% Minuten, bevor Sie es erneut versuchen.",de_DE security_blocker_backoffice_gui.error.account_blocked,"Too many log in attempts from your address. Please wait %minutes% minutes before trying again.",en_US security_blocker_backoffice_gui.error.account_blocked,"Warten Sie bitte %minutes% Minuten, bevor Sie es erneut versuchen.",de_DE ``` @@ -260,10 +241,15 @@ namespace Pyz\Zed\ErrorHandler; use Spryker\Zed\ErrorHandler\ErrorHandlerConfig as SprykerErrorHandlerConfigAlias; use Symfony\Component\HttpFoundation\Response; +/** + * @method \Spryker\Shared\ErrorHandler\ErrorHandlerConfig getSharedConfig() + */ class ErrorHandlerConfig extends SprykerErrorHandlerConfigAlias { /** - * @return list + * @api + * + * @return array */ public function getValidSubRequestExceptionStatusCodes(): array { @@ -280,32 +266,19 @@ class ErrorHandlerConfig extends SprykerErrorHandlerConfigAlias 13. Register plugins in `src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php`: ```php - - */ +... protected function getEventDispatcherPlugins(): array { return [ - new SecurityBlockerCustomerEventDispatcherPlugin(), - new SecurityBlockerAgentEventDispatcherPlugin(), + ... + new SecurityBlockerBackofficeUserEventDispatcherPlugin(), ]; } -} - +... ``` -14. Register plugins in `src/Pyz/Zed/EventDispatcher/EventDispatcherDependencyProvider.php`: - If Merchant Portal is also installed, follow these steps: 1. Install the `spryker/security-blocker-merchant-portal` module version 1.0.0: @@ -327,57 +300,32 @@ composer show spryker/security-blocker-merchant-portal-gui # Verify the version ```bash console transfer:generate ``` -4. Add configuration to `config/Shared/config_default.php`: - -```php -// >>> Security Blocker MerchantPortal user -$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCK_FOR_SECONDS] = 360; -$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCKING_TTL] = 900; -$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCKING_NUMBER_OF_ATTEMPTS] = 9; -``` - -5. Add translations to `data/import/common/common/glossary.csv`: - -```csv -security_blocker_merchant_portal_gui.error.account_blocked,"Too many log in attempts from your address. Please wait %minutes% minutes before trying again.",en_US -security_blocker_merchant_portal_gui.error.account_blocked,"Warten Sie bitte %minutes% Minuten, bevor Sie es erneut versuchen.",de_DE -``` - -6. Import glossary: - -```bash -console data:import:glossary -``` - -7. Register plugins in `src/Pyz/Zed/EventDispatcher/EventDispatcherDependencyProvider.php`: +4. Register plugins in `src/Pyz/Zed/EventDispatcher/EventDispatcherDependencyProvider.php`: ```php - - */ +... protected function getEventDispatcherPlugins(): array { return [ + ... new SecurityBlockerMerchantPortalUserEventDispatcherPlugin(), ]; } -} +... ``` -8. Register plugins in `SecurityBlockerDependencyProvider`: +5. Register plugins in `SecurityBlockerDependencyProvider`: ```php >> Security Blocker MerchantPortal user +$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCK_FOR_SECONDS] = 360; +$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCKING_TTL] = 900; +$config[SecurityBlockerMerchantPortalConstants::MERCHANT_PORTAL_USER_BLOCKING_NUMBER_OF_ATTEMPTS] = 9; +``` + +7. Add translations to `data/import/common/common/glossary.csv` : + +```csv +security_blocker_merchant_portal_gui.error.account_blocked,"Too many log in attempts from your address. Please wait %minutes% minutes before trying again.",en_US +security_blocker_merchant_portal_gui.error.account_blocked,"Warten Sie bitte %minutes% Minuten, bevor Sie es erneut versuchen.",de_DE +``` + +8. Import glossary: + +```bash +console data:import:glossary +``` + ## Weak input validation for the customer address field The parameters related to the address field had insufficient server-side input validation. By supplying invalid or potentially malicious parameter values, an attacker might be able to cause the server to respond in an unexpected way. diff --git a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/release-notes-202307.0.md b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/release-notes-202307.0.md index ce666da8753..6acf2e17777 100644 --- a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/release-notes-202307.0.md +++ b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202307.0/release-notes-202307.0.md @@ -30,7 +30,7 @@ Trace your request execution flow to find bottlenecks and optimize your code. Th Make sure your code is compliant and simple to upgrade with Spryker Code Upgrader. This tool allows your team to evaluate your project code and highlight potential issues. Fixing these issues simplifies your upgrading experience. * [Detecting dead code](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.html): Reducing dead code is important for maintenance and upgrade because otherwise, your teams invest time in maintaining the code that is not used. -* [Security checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.html#resolving-the-error): We let you know about known vulnerabilities in third-party packages so that your team keeps them up-to-date. +* [Security checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/security.html): We let you know about known vulnerabilities in third-party packages so that your team keeps them up-to-date. * [Minimal version check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.html): Spryker Code Upgrader is available for customers from SCOS version 2022.04. * [PHP versions check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/php-version.html): We verify that you use the same version of PHP in composer.json, deploy*.yml, and your runtime to maintain consistency and prevent possible incompatibilities when installing dependencies. For instance, if you are using PHP 8.1 during development or upgrades, but your production system is running on PHP 7.4. Additionally, we check for the minimal PHP version, which is PHP 7.4. Keep in mind that the minimal version will be upgraded to 8.0 in the future, as 7.4 has reached its end of life. @@ -293,7 +293,7 @@ Pipeline Success Dashboard example: ### [Core Commerce] Upgraded Angular to v15 and Node.js to v18 ![improvement](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/intro-to-spryker/releases/release-notes/improvement.png) -To maintain the stability and longevity of our platform, we have migrated to Angular v15 and Node.js v18, which are actively supported by their respective communities. This ensures continued support and leveraging of these versions' latest features and improvements. +To maintain the stability and longevity of our platform, we have migrated to Angular v15 and Node.js v18, which are actively supported by their respective communities. This ensures continued support and leveraging of these versions' latest features and improvements. No infrastructure changes are required on your end before performing the upgrade. #### Documentation @@ -325,7 +325,7 @@ Spryker is launching an Early Release Access program for customers who want to b {% info_block warningBox %} -Dynamic Multistore is part of an *Early Access Release*. This *Early Access* feature introduces the ability to handle the store entity in the Back Office. Business users can try creating stores without editing the `Stores.php` file and redeploying the system. +Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. {% endinfo_block %} diff --git a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.md b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.md index 48411d345d6..97409e4360e 100644 --- a/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.md +++ b/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.md @@ -6,43 +6,9 @@ template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/release-notes originalArticleId: 2da5568d-0a6b-4d0a-945f-8de92cb69ee1 redirect_from: - - /2021080/docs/release-notes - - /2021080/docs/en/release-notes - - /docs/release-notes - - /docs/en/release-notes - - /v5/docs/release-notes - - /v5/docs/en/release-notes - - /v4/docs/release-notes - - /v4/docs/en/release-notes - - /v3/docs/release-notes - - /v3/docs/en/release-notes - - /v2/docs/release-notes - - /v2/docs/en/release-notes - - /v1/docs/release-notes - - /v1/docs/en/release-notes - - /v6/docs/release-notes - - /v6/docs/en/release-notes related: - title: Release notes 202204.0 link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202204.0/release-notes-202204.0.html - - title: Release notes 202108.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202108.0/release-notes-202108.0.html - - title: "Performance release notes: 202102.0 SEC" - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202102.0/performance-release-notes-202102.0.html - - title: Release notes 202009.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202009.0/release-notes-202009.0.html - - title: Release Notes - Code Releases May, 2020 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-code-releases-may-2020/release-notes-code-releases-may-2020.html - - title: Release Notes 202001.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202001.0/release-notes-202001.0.html - - title: Release Notes 201907.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-201907.0/release-notes-201907.0.html - - title: Release Notes 201903.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-201903.0/release-notes-201903.0.html - - title: Release Notes 2018.12.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.12.0.html - - title: Release Notes 2018.11.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/release-notes-2018.11.0.html --- Here you can find the latest Product release notes and the archived content. @@ -54,4 +20,4 @@ For more information about our release process, see: [Spryker Release Process](/ To receive release notes email, subscribe here: -
      \ No newline at end of file +
      diff --git a/docs/scos/user/intro-to-spryker/whats-new/security-updates.md b/docs/scos/user/intro-to-spryker/whats-new/security-updates.md index 64f84abc44b..80a87eb018f 100644 --- a/docs/scos/user/intro-to-spryker/whats-new/security-updates.md +++ b/docs/scos/user/intro-to-spryker/whats-new/security-updates.md @@ -6,22 +6,6 @@ template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/security-updates originalArticleId: 52f64151-dd88-406c-8408-9c08d9c0bb2d redirect_from: - - /2021080/docs/security-updates - - /2021080/docs/en/security-updates - - /docs/security-updates - - /docs/en/security-updates - - /v5/docs/security-updates - - /v5/docs/en/security-updates - - /v4/docs/security-updates - - /v4/docs/en/security-updates - - /v3/docs/security-updates - - /v3/docs/en/security-updates - - /v2/docs/security-updates - - /v2/docs/en/security-updates - - /v1/docs/security-updates - - /v1/docs/en/security-updates - - /v6/docs/security-updates - - /v6/docs/en/security-updates related: - title: Security release notes 202306.0 link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202306.0/security-release-notes-202306.0.html @@ -31,23 +15,8 @@ related: link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202212.0/security-release-notes-202212.0.html - title: Security release notes 202108.0 link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202108.0/security-release-notes-202108.0.html - - title: "Security release notes: 202102.0 SEC" - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202102.0/security-release-notes-202102.0-sec.html - - title: Security release notes - 202009.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202009.0/security-release-notes-202009.0.html - - title: Security Release Notes - Code Releases May, 2020 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-code-releases-may-2020/security-release-notes-code-releases-may-2020.html - - title: Security Release Notes 202001.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-202001.0/security-release-notes-202001.0.html - - title: Security Release Notes 201907.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-201907.0/security-release-notes-201907.0.html - - title: Security Release Notes 201903.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-201903.0/security-release-notes-201903.0.html - - title: Security Release Notes 2018.11.0 - link: docs/scos/user/intro-to-spryker/releases/release-notes/release-notes-2018.11.0/security-release-notes-2018.11.0.html --- To receive a security updates email, please request the subscription at [support@spryker.com](mailto:support@spryker.com). - -Check out our Security Release notes in the [Release Notes](/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.html) article for each respective release. +Check out our Security Release notes in the [Release Notes](/docs/scos/user/intro-to-spryker/releases/release-notes/release-notes.html) article for each respective release. diff --git a/docs/scos/user/overview-of-features/201811.0/overview-of-features.md b/docs/scos/user/overview-of-features/201811.0/overview-of-features.md deleted file mode 100644 index a0e8fc2e04b..00000000000 --- a/docs/scos/user/overview-of-features/201811.0/overview-of-features.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Overview of features -template: concept-topic-template -redirect_from: - - /capabilities/features.htm ---- - -As a starting point to working with the Spryker Commerce OS, we created a list of all the capabilities we have to offer that arrive out of the box. - -{% info_block infoBox "Info" %} - -What to know more? Learn about the [B2B](/docs/scos/user/intro-to-spryker/b2b-suite.html) and [B2C](/docs/scos/user/intro-to-spryker/b2c-suite.html) Demo Shops we provide. - -{% endinfo_block %} - -Capabilities are high-level descriptions of what a certain facet of Spryker can do. Each capability is mapped to a list of features. A feature is a specific aspect of a Capability. For example, the cart capability includes the features *Cart Functionality* and *Calculations*, *Cart Rules*, *Discounts*, and *Multiple Carts Per User*. All the features together help to define the exact scope of a capability. This helps us guide you to the relevant functionality you are looking for. Each feature has its own distinct functionality, that is, the actionable information about a feature and describes the different activities you can perform with a feature like *add*, *delete*, *modify*, and *extend*. The functionality for each feature is listed according to user type to help distinguish between content intended for developers (PHP developers and frontend developers), End users who work with the Back Office (category managers, sales, marketing, and finance, or any other people involved in creating and customizing your main interaction point with your customers), and e-commerce users (shop administrators who manage the account in the shop application). - -The complete list of the Spryker capabilities and features is available here: - - \ No newline at end of file diff --git a/docs/scos/user/shop-user-guides/201811.0/about-shop-user-guide.md b/docs/scos/user/shop-user-guides/201811.0/about-shop-user-guide.md deleted file mode 100644 index 748cee603ea..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/about-shop-user-guide.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: About Shop User Guide -description: This section contains instructions on working with Demo Shop interface. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/about-shop-user-guide -originalArticleId: 816bb588-5273-4a9e-b81e-b2fdcdc4d3b0 -redirect_from: - - /v1/docs/about-shop-user-guide - - /v1/docs/en/about-shop-user-guide ---- - - -In this section you will find the instructions and guidelines on working with Demo Shop interface. - -Our main goal is to make user's interaction as simple, intuitive and efficient as possible. It has been proven that easy and understandable interface dramatically impacts the performance and leads to bigger sales. - -Be sure to also check out [Spryker Academy](/docs/scos/user/intro-to-spryker/videos-and-webinars/spryker-academy.html) for additional training meterials. - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/minimum-order-value-feature-overview.md b/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/minimum-order-value-feature-overview.md deleted file mode 100644 index 5466b6ed363..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/minimum-order-value-feature-overview.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Minimum Order Value Feature Overview -last_updated: Jun 10, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/minimum-order-value-feature-overview -originalArticleId: 9c47e6f5-bcc1-435a-9ce4-ae399b697a3c -redirect_from: - - /v1/docs/minimum-order-value-feature-overview - - /v1/docs/en/minimum-order-value-feature-overview ---- - - -To increase order values, sometimes merchants might want to define a minimum order value for orders placed by their buyers. The **minimum order value** is a monetary value stipulated by a shop owner. If the minimum order value is not reached, the order placement can either be blocked or made possible only under certain conditions, for example, after paying a fee. This minimum value itself is also referred to as **threshold**. The threshold can either be hard or soft. The **hard threshold** implies that if buyer's cart value is below the minimum order value, the buyer will not be allowed to proceed to order placement. - -For example, if shop owner set the hard threshold value as 400 Euro and customer added products for just 195 Euro to cart, he/she will not be able to buy the products. At the Summary checkout step, customer will see a message saying that the minimum order values requirements are not met. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Minimum Order Value/hard-threshold-not-met.png) - -If the customer adds more products and the cart value becomes equal to or greater than 400 Euro, the order can be placed. - -The **soft threshold** can be represented by three types: message, additional fee with fixed amount of money and additional fee with flexible amount of money (by percentage). The **soft threshold with message** means that, if the minimum order value is not reached, the customer sees a message saying that minimum order requirements are not fulfilled, however the customer can still purchase the product(s). The **soft threshold with fixed fee** means that, if the minimum order value is not reached, a certain amount of money (defined by a shop-owner), is added to order sum. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Minimum Order Value/soft-threshold-surcharge-message.png) - -In this case, the buyer can either buy with the fee, or increase the cart value to meet the minimum order value threshold and then proceed to checkout without having to pay the fee. - -The **soft threshold with flexible fee** means that, if the minimum order value is not reached, a certain percentage value (defined by a shop-owner) of the order value is added to order sum. Like with the fixed fee, the buyer can also either buy with the fee, or increase the cart value to meet the minimum order value threshold and then proceed to checkout without having to pay the fee. - -The schema below illustrates the order placement workflow with minimum order value thresholds: - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Minimum Order Value/min-order-value.jpg) - -It should be kept in mind, that fees for soft thresholds are based on sub-total, and not grand-total values of orders. Fixed and flexible fees are added in a separate line as expenses for orders. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Minimum Order Value/soft-threshold-surcharge-checkout.png) - -The minimum order value is set per store. Therefore, if you have a multi-store and multi-currency project - then minimum order value must be defined per each store and each currency. - -The thresholds for the minimum order values are set by individual merchants globally in the dedicated area of the Administration Interface. This means, that threshold values set by them will be applied to all their customers. - -However if a merchant has several merchant relations (which are relations between merchant and business units, see more [here](../../../../Spryker Capabilities/Content/Capabilities/Company Account/Merchants and Merchant Relations/merchants-and-merchant-relations-overview.htm)), the minimum order values thresholds can be set for each relation individually. Here it should be kept in mind, that regardless of any merchant thresholds, the global threshold is always applied. This means that in case there is a merchant threshold, both global and specific merchant one will be applied to the customer's cart. For example, suppose there is a value set for global hard or soft threshold, and there is also a threshold for a specific merchant relation. In this case, as the merchant relation threshold so also the global threshold will be applied to orders of users with this relation. If in this case global threshold is say 400, and merchant threshold is 100, the global threshold with value 400 must be met. If the merchant threshold is greater than the global one, say 700, the global one will be met "automatically", once the merchant one is met. - -The diagram below illustrates relation of entities in the context of the Minimum Order Value feature: - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Minimum Order Value/context-of-the-minimum-order-value.PNG) - -## Minimum Order Values Data Import - -Besides setting global and merchant relation thresholds for minimum order values manually in the Administration Interface, they can also be imported in bulk from a .csv file. - -### Importing Minimum Order Value Data - -You can import minimum order value data from a .csv file having the following fields: - -* **store**: Indicate the store you want to import the data for -* **currency**: Indicate the currency for the minimum order value threshold data -* **strategy**: Specify the threshold strategy and eventually its type (for soft threshold) as follows: hard-threshold, soft-threshold, soft-threshold-flexible-fee or soft-threshold-fixed-fee -* **fee** (only for hard-threshold or soft-threshold with fees) -* **message_en**: Message in English that will be displayed if the threshold requirements are not met -* **message_de**: Message in German that will be displayed if the threshold requirements are not met - -To import minimum order value information from `MinimumOrderValueDataImport/data/import/minimum_order_value.csv `file, run the following command: - -Or, if you want to import threshold data from your file, indicate a path to it: - -```shell -console data:import minimum-order-value -``` - -Or, if you want to import threshold data from your file, indicate a path to it: - -```shell -console data:import minimum-order-value [-f [path_to_csv_file] -``` - -### Importing Minimum Order Value Data for Merchant Relations - -You can import minimum order value data for individual merchant relations from a .csv file having the following fields: - -* **merchant relation**: Indicate the key of and existing merchant relation -* **store**: Indicate the store you want to import the data for -* **currency**: Indicate the currency for the minimum order value threshold data -* **strategy**: Specify the threshold strategy and eventually its type (for soft threshold) as follows: hard-threshold, soft-threshold, soft-threshold-flexible-fee or soft-threshold-fixed-fee -* **fee** (only for hard-threshold or soft-threshold with fees) -* **message_en**: Message in English that will be displayed if the threshold requirements are not met -* **message_de**: Message in German that will be displayed if the threshold requirements are not met - -To import minimum order value information from `MinimumOrderValueDataImport/data/import/minimum_order_value.csv` file, run the following command: - -```shell -console data:import merchant-relationship-minimum-order-value -``` - -Or, if you want to import threshold data for merchant relations from your file, indicate a path to it: - -```shell -console data:import merchant-relationship-minimum-order-value [-f [path_to_csv_file] -``` - -*Last review date: September 24th, 2018* - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/multiple-carts-per-user-feature-overview.md b/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/multiple-carts-per-user-feature-overview.md deleted file mode 100644 index 2a7b79d17f0..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/multiple-carts-per-user-feature-overview.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Multiple Carts per User Feature Overview -last_updated: Jun 11, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/multiple-carts-per-user-feature-overview -originalArticleId: af46ae6d-acd1-40b9-a47e-6cf17a8def48 -redirect_from: - - /v1/docs/multiple-carts-per-user-feature-overview - - /v1/docs/en/multiple-carts-per-user-feature-overview ---- - -Shopping Cart is a part of the online shop where the record of the items a buyer has 'picked up' from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. - -## Creating and Managing Multiple Shopping Carts - -There are two ways to create a shopping cart: through a shopping cart widget in the header of shop, or from *Shopping Cart* page in *My Account* menu. New items are added to the shopping cart by clicking *Add to Cart* on the product details page. - -Customers can create not just one, but multiple shopping carts to be used, for example, for different needs. These could be, for instance, a shopping cart for daily purchases or a shopping cart for goods that you purchase once in a month. - -After a shopping cart has been created, it appears in the shopping carts table on *Shopping Cart* page in *My Account*. - -The table with shopping carts shows details for each of the carts, including: - -* Name of the shopping cart -* Access level (Owner, Read-only or Full access) -* Number of products added to cart -* Price mode (Net or Gross) -* Cart Total -* Possible actions to manage shopping carts: edit name, duplicate,[share](../../../../Spryker Capabilities/Content/Capabilities/Cart/Shared Cart/shared-cart-overview.htm), delete, switch cart to shopping list - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Multiple Carts/multiple-carts-list.png) - -**Edit Name** allows a customer to edit the name of the shopping cart. - -**Duplicate** button creates a copy of the chosen shopping cart including the items added to the cart. The duplicate copy of the cart is named according to the template: * Copied At * - -A cart can be converted into shopping list on *Shopping cart* page by clicking on **To shopping list** button. - -To delete a shopping cart, click on **Delete** button on *Shopping cart* page. Deleting a shopping cart also deletes the items added to it. - -To learn more about sharing the shopping cart, check out [Shared Cart](../../../../Spryker Capabilities/Content/Capabilities/Cart/Shared Cart/shared-cart-overview.htm) documentation. - -Active shopping cart is highlighted in **bold**. - -Only one shopping cart can be set as active in the customer account. - -There are 2 ways to set a shopping cart as active: clicking on the cart name in the shopping cart widget in the header of the shop or clicking on the cart name in the *Shopping Cart* page in *My Account* menu. - -After the shopping cart is set active, the user is redirected to a respective cart page where the table with the following information is available: - -* Product image -* Product name -* SKU -* Product attributes -* Product options -* Quantity -* Note -* Price mode -* Item price -* Cat Note -* Discount -* Subtotal -* Tax -* Grand Total - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Multiple Carts/shopping-cart-page.png) - -*Last review date: Oct. 29th, 2018* - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shared-cart-feature-overview.md b/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shared-cart-feature-overview.md deleted file mode 100644 index 54437cf511f..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shared-cart-feature-overview.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Shared Cart Feature Overview -last_updated: Jun 11, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shared-cart-feature-overview-1 -originalArticleId: f188d1db-05b3-48f8-b39e-8f828ac9dd90 -redirect_from: - - /v1/docs/shared-cart-feature-overview-1 - - /v1/docs/en/shared-cart-feature-overview-1 ---- - - -Shopping Cart is a part of the online shop where the record of the items a buyer has 'picked up' from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. - -There are two ways to access a shopping cart: through a shopping cart widget in the header of the webshop, or from *Shopping Cart* page in *My Account* menu. New items are added to the shopping cart by clicking on *Add to Cart* button on the product details page. - -To share a shopping cart, a user needs to click on *Share cart* button beside a cart they would like to share on the *Shopping Cart* page in *My Account* menu. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Shared cart/share-cart-button.png) - -## Permission Management for Shared Shopping Carts - -A shopping cart can be shared with the users of the current business unit. The *Share cart* [SHOPPING CART NAME] page consists of the users within the business unit to share the shopping cart with. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Shared cart/share-cart-page.png) - -There are 3 types of access rights that can be granted on shopping carts: no access, read-only and full access. - -**No access** means that shopping cart is not shared and therefore can not be seen by a user. - -No access permission is applied automatically to a newly-created cart. - -**Read-only** permission allows: - -**Reading shopping cart.** On the *Shopping cart* page, the user sees shopping cart name, access level (*Read only*), as well as the table of items with the following information: - -* Product image -* Product name -* SKU -* Product attribute -* Product options -* Quantity -* Note -* Price mode -* Item price -* Cart Note -* Discount -* Subtotal -* Tax -* Grand Total - -With Read-only permission, no cart actions are available to the user. - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Shared cart/read-only-cart.png) - -Full access** permission allows: - -1. **Reading shopping cart**: On the *Shopping cart* page, the user sees a shopping cart name, access level (Full access), as well as the table of items with the following information: - - - Product image - - Product name - - SKU - - Product attribute - - Product options - - Quantity - - Note - - Price mode - - Item price - - Cat Note - - Discount - - Subtotal - - Tax - - Grand Total - -2.**Changing quantity of items added to cart**: On the *Shopping Cart* summary page, a user can change the item quantity for the product added to the cart. -3.**Adding products to cart:** A user can add any products to the cart with full access. -4.**Removing products from the cart**: Having clicked on *Remove*, the user can remove an item from the cart. Having clicked on *Clear cart*, deletes all the items in the cart. -5.**Leaving notes for products in the cart**: A user can leave a note to a particular product in the cart on *Shopping cart* summary page. -6.**Leaving notes for the cart**: A user can leave a note to a cart on *Shopping cart* summary page. -7.**Entering voucher code**. -8.**Adding the cart to the shopping list**. A cart can be converted into shopping list on *Shopping cart* summary page. -9.**Proceeding to the checkout.** -![](../../../../Spryker Capabilities/Content/Resources/Images/Shared cart/full-access-cart.png) -10.**Editing shopping cart name**: The shopping cart name can be updated on *Shopping cart* page. -11.**Duplicating shopping cart**: The shopping cart can be duplicated on *Shopping cart* page. -12.**Deleting shopping cart**: The shopping cart can be deleted on *Shopping cart* page. Deleting a shared shopping cart also deletes it for users it has been shared with. -![](../../../../Spryker Capabilities/Content/Resources/Images/Shared cart/shopping-cart-actions.png) -By default, the user who has created the cart has Owner access permission. Owner access permission allows everything that allows Full access permission and an ability to share the cart with other users. -If user does not need a cart, that has been shared with them, it is possible to remove it from their shopping carts and thus cancel the sharing. To do so, the user clicks Dismiss on Shopping Cart page in Actions next to the respective shared shopping cart. It is possible to dismiss sharing shopping carts with both Read only and Full access rights. Own shopping carts cannot be dismissed. -If the shared cart has been dismissed individually by the user, and after that within the business unit, this user will not be able to see it in case this cart is shared next time. - -*Last review date: Oct. 29th, 2018* - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shopping-cart-widget-feature-overview.md b/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shopping-cart-widget-feature-overview.md deleted file mode 100644 index 85180bf5a97..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-application-guide/cart/shopping-cart-widget-feature-overview.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Shopping Cart Widget Feature Overview -last_updated: Jun 10, 2019 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-cart-widget-feature-overview -originalArticleId: 2f7411d5-11c2-43d8-8e3a-228347557062 -redirect_from: - - /v1/docs/shopping-cart-widget-feature-overview - - /v1/docs/en/shopping-cart-widget-feature-overview ---- - - - -Shopping Cart is a part of the online shop where the record of the items a buyer has 'picked up' from the online store is kept. The shopping cart enables consumers to select products, review what they selected, make modifications or add extra items if needed, and purchase the products. Many B2B customers use multiple shopping carts to cover different purchasing purposes. With Shopping cart widget they can access their shopping carts from any place in the online shop just in one click. - -For customers' convenience and ease of use, the shopping cart widget is placed in the very header of the webshop. When a customer puts a cursor on the Carts icon, a drop-down with all their shopping carts is displayed. For each shopping cart, the following details are provided in the drop-down: - -* Shopping cart name -* Number of items added to cart -* Access level to a shopping cart: See shared Shopping Lists -* Price mode -* Cart Total -* *View all carts* button which opens Shopping cart menu in the customer account -* *Create new cart* button which adds a new list in Shopping cart section - - ![](../../../../Spryker Capabilities/Content/Resources/Images/Shopping Cart Widget/shopping-cart-widget.png) - -*Last review date: Oct. 29th, 2018* - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-address-step.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-address-step.md deleted file mode 100644 index 4b13077de9c..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-address-step.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Shop Guide - Address Step -description: Use the procedures to create a delivery address, and assign multiple delivery addresses to the order in the Storefront. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/address-step-shop-guide-201911 -originalArticleId: 1aede9b5-e625-438a-a31f-b1ac45b942cc -redirect_from: - - /v1/docs/address-step-shop-guide-201911 - - /v1/docs/en/address-step-shop-guide-201911 - - /docs/scos/user/shop-user-guides/page.version/checkout/shop-guide-address-step.html ---- - -The topic provides a list of steps to select billing and shipping addresses for the order. - -{% info_block infoBox %} -You can proceed to the *Address* step as a:
      • registered user: In the Login step, sign up by filling out the fields marked with * in the form and click **Register**.
      • guest: In the Login step, fill in the fields marked with *, select the **Accept Terms** checkbox in the **Order as guest** form, and click **Submit**.
      • logged-in user: Log in to your account on top of the page.
      -{% endinfo_block %} -*** -To open the *Address* step, click **Checkout** in the corresponding shopping cart. - -![Shopping cart checkout](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/Shop+Guide+-+Address+Step/checkout-btn.png) - -Here you can do the following: - -* Create a new delivery address -* Use an existing delivery address -* Assign multiple delivery addresses to the items -*** - -## Creating a New Delivery Address -To create a new delivery address: - -{% info_block infoBox %} -If there are no pre-saved addresses, the **Define new address** option is displayed in the drop-down menu by default. -{% endinfo_block %} - -1. On the **Address** page, select the **Define new address** option from the drop-down menu. -![Create a new address](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/Shop+Guide+-+Address+Step/define-new-address.png) - -2. Fill in all the required information. -3. To proceed to the *Shipment* step, click **Next**. - -**Tips and tricks** - -The **Save new address to address book** and **Billing same as shipping** options are enabled by default: - -* If you want to use a different billing address, clear the checkbox for **Billing same as shipping** and use the existing one or add a new address. -* If you don't want to save a new address, clear the checkbox for **Save new address to address book**. If you decide to add the new address to your contacts, it will appear only after you complete the order. -*** - -## Use Existing Delivery Address -To use one of the addresses you created before: - -1. On the **Address** page, select the necessary address from the drop-down menu. You can select among *Customer Addresses* or *Business Addresses*. - -![Existing addresses](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/Shop+Guide+-+Address+Step/select-existing-address.png) -2. In the *Billing Address* section, select an existing billing address or create a new one. -3. To proceed to the *Shipment* step, click **Next**. - -**Tips and tricks** - -The **Billing same as shipping** option is enabled by default: - -* If you want to use a different billing address, clear the checkbox for **Billing same as shipping** and use the existing one or add a new address. -*** -## Assign Multiple Delivery Addresses to Order -To assign several addresses to the same order: - -1. On the **Address** page, select the **Deliver to multiple addresses** option from the drop-down menu. -![Deliver to multiple addresses](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/Shop+Guide+-+Address+Step/deliver-to-multiple-addresses-new.png) - -{% info_block infoBox %} -Clicking **Manage your addresses** will redirect you to the *Addresses* section in **Customer Account**. There you can add a new address, view, edit, or delete existing ones. -{% endinfo_block %} -2. In the **Select a delivery address** drop-down menu, select one of the following options for each item: - * **Define new addreses** if you want to assign a new address to the item. This will open the form where you need to populate the fields with the necessary information. - - * Existing address for the item - - -{% info_block warningBox %} -If there are no saved addresses, the **Define new address** option will be displayed by default in the **Select a delivery address** drop-down menu. -{% endinfo_block %} - -3. In the *Billing Address* section, select the necessary address or add a new one. -4. To proceed to the *Payment* step, click **Next**. -*** - -**What's next?** - -The delivery addresses are added to your items. Now, you need to select shipment methods for each delivery address. - -To learn more on how to select a shipment method, see [Shop Guide - Shipment Step](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-shipment-step.html). - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-checkout.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-checkout.md deleted file mode 100644 index 96853724fcb..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-checkout.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Shop Guide - Checkout -description: The section can be used to buy products added to the cart by setting a delivery address, shipment details, a payment method and placing an order. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/checkout-shop-guide-201911 -originalArticleId: 8f04b4b4-1522-4c7f-82a8-b2aeea953e23 -redirect_from: - - /v1/docs/checkout-shop-guide-201911 - - /v1/docs/en/checkout-shop-guide-201911 - - /docs/scos/user/shop-user-guides/page.version/checkout/shop-guide-checkout.html ---- - -Checkout allows purchasing the items added to the cart. - -{% info_block infoBox %} -If you have several shopping carts in your account, choose the right one and proceed with the checkout. See [Shop Guide - Shopping Carts](/docs/scos/user/features/{{page.version}}multiple-carts-feature-overview.html#multiple-carts-per-user-on-the-storefront -{% endinfo_block %} for more information.) - -A typical checkout process includes the following steps: - -* [Address](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-address-step.html): Define one or several delivery addresses and add a billing address. -* [Shipment](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-shipment-step.html): Select a shipment method and/or a delivery date. -* [Payment](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-payment-step.html): Select the payment method. -* [Summary](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-summary-step.html): View the details, update the information, if needed, and place the order. - -![Checkout process](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/split-delivery-checkout.gif) -*** -**What's next?** - -After you added items to cart, it is time to proceed to the *Address* step and enter the delivery information. - -To learn more on how to set a delivery address, see [Shop Guide - Address step](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-address-step.html). diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-payment-step.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-payment-step.md deleted file mode 100644 index 62ada978c59..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-payment-step.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Shop Guide - Payment Step -description: The guide provides the procedure to select a payment method for the order in the Storefront. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/payment-step-shop-guide-201911 -originalArticleId: e5b9f585-4dd3-4328-9934-ddec33ed57d6 -redirect_from: - - /v1/docs/payment-step-shop-guide-201911 - - /v1/docs/en/payment-step-shop-guide-201911 - - /docs/scos/user/shop-user-guides/page.version/checkout/shop-guide-payment-step.html ---- - -The topic provides a list of steps you need to perform to pay for the order. -*** -To open the *Payment* step, first, complete the **Shipment** step. - -Here you can do the following: -* Select a payment method and pay your order -*** -## Selecting a Payment Method -To select a payment method: - -1. Choose a suitable payment method. -2. Depending on the payment method you've chosen, populate the required fields. -3. To proceed to the *Summary* step, click **Go to Summary**. -*** -**What's next?** - -The delivery addresses, shipment and payment methods are selected. To check the order details and complete the order, go to the **Summary** page. -For more information, see [Shop Guide - Summary Step](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-summary-step.html). - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-shipment-step.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-shipment-step.md deleted file mode 100644 index d816d1844fb..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-shipment-step.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Shop Guide - Shipment Step -description: Use the procedure to select the shipment method and delivery date for the order in the Storefront. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shipment-step-shop-guide-201911 -originalArticleId: d99c7c7c-caf9-46c5-831e-54d4979efd8d -redirect_from: - - /v1/docs/shipment-step-shop-guide-201911 - - /v1/docs/en/shipment-step-shop-guide-201911 - - /docs/scos/user/shop-user-guides/page.version/checkout/shop-guide-shipment-step.html ---- - -The topic provides a list of steps to select shipment methods for the delivery addresses. -*** -To open the *Shipment* step, first, complete the **Address** step. -*** -On this page, you see items split into shipments by the same delivery address. - -Here you can do the following: - -* Select the appropriate shipment method -* Select the appropriate delivery date -*** -## Selecting a Shipment Method - -To select a shipment method: - -1. Choose an available shipment method. -2. Specify a date you want the shipment to be delivered. This is an optional step. -![Shipment methods](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Checkout/Shop+Guide+-+Shipment+Step/shipment-step-new.png) - -3. To proceed to the *Payment* step, click **Go to Payment**. -*** -**What's next?** - -The delivery addresses are added and shipment methods along with the delivery dates are selected. Now, you can go to the next step to select a payment method. - -To learn more on how to proceed with the payment, see [Shop Guide - Payment Step](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-payment-step.html) - - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-summary-step.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-summary-step.md deleted file mode 100644 index 72a864bcbbb..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-checkout/shop-guide-summary-step.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Shop Guide - Summary Step -description: Use the procedures to view and update shipment details, a payment method or billing address, and place the order in the Storefront. -last_updated: Jul 29, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/summary-step-shop-guide-201911 -originalArticleId: 03e5e541-31f4-45e9-beaa-a277cd8186f0 -redirect_from: - - /v1/docs/summary-step-shop-guide-201911 - - /v1/docs/en/summary-step-shop-guide-201911 - - /docs/scos/user/shop-user-guides/page.version/checkout/shop-guide-summary-step.html ---- - - - -To open the Confirmation step, you need to complete the [Payment step](/docs/scos/user/shop-user-guides/{{page.version}}/shop-guide-checkout/shop-guide-payment-step.html). - -The Confirmation step allows a customer to re-check the order information and confirm the order. - -## Graphic User Interface - -![](../../Resources/Images/Shop User Guide/Checkout/Confirmation Step/confirm-ui.png) - -The *Summary* page in the Checkout consists of the following elements - -| # | Element | Description | -|---|---|---| -| **1** | **Payment** | Details regarding the payment method. | -| **2** | **Shipping** | Details regarding the shipping method. | -| **3** | **Items in the cart** | Overview of the items that were added to the cart (their quantity and price). | -| **4** | **Enter voucher code** | A field for entering the voucher code. | -| **5** | **Overview** | The cart total including taxes, shipping costs and discounts applied. | -| **6** | **Submit your order** | Submits the order for processing. | - -## Confirming and Submitting the Order - -1. Re-check the information entered from the previous steps. -2. Click **Submit your Order** to finish the Checkout process. - -The order will be submitted and available in the [Administration Interface](/docs/scos/dev/feature-integration-guides/201903.0/product-feature-integration.html). - -*Last review date: Mar 06, 2019* diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-account.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-account.md deleted file mode 100644 index 9f4e4e20e01..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-account.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Shop Guide - Company Account -description: Use the procedures to create and manage a company from the company account in the storefront. -last_updated: Jul 29, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/company-account-shop-guide -originalArticleId: 584b51ca-bbae-456d-91ee-118e5a7e3d9c -redirect_from: - - /v1/docs/company-account-shop-guide - - /v1/docs/en/company-account-shop-guide ---- - - - -Company Account Overview page allows your shop owner to manage the company in the shop application. - -To open the Company Account page, go to the header of the shop application → Name of your company → Overview. - -![Company account header](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Account/company-account-header.png) - - -## Graphic User Interface - -![Company Account GUI](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Account/company-account-gui.png) - -The *Company Overview* page consists of the following elements: - -| # | Element | Description | -|---|---|---| -| **1** | **Company Account menu** | Use this menu to manage your Company: Overview, Users, Business Units, Roles. | -| **2** | **Company Name** | Displays the name of the company. | -| **3** | **Company Address** | Displays the address your company has. | - -## Creating a New Company - -To create a Company in the web-shop, go to `/company/register` and register a company. - -![Register a company](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Account/register-company.png) - -Fill in the required (*) fields to complete the registration. - -After the company has been registered, it should be approved in the [Back Office](/docs/scos/user/back-office-user-guides/{{page.version}}/customer/company-account/managing-companies.html#approving-and-activating-a-company) to continue building the hierarchy. - -Once the company is approved, a Company Administrator can go to `/company/overview` page and create (and then also edit and delete) users, addresses, roles and business roles. - -{% info_block infoBox %} -A Company Administrator needs to log out and then log in to refresh the changes. -{% endinfo_block %} -Don't forget to check out the video tutorial on setting up [Company](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-accounts-overview.html) Structure in Spryker [B2B Demo Shop](/docs/scos/user/intro-to-spryker/b2b-suite.html): - -{% wistia qkdgkeannb 960 720 %} - diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-users.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-users.md deleted file mode 100644 index 641a6583be1..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-company-users.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Shop Guide - Company Users -description: Use the procedures to create, edit, enable/disable or delete company users, and invite new users using a .CSV file on the Company Users page. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/company-users-shop-guide -originalArticleId: 34b0115d-12fb-4538-a144-9a126298fb0c -redirect_from: - - /v1/docs/company-users-shop-guide - - /v1/docs/en/company-users-shop-guide ---- - - - -Company Users page allows your shop owner to manage the company users. - -To open the Company Users page, go to the header of the shop application → Name of your company → Users. - -![Company user header](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/users-header.png) - -*** -## Graphic User Interface - -![Company users GUI](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/company-users-table.png) - -The *Company Users* page consists of the following elements: - -| # | Element | Description | -|---|---|---| -| **1** | **Company Account menu** | Use this menu to manage your Company: Overview, Users, Business Units, Roles. | -| **2** | **Name** | First and last names of the company user. | -| **3** | **Business Unit** | Displays the business unit the user belongs to. | -| **4** | **Roles** | The role(s) assigned to the company user. The multiple roles are separated by commas. | -| **5** | **Enable** | A toggle button that enables/disables a user. See Enabling/Disabling the Company User for more details. | -| **6** | **Actions** | Click a respective button to either **Edit**![Edit icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/edit-icon.png) or **Delete**![Delete icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/delete-icon.png) a company user. | -| **7** | **Invite Users** | Invites new users to the company. See Inviting Company Users for more details. | -| **8** | **+ Create User** | This button creates a new company user. See Creating a New Company User for more details. | -| **9** | **< [page number] >** | [page number] is the number of the page you are currently on. Here you can switch to the previous page < or to the next page >. | - -## Creating a New Company User - -To **create a new company user**, do the following: - -1. On the **Company Users** page click **+Create User**. - -2. Populate the required fields: Select from the drop-down list the business unit the user will be assigned to. Select the Roles the user will have. Select the salutation, fill in the first and last names and enter the email address. - -![Create a company user](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/create-user.png) - -3. Click **Submit**. - -## Inviting Company Users - -You can invite new users by uploading a CSV file. To do that: - -1. Click **Invite Users**. -2. By clicking **Choose File**, select the CSV file. - -![Invite users](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/invite-users.png) - -3. Click **Submit**. - -## Editing an Existing Company User - -You can edit the existing user details by completing the steps below: - -1. On the **Company Users** page, click![Edit icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/edit-icon.png) next to the company user you would like to edit. - -![Edit a company user](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/edit-company-user.png) - -2. Update the necessary fields. -3. Click **Submit**. - -## Enabling / Disabling the Company User - -You can temporarily enable/disable the company user by switching the toggle in the *Enable* column. - -## Deleting a Company User - -You can delete a company user by clicking ![Delete icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/delete-icon.png) icon next to the company user you are going to delete. Confirm the removal by clicking **Delete**. - -![Delete a user](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Users/delete-user.png) - -Don't forget to check out the video tutorial on setting up the [Company Users](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-accounts-overview.html) in Spryker [B2B Demo Shop](/docs/scos/user/intro-to-spryker/b2b-suite.html): - -{% wistia 72qy3slwjo 960 720 %} \ No newline at end of file diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-managing-company-roles.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-managing-company-roles.md deleted file mode 100644 index f7055f8c6eb..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-managing-company-roles.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Shop Guide - Managing Company Roles -description: The guide provides procedures to create, edit or view company roles in the storefront. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/company-roles-shop-guide -originalArticleId: 525f5d80-a843-425f-a8de-90950d9217ec -redirect_from: - - /v1/docs/company-roles-shop-guide - - /v1/docs/en/company-roles-shop-guide - - /docs/scos/user/shop-user-guides/page.version/shop-guide-company-roles.html ---- - -Roles page allows your shop owner to manage the roles for your company. - -To open the Company Roles page, go to the header of the shop application → Name of your company → Roles. - -![Roles header](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/roles-header.png) - -## Graphic User Interface - -![Roles GUI](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/roles-gui.png) - -The *Company Roles* page consists of the following elements: - -| # | Element | Description | -|---|---|---| -| **1** | **Company Account menu** | Use this menu to manage your Company: Overview, Users, Business Units, Roles. | -| **2** | **Name** | Name of the role. | -| **3** | **Is Default** | Check mark that specifies whether the role is set the default for the newly created users. | -| **4** | **Actions** | Click a respective button to either **Edit**![Edit icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/edit-icon.png) or **Delete**![Delete icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/delete-icon.png) a company role. | -| **5** | **+ Add New Role** | This button creates a new company role. See *Creating a New Role* for more details. | - -## Creating a New Company Role - -**To create a new company role**, do the following: - -1. On the **Company Roles** page, click **+Create New Role**. -2. Enter the name of the role. -![Create a role](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/create-role.png) - -{% info_block infoBox %} -Selecting the **Is Default** check-box means that the new users will be created with this role assigned by default. -{% endinfo_block %} - -3.Click **Submit**. - -## Editing an Existing Company Role - -You can edit the existing role settings by completing the steps below: - -1. On the **Company Roles** page, click![Edit icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/edit-icon.png) next to the company user you would like to edit. -2. Update the necessary settings. - -![Edit a role](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/edit-role.png) - -A role includes a set of permissions that can be enabled/disabled according to your needs by switching the toggle in Enable column. - - **Add company users** - allows adding company users. With this permission enabled, a user will have Create User button on the Company Users page. - - **Invite users** - allows inviting company users. With this permission enabled, a user will have Invite Users button on the Company Users page. - - **Enable / Disable company users** - allows enabling and disabling company users. With this permission enabled, a user will be able to switch a toggle in the Enable column on the Company Users page. - - **See Company Menu** - allows access to the company menu. With this permission enabled, a user will be able to navigate to a company menu from the header of the shop interface. - - **Add item to cart** - allows adding products to cart. Without this permission, the user will get This action is forbidden error when trying to add the product in the cart. - - **Change item in cart** - allows changing products in the cart (changing the quantity, adding notes etc). - - **Remove item from cart** - allows deleting the products from the cart. - - **Place Order** - allows placing the order. With this permission enabled, a user will have error when trying to submit the order. - - **Alter Cart Up to Amount** - allows changing the content of the cart (adding new products, changing the quantity of the existing products etc.) until it hits the limit specified in this permission. When the limit is reached, the buyer will not be able to change the contents of the cart and will get *This action is forbidden* error. - - **Buy up to grand total (Requires "Send cart for approval")** - sets a limit for the grand total of the cart. If the amount in the cart is bigger than the limit set in this permission, the user will not be able to proceed to checkout. Works with Send cart for approval permission. This permission is available after enabling the [Approval Process](/docs/scos/user/features/{{page.version}}/approval-process-feature-overview.html) feature. - - **Approve up to grand total** - with this permission enabled, a user can approve the the cart. See [Approval Feature ](/docs/scos/user/features/{{page.version}}/approval-process-feature-overview.html) for more details. - - **Send cart for approval (Requires "Buy up to grand total")** - allows a user to send the cart for approval. Works together with Buy up to grand total permission. See [Approval Feature Overview](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-user-roles-and-permissions-overview.html) for more details. -3. Click **Submit**. - -## Deleting a Company Role - -You can delete a company user by clicking ![Delete icon](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/delete-icon.png) icon next to the company user you are going to delete. Confirm the removal by clicking **Delete**. - -![Delete a role](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Company+Roles/delete-role.png) - -Don't forget to check out the video tutorial on setting up the [Company Roles](/docs/scos/user/features/{{page.version}}/company-account-feature-overview/company-user-roles-and-permissions-overview.html) in Spryker [B2B Demo Shop](/docs/scos/user/intro-to-spryker/b2b-suite.html): - -{% wistia 72qy3slwjo 960 720 %} diff --git a/docs/scos/user/shop-user-guides/201811.0/shop-guide-shopping-lists.md b/docs/scos/user/shop-user-guides/201811.0/shop-guide-shopping-lists.md deleted file mode 100644 index 6aff55c935a..00000000000 --- a/docs/scos/user/shop-user-guides/201811.0/shop-guide-shopping-lists.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Shop Guide - Shopping Lists -description: Use the procedures to create, update, share, and print shopping lists, dismiss shared shopping lists, and add items to a shopping list. -last_updated: May 19, 2020 -template: howto-guide-template -originalLink: https://documentation.spryker.com/v1/docs/shopping-lists-shop-guide -originalArticleId: 7c295ea1-f32b-4350-a794-0bd33737859d -redirect_from: - - /v1/docs/shopping-lists-shop-guide - - /v1/docs/en/shopping-lists-shop-guide -related: - - title: Multiple and Shared Shopping Lists overview - link: docs/scos/user/features/page.version/shopping-lists-feature-overview/shopping-lists-feature-overview.html - - title: Shopping List Notes overview - link: docs/scos/user/features/page.version/shopping-lists-feature-overview/shopping-list-notes-overview.html - - title: Shopping list printing overview - link: docs/scos/user/features/page.version/shopping-lists-feature-overview/shopping-list-printing-overview.html ---- - -The **Shopping Lists** page allows customers to create and manage the shopping lists of frequently purchased products and add all the items to the cart as well as manage existing shopping lists. - -There are two ways to open the **Shopping Lists** page: - -{% info_block infoBox %} - -Make sure that you are logged in to your customer account. - -{% endinfo_block %} - -1. Go to the header of your shop application and click Shopping Lists. -![Shopping lists header](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/header-shopping-lists.png) - -2. In your **Customer Account**, select **Shopping Lists** on the left-side navigation bar. -![Shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/shopping-list-shop-guide.png) -*** -## Graphic User Interface - -{% info_block infoBox %} - -Hover your mouse over the numbers to view their description. - -{% endinfo_block %} - -![Shopping lists GUI](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/shop-lists-gui.png) -*** -## Creating a New Shopping List - -{% info_block warningBox %} - -Keep in mind that you must be logged in to your customer account. - -{% endinfo_block %} - -To create a shopping list, enter a shopping list name and click **+ Create shopping list**. -![Create a shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/create-shopping-list-btn.png) - -A new shopping list appears in the table of your shopping lists. -** -## Adding Items to a New Shopping List - -After you have created a shopping list, there are no items in it. Thus, the next step is to add product items to this list. - -There are two ways to add items to your shopping list: - -* From a product detail page -* While editing the shopping list -*** -## Adding Products from the Product Detail Page - -1. Navigate to a product detail page of the product you would like to add to a shopping list. -2. From the drop-down list, select the name of the shopping list where you want to add a product item and click **Add to Shopping list**. -![Add to shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/add-to-shopping-list-btn.png) - -The product item will be successfully added to your shopping list. -*** -## Managing Shopping Lists - -Customers can _view_ their own or shared shopping lists, _edit, share, print, delete_ them, and _add_ them _to cart_ on the _Shopping lists_ page. - -### Editing Shopping Lists - -To edit a shopping list, click **Edit** next to the shopping list you would like to change. - -![Editing shopping lists](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/edit-btn.png) - -The _Edit shopping list_ page opens where you can: - -* Add an item to a shopping list. For this, search an item by its SKU or name (1), specify the quantity (2), and then add it to the shopping list (3). -![Quick add to a shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/quick-add-to-shopping-list-window.png) - -{% info_block warningBox %} - -To be able to search for products, make sure that [Search Widget for Concrete Products](/docs/scos/user/features/201903.0/product-feature-overview/search-widget-for-concrete-products-overview.html) feature is [integrated](/docs/scos/dev/feature-integration-guides/201903.0/search-widget-for-concrete-products-feature-integration.html) into your Project. - -{% endinfo_block %} - -* View the shopping list owner and access rights. -![View a shopping list owner and access rights](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/view-owner-on-edit-page.png) - -* View the shopping list details: its price, name, SKU, etc. -* Change the product item quantity using minus and plus buttons. -![View details](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/view-details.png) - -* Add a note to the item. To save the note, click **Save**. See [Shopping List Notes Feature Overview](https://docs.demo-spryker.com/v4/docs/shopping-list-notes-overview) for more details. - -* Select the warranty option from the drop-down list. -![Warranty options](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/warranty-options.png) - -* Select the insurance option. -![Insurance option](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/insurance-option.png) - -* Remove the item from the shopping list. -![Remove the item from the shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/remove-btn.png) - -* Remove all product items from the shopping list by clicking **Remove all** at the bottom of the list. -* Delete the shopping list. To do this, click **Delete** at the bottom of the shopping list. - -To keep the changes, click **Submit**. - -### Sharing Shopping Lists - -You can share (grant access rights) your shopping lists with business units or individual customers. - -To share a shopping list: - -1. Click **Share** on the _Shopping lists_ page. -![Share button](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/share-btn.png) - -2. From the **drop-down list** next to the business unit or customer you want to share a shopping list with, select the appropriate access rights level. - -{% info_block infoBox %} - -See [Permissions Management for Shared Shopping Lists](/docs/scos/user/features/{{page.version}}/shopping-lists-feature-overview/multiple-and-shared-shopping-lists-overview.html) to learn more about types of shopping list access rights. - -{% endinfo_block %} - -![Share page](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/share-page.png) - -3. Click **Share**. - -### Printing Shopping Lists - -Here you can print your own and shared shopping lists of products with their barcodes. - -To print a shopping list, click **Print** on the _Shopping lists_ page. -![Printing a shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/print-btn.png) - -This will open the shopping list containing its ID, name, product SKU and barcode, product name, default price, and a note (if any), which you can print. -![Printable shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/printable-shopping-list.png) - -### Deleting a Shopping List - -Clicking **Delete** will delete a shopping list from your shopping lists. -![Delete a shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/delete-btn.png) - -### Adding Shopping Lists to Cart - -It is possible to add selected shopping lists to cart with one click. - -To add a shopping list with product items to cart, select the shopping list (lists) in the _Name_ column and click **Add selected to cart**. - -![Add selected to cart](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/place-order.png) - -The shopping list with the available items will be added to the shopping cart. See [Shopping Cart](/docs/scos/user/features/{{page.version}}multiple-carts-feature-overview.html#multiple-carts-per-user-on-the-storefront) to learn how to manage and purchase items using the cart. - -### Dismissing Shared Shopping Lists - -If you do not need a shopping list shared with you, you can remove it from your shopping lists. - -To remove a **shared** list, click **Dismiss** for the respective list. -![Dismissing a shared shopping list](https://spryker.s3.eu-central-1.amazonaws.com/docs/User+Guides/Shop+User+Guides/Shopping+Lists/dismiss-btn.png) - -This will delete the shared shopping list from your customer account. - - diff --git a/docs/scos/user/technology-partners/201811.0/content-management/censhare.md b/docs/scos/user/technology-partners/201811.0/content-management/censhare.md deleted file mode 100644 index 2364a8654a3..00000000000 --- a/docs/scos/user/technology-partners/201811.0/content-management/censhare.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Censhare -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/censhare -originalArticleId: 66db22c4-f493-4887-abd8-784393d1a5ff -redirect_from: - - /v1/docs/censhare - - /v1/docs/en/censhare -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/content-management/coremedia.md b/docs/scos/user/technology-partners/201811.0/content-management/coremedia.md deleted file mode 100644 index da58ec2421c..00000000000 --- a/docs/scos/user/technology-partners/201811.0/content-management/coremedia.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Coremedia -description: Take content to the next level with the CoreMedia Content Cloud that can be integrated in the Spryker Commerce OS. -last_updated: Oct 30, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/coremedia -originalArticleId: fca123d9-83cb-4aa3-9415-bbc6594b50cb -redirect_from: - - /v1/docs/coremedia - - /v1/docs/en/coremedia -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT COREMEDIA](https://www.coremedia.com) - -Take content to the next level with the CoreMedia Content Cloud, which enables the enterprise-level creation, orchestration, and preview of sophisticated omnichannel experiences, delivered across multiple brands, markets, channels, and languages. React to market trends instantly, stay ahead of the competition and become an instantly recognizable iconic brand. Be iconic. - -YOUR ADVANTAGES: - -* Real-Time Integration of Product Catalog, Pricing and Promotions with no duplication of data – or manual copy&paste -* Design your experiences for home page, category, product, promotion, landing and content pages with drag & drop -* Make and publish changes instantly -* Maintain a multitude of regionalized and localized content easily with our sophisticated translation workflows -* Manage your digital assets in one place with automatic optimized conversion for all channels -* Real-time omni-channel preview on your desktop -* Mix content and products freely -* Make content and assets shoppable: Create shoppable banners, promotions, videos, blog articles -* Engage and convert your users by providing unique hyper-personalized, high-touch experiences. Be iconic! - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/content-management/e-spirit.md b/docs/scos/user/technology-partners/201811.0/content-management/e-spirit.md deleted file mode 100644 index f124b4552f2..00000000000 --- a/docs/scos/user/technology-partners/201811.0/content-management/e-spirit.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: E-Spirit -description: Help your Spryker project engage customers and increase revenue with personalized, content-rich digital experiences anytime, anywhere by integrating E-Spirit. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/e-spirit -originalArticleId: 7ca7485f-7228-4996-a83b-47b4eb5d862d -redirect_from: - - /v1/docs/e-spirit - - /v1/docs/en/e-spirit -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT E-SPIRIT](https://www.e-spirit.com/) -Content-rich e-commerce experiences for a Digital Experience Edge - -e-Spirit’s FirstSpirit Digital Experience Platform, offered through a SaaS or on-premises model, helps retail and e-commerce companies engage customers and increase revenue with personalized, content-rich digital experiences anytime, anywhere. Savvy e-commerce marketers rely on the FirstSpirit platform—which includes a headless, hybrid and head-optional CMS, AI-driven personalization and omnichannel marketing capabilities—for individualized and synchronized content delivery across all channels to differentiate their companies and compel their customers to action for an e-commerce edge. - -YOUR ADVANTAGES: - -* Easy to use content editing: No coding needed to add content for experience-driven commerce (e.g., promotional banners, product teasers, interactive images and videos, user generated content) -* Rapid start-up -* Deep partnership with Spryker -* Many leading e-commerce customers globally: Reitmans, Carter’s, Converse, L’Oreal Luxe brands, Karstadt, TSI Holdings, Hugo Boss, etc. -* Content-driven commerce that simplifies connections across people, processes and technology to enable compelling digital experiences anytime, anywhere -* Dynamic content experiences: Create content-rich online stores that increase engagement and influence buying behavior. -* AI-Powered, Personalized Content Delivery: Use the FirstSpirit Intelligent Content Engine to deliver personalized, relevant content that differentiates and compels customers to action -* Omnichannel Marketing: Deliver connected digital experiences on websites, mobile or other channels or devices to boost online and retail store sales. -* Digital Signage: Optimize the in-store experience with interactive digital signage that bridges the gap between the physical and digital world. -* Globalization & Localization: Ensure brand consistency across multiple regions, sites and languages to support local marketing efforts and global business objectives - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/content-management/magnolia.md b/docs/scos/user/technology-partners/201811.0/content-management/magnolia.md deleted file mode 100644 index fdb8f7d3b79..00000000000 --- a/docs/scos/user/technology-partners/201811.0/content-management/magnolia.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Magnolia -description: Connect content and Spryker Commerce OS by integrating Magnolia CMS. -last_updated: Oct 8, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/magnolia-cms -originalArticleId: b6af5ec8-9cea-48a4-b122-725846fc1f7c -redirect_from: - - /v1/docs/magnolia-cms - - /v1/docs/en/magnolia-cms -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT MAGNOLIA CMS](https://www.magnolia-cms.com) -Magnolia - the CMS that connects content and commerce. Magnolia CMS is a platform for building best-of-breed digital experiences. Enterprises such as Generali, Avis, PERI and REWE use it as a central hub for their web, mobile and DX initiatives. Magnolia is a privately-held company, founded in 1997 and with headquarters in Basel, Switzerland. - - YOUR ADVANTAGES: - -* Easy integration Connect Magnolia to your choice of e-commerce and digital marketing tools using custom or pre-built integrations. -* Ease of use Magnolia's focus on usability and simplicity means content authors can start creating mobile-ready, powerful content within minutes. -* Enterprise grade Magnolia has the robust features needed for enterprise-scale multi-everything digital experiences. -* Flexible Robust integration capabilities let you enjoy the benefits of headless while still building on your existing solutions. -* Engaging personalization Magnolia's personalization tools build on the easy-to-use authoring tools, making personalizing content as easy as creating it. -* PowerfulCombine features to produce campaigns driven by date and visitor demographics. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/content-management/styla.md b/docs/scos/user/technology-partners/201811.0/content-management/styla.md deleted file mode 100644 index 9725a69dc5c..00000000000 --- a/docs/scos/user/technology-partners/201811.0/content-management/styla.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Styla -description: Design content and make it shoppable and inspiring customers to buy more by integrating Styla into Spryker Commerce OS. -last_updated: Oct 30, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/styla -originalArticleId: af4e44c8-c510-4d01-b6ec-5507a418ef16 -redirect_from: - - /v1/docs/styla - - /v1/docs/en/styla -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT STYLA](https://www.styla.com) -Styla is a content commerce suite that automatically designs content and makes it shoppable, inspiring customers to buy more. Styla's automation technology is creating the design itself and ensures that the content looks attractive on all devices. A seamless integration with all common e-commerce systems allows an easy embedding of products and creates a whole new world of shoppable inspiration.More information can be found the [Styla documentation](https://www.styla.comressourcen/?iso=de). - -YOUR ADVANTAGES: - -* Design Automation -* Shoppable Content -* Unique brand experience all along customer journey -* Seamless Commerce Integration -* Plugin-based (fast Go-to-market) -* Detailed analytics - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/customer-service/dixa.md b/docs/scos/user/technology-partners/201811.0/customer-service/dixa.md deleted file mode 100644 index 63748ea3af9..00000000000 --- a/docs/scos/user/technology-partners/201811.0/customer-service/dixa.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Dixa -description: Unify customer engagement across email, chat, messaging and phone in one platform for a better customer and agent experience by integrating Dixa into the Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/dixa -originalArticleId: 69f38bfb-b204-411e-be58-80dae9246c75 -redirect_from: - - /v1/docs/dixa - - /v1/docs/en/dixa -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT DIXA](https://dixa.com/) -Meet Conversational Customer Engagement- Helping brands build stronger bonds with their customers and eliminate bad customer service. Dixa is the Conversational Customer Engagement platform of choice for hundreds of the world’s leading brands. Our software unifies customer engagement across email, chat, messaging and phone in one platform for a -better customer and agent experience. -Dixa is a truly international company with 14+ nationalities working together in the heart of Copenhagen and with offices in London, Berlin and Kiev. With customers in 20+ countries, Dixa has experienced incredible growth since it’s global launch in 2018, quickly becoming one of Scandinavia’s fastest growing SaaS companies. - -YOUR ADVANTAGES: - -* Personalized conversations with insights across all channels - so you can lift customer experience dramatically -* Intelligent routing and automation of conversations based on context & data - so you can increase agent efficiency significantly -* Channel-neutral conversational CE platform with unified data - so you can emposer data-driven decision making on CX -* “One Window Wonder” and effortless onboarding of agents - secure fast risk-free shift towards true omni-channel -* Agent availability and presence in real-time across all channels and conversations - so you can enable agent/channel blending and boosting agent productivity. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/customer-service/iadvize.md b/docs/scos/user/technology-partners/201811.0/customer-service/iadvize.md deleted file mode 100644 index 17a53801785..00000000000 --- a/docs/scos/user/technology-partners/201811.0/customer-service/iadvize.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: iAdvize -description: Connect customers in need of advice with experts who are available 24/7 via real-time messaging by integrating iAdvize into the Spryker Commerce OS. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/iadvize -originalArticleId: cdbaf346-2b6d-4017-8c5d-7449492cee1b -redirect_from: - - /v1/docs/iadvize - - /v1/docs/en/iadvize -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -About IADVIZE - -Make Customer Experience authentic - -iAdvize is a conversational marketing platform that allows more than 1,500 brands worldwide to make their customer experience authentic. iAdvize connects customers or prospects in need of advice with experts who are available 24/7 via real-time messaging. - -YOUR ADVANTAGES: - -* Conversational Platform -* Engage your customers proactively thanks to smart targeting -* Omni-Channel: Website Chat, Call, Video & Messaging -* Optimize your conversion rate and customer live time value -* connectors to your favorite CRM -* supported by our customer success team - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/customer-service/live-chat-service.md b/docs/scos/user/technology-partners/201811.0/customer-service/live-chat-service.md deleted file mode 100644 index ded754dd7b4..00000000000 --- a/docs/scos/user/technology-partners/201811.0/customer-service/live-chat-service.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Live Chat Service -description: Ensure that live chat helps their customers with new leads and -last_updated: Nov 4, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/live-chat-service -originalArticleId: fa7f7dec-c044-4da3-86c5-b594fa4738a1 -redirect_from: - - /v1/docs/live-chat-service - - /v1/docs/en/live-chat-service -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT LIVECHAT SERVICE](https://livechatservice.de/) -We are the plus for your company - -LiveChat Service is an online service provider in the field of live chat. Through trained chat -operators, LiveChat Service ensures that they help their customers with new leads and -improved service through the website every day. The chat gives visitors the opportunity to -ask questions, leave comments and convert. This removes the barrier for chatters to leave -their data behind. It works faster, friendlier and easier. - -YOUR ADVANTAGES: - -* Outsourcing chat to LiveChat Service - - More sales: increasing conversion by answering questions of website visitors -real time. -- More service: live chat is an approachable contact channel that you can use -from 07:00 - 23:00 during the week and from 09:00 - 23:00 during weekends. -- More leads: on average we generate up to 20-25% of the chats into leads. -- Less phone calls: by answering questions on the website, we’re reducing -incoming calls. - -* LiveChat Software (Knowler) -- For companies that wish to chat with their own employees we offer reliable -and innovative chat software. -- Available in 6 languages, including support. -- The software allows chat operators to chat efficiently and effective. - -* Hybrid chat -- We offer hybrid chat, because we can provide clients with both chat services -and chat software. This allows companies to chat by themselves but forward -chats to our service when they are too busy and/or we chat for them outside -office hours. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/customer-service/optimise-it.md b/docs/scos/user/technology-partners/201811.0/customer-service/optimise-it.md deleted file mode 100644 index 1aeaef921b3..00000000000 --- a/docs/scos/user/technology-partners/201811.0/customer-service/optimise-it.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: optimise-it -description: Integrate a custom-tailored chat solution - Optimise it, which can include integrations of messengers (WhatsApp, Facebook, Apple Business Chat), chatbots, video-chat, co-browsing, screen sharing into Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/optimise-it -originalArticleId: 13879980-a452-4d39-8246-d7b84c6e012e -redirect_from: - - /v1/docs/optimise-it - - /v1/docs/en/optimise-it -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT OPTIMIZE IT](https://www.optimise-it.de/de/) -We ❤ Conversations! - -As one of the leading chat service providers in Europe, optimise-it focuses primarily on a custom tailored chat solution, which can include integrations of messengers (WhatsApp, Facebook, Apple Business Chat), chatbots, video-chat, co-browsing, screen sharing, and more. With their inhouse chat lab, they provide experienced and performance driven chat agents for their full service customers. optimise-it’s customers include leading companies like BASF, Migros, Eurowings, Deutsche Bahn and 1&1. - -YOUR ADVANTAGES: - -* Innovative and technically flexible chat solution, custom tailored to the needs and use cases of the customer -* Integration of messengers (WhatsApp, Facebook, Apple Business Chat), chatbots etc. -* Popular and modern expansions like video chat, conversational ad, co-browsing, screen sharing and more -* optimise-it Chat Lab: Experienced and performance driven chat experts for full service projects -* 100% Privacy and GDPR compliant. All dedicated servers are hosted exceptionally in german data centres ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/finance-and-accounting/collectai.md b/docs/scos/user/technology-partners/201811.0/finance-and-accounting/collectai.md deleted file mode 100644 index b4117f0e56a..00000000000 --- a/docs/scos/user/technology-partners/201811.0/finance-and-accounting/collectai.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: CollectAI -description: Integrate Collect AI into Spryker Commerce OS to have digitized, AI-based payments and collection services to manage account receivables. -last_updated: Oct 8, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/collect-ai -originalArticleId: e595f23a-c8e1-4a98-9cd6-a298e38fce00 -redirect_from: - - /v1/docs/collect-ai - - /v1/docs/en/collect-ai -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT COLLECTAI](https://www.collect.ai/) -Digital accounts receivable management based on AI collection services - -collectAI is a software platform providing digitised, AI-based payments and collection services to manage accounts receivables. Covering the end-to-end process from e-invoicing and payment reminder to debt collection it flexibly optimises the goals of collection rates, costs and customer retention. In addition, the company offers payment links as well as business process outsourcing services. It uses digital communication channels and payment solutions for a frictionless checkout process. With its proprietary technology, collectAI fundamentally improves the customer experience, putting the needs and behaviour of the end consumer to the centre of the service. collectAI, founded in 2016, is part of Germany’s largest e-commerce retailer, the Otto Group. - -YOUR ADVANTAGES: - -* Self-Learning AI for continuously better results -* Numerous Communication Channels for an individual customer approach -* Large Selection of Payment Solutions increases the conversion rate -* Landing Page in your Branding for an individual brand experience - even when paying -* Customer Orientation (UX / UI) leads to optimal services and satisfied customers -* Flexible Integration across Platforms for easy implementation in your System - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/finance-and-accounting/nitrobox.md b/docs/scos/user/technology-partners/201811.0/finance-and-accounting/nitrobox.md deleted file mode 100644 index 2682476c921..00000000000 --- a/docs/scos/user/technology-partners/201811.0/finance-and-accounting/nitrobox.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Nitrobox -description: Integrate Nitrobox to model, automate and API control customer financial processes. -last_updated: Oct 2, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/nitrobox -originalArticleId: 94a0634a-98ac-4a3c-ab0e-c87aac29befe -redirect_from: - - /v1/docs/nitrobox - - /v1/docs/en/nitrobox -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT NITROBOX](http://www.nitrobox.de/) -Nitrobox is a service and solution provider for intelligent order-to-cash processes. Our mission is to be an enabler of new mobility solutions by providing the most flexible Order-to-Cash product on the market. Our central cloud platform enables enterprises to model, automate and API control their financial processes, so they are able to build, charge and scale digital business models such as connected car products, in-car purchase, car sharing or new mobility solutions.The central platform allows a lean approach to charge new and exisiting business models. Start fast, adapt, optimize and scale sky high. Also our ecosystem of integrated partners allows a heads-up start for new financial processes. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/hosting-providers/claranet.md b/docs/scos/user/technology-partners/201811.0/hosting-providers/claranet.md deleted file mode 100644 index cf59a2c352d..00000000000 --- a/docs/scos/user/technology-partners/201811.0/hosting-providers/claranet.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Claranet -description: Integrate Claranet hosting solution to host Spryker-based project. -last_updated: Nov 1, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/claranet -originalArticleId: 81f606ac-f7c4-4097-be9f-a8edd6c178ed -redirect_from: - - /v1/docs/claranet - - /v1/docs/en/claranet -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT CLARANET](https://www.claranet.de/) - Claranet is your innovative partner for hosting your Spryker Shop. E-commerce businesses face the challenge of constantly delivering new features while guaranteeing a safe and performant operation.As one of Europe's leading managed IT services providers we bring your demands for availability, performance and security into line with the competitive factor agility. We are thus relying on container technologies and a high performance e-commerce stack, enabling you to provide your consumers a high end shopping experience with continuous appearance of new features and high standards of quality. - - YOUR ADVANTAGES: - -* Rely on our expertise in hosting Spryker on a container-based environment– Spryker Demoshop is powered by Claranet -* Fast and easy deployment of new featuresby leveraging container technologies and further DevOps practices -* Highest performance and customer satisfaction with a proven e-commerce stack -* The right cloud meeting your requirements–we are certified partner of Google, AWS und Microsoft Azure -* Highest availabilitycovered by business SLAs -* Guaranteed securityfor your data ensured by ISO-certification -* Expertise in migrating and operating complex applications - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/hosting-providers/continum.md b/docs/scos/user/technology-partners/201811.0/hosting-providers/continum.md deleted file mode 100644 index 5dcf69cc2ef..00000000000 --- a/docs/scos/user/technology-partners/201811.0/hosting-providers/continum.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Continum -description: Integrate Continum hosting solution to host Spryker-based project. -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/continum -originalArticleId: 9e7b5d05-d467-46f6-adc8-b2d1b0db9aae -redirect_from: - - /v1/docs/continum - - /v1/docs/en/continum -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - - [ABOUT CONTINUM](https://www.continum.net/de/) -The Continum AG is a specialist for high-quality enterprise and application hosting according to the highest security requirements. In state-of-the-art data centers in Germany the company provides managed services according to the highest German privacy policy. Continum is certified to ISO/IEC 27001 and to PCI-DSS (Payment Card Industry Data Security Standard). Business partners have permanent confidence in the outstanding and reliable competence and performance. - - YOUR ADVANTAGES: - -* Specialist for high-quality enterprise and application hosting -* More than 20 years of experience in the hosting of complex solutions -* Digitizing partner for medium-sized businesses with B2B and B2C expertise -* Flexible private, public and hybrid cloud concepts -* Guaranteed SLAs and 24/7 support with personal contact person -* ISO/IEC 27001 and PCI DSS (Payment Card Industry Data Security Standard) -* Several data centers in Freiburg i.Br., Karlsruhe and Frankfurt/Main -* Your partner for managed e-commerce hosting and internationalization ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - - diff --git a/docs/scos/user/technology-partners/201811.0/hosting-providers/heroku.md b/docs/scos/user/technology-partners/201811.0/hosting-providers/heroku.md deleted file mode 100644 index 5b7275db980..00000000000 --- a/docs/scos/user/technology-partners/201811.0/hosting-providers/heroku.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Heroku -template: concept-topic-template ---- - -## Partner Information - -[ABOUT HEROKU](https://www.heroku.com/) - -Heroku is a container-based cloud Platform as a Service (PaaS). Developers use Heroku to deploy, manage, and scale modern apps. Our platform is elegant, flexible, and easy to use, offering developers the simplest path to getting their apps to market. - -Heroku is fully managed, giving developers the freedom to focus on their core product without the distraction of maintaining servers, hardware, or infrastructure. The Heroku experience provides services, tools, workflows, and polyglot support—all designed to enhance developer productivity. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- - -## Integration - -To learn how to integrate Heroku into a Spryker project, see [Integrating Heroku](/docs/scos/dev/technology-partner-guides/{{page.version}}/hosting-providers/integrating-heroku.html). diff --git a/docs/scos/user/technology-partners/201811.0/hosting-providers/metaways.md b/docs/scos/user/technology-partners/201811.0/hosting-providers/metaways.md deleted file mode 100644 index e67fd3a0c23..00000000000 --- a/docs/scos/user/technology-partners/201811.0/hosting-providers/metaways.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Metaways -description: Integrate Metaways hosting solution to host Spryker-based project. -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/metaways -originalArticleId: d686cbb5-5500-440e-85e1-149ff243aef8 -redirect_from: - - /v1/docs/metaways - - /v1/docs/en/metaways ---- - -## Partner Information - -[ABOUT METAWAYS](https://www.metaways.de/1/products/spryker-hosting/) -Metaways Infosystems stands for multidimensional managed services in hosting of business-critical web applications and e-commerce platforms. At Metaways, sophisticated and innovative e-commerce projects meet experienced system and software architects. Comprehensive technology knowledge and high method competence for scalable application operation, zero downtime deployments as well as automated system and software testing make Metaways a strong hosting partner for agencies and operators. - - YOUR ADVANTAGES: - -* Platform and application specialists from system and software engineering -* More than 15 years of experience in hosting enterprise e-commerce projects -* High identification with technologies, methods and processes in continuous delivery -* Dynamically scalable Spryker OS Commerce setups with optional content delivery in the cloud (AWS and Akamai) -* Services for system and software testing (CI, unit testing, automated testing and load and performance testing) -* Two ISO27001 certified data centers at the Hamburg site -* Regular contact persons for platform operation and service management -* Guaranteed SLA at application level ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/hosting-providers/root-360.md b/docs/scos/user/technology-partners/201811.0/hosting-providers/root-360.md deleted file mode 100644 index 0a8c9aae7aa..00000000000 --- a/docs/scos/user/technology-partners/201811.0/hosting-providers/root-360.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Root 360 -description: Integrate Root 360 hosting solution to host Spryker -based project -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/root360 -originalArticleId: c50efeef-e184-4187-92ca-6ab5c73ab64e -redirect_from: - - /v1/docs/root360 - - /v1/docs/en/root360 -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT ROOT360](https://www.root360.de/) - Root360 designs, implements and operates flexible „Managed Cloud Hosting" solutions based on Amazon Web Services (AWS). These solutions range from automatically scalable online shops to complex global portals. Managed Cloud Hosting from root360 combines professional cloud management with Amazon Web Services (AWS) cloud infrastructure. - -YOUR ADVANTAGES: - -* 24/7 Premium Management: monitoring, maintaining and supporting of cloud environments based on Amazon Web Services -* E-Commerce expertise: since our beginnings we have been specialized in E-Commerce hosting -* Flexibility: our solutions for cloud hosting are as flexible and individual as the business model of your company requires -* Compliance: hosting in a German data center, fully compliant with German data protection laws (BSI / C5) -* Speed and Performance: agile approach for short "time-to-market" as well as high performance for fast page load times -* Cost-effectiveness: pay-as-you-go and cost-optimized billing as well as low management costs ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - - - - - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/ab-tasty.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/ab-tasty.md deleted file mode 100644 index efb99ce9c03..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/ab-tasty.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: AB Tasty -description: Integrate AB Tasty into Spryker Commerce OS - a complete tool for website and conversion rate optimization, personalization, user engagement, and A/B and MVT testing. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ab-tasty -originalArticleId: d776c698-9891-4cc4-9924-9683b251426e -redirect_from: - - /v1/docs/ab-tasty - - /v1/docs/en/ab-tasty -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT ABTASTY](https://www.abtasty.com/) -All-in-one and Expandable Conversion Optimization Platform - -AB Tasty is a complete tool for website and conversion rate optimization, personalization, user engagement, and A/B and MVT testing. We serve as your digital lab, equipped with everything you need to create experiments that will help you to better understand your users and customer journeys so that you can create the clearest and most engaging user experience possible, ensuring your website performs well and yields the maximum results. - -YOUR ADVANTAGES: - -* All-in-one solution: strong tool and many years of experience -* Support and consulting by experienced conversion experts -* Efficient and easy-to-use visual editor -* Strong targeting and segmentation model -* Extensive and intuitive reporting -* Extensive and intuitive reporting -* Company with a reliable infrastructure - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/baqend.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/baqend.md deleted file mode 100644 index 5567e9cb65b..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/ab-testing-and-performance/baqend.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Baqend -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/baqend -originalArticleId: f7252f0b-37ca-4ec0-a816-570af2d2660f -redirect_from: - - /v1/docs/baqend - - /v1/docs/en/baqend -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/channelpilot-analytics.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/channelpilot-analytics.md deleted file mode 100644 index 91c43483c97..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/channelpilot-analytics.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: ChannelPilot Analytics -description: Integrate ChannelPilot Analytics - an innovative, cloud-based marketing solution for online merchants to increase their website traffic and reach. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/channelpilot-analytics -originalArticleId: c4a90051-e6d0-4a99-a4b4-25a84d87ca2e -redirect_from: - - /v1/docs/channelpilot-analytics - - /v1/docs/en/channelpilot-analytics -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT CHANNELPILOT](https://channelpilot.com) -ChannelPilot is an innovative, cloud-based marketing solution for online merchants to increase their website traffic and reach. Companies are able to present their products on over 2,000 sales channels across more than 40 countries, for example Google, Yahoo, Bing, affiliate networks, marketplaces such as Amazon and eBay, in addition to social media. The tool goes beyond listing by providing merchants with the means to analyse, optimise and control performance, channels and products based on actionable KPIs. Additional modules include market price analysis and dynamic pricing. - -YOUR ADVANTAGES: - -* Easy-to-use tool -* Automated product listing -* Targeted modulation of activities -* Full control over activities -* Reliable forecasts -* Single interface for each channel - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder.md deleted file mode 100644 index de815dc3ac8..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: FACT-Finder -description: Integrate FACT-Finder for on-site search, navigation, merchandising, personalization and product recommendations in Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/factfinder -originalArticleId: 0505d9f6-f0f9-4deb-ab6a-427a6eb87016 -redirect_from: - - /v1/docs/factfinder - - /v1/docs/en/factfinder - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/fact-finder/fact-finder.html -related: - - title: Installing and configuring FACT-Finder NG API - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html - - title: Using FACT-Finder search - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html - - title: Using FACT-Finder tracking - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html - - title: Exporting product data for FACT-Finder - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html - - title: Using FACT-Finder recommendation engine - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html - - title: Using FACT-Finder search suggestions - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html - - title: Using FACT-Finder campaigns - link: docs/scos/dev/technology-partner-guides/page.version/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html ---- - -## Partner Information - -[ABOUT FACT-FINDER](http://www.fact-finder.de/) -FACT-Finder is a software for online shops. We provide on-site search, navigation, merchandising, personalisation and product recommendations – with a measurable impact: A/B tests have proven that merchants experience a conversion uplift of 10-33 %. More than 1600 online shops use FACT-Finder, among them are brands like Media Markt, Distrelec, MyTheresa, Misterspex and Bergfreunde. - - -## FACT-Finder User Management - -FACT-Finder has its own User Management (permissions management) functions that allow you to set the authorizations for various modules at a fine, granular level. In this way, for example, individual users can only manage specific channels or check and maintain the associated configurations. -This system of permissions is based on roles that provide access to the specific modules. These roles can be allocated to the user directly or indirectly via groups. Groups allow complex roles to be allocated in bulk, without having to assign them individually to each user. - -## Related Developer guides - -* [Integrating FACT-Finder](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/integrating-fact-finder.html) -* [Installing and configuring FACT-Finder](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.html) -* [Installing and configuring FACT-Finder NG API](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.html) -* [Installing and configuring FACT-Finder web components](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder-web-components.html) -* [Using FACT-Finder campaigns](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/using-fact-finder-campaigns.html) -* [Using FACT-Finder recommendation engine](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/using-fact-finder-recommendation-engine.html) -* [Using FACT-Finder search](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.html) -* [Using FACT-Finder search suggestions](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search-suggestions.html) -* [Using FACT-Finder tracking](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/using-fact-finder-tracking.html) -* [Exporting product data for FACT-Finder](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.html) - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/haensel-ams.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/haensel-ams.md deleted file mode 100644 index 39418a4b914..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/haensel-ams.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Haensel AMS -description: Integrate Haensel AMS into Spryker project - a leading technology and data analytics service that offers you innovative and outstanding machine learning and big data solutions. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/haensel-ams -originalArticleId: 338f91cd-9864-476f-8c5b-b43fdd39c4d2 -redirect_from: - - /v1/docs/haensel-ams - - /v1/docs/en/haensel-ams -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT HANSEL AMS](https://haensel-ams.com/) -Haensel AMS – Advanced Mathematical Solutions – is a leading technology and data analytics boutique that offers you innovative and outstanding machine learning and big data solutions. We work for our international corporate clients at locations in Germany (Berlin) and the USA (New York). We provide and offer our clients customized solutions, data sovereignty lies with you, we do not collect data, we always bring the optimal Data Analytics solution to you. Our expertise focuses primarily on multi-channel attribution, customer journey analytics and pricing for a wide range of industries, including retail/e-commerce, travel/tourism, finance and logistics. -Our only internal KPI for success is that our solutions are fully used by YOU ! - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/mindlab.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/mindlab.md deleted file mode 100644 index 4a4bbc7bb86..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/mindlab.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Mindlab -description: Integrate Mindlab - a leading implementation of challenging analytics projects for websites, apps and intranet systems. -last_updated: Nov 4, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/mindlab -originalArticleId: 91eb7016-999d-4a92-9bbe-774957ab7b85 -redirect_from: - - /v1/docs/mindlab - - /v1/docs/en/mindlab -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT MINDLAB SOLUTIONS](http://www.mindlab.de/) -As a web analysis pioneer with 18 years of experience, Mindlab Solutions is one of the leading specialists in the implementation of challenging analytics projects for websites, apps and intranet systems. Germany's leading companies count on Mindlab when it comes to increasing the scope of digital applications, raising customer satisfaction and conversion rates, and evaluating the efficiency of digitally transformed processes. -{% info_block infoBox "Info" %} -This integration is built and supported by our technology partner [Mindlab Solutions](http://www.mindlab.de). -{% endinfo_block %} - -## Mindlab Documentation -Spryker customers can easily connect to Mindlab and access comprehensive Mindlab e-commerce reporting. On request, this can be individually adapted to customer-specific questions. The Mindlab analytics solution grows long term with customer requirements and supports individual business models. - -For successful e-commerce strategies in today's world, meaningful data analysis is often the only way to continually improve the platform. For this, they need a suitable analytics solution, that will harmonize with the technology and tailor to specific business models. - -## Mindlab Download and Support - -For downloads, support and additional information send a message to: [info@mindlab.de](mailto:info@mindlab.de) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/minubo.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/minubo.md deleted file mode 100644 index 45e2e590335..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/analytics/minubo.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Minubo -description: Integrate Minubo - infrastructure and processes provider for a fast-growing omnichannel business. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/minubo -originalArticleId: 8731897d-d425-4c95-8273-6fc26e8e7196 -redirect_from: - - /v1/docs/minubo - - /v1/docs/en/minubo -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - [ABOUT MINUBO](https://www.minubo.com/) -Minubo is the Commerce Intelligence Company for omni-channel brands and retailers – solving the top 3 challenges that commerce companies face in becoming data-driven in an omni-channel environment: strategy, people and technology. Fed by a full omni-channel data base, minubo's Analytics & Insights App enables both strategic and operational roles to make better, data-driven decisions – every day. Alongside that, minubo's professional services team helps building the needed infrastructure and processes for a fast-growing omni-channel business. Our customer portfolio includes among others LUSH North America, Scotch & Soda und Intersport. - -YOUR ADVANTAGES: - -* Out-of-the-box integration of all relevant data sources into one omni-channel data warehouse -* Low cost of ownership: The solution is hosted in the cloud and the high level of standardization enables the immediate implementation of a data-driven working environment -* Easy-to-use analytics tools for every user group – dashboarding, customer segmentation, Web Pivot for ad-hoc analyses, best practice reports, proaktive insights und action recommendation among others -* Standardized commerce data model based on industry best practices enables a data-driven working environment from day one -* The minubo data feeds and already developed integrations to third-party systems enables flexible use of the data -* Implementation and enablement is conducted by our in-house advisory and support team - -## Related Developer guides - -* [Installing and configuring Minubo](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/analytics/installing-and-integrating-minubo.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/dotdigital.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/dotdigital.md deleted file mode 100644 index 961f4161279..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/dotdigital.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Dotdigital -description: Connect customer data, surface powerful insights, and automate intelligent messages across email, SMS, social, and more by integrating Dotdigital into Spryker Commerce OS. -last_updated: Nov 4, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/dotdigital -originalArticleId: d1ea88a3-32d5-4942-b294-506938762348 -redirect_from: - - /v1/docs/dotdigital - - /v1/docs/en/dotdigital -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT DOTDIGITAL](https://spryker.com/industry-partner/dotdigital/) - -Acquire smarter. Convert faster. Deliver big. - -Dotdigital is a leader in customer engagement technology. Dotdigital’s Engagement Cloud is the platform of choice for businesses seeking to engage customers across all touchpoints. The platform’s features empower 4,000+ brands across 150 countries to acquire, convert, and retain customers. Users can connect customer data, surface powerful insights, and automate intelligent messages across email, SMS, social, and more. dotdigital is a global company with over 350 employees, serving companies of all sizes and in all verticals for over 20 years. - -YOUR ADVANTAGES: - -* Maximize customer engagement with omnichannel marketing -* Communicate across a variety of channels – Email, SMS, social, push notifications, web and more -* Design stylish campaigns effortlessly with our drag-and-drop tool -* Connect and store contact, product and order data in one place to better leverage it across your marketing touchpoints -* Use insights to craft dynamic content blocks and ensure relevancy -* Segment builder gives you the flexibility to create powerful audience segments based on preferences or any other shared attributes -* Boost sales and drive interest with AI-powered product recommendations -* Extend brand reach with push messages and re-targeting ads -* Leverage our automation builder to create multichannel lifecycle programs -* Track preferences, engagements, ROI, and more -* Benefit from dedicated support and onboarding teams - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/episerver.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/episerver.md deleted file mode 100644 index 08a2b359299..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/episerver.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Episerver -description: Create a standout experience for customers that unifies digital content, commerce, and marketing in one platform, including omnichannel solutions for smart personalization and intelligent campaigns by integrating Episerver into Spryker Commerce OS. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/episerver -originalArticleId: 2578a60c-34f2-4c28-9c48-af5efaec0e15 -redirect_from: - - /v1/docs/episerver - - /v1/docs/en/episerver - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/episerver/episerver.html -related: - - title: Episerver - Installation and Configuration - link: docs/scos/user/technology-partners/page.version/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.html ---- - -## Partner Information -[ABOUT EPISERVER](https://www.episerver.com/) -Episerver empowers digital leaders to easily create standout experiences for customers – everywhere they engage, and always with measurable business results. The Episerver Digital Experience Cloud™ unifies digital content, commerce and marketing in one platform, including omnichannel solutions for smart personalization and intelligent campaigns. Founded in 1994, Episerver has offices in the US, UK, Sweden, Australia, Germany, Denmark, Finland, Norway, the Netherlands, Spain, South Africa, Singapore, Vietnam and the UAE. -Episerver Intelligent Campaigns is a suite of intelligent marketing automation products. It helps already more than 1.300 companies to quickly create, automate and personalize campaigns across all channels. This includes web, mobile, email, text, social and the Internet of Things. The solution uses artificial intelligence and customer data to send and personalize content based on real-time behavior. Intelligent Campaign automatically tracks and analyzes every customer visit, click, email and purchase, to provide valuable insights about customers and segments. By reaching out to customers at exactly the right time, with exactly the right content, you can quickly increase leads, conversions and revenue. - -YOUR ADVANTAGES: - -* Omnichannel campaigns: Episerver Campaign helps you easily create, automate and personalize campaigns across all channels. -* Powered by AI: Personalize every experience based on artificial intelligence, customer data and real-time behavior. -* Increased engagement: Deliver seamless experiences, get smarter segmentation, and increase engagement and conversions. - ---- - -## Related Developer guides - -* [Episerver API](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/customer-communication/episerver/episerver-api.html) -* [Episerver order reference commands](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/customer-communication/episerver/episerver-order-reference-commands.html) -* [Installing and configuring Episerver](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/customer-communication/episerver/installing-and-configuring-episerver.html) -* [Integrating Episerver](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/customer-communication/episerver/integrating-episerver.html) - - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/inxmail.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/inxmail.md deleted file mode 100644 index c28a957c83f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-communication/inxmail.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: Inxmail -description: Support customers and partners with fantastic email marketing service and grow their potential in a targeted way by integrating Inxmail into spryker Commerce OS. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/inxmail -originalArticleId: cc087e2a-8830-4fe4-8f22-ef033476a014 -redirect_from: - - /v1/docs/inxmail - - /v1/docs/en/inxmail -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT INXMAIL](https://www.inxmail.com) -With nearly 20 years of experience, we are a pioneer in software development for email marketing. We support our customers and partners with fantastic service and grow their potential in a targeted way. In doing so, we draw upon a broad range of technology and services.Our solutions are influenced by our strong relationships with customers. We flexibly adapt our solutions to meet specific customer needs. Expertise that pays off: We have been implementing successful email marketing and multichannel campaigns for over 2,000 customers in more than 20 countries since 1999. - -YOUR ADVANTAGES: - -* Broad portfolio of technology, service and know-how - from the standard solution to individual solution packages -* E-mail delivery solutions for highly personalized newsletters, transaction mails, and automated e-mail campaigns -* Delivery security via whitelisted mail server even with high mail volumes -* Powerful interfaces for seamless integration into existing system landscapes -* Software made and hosted in Germany -* DSGVO-compliant e-mail marketing -* Co-founder and member of the Certified Senders Alliance (CSA) -* Award Winning: Competent, Fast and Reliable Customer Service and Support -* Personal advice and contact person - -## Installation - -To install Inxmail run the command in the console: -```php - composer require spryker-eco/inxmail:1.0.0 - ``` - -## Configuration - -To set up the Inxmail initial configuration, use the credentials you received from your Inxmail server. Space id, key id and secret you can get from Settings → API keys panel on Inxmail server: -```php - $config[InxmailConstants::API_EVENT_URL] = ''; - $config[InxmailConstants::KEY_ID] = ''; - $config[InxmailConstants::SECRET] = ''; - ``` - -Event names depend on your events names on Inxmail server: -```php - $config[InxmailConstants::EVENT_CUSTOMER_REGISTRATION] = ''; - $config[InxmailConstants::EVENT_CUSTOMER_RESET_PASSWORD] = ''; - $config[InxmailConstants::EVENT_ORDER_NEW] = ''; - $config[InxmailConstants::EVENT_ORDER_SHIPPING_CONFIRMATION] = ''; - $config[InxmailConstants::EVENT_ORDER_CANCELLED] = ''; - $config[InxmailConstants::EVENT_ORDER_PAYMENT_IS_NOT_RECEIVED] = ''; - ``` - -## Integration - -### New customer registration event - -Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin`. This plugin implements `PostCustomerRegistrationPluginInterface` and can be used in `\Pyz\Zed\Customer\CustomerDependencyProvider::getPostCustomerRegistrationPlugins.` - -```php - ... - use SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailPostCustomerRegistrationPlugin - ... - - /** - * @return \Spryker\Zed\CustomerExtension\Dependency\Plugin\PostCustomerRegistrationPluginInterface[] - */ - protected function getPostCustomerRegistrationPlugins(): array - { - return [ - ... - new InxmailPostCustomerRegistrationPlugin(), - ... - ]; - } - ``` - -### The customer asked to reset password event - -Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin`. This plugin implements `MailTypePluginInterface` and can be used in `\Pyz\Zed\Mail\MailDependencyProvider::provideBusinessLayerDependencies` - -```php - ... - use \SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\InxmailCustomerRestorePasswordMailTypePlugin; - ... - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Kernel\Container - */ - public function provideBusinessLayerDependencies(Container $container) - { - $container = parent::provideBusinessLayerDependencies($container); - - $container->extend(self::MAIL_TYPE_COLLECTION, function (MailTypeCollectionAddInterface $mailCollection) { - $mailCollection - ... - ->add(new InxmailCustomerRestorePasswordMailTypePlugin()) - ... - - return $mailCollection; - }); - - ... - - return $container; - } - ``` - -### Order Referenced Commands - -Inxmail module has four different commands: - -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailOrderCanceledPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailPaymentNotReceivedPlugin` -* `\SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailShippingConfirmationPlugin` - -You can use this commands in `\Pyz\Zed\Oms\OmsDependencyProvider::getCommandPlugins` -```php - ... - use SprykerEco\Zed\Inxmail\Communication\Plugin\Oms\Command\InxmailNewOrderPlugin; - ... - - /** - * @param \Spryker\Zed\Kernel\Container $container - * - * @return \Spryker\Zed\Oms\Communication\Plugin\Oms\Command\CommandCollection - */ - protected function getCommandPlugins(Container $container) - { - $collection = parent::getCommandPlugins($container); - - ... - $collection->add(new InxmailNewOrderPlugin(), 'Inxmail/SendNewOrderRequest'); - ... - - return $collection; - } - ``` - -After that you are ready to use commands in OMS setup: -```php - - - - - - - - - - ``` - -## API Requests - -`\SprykerEco\Zed\Inxmail\Business\Api\Adapter\EventAdapter` which extend `\SprykerEco\Zed\Inxmail\Business\Api\Adapter\AbstractAdapter` contains all needed data for sending data to Inxmail for events. - -It sends the request via ` \Generated\Shared\Transfer\InxmailRequestTransfer` -```xml - - - - - - - - - - - ``` - -The payload for customer loads from ` \SprykerEco\Zed\Inxmail\Business\Mapper\Customer\AbstractCustomerMapper::getPayload` and for order from ` \SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper`. Abstract classes can be extended and changed in ` \SprykerEco\Zed\Inxmail\Business\InxmailBusinessFactory.` - -For right URL's to images in the email body you should extend `\SprykerEco\Zed\Inxmail\Business\Mapper\Order\AbstractOrderMapper` and implement protected method `getImageItemLink(ArrayObject $images)`. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/namogoo.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/namogoo.md deleted file mode 100644 index 387bca4d48b..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/namogoo.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Namogoo -description: Identify and block unauthorized ads injected into consumer web sessions that divert customers to competitor offerings by integrating Namogoo into Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/namogoo -originalArticleId: 3823bc4e-5a18-4d04-9e18-b571949be34a -redirect_from: - - /v1/docs/namogoo - - /v1/docs/en/namogoo -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT NAMOGOO](https://www.namogoo.com/) -Preventing Online Journey Hijacking and Boosting eCommerce KPIs - -Namogoo is pioneering the market of customer hijacking prevention. Namogoo’s disruptive technology identifies and blocks unauthorized ads injected into consumer web sessions that divert customers to competitor offerings, hurting conversion rates and damaging brand equity. By eliminating these invasive promotions, companies who use Namogoo preserve a distraction-free online customer experience and consistently increase conversions by 2-5%. - -YOUR ADVANTAGES: - -* Immediate Conversion Uplift of 2-5% -* Improve cart abandonment and customer retention KPIs -* Protect brand equity and customer experience -* Easy deployment, integrated reporting, zero maintenance -* Cloud-based platform uses AI and machine learning - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/trustpilot.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/trustpilot.md deleted file mode 100644 index 14ca1d8b6e7..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/trustpilot.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Trustpilot -description: Integrate Trustpilot that gives people a place to share and discover reviews of businesses, and we give every company the tools to turn consumer feedback into business results -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/trustpilot -originalArticleId: 0b4fa357-6919-4d18-bc44-b9804d6e4e43 -redirect_from: - - /v1/docs/trustpilot - - /v1/docs/en/trustpilot -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT TRUSTPILOT](https://de.business.trustpilot.com/) -The world’s most powerful review platform - -Trustpilot is a leading independent review platform – free and open to all. With more than 550 million reviews of over 260,000 domains, Trustpilot gives people a place to share and discover reviews of businesses, and we give every company the tools to turn consumer feedback into business results. Our mission is to bring people and businesses closer together to create ever improving experiences for everyone. Trustpilot reviews are seen more than 2.5 billion times each month by consumers worldwide. With offices in Copenhagen, London, New York, Denver, Berlin, Melbourne and Vilnius, Trustpilot’s 700 employees represent more than 40 different nationalities. For more information, visit https://www.trustpilot.com/ - -YOUR ADVANTAGES: - -* Trustpilot creates the trust that makes potential customers paying customers -* Trustpilot generates traffic, increases click-through rates, lowers bounce rates and increases conversion rates -* Trustpilot increases domain presence in organic search results (Google, Bing, Yahoo) -* Trustpilot can help improve Google Adwords performance (CTR and CVR) -* Trustpilot provides improved customer understanding and insights - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/zenloop.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/zenloop.md deleted file mode 100644 index e21633959d3..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/customer-retention-and-loyalty/zenloop.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Zenloop -description: Collect customer feedback automatically via multiple channels by integrating Zenlopp into Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/zenloop -originalArticleId: 8bb28660-340d-48a4-a43b-8b990f6a6ea4 -redirect_from: - - /v1/docs/zenloop - - /v1/docs/en/zenloop -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT ZENLOOP](https://www.zenloop.com/en) - -Automate customer retention - -At zenloop, the focus is on the customer – the SaaS platform for customer retention and winback based on the Net Promoter System® (NPS). Companies such as AboutYou, Deichmann and ShopApotheke use zenloop to ask the right questions at the right time and collect customer feedback automatically via multiple channels. The platform uses artificial intelligence to process this feedback and subsequently identifies reasons for customer churn as well as internal weak spots. As a result, zenloop creates an individual communication strategy for every (un)satisfied customers and paves the way to optimized CX, strong customer loyalty and increased CLV. - -YOUR ADVANTAGES: - -* collect actionable feedback at high response rates up to 25-30% -* excite and engage your organization with feedback livestreams -* identify immediate insights and trends with Smart Labels (text analytics) -* delight promoters and critics with personalized replies to reduce churn -* empower improvements - route feedback alerts to colleagues - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/8select.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/8select.md deleted file mode 100644 index 67c580d7af4..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/8select.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: 8Select -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/8select -originalArticleId: 04487338-af0a-476f-9e9f-933ea981bc46 -redirect_from: - - /v1/docs/8select - - /v1/docs/en/8select -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/contentserv.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/contentserv.md deleted file mode 100644 index 931d2d38653..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/contentserv.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Contentserv -last_updated: Oct 30, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/contentserv-1 -originalArticleId: 65523fe7-aa8d-44cd-b81c-6a28d8693846 -redirect_from: - - /v1/docs/contentserv-1 - - /v1/docs/en/contentserv-1 ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda.md deleted file mode 100644 index 6b7ea1f5425..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Econda -description: Store the data, enrich it and provide instant reports by integrating Econda into Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/econda -originalArticleId: aea56df3-6040-40c2-bdda-399ef166fee9 -redirect_from: - - /v1/docs/econda - - /v1/docs/en/econda - - /docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/econda/econda.html ---- - -## Partner Information - -[ABOUT ECONDA](https://www.econda.de/) -High performance in E-commerce is our daily bread - yours too? Econda collects billions of E-commerce data from thousands of online shops for more than 1000 customers throughout the world, on a daily basis. We store the data, enrich it and provide instant reports – we compile the user profile and product recommendations and return this to the online shops in real time. Of course all in line with data protection. We manage the flood of data for our customers using the latest methods and cutting edge technology, helping them to capitalize on their E-commerce data. - -YOUR ADVANTAGES: - -* Spryker Industry Partner – interface to Spryker -* data ownership with customers,TÜV certified data protection, according to the EU data protection regulations (in force as of 05/2018) and eprivacy regulation -* web and app data acquisitions, Tag Management -* cross-channel and cross-device tracking, analyses and personalization -* data imports and exports from third party systems with automated matching -* all in real time: analyses, recommendations and personalization -* item-2-item recommendations, thanks to the most innovative data mining and machine learning process (up to 25% of turnover share with good recommendations) -* personalization and individualization with the very latest KI methods (up to 40% increase in turnover share, an increase of up to 800% in mailing success.) - -## Related Developer guides - -* [Installing Econda](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/installing-econda.html) -* [Integrating Econda](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda.html) -* [Integrating Econda front end](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda-front-end.html) -* [Integrating Econda cross-selling](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/integrating-econda-cross-selling.html) -* [Adding the Econda tracking code](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/adding-the-econda-tracking-code.html) -* [Exporting Econda data](/docs/scos/dev/technology-partner-guides/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/exporting-econda-data.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/nosto.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/nosto.md deleted file mode 100644 index ff1021d025f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/nosto.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Nosto -description: Empower retailers to build, launch and optimize 1-1 omnichannel marketing campaigns and digital experiences without the need for dedicated IT resources or a lengthy implementation process by integrating Nosto into the Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/nosto -originalArticleId: df39409c-b01d-4d82-af73-d52a5ba0dc1d -redirect_from: - - /v1/docs/nosto - - /v1/docs/en/nosto -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT NOSTO](https://www.nosto.com/) - -Powerful Personalization. Made Easy. - -Nosto enables retailers to deliver personalized digital shopping experiences at every touch point, across every device. An AI-Powered Personalization Platform designed for ease of use, Nosto empowers retailers to build, launch and optimize 1:1 omnichannel marketing campaigns and digital experiences without the need for dedicated IT resources or a lengthy -implementation process. Over 2,500 brands in over 100 countries use Nosto to grow their business and delight their customers. Nosto supports its clients from its offices in Helsinki, Berlin, Stockholm, London, New York, Los Angeles and Paris. - -YOUR ADVANTAGES: - -* No complicated back-end integration or product feed needed for technical setup and deployment -* Products are automatically indexed (faster go-to-market) -* Beautifully-designed and intuitive UI -* Ecommerce professionals can easily access and use different marketing technologies -* Proprietary machine learning algorithms trained solely on ecommerce data, analyze both online and offline transactional and behavioral data -* Highly scalable infrastructure capable of dealing with 3Mil concurrent sessions in real time -* Integrates seamlessly with leading ecommerce technology providers and platforms -* Segments can be created individually and via Nosto and directly exported to the Facebook, ESP, Google accounts -* Product recommendations can be used in pop-ups, emails and Facebook ads -* Extensive technical onboarding, strong support, in-house frontend design team - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/trbo.md b/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/trbo.md deleted file mode 100644 index c6cc3c15100..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketing-and-conversion/personalization-and-cross-selling/trbo.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: trbo -description: Enable online shops and websites to address visitors individually - onsite, in real-time and fully automated by integrating trbo into the Spryker Commerce OS. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/trbo -originalArticleId: 755a0b9c-7bfe-41b7-aa69-db59ebb5759b -redirect_from: - - /v1/docs/trbo - - /v1/docs/en/trbo -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT TRBO](https://www.trbo.com/en/) - -Onsite. Realtime. Smart.trbo GmbH is a Munich-based technology company founded in 2013. With its cloud-based communication tool, the company enables online shops and websites to address visitors individually - onsite, in real-time and fully automated. A self-learning algorithm analyzes user behavior based on more than 50 visitor characteristics. This data then allows a targeted delivery of various layers in the design of the online presence, which demonstrably optimize the shopping experience of website visitors. For website operators this means: increased user engagement, lower bounce rates, better conversion rates, fuller shopping baskets and thus more turnover. trbo's customers include airline holidays, Buffalo, Galeria Kaufhof, L'Oréal, Limango, Lodenfrey, Medion, mydays, Rose Bikes and Thomas Cook AG. trbo GmbH is run by Felix Schirl. - -YOUR ADVANTAGES: - -* Personalized and targeted user approach - via mobile, tablet and desktop -* Analysis of more than 50 visitor characteristics in real-time -* Self-optimizing and data-supported algorithm -* Individualized layer content in the design of the web shop and tailored to its goals -* Statistically valid A/B testing and multivariant testing directly in the trbo system -* Intuitive tool & managed service enable fast implementation -* Success cases: airberlin holidays (now airline holidays) -* Newsletter subscription increased by 152 percent -* ROSE Bikes - Bounce Rate reduced by 9.5 percent - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/marketplace-integrations/channelpilot-marketplace.md b/docs/scos/user/technology-partners/201811.0/marketplace-integrations/channelpilot-marketplace.md deleted file mode 100644 index 516e8bbf0ef..00000000000 --- a/docs/scos/user/technology-partners/201811.0/marketplace-integrations/channelpilot-marketplace.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: ChannelPilot Marketplace -description: Provide merchants with the means to analyze, optimize and control performance, channels, and products based on actionable KPIs by integrating Channelpilot into the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/channelpilot -originalArticleId: 9a90fd1f-24b2-4ba1-8b17-041d9fc324df -redirect_from: - - /v1/docs/channelpilot - - /v1/docs/en/channelpilot -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT CHANNELPILOT](https://channelpilot.com) -ChannelPilot is an innovative, cloud-based marketing solution for online merchants to increase their website traffic and reach. Companies are able to present their products on over 2,000 sales channels across more than 40 countries, for example Google, Yahoo, Bing, affiliate networks, marketplaces such as Amazon and eBay, in addition to social media. The tool goes beyond listing by providing merchants with the means to analyse, optimise and control performance, channels and products based on actionable KPIs. Additional modules include market price analysis and dynamic pricing. - -YOUR ADVANTAGES: - -* Easy-to-use tool -* Automated product listing -* Targeted modulation of activities -* Full control over activities -* Reliable forecasts -* Single interface for each channel - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/common-solutions.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/common-solutions.md deleted file mode 100644 index 36a2cde61fb..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/common-solutions.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: common solutions -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/common-solutions -originalArticleId: 2bc9ab8f-7b89-4386-926c-e53e8b0609a5 -redirect_from: - - /v1/docs/common-solutions - - /v1/docs/en/common-solutions -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/data-virtuality.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/data-virtuality.md deleted file mode 100644 index 6e21b35dd6f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/data-virtuality.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Data Virtuality -description: Benefit from reducing data integration effort by 80% and gaining faster business insights by integrating Data Virtuality into the Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/datavirtuality -originalArticleId: 39d96725-0d2a-406b-a338-2701ae0f11bb -redirect_from: - - /v1/docs/datavirtuality - - /v1/docs/en/datavirtuality -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT DATA VIRTUALITY](https://datavirtuality.com/) -Data Virtuality successfully became the fastest growing big data start-up in Germany with offices in Leipzig, Frankfurt am Main and San Francisco.The Data Virtuality Platform enables detailed insights from real time and historical data with any BI tool. By combining data virtualization with an automated ETL engine, customers benefit from reducing their data integration effort by 80% and gaining faster business insights. Make your decisions based on facts. Become data driven while using and accessing all your data from multiple data sources! And everything just by using SQL. - -YOUR ADVANTAGES: - -* Saves resources by 80%. -* One programming language – SQL. -* +150 pre-built connectors for data sources and BI tools. -* Set up time for solutions in just one day. -* High performance marketing automation. -* Grows and changes anytime with customer requirements. -* Endless compatibility with any data infrastructure. -* One platform for BI starters, startups to enterprises. -* Availability of real-time and persisted data. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/loggly.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/loggly.md deleted file mode 100644 index 0ae7e766e6d..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/loggly.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Loggly -description: Read log messages from a queue and send the messages via https by integrating Loggly into the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/loggly-queue -originalArticleId: 4f755928-a1ea-453c-a693-361004a2a574 -redirect_from: - - /v1/docs/loggly-queue - - /v1/docs/en/loggly-queue -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -Loggly is a SaaS solution for log data management. With Loggly’s log management software, you’re able to bring logs from the depths of your entire infrastructure to one place where you can track activity and analyze trends. - -## Related Developer guides - -* [Configuring Loggly](/docs/scos/dev/technology-partner-guides/{{page.version}}/operational-tools-monitoring-legal-etc/loggly/configuring-loggly.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration, contact us via submitting the form. - -
      diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/mindcurv.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/mindcurv.md deleted file mode 100644 index 0969ada6743..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/mindcurv.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Mindcurv -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/mindcurv -originalArticleId: b91b89cd-0dbd-4464-b943-5f10a6b0c4c0 -redirect_from: - - /v1/docs/mindcurv - - /v1/docs/en/mindcurv -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/new-relic.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/new-relic.md deleted file mode 100644 index 97332ea9d2f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/new-relic.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: New Relic -description: Monitor the performance and health of your application by integrating New Relic into the Spryker Commerce OS. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/new-relic -originalArticleId: 9b944299-4210-43f0-9761-c7c2fdac5f77 -redirect_from: - - /v1/docs/new-relic - - /v1/docs/en/new-relic -related: - - title: Migration Guide - Session - link: docs/scos/dev/module-migration-guides/migration-guide-session.html ---- - -Spryker enables integration with New Relic for performance monitoring. New Relic contains a set of powerful features that help you monitor the performance and health of your application. - -## Related Developer guides - -* [Installing and configuring New Relic with Vagrant](/docs/scos/dev/technology-partner-guides/{{page.version}}/operational-tools-monitoring-legal-etc/new-relic/installing-and-configuring-new-relic–with–vagrant.html) -* [Configuring New Relic logging](/docs/scos/dev/technology-partner-guides/{{page.version}}/operational-tools-monitoring-legal-etc/new-relic/configuring-new-relic-logging.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/plusserver.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/plusserver.md deleted file mode 100644 index 02f6a34625c..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/plusserver.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: PlusServer -description: Monitor the performance of your Spryker Commerce OS by integrating PlusServer into your online shop. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/plusserver -originalArticleId: d5e547b4-d138-4043-89b0-ec60c2ef230b -redirect_from: - - /v1/docs/plusserver - - /v1/docs/en/plusserver -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT PLUSSERVER](https://www.plusserver.com/) -PlusServer GmbH is the leading managed cloud provider in Germany, Austria and Switzerland. As a cloud optimizer, they offer flexible, reliable and efficient hybrid cloud solutions for medium-sized and large companies from a single source. Thanks to many years of cooperation with leading companies from trade, industry and other sectors, PlusServer GmbH have a deep understanding of the respective trends and challenges. They advise our customers in the choice of architecture and orchestrate all relevant infrastructures to an optimal hybrid cloud environment. They are technology-independent and technically flexible and include dedicated infrastructures, public and private cloud solutions as well as offers from Hyperscalers. - -YOUR ADVANTAGES: - -* Highest performance through optimized solutions -* Proactive monitoring and 24/7 support -* Flexible scalability, e.g. for peak loads -* Experts certified by shop software manufacturers -* 99.998% average availability in 2017 -* German data protection and secure credit card payment -* Integrated solutions for IoT and Industry 4.0 -* Comprehensive advice on digitalization -* Hybrid infrastructures from "on premises" to the cloud -* Scalable solutions for big data scenarios -* Partner network of IoT specialists ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/proclane.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/proclane.md deleted file mode 100644 index 8c216276017..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/proclane.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Proclane -description: Connect SAP and other ERP systems with your shop application by integrating Proclane into the Spryker Commerce OS. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/proclane -originalArticleId: 118b7f49-11ae-4bde-bb52-c0c1442f015a -redirect_from: - - /v1/docs/proclane - - /v1/docs/en/proclane -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT PROCLANE](https://proclane.com/) - -PROCLANE Integration is a leading German integration house and specializes in connecting. -SAP and other ERP systems to eCommerce solutions, such as those required for real-time processes in B2B shops. The integration platform "PROCLANE IntegrationMan" already provides around 80% of all processes for the SAP connection of online shops as standard. -Integration projects can therefore be implemented very efficiently. In addition to connecting ERP systems to online shops, IntegrationMan can also be used to flexibly integrate PIM, CRM or payment systems. - -YOUR ADVANTAGES: - -* Standardized solution for many requirements in ERP / Spryker integration -* Optimization of all internal data and processes for eCommerce -* Fully automated transactions -* Automatic and secure data transmission -* Easy entry, flexibly expandable -* Marketplace and logistics connection possible -* Live monitoring and error handling -* Increased efficiency and cost savings -* SAP-certified solution - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/shopmacher.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/shopmacher.md deleted file mode 100644 index ab5c1b69e40..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/shopmacher.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Shopmacher -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/shopmacher -originalArticleId: 7b6188ac-7009-427d-a9f3-ff99fc39d287 -redirect_from: - - /v1/docs/shopmacher - - /v1/docs/en/shopmacher -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/tideways.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/tideways.md deleted file mode 100644 index ace2e4dfd95..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/tideways.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Tideways -description: Track and analyze errors and background processed by integrating Tideways intot he Spryker Commerce OS. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/tideways -originalArticleId: ddba1cad-b7bc-4bfb-875c-a76edc86a453 -redirect_from: - - /v1/docs/tideways - - /v1/docs/en/tideways -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT TIDEWAYS](https://tideways.com/) -Monitoring, Profiling and Exception Tracking. Tideways is an Application-Performance-Monitoring (APM) solution with built-in profiler and automated error tracking. All services are tailor-made for E-commerce systems like Spryker. Your customers are looking for a fast and painless online shopping experiences. Tideways helps you to create that experience through detailed insights about your shop's performance from fronted, checkout and backend to background processes. In addition to a weekly report and overview over your performance, you have the possibility to analyse single database queries or functions in detail. - -YOUR ADVANTAGES -* smooth integration into Spryker software with automatic analysis (no further installation or code changes required) -* weekly reporting to detect tendencies within your performance -* continuous monitoring with intelligent data segmentation (shops, languages, backend or frontend...) -* automated regularly profiling with detailed performance data of outlier requests -* multiple options to prioritize profiling data based on your own criteria -* automated recognition of errors with precise and detailed leads to causes and bugfixing tips - -## Related Developer guides - -* [Installing and configuring Tideways](/docs/scos/dev/technology-partner-guides/{{page.version}}/operational-tools-monitoring-legal-etc/installing-and-configuring-tideways-with-vagrant.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- - -For further information on this partner and integration into Spryker, please contact us. - -
      diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/usercentrics.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/usercentrics.md deleted file mode 100644 index 8ee9201723b..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/usercentrics.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Usercentrics -description: Enable your business to collect, manage and optimize user consents across all digital such as websites or apps by integrating Usercentrics into the Spryker Commerce OS. -last_updated: Oct 30, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/usercentrics -originalArticleId: eea98eaa-4f43-4507-980d-9e83c3f39c94 -redirect_from: - - /v1/docs/usercentrics - - /v1/docs/en/usercentrics -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT USERCENTRICS](https://usercentrics.com/) -From Consent To Conversion - -Headquartered in the heart of Munich, Usercentrics’ vision is to create a new infrastructure for user consent across data architectures - making privacy practical. As a leader in the area of Consent Management Platforms (CMPs), the SaaS solution enables businesses to collect, manage and optimize user consents across all digital channels such as websites or apps. Thus, compliance with current and future international privacy regulations such as GDPR, ePrivacy and CCPA can be ensured. Since its founding in late 2017, the company has grown dramatically and now counts hundreds of leading organizations as customers. Usercentrics is backed by premier venture capital investors including ALSTIN, Reimann Investors and Cavalry Ventures. - -YOUR ADVANTAGES: - -* Bring your legal requirements in harmony with your marketing strategy (A/B -* Testing,...) -* 100% Customization (design) -* Legal flexibility -* Optimize your opt-in rates -* German-speaking support from Munich / headquaters in Munich - - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/vshn.md b/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/vshn.md deleted file mode 100644 index d1d0bd72dc2..00000000000 --- a/docs/scos/user/technology-partners/201811.0/operational-tools-monitoring-legal-etc/vshn.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: VSHN -description: Run your applications agile and 24/7 on any infrastructure by integrating VSHN into the Spryker Commerce OS. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/vshn -originalArticleId: b498f6f9-2d15-4991-a0af-c454f9458214 -redirect_from: - - /v1/docs/vshn - - /v1/docs/en/vshn -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT VSHN](https://vshn.ch/en/) -The DevOps Company - -VSHN AG is Switzerland’s leading DevOps, Docker, Kubernetes, Openshift and 24/7 cloud operations partner. VSHN helps software developers to run their applications agile and 24/7 on any infrastructure while relieving the burden on IT operations. - -Since 2014 we support 300 customers & partners operating over 900 servers in 20 different clouds and on-premises with more than 62000 combined monitored services. We are ISO 27001 certified and work in accordance with the strict FINMA guidelines to ensure the security and confidentiality of customer data at all times. We also created APPUiO.ch, the Swiss container platform based on Red Hat OpenShift, where we provide managed services on a Platform-as-a-Service (PaaS) on any infrastructure: public, dedicated, private and on-premises. - -YOUR ADVANTAGES: - -* Your partner for DevOps, Docker, Kubernetes, Openshift and 24/7 cloud operations partner & application operation -* Our automation accelerates development, deployment and operations processes -* Shorter time to market due to proven technologies like Git and Docker -* APPUiO.ch - the Swiss container platform based on Red Hat OpenShift as Managed Service -* Our processes are ISO 27001 certified and we operate according to the Swiss banking standards -* Our team of experts is available to you. 24/7 in case of emergency. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/order-management-erpoms/tradebyte.md b/docs/scos/user/technology-partners/201811.0/order-management-erpoms/tradebyte.md deleted file mode 100644 index 6a7f0b73aca..00000000000 --- a/docs/scos/user/technology-partners/201811.0/order-management-erpoms/tradebyte.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Tradebyte -description: Offer SaaS solutions for the electronic exchange of data amongst manufacturers, brands, retailers, and marketplaces by integrating Tradebyte into the Spryker Commerce OS. -last_updated: Jan 17, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/tradebyte -originalArticleId: 849e34c4-008c-44a3-96b0-d3d3e06ea1f0 -redirect_from: - - /v1/docs/tradebyte - - /v1/docs/en/tradebyte -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT TRADEBYTE](https://www.tradebyte.com/) -Cycle of e-commerce - -Tradebyte operates a modern ecosystem for digital commerce and offers SaaS solutions (TB.One, TB.PIM and TB.Market) for the electronic exchange of data amongst manufacturers, brands, retailers and marketplaces. More than 650 vendors, such as Guess, Hallhuber and Christ, and more than 90 retailers and marketplaces, such as Amazon, Otto and Zalando, in 17 countries are connected through the Tradebyte ecosystem. Since May 2016, Tradebyte has been a subsidiary of Zalando SE. - -YOUR ADVANATAGES: - -* The Tradebyte ecosystem provides answers to the challenges of the digital transformation in commerce and enables the seamless interconnection of manufacturers, traders and retailers in the digital supply chain. -* Consistent and standardised exchange formats and transmission paths – supported end-to- end by Tradebyte – enable a fully-automatic and always synchronous data flow. -* Highly-scalable SaaS solutions building on the modern ecosystem, provide the necessary functions out-of-the-box. -* The Tradebyte ecosystem overcomes barriers and saves resources with a short time-to-market. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/adyen.md b/docs/scos/user/technology-partners/201811.0/payment-partners/adyen.md deleted file mode 100644 index 948370baef2..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/adyen.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Payment Integration - Adyen -description: Integrate Adyen into the Spryker Commerce OS to accept e-commerce, mobile, and point-of-sale payments. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/adyen -originalArticleId: b95776d7-0906-4299-bdaf-7fab25b0ddde -redirect_from: - - /v1/docs/adyen - - /v1/docs/en/adyen - - /docs/scos/user/technology-partners/201811.0/payment-partners/adyen/payment-integration-adyen.html -related: - - title: Integrating Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen.html - - title: Integrating Adyen payment methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/integrating-adyen-payment-methods.html - - title: Enabling filtering of payment methods for Ayden - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.html - - title: Installing and configuring Adyen - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/adyen/installing-and-configuring-adyen.html ---- - -## Partner Information - -[ABOUT ADYEN](https://www.adyen.com/) - Adyen is a global payment company that allows businesses to accept e-commerce, mobile, and point-of-sale payments. Adyen has more than 3,500 customers and is listed on the stock exchange Euronext.Adyen offers merchants online services for accepting electronic payments by payment methods including credit cards, bank based payments such as debit cards, bank transfer, and real-time bank transfers based on online banking. Adyen's online payment platform connects to payment methods across the world. Payment methods include international credit cards, local cash-based methods, such as Boleto in Brazil, and Internet banking methods, such as iDEAL in the Netherlands. The technology platform acts as a payment gateway, payment service provider and offers risk management and local acquiring.At the present time, Adyen only accepts European companies that have over 50% of their revenue from the European continent. - -## Related Developer guides - - * [Installing and configuring Adyen](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/adyen/installing-and-configuring-adyen.html) - * [Integrating Adyen](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/adyen/integrating-adyen.html) - * [Integrating Adyen payment methods](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/adyen/integrating-adyen-payment-methods.html) - * [Enabling filtering of payment methods for Ayden](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/adyen/enabling-filtering-of-payment-methods-for-adyen.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/afterpay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/afterpay.md deleted file mode 100644 index 868d416db06..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/afterpay.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: AfterPay -description: AfterPay that can be integrated into the Spryker-based project, provides invoice solutions as an unitary brand in nine European countries. -last_updated: Oct 11, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/afterpay -originalArticleId: 1ba8fd89-d0ad-4ee9-ac38-ddb1b9ddac89 -redirect_from: - - /v1/docs/afterpay - - /v1/docs/en/afterpay -related: - - title: Afterpay - Installation and Configuration - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/afterpay/installing-and-configuring-afterpay.html ---- - -## Partner Information - -[ABOUT AFTERPAY](https://www.afterpay.de/) -Available since 2017, AfterPay provides invoice solutions as an unitary brand in nine European countries. By integrating into the Spryker Commerce OS AfterPay can now be consumed by all Spryker clients as a cross-border Pay-after-delivery solution. AfterPay depicts local consumer and market requirements as well as simplifies international expansion.AfterPay gives you back control of your customer relationship and takes it to the next level. It provides your customers with all the payment flexibility they want while you stay in charge of and extend the branded checkout experience. And it sharpens your competitive edge by sharing their purchasing data with you, so you know who your best customers are and how to retarget them. - -YOUR ADVANTAGES: -Make your brand stand out -Extend the branded customer journey beyond checkout. AfterPay keeps your brand in the spotlight and strengthens your customer relationships. -* Unique hero images in every invoice strengthen your brand and campaign messaging -* Add product images that remind your customers of the great deal they got and the joy it gives them -* The entire payment process becomes a way of extending your brand, both in the MyAfterPay portal and emails - -Keep the joy of shopping alive -Happy customers buy more. AfterPay hands them control of their payments, giving them an overview of their purchases and the security to spend more. -* Customers have a complete overview of their entire purchase history at their fingertips, with all the information they need -* Knowing what you have bought and from whom makes paying easier and reduces the need to call customer service -* The ability to control when and how to pay lets customers balance payments with their finances - -Use your payment data to drive sales -Unlike other pay-after-delivery providers we keep you informed of your customers' payment behaviour, providing you with insights and intelligence that fit your digital ecosystem. -* AfterPay is integrated with Google Analytics, allowing you to use your insights into payment behaviour in your digital marketing and sales analysis -* Segment and retarget your best customers based on their payment behaviour -* Easy access to refund data lets you segment customers after net sales together with their payment behaviour - -## Related Developer guides - -* [Installing and configuring Afterpay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/afterpay/installing-and-configuring-afterpay.html) -* [Integrating Afterpay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/afterpay/integrating-afterpay.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/amazon-pay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/amazon-pay.md deleted file mode 100644 index 9c0483a75e1..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/amazon-pay.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Amazon Pay -description: Amazon Pay is a solution that allows buyers to make purchases from Spryker-based shops via their Amazon accounts. -last_updated: Oct 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/amazon-pay -originalArticleId: e07a5af3-dcbe-4297-be51-ff2fc04d4dbc -redirect_from: - - /v1/docs/amazon-pay - - /v1/docs/en/amazon-pay -related: - - title: Obtaining an Amazon Order Reference and information about shipping addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/obtaining-an-amazon-order-reference-and-information-about-shipping-addresses.html - - title: Amazon Pay - Rendering a “Pay with Amazon” Button on the Cart Page - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-rendering-a-pay-with-amazon-button-on-the-cart-page.html - - title: Amazon Pay - Support of Bundled Products - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-support-of-bundled-products.html - - title: Amazon Pay - Configuration for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-configuration-for-the-legacy-demoshop.html - - title: Amazon Pay - State Machine - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-state-machine.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/legacy-demoshop-handling-orders-with-amazon-pay-api.html - - title: Handling orders with Amazon Pay API - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/handling-orders-with-amazon-pay-api.html - - title: Amazon Pay - Order Reference and Information about Shipping Addresses - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/legacy-demoshop-integration/amazon-pay-order-reference-and-information-about-shipping-addresses.html - - title: Configuring Amazon Pay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/configuring-amazon-pay.html - - title: Amazon Pay - Sandbox Simulations - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/amazon-pay/amazon-pay-sandbox-simulations.html ---- - -## Partner Information - -[ABOUT AMAZONPAY](https://pay.amazon.com/de) -Amazon pay is a solution which allows buyers to make purchases via their Amazon accounts. Basically it consists of client side tools (widget, javascripts etc) and Amazon API with SDKs written for different programming languages (PHP, Python, Ruby, Java, C#). - -Client side tools are used for displaying GUI elements on some common pages of an internet shop and it includes a "Pay with Amazon" button on the cart page and widgets for selecting checkout options such as delivery address and payment method. - -On the server side, there are API functions for after a buyer decides to use Amazon Pay. Once you the "Seller" decides to integrate the shop with Amazon Pay, all necessary credentials will be provided to you create an Amazon account. - -Subsequent all integration functionality is provided by Amazon Pay. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/arvato.md b/docs/scos/user/technology-partners/201811.0/payment-partners/arvato.md deleted file mode 100644 index 81483819137..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/arvato.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Arvato -description: Evaluate the profitability of your customer relationships through early identification of credit and fraud risks by integrating the Arvato module into the Spryker Commerce OS. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/arvato -originalArticleId: 275e4cae-cb48-4b00-98a9-2c0e3c9f5825 -redirect_from: - - /v1/docs/arvato - - /v1/docs/en/arvato -related: - - title: Installing and configuring Arvato 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-solution-services-integration-2.0.html - - title: Arvato - Store Order 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/arvato-store-order.html - - title: Arvato - Risk Check 2.0 - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/arvato/v.2.0/arvato-risk-check-2.0.html ---- - -## Partner Information - -[ABOUT ARVATO](https://finance.arvato.com//de.html) - Arvato Financial Solutions (AFS) represents the professional outsourcing of financial services and integrated commercial management. In the business unit Risk Management AFS supports all risk- and profit-oriented decisions along the customer lifecycle. This e-commerce industry solution allows an evaluation of the profitability of your customer relationships through an early identification of credit and fraud risks. With an active payment method selection you can offer your customer only appropriate payment methods according to their risk profile – online and in real time. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/billie.md b/docs/scos/user/technology-partners/201811.0/payment-partners/billie.md deleted file mode 100644 index 47e49a1d0db..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/billie.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Billie -description: Provide various payment options from Billie. -last_updated: Oct 8, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/billie -originalArticleId: 9fb3e50f-7d04-4036-8371-7b2e33affbfe -redirect_from: - - /v1/docs/billie - - /v1/docs/en/billie ---- - -## Partner Information -[ABOUT BILLIE](https://www.billie.io/) - -B2B-PayAfterDelivery for the 21st century - -Billie is Germany’s innovative online-only provider of flexible working capital solutions. Whether it is our award-wining, 100% digital factoring platform or our B2B-PayAfterDelivery solution for online stores: - -Aspiring start-ups, established SMEs and world-leading hidden champions all trust in Billie when it comes to fast, reliable and simple liquidity provision. - -Focus fully on your core business — Billie takes care of your debtor management, provides a white-label dunning & collection process and includes full protection against payment defaults. - -Offer your business customers their preferred payment option, fully integrated into your online store’s checkout process: easily integrate our B2B-PayAfterDelivery module and experience dramatically improved conversion rates by allowing your customers to pay by invoice. Experience reliable payouts to your bank account on the next business day. - -YOUR ADVANTAGES: - -* Fully automated PayAfterDelivery module for your B2B-eCommerce store -* Credit checks and decisions in real time -* Improved conversion rates during checkout by providing the most preferred B2B-payment method -* Payouts to your bank account on the next working day -* 100% protection against payment defaults for all processed invoices -* Full service coverage of dunning & collection process in your design and wording -* Holistic management of your debtors -* Reduced accounting overhead by automated and secure processing of all incoming cash flows - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/billpay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/billpay.md deleted file mode 100644 index 1983ccaf95f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/billpay.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Billpay -description: Billpay is the provider for the preferred, local payment methods Invoice, Direct Debit and Installments. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/billpay -originalArticleId: 9caced27-69ec-419e-bd5b-2893bb59622c -redirect_from: - - /v1/docs/billpay - - /v1/docs/en/billpay - - /docs/scos/user/technology-partners/201811.0/payment-partners/billpay/billpay.html ---- - -## Partner Information - -[ABOUT BILLPAY](https://www.billpay.de/de/) -BillPay is the DACH market leader for the preferred, local payment methods Invoice, Direct Debit and Installments, making real-time financing decisions with 100% liability shift, so merchants carry zero risk.As only a bank account is required, these payment methods ensure full customer reach. In addition, BillPay's solution is multi-channel so orders can be placed online, through mobile web apps, at the POS or over-the-phone. - - -## Related Developer guides - -* [Billpay - Switching invoice payments to a preauthorize mode](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/billpay/billpay-switching-invoice-payments-to-a-preauthorize-mode.html) -* [Integrating Billpay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/billpay/integrating-billpay.html) - - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/braintree.md b/docs/scos/user/technology-partners/201811.0/payment-partners/braintree.md deleted file mode 100644 index 361e23277d0..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/braintree.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Braintree -description: Braintree provides credit card and PayPal payment methods for Spryker Commerce OS. -last_updated: Nov 5, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/braintree -originalArticleId: 954f395b-9b38-40e6-a7c6-ac4a14506a85 -redirect_from: - - /v1/docs/braintree - - /v1/docs/en/braintree -related: - - title: Braintree - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-performing-requests.html - - title: Braintree - Request workflow for Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-workflow-for-legacy-demoshop.html - - title: Braintree - Performing Requests for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-performing-requests-for-the-legacy-demoshop.html - - title: Installing and configuring Braintree - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/installing-and-configuring-braintree.html - - title: Braintree - Configuration for the Legacy Demoshop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-guides-for-the-legacy-demoshop/braintree-configuration-for-the-legacy-demoshop.html - - title: Braintree - Request workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/braintree/braintree-request-workflow.html ---- - -[ABOUT BRAINTREE](https://www.braintreepayments.com/) -Braintree, a division of PayPal, is a company based in Chicago that specializes in mobile and web payment systems for ecommerce companies. Braintree emphasizes its easy integrations, multiple payment method options (including PayPal and Venmo), simple pricing, security, and support. Braintree provides its customers with a merchant account and a payment gateway, along with various features including recurring billing, credit card storage, support for mobile and international payments, and PCI compliance solutions. - -Braintree provides two methods of payment: - -* Credit Card -* PayPal - -In order to integrate Braintree payments, a Braintree merchant account should be created and configuration data then could be obtained from Braintree. - -There are two types of accounts for the integration: - -1. test accounts -2. live accounts - -Both accounts share the same configuration with different values. Braintree uses the idea of having merchants for handling different requests. Each merchant is defined by a merchant ID which will be given by Braintree. - -We use state machines for handling and managing orders and payments. To integrate Braintree payments, a state machine for Braintree should be created. - -A basic and fully functional state machine is already built (`BraintreePayPal01` and `BraintreeCreditCard01`). You can use the same state machine or build a new one. In case a new state machine has to be built, it is preferred to contact Braintree and confirm the new state machine design and functionality. - -The state machine commands and conditions trigger Braintree facade calls in order to perform the needed requests to Braintree. For simplicity, the Braintree facade uses the same calls for both credit card and PayPal payments and automatically distinguishes between the payment methods from the payment entity. - -### PCI Compliance -Because of PCI compliance reasons, credit card data is communicated to the third party through JS and AJAX calls (sensitive information stays browser side). - - -## Related Developer guides - -* [Installing and configuring Braintree](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/braintree/installing-and-configuring-braintree.html) -* [Braintree - Request workflow](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/braintree/braintree-request-workflow.html) -* [Braintree - Performing requests](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/braintree/braintree-performing-requests.html) - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/bs-payone.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/bs-payone.md deleted file mode 100644 index 0817366c1c0..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/bs-payone.md +++ /dev/null @@ -1,405 +0,0 @@ ---- -title: BS Payone -description: Provide full-service payment service and payment transaction services by integrating BS Payone into your Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-v1-1 -originalArticleId: 4effbfc6-1332-4fc8-b8d1-f34823434ef6 -redirect_from: - - /v1/docs/payone-v1-1 - - /v1/docs/en/payone-v1-1 -related: - - title: PayOne - Integration into the SCOS Project - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-integration-into-the-scos-project.html - - title: PayOne - Risk Check and Address Check - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-risk-check-and-address-check.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Credit Card Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-credit-card-payment.html - - title: PayOne - PayPal Express Checkout Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-express-checkout-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html ---- - -## Partner Information - -[ABOUT BS PAYONE](https://www.payone.com/) -BS PAYONE GmbH is headquartered in Frankfurt am Main and is one of the leading omnichannel-payment providers in Europe. In addition to providing customer support to numerous Savings Banks (Sparkasse) the full-service payment service provider also provides cashless payment transaction services to more than 255,000 customers from stationary trade to the automated and holistic processing of e-commerce and mobile payments. - -YOUR ADVANTAGES: - -* One solution, one partner, one contract -Simple & efficient. Technical processing and financial services from a single source. -* International payment processing -Access to international and local payment methods. -* Automatic debtor management -Effective accounting support through transaction allocation and reconciliation. -* Credit entries independent of payment type -Fast returns management. With automated refunds. -* Short time to market thanks to plug'n pay -1-click checkout and seamless integration. For an increasing conversion rate. - -We integrate with a wide range of payment methods that can be configured according to your needs and convenience. Payment method flows are configured using state machines. - -Payone provides the following methods of payment: - -* [Credit Card](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-credit-card-payment.html) -* [Direct Debit](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-direct-debit-payment.html) -* [Online Transfer](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-online-transfer-payment.html) -* [Paypal](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-payment.html) -* [Prepayment](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-prepayment.html) -* [Invoice](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-invoice-payment.html) -* [Security Invoice](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-security-invoice-payment.html) -* [Paypal Express Checkout](/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-payment.html-express-checkout) - -We use state machines for handling and managing orders and payments. To integrate Payone payments, a state machine for Payone should be created. - -A basic and fully functional state machine for each payment method is already built: - -* `PayoneCreditCard.xml` -* `PayoneDirectDebit.xml` -* `PayoneEWallet.xml` -* `PayoneInvoice.xml` -* `PayoneSecurityInvoice.xml` -* `PayoneOnlineTransfer.xml` -* `PayonePrePayment.xml` -* `PayonePaypalExpressCheckout.xml` - -You can use the same state machines or build new ones. The state machine commands and conditions trigger Payone facade calls in order to perform the needed requests to Payone API. - -## Integration to Your Project - -You can copy over configs to your config from the Payone module's `config.dist.php` file. - -The configuration to integrate payments using Payone is: - -* `PAYONE_CREDENTIALS_KEY`: payment portal key (required). -* `PAYONE_CREDENTIALS_MID`: merchant id (required). -* `PAYONE_CREDENTIALS_AID`: sub-account id (required). -* `PAYONE_CREDENTIALS_PORTAL_ID`: payment portal id (required). -* `PAYONE_MODE`: the mode of the transaction, either test or live (required). -* `PAYONE_BUSINESS_RELATION`: the business relation of the transaction, b2b or b2c (required). -* `PAYONE_PAYMENT_GATEWAY_URL`: server-API-URL. -* `PAYONE_REDIRECT_SUCCESS_URL`: return URL for successful result on redirect. -* `PAYONE_REDIRECT_ERROR_URL`: return URL for error on redirect. -* `PAYONE_REDIRECT_BACK_URL`: return URL that will be engaged when user cancels action on redirect. -* `PAYONE_EMPTY_SEQUENCE_NUMBER`: sequence number that will be used in API requests when ommitted (0 by default). -* `PAYONE_CREDENTIALS_ENCODING`: encoding of data sent in requests to Payone API ('UTF-8' for the -* `HOST_YVES`: yves host in order to generate urls inside payone module. -* `PAYONE_STANDARD_CHECKOUT_ENTRY_POINT_URL`: entry point url to standart checkout in project(or middleware url in project, depending on your implementation). -* `PAYONE_EXPRESS_CHECKOUT_BACK_URL`: if user presses back button(if so exists) on payone side, this urs is used to redirect user back to shop. -* `PAYONE_EXPRESS_CHECKOUT_FAILURE_URL`: if something goes wrong when the user is on payone side, redirect here is done. - -## Integration with Checkout module (CheckoutDependencyProvider): - -Project (demoshop) level `\Pyz\Yves\Checkout\CheckoutDependencyProvider` method `provideDependencies` container has to be extended with the `static::PAYMENT_SUB_FORMS` and `static::PAYMENT_METHOD_HANDLER` keys which have to contain information about PSP payment methods SubForms and SubForms Handlers accordingly. - -Add the keys to `\Pyz\Yves\Checkout\CheckoutDependencyProvider::provideDependencies`: -```php -add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_INVOICE); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_SECURITY_INVOICE); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_CREDIT_CARD); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_DIRECT_DEBIT); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_E_WALLET); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_ONLINE_TRANSFER); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_PRE_PAYMENT); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_PAYPAL_EXPRESS_CHECKOUT); - - return $paymentMethodHandler; - }; - - $container[static::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugin = new SubFormPluginCollection(); - - $paymentSubFormPlugin->add(new PayoneInvoiceSubFormPlugin()); - $paymentSubFormPlugin->add(new PayoneSecurityInvoiceSubFormPlugin()); - $paymentSubFormPlugin->add(new PayoneCreditCardSubFormPlugin()); - $paymentSubFormPlugin->add(new PayoneDirectDebitSubFormPlugin()); - $paymentSubFormPlugin->add(new PayoneEWalletSubFormPlugin()); - $paymentSubFormPlugin->add(new PayoneEpsOnlineTransferSubFormPlugin()); - $paymentSubFormPlugin->add(new PayonePrePaymentSubFormPlugin()); - - return $paymentSubFormPlugin; - }; -``` - -## Integration with Payment module (PaymentDependencyProvider): - -Project (demoshop) level `\Pyz\Zed\Payment\PaymentDependencyProvider` method `provideBusinessLayerDependencies` container has to be extended with the `static::CHECKOUT_PLUGINS` key which has to contain information about PSP payment pre-, post-, and -save Order plugins. - -Add the key to `\Pyz\Zed\Payment\PaymentDependencyProvider`: -```php -extend(static::CHECKOUT_PLUGINS, function (CheckoutPluginCollection $pluginCollection) { - $pluginCollection->add(new PayonePreCheckPlugin(), PayoneConfig::PROVIDER_NAME, static::CHECKOUT_PRE_CHECK_PLUGINS); - $pluginCollection->add(new PayoneSaveOrderPlugin(), PayoneConfig::PROVIDER_NAME, static::CHECKOUT_ORDER_SAVER_PLUGINS); - $pluginCollection->add(new PayonePostSaveHookPlugin(), PayoneConfig::PROVIDER_NAME, static::CHECKOUT_POST_SAVE_PLUGINS); - - return $pluginCollection; - }); -``` - -## Integration with OMS module (OmsDependencyProvider) - - Project (demoshop) level `\Pyz\Zed\Oms\OmsDependencyProvider` method `provideBusinessLayerDependencies` container has to be extended with the static::CONDITION_PLUGINS - and static::COMMAND_PLUGINS keys which have to contain information about PSP OMS State Machine conditions and commands plugins. - -Add the keys to `\Pyz\Zed\Oms\OmsDependencyProvider`: -```phpextend(static::CONDITION_PLUGINS, function (ConditionCollectionInterface $conditionCollection) { - $conditionCollection->add(new PreAuthorizationIsApprovedConditionPlugin(), 'Payone/PreAuthorizationIsApproved'); - $conditionCollection->add(new AuthorizationIsApprovedConditionPlugin(), 'Payone/AuthorizationIsApproved'); - $conditionCollection->add(new CaptureIsApprovedConditionPlugin(), 'Payone/CaptureIsApproved'); - $conditionCollection->add(new RefundIsApprovedConditionPlugin(), 'Payone/RefundIsApproved'); - $conditionCollection->add(new RefundIsPossibleConditionPlugin(), 'Payone/RefundIsPossible'); - $conditionCollection->add(new PreAuthorizationIsErrorConditionPlugin(), 'Payone/PreAuthorizationIsError'); - $conditionCollection->add(new AuthorizationIsErrorConditionPlugin(), 'Payone/AuthorizationIsError'); - $conditionCollection->add(new PreAuthorizationIsRedirectConditionPlugin(), 'Payone/PreAuthorizationIsRedirect'); - $conditionCollection->add(new AuthorizationIsRedirectConditionPlugin(), 'Payone/AuthorizationIsRedirect'); - $conditionCollection->add(new PaymentIsAppointedConditionPlugin(), 'Payone/PaymentIsAppointed'); - $conditionCollection->add(new PaymentIsCaptureConditionPlugin(), 'Payone/PaymentIsCapture'); - $conditionCollection->add(new PaymentIsPaidConditionPlugin(), 'Payone/PaymentIsPaid'); - $conditionCollection->add(new PaymentIsUnderPaidConditionPlugin(), 'Payone/PaymentIsUnderPaid'); - $conditionCollection->add(new PaymentIsOverpaidConditionPlugin(), 'Payone/PaymentIsOverpaid'); - $conditionCollection->add(new PaymentIsRefundConditionPlugin(), 'Payone/PaymentIsRefund'); - - return $conditionCollection; - }); - - $container->extend(static::COMMAND_PLUGINS, function (CommandCollectionInterface $commandCollection) { - $commandCollection->add(new PreAuthorizeCommandPlugin(), 'Payone/PreAuthorize'); - $commandCollection->add(new AuthorizeCommandPlugin(), 'Payone/Authorize'); - $commandCollection->add(new CancelCommandPlugin(), 'Payone/Cancel'); - $commandCollection->add(new CaptureCommandPlugin(), 'Payone/Capture'); - $commandCollection->add(new CaptureWithSettlementCommandPlugin(), 'Payone/CaptureWithSettlement'); - $commandCollection->add(new RefundCommandPlugin(), 'Payone/Refund'); - - return $commandCollection; - }); -``` -In order to use the state machines provided by Payone module, make sure to add the location path to configuration: - -```php - -According to the configuration of your payment portal you will receive the data and the status for each payment processed via the URL you have submitted. The data transfer is based on simple HTTP-POST request (key/value pairs). The `TransactionStatus` is sent from the following IP addresses: 185.60.20.0/24 (for example, 185.60.20.1 to 185.60.20.254). Please configure your firewall to allow incoming packets from these IP addresses. - -To provide payment details for rendering on frontend, add Payone client to the Checkout and to the Customer module: - -in `src//Yves/Checkout/CheckoutDependencyProvider.php` -```phpgetLocator()->payone()->client(); - }; - ... - return $container; - } -``` - -in `src//Yves/Customer/CustomerDependencyProvider.php`: -```php -getLocator()->payone()->client(); - }; - ... - return $container; - } - ``` - -To add payment details on success step of checkout: - -Add quote and payment details to template variables in `src//Yves/Checkout/Process/Steps/SuccessStep.php` - - Click to expand the code sample - - ```php - payoneClient = $payoneClient; - } - ... - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $this->customerClient->markCustomerAsDirty(); - - if (method_exists($quoteTransfer->getPayment(), 'getPayone')) { - $this->quoteTransfer = $quoteTransfer; - } - - return new QuoteTransfer(); - } - ... - /** - * @param \Spryker\Shared\Kernel\AbstractTransfer $dataTransfer - * - * @return array - */ - public function getTemplateVariables(AbstractTransfer $dataTransfer) - { - $getPaymentDetailTransfer = new PayoneGetPaymentDetailTransfer(); - if ($this->quoteTransfer->getPayment()->getPaymentProvider() === PayoneHandler::PAYMENT_PROVIDER) { - $getPaymentDetailTransfer->setOrderReference($this->quoteTransfer->getOrderReference()); - $getPaymentDetailTransfer = $this->payoneClient->getPaymentDetail($getPaymentDetailTransfer); - } - return [ - 'quoteTransfer' => $this->quoteTransfer, - 'paymentDetail' => $getPaymentDetailTransfer->getPaymentDetail(), - ]; - } -``` - -Inject Payone client into the step factory `src//Yves/Checkout/Process/StepFactory.php` -```php -getProvidedDependency(CheckoutDependencyProvider::CLIENT_CUSTOMER), - $this->getProvidedDependency(CheckoutDependencyProvider::CLIENT_PAYONE), - CheckoutControllerProvider::CHECKOUT_SUCCESS, - ApplicationControllerProvider::ROUTE_HOME - ); -} -``` - -To add payment details on order details page in customer cabinet: - -Add method that will create the Payone client into the CustomerFactory `src//Yves/Customer/CustomerFactory.php`: - -```php -getProvidedDependency(CustomerDependencyProvider::CLIENT_PAYONE); - } -``` - -Add payment details to template variables inside the OrderController in `src//Yves/Customer/Controller/OrderController.php`: - -```php -setOrderId($idSalesOrder); - $getPaymentDetailTransfer = $this->getFactory() - ->getPayoneClient()->getPaymentDetail($getPaymentDetailTransfer); - - return [ - 'order' => $orderTransfer, - 'paymentDetail' => $getPaymentDetailTransfer->getPaymentDetail(), - ]; - } -``` ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.md deleted file mode 100644 index 4dbd067aa90..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: PayOne - Authorization and Preauthorization Capture Flows -description: Payone module makes it possible for a project to choose which Payone flow it wants to implement- authorize or preauthorize + capture. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-authorization-and-preauthorization-capture-flows -originalArticleId: 24cb6359-636e-4a90-a977-468e7aac0d57 -redirect_from: - - /v1/docs/payone-authorization-and-preauthorization-capture-flows - - /v1/docs/en/payone-authorization-and-preauthorization-capture-flows -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Credit Card Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-credit-card-payment.html - - title: PayOne - PayPal Express Checkout Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-express-checkout-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html ---- - -Payone module makes it possible for a project to choose which Payone flow it wants to implement: authorize or preauthorize + capture. - -## Authorization Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/BS+Payone/payone-authorization-flow-example.png) - -Authorization state machine example xml can be found in `vendor//src/config/Zed/Oms/PayoneInvoice.xml` - -### Commands and Conditions Used in Authorization Flow: - Commands: - - `src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Command/AuthorizeCommandPlugin.php` - -Conditions: - - `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/AuthorizationIsApprovedConditionPlugin.php` - - `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/AuthorizationIsErrorConditionPlugin.php` - - `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/AuthorizationIsRedirectConditionPlugin.php` - -## Preauthorization-Capture Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/BS+Payone/payone-preauthorization-capture-flow-example.png) - -Preauthorization-capture state machine example XML can be found in `vendor//config/Zed/Oms/DirectDebit.xml` - -### Commands and Conditions Used in Preauthorization-Capture Flow: -Commands: - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Command/PreAuthorizeCommandPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Command/CaptureCommandPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Command/PreAuthorizaWithSettlementCommandPlugin.php` - -Conditions: - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/PreAuthorizationIsApprovedConditionPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/PreAuthorizationIsErrorConditionPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/PreAuthorizationIsRedirectConditionPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/CaptureIsApprovedConditionPlugin.php` - * `vendor//src/SprykerEco/Zed/Payone/Communication/Plugin/Oms/Condition/CaptureIsErrorConditionPlugin.php` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-facade.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-facade.md deleted file mode 100644 index bfe8485be41..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-facade.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: PayOne - Facade -description: This article includes facade methods provided by Payone. -last_updated: May 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-facade -originalArticleId: 6e7b0dba-e005-48ed-add6-7c3aabaeabba -redirect_from: - - /v1/docs/payone-facade - - /v1/docs/en/payone-facade ---- - -|Facade Method |Param |Return |Description | -| --- | --- | --- | --- | -| `saveOrder` | `QuoteTransfer`, `CheckoutResponseTransfer` | void | Saves Payone payment method data according to quote and checkout response transfer data. | -| `authorizePayment` | `OrderTransfer` | `AuthorizationResponseContainer` | Performs payment authorization request to Payone API. | -| `preAuthorizePayment` | Order Id | `AuthorizationResponseContainer` | Performs payment pre-authorization request to Payone API. | -| `capturePayment` | `PayoneCaptureTransfer` | `CaptureResponseContainer` | Performs payment capture request to Payone API. | -| `debitPayment` | Order Id | `DebitResponseContainer` | Performs the debit payment request to Payone API. | -| `refundPayment` | `PayoneRefundTransfer` | `RefundResponseContainer` | Performs the refund payment request to Payone API. | -| `creditCardCheck` | `PayoneCreditCardTransfer` | `CreditCardCheckResponseContainer` | Performs creditcardcheck request to Payone API (card number validation, expiration date check, etc). | -| `bankAccountCheck` | `PayoneBankAccountCheckTransfer` | `BankAccountCheckResponseContainer` | Performs bankaccountcheck request to Payone API. | -| `manageMandate` | `PayoneManageMandateTransfer` | `ManageMandateResponseContainer` | Performs managemandate request to Payone API (used to create SEPA mandate for Direct Debit payment). | -| `getFile` | `PayoneGetFileTransfer` | `GetFileResponseContainer` | Performs getfile request to Payone API (to download existing SEPA mandate in PDF format). | -| `getInvoice` | `PayoneGetInvoiceTransfer` | `GetInvoiceResponseContainer` | Performs getinvoice request to Payone API (to download invoice in PDF format). | -| `processTransactionStatusUpdate` | `PayoneTransactionStatusUpdateTransfer` | `TransactionStatusResponse` | Saves transaction status update received from Payone. | -| `isAuthorizationApproved` | `OrderTransfer` | bool | Checks if authorization request to Payone API got "Approved" status in response. | -| `isAuthorizationRedirect` | `OrderTransfer` | bool | Checks if authorization request to Payone API got "Redirect" status in response. | -| `isAuthorizationError` | `OrderTransfer` | bool | Checks if authorization request to Payone API got "Error" status in response. | -| `isPreauthorizationApproved` | `OrderTransfer` | bool | Checks if pre-authorization request to Payone API got "Approved" status in response. | -| `isPreauthorizationRedirect` | `OrderTransfer` | bool | Checks if pre-authorization request to Payone API got "Redirect" status in response. | -| `isPreAuthorizationError` | `OrderTransfer` | bool | Checks if pre-authorization request to Payone API got "Error" status in response. | -| `isCaptureApproved` | `OrderTransfer` | bool | Checks if capture request to Payone API got "Approved" status in response. | -| `isCaptureError` | `OrderTransfer` | bool | Checks if capture request to Payone API got "Error" status in response. | -| `isRefundApproved` | `OrderTransfer` | bool | Checks if refund request to Payone API got "Approved" status in response. | -| `isRefundError` | `OrderTransfer` | bool | Checks if refund request to Payone API got "Error" status in response. | -| `isRefundPossible` | `OrderTransfer` | bool | Checks if payment process for certain order supports refund. | -| `isPaymentDataRequired` | `OrderTransfer` | bool | Checks if payment process for certain order requires bank account details. | -| `isPaymentNotificationAvailable` | Order Id, Order Item Id | bool | Checks if there are unprocessed transaction status updates from Payone for a certain order. | -| `isPaymentPaid` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with "Paid" status and balance is zero or negative for a certain order. | -| `isPaymentOverpaid` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with paid status and balance is negative for a certain order. | -| `isPaymentUnderpaid` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with "Underpaid" status for a certain order. | -| `isPaymentRefund` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with "Refund" status for a certain order. | -| `isPaymentAppointed` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with "Appointed" status for a certain order. | -| `isPaymentOther` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with status different from "Paid", "Underpaid" or "Appointed" for a certain order. | -| `isPaymentCapture` | Order Id, Order Item Id | bool | Checks if there is an unprocessed transaction status update from Payone with "Capture" status for a certain order. | -| `postSaveHook` | `QuoteTransfer`, `CheckoutResponseTransfer` | `CheckoutResponseTransfer` | Handles redirects and errors after order placement. | -| `getPaymentLogs` | `ObjectCollection` | array of `PayonePaymentLogTransfer` | Gets payment logs (both api and transaction status) for specific orders in chronological order. | -| `getPaymentDetail` | Order Id | `PaymentDetailTransfer` | Gets payment details for a specific order. | -| `updatePaymentDetail` | `PaymentDetailTransfer`, Order Id | void | Updates payment details for a specific order. | -| install | `MessengerInterface` | void | Installs module translations to project glossary. | -| `startPaypalExpressCheckout` | `PayoneStartPaypalExpressCheckoutRequestTransfer` | `PayonePaypalExpressCheckoutGenericPaymentResponseTransfer` | Sends request to payone in order to start express checkout and get the workorderid which is used for further operations. | -| `getPaypalExpressCheckoutDetails` | `QuoteTransfer` | `PayonePaypalExpressCheckoutGenericPaymentResponseTransfer` | Returns customer specific information retrieved from paypal through payone (e.g. email and shipping info). | diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-integration-into-the-legacy-demoshop-project.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-integration-into-the-legacy-demoshop-project.md deleted file mode 100644 index 7b6902899f0..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-integration-into-the-legacy-demoshop-project.md +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: PayOne - Integration into the Legacy Demoshop Project -description: Integrate Payone into the Spryker Legacy Demoshop by following the instructions from this article. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-integration-with-project-example -originalArticleId: da13726d-d9f9-40f2-a650-620a2cb61132 -redirect_from: - - /v1/docs/payone-integration-with-project-example - - /v1/docs/en/payone-integration-with-project-example ---- - -**Objectives:** -* Place order with PayPal express checkout. -* Be redirected to summary page of standard checkout. -* Have shipping a method selector on summary page. - -First of all we need to provide a URL to Payone module, which will be used to redirect user when the quote is filled with data obtained from PayPal. - To achieve this, make the following steps: - -1. Add custom controller action to `src/Pyz/Yves/Checkout/Controller/CheckoutController.php`: - -```php -/** -* @return \Symfony\Component\HttpFoundation\RedirectResponse -*/ -public function paypalExpressCheckoutEntryPointAction() -{ -$this->getFactory() -->createExpressCheckoutHandler() -->fulfillPostConditionsUntilSummaryStep(); -return $this->redirectResponseInternal(CheckoutControllerProvider::CHECKOUT_SUMMARY); -} -``` - -2. Register a new controller action in controller provider: - -```php -... -const CHECKOUT_PAYPAL_EXPRESS_CHECKOUT_ENTRY_POINT = 'checkout-paypal-express-checkout-entry-point'; -... -protected function defineControllers(Application $app) -{ -... -$this->createController('/{checkout}/paypal-express-checkout-entry-point', self::CHECKOUT_PAYPAL_EXPRESS_CHECKOUT_ENTRY_POINT, 'Checkout', 'Checkout', 'paypalExpressCheckoutEntryPoint') -->assert('checkout', $allowedLocalesPattern . 'checkout|checkout') -->value('checkout', 'checkout') -->method('GET'); -... -} -``` - -3. Create `ExpressCheckoutHandler` class `src/Pyz/Yves/Checkout/Handler/ExpressCheckoutHandler.php` with corresponding interface: - -```php -namespace Pyz\Yves\Checkout\Handler; -use Generated\Shared\Transfer\ExpenseTransfer; -use Spryker\Client\Cart\CartClientInterface; -use Spryker\Shared\Shipment\ShipmentConstants; -class ExpressCheckoutHandler implements ExpressCheckoutHandlerInterface -{ -/** -* @var \Spryker\Client\Cart\CartClientInterface -*/ -protected $cartClient; -/** -* @param \Spryker\Client\Cart\CartClientInterface $cartClient -*/ -public function __construct(CartClientInterface $cartClient) -{ -$this->cartClient = $cartClient; -} -/** -* @return void -*/ -public function fulfillPostConditionsUntilSummaryStep() -{ -$quoteTransfer = $this->cartClient->getQuote(); -$quoteTransfer->addExpense( -(new ExpenseTransfer())->setType(ShipmentConstants::SHIPMENT_EXPENSE_TYPE) -); -} -} -``` - -4. Add `ExpressCheckoutHandler` related method in `src/Pyz/Yves/Checkout/CheckoutFactory.php`: - -```php -/** -* @return \Pyz\Yves\Checkout\Handler\ExpressCheckoutHandler -*/ -public function createExpressCheckoutHandler() -{ -return new ExpressCheckoutHandler( -$this->getCartClient() -); -} -``` - -5. Extend `ShipmentForm` class to override a property_path option (create `src/Pyz/Yves/Shipment/Form/ShipmentSubForm.php`): - -```php -namespace Pyz\Yves\Shipment\Form; -class ShipmentSubForm extends ShipmentForm -{ -/** -* @const string -*/ -const SHIPMENT_SELECTION_PROPERTY_PATH = self::SHIPMENT_SELECTION; -} -``` - -6. Adjust summary form by adding a shipment subform in `src/Pyz/Yves/Checkout/Form/Steps/SummaryForm.php`: - -```php -class SummaryForm extends AbstractType -{ -/** -* Builds the form. -* -* This method is called for each type in the hierarchy starting from the -* top most type. Type extensions can further modify the form. -* -* @see FormTypeExtensionInterface::buildForm() -* -* @param \Symfony\Component\Form\FormBuilderInterface $builder The form builder -* @param array $options The options -* -* @return void -*/ -public function buildForm(FormBuilderInterface $builder, array $options) -{ -$builder->add( -'shipmentForm', -ShipmentSubForm::class, -array_merge( -$options, -[ -'data_class' => ShipmentTransfer::class, -'property_path' => 'shipment', -] -) -); -} -/** -* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver -* -* @return void -*/ -public function configureOptions(OptionsResolver $resolver) -{ -$resolver->setRequired('shipmentMethods'); -$resolver->setDefaults([ -'data_class' => QuoteTransfer::class, -]); -} -/** -* Returns the name of this type. -* -* @return string The name of this type -*/ -public function getName() -{ -return 'summaryForm'; -} -} -``` - -7. Create shipment subform template for summary page in `src/Pyz/Yves/Checkout/Theme/default/checkout/partials/shipment.twig`: - -```php - -
      - - {% raw %}{%{% endraw %} set shipmentForm = summaryForm.shipmentForm {% raw %}%}{% endraw %} - -
      -
        - - {% raw %}{%{% endraw %} for name, choices in shipmentForm.idShipmentMethod.vars.choices {% raw %}%}{% endraw %} - -

        {% raw %}{{{% endraw %} name {% raw %}}}{% endraw %}

        - - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
      • - -
      • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
      -
      -
      -``` - -8. Update summary twig template in `src/Pyz/Yves/Checkout/Theme/default/checkout/summary.twig`. -Move `form_start` expression to the top of a content section and `form_end` to the end: - -```php -... -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -{% raw %}{{{% endraw %} form_start(summaryForm, {'attr': {'class': 'row'{% raw %}}}{% endraw %}) {% raw %}}}{% endraw %} -... -... -... -{% raw %}{{{% endraw %} form_end(summaryForm) {% raw %}}}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -9. Remove `{% raw %}{%{% endraw %} include '@checkout/checkout/partials/voucher-form.twig' {% raw %}%}{% endraw %}` include from summary template. Include `checkout/partials/shipment.twig` in your summary template: - -```php - ... -{% raw %}{{{% endraw %} 'checkout.step.summary.shipping' | trans {% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} include '@checkout/checkout/partials/shipment.twig' {% raw %}%}{% endraw %} - ... -``` -10. Add shipment form data provider and remove voucher form from summary form collection(It is just an example, if you need voucher form, you need to adjust summary page on your own). In `src/Pyz/Yves/Checkout/Form/FormFactory.php`: - -```php -/** -* @param \Generated\Shared\Transfer\QuoteTransfer -* -* @return \Spryker\Yves\StepEngine\Form\FormCollectionHandlerInterface -*/ -public function createSummaryFormCollection() -{ -return $this->createFormCollection($this->createSummaryFormTypes(), $this->getShipmentFormDataProviderPlugin()); -} - -.... - - -/** -* @return \Symfony\Component\Form\FormTypeInterface[] -*/ -protected function createSummaryFormTypes() -{ -return [ -$this->createSummaryForm(), -//$this->createVoucherFormType(), -]; -} -``` -11. Handle shipment form data, when summary form is submitted. Inject two dependencies into `src/Pyz/Yves/Checkout/Process/Steps/SummaryStep.php`: - -```php -/** -* @var \Spryker\Client\Calculation\CalculationClientInterface -*/ -protected $calculationClient; -/** -* @var \Spryker\Yves\StepEngine\Dependency\Plugin\Handler\StepHandlerPluginCollection -*/ -protected $shipmentPlugins; -/** -* @param \Spryker\Yves\ProductBundle\Grouper\ProductBundleGrouperInterface $productBundleGrouper -* @param \Spryker\Client\Cart\CartClientInterface $cartClient -* @param \Spryker\Client\Calculation\CalculationClientInterface $calculationClient -* @param \Spryker\Client\Calculation\CalculationClientInterface $shipmentPlugins -* @param string $stepRoute -* @param string $escapeRoute -*/ -public function __construct( -ProductBundleGrouperInterface $productBundleGrouper, -CartClientInterface $cartClient, -CalculationClientInterface $calculationClient, -StepHandlerPluginCollection $shipmentPlugins, -$stepRoute, -$escapeRoute -) { -parent::__construct($stepRoute, $escapeRoute); -$this->productBundleGrouper = $productBundleGrouper; -$this->cartClient = $cartClient; -$this->calculationClient = $calculationClient; -$this->shipmentPlugins = $shipmentPlugins; -} -``` - -12. Extend `execute` method: - -```php -/** -* @param \Symfony\Component\HttpFoundation\Request $request -* @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer -* -* @return \Generated\Shared\Transfer\QuoteTransfer -*/ -public function execute(Request $request, AbstractTransfer $quoteTransfer) -{ -$shipmentHandler = $this->shipmentPlugins->get(CheckoutDependencyProvider::PLUGIN_SHIPMENT_STEP_HANDLER); -$shipmentHandler->addToDataClass($request, $quoteTransfer); -$this->calculationClient->recalculate($quoteTransfer); -$this->markCheckoutConfirmed($request, $quoteTransfer); -return $quoteTransfer; -} -``` - -Now, go to checkout and try placing an order with Paypal express checkout. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-credit-card-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-credit-card-payment.md deleted file mode 100644 index 876937cf5cb..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-credit-card-payment.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: PayOne - Credit Card Payment -description: Integrate Credit Card payment through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-credit-card -originalArticleId: 638f1dd5-7a3f-4af3-81e5-6deaf1dcedeb -redirect_from: - - /v1/docs/payone-credit-card - - /v1/docs/en/payone-credit-card - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-credit-card-payment.html -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html ---- - -{% info_block infoBox "PCI Compliance" %} -Because of PCI compliance reasons, credit card data is communicated to the third party through AJAX calls (sensitive information stays at the browser side). -{% endinfo_block %} - -## PCI Compliance - -The Payment Card Industry Data Security Standard ( PCI DSS ) is a set of rules with the intention to ensure that credit card information is processed, stored and transmitted in a secure environment. - -The PCI standard applies to companies or organizations that enable making payments using credit cards. - -The PCI compliance standard means that any merchant that offers credit card payments or is storing credit card information in the system is mandatory to pass a PCI certification. Processing and storing credit card data in the database involves a serious risk of financial fraud. - -In order to meet the requirements of PCI DSS compliance (Compliance) for card payments, this module provides a Hosted iFrame solution. This solution enables you not only to integrate all relevant fields for card data in your checkout process, but also to be fully compliant with PCI DSS standards. Using this solution qualifies for providing proof of PCI DSS Compliance via SAQ A (Self Assessment Questionnaire A) questionnaire. Please find more information [here](https://pci.payone.de/content/faq). - -## Front-end Integration - -Run `antelope build yves` after you include the javascript file for credit card check inside the payment step template (e.g. `src//Yves/Checkout/Theme//checkout/payment.twig`) - -```php -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` -To adjust frontend appearance, provide following templates in your theme directory: - -* `src//Yves/Payone/Theme//credit_card.twig` - -## State Machine Integration - -The Payone module provides a demo state machine for Credit Card payment method which implements Pre-Authorization/Capture flow. It's also possible to implement Authorization flow using corresponding command. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'PayoneCreditCard', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneCreditCard', -]; -``` - -## Credit Card Payment Flow: - -1. A credit card check request is submitted to Payone ( through an AJAX call) The request sent to Payone is encrypted and it contains a secret key configured in the merchant account. The response contains a pseudo credit card pan: a token used to uniquely identify this transaction on third party side, on further communications. The pseudo credit card pan is stored in the database. -2. A checkout request is made to Spryker; depending if it's a 3d secure credit card or a regular credit card, Spryker will manage to submit the payment on third party side and update the payment status. On authorizing or capturing requests, Spryker will use the pseudo credit card pan stored in the database as an identification token. - -## System Interaction - -The diagram shows the interaction between the browser, Zed and Payone. We recommend using the creditcardcheck (1) AJAX call from the browser to Payone directly. If the credit card data is valid, Payone will return a credit card pseudo pan. This number must be used with all subsequent Payone interactions as a reference. Optionally the pseudo pan can be stored with an AJAX request into the session (2). When it comes to checkout (3) a state machine must be started. The state machine can either use an authorize call to obtain the money directly or use a preauthorize call (3.1) that blocks the money. If 3d-secure is enabled a redirect message must be handled. At the given time (when package is ready for shipment e.g.) the preauthorized money can be captured. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/BS+Payone/payone-system-interaction.png) - -Credit card Check is an AJAX request from the browser to Payone directly. Before sending the credit card data, it is encrypted with asymmetric encryption algorithm. If the credit card is valid, a Pseudocreditcardpan is returned. This will be used for all subsequent interactions with Payone. The advantage is that a PCI compliance may not be needed. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.md deleted file mode 100644 index b29a1db0bca..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: PayOne - Direct Debit Payment -description: Integrate Direct Debit payment through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-direct-debit -originalArticleId: 86ae2298-71e6-48d5-8a27-810e27c92cf5 -redirect_from: - - /v1/docs/payone-direct-debit - - /v1/docs/en/payone-direct-debit - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-direct-debit-payment.html -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -## Front-End Integration - -Run the `antelope build yves` after you include the javascript file for credit card check inside the payment step template (e.g. `src//Yves/Checkout/Theme//checkout/payment.twig`) - -```php -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %}``` - -In order to display SEPA mandate text and references, apply next modifications to project templates: - -To display SEPA mandate text on summary page of checkout, add the following reference into `src//Yves/Checkout/Theme//checkout/summary.twig` -```php -{% raw %}{%{% endraw %} include '@payone/checkout/partials/summary-payment-details.twig' {% raw %}%}{% endraw %} -``` - -To display a link to the SEPA mandate in PDF format on checkout success page, add the following reference into `src//Yves/Checkout/Theme//checkout/success.twig` -```php -{% raw %}{%{% endraw %} include '@payone/checkout/partials/success-payment-details.twig' {% raw %}%}{% endraw %} -``` - -To display link to SEPA mandate in PDF format on order details page in customer cabinet, add the following reference into `src//Yves/Customer/Theme//order/details.twig` -```php -{% raw %}{%{% endraw %} include '@payone/order/partials/details-payment-data.twig' {% raw %}%}{% endraw %} -``` - -To adjust frontend appearance, provide following templates in your theme directory: - -* `src//Yves/Payone/Theme//direct_debit.twig` -* `src//Yves/Payone/Theme//index/get-file.twig` -* `src//Yves/Payone/Theme//checkout/partials/summary-payment-details.twig` -* `src//Yves/Payone/Theme//checkout/partials/success-payment-details.twig` -* `src//Yves/Payone/Theme//order/partials/details-payment-data.twig` - -## State Machine Integration - -The Payone module provides demo state machine for Direct Debit payment method which implements Pre-Authorization/Capture flow. It's also possible to implement Authorization flow using corresponding command. - -To enable the demo state machine, extend the configuration with following values: - -```php - 'PayoneDirectDebit', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneDirectDebit', -]; -``` - -## Direct Debit Payment Flow: - -1. When customer enters the payment details on checkout, a manage mandate request is submitted to Payone, which serves for automatic bank account data translation into IBAN/BIC pair(only for DE), IBAN/BIC validation and for SEPA mandate management (either an existing one will be used or a new one will be created). -2. If a new mandate was created, the customer is presented with a SEPA mandate text on checkout summary step. User agrees with SEPA mandate terms by placing an order. There's no agreement text displayed if existing SEPA mandate was found and was recognized by Payone. -3. On order placement, authorize (or preauthorize) command confirms user agreement with SEPA mandate terms. The customer is presented with a link to mandate in PDF format on successful order placement. Same link is available inside the order details page in customer cabinet. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.md deleted file mode 100644 index 26fa4b830fc..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: PayOne - Invoice Payment -description: Integrate invoice payment through Payone into the Spryker-based shop. -last_updated: May 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-invoice -originalArticleId: 587f7b7a-d089-48a1-9403-77c03cf2039c -redirect_from: - - /v1/docs/payone-invoice - - /v1/docs/en/payone-invoice - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-invoice-payment.html -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Payone/Theme//invoice.twig` - -## State Machine Integration - -Payone module provides a demo state machine for the Invoice payment method which implements Authorization flow. - -To enable the demo state machine, extend the configuration with following values: - -```php - 'PayoneInvoice', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneInvoice', -]; -``` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.md deleted file mode 100644 index 4a9b9d7adcc..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: PayOne - Online Transfer Payment -description: Integrate online transfer payment through Payone into the Spryker-based shop. -last_updated: May 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-online-trans -originalArticleId: 27db85b6-9676-45c0-926a-16b2e5438669 -redirect_from: - - /v1/docs/payone-online-trans - - /v1/docs/en/payone-online-trans - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-online-transfer-payment.html -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html ---- - -Supported online banking service providers are SofortBanking, Giropay, Electronic Payment Standard (Eps), PostFinance Card, PostFinance E-Finance, iDEAL, Przelewy24, and Bancontact. They are enabled through the integration with Payone, using the online transfer payment type. - -Each payment method is limited to certain set of store countries: - -* SofortBanking: DE, AT, CH, NL -* Giropay: DE -* Electronic Payment Standard (Eps): AT -* PostFinance Card, PostFinance E-Finance: CH -* iDEAL: NL -* Bancontact: BE - -The authorization of the transaction is done through a redirect and the customer has to execute the payment authorization. After the customer confirms the payment, their account is charged directly. - -## Front-end Integration -To adjust the frontend appearance, provide the following templates inside your theme directory: - -* `src//Yves/Payone/Theme//eps_online_transfer.twig` -* `src//Yves/Payone/Theme//giropay_online_transfer.twig` -* `src//Yves/Payone/Theme//ideal_online_transfer.twig` -* `src//Yves/Payone/Theme//instant_online_transfer.twig` -* `src//Yves/Payone/Theme//postfinance_card_online_transfer.twig` -* `src//Yves/Payone/Theme//postfinance_efinance_online_transfer.twig` -* `src//Yves/Payone/Theme//przelewy24_online_transfer.twig` -* `src//Yves/Payone/Theme//bancontact_online_transfer.twig` - -## State Machine Integration -Payone module provides a demo state machine for Online Transfer payment method which implements Authorization flow. Preauthorization/Capture is not possible for Online Transfer payment. - -To enable the demo state machine, extend the configuration with following values: -```php - 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_INSTANT_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_GIROPAY_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_IDEAL_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_POSTFINANCE_CARD_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_POSTFINANCE_EFINANCE_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_PRZELEWY24_ONLINE_TRANSFER => 'PayoneOnlineTransfer', - PayoneConfig::PAYMENT_METHOD_BANCONTACT_ONLINE_TRANSFER => 'PayoneOnlineTransfer', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneOnlineTransfer', -]; -``` - -## Online Transfer Payment Flow: -1. Customer selects the payment method and, if necessary, fills in the payment details on checkout. -2. On order placement, the customer is redirected to the payment providers page. Depending on results, the user is redirected back to the corresponding page (success page, error page or cancellation page) in the shop after that. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-paypal-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-paypal-payment.md deleted file mode 100644 index cf9073cd0c6..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-paypal-payment.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: PayOne - Paypal Payment -description: Integrate Paypal payment through Payone into the Spryker-based shop. -last_updated: May 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-paypal -originalArticleId: 4c111ceb-2da8-4651-b646-bb27377bd55d -redirect_from: - - /v1/docs/payone-paypal - - /v1/docs/en/payone-paypal - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-payment.html -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html ---- - -The payment using PayPal requires a redirect to PayPal website. When the customer is redirected to PayPal's website, he must authorize himself and he has the option to either cancel or validate the transaction. - -A concern regarding payment flows that require redirection on third party website pages is that you loose control over the customers action ( the customer can close the browser before accepting or canceling the transaction). If this is the case, PayPal sends an instant payment notification (IPN) to Payone, then Payone notifies Spryker. - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: `src//Yves/Payone/Theme//e_wallet.twig` - -PayPal Payment Integration with Payone: - -1.a `preAuthorize` command is submitted which leads to a redirect to PayPal webpage -2. redirect to PayPal webpage: -3. if browser is closed, a notification is sent to PayPal state machine -4. after the customer chooses to accept or to cancel the transaction, a redirect is done back to the shop; the redirect URL indicates the option selected by the user ( accept/cancel transaction) -5. a `captureCommand` is submitted if the customer has accepted the transaction on PayPals website. - -## State Machine Integration -Payone module provides a demo state machine for E-Wallet payment method which implements Preauthorization/Capture flow. - -To enable the demo state machine, extend the configuration with following values: - -```php - 'PayoneEWallet', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneEWallet', -]; -``` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.md deleted file mode 100644 index 9bff8f11392..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: PayOne - Prepayment -description: Integrate prepayment through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-prepayment -originalArticleId: 20225f1c-0df1-4498-97d2-6d7a6b7fabdd -redirect_from: - - /v1/docs/payone-prepayment - - /v1/docs/en/payone-prepayment - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-prepayment.html -related: - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -Prepayment method is a safe alternative to payments involving credit cards or debit cards (such as online banking transfer). Usually bank transfer would require manual processing to mark transaction as cancelled or completed, but the process is fully automated through the integration with the Payone platform. - -The payment status is transmitted to the shop via a notification from the payment provider(Payone). - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Payone/Theme//prepayment.twig` - -## State Machine Integration -Payone module provides a demo state machine for Prepayment payment method which implements Preauthorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'PayonePrePayment', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayonePrePayment', -]; -``` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.md deleted file mode 100644 index 56f7720b860..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: PayOne - Security Invoice Payment -description: Integrate security invoice payment through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-security-invoice -originalArticleId: 2bf618d1-3455-4791-954a-e295cb58cb5f -redirect_from: - - /v1/docs/payone-security-invoice - - /v1/docs/en/payone-security-invoice - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-security-invoice-payment.html -related: - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -## Front-End Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: `src//Yves/Payone/Theme//security_invoice.twig` - -## State Machine Integration - -Payone module provides a demo state machine for the Security Invoice payment method which implements Authorization flow. -To enable the demo state machine, extend the configuration with following values: - -```php - 'PayoneSecurityInvoice', - ]; - $config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayoneSecurityInvoice', - ]; - ``` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-express-checkout-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-express-checkout-payment.md deleted file mode 100644 index e14a2d6b53c..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-express-checkout-payment.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: PayOne - PayPal Express Checkout Payment -description: IntegratePaypal express checkout through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-paypal-express-checkout -originalArticleId: 426cb589-a971-4770-95ed-5e39d7948722 -redirect_from: - - /v1/docs/payone-paypal-express-checkout - - /v1/docs/en/payone-paypal-express-checkout - - /docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-paypal-payment.html-express-checkout -related: - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -The payment using PayPal requires redirect to PayPal website. When the customer is redirected to PayPal's website, he must authorize himself and he has the option to either cancel or validate the transaction. - -A concern regarding payment flows that require redirection on third party website pages is that you loose control over the customer's action (the customer can close the browser before accepting or canceling the transaction). If this is the case, PayPal sends an instant payment notification (IPN) to Payone, then Payone notifies Spryker. - -## Front-end Integration - -To adjust the frontend appearance, add the following templates in your theme directory: -`src//Yves/Cart/Theme//cart/parts/cart-summary.twig` - -Add the following code below the checkout button or anywhere you want depending on your design: -```php -{% raw %}{{{% endraw %} render(path('payone-checkout-with-paypal-button')) {% raw %}}}{% endraw %} -``` - -You can also implement your own button if you want the button to be loaded without separate call to the controller, or if you want to change the design. - -## Paypal Express Checkout Integration Description: - -* Once you click on the "Checkout with PayPal" button, the genericpayment request is sent to Payone with `setexpresscheckout` action and success, failure and back URLs. -* In the response we receive a workorderid which is used for all other operations until the capture request and PayPal redirect URL. -* We store wordorderid to quote and redirect customer to the URL provided by Payone. -* On the PayPal page, customer has to log in and approve the intention of paying for the desired goods. -* After the customer clicks the button, he is redirected to success or failure URL, provided by the shop in the first request to Payone. -* After redirection to success action, one more genericpayment request to Payone is made with action `getexpresscheckoutdetails`. -* Payone sends us information about the customer like email and shipment data. -* Then the order is placed in our shop. -* After placing the order, the pre-authorization call is sent to Payone (and through it to PayPal). Workorderid is sent to Payone with this request. -* Order status becomes "pre-authorized pending" after the response with status OK is received. - -## State Machine Integration - -Payone module provides a demo state machine for Paypal Express Checkout payment method which implements Preauthorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'PayonePaypalExpressCheckout', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayonePaypalExpressCheckout', -]; - ``` - -Note: You can find all needed configuration parameters in `config.dist.php` file inside Payone module. - -## Extra Configuration - -Express checkout redirects customer to the cart page if something goes wrong, so project developer should specify the cart route in project config: -``` - $config[PayoneConstants::PAYONE] = [
      -...
      -PayoneConstants::ROUTE_CART => CartControllerProvider::ROUTE_CART
      -]; -``` -Also you need to specify URLs, used by Paypal to redirect a customer to the right places: -```php - $config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_REDIRECT_EXPRESS_CHECKOUT_SUCCESS_URL] = sprintf( - '%s/payone/expresscheckout/load-details', - $config[ApplicationConstants::BASE_URL_YVES] -); -
      -$config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_REDIRECT_EXPRESS_CHECKOUT_FAILURE_URL] = sprintf( - '%s/payone/expresscheckout/error', - $config[ApplicationConstants::BASE_URL_YVES] -); -
      -$config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_REDIRECT_EXPRESS_CHECKOUT_BACK_URL] = sprintf( - '%s/payone/expresscheckout/back', - $config[ApplicationConstants::BASE_URL_YVES] -); -``` - -## Flow Diagram -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/BS+Payone/paypal-express-checkout-spryker-flow.png) diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-state-machine-commands-conditions-and-events.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-state-machine-commands-conditions-and-events.md deleted file mode 100644 index 5900bef379a..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/legacy-demoshop-integration/payone-state-machine-commands-conditions-and-events.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: PayOne - State Machine Commands, Conditions and Events -description: This article includes the state machine commands and conditions provided by Payone. -last_updated: May 24, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-state-machine-cmd-cond-evnt -originalArticleId: 4e466e3d-34bd-46e7-9216-23a740a28141 -redirect_from: - - /v1/docs/payone-state-machine-cmd-cond-evnt - - /v1/docs/en/payone-state-machine-cmd-cond-evnt -related: - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html ---- - -| Operation | Type | Description | -| --- | --- | --- | -| `Payone/PreAuthorize` | command | PreAuthorize allows to block money without capturing it directly. Possible responses are Approved, Redirect (in case of 3d secure for Credit Card, also for all Online Transfer and EWallet payments) and Error. Payment data is verified and stored. The amount is reserved on the customers account. | -| `Payone/PreAuthorizationIsApprovedPlugin` | condition | Checks if the preauthorization was successful | -| `Payone/PreAuthorizationIsErrorPlugin` | condition | Checks if the preauthorization had an error | -| `Payone/PreAuthorizationIsRedirectPlugin` | condition | Checks if the preauthorization send a redirect | -| cancel redirect | event | This event is issued if cancel redirect url was engaged. This could be used in project state machine to re-activate voucher codes or perform similiar actions | -| `Payone/PaymentIsAppointed` | condition | Checks if pre-authorization succeeded | -| `RedirectResponseAppointed` | event | A RedirectResponse event is triggered if a redirect related response message was sent | -| `Payone/Capture` | command | Capture allows to capture money that has been blocked with a preauthorize command. The card is now charged using the reserved amount. | -| `Payone/CaptureWithSettlement` | command | Used for PrePayment method. | -| `Payone/CaptureIsApprovedPlugin` | condition | Checks if the capture was approved | -| `Payone/PaymentIsCapture` | condition | Checks if capture succeeded | -| `Payone/Authorize` | command | Payment data is verified. Account is charged immediately. Possible responses are Approved, Redirect (in case of 3d secure for Credit Card, also for all Online Transfer and EWallet payments) and Error. Authorize allows to capture money immediately. | -| `Payone/AuthorizationIsApprovedPlugin` | condition | Checks if the authorization was successful | -| `Payone/AuthorizationIsErrorPlugin` | condition | Checks if the authorization had an error | -| `Payone/AuthorizationIsRedirectPlugin` | condition | Checks if the authorization send a redirect | -| Payone/PaymentIsPaid | condition | Checks if payment was paid in full | -| `Payone/PaymentIsUnderPaid` | condition | Checks if payment was made but with balance that is not settled | -| `Payone/PaymentIsOverpaid` | condition | Checks if total paid amount exceeds initial one | -| `PaymentNotificationReceived` | event | A `PaymentNotificationReceived` event is triggered successful processing of incoming payment status update notification | -| `Payone/Refund` | command | Refund allows to return money (in case of goods returns e.g.) | -| `Payone/RefundIsApprovedPlugin` | condition | `RefundIsApprovedPlugin` checks if the refund was approved | -| `Payone/RefundIsPossiblePlugin` | condition | `RefundIsPossiblePlugin` checks if IBAN/BIC is available in payment details | -| `Payone/PaymentIsRefund` | condition | Checks if refund suceeded | -| `Payone/Cancel` | command | Cancels pre-authorized amount. Could be called instead of Capture on order cancellation. | - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.md deleted file mode 100644 index add10f2b95f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: PayOne - Cash on Delivery -description: Integrate Cash on Delivery payment through Payone into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-cash-on-delivery -originalArticleId: 5421172b-292f-4fdb-a6d3-d02bec3dd912 -redirect_from: - - /v1/docs/payone-cash-on-delivery - - /v1/docs/en/payone-cash-on-delivery -related: - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -## Frontend Integration - -### Extending Checkout Page -
      -src/Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php - - ```php - provideClients($container); - - $container[static::PAYMENT_METHOD_HANDLER] = function () { - $paymentMethodHandler = new StepHandlerPluginCollection(); - $paymentMethodHandler->add(new PayoneHandlerPlugin(), PaymentTransfer::PAYONE_CASH_ON_DELIVERY); - - return $paymentMethodHandler; - }; - - $container[static::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugin = new SubFormPluginCollection(); - $paymentSubFormPlugin->add(new PayoneCashOnDeliverySubFormPlugin()); - - return $paymentSubFormPlugin; - }; - - return $container; - } - - protected function provideClients(Container $container) - { - $container[static::CLIENT_PAYONE] = function (Container $container) { - return $container->getLocator()->payone()->client(); - }; - return $container; - } -} -``` -
      -
      - - -## State Machine Integration - -### Extending the State Machine -
      -config/Shared/config_default.php - - ```php - 'PayoneCashOnDelivery', - ... -]; -``` -
      -
      - - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-integration-into-the-scos-project.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-integration-into-the-scos-project.md deleted file mode 100644 index a58907173c9..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-integration-into-the-scos-project.md +++ /dev/null @@ -1,433 +0,0 @@ ---- -title: PayOne - Integration into the SCOS Project -description: Integrate Payone into the Spryker Commerce OS by following the instructions from this article. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-integration-with-project-scos -originalArticleId: 6ca6a645-77f4-43ce-b7b8-c0a8562142ce -redirect_from: - - /v1/docs/payone-integration-with-project-scos - - /v1/docs/en/payone-integration-with-project-scos -related: - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html - - title: PayOne - Paypal Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-paypal-payment.html ---- - -**Objectives:** -* Place order with PayPal express checkout. -* Be redirected to summary page of standard checkout. -* Have shipping a method selector on summary page. - -## Frontend Update - -To make JavaScript and CSS styles enabled in the Suite, please update: -`/tsconfig.json` in section "include": - -```php -./vendor/spryker-eco/**/*", -``` - -Update `/frontend/settings.js`: - -add entry to 'paths': - -```php -// eco folders -eco: { - // all modules - modules: './vendor/spryker-eco' -}, -``` - -add one more directory to `module.exports.find.componentEntryPoints.dirs`: - -```php -path.join(context, paths.eco.modules) -``` - -Run `npm run yves` after applying these changes. -Due to the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: - -```xml -{% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} define data = { - backUrl: _view.previousStepUrl, - forms: { - payment: _view.paymentForm - }, - title: 'checkout.step.payment.title' | trans -} {% raw %}%}{% endraw %} - -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} embed molecule('form') with { - class: 'box', - data: { - form: data.forms.payment, - options: { - attr: { - id: 'payment-form' - } - }, - submit: { - enable: true, - text: 'checkout.step.summary' | trans - }, - cancel: { - enable: true, - url: data.backUrl, - text: 'general.back.button' | trans - } - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} for name, choices in data.form.paymentSelection.vars.choices {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} set paymentProviderIndex = loop.index0 {% raw %}%}{% endraw %} -
      {% raw %}{{{% endraw %} ('checkout.payment.provider.' ~ name) | trans {% raw %}}}{% endraw %}
      -
        - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
      • - {% raw %}{%{% endraw %} embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.value], - enableStart: false, - enableEnd: false - }, - embed: { - index: loop.index ~ '-' ~ paymentProviderIndex, - toggler: data.form.paymentSelection[key], - } - } only {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} block fieldset {% raw %}%}{% endraw %} - {% raw %}{{{% endraw %} form_row(embed.toggler, { - required: false, - component: molecule('toggler-radio'), - attributes: { - 'target-selector': '.js-payment-method-' ~ embed.index, - 'class-to-toggle': 'is-hidden' - } - }) {% raw %}}}{% endraw %} - - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -
      • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
      - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endembed {% raw %}%}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -Run `console cache:empty` afterwards to make this template used during rendering. - -## Backend Update - -First of all we need to provide a URL to Payone module, which will be used to redirect user when the quote is filled with data obtained from PayPal. - To achieve this, make the following steps: - -1. Add custom controller action to `src/Pyz/Yves/Checkout/Controller/CheckoutController.php`: - -```php -/** -* @return \Symfony\Component\HttpFoundation\RedirectResponse -*/ -public function paypalExpressCheckoutEntryPointAction() -{ -$this->getFactory() -->createExpressCheckoutHandler() -->fulfillPostConditionsUntilSummaryStep(); -return $this->redirectResponseInternal(CheckoutPageControllerProvider::CHECKOUT_SUMMARY); -} -``` -2. Register a new controller action in controller provider: - -```php -... -const CHECKOUT_PAYPAL_EXPRESS_CHECKOUT_ENTRY_POINT = 'checkout-paypal-express-checkout-entry-point'; -... -protected function defineControllers(Application $app) -{ -... -$this->createController('/{checkout}/paypal-express-checkout-entry-point', self::CHECKOUT_PAYPAL_EXPRESS_CHECKOUT_ENTRY_POINT, 'Checkout', 'Checkout', 'paypalExpressCheckoutEntryPoint') -->assert('checkout', $allowedLocalesPattern . 'checkout|checkout') -->value('checkout', 'checkout') -->method('GET'); -... -} -``` -3. Create `ExpressCheckoutHandler` class `src/Pyz/Yves/CheckoutPage/Handler/ExpressCheckoutHandler.php` with corresponding interface: - -```php -namespace Pyz\Yves\CheckoutPage\Handler; -use Generated\Shared\Transfer\ExpenseTransfer; -use Spryker\Client\Cart\CartClientInterface; -use Spryker\Shared\Shipment\ShipmentConstants; -class ExpressCheckoutHandler implements ExpressCheckoutHandlerInterface -{ -/** -* @var \Spryker\Client\Cart\CartClientInterface -*/ -protected $cartClient; -/** -* @param \Spryker\Client\Cart\CartClientInterface $cartClient -*/ -public function __construct(CartClientInterface $cartClient) -{ -$this->cartClient = $cartClient; -} -/** -* @return void -*/ -public function fulfillPostConditionsUntilSummaryStep() -{ -$quoteTransfer = $this->cartClient->getQuote(); -$quoteTransfer->addExpense( -(new ExpenseTransfer())->setType(ShipmentConstants::SHIPMENT_EXPENSE_TYPE) -); -} -} -``` - -4. Add `ExpressCheckoutHandler` related method in `src/Pyz/Yves/CheckoutPage/CheckoutPageFactory.php`: - -```php -/** -* @return \Pyz\Yves\CheckoutPage\Handler\ExpressCheckoutHandler -*/ -public function createExpressCheckoutHandler() -{ -return new ExpressCheckoutHandler( -$this->getCartClient() -); -} -``` - -5. Extend `ShipmentForm` class to override a property_path option (create `src/Pyz/Yves/Shipment/Form/ShipmentSubForm.php`): - -```php -namespace Pyz\Yves\Shipment\Form; -class ShipmentSubForm extends ShipmentForm -{ -/** -* @const string -*/ -const SHIPMENT_SELECTION_PROPERTY_PATH = self::SHIPMENT_SELECTION; -} -``` - -6. Adjust summary form by adding a shipment subform in `src/Pyz/Yves/CheckoutPage/Form/Steps/SummaryForm.php`: - -```php -class SummaryForm extends AbstractType -{ -/** -* Builds the form. -* -* This method is called for each type in the hierarchy starting from the -* top most type. Type extensions can further modify the form. -* -* @see FormTypeExtensionInterface::buildForm() -* -* @param \Symfony\Component\Form\FormBuilderInterface $builder The form builder -* @param array $options The options -* -* @return void -*/ -public function buildForm(FormBuilderInterface $builder, array $options) -{ -$builder->add( -'shipmentForm', -ShipmentSubForm::class, -array_merge( -$options, -[ -'data_class' => ShipmentTransfer::class, -'property_path' => 'shipment', -] -) -); -} -/** -* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver -* -* @return void -*/ -public function configureOptions(OptionsResolver $resolver) -{ -$resolver->setRequired('shipmentMethods'); -$resolver->setDefaults([ -'data_class' => QuoteTransfer::class, -]); -} -/** -* Returns the name of this type. -* -* @return string The name of this type -*/ -public function getName() -{ -return 'summaryForm'; -} -} -``` - -7. Create shipment subform template for summary page in `src/Pyz/Yves/CheckoutPage/Theme/default/checkout/partials/shipment.twig`: - -```php - -
      - - {% raw %}{%{% endraw %} set shipmentForm = summaryForm.shipmentForm {% raw %}%}{% endraw %} - -
      -
        - - {% raw %}{%{% endraw %} for name, choices in shipmentForm.idShipmentMethod.vars.choices {% raw %}%}{% endraw %} - -

        {% raw %}{{{% endraw %} name {% raw %}}}{% endraw %}

        - - {% raw %}{%{% endraw %} for key, choice in choices {% raw %}%}{% endraw %} -
      • - -
      • - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} - {% raw %}{%{% endraw %} endfor {% raw %}%}{% endraw %} -
      -
      -
      -``` - -8. Update summary twig template in `src/Pyz/Yves/CheckoutPage/Theme/default/checkout/summary.twig`. -Move `"form_start"` expression to the top of a content section and `"form_end"` to the end: - -```php -... -{% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -{% raw %}{{{% endraw %} form_start(summaryForm, {'attr': {'class': 'row'{% raw %}}}{% endraw %}) {% raw %}}}{% endraw %} -... -... -... -{% raw %}{{{% endraw %} form_end(summaryForm) {% raw %}}}{% endraw %} -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} -``` - -9. Remove `{% raw %}{%{% endraw %} include '@checkout/checkout/partials/voucher-form.twig' {% raw %}%}{% endraw %}` include from summary template. Include `checkout/partials/shipment.twig` in your summary template: - -```php - ... -{% raw %}{{{% endraw %} 'checkout.step.summary.shipping' | trans {% raw %}}}{% endraw %} - {% raw %}{%{% endraw %} include '@checkout/checkout/partials/shipment.twig' {% raw %}%}{% endraw %} - ... -``` -10. Add shipment form data provider and remove voucher form from summary form collection(It is just an example, if you need voucher form, you need to adjust summary page on your own). In `src/Pyz/Yves/CheckoutPage/Form/FormFactory.php`: - -```php -/** -* @param \Generated\Shared\Transfer\QuoteTransfer -* -* @return \Spryker\Yves\StepEngine\Form\FormCollectionHandlerInterface -*/ -public function createSummaryFormCollection() -{ -return $this->createFormCollection($this->createSummaryFormTypes(), $this->getShipmentFormDataProviderPlugin()); -} - -.... - - -/** -* @return \Symfony\Component\Form\FormTypeInterface[] -*/ -protected function createSummaryFormTypes() -{ -return [ -$this->createSummaryForm(), -//$this->createVoucherFormType(), -]; -} -``` -11. Handle shipment form data, when summary form is submitted. Inject two dependencies into `src/Pyz/Yves/CheckoutPage/Process/Steps/SummaryStep.php`: - -```php -/** -* @var \Spryker\Client\Calculation\CalculationClientInterface -*/ -protected $calculationClient; -/** -* @var \Spryker\Yves\StepEngine\Dependency\Plugin\Handler\StepHandlerPluginCollection -*/ -protected $shipmentPlugins; -/** -* @param \Spryker\Yves\ProductBundle\Grouper\ProductBundleGrouperInterface $productBundleGrouper -* @param \Spryker\Client\Cart\CartClientInterface $cartClient -* @param \Spryker\Client\Calculation\CalculationClientInterface $calculationClient -* @param \Spryker\Client\Calculation\CalculationClientInterface $shipmentPlugins -* @param string $stepRoute -* @param string $escapeRoute -*/ -public function __construct( -ProductBundleGrouperInterface $productBundleGrouper, -CartClientInterface $cartClient, -CalculationClientInterface $calculationClient, -StepHandlerPluginCollection $shipmentPlugins, -$stepRoute, -$escapeRoute -) { -parent::__construct($stepRoute, $escapeRoute); -$this->productBundleGrouper = $productBundleGrouper; -$this->cartClient = $cartClient; -$this->calculationClient = $calculationClient; -$this->shipmentPlugins = $shipmentPlugins; -} -``` - -12. Extend `execute` method: - -```php -/** -* @param \Symfony\Component\HttpFoundation\Request $request -* @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer -* -* @return \Generated\Shared\Transfer\QuoteTransfer -*/ -public function execute(Request $request, AbstractTransfer $quoteTransfer) -{ -$shipmentHandler = $this->shipmentPlugins->get(CheckoutPageDependencyProvider::PLUGIN_SHIPMENT_STEP_HANDLER); -$shipmentHandler->addToDataClass($request, $quoteTransfer); -$this->calculationClient->recalculate($quoteTransfer); -$this->markCheckoutConfirmed($request, $quoteTransfer); -return $quoteTransfer; -} -``` - -Now, go to checkout and try placing an order with Paypal express checkout. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-paypal-express-checkout-payment.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-paypal-express-checkout-payment.md deleted file mode 100644 index b93581c3463..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-paypal-express-checkout-payment.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: PayOne - PayPal Express Checkout Payment -description: Integrate PayPal Express Checkout payment through Payone into the Spryker-based shop. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-paypal-express-checkout-scos -originalArticleId: ecbbade2-074e-4f71-8603-91fcb84d9f82 -redirect_from: - - /v1/docs/payone-paypal-express-checkout-scos - - /v1/docs/en/payone-paypal-express-checkout-scos ---- - -The payment using PayPal requires redirect to PayPal website. When the customer is redirected to PayPal's website, they have to authorize and after that either cancel or validate the transaction. - -A concern regarding payment flows that require redirection to third party website pages is that you loose control over the customer's action (the customer can close the browser before accepting or canceling the transaction). If this is the case, PayPal sends an instant payment notification (IPN) to Payone, then Payone notifies Spryker. - -## Front-End Integration -To adjust the frontend appearance, add the following templates in your theme directory: - -`src//Yves/CartPage/Theme/default/components/molecules/cart-summary/cart-summary.twig` -Add the following code below the checkout button or anywhere you want depending on your design: - -```bash -{% raw %}{{{% endraw %} render(path('payone-checkout-with-paypal-button')) {% raw %}}}{% endraw %} -``` -You can also implement your own button if you want the button to be loaded without separate call to the controller, or if you want to change the design. - -## Paypal Express Checkout Flow Description: -* Once you click on the "Checkout with PayPal" button, the genericpayment request is sent to Payone with `setexpresscheckout` action and success, failure and back URLs. -* In the response we receive a workorderid which is used for all other operations until the capture request and PayPal redirect URL. -* We store wordorderid to quote and redirect customer to the URL provided by Payone. -* On the PayPal page, customer has to log in and approve the intention of paying for the desired goods. -* After the customer clicks the button, he is redirected to success or failure URL, provided by the shop in the first request to Payone. -* After redirection to success action, one more genericpayment request to Payone is made with action `getexpresscheckoutdetails`. -* Payone sends us information about the customer like email and shipment data. -* User is redirected to the page(summary page as default) of standard checkout. -* After placing the order, the pre-authorization call is sent to Payone (and through it to PayPal). Workorderid is sent to Payone with this request. -* Order status becomes "pre-authorized pending" after the response with status OK is received. - -## State Machine Integration -Payone module provides a demo state machine for Paypal Express Checkout payment method which implements Preauthorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'PayonePaypalExpressCheckout', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'PayonePaypalExpressCheckout', -]; - ``` - -Note: You can find all needed configuration parameters in `config.dist.php` file inside Payone module. - -## Configuration Parameters Description: - -To understand where to go, if control over express checkout process should be handed over to the project, -Payone module needs several urls to be confgured in the global config: - -`PayoneConstants::PAYONE_STANDARD_CHECKOUT_ENTRY_POINT_URL` - URL, which is used when express checkout details are loaded to quote. -Normally, its an URL to summary page or to some middleware URL, where additional logic can be added before going to checkout (e.g. filling some post conditions which are required to get to summary page in Spryker step-engine). - -`PayoneConstants::PAYONE_EXPRESS_CHECKOUT_FAILURE_URL` - URL where user is redirected when payone fails for some reason. - -`PayoneConstants::PAYONE_EXPRESS_CHECKOUT_BACK_URL` - URL where user is redirected when he/she goes back to Paypal side. - -```php - $config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_STANDARD_CHECKOUT_ENTRY_POINT_URL] = sprintf( - '%s/checkout/paypal-express-checkout-entry-point', - $config[ApplicationConstants::BASE_URL_YVES] -); - -$config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_EXPRESS_CHECKOUT_FAILURE_URL] = sprintf( - '%s/cart', - $config[ApplicationConstants::BASE_URL_YVES] -); - -$config[PayoneConstants::PAYONE][PayoneConstants::PAYONE_EXPRESS_CHECKOUT_BACK_URL] = sprintf( - '%s/cart', - $config[ApplicationConstants::BASE_URL_YVES] -); - -``` - -## Extra Configuration: -To add possibility to skip standard checkout steps for guest user, customer step should be extended: -Open `Yves/CheckoutPage/Process/Steps/CustomerStep.php` file in your project and add the following code to `postCondition` and `requireInput` methods: - -```php - public function requireInput(AbstractTransfer $quoteTransfer) - { - if ($this->isCustomerLoggedIn() || $quoteTransfer->getIsGuestExpressCheckout()) { - return false; - } - - return true; - } - ``` - - ```php - public function postCondition(AbstractTransfer $quoteTransfer) - { - if ($this->isCustomerInQuote($quoteTransfer) === false) { - return false; - } - - if ($quoteTransfer->getIsGuestExpressCheckout()) { - return true; - } - - if ($this->isGuestCustomerSelected($quoteTransfer)) { - if ($this->isCustomerLoggedIn()) { - // override guest user with logged in user - return false; - } - - return true; - } - ... - } - ``` diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-risk-check-and-address-check.md b/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-risk-check-and-address-check.md deleted file mode 100644 index d553e3066bd..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/bs-payone/scos-integration/payone-risk-check-and-address-check.md +++ /dev/null @@ -1,340 +0,0 @@ ---- -title: PayOne - Risk Check and Address Check -description: In this article, you will get information on the Payone risk check and address check services. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payone-risk-check-address-check-scos -originalArticleId: 1dd79446-e12c-4a46-9f1c-1ac090a2426a -redirect_from: - - /v1/docs/payone-risk-check-address-check-scos - - /v1/docs/en/payone-risk-check-address-check-scos -related: - - title: PayOne - Cash on Delivery - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/scos-integration/payone-cash-on-delivery.html - - title: PayOne - Authorization and Preauthorization Capture Flows - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-authorization-and-preauthorization-capture-flows.html - - title: PayOne - Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-invoice-payment.html - - title: PayOne - Prepayment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-prepayment.html - - title: PayOne - Direct Debit Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-direct-debit-payment.html - - title: PayOne - Security Invoice Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-security-invoice-payment.html - - title: PayOne - Online Transfer Payment - link: docs/scos/user/technology-partners/page.version/payment-partners/bs-payone/legacy-demoshop-integration/payone-payment-methods/payone-online-transfer-payment.html ---- - -On the project level, you should override execute and postCondition methods of `SprykerShop\Yves\CheckoutPage\Process\Steps\AddressStep`. - -
      - src/Pyz/Yves/CheckoutPage/Process/Steps/AddressStep.php - -```php -payoneClient = $payoneClient; - } - - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - ... - $responseTransfer = $this->payoneClient->sendAddressCheckRequest($quoteTransfer); - $quoteTransfer->setIsAddressValid($responseTransfer->getStatus() === static::ADDRESS_CHECK_STATUS_VALID); - ... - } - - /** - * @param \Generated\Shared\Transfer\QuoteTransfer|\Spryker\Shared\Kernel\Transfer\AbstractTransfer $quoteTransfer - * - * @return bool - */ - public function postCondition(AbstractTransfer $quoteTransfer) - { - ... - - if (!$quoteTransfer->getIsAddressValid()) { - return false; - } - - ... - } -} -``` -
      -
      - -Also, `src/Pyz/Yves/CheckoutPage/Process/StepFactory.php` should be updated on the project level. - -
      -src/Pyz/Yves/CheckoutPage/Process/StepFactory.php - -```php -payoneClient = $payoneClient; - } - - ... - - /** - * @return \Pyz\Yves\CheckoutPage\Process\Steps\AddressStep - */ - public function createAddressStep() - { - return new AddressStep( - $this->getCustomerClient(), - $this->getCalculationClient(), - CheckoutPageControllerProvider::CHECKOUT_ADDRESS, - HomePageControllerProvider::ROUTE_HOME, - $this->payoneClient - ); - } - - ... -} -``` -
      -
      - -## Consumer Score Integration - -On the project level, you should override the execute method of `SprykerShop\Yves\CheckoutPage\Process\Steps\AddressStep`. - -
      -src/Pyz/Yves/CheckoutPage/Process/Steps/ShipmentStep.php - - ```php -payoneClient = $payoneClient; - } - - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $responseTransfer = $this->payoneClient->sendConsumerScoreRequest($quoteTransfer); - $quoteTransfer->setConsumerScore($responseTransfer->getScore()); - return parent::execute($request, $quoteTransfer); - } -} -``` -
      -
      - -`src/Pyz/Yves/CheckoutPage/Process/StepFactory.php` should be updated: - -
      -src/Pyz/Yves/CheckoutPage/Process/Steps/ShipmentStep.php - - ```php -payoneClient = $payoneClient; - } - - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $responseTransfer = $this->payoneClient->sendConsumerScoreRequest($quoteTransfer); - $quoteTransfer->setConsumerScore($responseTransfer->getScore()); - return parent::execute($request, $quoteTransfer); - } -} -``` -
      -
      - -`src/Pyz/Yves/CheckoutPage/Process/StepFactory.php` should be updated: - -
      -src/Pyz/Yves/CheckoutPage/Process/StepFactory.php - - ```php -payoneClient = $payoneClient; - } - - ... - - public function createShipmentStep() - { - return new ShipmentStep( - $this->getCalculationClient(), - $this->getProvidedDependency(CheckoutPageDependencyProvider::PLUGIN_SHIPMENT_HANDLER), - CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - HomePageControllerProvider::ROUTE_HOME, - $this->payoneClient - ); - } - - ... -} -``` -
      -
      - -`src/Pyz/Zed/Payment/PaymentDependencyProvider.php` should be updated: - -
      -src/Pyz/Zed/Payment/PaymentDependencyProvider.php - - ```php - -
      - -
      Now Payone is ready for filtering Payment methods. Configuration for each score result should be defined in the config: - -
      -Example of configuration for score results - - ```php - [ - PayoneConfig::PAYMENT_METHOD_INVOICE, - PayoneConfig::PAYMENT_METHOD_CREDIT_CARD, - ], - PayoneConstants::PAYONE_YELLOW_SCORE_AVAILABLE_PAYMENT_METHODS => [ - PayoneConfig::PAYMENT_METHOD_EPS_ONLINE_TRANSFER - ], - PayoneConstants::PAYONE_RED_SCORE_AVAILABLE_PAYMENT_METHODS => [ - PayoneConfig::PAYMENT_METHOD_PRE_PAYMENT - ], - PayoneConstants::PAYONE_UNKNOWN_SCORE_AVAILABLE_PAYMENT_METHODS => [ - PayoneConfig::PAYMENT_METHOD_CREDIT_CARD, - PayoneConfig::PAYMENT_METHOD_EPS_ONLINE_TRANSFER, - PayoneConfig::PAYMENT_METHOD_PRE_PAYMENT, - ], - - //Also you should define the check types for bot requests - PayoneConstants::PAYONE_ADDRESS_CHECK_TYPE => 'BA', - PayoneConstants::PAYONE_CONSUMER_SCORE_TYPE => 'IH', -... -``` -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop.md deleted file mode 100644 index 858e5a7b345..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Computop -description: Enable merchants and white label customers to process global multichannel payments by integrating Computop into the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop -originalArticleId: cfcb1930-27f2-4c4c-82d9-0a663b58bc90 -redirect_from: - - /v1/docs/computop - - /v1/docs/en/computop -related: - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Сredit Сard payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -## Partner Information - - [ABOUT COMPUTOP](https://www.computop.com/de/) -Computop is a leading international Payment Service Provider that enables merchants and white label customers to process global multichannel payments. Computop’s state of the art and wholly owned payment platform Computop Paygate offers seamless solutions for mobile, online and in store payment transactions. All transactions processed by Computop Paygate are secure as our platform is PCI certified. - -Computop offers a global payment management solution that is connected to over 350 payment methods and acquirer connections worldwide, customizable fraud prevention, tokenization and other value added services like currency conversion and debt management that result in secure transaction processing and higher conversion rates. - -Paygate is scalable and favoured by merchants in the travel, gaming, gambling, digital, hospitality, and the retail industry. Prebuilt payment and fraud management integration cartridges or modules are available for leading ERP and shop system solutions including demandware, hybris, intershop, Magento, and IBM Websphere. - -Founded in 1997, Computop is a global player for the 21st century. Headquartered in Bamberg, Germany, the company has sales operations in New York, London, and Shanghai. Computop is trusted by the largest global brands worldwide including Samsung, The Otto Group, C&A, Fossil, Metro Cash & Carry, and Swarovski. - -The Computop payment partner is shipped with the following payment methods: - -* Credit Card -* Direct Debit -* EasyCredit -* iDeal -* Paydirekt -* PayNow -* PayPal -* SofortÜberweisung - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-credit-card.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-credit-card.md deleted file mode 100644 index 75c696f017a..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-credit-card.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Computop - Credit Card -description: Integrate Credit Card payment through Computop into the Spryker-based shop. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-credit-card -originalArticleId: bf6eec69-71e4-4fc9-9539-598e9d60c27c -redirect_from: - - /v1/docs/computop-credit-card - - /v1/docs/en/computop-credit-card -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-credit-card-flow-example.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//credit_card.twig` - -## State Machine Integration - -The Computop provides a demo state machine for the Credit Card payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopCreditCard', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopCreditCard', -]; -``` - -## Credit Card Payment Flow - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the to Computop (Pay gate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop).The customer sets up all data just after redirect to Computop. - Init action: "Order". -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId` On error, the customer will be redirected to "Payment" step with the error message by defaul. Response data is stored in the DB. -3. Authorization is added right after success init action by default. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details: - -For partial capturing: - -1. Case: Merchant uses neither ETM nor PCN (`PseudoCardNumber`). After authorization has been done, you are able to do one capture. This can be a partial or a complete capture of the authorized amount. After the capture is performed you cannot do another capture. If it is a partial capture, the rest of the initial authorized amount is released. -2. Case: Merchant uses ETM (Extended Transactions Management). You can do partial captures as long as the as the initial amount of the authorization has not been reached or you send `FinishAuth=Y` with the last capture you like to do. (see page 83 of Computop documentation) -3. Case: Merchant uses PCN. With the authorization request you get back the PCN and other credit card parameter (Expiry Date, Brand). PCN and the other parameters can be stored. - -You capture the full amount of the authorization via `capture.aspx` => Nothing else has to be done. - -You capture a partial amount of the authorization => The rest of the amount forfeited. To do the next partial capture, you have to use the PCN with the `direct.aspx` (page 53 of Computop documentation) and the additional parameter VBV=NO in the request to get a new authorization. After that you proceed as described above. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-crif.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-crif.md deleted file mode 100644 index dff2fc6767e..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-crif.md +++ /dev/null @@ -1,223 +0,0 @@ ---- -title: Integrating the CRIF payment method for Computop -description: In this article, you can find information on the CRIF process for Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-crif -originalArticleId: 5e8627fe-46af-4e22-a8c8-608c2107354e -redirect_from: - - /v1/docs/computop-crif - - /v1/docs/en/computop-crif -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -## General Information About CRIF - -Popular with customers, risky for the merchant: Payment methods such as direct debit or purchase on account involve a high level of default risk. Computop Paycontrol, an automated credit rating with all standard credit agencies, combines flexibility and payment security for online business. With Paycontrol you can, amongst other things, automatically obtain information from CRIF without having to connect your shop system to individual information interfaces. - -CRIF (formerly Deltavista) provides information on about 80 million individuals, 6 million companies, and 10 million payment, register, and address records from Germany, Austria and Switzerland. -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/CRIF-process-flow.png) - -## Calling the Interface - -To carry out a CRIF order check via a Server-to-Server connection, go to [that URL](https://www.computop-paygate.com/deltavista.aspx). - -For security reasons, Paygate rejects all payment requests with formatting errors. Therefore please use the correct data type for each parameter. - -## Integration with Checkout. -Integrated into Computop module CRIF provides risk check functionality based on customer, cart, address and other data. CRIF analyzes information and provides result as color response code (GREEN, YELLOW, RED) which corresponds to potential risks. Based on this result payment methods should be filtered. Only allowed payment methods should be displayed on checkout payment page. Module provides possibility to configure list of allowed payment methods for each response color. - -1. First of all you need to add CRIF specific configurations into `config_default.php` file: - -
      -config/Shared/config_default.php - -```php -$config[ComputopConstants::CRIF_ENABLED] = false; // Enable or disable CRIF functionality. -$config[ComputopApiConstants::CRIF_ACTION] = 'https://www.computop-paygate.com/deltavista.aspx'; //CRIF API call enpoint. -$config[ComputopApiConstants::CRIF_PRODUCT_NAME] = ''; //This is checking method, could be: QuickCheckConsumer, CreditCheckConsumer, QuickCheckBusiness, CreditCheckBusiness, IdentCheckConsumer -$config[ComputopApiConstants::CRIF_LEGAL_FORM] = ''; // Legal form of the person/company sought, could be: PERSON, COMPANY, UNKNOWN - -$config[ComputopConstants::CRIF_GREEN_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns GREED code, for example: computopCreditCard, computopDirectDebit and so on. -$config[ComputopConstants::CRIF_YELLOW_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns YELLOW code, for example: computopPaydirekt, computopEasyCredit and so on. -$config[ComputopConstants::CRIF_RED_AVAILABLE_PAYMENT_METHODS] = []; //List of allowed payment methods if CRIF returns RED code, for example: computopSofort, computopPayPal and so on. -``` -
      -
      - -2. Extend `ShipmentStep` to add CRIF risk check call before checkout payment step: - -
      -\Pyz\Yves\CheckoutPage\Process\Steps\ShipmentStep - -```php -computopClient = $computopClient; - } - - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return \Generated\Shared\Transfer\QuoteTransfer - */ - public function execute(Request $request, AbstractTransfer $quoteTransfer) - { - $quoteTransfer = parent::execute($request, $quoteTransfer); - - return $this->computopClient->performCrifApiCall($quoteTransfer); - } -} -``` -
      -
      - -3. Extend `StepFactory` to update shipment checkout step: - -
      -\Pyz\Yves\CheckoutPage\Process\StepFactory - -```php -getCalculationClient(), - $this->getShipmentPlugins(), - CheckoutPageControllerProvider::CHECKOUT_SHIPMENT, - HomePageControllerProvider::ROUTE_HOME, - $this->getComputopClient() - ); - } - - /** - * @return \SprykerEco\Client\Computop\ComputopClientInterface - */ - public function getComputopClient(): ComputopClientInterface - { - return $this->getProvidedDependency(CheckoutPageDependencyProvider::CLIENT_COMPUTOP); - } -} -``` -
      -
      - -4. Extend `CheckoutPageFactory` for project level `StepFactory` usage: - -
      -\Pyz\Yves\CheckoutPage\CheckoutPageFactory - -```php - -
      - -An example of the configuration can be taken from `vendor/spryker-eco/computop/config/config.dist.php` file. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-direct-debit.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-direct-debit.md deleted file mode 100644 index 5cfe3797cb3..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-direct-debit.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Integrating the Direct Debit payment method for Computop -description: Integrate direct debit payment through Computop into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-direct-debit -originalArticleId: 96fd00fd-a9b0-42f4-bb17-219b1619f42e -redirect_from: - - /v1/docs/computop-direct-debit - - /v1/docs/en/computop-direct-debit -related: - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - - Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-direct-debit-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//direct_debit.twig` - -## State Machine Integration -The Computop provides a demo state machine for Direct Debit payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopDirectDebit', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopDirectDebit', -]; -``` - -## Direct Debit Payment Flow: - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. Init action: "Authorization". There is no Order call provided for this payment method. But Authorization call is working as Order call - without holding money. There is no call for holding money for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details: -For partial refunds: -1. Partial refunds are possible for direct debit transactions. -2. But please note, that you can not test it in test mode. -3. If you want to test it, you have to say it afterwards to Computop help desk, so that they can prepare the transaction. - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-easy-credit.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-easy-credit.md deleted file mode 100644 index 93555bac191..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-easy-credit.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Integrating the Easy Credit payment method for Computop -description: Integrate Easy Credit payment through Computop into the Spryker-based shop. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-easy-credit -originalArticleId: 9fe4c81a-900f-452a-b078-23d04f144688 -redirect_from: - - /v1/docs/computop-easy-credit - - /v1/docs/en/computop-easy-credit -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-easy-credit-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//easy_credit.twig` - -## State Machine Integration -The Computop provides a demo state machine for Easy Credit payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopEasyCredit', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopEasyCredit', -]; -``` - -## Easy Credit Payment Flow: - -1. - There is a radio button on "Payment" step. - After submitting the order the customer will be redirected to the Computop (Paygate form implementation). - The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); - Customer sets up all data just after the redirect to Computop. - Init action: "Order". -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Status call is added right after the success init action. On requests, Spryker will use <`payId` parameter stored in the DB to identify a payment. Response data is stored in the DB. -4. Authorization is added by default right after place order. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-ideal.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-ideal.md deleted file mode 100644 index ec7c106b75d..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-ideal.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Integrating the iDeal payment method for Computop -description: Integrate iDeal payment through Computop into the Spryker-based shop. -last_updated: Jan 27, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-ideal -originalArticleId: 12a62ff8-1e79-4c15-a8a8-a3c23ba93764 -redirect_from: - - /v1/docs/computop-ideal - - /v1/docs/en/computop-ideal -related: - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-ideal-flow-example.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//ideal.twig` - -## State Machine Integration - -The Computop provides a demo state machine for iDeal payment method which implements Capture flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopIdeal', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopIdeal', -]; -``` - -## iDeal Payment Flow: - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, f.e. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Capture". There are no Order and Authorization calls provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Refund action is implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paydirekt.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paydirekt.md deleted file mode 100644 index 1c0d85394b5..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paydirekt.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Integrating the Paydirekt payment method for Computop -description: Integrate Paydirekt payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paydirekt -originalArticleId: 799491cc-dc45-4820-a81a-6fc9455bbddd -redirect_from: - - /v1/docs/computop-paydirekt - - /v1/docs/en/computop-paydirekt -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-paydirekt-flow-example.png) - -## Front-end Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//paydirekt.twig` - -## State Machine Integration -The Computop provides a demo state machine for Paydirekt payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopPaydirekt', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPaydirekt', -]; -``` - -## Paydirekt Payment Flow - -1. There is a radio button on "Payment" step. - After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of 'data' parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Authorization". There is no Order call provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details - - Credits are possible up to 200% of the captured amount if such setup is enabled for the merchant and that payment method within Paygate by Computop helpdesk. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paynow.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paynow.md deleted file mode 100644 index add64875e5d..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paynow.md +++ /dev/null @@ -1,364 +0,0 @@ ---- -title: Integrating the PayNow payment method for Computop -description: Integrate PayNow payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paynow -originalArticleId: 042e86fb-68fb-4f57-a6de-d77e851c5836 -redirect_from: - - /v1/docs/computop-paynow - - /v1/docs/en/computop-paynow -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - - Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop_paynow.png) - -## Front-end Integration - -To adjust the frontend appearance, provide the following templates in your theme directory: `src//Yves/Computop/Theme//paynow.twig` - -## State Machine Integration - -The Computop provides a demo state machine for the PayNow payment method which implements `Authorization/Capture` flow. - -To enable the demo state machine, extend the configuration with the following values: -```php - 'ComputopPayNow01', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPayNow01', - ]; - ``` - - ### Checkout Integration - -Add the following lines to `Yves\Checkout\CheckoutDependencyProvider.php` -```php -$container[static::PAYMENT_METHOD_HANDLER] = function () { - $paymentMethodHandler = new StepHandlerPluginCollection(); - ..... - $paymentMethodHandler->add(new ComputopPaymentHandlerPlugin(), PaymentTransfer::COMPUTOP_PAY_NOW); - - return $paymentMethodHandler; -}; - -$container[static::PAYMENT_SUB_FORMS] = function () { - $paymentSubFormPlugin = new SubFormPluginCollection(); - ..... - $paymentSubFormPlugin->add(new PayNowSubFormPlugin()); - - return $paymentSubFormPlugin; -}; - -protected function provideClients(Container $container) -{ - $container = parent::provideClients($container); - - ..... - - $container[static::CLIENT_COMPUTOP] = function (Container $container) { - return $container->getLocator()->computop()->client(); - }; - - return $container; -} -``` - -Computop PayNow payment method also provides a new Checkout Step for filling the Credit Card data and sending it to the Computop paygate. You have to create `Yves/Checkout/Process/Steps/PayNowStep.php` class with the following content: -
      - Click here to expand the code sample - - ```php - isMethodPayNow($quoteTransfer)) { - return true; - } - - return false; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - public function postCondition(AbstractTransfer $quoteTransfer) - { - return true; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return array - */ - public function getTemplateVariables(AbstractTransfer $quoteTransfer) - { - return [ - 'data' => $quoteTransfer->getPayment()->getComputopPayNow()->getData(), - 'len' => $quoteTransfer->getPayment()->getComputopPayNow()->getLen(), - 'merchant' => $quoteTransfer->getPayment()->getComputopPayNow()->getMerchantId(), - 'action' => $quoteTransfer->getPayment()->getComputopPayNow()->getUrl(), - 'brandOptions' => $this->getBrandOptions(), - ]; - } - - /** - * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer - * - * @return bool - */ - protected function isMethodPayNow(AbstractTransfer $quoteTransfer) - { - return $quoteTransfer->getPayment()->getPaymentSelection() === ComputopConfig::PAYMENT_METHOD_PAY_NOW; - } - - /** - * @return array - */ - protected function getBrandOptions() - { - return [ - 'VISA' => 'Visa', - 'MasterCard' => 'Master Card', - 'AMEX' => 'American Express', - 'DINERS' => 'Diners Club', - 'JCB' => 'JCB', - 'CBN' => 'CBN', - 'SWITCH' => 'Switch', - 'SOLO' => 'Solo', - ]; - } -} -``` -
      -
      - -Then you need to add it to `Yves/Checkout/Process/StepFactory.php` right after the `PlaceOrder` step and before the `Success` step. -```php -protected function createPayNowStep() -{ - return new PayNowStep( - CheckoutControllerProvider::CHECKOUT_COMPUTOP_PAYNOW, - ApplicationControllerProvider::ROUTE_HOME - ); -} - -public function createStepCollection() -{ - $stepCollection = new StepCollection( - $this->getUrlGenerator(), - CheckoutControllerProvider::CHECKOUT_ERROR - ); - - $stepCollection - .... - ->addStep($this->createPlaceOrderStep()) - ->addStep($this->createPayNowStep()) - ->addStep($this->createSuccessStep()); - - return $stepCollection; -} -``` - -Also you need to add action to `Yves/Checkout/Controller/CheckoutController.php` -```php -public function paynowAction(Request $request) -{ - return $this->createStepProcess()->process($request); -} -``` - -And define this action in `Yves/Checkout/Plugin/Provider/CheckoutControllerProvider.php` -```php -protected function defineControllers(Application $app) -{ - $allowedLocalesPattern = $this->getAllowedLocalesPattern(); - - ..... - - $this->createController('/{checkout}/computop/paynow', self::CHECKOUT_COMPUTOP_PAYNOW, 'Checkout', 'Checkout', 'paynow') - ->assert('checkout', $allowedLocalesPattern . 'checkout|checkout') - ->value('checkout', 'checkout') - ->method('GET|POST'); -} -``` - -The final step is to create a template for rendering `PayNow` step in `Yves/Checkout/Theme/default/checkout/paynow.twig` - -
      - Click here to expand the code sample - - ```xml -{% raw %}{%{% endraw %} extends "@checkout/layout.twig" {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block breadcrumb {% raw %}%}{% endraw %}{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - - {% raw %}{%{% endraw %} block content {% raw %}%}{% endraw %} -
      -
      -
      -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      - - - - -
      -
      - -
      -
      -
      -
      -
      -
      -{% raw %}{%{% endraw %} endblock {% raw %}%}{% endraw %} - ``` -
      -
      - -To make this specific step work only with PayNow payment method we have to update `Yves/Checkout/Process/Steps/PlaceOrderStep.php` -```php -public function execute(Request $request, AbstractTransfer $quoteTransfer) -{ - if ($this->isPaymentPayNow($quoteTransfer) && $this->isComputopPaymentExist($quoteTransfer)) { - return $quoteTransfer; - } - - $quoteTransfer = parent::execute($request, $quoteTransfer); - - if ($this->isPaymentPayNow($quoteTransfer)) { - $this->setComputopInitData($quoteTransfer); - } - - return $quoteTransfer; -} - -protected function isPaymentPayNow(QuoteTransfer $quoteTransfer) -{ - return $quoteTransfer->getPayment()->getPaymentSelection() === ComputopConfig::PAYMENT_METHOD_PAY_NOW; -} - -protected function isComputopPaymentExist(QuoteTransfer $quoteTransfer) -{ - $quoteTransfer = $this->computopClient->isComputopPaymentExist($quoteTransfer); - - return (bool)$quoteTransfer->getPayment()->getIsComputopPaymentExist(); -} -``` - -Also, you will need to add `ComputopClient` to `PlaceOrderSpet` dependecy `Yves/Checkout/Process/StepFactory.php` -```php -public function getComputopClient() -{ - return $this->getProvidedDependency(CheckoutDependencyProvider::CLIENT_COMPUTOP); -} - -protected function createPlaceOrderStep() -{ - return new PlaceOrderStep( - $this->getCheckoutClient(), - $this->getFlashMessenger(), - $this->getComputopClient(), - CheckoutControllerProvider::CHECKOUT_PLACE_ORDER, - ApplicationControllerProvider::ROUTE_HOME, - [ - 'payment failed' => CheckoutControllerProvider::CHECKOUT_PAYMENT, - ShipmentCheckoutConnectorConfig::ERROR_CODE_SHIPMENT_FAILED => CheckoutControllerProvider::CHECKOUT_SHIPMENT, - ] - ); -} -``` - -## PayNow Payment Flow - -1. There is a radio button on Payment step. After submitting the order, the customer is redirected to the to PayNow checkout step. The step contains Credit Card form with the following fields: - - Credit Card brand choice; - - Credit Card number; - - Credit Card expires date (in the format `YYYYMM`, e.g. 201807); - - Credit Card security code (CVV); - - Data (hidden field, encrypted parameters, e.g. currency, amount, description); - - Length (hidden field, length of `data` parameter); - - Merchant id (hidden field, assigned by Computop). - -Form posts directly to Computop paygate. After the process is requested, Computop redirects the customer to success or failure URL. - -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message. Response data is stored in the DB. -3. Authorization is added by default right after the success init action. Capture/Refund and Cancel actions are implemented in the Administration Interface (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paypal.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paypal.md deleted file mode 100644 index 1054cac377f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-paypal.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Integrating the PayPal payment method for Computop -description: Integrate PayPal payment through Computop into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-paypal -originalArticleId: 3e851502-7c39-4380-b10a-7b287b580e65 -redirect_from: - - /v1/docs/computop-paypal - - /v1/docs/en/computop-paypal -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html ---- - -Example State Machine -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-paypal-flow-example.png) - -## Front-End Integration -To adjust frontend appearance, provide following templates in your theme directory: -`src//Yves/Computop/Theme//paypal.twig` - -## State Machine Integration -The Computop provides a demo state machine for PayPal payment method which implements Authorization/Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - - ComputopConfig::PAYMENT_METHOD_PAY_PAL => 'ComputopPayPal', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopPayPal', -]; -``` - -## PayPal Payment Flow: - -1.There is a radio button on "Payment" step. After submit order customer will be redirected to the to Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Authorization is added right after success init action by default. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-sofort.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-sofort.md deleted file mode 100644 index 144b949788c..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/computop-payment-methods/computop-sofort.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Integrating the Sofort payment method for Computop -description: Integrate Sofort payment through Computop into the Spryker-based shop. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-sofort -originalArticleId: a7827af5-4b2b-4714-a99a-a935a0864bdd -redirect_from: - - /v1/docs/computop-sofort - - /v1/docs/en/computop-sofort -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Computop - OMS plugins - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-oms-plugins.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -Example State Machine: -![Click Me](https://spryker.s3.eu-central-1.amazonaws.com/docs/Technology+Partners/Payment+Partners/Computop/computop-sofort-flow-example.png) - -## Front-End Integration -To adjust the frontend appearance, provide the following templates in your theme directory: -`src//Yves/Computop/Theme//sofort.twig` - -## State Machine Integration -The Computop provides a demo state machine for Sofort payment method which implements Capture flow. - -To enable the demo state machine, extend the configuration with the following values: - -```php - 'ComputopSofort', -]; - -$config[OmsConstants::ACTIVE_PROCESSES] = [ - ... - 'ComputopSofort', -]; -``` - -## Sofort Payment Flow - -1. There is a radio button on "Payment" step. After submitting the order the customer will be redirected to the Computop (Paygate form implementation). The GET consists of 3 parameters: - - data (encrypted parameters, e.g. currency, amount, description); - - length (length of `data` parameter); - - merchant id (assigned by Computop); -Customer sets up all data just after the redirect to Computop. -Init action: "Capture". There are no Order and Authorization calls provided for this payment method. -2. By default, on success the customer will be redirected to "Success" step. The response contains `payId`. On error, the customer will be redirected to "Payment" step with the error message by default. Response data is stored in the DB. -3. Capture/Refund and Cancel actions are implemented in the admin panel (on manage order). On requests, Spryker will use `payId` parameter stored in the DB to identify a payment. - -## Set Up Details -Important for a live MID is: - -1. Merchant must have a bank account at the Sofort Bank. -2. The contract with Sofort must be extended specifically for credits. -3. The credit function must be configured in the Sofort project, as well as in the Computop (on the MID). diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-api.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-api.md deleted file mode 100644 index 6cae31fd0ea..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-api.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Computop API calls -description: This article provides details on the API structure of the Computop module in the Spryker Commerce OS. -last_updated: Oct 22, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-api-details -originalArticleId: 12281b35-a28e-4db3-9309-79f627b713dc -redirect_from: - - /v1/docs/computop-api-details - - /v1/docs/en/computop-api-details -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Integrating the Paydirekt payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paydirekt-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -## Authorization Call: - -* Authorize money. -* There is no partial authorization. Please make one API call to make authorization for all items in the order. -* It is not possible to Authorize a higher amount than in the ORDER. - -## Inquire Call: - -Status inquiries within Paygate give detailed information about the amounts that are actually authorized, captured or credited. Especially before executing reversals via the interface reverse.aspx it is recommended to check the transaction status with inquire.aspx because Reverse.aspx re-verses not only authorizations but ALWAYS THE LAST TRANSACTION STEP. - -## Reverse Call: - -* Reverse.aspx does not only reverse authorizations, but also any LAST TRANSACTION STAGE! If the last transaction was a capture, Reverse.aspx initiates the reverse, e.g. a credit. Therefore, the utmost caution is urged. Use it at your own risk. We recommend checking the transaction status with Inquire.aspx before using Reverse.aspx. -* Use it just after "Inquire" call if it returns the previous action as "Authorization". - -## Capture Call: - -* Capture money. -* Shipment price is captured with the first capture request. -* Please contact the helpdesk, if you want to capture amounts < 100 (the smallest currency unit). -* It is not possible to capture a higher amount than in the ORDER or Auth. - -## Refund Call: - -* Refund money. -* The merchant has the chance to refund more money to the customer than captured. -* Shipment price will be refunded with the last possible refund request. If You do not need to refund shipment price: - - Create `Pyz\Zed\Computop\ComputopConfig`. - - Extend it from original `SprykerEco\Zed\Computop\ComputopConfig`. - - Update `isRefundShipmentPriceEnabled` method (set up "false"). - diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-oms.md b/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-oms.md deleted file mode 100644 index 0d509703779..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/computop/technical-details-and-howtos/computop-oms.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Computop - OMS plugins -description: This article contains information on the state machine commands and conditions for the Computop module in the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/computop-oms-details -originalArticleId: 22ab5611-d105-455b-9afa-30c7610ed3bb -redirect_from: - - /v1/docs/computop-oms-details - - /v1/docs/en/computop-oms-details -related: - - title: Computop - link: docs/scos/user/technology-partners/page.version/payment-partners/computop.html - - title: Integrating the Sofort payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-sofort-payment-method-for-computop.html - - title: Integrating the PayPal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paypal-payment-method-for-computop.html - - title: Integrating the PayNow payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-paynow-payment-method-for-computop.html - - title: Integrating the Easy Credit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-easy-credit-payment-method-for-computop.html - - title: Computop API calls - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/computop-api-calls.html - - title: Integrating the iDeal payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-ideal-payment-method-for-computop.html - - title: Integrating the Direct Debit payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-direct-debit-payment-method-for-computop.html - - title: Computop - Credit Card - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-credit-card-payment-method-for-computop.html - - title: Integrating the CRIF payment method for Computop - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/computop/integrating-payment-methods-for-computop/integrating-the-crif-payment-method-for-computop.html ---- - -The following plugins are used for performing calls to Paygate during OMS operation. - -## Authorize Plugin: -Makes an Authorize call to Computop. - -## Cancel Plugin: -Follow these steps to cancel the item in the order in case all the items or the last possible one got canceled: - -1. Inquire a call to Computop. -2. Reverse a call to Computop in case Inquire returned "Authorization" was the last action. -3. Change the status of the current item in our DB in case the Inquire call returned that "Authorization" was not the last action. No API calls are needed. -4. If there is any item that is not canceled yet: - - Change the status of the current item in our DB. No API calls are needed. There is no API call to change the order in Computop. - -## Capture Plugin: -Makes a Capture call to Computop. - -## Refund Plugin: -Makes a Refund call to Computop. diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/crefopay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/crefopay.md deleted file mode 100644 index 66aac13b05a..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/crefopay.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: CrefoPay -description: Provide all steps within the payment process by integrating CrefoPay into the Spryker Commerce OS. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/crefopay -originalArticleId: 20483857-4695-43da-add6-403cbadd29df -redirect_from: - - /v1/docs/crefopay - - /v1/docs/en/crefopay -related: - - title: Integrating CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/integrating-crefopay.html - - title: Installing and configuring CrefoPay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/installing-and-configuring-crefopay.html - - title: CrefoPay capture and refund Processes - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-capture-and-refund-processes.html - - title: CrefoPay — Enabling B2B payments - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-enabling-b2b-payments.html - - title: CrefoPay callbacks - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-callbacks.html - - title: CrefoPay notifications - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/crefopay/crefopay-notifications.html ---- - -## Partner Information - -Creditreform has more than 130 years of experience in risk and collections management. The 125,000 Creditreform customers include leading corporations from all industries, as well as small and medium-sized businesses. - -Since our founding in 1879, our goal has always been to protect our customers against bad debt, which can destroy liquidity and jeopardize the survival of their companies. This is the precept of all solutions and services offered by Creditreform. - -The services available on the unique CrefoPay platform offered by CrefoPayment GmbH & Co. KG combine all steps within the payment process, from risk evaluation to payment processing and monitoring all the way to the collection of overdue receivables. CrefoPay not only offers customers access to an individual solution for making purchases on account (invoice), they can also educate themselves about all relevant figures via an interface and benefit of additional services specifically designed for B2B business. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay.md deleted file mode 100644 index cc3492dfcd3..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Heidelpay -description: Heidelpay is an internationally operating payment institution, authorized and regulated by the Federal Financial Supervisory Authority. -last_updated: Jul 29, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/heidelpay -originalArticleId: 767323b5-46e0-415b-a9fb-04237bbb7169 -redirect_from: - - /v1/docs/heidelpay - - /v1/docs/en/heidelpay - - /docs/scos/user/technology-partners/201811.0/payment-partners/heidelpay/heidelpay.html ---- - -## Partner Information - -[ABOUT HEIDELPAY](https://www.heidelpay.de/) -Heidelpay is an internationally operating payment institution, authorized and regulated by the Federal Financial Supervisory Authority. The Full-Service Payment Provider covers the entire range of services connected to international electronic payment processing. For more than 13 years the company has been successfully realizing projects of online and stationary retailers and currently serves more than 16.000 customers in many different industrial sectors worldwide. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/klarna.md b/docs/scos/user/technology-partners/201811.0/payment-partners/klarna.md deleted file mode 100644 index bb8a08cc59f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/klarna.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Klarna -description: Make paying as simple, safe and above all, smooth as possible by integrating the Klarna payment into the Spryker Commerce OS. -last_updated: Nov 6, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/klarna -originalArticleId: cc28e67d-437e-492f-9068-47944cbde2a1 -redirect_from: - - /v1/docs/klarna - - /v1/docs/en/klarna -related: - - title: Klarna payment workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-payment-workflow.html - - title: Klarna - Invoice Pay in 14 days - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-invoice-pay-in-14-days.html - - title: Klarna - Part Payment Flexible - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-part-payment-flexible.html - - title: Klarna state machine commands and conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/klarna/klarna-state-machine-commands-and-conditions.html ---- - -## Partner Information - -[ABOUT KLARNA](https://www.klarna.com/de/) -Klarna was founded in 2005 in Stockholm, Sweden with the aim of making it easier for people to shop online. In the last 12 years, technology has evolved, excited and transformed the world around us, yet our mission remains as relevant as ever, to make paying as simple, safe and above all, smooth as possible.Klarna is now one of Europe's largest banks and is providing payment solutions for 60 million consumers across 70,000 merchants in 18 countries. Klarna offers direct payments, pay after delivery options and installment plans in a smooth one-click purchase experience that lets consumers pay when and how they prefer to.When the company acquired SOFORT in 2014 the Klarna Group was formed. - -YOUR ADVANTAGES: - -* With Invoice: With Installments increase of conversion rates and high acceptance rates higher baskets and less cancellations easy and secure customer experience for shoppers direct Direkter shipping thanks to real time-check offer germany´s most popular payment methods guaranteed payout to merchants -* Klarna is even cheaper than an inhouse solution -* Merchants never take over the risk and always receive their money -* Merchants never take over the risk and always receive their money - -### Klarna Invoice - -The option to pay after delivery makes buying quicker and easier for customers. With Klarna's Pay Later, shoppers do not need to fill out lengthy personal details or enter card numbers at the online point of sale. The transaction can be completed with only name, email and address. Consumer then have 14 days to pay the invoice. - -### Deferred Payment Purchase - -Your customers can spread the cost of their purchases over time, at a low interest rate, giving them flexibility and increased purchasing power, which in turn boosts sales. Our unique 4-step credit application process is quick and easy, requiring minimal information and taking just seconds to complete. - -Our technology-driven underwriting system makes decisions in real time, and offers smart risk assessment. It allow us to accept more purchases, so you sell more. And even if a customer defaults, you still get paid: we take all the risk. - - - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/payolution.md b/docs/scos/user/technology-partners/201811.0/payment-partners/payolution.md deleted file mode 100644 index b2d361eee72..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/payolution.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Payolution -description: Provide invoice, installment, monthly invoice, and direct debit solutions by integrating Payolution into the Spryker Commerce OS. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/payolution -originalArticleId: 17b39025-8716-4931-a70d-63ff625b48d8 -redirect_from: - - /v1/docs/payolution - - /v1/docs/en/payolution -related: - - title: Integrating the installment payment method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-installment-payment-method-for-payolution.html - - title: Payolution - Performing Requests - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-performing-requests.html - - title: Payolution request flow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/payolution-request-flow.html - - title: Integrating the invoice paymnet method for Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/integrating-the-invoice-payment-method-for-payolution.html - - title: Installing and configuring Payolution - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/payolution/installing-and-configuring-payolution.html ---- - -## Partner Information - -[ABOUT PAYOLUTION](https://www.payolution.com/) -Payolution offers white label solutions for the payment options — invoice, instalment, monthly invoice, and direct debit — available in Austria, Germany, Switzerland, the Netherlands, and the United Kingdom. As a mid-sized merchant or a global brand, you will benefit from Payolution's expertise in a seamless omni-channel integration of these payment options. Payolution offers a 100% payment guarantee — they pay you regardless when or if your customer pays you. Payolution's white label approach focuses on you as a merchant, your brand, your conversion and a fair customer support. - -Payolution provides two methods of payment: - -* Invoice -* Installment - -In order to integrate Payolution payments, a Payolution merchant account should be created and configuration data then could be obtained from Payolution. There are two types of accounts for the integration: test and live. Both accounts share the same configuration with different values. Payolution uses the idea of having channels for handling different requests. Each channel is specified by a channel ID which will be given by Payolution. - -We use state machines for handling and managing orders and payments. To integrate Payolution payments, a state machine for Payolution should be created. A basic and fully functional state machine is already built (`PayolutionPayment01`). You can use the same state machine or build a new one. In case a new state machine has to be built, it is preferred to contact Payolution and confirm the new state machine design and functionality. - -The state machine commands and conditions trigger Payolution facade calls in order to perform the needed requests to Payolution. For simplicity, the Payolution facade uses the same calls for both invoice and installment payments and distinguishes the payment method automatically from the payment entity. - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/powerpay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/powerpay.md deleted file mode 100644 index 6c704f379a4..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/powerpay.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Powerpay -description: Deliver results for your merchants by integrating Powerpay into the Spryker Commerce OS. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/powerpay -originalArticleId: 3193e936-956a-4dfc-ad50-c7ae3033233d -redirect_from: - - /v1/docs/powerpay - - /v1/docs/en/powerpay -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Payment Information -[ABOUT POWERPAY](https://www.powerpay21.com) -Omni-channel payment solutions for the 21st century - -powerpay21 is a Global FinTech Network that provides payment products and solutions for merchants whether offline or online. -We gained worldwide payments expertise that delivers results for our merchants. From delivering omni-channel payment solutions to controlling risk and fraud to delivering higher conversion ratios, businesses across the world have trusted us and have benefited from our merchant solutions. powerpay21 is committed to outstanding service, out-of-the box solutions and long-lasting relationships. - -**Acquiring through powercash21:** -Operating as a Payments Institution with a license granted by the Central Bank of Cyprus. (Company No: HE289380; License No: 115.1.2.9/2018) https://www.centralbank.cy/) Principal member of Visa and MasterCard Certified on the Omnipay platform for card present and card not present. - -**Prepaid debit cards via powercard21 – both Visa and MasterCard:** -Boutique prepaid issuing programs, White labelled programs and a Bespoke Bank Management Suite (BMS) providing financial institutions, customer service and program administrators with a comprehensive online suite of functions and reports. - -**Mobile Point of Sale solutions through mPOS21:** -mPOS21 allows businesses to maximize their sales by accepting credit and debit cards on the go mPOS21 uses a MIURA card reader / PIN pad that connects via Bluetooth to a mobile phone. A customized mPOS21 app is available for Android and iOS, allowing Visa and MasterCard Chip and Pin card present transactions. - -YOUR ADVANTAGES: - -* Omni-channel merchant payment solutions: Whether it's payments online, in-person or over the phone -* Global and localized payment solutions -* Advanced Risk and Fraud Management -* Superior reporting tools -* PCI-DSS Level 1 Certified gateway for data security -* Commitment to outstanding service - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/ratenkauf-by-easycredit.md b/docs/scos/user/technology-partners/201811.0/payment-partners/ratenkauf-by-easycredit.md deleted file mode 100644 index f23ae08b665..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/ratenkauf-by-easycredit.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: ratenkauf by easyCredit -description: Offer a simple and standardized solution for e-commerce and for the point of sale by integrating ratenkauf by easyCredit into the Spryker Commerce OS. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratenkauf-by-easycredit -originalArticleId: 86f4b4df-1ed1-4e2c-bdce-cd905686e5c5 -redirect_from: - - /v1/docs/ratenkauf-by-easycredit - - /v1/docs/en/ratenkauf-by-easycredit -related: - - title: Installing and configuring ratenkauf by easyCredit - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratenkauf-by-easycredit/installing-and-configuring-ratenkauf-by-easycredit.html ---- - -## Partner Information -[ABOUT RATENKAUF](https://www.easycredit-ratenkauf.de/) -Germany’s easiest installment purchase solution - -ratenkauf by easyCredit is the first payment option to offer a simple and standardized solution for e-commerce and for the point of sale. - -TeamBank, with its easyCredit product family, is the liquidity management specialist in the Volksbanken Raiffeisenbanken cooperative financial network. Its ‘ratenkauf by easyCredit’ product is the first installment purchase solution that combines a simple and uniformly designed installment purchase function both for e-commerce and for a physical point of sale. Customers can make their ratenkauf by easyCredit installment purchase in just three steps. No paperwork, immediate approval, and complete flexibility throughout. Simple. Fair. - -YOUR ADVANTAGES: - -* Revenue booster: more revenue due to higher purchase amounts -* Profitable: fewer purchase cancellations thanks to the immediate credit check and approval -* Safe: no payment defaults as TeamBank assumes the credit risk -* Fair: excellent easyCredit processes offer transparency and flexibility for customers - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay.md b/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay.md deleted file mode 100644 index 254d7978d3f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/payment-partners/ratepay.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: RatePay -description: Offer intelligent payment solutions for handling most popular paylater models like invoice and installments on the internet for the DACH region by integrating RatePay into the Spryker-based shop. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/ratepay -originalArticleId: 27243cb3-7264-41b1-89d9-c26626183a33 -redirect_from: - - /v1/docs/ratepay - - /v1/docs/en/ratepay -related: - - title: RatePay - Payment Workflow - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-payment-workflow.html - - title: RatePay facade methods - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/ratepay-facade-methods.html - - title: RatePay - How to Disable Address Updates from the Backend Application - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html - - title: Integrating the Direct Debit payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html - - title: Integrating the Invoice payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html - - title: RatePay- Core Module Structure Diagram - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-core-module-structure-diagram.html - - title: Integrating the Installment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html - - title: Integrating the Prepayment payment method for RatePay - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html - - title: RatePay - State Machine Commands and Conditions - link: docs/scos/dev/technology-partner-guides/page.version/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html ---- - -## Partner Information - -[ABOUT RatePAY](https://www.ratepay.com/) -RatePAY is a German Fintech company that offers intelligent payment solutions with 100% loss protection for the handling of the most popular paylater models like invoice and instalments on the internet for the DACH region. Our easy payment methods are among the most popular payment solutions in Germany. One of the reasons lies in the flexibility of our products, since the customer pays only for the goods he decides to keep. As one of only a few payment service companies, RatePAY has been granted a license under the German Payment Services Oversight Act (ZAG) by the Federal Financial Supervisory Authority (BaFin) and is now able to offer customers an even more comprehensive service. Founded in December 2009, the start-up from Berlin has developed itself into a profitable company with more than 140 employees. In April 2017, RatePAY was acquired by the investors Advent International and Bain Capital. - -YOUR ADVANTAGES: - -* Complete solutions for unsecured methods of payment as invoice, instalments, direct debit and prepayment -* White label solution -* B2B and B2C customers -* Risk and customer management, customer service -* Individual service packages for large online retailers -* No hidden charges for buyers and traders -* Continuous development of innovative features -* Seamless integration - -RatePAY is an online service provider that allows merchants to provide their customers secure, customized payment methods. It bears the full risk and takes over the complete processing. - -RatePAY provides four methods of payment -* Invoice -* Prepayment -* Direct Debit (ELV) -* Installment - -## Related Developer guides - -* [RatePay Core module structure diagram](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/ratepay-core-module-structure-diagram.html) -* [RatePay state machines](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/ratepay-state-machines.html) -* [Integrating the Direct Debit payment method for RatePay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/integrating-payment-methods-for-ratepay/integrating-the-direct-debit-payment-method-for-ratepay.html) -* [Integrating the Installment payment method for RatePay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-installment-payment-method-for-ratepay.html) -* [Integrating the Invoice payment method for RatePay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-invoice-payment-method-for-ratepay.html) -* [Integrating the Prepayment payment method for RatePay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/integrating-payment-methods-for-ratepay//integrating-the-prepayment-payment-method-for-ratepay.html) -* [Disabling address updates from the backend application for RatePay](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/disabling-address-updates-from-the-backend-application-for-ratepay.html) -* [RatePay facade methods](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/ratepay-facade-methods.html) -* [RatePay payment workflow](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/ratepay-payment-workflow.html) -* [RatePay state machine commands and conditions](/docs/scos/dev/technology-partner-guides/{{page.version}}/payment-partners/ratepay/ratepay-state-machine-commands-and-conditions.html) - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/akeneo.md b/docs/scos/user/technology-partners/201811.0/product-information-pimerp/akeneo.md deleted file mode 100644 index 153e262b655..00000000000 --- a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/akeneo.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Akeneo -description: Provide product information management solutions through the existing IT environment by integrating Akeneo into the Spryker-based shop. -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/akeneo -originalArticleId: 43f84aa1-ac0b-4783-bc4d-3e47a4ee2aa4 -redirect_from: - - /v1/docs/akeneo - - /v1/docs/en/akeneo -related: - - title: Installing and configuring Akeneo - link: docs/scos/dev/technology-partner-guides/page.version/product-information-pimerp/akeneo/installing-and-configuring-akeneo.html ---- - -## Partner Information - -[ABOUT AKENEO](https://www.akeneo.com) -Akeneo is the next-generation PIM - a PIM that quickly integrates with the existing IT environment through a powerful API, and is a great fit with Spryker's technologies. Also, Akeneo is uncomplicated, flexible, scalable, easy to use and not expensive. Today, more than 48,000 users worldwide use Akeneo PIM. More than 200 companies in the retail and industry sectors, including many leading brands and marketplaces, rely on Akeneo's Enterprise Edition, which is available as an on-premise and cloud edition. - -YOUR ADVANTAGES: - -* Central multi-channel product data management -* Control of data quality from web to print -* Efficient collaboration between all departments and the channel -* Available as OnPremise, PaaS or SaaS -* No user-dependent licenses -* Optimization of all processes around the product information -* Perfect variant handling -* Simple translation workflows -* Supplier / dealer portal functionalities - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/censhare.md b/docs/scos/user/technology-partners/201811.0/product-information-pimerp/censhare.md deleted file mode 100644 index 4f07afa095d..00000000000 --- a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/censhare.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Censhare -last_updated: Oct 23, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/censhare-1 -originalArticleId: c3571712-2d9f-4881-8b6d-d305e81565f7 -redirect_from: - - /v1/docs/censhare-1 - - /v1/docs/en/censhare-1 ---- - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/contentserv.md b/docs/scos/user/technology-partners/201811.0/product-information-pimerp/contentserv.md deleted file mode 100644 index 7d33713f0d9..00000000000 --- a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/contentserv.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Contentserv -last_updated: Oct 30, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/contentserv -originalArticleId: 00ac31ac-c1ab-42b4-9710-42eb9f394212 -redirect_from: - - /v1/docs/contentserv - - /v1/docs/en/contentserv -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - - - - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/xentral.md b/docs/scos/user/technology-partners/201811.0/product-information-pimerp/xentral.md deleted file mode 100644 index 35b642fb886..00000000000 --- a/docs/scos/user/technology-partners/201811.0/product-information-pimerp/xentral.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Xentral -description: Provide customers with ERP / CRM software that is configured according to individual requirements by integrating Xentral to the Spryker-based project. -last_updated: Nov 6, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/xentral -originalArticleId: 0cdc7137-8ca6-453d-ae7f-99daae732833 -redirect_from: - - /v1/docs/xentral - - /v1/docs/en/xentral -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT XENTRAL](https://xentral.com/en/) -Xentral is a flexible ERP / CRM software that can be configured according to individual requirements. Xentral is available in four basic versions with different range of functions. The App-Store contains over 100 modules such as sales cockpit, automated warehouse management or major manufacturing programs that can be installed with just a few clicks. In addition, Xentral offers interfaces to all common online shop systems and marketplaces, shipping service providers, payment providers and much more. - -YOUR ADVANTAGES: - -* Flexible ERP software in 4 basic versions -* Connected to our own Xentral App-Store -* More than 100 modules and interfaces can be installed with just a few clicks -* Xentral is based on open-source technologies: opportunity to develop own interfaces -* that can be connected to Xentral -* Xentral provides interfaces to all common online shop systems, shipping service -* providers, payment providers and more - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      - diff --git a/docs/scos/user/technology-partners/201811.0/shipment/paazl.md b/docs/scos/user/technology-partners/201811.0/shipment/paazl.md deleted file mode 100644 index 7482b17ac1f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/shipment/paazl.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Paazl -description: Connect e-commerce brands and retailers to a wide range of global, national and inner-city delivery carriers by integrating Paazl intot he Spryker-based shop. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/paazl -originalArticleId: 79ab6945-8dbb-41fd-9d6b-24dec0c023a1 -redirect_from: - - /v1/docs/paazl - - /v1/docs/en/paazl -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT PAAZL](https://www.paazl.com/) -When Shipping gets serious. - -Paazl is a multi-carrier platform on a mission to change the world of e-commerce delivery. The Paazl technology connects e-commerce brands and retailers to a wide range of global, national and inner-city delivery carriers. -Through Paazl’s solutions we take care of everything delivery related, from dynamic delivery information and Track & Trace notifications in the front-end to customs forms and label generation in the back-end. By implementing Paazl, e-commerce brands can provide their customers with a wide range of delivery options. -In a nutshell, Paazl provides the tools to scale delivery and create more – and better – delivery choices for e-commerce customers. - -YOUR ADVANTAGES: - -* Carrier Management -* Efficiency: All shipping information, labeling and tracking in one place -* Flexibility: Adding and changing carriers and delivery options as needed -* Connectivity: Seamless integration with warehouse and customer service -* Delivery Experience -* Real-time Calculation: Show best delivery option based on order details -* Arrival times: ETA’s based on carrier and custom business rules -* Integration: Easy and fully customizable with REST API - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/shipment/paqato.md b/docs/scos/user/technology-partners/201811.0/shipment/paqato.md deleted file mode 100644 index d37c8552b04..00000000000 --- a/docs/scos/user/technology-partners/201811.0/shipment/paqato.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Paqato -description: Offer customer communication and shipping analysis by integrating Paqato into the Spryker Commerce OS. -last_updated: Jan 20, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/paqato -originalArticleId: d3af5e77-ec04-4371-831c-8cfd72b96553 -redirect_from: - - /v1/docs/paqato - - /v1/docs/en/paqato -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information -[ABOUT PAQATO](https://www.paqato.com/) -Take control of your shipment - -PAQATO is an intelligent solution for customer communication and shipping analysis. With the services of the Münster-based company, mail order companies retain control of the entire customer journey until the goods are delivered in full. By monitoring all shipments in real time, retailers can proactively inform their customers and offer immediate solutions should there be a delay in delivery. In this way, mail order companies offer their customers a unique, well-rounded shopping experience. The communication around the entire purchase takes place exclusively over the channels and with the tonality of the retailer. This has been proven to strengthen the retailer brand, increase customer loyalty through up to 60 percent more consumer touch points and increase customer satisfaction. Proactive communication with customers also reduces customer service workload. Retailers can thus save costs and increase customer satisfaction at the same time. - -YOUR ADVANTAGES: - -* Customer satisfaction and cost reduction through real-time packet monitoring and early identification of shipping problems -* Numerous customer touch points through automated and proactive customer communication in the look & feel of online retailers -* High potential for cross-selling through Track & Trace in the retailer's online shop - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/shipment/seven-senders.md b/docs/scos/user/technology-partners/201811.0/shipment/seven-senders.md deleted file mode 100644 index 3deedb45070..00000000000 --- a/docs/scos/user/technology-partners/201811.0/shipment/seven-senders.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Seven Senders -description: Optimize international cross-border shipment by integrating Seven Senders into the Spryker Commerce OS. -last_updated: Oct 8, 2019 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/sevensenders -originalArticleId: 17a58120-626d-4ce6-bdd4-d5ce933300ae -redirect_from: - - /v1/docs/sevensenders - - /v1/docs/en/sevensenders -related: - - title: Technology Partner Integration - link: docs/scos/user/technology-partners/page.version/technology-partners.html ---- - -## Partner Information - -[ABOUT SEVEN SENDERS](https://www.sevensenders.com/) -SEVEN SENDERS optimizes international cross-border shipments by serving as Europe's Leading Delivery Platform. We unite online retailers of all sizes with local premium carriers abroad, thereby achieving faster and cheaper delivery for customers worldwide. In addition, we offer the SaaS-based solution SENDWISE, that brings full transparency into the international parcel flow, offers seamless tracking and a proactive communication with the end customer to provide a unique shopping experience. - -YOUR ADVANTAGES: - -* Seamless integration into the services offered by SEVEN SENDERS -* Full control over the customer experience during the delivery process -* Proactively creating the customer journey during delivery -* Tracking page in the shop design - in no time and without IT support -* Direct delivery updates to the customer: the right information at the right time -* 25% reduction of customer service efforts through proactive customer communication -* Harmonization of shipment data including all shipping providers and warehouse locations -* Access to all premium parcel delivery providers through one platform -* Multi-carrier solution: the optimal carrier for each parcel -* Straightforward connection to the own online shop through our APIs and partner plugins - ---- - -## Copyright and Disclaimer - -See [Disclaimer](https://github.com/spryker/spryker-documentation). - ---- -For further information on this partner and integration into Spryker, please contact us. - -
      -
      -
      -
      -
      diff --git a/docs/scos/user/technology-partners/201811.0/technology-partners.md b/docs/scos/user/technology-partners/201811.0/technology-partners.md deleted file mode 100644 index 20548899b0f..00000000000 --- a/docs/scos/user/technology-partners/201811.0/technology-partners.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Technology Partner Integration -description: Integrate technology partner solutions to boost your Spryker project performance. -last_updated: May 19, 2020 -template: concept-topic-template -originalLink: https://documentation.spryker.com/v1/docs/technology-partner-integration -originalArticleId: 868a14a2-2ffe-4b2d-bfd8-490b41288a2e -redirect_from: - - /v1/docs/technology-partner-integration - - /v1/docs/en/technology-partner-integration ---- - -In this section you will find information about our Technology Partner Integration solutions. - -Please visit our [Partners Registry](https://spryker.com/en/partners-overview/) for a complete list of our partners. - -## Hosting Providers - -* [Claranet](/docs/scos/user/technology-partners/{{page.version}}/hosting-providers/claranet.html) -* [Continum](/docs/scos/user/technology-partners/{{page.version}}/hosting-providers/continum.html) -* [Metaways](/docs/scos/user/technology-partners/{{page.version}}/hosting-providers/metaways.html) -* [root360](/docs/scos/user/technology-partners/{{page.version}}/hosting-providers/root-360.html) - - -## Content Management - - -* [Coremedia](/docs/scos/user/technology-partners/{{page.version}}/content-management/coremedia.html) -* [E-Spirit](/docs/scos/user/technology-partners/{{page.version}}/content-management/e-spirit.html) -* [Magnolia](/docs/scos/user/technology-partners/{{page.version}}/content-management/magnolia.html) -* [Styla](/docs/scos/user/technology-partners/{{page.version}}/content-management/styla.html) - -## Customer Service - -* [Dixa](/docs/scos/user/technology-partners/{{page.version}}/customer-service/dixa.html) -* [iAdvize](/docs/scos/user/technology-partners/{{page.version}}/customer-service/iadvize.html) -* [Optimise it](/docs/scos/user/technology-partners/{{page.version}}/customer-service/optimise-it.html) -* [Live chat service](/docs/scos/user/technology-partners/{{page.version}}/customer-service/live-chat-service.html) - -## Finance & Accounting - -* [CollectAI](/docs/scos/user/technology-partners/{{page.version}}/finance-and-accounting/collectai.html) -* [Nitrobox](/docs/scos/user/technology-partners/{{page.version}}/finance-and-accounting/nitrobox.html) - -## Marketing & Conversion -### A/B Testing & Performance - -* [AB Tasty](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/ab-testing-and-performance/ab-tasty.html) - - -### Analytics - -* [ChannelPilot Analytics](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/analytics/channelpilot-analytics.html) -* [FactFinder](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/analytics/fact-finder/fact-finder.html) -* [Haensel AMS](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/analytics/haensel-ams.html) -* [Mindlab](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/analytics/mindlab.html) -* [Minubo](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/analytics/minubo.html) - -### Customer Communication - -* [Dotdigital](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-communication/dotdigital.html) -* [Episerver](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-communication/episerver/episerver.html) -* [Inxmail](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-communication/inxmail.html) - -### Customer Retention & Loyalty - -* [Namogoo](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-retention-and-loyalty/namogoo.html) -* [Trustpilot](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-retention-and-loyalty/trustpilot.html) -* [Zenloop](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/customer-retention-and-loyalty/zenloop.html) - -### Personalization & Cross-Selling - - - -* [Econda](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/econda/econda.html) -* [Nosto](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/nosto.html) -* [trbo](/docs/scos/user/technology-partners/{{page.version}}/marketing-and-conversion/personalization-and-cross-selling/trbo.html) - -## Marketplace Integrations - -* [ChannelPilot Marketplace](/docs/scos/user/technology-partners/{{page.version}}/marketplace-integrations/channelpilot-marketplace.html) - -## Order Management (ERP/OMS) - -* [Tradebyte](/docs/scos/user/technology-partners/{{page.version}}/order-management-erpoms/tradebyte.html) -* [Punchout Catalogs](/docs/scos/user/technology-partners/202108.0/order-management-erpoms/punchout-catalogs/punchout-catalogs-overview.html) - -## Operational Tools - - -* [Data Virtuality](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/data-virtuality.html) -* [Loggly](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/loggly.html) -* [New Relic](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/new-relic.html) -* [Proclane](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/proclane.html) -* [PlusServer](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/plusserver.html) -* [Tideways](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/tideways.html) -* [Usercentrics](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/usercentrics.html) -* [VSHN](/docs/scos/user/technology-partners/{{page.version}}/operational-tools-monitoring-legal-etc/vshn.html) - - - - -## Payment Partners - -* [Adyen](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/adyen/payment-integration-adyen.html) -* [Amazon Pay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/amazon-pay.html) -* [AfterPay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/afterpay.html) -* [Arvato](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/arvato.html) -* [Billie](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/billie.html) -* [Billpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/billpay.html) -* [Braintree](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/braintree.html) -* [BS Payone](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/bs-payone/bs-payone.html) -* [Computop](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/computop.html) -* [CrefoPay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/crefopay.html) -* [Heidelpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/heidelpay.html) - -* [Klarna](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/klarna.html) -* [Payolution](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/payolution.html) -* [Powerpay](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/powerpay.html) -* [ratenkauf by easyCredit](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/ratenkauf-by-easycredit.html) -* [RatePAY](/docs/scos/user/technology-partners/{{page.version}}/payment-partners/ratepay.html) - - ## Poduct Information (PIM/ERP) - -* [Akeneo](/docs/scos/user/technology-partners/{{page.version}}/product-information-pimerp/akeneo.html) -* [Xentral](/docs/scos/user/technology-partners/{{page.version}}/product-information-pimerp/xentral.html) - - - - - ## Shipment - -* [Paazl](/docs/scos/user/technology-partners/{{page.version}}/shipment/paazl.html) -* [Paqato](/docs/scos/user/technology-partners/{{page.version}}/shipment/paqato.html) -* [Seven Senders](/docs/scos/user/technology-partners/{{page.version}}/shipment/seven-senders.html) - -Become a partner now!