From 50700e3219fc03892c7311567a2c15a6e792280c Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Mon, 2 Dec 2024 12:21:25 +0100 Subject: [PATCH 01/46] Create add-new-store-in-multi-db-setup.md Created a "Adding new store in multi-db setup" howto guide --- .../add-new-store-in-multi-db-setup.md | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md new file mode 100644 index 0000000000..af820a6f42 --- /dev/null +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -0,0 +1,163 @@ +--- +title: "Adding new store in multi-db setup" +description: Adding and deploying a new store in multi-db store setup requires additional steps and preparation. This guideline contains all the best practices you need to know. +last_updated: Dec 02, 2024 +template: howto-guide-template +originalLink: +originalArticleId: +redirect_from: +--- + +Setting up a new store in an existing multi-DB environment requires a well-prepared plan, to avoid disrupting the data and operations of existing stores. This guide provides a detailed procedure to release a new store within a region that already hosts other stores, ensuring a non-destructive deployment. + +## Initial planning and best practices + +### Clear Roadmap +It is good to have overall plan, detailing all stores that will be added in the future. This can impact not only database structure and configurations, but overall decisions on how to approach the rollout, making sure it is cost-efficient over time, on all ends. + +### Backup strategy +Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. + +### Environment Preparation +Prepare the development, staging, and production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. + +### Repeatability +If you plan to release more stores in the future, focus that this process is easily repeatable in the future. That includes creating detailed technical documentation, release procedure, and tickets (epics, stories, tasks) in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. This documentation will be invaluable for future deployments and troubleshooting. + +## Detailed Considerations for the Migration + +### Integrations and 3rd party systems +* Review and adjust all third-party integrations to ensure they work with the new store setup. Here we mainly talk about data and it’s isolation across multiple virtual DBs. Assure that people working with both sides of the system (backend, frontend, merchant portal and APIs) do have all needed data access. +* Integrations such as single sign-on, payment gateways, inventory systems may require updates. Make sure tech teams responsible for that systems are available, and ready to do necessary changes on time. + +### Data Import +* Handle the data import process carefully, breaking it down into specific tasks such as configuring databases and adjusting the data import setup to work with the new store. +* Ensure any existing databases, such as the one from another country in one case, are correctly renamed or adjusted to fit the new multi-DB structure. +* Anticipate and plan for potential updates that may arise after end2end testing of the project data migration. + +### Code Buckets +* If used, investigate and adjust code bucket configurations as necessary. The technical steps required for these adjustments should be documented thoroughly, ensuring that code-bucket related functionalities are not disrupted by the addition of a new store. + +### Cloud environment and monitoring +* Think of and adjust monitoring tools and APM (such as NewRelic, CloudWatch) to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store alongside existing ones. +* Think of adjusting AWS Services such as S3, introducing buckets for the new store(s). + +### Front-end Considerations +* Consider any other activities related to the above epics that might impact the deployment. For instance, front-end separation might be a significant task, requiring layout adjustments between different stores and possible adjustments on the API side. + +## Step-by-Step Procedure to release a new store(s) + +Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline, which is a requirement from the cloud team, to successfully deploy your new store in a multi-db setup. + +### Local Setup +#### New store configuration + +* Define a new database and the store in the deploy file, following [that guide](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html#remove-the-configuration-of-the-database). As a result you should have: + * new database in regions..services.databases + * new store in regions..stores + * new domains in groups..applications +* Adjust stores.php with the configurations, relevant for your new store, following generic technical guideline. +* Prepare data import configurations and data files, specific to the new store. +* Adjust the local environment setup as needed, including configurations and environment variables. Examples: frontend router configuration, code bucket configuration, creating new backoffice users. +* Document all the steps you have done, to make sure they are repeatable in the future. + +#### Running Initial Setup + +* Boot the new configurations using the appropriate setup tool. +* Execute commands to initialize the database and services for the new store. +* Verify that the new store’s database is correctly initialized with demo data. + +#### Setting up additional deployment recipes + +It is convenient to create additional deployment install recipes (located under config/install folder) to setup a new and delete an existing stores, for testing purposes. Below is an example of such setup that proves to be working well on prcatice. We took the existing folder structure, and EU folder as a base, but you can introduce your structure: + +1. config/install/EU/setup-store.yml - contains everything needed to do a minimal setup of a new store(s): +``` +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORES_GO_HERE } +sections: + init-storage: + setup-search-create-sources: + command: "vendor/bin/console search:setup:sources -vvv --no-ansi" + stores: true + init-storages-per-store: + propel-migrate: + command: "vendor/bin/console propel:migrate -vvv --no-ansi" + stores: true + ... +``` +2. config/install/EU/delete-store.yml - contains everything needed to remove an existing store(s): +``` +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORES_GO_HERE } +sections: + scheduler-clean: + scheduler-clean: + command: "vendor/bin/console scheduler:clean -vvv --no-ansi || true" + stores: true + clean-storage: + clean-storage: + command: "vendor/bin/console storage:delete -vvv --no-ansi" + stores: true + ... +``` +In further sections below you’ll see how you can use your new custom recipe during the deployment in your main deployment yml file’s “SPRYKER_HOOK_DESTRUCTIVE_INSTALL“ parameter as following: + +```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/setup-store --no-ansi -vvv"``` + +or + +```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/delete-store --no-ansi -vvv"``` + +### Staging Setup +#### Environment Configuration + +* Update the staging environment’s configuration to include the new store. +* For database to be initialised, you will need to run a destructive deployment for your new store. To assure existing stores are not affected, you need to specify only new store code(s) in your deployment yml file (image.environment section), in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. Example, for new PL and AT stores to be introduced: +`SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv"` +You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) + +#### Support Requests +* Open a support request to apply the new configuration to the staging environment. Attach all necessary files and provide detailed deployment instructions. You can also have the necessary configuration in a specific branch of your repository +* Run the destructive deployment, assuring the right store(s) is specified. + +#### Deployment Execution +* Deploy the new store in the staging environment, ensuring existing stores remain unaffected. +* Test the new store thoroughly to confirm it operates correctly without impacting other stores, including all the external integrations in the staging mode. + +### Production Setup +#### Configuration Preparation + +* Prepare the production environment’s configuration similarly to the staging setup. + +#### Support and Deployment +* Open a support request to deploy the new store configuration to production, ensuring all configurations are correct. +* Execute the deployment, closely monitoring the process to catch any issues early. + +#### Post-Deployment +* After deployment, verify that the new store is fully operational and that no data or services for existing stores have been impacted. +* During environment configuration, if you have chosen to update existing installation recipe (production or destructive), revert it back to its original state. + +## Releasing many stores one after another +When you plan releasing multiple stores one after another you can save some time on support requests, doing only one request per environment for all stores upfront, which will make the overall process faster. To do so, adjust the above procedure as following: + +### First release +#### Local Setup +* Prepare and test the configuration for ALL stores you are planning to release in the future. + +#### Staging Setup +* Prepare staging deploy yml file, containing ALL stores you are planning to release in the future. Open a support request and hand the deploy file to them, explaining your intent and ideally - approx. schedule on when are you going to release all the stores. +* Once the preparation is ready - you can revert the configuration, leaving only store you’d like to release now. We recommend to save this configuration separately, to be able to come back to it later. +* Run the destructive deployment, assuring the right store(s) is specified and check the result. + +#### Production Setup +Repeat the same procedure as you’ve done for Staging + +### Next releases +While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. \ No newline at end of file From c32bf038663b55e55f2104b160bc9b440e354d51 Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Mon, 2 Dec 2024 14:13:40 +0100 Subject: [PATCH 02/46] Update add-new-store-in-multi-db-setup.md fixed comment about prod and non-prod environments --- .../add-new-store-in-multi-db-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index af820a6f42..ecdf067d23 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -19,7 +19,7 @@ It is good to have overall plan, detailing all stores that will be added in the Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. ### Environment Preparation -Prepare the development, staging, and production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. +Prepare your production and non-production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. ### Repeatability If you plan to release more stores in the future, focus that this process is easily repeatable in the future. That includes creating detailed technical documentation, release procedure, and tickets (epics, stories, tasks) in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. This documentation will be invaluable for future deployments and troubleshooting. @@ -160,4 +160,4 @@ When you plan releasing multiple stores one after another you can save some time Repeat the same procedure as you’ve done for Staging ### Next releases -While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. \ No newline at end of file +While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. From 6ffc3465906a769210b52859b872ff1a33783def Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 10:58:10 +0100 Subject: [PATCH 03/46] Update add-new-store-in-multi-db-setup.md Fixed, according to reviewer's comments --- .../add-new-store-in-multi-db-setup.md | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index ecdf067d23..9026409b69 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -8,7 +8,11 @@ originalArticleId: redirect_from: --- -Setting up a new store in an existing multi-DB environment requires a well-prepared plan, to avoid disrupting the data and operations of existing stores. This guide provides a detailed procedure to release a new store within a region that already hosts other stores, ensuring a non-destructive deployment. +Setting up a new store in an existing multi-DB environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This guide outlines a detailed procedure for launching a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. + +{% info_block warningBox %} +This guide is applicable in scenarios where store configurations and setups are managed programmatically through code. If you are utilizing the Dynamic Multistore feature to manage your stores via Backoffice, please refer to this {guide}(/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html) +{% endinfo_block %} ## Initial planning and best practices @@ -47,7 +51,7 @@ If you plan to release more stores in the future, focus that this process is eas ## Step-by-Step Procedure to release a new store(s) -Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline, which is a requirement from the cloud team, to successfully deploy your new store in a multi-db setup. +Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline for defining new database(s), connecting them with new store(s) and adding necessary configuration. ### Local Setup #### New store configuration @@ -61,11 +65,10 @@ Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/ * Adjust the local environment setup as needed, including configurations and environment variables. Examples: frontend router configuration, code bucket configuration, creating new backoffice users. * Document all the steps you have done, to make sure they are repeatable in the future. -#### Running Initial Setup +#### Running initial setup locally -* Boot the new configurations using the appropriate setup tool. -* Execute commands to initialize the database and services for the new store. -* Verify that the new store’s database is correctly initialized with demo data. +* Bootstrap your updated configuration and run your environment as usual, using {docker/sdk}(/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.html#configure-and-start-the-instance) +* Verify that the new store’s database is correctly initialized and filled up with the demo data. #### Setting up additional deployment recipes @@ -77,7 +80,9 @@ env: NEW_RELIC_ENABLED: 0 command-timeout: 7200 stores: - - { STORES_GO_HERE } + - { STORE-1 } + - { STORE-2 } + ... sections: init-storage: setup-search-create-sources: @@ -95,7 +100,9 @@ env: NEW_RELIC_ENABLED: 0 command-timeout: 7200 stores: - - { STORES_GO_HERE } + - { STORE-1 } + - { STORE-2 } + ... sections: scheduler-clean: scheduler-clean: From d5d3fe2c7fcc825c535589c215b89265b82297bb Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 16:25:10 +0100 Subject: [PATCH 04/46] Update add-new-store-in-multi-db-setup.md --- .../add-new-store-in-multi-db-setup.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 9026409b69..3b71d2e20c 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -67,7 +67,11 @@ Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/ #### Running initial setup locally -* Bootstrap your updated configuration and run your environment as usual, using {docker/sdk}(/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.html#configure-and-start-the-instance) +* Bootstrap your updated configuration and run your environment as usual: + ```bash + docker/sdk boot deploy.dev.yml + docker/sdk up + ``` * Verify that the new store’s database is correctly initialized and filled up with the demo data. #### Setting up additional deployment recipes From 9b78b55ed5d009a5cc1cc36c89a85f95c2e24629 Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 16:26:56 +0100 Subject: [PATCH 05/46] Update docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md Co-authored-by: Andrey Tkachenko --- .../add-new-store-in-multi-db-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 3b71d2e20c..35193b01d8 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -135,7 +135,7 @@ or You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) #### Support Requests -* Open a support request to apply the new configuration to the staging environment. Attach all necessary files and provide detailed deployment instructions. You can also have the necessary configuration in a specific branch of your repository +* Open a support request to apply the new configuration to the environment. Attach deploy file and explain shortly expected changes, i.e. new DB should be created. In case you have the necessary configuration in a specific branch of your repository, provide a reference to it in the ticket, making sure support team has access to your code base. * Run the destructive deployment, assuring the right store(s) is specified. #### Deployment Execution From b7f069f30233be598dea221fc251e5ff88f34f29 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Wed, 11 Dec 2024 11:46:37 +0000 Subject: [PATCH 06/46] PBC Search SEO Update Meta desc changed to search pages for an SEO update; - base shop > best practices > personalization dynamic pricing - base shop > best practices > precise search by super attributes - base shop > best practices > search best practices - base shop > import and export data > import file details product search attribute map csv - base shop > import and export data > import file details product search attribute csv - base shop > import and export data > search data import - base shop > install and upgrade > install features and glue api > install the catalog category management feature - base shop > install and upgrade > install features and glue api > install the catalog glue api - base shop > install and upgrade > install features and glue api > install the search widget for concrete products - base shop > install and upgrade > search migration concept - base shop > install and upgrade > upgrade modules > upgrade the category page search module - base shop > install and upgrade > upgrade modules > upgrade the cms page search module - base shop > install and upgrade > upgrade modules > upgrade the elastica module - base shop > install and upgrade > upgrade modules > upgrade the product label search module - base shop > install and upgrade > upgrade modules > upgrade the product page search module - base shop > install and upgrade > upgrade modules > upgrade the product review search module - base shop > install and upgrade > upgrade modules > upgrade the product set page search module - base shop > manage in the back office > best practices promote products with search preferences - base shop > manage in the back office > category filters > reorder category filters - base shop > manage in the back office > define search preferences - base shop > manage in the back office > edit search preferences - base shop > manage in the back office > filter preferences > edit filter preferences - base shop > manage in the back office > filter preferences > reorder filter preferences - base shop > manage in the back office > manage filters and search preferences in the back office - base shop > manage in the back office > search feature overview - base shop > manage in the back office > search types overview - base shop > manage in the back office > standard filters overview - base shop > third party integrations > algolia > configure algolia - base shop > third party integrations > algolia > disconnect algolia - base shop > third party integrations > algolia > getting access to algolia dashboard - base shop > third party integrations > algolia > integrate algolia - base shop > tutorials and how tos > configure a search query - base shop > tutorials and how tos > configure a search for multi currency - base shop > tutorials and how tos > expand search data - base shop > tutorials and how tos > facet filter overview and configuration - marketplace > glue api search the product catalog - search --- .../base-shop/best-practices/personalization-dynamic-pricing.md | 2 +- .../best-practices/precise-search-by-super-attributes.md | 2 +- .../202410.0/base-shop/best-practices/search-best-practices.md | 2 +- .../import-file-details-product-search-attribute-map.csv.md | 1 + .../import-file-details-product-search-attribute.csv.md | 1 + .../base-shop/import-and-export-data/search-data-import.md | 2 +- .../install-the-catalog-category-management-feature.md | 1 + .../install-the-catalog-glue-api.md | 2 +- .../install-the-search-widget-for-concrete-products.md | 1 + .../base-shop/install-and-upgrade/search-migration-concept.md | 1 + .../upgrade-modules/upgrade-the-categorypagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-cmspagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-elastica-module.md | 2 +- .../upgrade-modules/upgrade-the-productlabelsearch-module.md | 1 + .../upgrade-modules/upgrade-the-productpagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-productreviewsearch-module.md | 1 + .../upgrade-modules/upgrade-the-productsetpagesearch-module.md | 1 + .../best-practices-promote-products-with-search-preferences.md | 2 +- .../category-filters/reorder-category-filters.md | 2 +- .../manage-in-the-back-office/define-search-preferences.md | 2 +- .../manage-in-the-back-office/edit-search-preferences.md | 2 +- .../filter-preferences/edit-filter-preferences.md | 2 +- .../filter-preferences/reorder-filter-preferences.md | 2 +- .../manage-filters-and-search-preferences-in-the-back-office.md | 2 +- .../search-feature-overview/search-feature-overview.md | 1 + .../base-shop/search-feature-overview/search-types-overview.md | 1 + .../search-feature-overview/standard-filters-overview.md | 1 + .../third-party-integrations/algolia/configure-algolia.md | 2 +- .../third-party-integrations/algolia/disconnect-algolia.md | 2 +- .../algolia/getting-access-to-algolia-dashboard.md | 2 +- .../third-party-integrations/algolia/integrate-algolia.md | 2 +- .../base-shop/tutorials-and-howtos/configure-a-search-query.md | 2 +- .../tutorials-and-howtos/configure-search-for-multi-currency.md | 2 +- .../base-shop/tutorials-and-howtos/expand-search-data.md | 2 +- .../facet-filter-overview-and-configuration.md | 2 +- .../202410.0/marketplace/glue-api-search-the-product-catalog.md | 2 +- docs/pbc/all/search/202410.0/search.md | 2 +- 37 files changed, 37 insertions(+), 23 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md index 8e602ea79f..8f58b1fdc6 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md @@ -1,6 +1,6 @@ --- title: "Personalization: dynamic pricing" -description: This document describes how to personalize pricing. +description: This document describes how to personalize your Spryker based shop with dynamic pricing. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/personalization-dymanic-pricing diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md index e299fb3bd8..dbceba2d98 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md @@ -1,6 +1,6 @@ --- title: Precise search by super attributes -description: This document describes precise search by super attributes +description: This document describes how to create precise search by using super attributes in your Spryker based shop. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/precise-search-by-super-attributes diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md index c76210a14d..bfec72a45d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md @@ -1,6 +1,6 @@ --- title: Search best practices -description: A collection of best practices for Spryker Commerce OS Search. +description: A collection of best practices for on site search within your Spryker Cloud Commerce OS shop. template: concept-topic-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md index 1e1dc0fc35..7a422963ad 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_search_attribute_map.csv" +description: Learn how to confgiure product searh attribute map in your Spryker shop using the product search attribute map csv file. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-product-search-attribute-mapcsv diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md index 9ed3546e02..cf6f5f917f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_search_attribute.csv" +description: Learn how to configure Product Search Attribute Information using the product search attribute csv file in your Spryker based projects. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-product-search-attributecsv diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md index 96444217e0..e289f256da 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md @@ -1,6 +1,6 @@ --- title: Search data import -description: Details about data import files for the Search PBC +description: Learn how data import works and the different methods and files for the Search module within your Spryker projects. template: concept-topic-template last_updated: Jul 23, 2023 --- diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md index 6bdc3f9283..ca50c8d721 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md @@ -1,5 +1,6 @@ --- title: Install the Catalog + Category Management feature +description: learn how to install the Spryker Catalog + Category Management Feature in to your Spryker based project. last_updated: Jul 6, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/catalog-category-management-feature-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md index cbf3faa416..35da26c854 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Catalog Glue API -description: Use the guide to install the Glue Catalog feature in your project. +description: Use the guide to learn how to install the Spryker Glue Catalog feature in to your Spryker based project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/catalog-api-feature-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md index abb498de79..58b1c97844 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md @@ -1,5 +1,6 @@ --- title: Install the Search Widget for Concrete Products feature +description: Learn how you can install the search widget for concrete products feature in your Spryker Project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-widget-for-concrete-products-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md index 418350f767..9e50f95754 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md @@ -1,5 +1,6 @@ --- title: Search migration concept +description: Learn about upgrading to a new Elasticsearch version or learn how to migrate to a different search provider within your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-migration-concept diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md index b081650464..619df37c61 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the CategoryPageSearch module +description: learn how to upgrade to a newer version of the Category Page Search module within your Spryker based projects. last_updated: Jun 22, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-categorypagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md index 5c85481ed3..7d1a1c495f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the CmsPageSearch module +description: learn how to upgrade to a newer version of the CMS Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-cmspagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md index aa56d1d294..f7236257c2 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Elastica module -description: Learn how to upgrade the Elastica module to a newer version +description: learn how to upgrade to a newer version of the Elastica module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-elastica diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md index 273794e1a6..2ff841fa5f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductLabelSearch module +description: learn how to upgrade to a newer version of the Product Label Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productlabelsearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md index da6f29bd6d..8adda713ea 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductPageSearch module +description: learn how to upgrade to a newer version of the Product Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productpagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md index ec23cd18c5..9b01bbe8c4 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductReviewSearch module +description: Learn how to upgrade to a newer version of the Product Review Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productreviewsearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md index 16ced2adec..c79abc6464 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductSetPageSearch module +description: Learn how to upgrade to a newer version of the Product Set Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productsetpagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md index 079a04e765..aee84f6ff5 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md @@ -1,6 +1,6 @@ --- title: "Best practices: Promote products with search preferences" -description: Learn how to edit search preferences in the Back Office +description: Learn how to edit search preferences in the Spryker Back Office using this best practices guide for your Spryker projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md index d813654f61..584361e795 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md @@ -1,6 +1,6 @@ --- title: Reorder category filters -description: Learn how to reorder category filters in the Back Office +description: Learn how to reorder category filters directly in the Back Office of your spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md index 71e5feb165..c97453d4ce 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md @@ -1,6 +1,6 @@ --- title: Define search preferences -description: Learn how to define search preferences in the Back Office +description: Learn how to define search preferences directly in the Back Office of your Spryker based projects. last_updated: Aug 4, 2021 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-search-preferences diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md index 0f89ac89d9..e704b849ad 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md @@ -1,6 +1,6 @@ --- title: Edit search preferences -description: Learn how to edit search preferences in the Back Office +description: Learn how to edit search preferences directly in the Back Office for your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md index cf5708271f..dc741c598f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md @@ -1,6 +1,6 @@ --- title: Edit filter preferences -description: Learn how to edit filter preferences in the Back Office +description: Learn how to edit filter preferences directly in the Back Office of your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md index 5d4034d211..7dcf65518d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md @@ -1,6 +1,6 @@ --- title: Reorder category filters -description: Learn how to reorder category filters in the Back Office +description: Learn how to reorder category filters directly in the Back Office of your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md index 24f1d55a53..c84eb2e1e1 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md @@ -1,6 +1,6 @@ --- title: Manage filters and search preferences in the Back Office -description: Learn how to log into the Back Office. +description: Learn how to manage filters and search preferences directly in the Back Office of your Spryker based projects. last_updated: Apr 13, 2023 template: back-office-user-guide-template redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md index b0e978318f..21cdd20790 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md @@ -1,5 +1,6 @@ --- title: Search feature overview +description: Learn everything you need to know about the Spryker Search Feature with this helpful overview. last_updated: Jul 6, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/search-summary diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md index 458e4f639a..67a080b438 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md @@ -1,5 +1,6 @@ --- title: Search types overview +description: Learn about the default search type options that come out of the box of Spryker Cloud Commerce OS. last_updated: Jul 8, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/search-types-overview diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md index 819bf339e9..2b02dedccc 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md @@ -1,5 +1,6 @@ --- title: Standard filters overview +description: Learn about the Standard filters that helps customers to narrow down products they are looking for in your Spryker Cloud Commerce OS Shop. last_updated: Jul 8, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/standard-filters-overview diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index b865b77904..9b7dfc46ed 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -1,6 +1,6 @@ --- title: Configure Algolia -description: Find out how you can configure Algolia in your Spryker shop +description: Learn how you can configure and integrate Spryker Third party Algolia in to your Spryker based projects. last_updated: Feb 21 2023 template: howto-guide-template redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md index f66cb03204..3cb72cd95f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md @@ -1,6 +1,6 @@ --- title: Disconnect Algolia -description: Find out how you can disconnect Algolia from your Spryker shop +description: Learn how you can disconnect Spryker Third party Algolia in to your Spryker based projects. template: howto-guide-template last_updated: Feb 23, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md index 204f6300c9..658afe7043 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md @@ -1,6 +1,6 @@ --- title: Getting access to Algolia dashboard -description: Submit a ticket to get access to Algolia dashboard +description: Learn how you can submit a ticket to get access to your Algolia dashboard for your Spryker based shop. template: concept-topic-template --- diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md index 32babd0d32..353974cfb6 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md @@ -1,6 +1,6 @@ --- title: Integrate Algolia -description: Find out how you can integrate Algolia into your Spryker shop +description: Learn how you can integrate Spryker Third party Algolia in to your Spryker based projects. template: howto-guide-template last_updated: Jan 09, 2024 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md index 863990b121..a061481f8b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md @@ -1,6 +1,6 @@ --- title: Configure a search query -description: This document explains how to configure a search query. +description: This document explains how to configure a search query for your Spryker based shop. last_updated: Jul 29, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-search-query diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md index a00449c19a..1bf64206f6 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md @@ -1,6 +1,6 @@ --- title: Configure search for multi-currency -description: This document describes how to configure search for multi-currency. +description: This document describes how to configure search for multi-currency within your Spryker based shop. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-multi-currency diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md index ac4bad259e..15afa3bde6 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md @@ -1,6 +1,6 @@ --- title: Expand search data -description: Learn how to expand entity data and create new data types in the search. +description: Learn how to expand entity data and create new data types in the search for your Spryker based projects. template: howto-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md index b119f5c3c4..f520a383a8 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md @@ -1,6 +1,6 @@ --- title: Facet filter overview and configuration -description: Facets provide aggregated data based on a search query. +description: Learn how to configure Facet filters allowing customers to quickly locate products within your Spryker shop. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/t-working-filter-facets diff --git a/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md b/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md index e7d0af32e3..cdde7ae0cc 100644 --- a/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md +++ b/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md @@ -1,6 +1,6 @@ --- title: "Glue API: Search the product catalog" -description: Search the product catalog via Glue API +description: Learn how you can Search the product catalog via Glue API within your Spryker based projects. template: glue-api-storefront-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/search.md b/docs/pbc/all/search/202410.0/search.md index 82986e7619..e6daa8faa2 100644 --- a/docs/pbc/all/search/202410.0/search.md +++ b/docs/pbc/all/search/202410.0/search.md @@ -1,6 +1,6 @@ --- title: Search -description: Search PBC lets you manage the search on the Storefront +description: Learn everything you need to know about the Spryker Search Feature for your Spryker Cloud Commerce OS or Spryker Marketplace shop. template: concept-topic-template last_updated: Nov 21, 2023 --- From ca32ca161ccec190c9149916b18e23ae9be45e6f Mon Sep 17 00:00:00 2001 From: AntonKhabiuk Date: Mon, 16 Dec 2024 13:28:00 +0200 Subject: [PATCH 07/46] CC-34932 Add Merchant Discount feature IG --- ...rchant-promotions-and-discounts-feature.md | 85 +++++++++++++++++++ ...rchant-promotions-and-discounts-feature.md | 8 ++ 2 files changed, 93 insertions(+) create mode 100644 _includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md create mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md new file mode 100644 index 0000000000..4acc9f2719 --- /dev/null +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md @@ -0,0 +1,85 @@ +This document describes how to install the Merchant + Promotions & Discounts feature. + +## Install feature core + +Follow the steps below to install the feature core. + +### Prerequisites + +Install the required features: + +| NAME | VERSION | INSTALLATION GUIDE | +|------------------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Marketplace Merchant | {{page.version}} | [Install the Marketplace Merchant feature](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-feature.html) | +| Promotions & Discounts | {{page.version}} | [Install the Promotions & Discounts feature](/docs/pbc/all/discount-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-promotions-and-discounts-feature.html) | +| Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | + +### 1) Install the required modules + +Install the required modules using Composer: + +```bash +composer require spryker/merchant-discount-connector:"^1.0.0" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|---------------------------|--------------------------------------------| +| MerchantDiscountConnector | vendor/spryker/merchant-discount-connector | + +{% endinfo_block %} + +### 2) Set up behavior + +Set up the following behaviors: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|--------------------------------------------------|------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------| +| MerchantReferenceDecisionRulePlugin | Defines if a discount can be applied to a cart item with a merchant reference specified. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | +| MerchantReferenceDiscountableItemCollectorPlugin | Collects the cart items with merchant reference to which a discount should be applied. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | + +**src/Pyz/Zed/Discount/DiscountDependencyProvider.php** + +```php + + */ + protected function getDecisionRulePlugins(): array + { + return array_merge(parent::getDecisionRulePlugins(), [ + new MerchantReferenceDecisionRulePlugin(), + ]); + } + + /** + * @return list<\Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemCollectorPluginInterface> + */ + protected function getCollectorPlugins(): array + { + return array_merge(parent::getCollectorPlugins(), [ + new MerchantReferenceDiscountableItemCollectorPlugin(), + ]); + } +} +``` + +{% info_block warningBox "Verification" %} + +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-refernce` field. +2. Add a product sold by the defined merchant to the cart. +3. Verify that the discount is applied to the cart. + +{% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md new file mode 100644 index 0000000000..00b213b612 --- /dev/null +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Merchant + Promotions & Discounts feature +description: Learn how to integrate the Merchant + Promotions & Discounts feature into a Spryker project. +last_updated: Dec 16, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/install-the-merchant-promotions-and-discounts-feature.md %} From 932fa7684aea162dfce598a1dc0bebb3bf65ce1b Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 16:21:54 +0000 Subject: [PATCH 08/46] Dev SDK SEO Update Updated the meta description of the SDK articles for an SEO Update --- .../sdks/sdk/build-flavored-spryker-sdks.md | 2 +- .../sdks/sdk/developing-with-spryker-sdk.md | 2 +- .../development-tools/architecture-sniffer.md | 18 +++++++-------- .../benchmark-performance-audit-tool.md | 2 +- .../sdk/development-tools/code-sniffer.md | 18 +++++++-------- .../development-tools/development-tools.md | 2 +- .../sdks/sdk/development-tools/formatter.md | 20 ++++++++--------- .../dev/sdks/sdk/development-tools/phpstan.md | 20 ++++++++--------- .../sdks/sdk/development-tools/scss-linter.md | 22 +++++++++---------- .../static-security-checker.md | 22 +++++++++---------- .../tooling-configuration-file.md | 22 +++++++++---------- .../sdks/sdk/development-tools/ts-linter.md | 22 +++++++++---------- docs/dg/dev/sdks/sdk/extending-spryker-sdk.md | 2 +- .../sdks/sdk/initialize-and-run-workflows.md | 2 +- ...mands-into-php-storm-command-line-tools.md | 2 +- docs/dg/dev/sdks/sdk/manifest-validation.md | 2 +- docs/dg/dev/sdks/sdk/spryker-sdk.md | 2 +- docs/dg/dev/sdks/sdk/spryks/adding-spryks.md | 4 ++-- .../spryks/checking-and-debugging-spryks.md | 2 +- ...d-disabling-the-code-sniffer-for-spryks.md | 2 +- docs/dg/dev/sdks/sdk/spryks/fileresolver.md | 2 +- .../spryks/spryk-configuration-reference.md | 2 +- .../sdks/sdk/spryks/spryks-qa-automation.md | 2 +- docs/dg/dev/sdks/sdk/task-set.md | 2 +- docs/dg/dev/sdks/sdk/task.md | 2 +- docs/dg/dev/sdks/sdk/telemetry.md | 2 +- .../spryker-sdk-command-not-found.md | 2 +- docs/dg/dev/sdks/sdk/value-resolvers.md | 2 +- docs/dg/dev/sdks/sdk/vcs-connector.md | 2 +- .../the-docker-sdk/choosing-a-mount-mode.md | 2 +- .../the-docker-sdk/configure-a-mount-mode.md | 2 +- ...onfigure-access-to-private-repositories.md | 2 +- ...eploy-file-inheritance-common-use-cases.md | 2 +- .../the-docker-sdk/deploy-file/deploy-file.md | 2 +- .../docker-environment-infrastructure.md | 1 + .../docker-sdk-configuration-reference.md | 2 +- .../docker-sdk-quick-start-guide.md | 2 +- ...llation-recipes-of-deployment-pipelines.md | 2 +- .../reset-docker-environments.md | 2 +- .../running-commands-with-the-docker-sdk.md | 2 +- .../running-tests-with-the-docker-sdk.md | 2 +- .../the-docker-sdk/update-the-docker-sdk.md | 1 + 42 files changed, 116 insertions(+), 116 deletions(-) diff --git a/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md b/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md index 1149d7d499..477484ea62 100644 --- a/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md +++ b/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md @@ -1,6 +1,6 @@ --- title: Build flavored Spryker SDKs -description: Find out how you can build flavored Spryker SDKs +description: Find out how you can build flavored Spryker SDKs with extension or deep integration of the SDK within your Spryker projects. template: howto-guide-template last_updated: Nov 22, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md b/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md index 5056899df2..f53df70550 100644 --- a/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Developing with Spryker SDK -description: You can install and use Spryker SDK for your development needs +description: Learn how you can install and use Spryker SDK for your development needs with the dev enironment. template: howto-guide-template last_updated: Nov 22, 2022 related: diff --git a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md index 706f6d0921..2b2ebe35b1 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md @@ -18,23 +18,23 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/architecture-sniffer.html related: - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- We use our [Architecture Sniffer Tool](https://github.com/spryker/architecture-sniffer) to ensure the quality of Spryker architecture for both core and project. diff --git a/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md b/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md index 8092730d51..a18b5a06fe 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md +++ b/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md @@ -1,6 +1,6 @@ --- title: "Benchmark: Performance audit tool" -description: The Benchmark tool allows you to assess an application's performance by seeing how long it takes to load a page and how much memory the application consumes during requests. +description: The Benchmark tool allows you to assess an application's performance by how long it takes to load a page and how much memory the it consumes during requests. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/performance-audit-tool-benchmark diff --git a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md index 660edbdc68..e459688a59 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md @@ -17,23 +17,23 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/code-sniffer.html related: - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- To correspond to [PSR-2](http://www.php-fig.org/psr/psr-2/) and additional standards, we integrated the well known [PHPCodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer). diff --git a/docs/dg/dev/sdks/sdk/development-tools/development-tools.md b/docs/dg/dev/sdks/sdk/development-tools/development-tools.md index 74375689af..86c682fe70 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/development-tools.md +++ b/docs/dg/dev/sdks/sdk/development-tools/development-tools.md @@ -1,6 +1,6 @@ --- title: Development tools -description: How to use the tools associated with developing using the Spryker SDK +description: Learn how you can use the tools associated with developing with Spryker using the Spryker SDK last_updated: Jan 12, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/sdks/sdk/development-tools/formatter.md b/docs/dg/dev/sdks/sdk/development-tools/formatter.md index cb54da3d9b..a2d394a3fd 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/formatter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/formatter.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/formatter.html - /docs/scos/dev/sdk/development-tools/formatter.html related: - - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Architecture sniffer + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- *Formatter* allows you to find and fix code style mistakes and keep your code more readable. diff --git a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md index 12a7ae384a..b86d62f265 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md +++ b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md @@ -1,6 +1,6 @@ --- title: PHPStan -description: Learn how to install and use PHPStan, a static code analyzer +description: Learn how to install and use PHPStan, a static code analyzer within your Spryker SDK projects. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/phpstan @@ -17,23 +17,21 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/phpstan.html related: - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- [PHPStan](https://github.com/phpstan/phpstan) is a static code analyzer that introspects the code without running it and catches various classes of bugs prior to unit testing. diff --git a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md index 32261780f7..ced14d5437 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/scss-linter.html - /docs/scos/dev/sdk/development-tools/scss-linter.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- *SCSS linter* allows you to find and fix code style mistakes. It helps a team follow the same standards and make code more readable. diff --git a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md index ce1705dd66..8da311569c 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md +++ b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/static-security-checker.html - /docs/scos/dev/sdk/development-tools/static-security-checker.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- The Spryker static Security Checker allows you to detect packages with security vulnerabilities. It is based on the [Local PHP Security Checker](https://github.com/fabpot/local-php-security-checker). diff --git a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md index d59b1f9fdb..2f8df2e511 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md +++ b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/tooling-config-file.html - /docs/scos/dev/sdk/development-tools/tooling-config-file.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html --- In order to make the tool configuring more convenient, we introduced the `.tooling.yml` file. It contains a variety of settings for different tools in one place, helping you to keep the number of files on the root level as small as possible. The `.tooling.yml` file should also be in `.gitattributes` to be ignored for tagging: diff --git a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md index 45333ac1a5..32a2031ce6 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md @@ -23,24 +23,24 @@ redirect_from: - /docs/sdk/dev/development-tools/ts-linter.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- {% info_block warningBox "No longer supported" %} diff --git a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md index 2544481dd8..d97a37f36e 100644 --- a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Extending Spryker SDK -description: Find out how you can extend the Spryker SDK +description: Find out how you can extend the Spryker SDK allowing third parties to contribute to the SDK without modifying it. template: howto-guide-template last_updated: Jan 13, 2023 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md b/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md index 0541a2f711..a2b18548a6 100644 --- a/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md +++ b/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md @@ -1,6 +1,6 @@ --- title: Initialize and run workflows -description: Learn about the Spryker SDK telemetry configuration. +description: Learn about the Spryker SDK telemetry configuration and how you can Initialise and run workflows within your Spryker SDK project. template: howto-guide-template last_updated: Dec 16, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md b/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md index 151a4c1770..518131781c 100644 --- a/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md +++ b/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md @@ -1,6 +1,6 @@ --- title: Integrate Spryker SDK commands into PhpStorm command line tools -description: You can make the Spryker SDK available for the PhpStorm. +description: Learn how to integrate Spryker SDK commands in to PHPStorm command line tools for your Spryker based projects. template: task-topic-template last_updated: Nov 22, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/manifest-validation.md b/docs/dg/dev/sdks/sdk/manifest-validation.md index 4dc603147e..776d312f05 100644 --- a/docs/dg/dev/sdks/sdk/manifest-validation.md +++ b/docs/dg/dev/sdks/sdk/manifest-validation.md @@ -1,6 +1,6 @@ --- title: Manifest validation -description: The manifest validation validates the YAML structure for a task. +description: Learn about the Manifest validation feature where it validates the YAML structure for a task within your Spryker projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/manifest-validation.html diff --git a/docs/dg/dev/sdks/sdk/spryker-sdk.md b/docs/dg/dev/sdks/sdk/spryker-sdk.md index 494d0f53cf..af9110e58c 100644 --- a/docs/dg/dev/sdks/sdk/spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Spryker SDK -description: Learn about the Spryker SDK and how you can use it in your project. +description: Learn all about the Spryker SDK and how you can use it to enhance your Spryker projects. template: concept-topic-template last_updated: Aug 31, 2023 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md b/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md index 1f8b33ffb9..7eb5e60453 100644 --- a/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md @@ -1,6 +1,6 @@ --- title: Adding Spryks -description: Find out how you can add a new Spryk +description: Find out how you can add a new Spryk in to your Spryker project with Spryker SDKs template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/adding-a-new-spryk.html @@ -8,7 +8,7 @@ redirect_from: last_updated: Nov 10, 2022 related: - title: Spryk configuration reference - link: docs/sdk/dev/spryks/spryk-configuration-reference.html + link: docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.html --- To add a new Spryk, you need to add a YAML configuration file to the `config/spryk/spryks/` directory. diff --git a/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md b/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md index 033231f1a5..eae6665974 100644 --- a/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md @@ -1,6 +1,6 @@ --- title: Checking and debugging Spryks -description: Find out how you can check and debug Spryks +description: Learn how you can check, troubleshoot and debug Spryks nad how to avoid dependencies within your Spryker project. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/checking-and-debugging-spryks.html diff --git a/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md b/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md index 32294dc305..469c2c3a8c 100644 --- a/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md @@ -1,6 +1,6 @@ --- title: Enabling and disabling the Code Sniffer for Spryks -description: Find out how you can enable or disable the Code Sniffer when running Spryks +description: Find out how you can enable or disable the Code Sniffer when running Spryks within your spryker projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.html diff --git a/docs/dg/dev/sdks/sdk/spryks/fileresolver.md b/docs/dg/dev/sdks/sdk/spryks/fileresolver.md index 4c5d932007..f1ac4c0ad4 100644 --- a/docs/dg/dev/sdks/sdk/spryks/fileresolver.md +++ b/docs/dg/dev/sdks/sdk/spryks/fileresolver.md @@ -1,6 +1,6 @@ --- title: FileResolver -description: Find out how you can enable or disable the Code Sniffer when running Spryks +description: Learn all about the FileResolver, a core part to file management within your Spryker Projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/fileresolver.html diff --git a/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md b/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md index a30a9a6b93..a2f2e015be 100644 --- a/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md +++ b/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md @@ -1,6 +1,6 @@ --- title: Spryk configuration reference -description: Learn about the Spryk file structure and its elements +description: Learn about the Spryk file structure and its elements with this Spryks configuration reference for your projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/spryk-configuration-reference.html diff --git a/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md b/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md index 722c25d0a4..42220fd430 100644 --- a/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md +++ b/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md @@ -1,6 +1,6 @@ --- title: Spryks QA automation -description: QA automation lets you run QA tools and unit tests required by Spryker +description: Learn all about QA automation lets you run QA tools and unit tests required by Spryker template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/qa-automation.html diff --git a/docs/dg/dev/sdks/sdk/task-set.md b/docs/dg/dev/sdks/sdk/task-set.md index 8874d41a65..298734e1cb 100644 --- a/docs/dg/dev/sdks/sdk/task-set.md +++ b/docs/dg/dev/sdks/sdk/task-set.md @@ -1,6 +1,6 @@ --- title: Task set -description: Task set is a group of related tasks that you can run with one command. +description: Learn about task sets and how a Task set is a group of related tasks that you can run with one command. template: concept-topic-template redirect_from: - /docs/sdk/dev/task-set.html diff --git a/docs/dg/dev/sdks/sdk/task.md b/docs/dg/dev/sdks/sdk/task.md index 8815b42504..71c16876c1 100644 --- a/docs/dg/dev/sdks/sdk/task.md +++ b/docs/dg/dev/sdks/sdk/task.md @@ -1,6 +1,6 @@ --- title: Task -description: Task is the smallest unit for running commands in the Spryker SDK which serves as a command wrapper. +description: Learn about Tasks and how a Task is the smallest unit for running commands in the Spryker SDK which serves as a command wrapper. template: concept-topic-template redirect_from: - /docs/sdk/dev/task.html diff --git a/docs/dg/dev/sdks/sdk/telemetry.md b/docs/dg/dev/sdks/sdk/telemetry.md index e57a737943..b5b6e7fc8a 100644 --- a/docs/dg/dev/sdks/sdk/telemetry.md +++ b/docs/dg/dev/sdks/sdk/telemetry.md @@ -1,6 +1,6 @@ --- title: Telemetry -description: Learn about the Spryker SDK telemetry configuration. +description: Learn about the Spryker SDK telemetry configuration and how to implement custom events within your Spryker project. template: howto-guide-template redirect_from: - /docs/sdk/dev/telemetry.html diff --git a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md index ea8a43d23f..e7c2ca03ac 100644 --- a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md +++ b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md @@ -1,6 +1,6 @@ --- title: spryker-sdk command not found -description: Troubleshooting for the Spryker SDK document. +description: Learn how to Troubleshooting and resolve for the Spryker SDK command not found within your spryker projects. template: concept-topic-template redirect_from: - /docs/sdk/dev/troubleshooting/spryker-sdk-command-not-found.html diff --git a/docs/dg/dev/sdks/sdk/value-resolvers.md b/docs/dg/dev/sdks/sdk/value-resolvers.md index cbe759204c..7c451b6ce2 100644 --- a/docs/dg/dev/sdks/sdk/value-resolvers.md +++ b/docs/dg/dev/sdks/sdk/value-resolvers.md @@ -1,6 +1,6 @@ --- title: Value resolvers -description: Spryker SDK has several value resolvers described in this document. +description: Learn about Spryker SDK and its several value resolvers described in this document for your spryker projects. template: concept-topic-template redirect_from: - /docs/sdk/dev/value-resolvers.html diff --git a/docs/dg/dev/sdks/sdk/vcs-connector.md b/docs/dg/dev/sdks/sdk/vcs-connector.md index 938de0884b..2cf388c879 100644 --- a/docs/dg/dev/sdks/sdk/vcs-connector.md +++ b/docs/dg/dev/sdks/sdk/vcs-connector.md @@ -1,6 +1,6 @@ --- title: VCS connector -description: The VCS connector feature for the Spryker SDK. +description: A quick guide to learn everyting you need to know about the VCS connector feature for the Spryker SDK. template: concept-topic-template redirect_from: - /docs/sdk/dev/vcs.html diff --git a/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md b/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md index ac692374c4..4c9881c0ba 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md +++ b/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md @@ -1,6 +1,6 @@ --- title: Choosing a mount mode -description: Learn about supported mount modes and how to choose one. +description: Learn about supported mount modes and how to choose one depending of your operating system for your Spryker Project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/choosing-a-mount-mode diff --git a/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md b/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md index ab7ffa6e48..cf52d4f155 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md +++ b/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md @@ -1,6 +1,6 @@ --- title: Configure a mount mode -description: Learn how to configure a mount mode. +description: Learn about supported mount modes and how to configure one depending of your operating system for your Spryker Project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-a-mount-mode diff --git a/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md b/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md index 5247e2276b..766d19cee9 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md +++ b/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md @@ -1,6 +1,6 @@ --- title: Configure access to private repositories -description: Configure your local environment to access private repositories. +description: Learn how to configure your local environment to access private repositories for your Spryker project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-access-to-private-repositories diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md index c46f86716a..7a716ac8c8 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md @@ -1,6 +1,6 @@ --- title: "Deploy file inheritance: common use cases" -description: Examples of using deploy file inheritance +description: Learn about common use cases for deploy file inheritance and how you can enhance your Spryker projects. template: concept-topic-template last_updated: Nov 21, 2023 related: diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md index 0300d1e951..fa6ac51119 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md @@ -1,6 +1,6 @@ --- title: Deploy file -description: Overview of the deploy file +description: Learn about the Spryker Deploy yaml file and how it works to deploy your Spryker environment. template: concept-topic-template last_updated: Nov 21, 2023 related: diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md b/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md index 5bf14361a5..6e44a77f27 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md @@ -1,5 +1,6 @@ --- title: Docker environment infrastructure +description: Learn all about the infrastructure of Spryker in a Docker environment for your Spryker baed projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-environment-infrastructure diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md index d9916e12a3..af94582a18 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md @@ -1,6 +1,6 @@ --- title: Docker SDK configuration reference -description: Instructions for the most common configuration cases of the Docker SDK. +description: A guide with instructions for the most common configuration cases of the Docker SDK for Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-sdk-configuration-reference diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md index 67e1e9883c..cbe5f8dbbf 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md @@ -1,6 +1,6 @@ --- title: Docker SDK quick start guide -description: Get started with Spryker Docker SDK. +description: Get up and running quickly with this Quick start guide for Docker SDK for your Spryker projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-sdk-quick-start-guide diff --git a/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md b/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md index 8234476ea5..840f314fc9 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md +++ b/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md @@ -1,6 +1,6 @@ --- title: Installation recipes of deployment pipelines -description: Installation recipe commands and file structure. +description: Learn all about the Spryker Installation recipes of your deployment pipelines for your spryker based projects. last_updated: Nov 29, 2022 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md b/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md index cfa8cfa03e..4645af7983 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md +++ b/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md @@ -1,6 +1,6 @@ --- title: Reset Docker environments -description: Learn how to restart your Spryker in Docker from scratch. +description: Learn how to restart and reset your docker environments to start from scratch for your Spryker projects. last_updated: Jun 18, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/howto-reset-a-docker-environment diff --git a/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md index 94a5fab4bc..7ca9efbd34 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md @@ -1,6 +1,6 @@ --- title: Running commands with the Docker SDK -description: How to use Docker SDK command line interface. +description: Learn how to use Docker SDK command line interface to run commands for your Spryker based project. last_updated: Jan 16, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md index d4092b2450..9774e3942c 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md @@ -1,6 +1,6 @@ --- title: Running tests with the Docker SDK -description: Learn how to run tests with the Docker SDK. +description: Learn how you can run tests in different ways with the Docker SDK for your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/running-tests-with-the-docker-sdk diff --git a/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md index 708dc07eff..5c3f9f45b4 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md @@ -1,5 +1,6 @@ --- title: Update the Docker SDK +description: Learn how you can update the Docker SDK to a newer version depending on the installation of your Spryker instance. last_updated: Jun 1, 2024 template: howto-guide-template From 6ed95d42cb7468c2d4f0cf430bc9e9ac257237d2 Mon Sep 17 00:00:00 2001 From: AntonKhabiuk Date: Tue, 17 Dec 2024 11:43:20 +0200 Subject: [PATCH 09/46] CC-34932 Fixes after CR --- .../install-the-merchant-promotions-and-discounts-feature.md | 4 ++-- .../install-the-merchant-promotions-and-discounts-feature.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md index 4acc9f2719..c4b5daa5e4 100644 --- a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md @@ -78,8 +78,8 @@ class DiscountDependencyProvider extends SprykerDiscountDependencyProvider {% info_block warningBox "Verification" %} -1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-refernce` field. -2. Add a product sold by the defined merchant to the cart. +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-reference` field. +2. Add a product sold by the merchant defined in the newly created discount to the cart. 3. Verify that the discount is applied to the cart. {% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md index 00b213b612..fa66fce894 100644 --- a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md @@ -5,4 +5,4 @@ last_updated: Dec 16, 2024 template: feature-integration-guide-template --- -{% include pbc/all/install-features/{{page.version}}/install-the-merchant-promotions-and-discounts-feature.md %} +{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-merchant-promotions-and-discounts-feature.md %} From ee6a7c2fe1d966f1cf77ff02cba24e0e519157b0 Mon Sep 17 00:00:00 2001 From: ilyakubanov Date: Tue, 17 Dec 2024 11:49:12 +0100 Subject: [PATCH 10/46] CC-34976 Product offer discount IG --- ...-offer-promotions-and-discounts-feature.md | 85 +++++++++++++++++++ ...-offer-promotions-and-discounts-feature.md | 8 ++ 2 files changed, 93 insertions(+) create mode 100644 _includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md create mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md new file mode 100644 index 0000000000..b40c45f456 --- /dev/null +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md @@ -0,0 +1,85 @@ +This document describes how to install the Marketplace Product Offer + Promotions & Discounts feature. + +## Install feature core + +Follow the steps below to install the feature core. + +### Prerequisites + +Install the required features: + +| NAME | VERSION | INSTALLATION GUIDE | +|---------------------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Promotions & Discounts | {{page.version}} | [Install the Promotions & Discounts feature](/docs/pbc/all/discount-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-promotions-and-discounts-feature.html) | +| Marketplace Product Offer | {{page.version}} | [Install the Marketplace Product Offer feature](/docs/pbc/all/offer-management/{{page.version}}/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-feature.html) | +| Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | + +### 1) Install the required modules + +Install the required modules using Composer: + +```bash +composer require spryker/product-offer-discount-connector:"^1.0.0" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|-------------------------------|-----------------------------------------| +| ProductOfferDiscountConnector | vendor/product-offer-discount-connector | + +{% endinfo_block %} + +### 2) Set up behavior + +Set up the following behaviors: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------------------------------|--------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------| +| ProductOfferReferenceDecisionRulePlugin | Checks if the item's product offer reference matches the discount's condition. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | +| ProductOfferReferenceDiscountableItemCollectorPlugin | Collects discountable items from the given quote by items' product offer references. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | + +**src/Pyz/Zed/Discount/DiscountDependencyProvider.php** + +```php + + */ + protected function getDecisionRulePlugins(): array + { + return array_merge(parent::getDecisionRulePlugins(), [ + new ProductOfferReferenceDecisionRulePlugin(), + ]); + } + + /** + * @return list<\Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemCollectorPluginInterface> + */ + protected function getCollectorPlugins(): array + { + return array_merge(parent::getCollectorPlugins(), [ + new ProductOfferReferenceDiscountableItemCollectorPlugin(), + ]); + } +} +``` + +{% info_block warningBox "Verification" %} + +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `product-offer` field. +2. Add a product offer defined in the newly created discount to the cart. +3. Verify that the discount is applied to the cart. + +{% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md new file mode 100644 index 0000000000..c4ebc4630d --- /dev/null +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Marketplace Product Offer + Promotions & Discounts feature +description: Learn how to integrate the Marketplace Product Offer + Promotions & Discounts feature into a Spryker project. +last_updated: Dec 17, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md %} From 3c38e1a95b36c64011d5dc5f0aed88d578f0d06d Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 15:50:44 +0100 Subject: [PATCH 11/46] Update configure-elasticsearch.md --- .../tutorials-and-howtos/configure-elasticsearch.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index ec25f9349a..33f2dae79e 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -187,3 +187,16 @@ For the default page index, the class is `\Generated\Shared\Search\PageIndexMap` These classes provide some information from mapping, such as fields and metadata. Use these classes for references to program against something related to that mapping schema. If you change mapping and run the installer, autogenerated classes change accordingly. + +{% info_block warningBox "Index update limitations" %} + +Elastic Search has different limitations, when it comes to update of the existing index with data in it. +Unfortunatelly, the errors you see from the Elastic Search are confusing. +In order to ensure that the index is correct, please drop the index, create it again and sync data into it. +APPLICATION_STORE=DE console search:index:delete +APPLICATION_STORE=DE console search:setup:sources +APPLICATION_STORE=DE console sync:data + +Please contact our support or community to get more specific help. + +{% endinfo_block %} From 8c2b82aa8c7ce0b38c03ab6bc8a7138abe3a11fb Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 15:53:42 +0100 Subject: [PATCH 12/46] Update configure-elasticsearch.md --- .../base-shop/tutorials-and-howtos/configure-elasticsearch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index 33f2dae79e..b99a97e589 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -1,7 +1,7 @@ --- title: Configure Elasticsearch description: Elasticsearch is a NoSQL data store that lets you predefine the structure of the data you store in it. -last_updated: Jul 24, 2022 +last_updated: Dec 17, 2024 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-configure-elasticsearch originalArticleId: 6aa9f4ab-25de-46bc-b734-54bccb25cf0b From cbf2cf1c0dc3a52c7556216dc75f1a6158e0030c Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 16:30:05 +0100 Subject: [PATCH 13/46] Update configure-elasticsearch.md --- .../tutorials-and-howtos/configure-elasticsearch.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index b99a97e589..b5fe596b25 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -195,8 +195,13 @@ Unfortunatelly, the errors you see from the Elastic Search are confusing. In order to ensure that the index is correct, please drop the index, create it again and sync data into it. APPLICATION_STORE=DE console search:index:delete APPLICATION_STORE=DE console search:setup:sources + +If you had **no changes** to the data, execute: APPLICATION_STORE=DE console sync:data +If you had **any changes** to the data, execute: +APPLICATION_STORE=DE console publish:trigger-events + Please contact our support or community to get more specific help. {% endinfo_block %} From a01c521241f5edb6cc2f7331a5fa54c27c34ac91 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Wed, 18 Dec 2024 11:09:59 +0000 Subject: [PATCH 14/46] DEV Misc SEO Update changed the meta description for misc articles within the developing standalone modules section in dev docs --- docs/dg/dev/code-contribution-guide.md | 4 ++-- docs/dg/dev/code-generator.md | 9 +++++---- docs/dg/dev/data-import/202410.0/data-import.md | 2 +- .../create-standalone-modules.md | 2 +- .../developing-standalone-modules.md | 2 +- .../driving-the-usage-of-standalone-modules.md | 2 +- .../ensuring-quality-in-standalone-modules.md | 2 +- .../prepare-for-standalone-module-development.md | 2 +- .../publish-standalone-modules-on-github.md | 2 +- .../publish-standalone-modules-on-packagist.md | 2 +- .../test-the-compatibility-of-standalone-modules.md | 2 +- 11 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/dg/dev/code-contribution-guide.md b/docs/dg/dev/code-contribution-guide.md index 289f6e3636..405ebdbc49 100644 --- a/docs/dg/dev/code-contribution-guide.md +++ b/docs/dg/dev/code-contribution-guide.md @@ -1,6 +1,6 @@ --- title: Code contribution guide -description: Contribute to Spryker repositories +description: Learn how you can contribute to Spryker Repositories with this code contribution guide. last_updated: Apr 3, 2024 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/code-contribution-guide @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/code-contribution-guide.html related: - title: Contribute to the documentation - link: docs/scos/user/intro-to-spryker/contribute-to-the-documentation/contribute-to-the-documentation.html + link: docs/about/all/about-the-docs/contribute-to-the-docs/contribute-to-the-docs.html --- diff --git a/docs/dg/dev/code-generator.md b/docs/dg/dev/code-generator.md index 272da22a41..c4243a6cd7 100644 --- a/docs/dg/dev/code-generator.md +++ b/docs/dg/dev/code-generator.md @@ -1,5 +1,6 @@ --- title: Code Generator +description: The code Generator module can generate Yves, Zed, Client Service and shared application code for your Spryker based project. last_updated: Nov 18, 2020 template: concept-topic-template originalLink: https://documentation.spryker.com/v1/docs/code-generator @@ -15,13 +16,13 @@ redirect_from: - /docs/scos/dev/code-generator.html related: - title: Cronjob scheduling - link: docs/scos/dev/sdk/cronjob-scheduling.html + link: docs/dg/dev/backend-development/cronjobs/cronjobs.html - title: Data import - link: docs/dg/dev/data-import/page.version/data-import.html + link: docs/dg/dev/data-import/202410.0/data-import.html - title: Development virtual machine, docker containers & console - link: docs/scos/dev/sdk/development-virtual-machine-docker-containers-and-console.html + link: docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.html - title: Twig and TwigExtension - link: docs/scos/dev/sdk/twig-and-twigextension.html + link: docs/dg/dev/integrate-and-configure/twig-and-twigextension.html --- The CodeGenerator module can generate your project code. diff --git a/docs/dg/dev/data-import/202410.0/data-import.md b/docs/dg/dev/data-import/202410.0/data-import.md index 81bdf9d7b0..276862a1ff 100644 --- a/docs/dg/dev/data-import/202410.0/data-import.md +++ b/docs/dg/dev/data-import/202410.0/data-import.md @@ -1,6 +1,6 @@ --- title: Data import -description: Import data from other systems into your Spryker Commerce OS project +description: Learn how to import data from other systems into your Spryker Cloud Commerce OS based project last_updated: Sep 7, 2022 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md index 712b0ece6a..e428ce0396 100644 --- a/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Create standalone modules -description: How to develop a Spryker module +description: Learn how you can create standalone modules like extending modules or enabling custom namespace within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md index 1575066e41..f096b03bdb 100644 --- a/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Developing standalone modules -description: Learn how to develop standalone modules +description: Learn how you can develop standalone modules like extending modules or enabling custom namespace within your Spryker based projects. last_updated: Jul 7, 2024 template: concept-topic-template --- diff --git a/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md index a9b3052cc2..1b55af6c8e 100644 --- a/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Driving the usage of standalone modules -description: Drive Usage and Support with Problems +description: Learn how you can drive usage and support with problems within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md index 8c7f804410..0dfe270f0c 100644 --- a/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Ensuring quality in standalone modules -description: Ensure Quality +description: Learn how you can ensure quality in standalone modules and adhere to Spryker's code quality within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md b/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md index 5c16cbb782..7a841a10b7 100644 --- a/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md +++ b/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md @@ -1,6 +1,6 @@ --- title: Prepare for standalone module development -description: Onboard and learn +description: Learn how you can prepare for standalone module development within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md index 08fd88b60c..d0d335492f 100644 --- a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md +++ b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md @@ -1,6 +1,6 @@ --- title: Publish standalone modules on GitHub -description: Learn how to publish a standalone module on GitHub +description: Learn how to publish a standalone module on GitHub with your github account and github repository. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md index 859c1e9a73..29d055f724 100644 --- a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md +++ b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md @@ -1,6 +1,6 @@ --- title: Publish standalone modules on Packagist -description: Learn how to publish a module on Packagist for distribution +description: Learn how to publish a module on Packagist for distribution within your Spryker Cloud Commerce OS Project. last_updated: Jun 7, 2024 template: howto-guide-template diff --git a/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md index f8188a78b3..9fed53747a 100644 --- a/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Test the compatibility of standalone modules -description: Ensure compatibility +description: Learn how to test the compatibility of standalone modules within your Spryker based project. last_updated: Jun 7, 2024 template: howto-guide-template --- From 53d8af286258c3a927e958ba3d5081217e354bf5 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 19 Dec 2024 11:04:11 +0200 Subject: [PATCH 15/46] tw-reivew --- _config.yml | 1 + _data/sidebars/pbc_all_sidebar.yml | 4 ++++ ...t-offer-promotions-and-discounts-feature.md | 18 +++++++----------- ...t-offer-promotions-and-discounts-feature.md | 0 4 files changed, 12 insertions(+), 11 deletions(-) rename docs/pbc/all/{discount-management => offer-management}/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md (100%) diff --git a/_config.yml b/_config.yml index 26493d6e3d..2ffe8aca78 100644 --- a/_config.yml +++ b/_config.yml @@ -136,6 +136,7 @@ versions: '202311.0': '202311.0' '202404.0': '202404.0' '202410.0': '202410.0' + '202505.0': '202505.0' # versioned categories - these must match corresponding directories versioned_categories: diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 359f59aee4..ef47e53efb 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -1939,6 +1939,10 @@ entries: url: /docs/pbc/all/offer-management/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-marketplace-product-feature.html - title: Marketplace Product Offer + Quick Add to Cart url: /docs/pbc/all/offer-management/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-quick-add-to-cart-feature.html + - title: Marketplace Product Offer + Promotions & Discounts feature + url: /docs/pbc/all/offer-management/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.html + include_versions: + - "202505.0" - title: Product Offer Shipment Availability url: /docs/pbc/all/offer-management/marketplace/install-and-upgrade/install-features/install-the-product-offer-shipment-availability-feature.html - title: Product Offer Shipment diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md index b40c45f456..25f540fa21 100644 --- a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md @@ -1,10 +1,6 @@ This document describes how to install the Marketplace Product Offer + Promotions & Discounts feature. -## Install feature core - -Follow the steps below to install the feature core. - -### Prerequisites +## Prerequisites Install the required features: @@ -14,7 +10,7 @@ Install the required features: | Marketplace Product Offer | {{page.version}} | [Install the Marketplace Product Offer feature](/docs/pbc/all/offer-management/{{page.version}}/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-feature.html) | | Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | -### 1) Install the required modules +## 1) Install the required modules Install the required modules using Composer: @@ -32,13 +28,13 @@ Make sure the following modules have been installed: {% endinfo_block %} -### 2) Set up behavior +## 2) Set up behavior Set up the following behaviors: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |------------------------------------------------------|--------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------| -| ProductOfferReferenceDecisionRulePlugin | Checks if the item's product offer reference matches the discount's condition. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | +| ProductOfferReferenceDecisionRulePlugin | Checks if an item's product offer reference matches the discount's condition. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | | ProductOfferReferenceDiscountableItemCollectorPlugin | Collects discountable items from the given quote by items' product offer references. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | **src/Pyz/Zed/Discount/DiscountDependencyProvider.php** @@ -63,7 +59,7 @@ class DiscountDependencyProvider extends SprykerDiscountDependencyProvider new ProductOfferReferenceDecisionRulePlugin(), ]); } - + /** * @return list<\Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemCollectorPluginInterface> */ @@ -79,7 +75,7 @@ class DiscountDependencyProvider extends SprykerDiscountDependencyProvider {% info_block warningBox "Verification" %} 1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `product-offer` field. -2. Add a product offer defined in the newly created discount to the cart. -3. Verify that the discount is applied to the cart. +2. Add a product offer defined in the discount you've created to cart. + Make sure that the discount has been applied to the cart. {% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/docs/pbc/all/offer-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md similarity index 100% rename from docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md rename to docs/pbc/all/offer-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md From 86c853727cb2db02375807626ef73e635aaf4005 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 19 Dec 2024 11:33:18 +0200 Subject: [PATCH 16/46] tw-review --- ...-merchant-promotions-and-discounts-feature.md | 16 ++++++---------- ...-merchant-promotions-and-discounts-feature.md | 0 2 files changed, 6 insertions(+), 10 deletions(-) rename docs/pbc/all/{discount-management => merchant-management}/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md (100%) diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md index c4b5daa5e4..4509e0207f 100644 --- a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md @@ -1,10 +1,6 @@ This document describes how to install the Merchant + Promotions & Discounts feature. -## Install feature core - -Follow the steps below to install the feature core. - -### Prerequisites +## Prerequisites Install the required features: @@ -14,7 +10,7 @@ Install the required features: | Promotions & Discounts | {{page.version}} | [Install the Promotions & Discounts feature](/docs/pbc/all/discount-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-promotions-and-discounts-feature.html) | | Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | -### 1) Install the required modules +## 1) Install the required modules Install the required modules using Composer: @@ -32,14 +28,14 @@ Make sure the following modules have been installed: {% endinfo_block %} -### 2) Set up behavior +## 2) Set up behavior Set up the following behaviors: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------|------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------| | MerchantReferenceDecisionRulePlugin | Defines if a discount can be applied to a cart item with a merchant reference specified. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | -| MerchantReferenceDiscountableItemCollectorPlugin | Collects the cart items with merchant reference to which a discount should be applied. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | +| MerchantReferenceDiscountableItemCollectorPlugin | Collects cart items with a merchant reference to which a discount should be applied. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | **src/Pyz/Zed/Discount/DiscountDependencyProvider.php** @@ -79,7 +75,7 @@ class DiscountDependencyProvider extends SprykerDiscountDependencyProvider {% info_block warningBox "Verification" %} 1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-reference` field. -2. Add a product sold by the merchant defined in the newly created discount to the cart. -3. Verify that the discount is applied to the cart. +2. Add a product sold by the merchant you've defined in the discount to cart. + Make sure the discount has been applied. {% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/merchant-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md similarity index 100% rename from docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md rename to docs/pbc/all/merchant-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md From f6ebb4f0182dde3fc343ce5b6ba6417ca62393c9 Mon Sep 17 00:00:00 2001 From: AntonKhabiuk Date: Thu, 19 Dec 2024 13:17:01 +0200 Subject: [PATCH 17/46] CC-34932 Fixes after CR --- ...ketplace-merchant-promotions-and-discounts-feature.md} | 2 +- ...rketplace-merchant-promotions-and-discounts-feature.md | 8 ++++++++ ...stall-the-merchant-promotions-and-discounts-feature.md | 8 -------- 3 files changed, 9 insertions(+), 9 deletions(-) rename _includes/pbc/all/install-features/202505.0/marketplace/{install-the-merchant-promotions-and-discounts-feature.md => install-the-marketplace-merchant-promotions-and-discounts-feature.md} (97%) create mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-promotions-and-discounts-feature.md delete mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-merchant-promotions-and-discounts-feature.md similarity index 97% rename from _includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md rename to _includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-merchant-promotions-and-discounts-feature.md index c4b5daa5e4..75dc9f3744 100644 --- a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-merchant-promotions-and-discounts-feature.md @@ -1,4 +1,4 @@ -This document describes how to install the Merchant + Promotions & Discounts feature. +This document describes how to install the Marketplace Merchant + Promotions & Discounts feature. ## Install feature core diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-promotions-and-discounts-feature.md new file mode 100644 index 0000000000..f146f1ad96 --- /dev/null +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-promotions-and-discounts-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Marketplace Merchant + Promotions & Discounts feature +description: Learn how to integrate the Marketplace Merchant + Promotions & Discounts feature into a Spryker project. +last_updated: Dec 19, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-marketplace-merchant-promotions-and-discounts-feature.md %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md deleted file mode 100644 index fa66fce894..0000000000 --- a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Install the Merchant + Promotions & Discounts feature -description: Learn how to integrate the Merchant + Promotions & Discounts feature into a Spryker project. -last_updated: Dec 16, 2024 -template: feature-integration-guide-template ---- - -{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-merchant-promotions-and-discounts-feature.md %} From e03129cf28ec473c7424ad144142a22952c66f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Thu, 19 Dec 2024 12:23:51 +0100 Subject: [PATCH 18/46] Update payone-acp-app.md --- .../app-composition-platform-integration/payone-acp-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 8fbe80d2a8..4b2fcc70f6 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -2,7 +2,7 @@ title: Payone ACP app description: With Payone, your customers can pay with common payment methods, such as credit card, PayPal, Prepayment and Klarna. template: howto-guide-template -last_updated: Now 8, 2024 +last_updated: Dec 18, 2024 redirect_from: - /docs/aop/user/apps/payone.html - /docs/acp/user/apps/payone.html From 65b2f5029524ccc4c16b293226684e8b64dcc1cd Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 20 Dec 2024 11:24:51 +0200 Subject: [PATCH 19/46] Update scss-linter.md --- docs/dg/dev/sdks/sdk/development-tools/scss-linter.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md index ced14d5437..947dc8829e 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md @@ -16,9 +16,9 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/scss-linter.html - /docs/scos/dev/sdk/development-tools/scss-linter.html related: - - title: Code sniffer + - title: Code sniffer link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - - title: Formatter + - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html From 1801788d5da2818748b404715d3fb62915b276e9 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 20 Dec 2024 11:37:41 +0200 Subject: [PATCH 20/46] links --- .../integrate-development-tools/integrate-scss-linter.md | 2 +- .../integrate-development-tools/integrate-ts-linter.md | 2 +- .../sdks/sdk/development-tools/architecture-sniffer.md | 4 ++-- docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md | 4 ++-- docs/dg/dev/sdks/sdk/development-tools/formatter.md | 4 ++-- docs/dg/dev/sdks/sdk/development-tools/phpstan.md | 2 +- docs/dg/dev/sdks/sdk/development-tools/scss-linter.md | 4 ++-- .../sdks/sdk/development-tools/static-security-checker.md | 8 ++++---- .../sdk/development-tools/tooling-configuration-file.md | 8 ++++---- docs/dg/dev/sdks/sdk/development-tools/ts-linter.md | 8 ++++---- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md index 85bfb87aa3..6dff49db92 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md @@ -19,7 +19,7 @@ related: link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html --- -Follow the steps below to integrate the [SCSS linter ](/docs/scos/dev/sdk/development-tools/scss-linter.html)into your project. +Follow the steps below to integrate the [SCSS linter ](/docs/dg/dev/sdks/sdk/development-tools/scss-linter.html)into your project. ## 1. Install the dependencies diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md index b3bf73bebd..a09125e90a 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md @@ -19,7 +19,7 @@ related: link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html --- -Follow the steps below to integrate [TS linter](/docs/scos/dev/sdk/development-tools/ts-linter.html) into your project. +Follow the steps below to integrate [TS linter](/docs/dg/dev/sdks/sdk/development-tools/ts-linter.html) into your project. ## 1. Install the dependencies diff --git a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md index 2b2ebe35b1..9a474c1595 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md @@ -22,9 +22,9 @@ related: - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md index e459688a59..005dc13c84 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md @@ -21,9 +21,9 @@ related: - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/formatter.md b/docs/dg/dev/sdks/sdk/development-tools/formatter.md index a2d394a3fd..4882951193 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/formatter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/formatter.md @@ -21,9 +21,9 @@ related: - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md index ab24ba1d2d..f78cb7ce06 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md +++ b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md @@ -21,7 +21,7 @@ related: - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md index 947dc8829e..000d2ade0c 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md @@ -23,9 +23,9 @@ related: - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: TS linter link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator diff --git a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md index 8da311569c..515b2fe756 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md +++ b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md @@ -16,16 +16,16 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/static-security-checker.html - /docs/scos/dev/sdk/development-tools/static-security-checker.html related: - - title: Code sniffer + - title: Code sniffer link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - - title: Formatter + - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md index 2f8df2e511..6e0b027aba 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md +++ b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md @@ -16,16 +16,16 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/tooling-config-file.html - /docs/scos/dev/sdk/development-tools/tooling-config-file.html related: - - title: Code sniffer + - title: Code sniffer link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - - title: Formatter + - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter diff --git a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md index 32a2031ce6..9d2ce5070b 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md @@ -23,16 +23,16 @@ redirect_from: - /docs/sdk/dev/development-tools/ts-linter.html related: - - title: Code sniffer + - title: Code sniffer link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - - title: Formatter + - title: Formatter link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html + link: docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html - title: SCSS linter link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: Spryk code generator From 3fce70ca2c49ccecdd2870e00f062ea488bd969c Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Fri, 20 Dec 2024 14:45:49 +0100 Subject: [PATCH 21/46] Update add-new-store-in-multi-db-setup.md --- .../add-new-store-in-multi-db-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 35193b01d8..05b2e45ae0 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -76,7 +76,7 @@ Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/ #### Setting up additional deployment recipes -It is convenient to create additional deployment install recipes (located under config/install folder) to setup a new and delete an existing stores, for testing purposes. Below is an example of such setup that proves to be working well on prcatice. We took the existing folder structure, and EU folder as a base, but you can introduce your structure: +It is convenient to create additional deployment install recipes (located under config/install folder) to setup a new and delete an existing stores, for testing purposes. Below is an example of such setup that proves to be working well on prcatice. We took the existing out of the box folder structure, and EU folder as a base, but you can introduce your structure: 1. config/install/EU/setup-store.yml - contains everything needed to do a minimal setup of a new store(s): ``` From 03ff24847048f4a03728fdd2755c456ca8a14a2c Mon Sep 17 00:00:00 2001 From: Oleksii Bilan Date: Mon, 23 Dec 2024 11:33:35 +0200 Subject: [PATCH 22/46] Update integrate-algolia-personalization.md (#3011) * Update integrate-algolia-personalization.md * Update integrate-algolia-personalization.md --------- Co-authored-by: Stanislav Matveyev --- .../algolia/integrate-algolia-personalization.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md index 2b927d7348..e5ed18a6dd 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md @@ -164,7 +164,7 @@ Order Success page cases: | - | - | | Open the **Order Success** page | `PAGE_LOAD` with currency, order total, SKUs, prices, and quantities of purchased products. | -For a full list of available events, see the [traceable-events-algolia readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). +For a full list of available events, see the [traceable-events-algolia readme file](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). ### Common issues and solutions @@ -176,7 +176,7 @@ This section common issues to event and solutions. Most solutions involve adding 1. Locate the page template or view that is used for the page with faulty events. 2. On the project level, override the `{% raw %}{% block eventTracker %}{% endraw %}` block in the template. -For details on the event configuration API, see the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). +For details on the event configuration API, see the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). #### Issue: Event not triggering on user action @@ -352,6 +352,11 @@ To enhance your experience, we use data and analytics to understand how you inte By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. ``` +### Disable user data tracking + +If a user does not consent to data tracking, you must set the `disableUserActionTracking` flag in the cookie to `true` to stop sending user action tracking events. This ensures no user data is sent from the application. + + ## Verify the installation 1. Deploy to a testing environment. From 0e4290b776baa1e1130ba8a3a51d0ece6995ac11 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 2 Jan 2025 11:16:58 +0200 Subject: [PATCH 23/46] Create adding-stores-in-a-multi-database-setup.md --- ...adding-stores-in-a-multi-database-setup.md | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md diff --git a/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md new file mode 100644 index 0000000000..800cbd108e --- /dev/null +++ b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md @@ -0,0 +1,214 @@ +--- +title: "Adding stores in a multi-database setup" +description: Adding and deploying a new store in multi-db store setup requires additional steps and preparation. This guideline contains all the best practices you need to know. +last_updated: Dec 02, 2024 +template: howto-guide-template +originalLink: +originalArticleId: +redirect_from: +--- + +Setting up a new store in an existing multi-database environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This document describes how to launch a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. + +{% info_block warningBox %} +This guide can be used for projects that are managing stores programmatically through code. If you're using the Dynamic Multistore feature to manage your stores in the Back Office, refer to [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html) +{% endinfo_block %} + +## Initial planning and best practices + +This section describes the planning stage of launching a store. + +### Clear roadmap + +It's good to have an overall plan, detailing all the stores you want to add in future. This can affect database structure, configuration, and overall decisions on how to approach the rollout, making sure it is cost-efficient over time, on all ends. + + +### Backup strategy + +A backup plan needs to be ready in case of issues during deployment. Apart from database backups, this includes considerations on all the points in the following sections, including the business side. + +### Environment preparation +To prepare your production and non-production environments for a store rollout, make sure there's no additional functionality to be released on top or parallel development. Teams and stakeholders need to be prepared and aware of the procedure. + +### Repeatability +If you're planning to release more stores in future, prepare process to be easily repeatable. This includes creating various detailed documentation, release procedure, and tickets, such as epics, stories, tasks, in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. + + +## Detailed considerations for the migration + +### Integrations and third-party systems +* Review and adjust all third-party integrations to ensure they work with the new store setup. This mainly concerns data and it’s isolation across multiple virtual DBs. Make sure that people working with both sides of the system, such as backend, frontend, merchant portal and APIs, have access to all the needed data. +* Integrations, such as single sign-on, payment gateways, or inventory systems, may require updates. Make sure tech teams responsible for those systems are available and ready to do needed changes on time. + +### Data import +* Handle the data import process carefully, breaking it down into specific tasks such as configuring databases and adjusting the data import setup to work with the new store. +* Make sure existing DBs, for example–a DB from another country, are correctly renamed or adjusted to fit the new multi-DB structure. +* Anticipate and plan for potential updates that may arise after end-to-end testing of the project data migration. + +### Code buckets +* If code buckets are used, investigate and adjust their configurations as necessary. Thoroughly document the steps for adjusting the configurations, making sure that code bucket keep working properly after a new store is added. + +### Cloud environment and monitoring +* Consider and adjust monitoring tools and APM, such as NewRelic and CloudWatch, to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store. +* Check if you need to adjust AWS services, for example–introduce buckets for the new store in S3. + +### Frontend considerations + +Reconsider the prior topics relative to your frontend. For example–frontend separation might be a significant task, requiring layout changes between different stores and API changes. + +## Releasing stores + +This section provides detailed guidelines for releasing stores. + +For general instructions for defining new databases, connecting them with new stores, and adding configuration, follow [Integrate multi-database logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html). + +### Local setup + + + +#### New store configuration + +* Using [Add and remove databases of stores](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html#remove-the-configuration-of-the-database), define the following new entities in your deploy file: + +| ENTITY | SECTION | +| Database | `regions..services.databases` | + | Store | `regions..stores`| +| Domains | `groups..applications` | + +* Using [Integrate multi-database logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html), add the configuration needed for the new store to `stores.php`. +* Prepare data import configurations and data files for the new store. +* Adjust the local environment setup as needed, including configurations and environment variables. Examples: + * Frontend router configuration + * Code bucket configuration + * Create new Back Office users +* To make sure these steps are repeatable in future, document them. + +#### Running initial setup locally + +Bootstrap your updated configuration and run the project: + ```bash + docker/sdk boot deploy.dev.yml + docker/sdk up + ``` + +Make sure the new store’s database has been correctly initialized and filled up with the demo data. + +#### Setting up additional deployment recipes + +When adding and deleting stores, for testing purposes, we recommend creating additional deployment install recipes in `config/install`. The following are examples of such recipes, which we tested in action. The examples recipes are based on the default folder structure with the EU folder as a base, but you can introduce your own structure. + +A minimal recipe for adding a store: + +**config/install/EU/setup-store.yml** +```json +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORE-1 } + - { STORE-2 } + ... +sections: + init-storage: + setup-search-create-sources: + command: "vendor/bin/console search:setup:sources -vvv --no-ansi" + stores: true + init-storages-per-store: + propel-migrate: + command: "vendor/bin/console propel:migrate -vvv --no-ansi" + stores: true + ... +``` + +A minimal recipe to remove a store: +**config/install/EU/delete-store.yml** +``` +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORE-1 } + - { STORE-2 } + ... +sections: + scheduler-clean: + scheduler-clean: + command: "vendor/bin/console scheduler:clean -vvv --no-ansi || true" + stores: true + clean-storage: + clean-storage: + command: "vendor/bin/console storage:delete -vvv --no-ansi" + stores: true + ... +``` + +You can use these custom recipes for the deployment of the application by adding them to your main deployment file. Examples: + +```json +... +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/setup-store --no-ansi -vvv" +... +``` + +```json +... +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/delete-store --no-ansi -vvv" +... +``` + +More information on this is provided in the following sections. + +### Staging setup + + +#### Environment configuration + +* Add the configuration for the new store to the staging environment’s configuration. + + +For the database to be initialized, you will need to run a destructive deployment for the new store. + +To make sure existing stores are not affected, you need to specify only new store code(s) in your deployment yml file (image.environment section), in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. + +Example, for new PL and AT stores to be introduced: `SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv"` + +You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) + +#### Support Requests +* Open a support request to apply the new configuration to the environment. Attach deploy file and explain shortly expected changes, i.e. new DB should be created. In case you have the necessary configuration in a specific branch of your repository, provide a reference to it in the ticket, making sure support team has access to your code base. +* Run the destructive deployment, assuring the right store(s) is specified. + +#### Deployment Execution +* Deploy the new store in the staging environment, ensuring existing stores remain unaffected. +* Test the new store thoroughly to confirm it operates correctly without impacting other stores, including all the external integrations in the staging mode. + +### Production Setup +#### Configuration Preparation + +* Prepare the production environment’s configuration similarly to the staging setup. + +#### Support and Deployment +* Open a support request to deploy the new store configuration to production, ensuring all configurations are correct. +* Execute the deployment, closely monitoring the process to catch any issues early. + +#### Post-Deployment +* After deployment, verify that the new store is fully operational and that no data or services for existing stores have been impacted. +* During environment configuration, if you have chosen to update existing installation recipe (production or destructive), revert it back to its original state. + +## Releasing many stores one after another +When you plan releasing multiple stores one after another you can save some time on support requests, doing only one request per environment for all stores upfront, which will make the overall process faster. To do so, adjust the above procedure as following: + +### First release +#### Local Setup +* Prepare and test the configuration for ALL stores you are planning to release in the future. + +#### Staging Setup +* Prepare staging deploy yml file, containing ALL stores you are planning to release in the future. Open a support request and hand the deploy file to them, explaining your intent and ideally - approx. schedule on when are you going to release all the stores. +* Once the preparation is ready - you can revert the configuration, leaving only store you’d like to release now. We recommend to save this configuration separately, to be able to come back to it later. +* Run the destructive deployment, assuring the right store(s) is specified and check the result. + +#### Production Setup +Repeat the same procedure as you’ve done for Staging + +### Next releases +While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. From 6ea5da75a7d9faf2182343a8141fce8d55329b93 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 2 Jan 2025 12:52:32 +0200 Subject: [PATCH 24/46] its --- .../release-notes-202212.0.md | 2 +- _data/sidebars/dg_dev_sidebar.yml | 2 + .../develop-an-app/app-manifest.md | 2 +- .../develop-an-app/sync-api.md | 2 +- .../configuring-debugging-in-devvm.md | 2 +- ...ing-spryker-after-installing-with-devvm.md | 2 +- .../201811.0/catalog-schema.md | 12 +-- .../201811.0/sales-schema.md | 2 +- .../201903.0/catalog-schema.md | 12 +-- .../201903.0/sales-schema.md | 2 +- .../201907.0/catalog-schema.md | 12 +-- .../201907.0/sales-schema.md | 2 +- .../202001.0/catalog-schema.md | 12 +-- .../202001.0/sales-schema.md | 2 +- .../202005.0/catalog-schema.md | 12 +-- .../202005.0/sales-schema.md | 2 +- .../202009.0/catalog-schema.md | 12 +-- .../202009.0/sales-schema.md | 2 +- .../202108.0/catalog-schema.md | 12 +-- .../202108.0/sales-schema.md | 2 +- _drafts/drafts-dev/roadmap.md | 2 +- _drafts/for-commerce-quest/faq.md | 4 +- .../mvp-project-structuring.md | 6 +- ...astructure-for-publish-and-sync-workers.md | 2 +- .../202311.0/items-response-attributes.md | 2 +- .../202311.0/orders-response-attributes.md | 4 +- .../202311.0/shipments-response-attributes.md | 4 +- .../202404.0/items-response-attributes.md | 2 +- .../202404.0/orders-response-attributes.md | 4 +- ...nagement-attributes-response-attributes.md | 2 +- ...t-measurement-units-response-attributes.md | 2 +- .../sales-units-response-attributes.md | 6 +- .../202404.0/shipments-response-attributes.md | 4 +- .../202410.0/items-response-attributes.md | 2 +- .../202410.0/orders-response-attributes.md | 4 +- ...nagement-attributes-response-attributes.md | 2 +- ...t-measurement-units-response-attributes.md | 2 +- .../sales-units-response-attributes.md | 6 +- .../202410.0/shipments-response-attributes.md | 4 +- .../202307.0/enable-gift-cards.md | 2 +- ...l-dynamic-multistore-the-prices-feature.md | 2 +- .../202307.0/install-dynamic-multistore.md | 2 +- .../install-the-multiple-carts-glue-api.md | 2 +- .../install-the-navigation-glue-api.md | 2 +- .../install-the-agent-assist-feature.md | 2 +- .../install-the-approval-process-feature.md | 4 +- ...l-the-availability-notification-feature.md | 2 +- .../install-the-category-image-feature.md | 2 +- ...install-the-category-management-feature.md | 2 +- .../install-the-company-account-feature.md | 4 +- ...install-the-configurable-bundle-feature.md | 2 +- .../install-the-customer-access-feature.md | 2 +- ...ntinued-products-product-labels-feature.md | 2 +- .../install-the-file-manager-feature.md | 2 +- ...tall-the-merchant-custom-prices-feature.md | 2 +- .../install-the-multiple-carts-feature.md | 4 +- .../install-the-packaging-units-feature.md | 2 +- .../install-the-product-bundles-feature.md | 2 +- .../install-the-product-category-feature.md | 2 +- ...duct-images-configurable-bundle-feature.md | 2 +- ...ll-the-product-measurement-unit-feature.md | 8 +- .../install-the-product-sets-feature.md | 2 +- ...tation-process-approval-process-feature.md | 2 +- .../install-the-shopping-lists-feature.md | 2 +- ...ll-the-spryker-core-back-office-feature.md | 4 +- .../install-the-spryker-core-feature.md | 2 +- ...arketplace-inventory-management-feature.md | 2 +- ...nstall-the-marketplace-merchant-feature.md | 8 +- ...he-marketplace-order-management-feature.md | 2 +- ...-marketplace-product-offer-cart-feature.md | 2 +- ...the-marketplace-product-options-feature.md | 2 +- ...e-marketplace-return-management-feature.md | 2 +- ...tall-the-merchant-opening-hours-feature.md | 2 +- .../202311.0/enable-gift-cards.md | 2 +- ...l-dynamic-multistore-the-prices-feature.md | 2 +- .../202311.0/install-dynamic-multistore.md | 2 +- .../install-the-multiple-carts-glue-api.md | 2 +- .../install-the-navigation-glue-api.md | 2 +- .../install-the-agent-assist-feature.md | 2 +- .../install-the-approval-process-feature.md | 4 +- ...l-the-availability-notification-feature.md | 2 +- .../install-the-category-image-feature.md | 2 +- ...install-the-category-management-feature.md | 2 +- .../install-the-company-account-feature.md | 4 +- ...install-the-configurable-bundle-feature.md | 2 +- .../install-the-customer-access-feature.md | 2 +- ...ntinued-products-product-labels-feature.md | 2 +- ...tall-the-merchant-custom-prices-feature.md | 2 +- .../install-the-multiple-carts-feature.md | 4 +- .../install-the-packaging-units-feature.md | 2 +- .../install-the-product-bundles-feature.md | 2 +- .../install-the-product-category-feature.md | 2 +- ...duct-images-configurable-bundle-feature.md | 2 +- ...ll-the-product-measurement-unit-feature.md | 8 +- ...he-product-offer-service-points-feature.md | 2 +- ...tall-the-product-offer-shipment-feature.md | 2 +- .../install-the-product-sets-feature.md | 2 +- ...tation-process-approval-process-feature.md | 2 +- .../install-the-service-points-feature.md | 6 +- .../202311.0/install-the-shipment-feature.md | 2 +- .../install-the-shopping-lists-feature.md | 2 +- ...ll-the-spryker-core-back-office-feature.md | 4 +- .../install-the-spryker-core-feature.md | 2 +- ...arketplace-inventory-management-feature.md | 2 +- ...nstall-the-marketplace-merchant-feature.md | 8 +- ...he-marketplace-order-management-feature.md | 2 +- ...-marketplace-product-offer-cart-feature.md | 2 +- ...the-marketplace-product-options-feature.md | 2 +- ...e-marketplace-return-management-feature.md | 2 +- ...tall-the-merchant-opening-hours-feature.md | 2 +- ...l-the-warehouse-picking-product-feature.md | 2 +- .../202404.0/enable-gift-cards.md | 2 +- ...l-dynamic-multistore-the-prices-feature.md | 2 +- .../202404.0/install-dynamic-multistore.md | 2 +- .../install-the-multiple-carts-glue-api.md | 2 +- .../install-the-navigation-glue-api.md | 2 +- .../install-the-agent-assist-feature.md | 2 +- .../install-the-approval-process-feature.md | 4 +- ...l-the-availability-notification-feature.md | 2 +- .../install-the-category-image-feature.md | 2 +- ...install-the-category-management-feature.md | 2 +- .../install-the-company-account-feature.md | 4 +- ...install-the-configurable-bundle-feature.md | 2 +- .../install-the-customer-access-feature.md | 2 +- ...ntinued-products-product-labels-feature.md | 2 +- ...-merchant-b2b-contract-requests-feature.md | 4 +- ...tall-the-merchant-custom-prices-feature.md | 2 +- .../install-the-multiple-carts-feature.md | 4 +- .../install-the-packaging-units-feature.md | 2 +- .../install-the-product-bundles-feature.md | 2 +- .../install-the-product-category-feature.md | 2 +- ...duct-images-configurable-bundle-feature.md | 2 +- ...ll-the-product-measurement-unit-feature.md | 8 +- ...he-product-offer-service-points-feature.md | 2 +- ...tall-the-product-offer-shipment-feature.md | 2 +- .../install-the-product-sets-feature.md | 2 +- ...tation-process-approval-process-feature.md | 2 +- .../install-the-service-points-feature.md | 6 +- .../202404.0/install-the-shipment-feature.md | 2 +- .../install-the-shopping-lists-feature.md | 2 +- ...ll-the-spryker-core-back-office-feature.md | 4 +- .../install-the-spryker-core-feature.md | 2 +- ...arketplace-inventory-management-feature.md | 2 +- ...nstall-the-marketplace-merchant-feature.md | 8 +- ...he-marketplace-order-management-feature.md | 2 +- ...-marketplace-product-offer-cart-feature.md | 2 +- ...the-marketplace-product-options-feature.md | 2 +- ...e-marketplace-return-management-feature.md | 2 +- ...tall-the-merchant-opening-hours-feature.md | 2 +- ...l-the-warehouse-picking-product-feature.md | 2 +- .../202410.0/enable-gift-cards.md | 2 +- ...l-dynamic-multistore-the-prices-feature.md | 2 +- .../202410.0/install-dynamic-multistore.md | 2 +- .../install-the-multiple-carts-glue-api.md | 2 +- .../install-the-navigation-glue-api.md | 2 +- .../install-the-approval-process-feature.md | 4 +- ...l-the-availability-notification-feature.md | 2 +- .../install-the-category-image-feature.md | 2 +- ...install-the-category-management-feature.md | 2 +- .../install-the-company-account-feature.md | 4 +- ...install-the-configurable-bundle-feature.md | 2 +- .../install-the-customer-access-feature.md | 2 +- ...ntinued-products-product-labels-feature.md | 2 +- ...-merchant-b2b-contract-requests-feature.md | 4 +- ...tall-the-merchant-custom-prices-feature.md | 2 +- .../install-the-packaging-units-feature.md | 2 +- .../install-the-product-bundles-feature.md | 2 +- .../install-the-product-category-feature.md | 2 +- .../install-the-product-comparison-feature.md | 2 +- ...duct-images-configurable-bundle-feature.md | 2 +- ...ll-the-product-measurement-unit-feature.md | 8 +- ...he-product-offer-service-points-feature.md | 2 +- ...tall-the-product-offer-shipment-feature.md | 2 +- .../install-the-product-sets-feature.md | 2 +- ...tation-process-approval-process-feature.md | 2 +- .../install-the-service-points-feature.md | 6 +- .../202410.0/install-the-shipment-feature.md | 2 +- .../install-the-shopping-lists-feature.md | 2 +- ...arketplace-inventory-management-feature.md | 2 +- ...nstall-the-marketplace-merchant-feature.md | 8 +- ...-marketplace-product-offer-cart-feature.md | 2 +- ...the-marketplace-product-options-feature.md | 2 +- ...e-marketplace-return-management-feature.md | 2 +- ...tall-the-merchant-opening-hours-feature.md | 2 +- ...l-the-warehouse-picking-product-feature.md | 2 +- ...the-marketplace-shopping-lists-glue-api.md | 2 +- ...the-marketplace-shopping-lists-glue-api.md | 2 +- ...the-marketplace-shopping-lists-glue-api.md | 2 +- .../upgrade-the-calculation-module.md | 2 +- .../upgrade-the-categorypagesearch-module.md | 2 +- .../upgrade-the-collector-module.md | 2 +- .../upgrade-the-companyuser-module.md | 2 +- ...de-the-environment-configuration-module.md | 4 +- .../upgrade-modules/upgrade-the-oms-module.md | 2 +- .../upgrade-the-product-module.md | 2 +- ...upgrade-the-productconfiguration-module.md | 2 +- .../upgrade-the-productlistgui-module.md | 2 +- .../upgrade-the-productoption-module.md | 2 +- .../upgrade-the-search-module.md | 2 +- .../upgrade-the-transfer-module.md | 2 +- _templates/best-practices-file-template.md | 2 +- .../feature-installation-guide-template.md | 12 +-- _templates/syntax-and-formatting-rules.md | 2 +- docs/about/all/about-spryker.md | 2 +- .../edit-the-docs-locally.md | 2 +- .../merge-docs-pull-requests.md | 2 +- docs/about/all/master-suite.md | 2 +- .../security-release-notes-202302.0.md | 2 +- .../marketplace-concept.md | 2 +- .../all/support/gdpr-compliance-guidelines.md | 2 +- ...getting-the-most-out-of-spryker-support.md | 2 +- .../all/support/how-spryker-support-works.md | 2 +- .../all/support/prioritzing-support-cases.md | 4 +- .../project-level-and-core-level-fixes.md | 2 +- .../all/support/support-case-escalations.md | 4 +- .../all/support/support-ticket-statuses.md | 2 +- docs/about/all/support/understanding-slas.md | 6 +- .../add-variables-in-the-parameter-store.md | 2 +- .../best-practises-jenkins-stability.md | 2 +- .../jenkins-operational-best-practices.md | 4 +- .../deployment-in-states.md | 2 +- .../deployment-pipelines.md | 2 +- docs/ca/dev/environment-provisioning.md | 2 +- docs/ca/dev/environment-scaling.md | 2 +- ...tting-started-with-cloud-administration.md | 2 +- .../multistore-setup-options.md | 6 +- ...ormance-testing-in-staging-enivronments.md | 2 +- ...me-with-a-third-party-dns-zone-provider.md | 2 +- ...t-up-a-custom-domain-name-with-route-53.md | 2 +- .../setting-up-a-custom-ssl-certificate.md | 2 +- .../tutorial-troubleshooting-403-error.md | 2 +- ...ial-troubleshooting-a-failed-deployment.md | 2 +- .../developing-with-spryker-code-upgrader.md | 2 +- ...are-a-project-for-spryker-code-upgrader.md | 2 +- ...p-extension-is-missing-from-your-system.md | 2 +- docs/dg/dev/acp/acp-security-assessment.md | 4 +- .../architecture/architectural-convention.md | 2 +- .../dev/architecture/conceptual-overview.md | 2 +- ...oning-major-vs.-minor-vs.-patch-release.md | 4 +- .../dev/architecture/programming-concepts.md | 6 +- .../dev/backend-development/client/client.md | 2 +- ...-configure-redis-as-a-key-value-storage.md | 4 +- .../console-commands/console-commands.md | 2 +- .../cronjobs/optimizing-jenkins-execution.md | 14 ++-- ...hout-p&s-and-data-importers-refactoring.md | 10 +-- .../configuration-management.md | 6 +- .../data-ingestion/spryker-link-middleware.md | 2 +- .../replace-module-dependencies.md | 2 +- .../data-publishing/add-publish-events.md | 2 +- .../bypass-the-key-value-storage.md | 2 +- ...e-data-with-publish-and-synchronization.md | 2 +- .../implement-publish-and-synchronization.md | 8 +- ...ion-behavior-enabling-multiple-mappings.md | 2 +- .../extend-the-core.md | 2 +- .../backend-development/factory/factory.md | 2 +- .../get-an-overview-of-the-used-plugins.md | 2 +- .../zed/business-layer/custom-exceptions.md | 2 +- .../facade/a-facade-implementation.md | 2 +- .../facade/design-by-contract-dbc-facade.md | 2 +- .../persistence-layer/database-overview.md | 2 +- .../database-schema-definition.md | 4 +- .../zed/persistence-layer/entity-manager.md | 2 +- .../query-objects-creation-and-usage.md | 2 +- .../zed/persistence-layer/repository.md | 2 +- ...c-seo-techniques-to-use-in-your-project.md | 2 +- .../best-practices/coding-best-practices.md | 6 +- .../202311.0/data-importers-implementation.md | 2 +- ...rting-data-with-the-queue-data-importer.md | 2 +- .../202404.0/data-importers-implementation.md | 2 +- ...rting-data-with-the-queue-data-importer.md | 2 +- .../202410.0/data-importers-implementation.md | 2 +- ...rting-data-with-the-queue-data-importer.md | 2 +- docs/dg/dev/example-modules.md | 2 +- .../202311.0/marketplace/angular-services.md | 2 +- .../table-feature-batch-actions.md | 2 +- .../data-transformers/data-transformers.md | 2 +- ...ependency-injection-advanced-strategies.md | 2 +- .../dependency-injection.md | 2 +- .../oryx-integration-of-backend-apis.md | 2 +- .../reactivity/reactive-components.md | 2 +- .../architecture/reactivity/reactivity.md | 2 +- .../oryx/architecture/reactivity/signals.md | 2 +- .../oryx-application-feature.md | 2 +- .../oryx-application-plugins.md | 2 +- .../styling/oryx-typography.md | 2 +- .../oryx-component-types.md | 2 +- .../oryx-implementing-components.md | 4 +- .../oryx-managing-component-options.md | 2 +- .../oryx/getting-started/oryx-boilerplate.md | 2 +- .../oryx/getting-started/oryx-technology.md | 2 +- .../oryx/getting-started/oryx-versioning.md | 2 +- .../yves/atomic-frontend/atomic-frontend.md | 8 +- .../customizing-spryker-frontend.md | 2 +- .../integrate-jquery-into-atomic-frontend.md | 2 +- .../extending-components.md | 4 +- .../overriding-components.md | 2 +- .../managing-components/using-components.md | 2 +- .../frontend-assets-building-and-loading.md | 4 +- .../yves/frontend-builder-for-yves.md | 2 +- .../202404.0/marketplace/angular-services.md | 2 +- .../table-feature-batch-actions.md | 2 +- .../data-transformers/data-transformers.md | 2 +- ...ependency-injection-advanced-strategies.md | 2 +- .../dependency-injection.md | 2 +- .../oryx-integration-of-backend-apis.md | 2 +- .../reactivity/reactive-components.md | 2 +- .../architecture/reactivity/reactivity.md | 2 +- .../oryx/architecture/reactivity/signals.md | 2 +- .../oryx-application-feature.md | 2 +- .../oryx-application-plugins.md | 2 +- .../styling/oryx-typography.md | 2 +- .../oryx-component-types.md | 2 +- .../oryx-implementing-components.md | 4 +- .../oryx-managing-component-options.md | 2 +- .../oryx/getting-started/oryx-boilerplate.md | 2 +- .../oryx/getting-started/oryx-technology.md | 2 +- .../oryx/getting-started/oryx-versioning.md | 2 +- .../yves/atomic-frontend/atomic-frontend.md | 8 +- .../customizing-spryker-frontend.md | 2 +- .../integrate-jquery-into-atomic-frontend.md | 2 +- .../extending-components.md | 4 +- .../overriding-components.md | 2 +- .../managing-components/using-components.md | 2 +- .../frontend-assets-building-and-loading.md | 4 +- .../yves/frontend-builder-for-yves.md | 2 +- .../202410.0/marketplace/angular-services.md | 2 +- .../table-feature-batch-actions.md | 2 +- .../data-transformers/data-transformers.md | 2 +- ...ependency-injection-advanced-strategies.md | 2 +- .../dependency-injection.md | 2 +- .../oryx-integration-of-backend-apis.md | 2 +- .../reactivity/reactive-components.md | 2 +- .../architecture/reactivity/reactivity.md | 2 +- .../oryx/architecture/reactivity/signals.md | 2 +- .../oryx-application-feature.md | 2 +- .../oryx-application-plugins.md | 2 +- .../styling/oryx-typography.md | 2 +- .../oryx-component-types.md | 2 +- .../oryx-implementing-components.md | 4 +- .../oryx-managing-component-options.md | 2 +- .../oryx/getting-started/oryx-boilerplate.md | 2 +- .../oryx/getting-started/oryx-technology.md | 2 +- .../oryx/getting-started/oryx-versioning.md | 2 +- .../yves/atomic-frontend/atomic-frontend.md | 8 +- .../customizing-spryker-frontend.md | 2 +- .../integrate-jquery-into-atomic-frontend.md | 2 +- .../extending-components.md | 4 +- .../overriding-components.md | 2 +- .../managing-components/using-components.md | 2 +- .../frontend-assets-building-and-loading.md | 4 +- .../yves/frontend-builder-for-yves.md | 2 +- .../authentication-and-authorization.md | 2 +- .../configure-the-included-section.md | 2 +- .../glue-api/202311.0/decoupled-glue-api.md | 2 +- .../document-glue-api-resources.md | 6 +- docs/dg/dev/glue-api/202311.0/glue-spryks.md | 16 ++-- .../202311.0/integrate-a-ciam-provider.md | 2 +- ...ue-api-authentication-and-authorization.md | 2 +- .../glue-api-security-and-authentication.md | 4 +- .../glue-infrastructure.md | 6 +- .../old-glue-infrastructure/glue-rest-api.md | 4 +- .../202311.0/routing/create-routes.md | 2 +- .../202311.0/security-and-authentication.md | 2 +- .../202311.0/use-default-glue-parameters.md | 6 +- .../authentication-and-authorization.md | 2 +- .../configure-the-included-section.md | 2 +- .../glue-api/202404.0/decoupled-glue-api.md | 2 +- .../document-glue-api-resources.md | 6 +- docs/dg/dev/glue-api/202404.0/glue-spryks.md | 16 ++-- .../202404.0/integrate-a-ciam-provider.md | 2 +- ...ue-api-authentication-and-authorization.md | 2 +- .../glue-api-security-and-authentication.md | 4 +- .../glue-infrastructure.md | 6 +- .../old-glue-infrastructure/glue-rest-api.md | 4 +- .../202404.0/routing/create-routes.md | 2 +- .../202404.0/security-and-authentication.md | 2 +- .../202404.0/use-default-glue-parameters.md | 6 +- .../authentication-and-authorization.md | 2 +- .../configure-the-included-section.md | 2 +- .../glue-api/202410.0/decoupled-glue-api.md | 2 +- .../document-glue-api-resources.md | 6 +- docs/dg/dev/glue-api/202410.0/glue-spryks.md | 16 ++-- .../202410.0/integrate-a-ciam-provider.md | 2 +- ...ue-api-authentication-and-authorization.md | 2 +- .../glue-api-security-and-authentication.md | 4 +- .../glue-infrastructure.md | 6 +- .../old-glue-infrastructure/glue-rest-api.md | 4 +- .../202410.0/routing/create-routes.md | 2 +- .../202410.0/security-and-authentication.md | 2 +- .../202410.0/use-default-glue-parameters.md | 6 +- .../coding-guidelines/code-style-guide.md | 2 +- .../plugins-registration.md | 4 +- .../minimum-allowed-shop-version.md | 4 +- .../spryker-dev-packages-checker.md | 2 +- .../architecture-performance-guidelines.md | 6 +- .../general-performance-guidelines.md | 2 +- .../project-development-guidelines.md | 2 +- ...lding-tests-for-test-driven-devleopment.md | 2 +- .../executing-tests/test-console-commands.md | 2 +- ...the-publish-and-synchronization-process.md | 2 +- .../running-tests-with-robot-framework.md | 2 +- .../best-practices-for-effective-testing.md | 2 +- .../test-types-best-practices.md | 2 +- .../testing-concepts.md | 16 ++-- .../implementing-graceful-shutdown.md | 2 +- .../integrate-elastic-computing.md | 2 +- ...-a-case-sensitive-file-system-on-mac-os.md | 2 +- .../add-new-store-in-multi-db-setup.md | 2 +- ...adding-stores-in-a-multi-database-setup.md | 80 +++++++++++-------- .../handling-internationalization.md | 4 +- .../simulating-deployments-locally.md | 2 +- ...tomization-strategies-and-upgradability.md | 4 +- .../dev/sdks/sdk/development-tools/phpstan.md | 2 +- docs/dg/dev/sdks/sdk/extending-spryker-sdk.md | 2 +- .../deploy-file/deploy-file-reference.md | 4 +- .../the-docker-sdk/deploy-file/deploy-file.md | 4 +- .../manage-dependencies-with-composer.md | 4 +- .../redis-session-lock.md | 2 +- .../silex-replacement/container.md | 6 +- .../silex-replacement/router/router-yves.md | 2 +- .../silex-replacement/router/router-zed.md | 2 +- docs/dg/dev/zed-api/tutorial-using-zed-api.md | 4 +- .../import-file-details-shipment-price.csv.md | 2 +- .../import-file-details-shipment-price.csv.md | 2 +- .../import-file-details-shipment-price.csv.md | 2 +- .../calculation-data-structure.md | 2 +- ...ckout-process-review-and-implementation.md | 4 +- .../extend-and-customize/checkout-steps.md | 4 +- .../approval-process-feature-overview.md | 4 +- ...ck-order-from-the-catalog-page-overview.md | 2 +- .../order-thresholds-overview.md | 2 +- .../comments-feature-overview.md | 2 +- .../define-global-thresholds.md | 2 +- .../define-merchant-order-thresholds.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- .../glue-api-submit-checkout-data.md | 4 +- ...ue-api-manage-carts-of-registered-users.md | 2 +- ...nage-items-in-carts-of-registered-users.md | 4 +- .../glue-api-manage-guest-cart-items.md | 4 +- .../glue-api-manage-guest-carts.md | 2 +- .../tutorial-calculator-plugin.md | 2 +- .../manage-carts-of-registered-users.md | 4 +- ...nage-items-in-carts-of-registered-users.md | 8 +- .../guest-carts/manage-guest-cart-items.md | 6 +- .../guest-carts/manage-guest-carts.md | 4 +- .../calculation-data-structure.md | 2 +- ...ckout-process-review-and-implementation.md | 4 +- .../extend-and-customize/checkout-steps.md | 4 +- .../approval-process-feature-overview.md | 4 +- ...ck-order-from-the-catalog-page-overview.md | 2 +- .../order-thresholds-overview.md | 2 +- .../comments-feature-overview.md | 2 +- .../define-global-thresholds.md | 2 +- .../define-merchant-order-thresholds.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- ...ue-api-manage-carts-of-registered-users.md | 2 +- ...nage-items-in-carts-of-registered-users.md | 4 +- .../glue-api-manage-guest-cart-items.md | 4 +- .../glue-api-manage-guest-carts.md | 2 +- .../tutorial-calculator-plugin.md | 2 +- .../manage-carts-of-registered-users.md | 4 +- ...nage-items-in-carts-of-registered-users.md | 8 +- .../guest-carts/manage-guest-cart-items.md | 6 +- .../guest-carts/manage-guest-carts.md | 4 +- .../calculation-data-structure.md | 2 +- ...ckout-process-review-and-implementation.md | 4 +- .../extend-and-customize/checkout-steps.md | 4 +- .../approval-process-feature-overview.md | 4 +- ...ck-order-from-the-catalog-page-overview.md | 2 +- .../order-thresholds-overview.md | 2 +- .../comments-feature-overview.md | 2 +- .../define-global-thresholds.md | 2 +- .../define-merchant-order-thresholds.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- ...ue-api-manage-carts-of-registered-users.md | 2 +- ...nage-items-in-carts-of-registered-users.md | 4 +- .../glue-api-manage-guest-cart-items.md | 4 +- .../glue-api-manage-guest-carts.md | 2 +- .../tutorial-calculator-plugin.md | 2 +- .../manage-carts-of-registered-users.md | 4 +- ...nage-items-in-carts-of-registered-users.md | 8 +- .../guest-carts/manage-guest-cart-items.md | 6 +- .../guest-carts/manage-guest-carts.md | 4 +- .../cms-blocks-overview.md | 2 +- .../email-as-a-cms-block-overview.md | 4 +- .../templates-and-slots-overview.md | 8 +- .../import-file-details-cms-slot.csv.md | 2 +- .../blocks/create-email-cms-blocks.md | 2 +- .../product-sets/reorder-product-sets.md | 4 +- .../glue-api-retrieve-navigation-trees.md | 2 +- ...fine-the-maximum-size-of-content-fields.md | 2 +- ...t-and-search-personalized-catalog-pages.md | 2 +- .../cms-blocks-overview.md | 2 +- .../email-as-a-cms-block-overview.md | 4 +- .../templates-and-slots-overview.md | 8 +- .../import-file-details-cms-slot.csv.md | 2 +- .../blocks/create-email-cms-blocks.md | 2 +- .../product-sets/reorder-product-sets.md | 4 +- .../glue-api-retrieve-navigation-trees.md | 2 +- ...fine-the-maximum-size-of-content-fields.md | 2 +- ...t-and-search-personalized-catalog-pages.md | 2 +- .../cms-blocks-overview.md | 2 +- .../email-as-a-cms-block-overview.md | 4 +- .../templates-and-slots-overview.md | 8 +- .../import-file-details-cms-slot.csv.md | 2 +- .../blocks/create-email-cms-blocks.md | 2 +- .../product-sets/reorder-product-sets.md | 4 +- .../glue-api-retrieve-navigation-trees.md | 2 +- ...fine-the-maximum-size-of-content-fields.md | 2 +- ...t-and-search-personalized-catalog-pages.md | 2 +- .../business-units-overview.md | 2 +- .../company-accounts-overview.md | 4 +- ...any-user-roles-and-permissions-overview.md | 2 +- .../password-management-overview.md | 2 +- .../company-units/create-company-units.md | 2 +- .../manage-companies.md | 2 +- .../glue-api-retrieve-business-units.md | 2 +- .../customers/glue-api-manage-customers.md | 2 +- .../business-units-overview.md | 2 +- .../company-accounts-overview.md | 4 +- ...any-user-roles-and-permissions-overview.md | 2 +- .../password-management-overview.md | 2 +- .../company-units/create-company-units.md | 2 +- .../manage-companies.md | 2 +- .../glue-api-retrieve-business-units.md | 2 +- .../customers/glue-api-manage-customers.md | 2 +- .../business-units-overview.md | 2 +- .../company-accounts-overview.md | 4 +- .../password-management-overview.md | 2 +- .../company-units/create-company-units.md | 2 +- .../manage-companies.md | 2 +- .../glue-api-retrieve-business-units.md | 2 +- .../customers/glue-api-manage-customers.md | 2 +- ...sending-requests-with-data-exchange-api.md | 4 +- .../akeneo-pim-integration-app.md | 2 +- ...e-data-mapping-between-akeneo-and-sccos.md | 2 +- ...nd-import-products-from-akeneo-to-sccos.md | 2 +- ...sending-requests-with-data-exchange-api.md | 4 +- .../akeneo-pim-integration-app.md | 2 +- ...e-data-mapping-between-akeneo-and-sccos.md | 2 +- ...nd-import-products-from-akeneo-to-sccos.md | 2 +- ...sending-requests-with-data-exchange-api.md | 4 +- .../akeneo-pim-integration-app.md | 2 +- ...e-data-mapping-between-akeneo-and-sccos.md | 2 +- ...nd-import-products-from-akeneo-to-sccos.md | 2 +- .../create-discounts.md | 2 +- .../edit-discounts.md | 2 +- .../promotions-discounts-feature-overview.md | 6 +- ...e-promotions-discounts-feature-overview.md | 6 +- .../create-discounts.md | 2 +- .../edit-discounts.md | 2 +- .../promotions-discounts-feature-overview.md | 6 +- ...e-promotions-discounts-feature-overview.md | 6 +- .../create-discounts.md | 2 +- .../edit-discounts.md | 2 +- .../promotions-discounts-feature-overview.md | 6 +- ...e-promotions-discounts-feature-overview.md | 6 +- .../pbc/all/gift-cards/202311.0/gift-cards.md | 4 +- .../pbc/all/gift-cards/202404.0/gift-cards.md | 4 +- .../pbc/all/gift-cards/202410.0/gift-cards.md | 4 +- .../restricted-products-behavior.md | 12 +-- .../glue-api-retrieve-merchants.md | 16 ++-- .../persistence-acl-configuration.md | 2 +- .../restricted-products-behavior.md | 12 +-- .../glue-api-retrieve-merchants.md | 16 ++-- .../persistence-acl-configuration.md | 2 +- .../restricted-products-behavior.md | 12 +-- .../glue-api-retrieve-merchants.md | 16 ++-- .../persistence-acl-configuration.md | 2 +- ...eate-merchant-commission-collector-rule.md | 2 +- .../exporting-product-data-for-fact-finder.md | 4 +- .../installing-and-configuring-fact-finder.md | 2 +- .../fact-finder/using-fact-finder-search.md | 2 +- .../exporting-product-data-for-fact-finder.md | 4 +- .../installing-and-configuring-fact-finder.md | 2 +- .../fact-finder/using-fact-finder-search.md | 2 +- .../exporting-product-data-for-fact-finder.md | 4 +- .../installing-and-configuring-fact-finder.md | 2 +- .../fact-finder/using-fact-finder-search.md | 2 +- .../glue-api-retrieve-product-offers.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- .../product-offer-storage.md | 2 +- ...ketplace-product-offer-feature-overview.md | 8 +- ...rchant-product-offers-on-the-storefront.md | 2 +- .../glue-api-retrieve-product-offers.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- .../product-offer-storage.md | 2 +- ...ketplace-product-offer-feature-overview.md | 8 +- ...rchant-product-offers-on-the-storefront.md | 2 +- .../glue-api-retrieve-product-offers.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- .../product-offer-storage.md | 2 +- ...ketplace-product-offer-feature-overview.md | 8 +- ...rchant-product-offers-on-the-storefront.md | 2 +- .../order-management-system-multi-thread.md | 2 +- ...er-process-modelling-via-state-machines.md | 2 +- ...for-order-item-states-on-the-storefront.md | 2 +- .../base-shop/email-invoices-using-bcc.md | 2 +- ...he-state-of-order-items-in-reclamations.md | 2 +- .../oms-order-management-system-matrix.md | 4 +- .../order-management-feature-overview.md | 2 +- ...external-erp-services-for-order-updates.md | 2 +- ...-machine-cookbook-build-a-state-machine.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 10 +-- .../glue-api-retrieve-marketplace-orders.md | 14 ++-- ...ile-details-merchant-order-expenses.csv.md | 16 ++-- ...t-file-details-merchant-order-items.csv.md | 20 ++--- ...export-file-details-merchant-orders.csv.md | 14 ++-- ...-file-details-merchant-order-status.csv.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- .../order-management-system-multi-thread.md | 2 +- ...er-process-modelling-via-state-machines.md | 2 +- ...for-order-item-states-on-the-storefront.md | 2 +- .../base-shop/email-invoices-using-bcc.md | 2 +- ...he-state-of-order-items-in-reclamations.md | 2 +- .../oms-order-management-system-matrix.md | 4 +- .../order-management-feature-overview.md | 2 +- ...external-erp-services-for-order-updates.md | 2 +- ...-machine-cookbook-build-a-state-machine.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 10 +-- .../glue-api-retrieve-marketplace-orders.md | 12 +-- ...ile-details-merchant-order-expenses.csv.md | 16 ++-- ...t-file-details-merchant-order-items.csv.md | 20 ++--- ...export-file-details-merchant-orders.csv.md | 14 ++-- ...-file-details-merchant-order-status.csv.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- .../order-management-system-multi-thread.md | 2 +- ...er-process-modelling-via-state-machines.md | 2 +- ...for-order-item-states-on-the-storefront.md | 2 +- .../base-shop/email-invoices-using-bcc.md | 2 +- ...he-state-of-order-items-in-reclamations.md | 2 +- .../oms-order-management-system-matrix.md | 4 +- .../order-management-feature-overview.md | 2 +- ...external-erp-services-for-order-updates.md | 2 +- ...-machine-cookbook-build-a-state-machine.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 10 +-- .../glue-api-retrieve-marketplace-orders.md | 12 +-- ...ile-details-merchant-order-expenses.csv.md | 16 ++-- ...t-file-details-merchant-order-items.csv.md | 20 ++--- ...export-file-details-merchant-orders.csv.md | 14 ++-- ...-file-details-merchant-order-status.csv.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...-feature-domain-model-and-relationships.md | 2 +- ...-party-payment-providers-using-glue-api.md | 4 +- .../adyen/install-and-configure-adyen.md | 2 +- .../amazon-pay-sandbox-simulations.md | 4 +- .../amazon-pay/amazon-pay-state-machine.md | 2 +- .../amazon-pay/configure-amazon-pay.md | 2 +- .../handling-orders-with-amazon-pay-api.md | 14 ++-- .../third-party-integrations/billie.md | 2 +- .../billpay/integrate-billpay.md | 2 +- .../braintree/braintree-request-workflow.md | 2 +- .../braintree/braintree.md | 2 +- .../computop/computop-api-calls.md | 2 +- ...credit-card-payment-method-for-computop.md | 2 +- .../crefopay/crefopay-payment-methods.md | 2 +- ...ard-secure-payment-method-for-heidelpay.md | 6 +- ...rect-debit-payment-method-for-heidelpay.md | 2 +- ...asy-credit-payment-method-for-heidelpay.md | 6 +- ...-the-ideal-payment-method-for-heidelpay.md | 2 +- ...ecured-b2c-payment-method-for-heidelpay.md | 2 +- ...-authorize-payment-method-for-heidelpay.md | 2 +- .../third-party-integrations/klarna/klarna.md | 2 +- .../payolution/payolution-request-flow.md | 2 +- .../payolution/payolution.md | 2 +- .../payone-acp-app.md | 6 +- .../ratenkauf-by-easycredit.md | 2 +- ...-party-payment-providers-using-glue-api.md | 4 +- .../adyen/install-and-configure-adyen.md | 2 +- .../amazon-pay-sandbox-simulations.md | 4 +- .../amazon-pay/amazon-pay-state-machine.md | 2 +- .../amazon-pay/configure-amazon-pay.md | 2 +- .../handling-orders-with-amazon-pay-api.md | 14 ++-- .../third-party-integrations/billie.md | 2 +- .../billpay/integrate-billpay.md | 2 +- .../braintree/braintree-request-workflow.md | 2 +- .../braintree/braintree.md | 2 +- .../computop/computop-api-calls.md | 2 +- ...credit-card-payment-method-for-computop.md | 2 +- .../crefopay/crefopay-payment-methods.md | 2 +- ...ard-secure-payment-method-for-heidelpay.md | 6 +- ...rect-debit-payment-method-for-heidelpay.md | 2 +- ...asy-credit-payment-method-for-heidelpay.md | 6 +- ...-the-ideal-payment-method-for-heidelpay.md | 2 +- ...ecured-b2c-payment-method-for-heidelpay.md | 2 +- ...-authorize-payment-method-for-heidelpay.md | 2 +- .../third-party-integrations/klarna/klarna.md | 2 +- .../payolution/payolution-request-flow.md | 2 +- .../payolution/payolution.md | 2 +- .../payone-acp-app.md | 6 +- .../ratenkauf-by-easycredit.md | 2 +- ...-party-payment-providers-using-glue-api.md | 4 +- .../adyen/install-and-configure-adyen.md | 2 +- .../amazon-pay-sandbox-simulations.md | 4 +- .../amazon-pay/amazon-pay-state-machine.md | 2 +- .../amazon-pay/configure-amazon-pay.md | 2 +- .../handling-orders-with-amazon-pay-api.md | 14 ++-- .../third-party-integrations/billie.md | 2 +- .../billpay/integrate-billpay.md | 2 +- .../braintree/braintree-request-workflow.md | 2 +- .../braintree/braintree.md | 2 +- .../computop/computop-api-calls.md | 2 +- ...credit-card-payment-method-for-computop.md | 2 +- .../crefopay/crefopay-payment-methods.md | 2 +- ...ard-secure-payment-method-for-heidelpay.md | 6 +- ...rect-debit-payment-method-for-heidelpay.md | 2 +- ...asy-credit-payment-method-for-heidelpay.md | 6 +- ...-the-ideal-payment-method-for-heidelpay.md | 2 +- ...ecured-b2c-payment-method-for-heidelpay.md | 2 +- ...-authorize-payment-method-for-heidelpay.md | 2 +- .../third-party-integrations/klarna/klarna.md | 2 +- .../payolution/payolution-request-flow.md | 2 +- .../payolution/payolution.md | 2 +- .../payone-acp-app.md | 2 +- .../ratenkauf-by-easycredit.md | 2 +- .../money-module-reference-information.md | 2 +- ...iple-currencies-per-store-configuration.md | 2 +- ...import-and-export-price-management-data.md | 2 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- .../money-module-reference-information.md | 2 +- ...iple-currencies-per-store-configuration.md | 2 +- ...import-and-export-price-management-data.md | 2 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- .../money-module-reference-information.md | 2 +- ...iple-currencies-per-store-configuration.md | 2 +- ...import-and-export-price-management-data.md | 2 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- ...surement-units-feature-module-relations.md | 6 +- .../alternative-products-feature-overview.md | 2 +- .../configurable-bundle-feature-overview.md | 4 +- .../measurement-units-feature-overview.md | 8 +- .../packaging-units-feature-overview.md | 4 +- .../product-bundles-feature-overview.md | 4 +- .../discontinued-products-overview.md | 2 +- .../product-attributes-overview.md | 4 +- .../product-labels-feature-overview.md | 2 +- .../product-options-feature-overview.md | 2 +- ...port-file-details-category-template.csv.md | 2 +- .../import-file-details-category.csv.md | 12 +-- ...mport-file-details-product-abstract.csv.md | 4 +- ...-file-details-product-attribute-key.csv.md | 2 +- ...mport-file-details-product-concrete.csv.md | 2 +- .../install-the-measurement-units-feature.md | 8 +- .../add-product-alternatives.md | 2 +- .../create-product-variants.md | 2 +- .../discontinue-products.md | 2 +- .../edit-product-variants.md | 2 +- .../glue-api-retrieve-concrete-products.md | 4 +- .../glue-api-retrieve-sales-units.md | 6 +- .../glue-api-retrieve-measurement-units.md | 2 +- .../glue-api-retrieve-product-attributes.md | 2 +- ...able-bundle-templates-in-the-storefront.md | 2 +- ...duct-data-from-import-to-frontend-views.md | 2 +- .../product-options/create-product-options.md | 2 +- .../product-options/manage-product-options.md | 2 +- .../products/create-product-variants.md | 2 +- .../create-marketplace-abstract-products.md | 2 +- .../glue-api-retrieve-abstract-products.md | 6 +- ...tplace-product-options-feature-overview.md | 2 +- ...surement-units-feature-module-relations.md | 6 +- .../alternative-products-feature-overview.md | 2 +- .../configurable-bundle-feature-overview.md | 4 +- .../measurement-units-feature-overview.md | 8 +- .../packaging-units-feature-overview.md | 4 +- .../product-bundles-feature-overview.md | 4 +- .../discontinued-products-overview.md | 2 +- .../product-attributes-overview.md | 4 +- .../product-labels-feature-overview.md | 2 +- .../product-options-feature-overview.md | 2 +- ...port-file-details-category-template.csv.md | 2 +- .../import-file-details-category.csv.md | 12 +-- ...mport-file-details-product-abstract.csv.md | 4 +- ...-file-details-product-attribute-key.csv.md | 2 +- ...mport-file-details-product-concrete.csv.md | 2 +- .../install-the-measurement-units-feature.md | 8 +- .../add-product-alternatives.md | 2 +- .../create-product-variants.md | 2 +- .../discontinue-products.md | 2 +- .../edit-product-variants.md | 2 +- .../glue-api-retrieve-concrete-products.md | 4 +- ...able-bundle-templates-in-the-storefront.md | 2 +- ...duct-data-from-import-to-frontend-views.md | 2 +- .../product-options/create-product-options.md | 2 +- .../product-options/manage-product-options.md | 2 +- .../products/create-product-variants.md | 2 +- .../create-marketplace-abstract-products.md | 2 +- .../glue-api-retrieve-abstract-products.md | 6 +- ...tplace-product-options-feature-overview.md | 2 +- ...surement-units-feature-module-relations.md | 6 +- .../alternative-products-feature-overview.md | 2 +- .../configurable-bundle-feature-overview.md | 4 +- .../measurement-units-feature-overview.md | 8 +- .../packaging-units-feature-overview.md | 4 +- .../product-bundles-feature-overview.md | 4 +- .../discontinued-products-overview.md | 2 +- .../product-attributes-overview.md | 4 +- .../product-labels-feature-overview.md | 2 +- .../product-options-feature-overview.md | 2 +- ...port-file-details-category-template.csv.md | 2 +- .../import-file-details-category.csv.md | 12 +-- ...mport-file-details-product-abstract.csv.md | 4 +- ...-file-details-product-attribute-key.csv.md | 2 +- ...mport-file-details-product-concrete.csv.md | 2 +- .../install-the-measurement-units-feature.md | 8 +- .../add-product-alternatives.md | 2 +- .../create-product-variants.md | 2 +- .../discontinue-products.md | 2 +- .../edit-product-variants.md | 2 +- .../glue-api-retrieve-concrete-products.md | 4 +- ...able-bundle-templates-in-the-storefront.md | 2 +- ...duct-data-from-import-to-frontend-views.md | 2 +- .../product-options/create-product-options.md | 2 +- .../product-options/manage-product-options.md | 2 +- .../products/create-product-variants.md | 2 +- .../create-marketplace-abstract-products.md | 2 +- .../glue-api-retrieve-abstract-products.md | 6 +- ...tplace-product-options-feature-overview.md | 2 +- .../glue-api-retrieve-related-products.md | 12 +-- .../product-relationship-management.md | 6 +- .../glue-api-retrieve-related-products.md | 12 +-- .../product-relationship-management.md | 6 +- .../glue-api-retrieve-related-products.md | 12 +-- .../product-relationship-management.md | 6 +- ...nage-product-reviews-in-the-back-office.md | 2 +- .../configure-bazaarvoice.md | 2 +- ...nage-product-reviews-in-the-back-office.md | 2 +- .../configure-bazaarvoice.md | 2 +- ...nage-product-reviews-in-the-back-office.md | 2 +- .../configure-bazaarvoice.md | 2 +- .../use-cases-request-for-quote-processes.md | 2 +- .../use-cases-request-for-quote-processes.md | 2 +- .../use-cases-request-for-quote-processes.md | 2 +- ...eturn-management-process-best-practices.md | 2 +- .../glue-api-manage-returns.md | 4 +- .../glue-api-manage-marketplace-returns.md | 4 +- ...eturn-management-process-best-practices.md | 2 +- .../glue-api-manage-returns.md | 4 +- .../glue-api-manage-marketplace-returns.md | 4 +- ...eturn-management-process-best-practices.md | 2 +- .../glue-api-manage-returns.md | 4 +- .../glue-api-manage-marketplace-returns.md | 4 +- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 2 +- .../best-practices/other-best-practices.md | 2 +- .../define-search-preferences.md | 2 +- .../search-feature-overview.md | 4 +- .../algolia/integrate-algolia.md | 2 +- .../configure-a-search-query.md | 4 +- .../configure-elasticsearch.md | 2 +- ...bute-cart-based-catalog-personalization.md | 4 +- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 2 +- .../best-practices/other-best-practices.md | 2 +- .../define-search-preferences.md | 2 +- .../search-feature-overview.md | 4 +- .../algolia/integrate-algolia.md | 2 +- .../configure-a-search-query.md | 4 +- .../configure-elasticsearch.md | 2 +- ...bute-cart-based-catalog-personalization.md | 4 +- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 2 +- .../best-practices/other-best-practices.md | 2 +- .../define-search-preferences.md | 2 +- .../search-feature-overview.md | 4 +- .../integrate-algolia-personalization.md | 2 +- .../configure-a-search-query.md | 4 +- .../configure-elasticsearch.md | 2 +- ...bute-cart-based-catalog-personalization.md | 4 +- .../glue-api-manage-marketplace-wishlists.md | 6 +- ...etplace-shopping-lists-feature-overview.md | 24 +++--- .../glue-api-manage-marketplace-wishlists.md | 6 +- ...etplace-shopping-lists-feature-overview.md | 24 +++--- .../glue-api-manage-marketplace-wishlists.md | 6 +- ...etplace-shopping-lists-feature-overview.md | 24 +++--- .../vertex/install-vertex/install-vertex.md | 2 +- ...cp-connector-module-for-tax-calculation.md | 4 +- .../integrate-the-vertex-app.md | 2 +- ...cp-connector-module-for-tax-calculation.md | 4 +- ...cp-connector-module-for-tax-calculation.md | 4 +- .../base-shop/user-and-rights-overview.md | 2 +- .../rules-and-scopes/inherited-scope.md | 4 +- .../base-shop/user-and-rights-overview.md | 2 +- .../rules-and-scopes/inherited-scope.md | 4 +- .../base-shop/user-and-rights-overview.md | 2 +- .../rules-and-scopes/inherited-scope.md | 4 +- ...ilability-notification-feature-overview.md | 2 +- ...ory-management-feature-modules-overview.md | 4 +- .../import-file-details-product-stock.csv.md | 2 +- .../inventory-management-feature-overview.md | 2 +- ...e-inventory-management-feature-overview.md | 2 +- .../fulfillment-app-overview.md | 2 +- ...ilability-notification-feature-overview.md | 2 +- ...ory-management-feature-modules-overview.md | 4 +- .../import-file-details-product-stock.csv.md | 2 +- .../inventory-management-feature-overview.md | 2 +- ...e-inventory-management-feature-overview.md | 2 +- .../fulfillment-app-overview.md | 2 +- ...ilability-notification-feature-overview.md | 2 +- ...ory-management-feature-modules-overview.md | 4 +- .../import-file-details-product-stock.csv.md | 2 +- .../inventory-management-feature-overview.md | 2 +- ...e-inventory-management-feature-overview.md | 2 +- .../fulfillment-app-overview.md | 2 +- 905 files changed, 1575 insertions(+), 1563 deletions(-) diff --git a/_archive/release-notes/release-notes-202212.0/release-notes-202212.0.md b/_archive/release-notes/release-notes-202212.0/release-notes-202212.0.md index f580fc06f9..626d557e7c 100644 --- a/_archive/release-notes/release-notes-202212.0/release-notes-202212.0.md +++ b/_archive/release-notes/release-notes-202212.0/release-notes-202212.0.md @@ -48,7 +48,7 @@ Adapting your offerings to your customers' needs and locales is crucial for prov #### Number formatting in the Storefront -For an effortless shopping experience, the localized number formatting is available throughout the Storefront for any user locale. Whether it is a catalog, product details page, cart, checkout, or customer account, your customers and guests can now enjoy their known number format. This helps to avoid any confusion about pricing or quantities. +For an effortless shopping experience, the localized number formatting is available throughout the Storefront for any user locale. Whether it's a catalog, product details page, cart, checkout, or customer account, your customers and guests can now enjoy their known number format. This helps to avoid any confusion about pricing or quantities. ##### Documentation diff --git a/_data/sidebars/dg_dev_sidebar.yml b/_data/sidebars/dg_dev_sidebar.yml index fc5adec1cd..26ccd59c6e 100644 --- a/_data/sidebars/dg_dev_sidebar.yml +++ b/_data/sidebars/dg_dev_sidebar.yml @@ -909,6 +909,8 @@ entries: - title: Internationalization and multi-store nested: + - title: Adding stores in a multi-database setup + url: /docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.html - title: Handling internationalization url: /docs/dg/dev/internationalization-and-multi-store/handling-internationalization.html - title: Managing glossary keys diff --git a/_drafts/acp-apps-development/develop-an-app/app-manifest.md b/_drafts/acp-apps-development/develop-an-app/app-manifest.md index 646f99a315..dd6838aa82 100644 --- a/_drafts/acp-apps-development/develop-an-app/app-manifest.md +++ b/_drafts/acp-apps-development/develop-an-app/app-manifest.md @@ -119,7 +119,7 @@ For the manifest, make sure to follow these conditions: |description | Full description of the app. New line symbols and HTML tags are not allowed. | "description": "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." | |developedBy | Optional. Provides information about who developed the App. | "developedBy": "Spryker Systems GmbH" | |url | URL to a homepage of the application provider (not visible in the AppCatalog). | "url": "https://www.payone.com/DE-en" | -|isAvailable | Shows if the application is currently available. Possible values:
  • false — the application is not available, it isn't possible to connect and configure it.
  • true — the application is available, it’s possible to connect, configure, and use it.
| "isAvailable": true | +|isAvailable | Shows if the application is currently available. Possible values:
  • false — the application is not available, it'sn't possible to connect and configure it.
  • true — the application is available, it’s possible to connect, configure, and use it.
| "isAvailable": true | |businessModels | An array of suite types that are compatible with the application. Possible values:
  • B2C
  • B2B
  • B2C_MARKETPLACE
  • B2B_MARKETPLACE
| See *businessModels example* under this table. | |categories | An array of categories that the application belongs to. Possible values:
  • BUSINESS_INTELLIGENCE
  • CONSENT_MANAGEMENT
  • LOYALTY_MANAGEMENT
  • PAYMENT
  • PRODUCT_INFORMATION_MANAGEMENT
  • SEARCH
  • TAX
  • USER_GENERATED_CONTENT
| See *categories example* under this table. | |pages | Adds additional content to the application detail page. This part contains an object with a page type and its blocks.
Possible page types (object keys):
  • Overview
  • Legal
Each page can contain no or multiple blocks. Each block should be specified by an object with the following keys:
  • title — header of the block;
  • type — the way the data is displayed. Possible values:
    • list
    • text
  • data — information that is displayed inside the block. Can be a string, if *type=text*, or an array of strings if *type=list*.
| See *pages example* under this table. | diff --git a/_drafts/acp-apps-development/develop-an-app/sync-api.md b/_drafts/acp-apps-development/develop-an-app/sync-api.md index 2e6b2014b3..e79aafa165 100644 --- a/_drafts/acp-apps-development/develop-an-app/sync-api.md +++ b/_drafts/acp-apps-development/develop-an-app/sync-api.md @@ -7,7 +7,7 @@ redirect_from: - /docs/acp/user/sync-api.html --- -[Sync API](https://github.com/spryker-sdk/sync-api/) is the synchronous API that Spryker supports. In the Spryker terminology, it is also known as [Glue API](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/glue-rest-api.html) with its [REST API B2C Demo Shop](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/rest-api-marketplace-b2c-demo-shop-reference.html) and [REST API B2B Demo Shop](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/rest-api-b2b-demo-shop-reference.html) endpoints. The schema files we use follow the [OpenAPI specification](https://swagger.io/specification/). +[Sync API](https://github.com/spryker-sdk/sync-api/) is the synchronous API that Spryker supports. In the Spryker terminology, it's also known as [Glue API](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/glue-rest-api.html) with its [REST API B2C Demo Shop](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/rest-api-marketplace-b2c-demo-shop-reference.html) and [REST API B2B Demo Shop](/docs/dg/dev/glue-api/{{site.version}}/old-glue-infrastructure/rest-api-b2b-demo-shop-reference.html) endpoints. The schema files we use follow the [OpenAPI specification](https://swagger.io/specification/). Spryker uses schema files to generate code for your project, including predefined test cases. The purpose of doing so is to let you focus on building your business logic without caring about the boilerplate code. ## Code generation diff --git a/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-debugging-in-devvm/configuring-debugging-in-devvm.md b/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-debugging-in-devvm/configuring-debugging-in-devvm.md index c637166ee1..a190347ec9 100644 --- a/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-debugging-in-devvm/configuring-debugging-in-devvm.md +++ b/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-debugging-in-devvm/configuring-debugging-in-devvm.md @@ -99,7 +99,7 @@ Define servers in PhpStorm: 1. In PhpStorm, go to **Preferences** > **Languages & Frameworks** > **PHP** > **Servers**. 2. Add a new server: 1. Select **+**. - 2. Enter a **Name**. For example, `zed.mysprykershop.com` (it is used in CLI below). + 2. Enter a **Name**. For example, `zed.mysprykershop.com` (it's used in CLI below). 3. For **Host**, enter `~^zed\.de\..+\.local$`. 4. Select **Use path mappings**. 5. For **Absolute path on server**, select `/data/shop/development/current`. diff --git a/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-spryker-with-devvm/configuring-spryker-after-installing-with-devvm.md b/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-spryker-with-devvm/configuring-spryker-after-installing-with-devvm.md index 5df9369804..68a85f3ac4 100644 --- a/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-spryker-with-devvm/configuring-spryker-after-installing-with-devvm.md +++ b/_drafts/deprecated-devvm/installing-spryker-with-development-virtual-machine/configuring-spryker-with-devvm/configuring-spryker-after-installing-with-devvm.md @@ -37,7 +37,7 @@ We will soon deprecate the DevVM and stop supporting it. Therefore, we highly re ## Configuring Git -If you want to commit from within the VM, it is recommended to set the right Git preferences: +If you want to commit from within the VM, it's recommended to set the right Git preferences: ```bash git config --global user.email "your.email@domain.tld" diff --git a/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md index 966e67f6c4..afc9d174fd 100644 --- a/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md @@ -53,7 +53,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -193,7 +193,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -212,7 +212,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -253,7 +253,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -269,7 +269,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -373,7 +373,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/201811.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/201811.0/sales-schema.md index bba8dde9f7..b43e142146 100644 --- a/_drafts/drafts-dev/database-schema-guide/201811.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201811.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md index 0eb14398d5..3046eeeefd 100644 --- a/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md @@ -52,7 +52,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -210,7 +210,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -251,7 +251,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -267,7 +267,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -371,7 +371,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/201903.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/201903.0/sales-schema.md index 28910b77f4..2a77f17d99 100644 --- a/_drafts/drafts-dev/database-schema-guide/201903.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201903.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md index 617e89d94d..296fc9d681 100644 --- a/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md @@ -52,7 +52,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -210,7 +210,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -251,7 +251,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -267,7 +267,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -371,7 +371,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/201907.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/201907.0/sales-schema.md index 5ebded26a1..e04160e000 100644 --- a/_drafts/drafts-dev/database-schema-guide/201907.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201907.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md index 4ad3f44846..de8b2b80a5 100644 --- a/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md @@ -52,7 +52,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -210,7 +210,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -251,7 +251,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -267,7 +267,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -371,7 +371,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/202001.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/202001.0/sales-schema.md index d3fe09fe0b..ddb1afe9de 100644 --- a/_drafts/drafts-dev/database-schema-guide/202001.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202001.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md index dfeba60691..808b00c99f 100644 --- a/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md @@ -52,7 +52,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -210,7 +210,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -251,7 +251,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -267,7 +267,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -371,7 +371,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/202005.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/202005.0/sales-schema.md index a8845a957e..4e11182d2c 100644 --- a/_drafts/drafts-dev/database-schema-guide/202005.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202005.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md index 3950fb7fe3..e4d41b8aa3 100644 --- a/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md @@ -52,7 +52,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -192,7 +192,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -211,7 +211,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -252,7 +252,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -268,7 +268,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -372,7 +372,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/202009.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/202009.0/sales-schema.md index 6cffc1e199..3566ad2b6e 100644 --- a/_drafts/drafts-dev/database-schema-guide/202009.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202009.0/sales-schema.md @@ -48,7 +48,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md index c3f118c0c6..43df3fbddb 100644 --- a/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md @@ -54,7 +54,7 @@ Any product can have any Attributes. The data is stored as pairs of keys / value **Structure:** * Attributes are identified by the key (e.g. "material"). -* The table `spy_product_attribute_key` can contain attribute keys so that it is possible to add metadata +* The table `spy_product_attribute_key` can contain attribute keys so that it's possible to add metadata * Super-Attributes must be declared here with `is_super=true`. * **Data for PIM**: On the left side of `spy_product_attribute_key` you see the general attribute meta data that can be attached to the keys. (warning) This meta data is only used for the integrated PIM and does not work for imported data. @@ -193,7 +193,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) @@ -212,7 +212,7 @@ Products can be sold in different **Measurement Units**. For instance, apples ca * **Base Unit** - An Abstract Product can have a Base Unit (otherwise we assume that the product is sold as "Item") - - The Base Unit is used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). + - The Base Unit's used for all internal calculations of prices and stocks (e.g Cables are usually calculated in kilogram). * **Sales Unit** @@ -253,7 +253,7 @@ Even when the product is marked as splittable, Spryker may still save them into ### Packaging Units {% info_block infoBox %} -A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit is represented by one product variant: +A shop can sell the same product in different Packaging Units, for example, to sell apples, options could be to sell apples as "Item", a "Bag" of apples or a "Pallet" of apples. Each Packaging Unit's represented by one product variant: {% endinfo_block %} ![Packaging units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/packaging-units.png) @@ -269,7 +269,7 @@ A packaging unit contains multiple items of a product. For instance, a "Bag of a **Structure:** -* A Packaging Unit is represented by a Concrete Product +* A Packaging Unit's represented by a Concrete Product * The Packaging Unit has a type (like "Bag", "Pallet" or "Item) and a fixed or variable amount. - `spy_product_packaging_unit_amount::default_amount` - E.g. a bag contains 10 apples @@ -373,7 +373,7 @@ Spryker ships with several price related features. Here is an overview: | Merchant Price | The same product is sold by different merchants. Each merchant provides its own price (like at Amazon Marketplace).In B2C Shops the Merchant Prices are usually used for all customers while in B2B scenarios there can be individual Merchant Prices that are only valid for a relationship between a Merchant and some Company Business Units. | | Custom Amount Price(for Packaging Units) | With packaging units we will introduce a possibility to change the amount. There is always a default amount that is related to the price of the product variant. In case the customer changes another amount then the price is adapted.Example: A bag of 10 apples costs 5.-. The customer changes the amount to 12 apples then he pays 5 * 12/10 = 6.- | | Price Types | Some products have multiple Price Types. For instance a mobile phone contract has a one-time price, a monthly fee and a working-price per minute. | -| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it is also possible that a price-per-business is fixed and the promotion price is ignored.
| +| Promotion price(~ former "Strike Price") | A temporal lower price that is shown as a strike price in shop.This can be configured in two ways per company/business-unit:
  • If the promotion price is lower than the price-per-business unit then it will be used (and vice-versa)
  • But it's also possible that a price-per-business is fixed and the promotion price is ignored.
| {% info_block errorBox %} The Promotional price feature is currently under development. {% endinfo_block %} diff --git a/_drafts/drafts-dev/database-schema-guide/202108.0/sales-schema.md b/_drafts/drafts-dev/database-schema-guide/202108.0/sales-schema.md index f78061069e..746da8346d 100644 --- a/_drafts/drafts-dev/database-schema-guide/202108.0/sales-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202108.0/sales-schema.md @@ -50,7 +50,7 @@ It is currently not possible to realize splits with Sales Order Items that have ### Customer Data -The Sales Order contains a copy of the Customer data so that it is not affected if the Customer makes changes. +The Sales Order contains a copy of the Customer data so that it's not affected if the Customer makes changes. ![Customer data](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Sales+Schema/customer-data.png) **Structure**: diff --git a/_drafts/drafts-dev/roadmap.md b/_drafts/drafts-dev/roadmap.md index 633e7b0f8f..654f7dced4 100644 --- a/_drafts/drafts-dev/roadmap.md +++ b/_drafts/drafts-dev/roadmap.md @@ -44,7 +44,7 @@ The roadmap contains features and not architectural items, enhancements, technol |Click and Collect |
  • Select pickup as a delivery method
  • Pickup in-store or other locations like lockers, affiliates, or warehouses
  • Allow customers to select a pickup time
  • A pickup location and time is confirmed by email and a collection code
  • Define and manage pickup locations
  • Manage the capacity of pickup slots
| |Service and appointment scheduling|
  • Scheduling pickup appointments for Click and Collect
  • Support for selling services that require an appointment
  • Maintaining vendor’s calendar and available slots
  • Appointment cancelation and rescheduling
| |Pick and Collect application |
  • Mobile application for store employees to keep track of order picking and collection
  • Best picking route configured per location
  • Order by order or “wave” picking approaches
  • Generating and exporting pick lists as PDF or HTML
  • Product substitution rules
| -|Multistore - channels and stores|Channels decouple *what* you sell from *how* it is presented.
**Channels:**
  • Create separate channels for desktop and mobile
  • Define a separate URL, UI theme, time zone, currency, and locale
  • Together with the Storefront as a service, create different Storefronts without the overhead of duplicating store data in Spryker
**Stores:**
  • Define catalog, prices, and promotions
  • Define business logic
  • Define store settings
| +|Multistore - channels and stores|Channels decouple *what* you sell from *how* it's presented.
**Channels:**
  • Create separate channels for desktop and mobile
  • Define a separate URL, UI theme, time zone, currency, and locale
  • Together with the Storefront as a service, create different Storefronts without the overhead of duplicating store data in Spryker
**Stores:**
  • Define catalog, prices, and promotions
  • Define business logic
  • Define store settings
| |API enhancements|
  • New front-end APIs for B2C and B2B
  • OAuth 2.0 implementation
  • Back-end APIs
| |Back-Office UI improvements |
  • Backoffice UI optimized for productivity
  • Better search and filter options
  • Bulk actions support
  • Built on atomic design principals
  • Easy to extend and use
| diff --git a/_drafts/for-commerce-quest/faq.md b/_drafts/for-commerce-quest/faq.md index 26ec9bb2f7..c3ab4bd862 100644 --- a/_drafts/for-commerce-quest/faq.md +++ b/_drafts/for-commerce-quest/faq.md @@ -23,7 +23,7 @@ Yes. We refer to third-party integrations as industry partners. They include ser ## Which new trends does your OS support? -As vendors of an operating system, our task is to ensure the quick development of apps. Since ROI timescales shorten increasingly and technology develops in ever quicker succession, it is difficult to look ahead even to 12 months. With this in mind, Spryker provides a starting point from which to develop applications in such areas as voice, chatbots, blockchain, AI, and more. +As vendors of an operating system, our task is to ensure the quick development of apps. Since ROI timescales shorten increasingly and technology develops in ever quicker succession, it's difficult to look ahead even to 12 months. With this in mind, Spryker provides a starting point from which to develop applications in such areas as voice, chatbots, blockchain, AI, and more. ## What is Spryker's solution for omnichannel? @@ -43,7 +43,7 @@ Capabilities are groups of features that are composed of modules, such as a cart ## How expensive is an average Spryker project? -The price depends on the number of apps and on the type of app you are going to build. As a rule of thumb, it is possible to build and deploy a single slimline app for most standard use cases within a few weeks—for example, a voice app for Alexa or a simple chatbot. The aim is to keep each app simple and relevant and to lock away as much of it in the OS as possible. This means that building a standard, run-of-the-mill webshop with Spryker does not take longer than with other systems. Spryker's real strength, however, is the variety of apps. So, building a B2C case with 4-5 apps (for example, a shop, a web app, a chatbot, voice, and POS) using a standard system would be complex, very expensive, and frustratingly slow undertaking. Unlike standard systems, such a use case is part of Spryker's DNA. Besides, in IoT scenarios, Spryker is actually better than most of the other solutions because of the absence of dedicated technology. +The price depends on the number of apps and on the type of app you are going to build. As a rule of thumb, it's possible to build and deploy a single slimline app for most standard use cases within a few weeks—for example, a voice app for Alexa or a simple chatbot. The aim is to keep each app simple and relevant and to lock away as much of it in the OS as possible. This means that building a standard, run-of-the-mill webshop with Spryker does not take longer than with other systems. Spryker's real strength, however, is the variety of apps. So, building a B2C case with 4-5 apps (for example, a shop, a web app, a chatbot, voice, and POS) using a standard system would be complex, very expensive, and frustratingly slow undertaking. Unlike standard systems, such a use case is part of Spryker's DNA. Besides, in IoT scenarios, Spryker is actually better than most of the other solutions because of the absence of dedicated technology. ## How might an MVP look like? diff --git a/_drafts/for-commerce-quest/mvp-project-structuring.md b/_drafts/for-commerce-quest/mvp-project-structuring.md index 1e918b6bdc..391a2c83fd 100644 --- a/_drafts/for-commerce-quest/mvp-project-structuring.md +++ b/_drafts/for-commerce-quest/mvp-project-structuring.md @@ -98,7 +98,7 @@ The following image below is an example of how to map functionality to assess th {% endinfo_block %} -Once functionality has been mapped, it is easier to assess the scope, importance, and cost of each feature. +Once functionality has been mapped, it's easier to assess the scope, importance, and cost of each feature. The next step is to map features to specific releases. With this method, you can formulate a fair assessment of the progression of your release scope and plan your work and resources accordingly. @@ -137,7 +137,7 @@ Both methods result in a document listing the tasks, resources, and timeline nee {% info_block infoBox "Examples:" %} -The Data Export functionality is ideal to be tackled with the spike tickets approach because it is a single functionality with no other external dependencies that need to be considered.

On the other hand, something like an ERP Connection that spans many processes and many edge cases needs in-depth analysis. +The Data Export functionality is ideal to be tackled with the spike tickets approach because it's a single functionality with no other external dependencies that need to be considered.

On the other hand, something like an ERP Connection that spans many processes and many edge cases needs in-depth analysis. So you would have a plan of attack workshops with the shop and ERP team and also with logistics and payment experts and combine the conclusions into a single plan. @@ -156,7 +156,7 @@ Choose the launch scenario that best suits the nature of the functionality that {% info_block infoBox %} -For example, if the new feature has to do with financial or highly sensitive information, it is better to choose the more conservative canary appropriate. +For example, if the new feature has to do with financial or highly sensitive information, it's better to choose the more conservative canary appropriate. {% endinfo_block %} diff --git a/_drafts/scalable-application-infrastructure-for-publish-and-sync-workers.md b/_drafts/scalable-application-infrastructure-for-publish-and-sync-workers.md index c88cfe40d9..6ecc13f80d 100644 --- a/_drafts/scalable-application-infrastructure-for-publish-and-sync-workers.md +++ b/_drafts/scalable-application-infrastructure-for-publish-and-sync-workers.md @@ -79,7 +79,7 @@ Symbols: ## RAM distribution -To exclude runtime memory limit issues, the memory allocated to each worker is also managed by computational resource manager. +To exclude runtime memory limit'ssues, the memory allocated to each worker is also managed by computational resource manager. The amount of RAM available for workers is calculated based on `memory_get_usage();` and `ini_get('memory_limit');` and distributed evenly. Formula: diff --git a/_includes/pbc/all/glue-api-guides/202311.0/items-response-attributes.md b/_includes/pbc/all/glue-api-guides/202311.0/items-response-attributes.md index 5278438898..fd25941e04 100644 --- a/_includes/pbc/all/glue-api-guides/202311.0/items-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202311.0/items-response-attributes.md @@ -5,7 +5,7 @@ | items | groupKey | String | Unique item identifier. The value is generated based on product properties. | | items | abstractSku | String | Unique identifier of the abstract product owning this concrete product. | | items | amount | Integer | Amount of the products in the cart. | -| items | 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. | +| items | unitPrice | Integer | Single item price without assuming if it's net or gross. This value should be used everywhere the price is displayed. It allows switching tax mode without side effects. | | items | sumPrice | Integer | Sum of all items prices calculated. | | items | taxRate | Integer | Current tax rate in per cent. | | items | unitNetPrice | Integer | Single item net price. | diff --git a/_includes/pbc/all/glue-api-guides/202311.0/orders-response-attributes.md b/_includes/pbc/all/glue-api-guides/202311.0/orders-response-attributes.md index e5c5bef8f3..7eb753fc7c 100644 --- a/_includes/pbc/all/glue-api-guides/202311.0/orders-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202311.0/orders-response-attributes.md @@ -64,7 +64,7 @@ | 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. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | +| items.unitPrice | Integer | Single item price without assuming if it's new or gross. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | | 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). | @@ -104,7 +104,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | salesUnit | Object | List of attributes defining the sales unit to be used for item amount calculation. | -| conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | precision | integer | Ratio between a sales unit and a base unit. | | measurementUnit | string | Code of the measurement unit. | | name | String | Name of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202311.0/shipments-response-attributes.md b/_includes/pbc/all/glue-api-guides/202311.0/shipments-response-attributes.md index c47614a21d..a86d767e89 100644 --- a/_includes/pbc/all/glue-api-guides/202311.0/shipments-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202311.0/shipments-response-attributes.md @@ -16,8 +16,8 @@ | shipments | shippingAddress.iso2Code | String | Specifies an ISO 2 Country Code to use. | | shipments | shippingAddress.company | String | Specifies the customer's company. | | shipments | shippingAddress.phone | String | Specifies the customer's phone number. | -| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it is the default shipping address of the customer. | -| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it is the default billing address of the customer. | +| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it's the default shipping address of the customer. | +| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it's the default billing address of the customer. | | shipments | shippingAddress.idCompanyBusinessUnitAddress | String | The unique identifier of a business unit address used for this shipment. | | shipments | selectedShipmentMethod | Object | Describes the shipment method for the shipment. | | shipments | selectedShipmentMethod.id | String | The unique identifier of the shipment method. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/items-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/items-response-attributes.md index 5278438898..fd25941e04 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/items-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/items-response-attributes.md @@ -5,7 +5,7 @@ | items | groupKey | String | Unique item identifier. The value is generated based on product properties. | | items | abstractSku | String | Unique identifier of the abstract product owning this concrete product. | | items | amount | Integer | Amount of the products in the cart. | -| items | 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. | +| items | unitPrice | Integer | Single item price without assuming if it's net or gross. This value should be used everywhere the price is displayed. It allows switching tax mode without side effects. | | items | sumPrice | Integer | Sum of all items prices calculated. | | items | taxRate | Integer | Current tax rate in per cent. | | items | unitNetPrice | Integer | Single item net price. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/orders-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/orders-response-attributes.md index e5c5bef8f3..7eb753fc7c 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/orders-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/orders-response-attributes.md @@ -64,7 +64,7 @@ | 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. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | +| items.unitPrice | Integer | Single item price without assuming if it's new or gross. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | | 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). | @@ -104,7 +104,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | salesUnit | Object | List of attributes defining the sales unit to be used for item amount calculation. | -| conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | precision | integer | Ratio between a sales unit and a base unit. | | measurementUnit | string | Code of the measurement unit. | | name | String | Name of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/product-management-attributes-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/product-management-attributes-response-attributes.md index 4fb04c5cbc..dcc73ec6cb 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/product-management-attributes-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/product-management-attributes-response-attributes.md @@ -1,7 +1,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-management-attributes | allowInput | Boolean | Indicates if custom values can be entered for this product attribute. | -| product-management-attributes | isSuper | Boolean | Indicates if it is a super attribute or not. | +| product-management-attributes | isSuper | Boolean | Indicates if it's a super attribute or not. | | product-management-attributes | inputType | String | Input type of the product attribute, for example, text, number, select, etc. | | product-management-attributes | localeName | String | Name of the locale. | | product-management-attributes | values | Array | Possible values of the attribute. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md index f1f9c4aea0..b1f3cab7da 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md @@ -1,5 +1,5 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-measurement-units | name | string | Name of the product measurement unit. | -| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | +| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | | product-measurement-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md index 60dbf068e5..15cd818c0b 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md @@ -1,7 +1,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | -| sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | sales-units | precision | integer | Ratio between a sales unit and a base unit. | -| sales-units | is displayed | boolean | Defines if the sales unit is displayed on the product details page. | -| sales-units | is default | boolean | Defines if the sales unit is selected by default on the product details page. | +| sales-units | is displayed | boolean | Defines if the sales unit's displayed on the product details page. | +| sales-units | is default | boolean | Defines if the sales unit's selected by default on the product details page. | | sales-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/shipments-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/shipments-response-attributes.md index 7529ec9285..5f30bc5a10 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/shipments-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/shipments-response-attributes.md @@ -14,8 +14,8 @@ | shipments | shippingAddress.iso2Code | String | Specifies an ISO 2 Country Code to use. | | shipments | shippingAddress.company | String | Specifies the customer's company. | | shipments | shippingAddress.phone | String | Specifies the customer's phone number. | -| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it is the default shipping address of the customer. | -| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it is the default billing address of the customer. | +| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it's the default shipping address of the customer. | +| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it's the default billing address of the customer. | | shipments | shippingAddress.idCompanyBusinessUnitAddress | String | The unique identifier of a business unit address used for this shipment. | | shipments | selectedShipmentMethod | Object | Describes the shipment method for the shipment. | | shipments | selectedShipmentMethod.id | String | The unique identifier of the shipment method. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/items-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/items-response-attributes.md index 5278438898..fd25941e04 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/items-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/items-response-attributes.md @@ -5,7 +5,7 @@ | items | groupKey | String | Unique item identifier. The value is generated based on product properties. | | items | abstractSku | String | Unique identifier of the abstract product owning this concrete product. | | items | amount | Integer | Amount of the products in the cart. | -| items | 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. | +| items | unitPrice | Integer | Single item price without assuming if it's net or gross. This value should be used everywhere the price is displayed. It allows switching tax mode without side effects. | | items | sumPrice | Integer | Sum of all items prices calculated. | | items | taxRate | Integer | Current tax rate in per cent. | | items | unitNetPrice | Integer | Single item net price. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/orders-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/orders-response-attributes.md index e5c5bef8f3..7eb753fc7c 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/orders-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/orders-response-attributes.md @@ -64,7 +64,7 @@ | 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. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | +| items.unitPrice | Integer | Single item price without assuming if it's new or gross. *This price should be displayed everywhere when a product price is displayed. It allows switching tax mode without side effects*. | | 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). | @@ -104,7 +104,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | salesUnit | Object | List of attributes defining the sales unit to be used for item amount calculation. | -| conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | precision | integer | Ratio between a sales unit and a base unit. | | measurementUnit | string | Code of the measurement unit. | | name | String | Name of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/product-management-attributes-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/product-management-attributes-response-attributes.md index 4fb04c5cbc..dcc73ec6cb 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/product-management-attributes-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/product-management-attributes-response-attributes.md @@ -1,7 +1,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-management-attributes | allowInput | Boolean | Indicates if custom values can be entered for this product attribute. | -| product-management-attributes | isSuper | Boolean | Indicates if it is a super attribute or not. | +| product-management-attributes | isSuper | Boolean | Indicates if it's a super attribute or not. | | product-management-attributes | inputType | String | Input type of the product attribute, for example, text, number, select, etc. | | product-management-attributes | localeName | String | Name of the locale. | | product-management-attributes | values | Array | Possible values of the attribute. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md index f1f9c4aea0..b1f3cab7da 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md @@ -1,5 +1,5 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-measurement-units | name | string | Name of the product measurement unit. | -| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | +| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | | product-measurement-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md index 60dbf068e5..15cd818c0b 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md @@ -1,7 +1,7 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | -| sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | sales-units | precision | integer | Ratio between a sales unit and a base unit. | -| sales-units | is displayed | boolean | Defines if the sales unit is displayed on the product details page. | -| sales-units | is default | boolean | Defines if the sales unit is selected by default on the product details page. | +| sales-units | is displayed | boolean | Defines if the sales unit's displayed on the product details page. | +| sales-units | is default | boolean | Defines if the sales unit's selected by default on the product details page. | | sales-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/shipments-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/shipments-response-attributes.md index 7529ec9285..5f30bc5a10 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/shipments-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/shipments-response-attributes.md @@ -14,8 +14,8 @@ | shipments | shippingAddress.iso2Code | String | Specifies an ISO 2 Country Code to use. | | shipments | shippingAddress.company | String | Specifies the customer's company. | | shipments | shippingAddress.phone | String | Specifies the customer's phone number. | -| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it is the default shipping address of the customer. | -| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it is the default billing address of the customer. | +| shipments | shippingAddress.isDefaultShipping | Boolean | If true, it's the default shipping address of the customer. | +| shipments | shippingAddress.isDefaultBilling | Boolean | If true, it's the default billing address of the customer. | | shipments | shippingAddress.idCompanyBusinessUnitAddress | String | The unique identifier of a business unit address used for this shipment. | | shipments | selectedShipmentMethod | Object | Describes the shipment method for the shipment. | | shipments | selectedShipmentMethod.id | String | The unique identifier of the shipment method. | diff --git a/_includes/pbc/all/install-features/202307.0/enable-gift-cards.md b/_includes/pbc/all/install-features/202307.0/enable-gift-cards.md index 031d6cb424..fada0bdabb 100644 --- a/_includes/pbc/all/install-features/202307.0/enable-gift-cards.md +++ b/_includes/pbc/all/install-features/202307.0/enable-gift-cards.md @@ -31,7 +31,7 @@ spryker/product-management:"^0.12.0" | `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` | - | +| `GiftCardMetadataExpanderPlugin` | Populates Gift Card information when it's in the cart. | `CartDependencyProvider::getExpanderPlugins` | - | | `GiftCardCheckoutDoSaveOrderPlugin` | Saves a Gift Card with populated data when an order is placed. Keeps Gift Card as an order payment method. | `CheckoutDependencyProvider::getCheckoutOrderSavers` | - | | `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` | - | | `GiftCardCheckoutPreConditionPlugin` | 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.. | `CheckoutDependencyProvider::getCheckoutPreConditions` | - | 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 5958994389..d8ca3aaee7 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 @@ -134,7 +134,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Using the following data, make sure that when you add, update, or delete a store currency, it is exported to or removed from Storage. +Using the following data, make sure that when you add, update, or delete a store currency, it's exported to or removed from Storage. Storage type: Redis Target entity: Store 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 4f0646e5af..1a8ff66968 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 @@ -648,7 +648,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Ensure that, when a store created, updated, or deleted with local and country data. And it is exported to or removed from Redis. +Ensure that, when a store created, updated, or deleted with local and country data. And it's exported to or removed from Redis. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-multiple-carts-glue-api.md b/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-multiple-carts-glue-api.md index f1cbb92e00..f3045c5b42 100644 --- a/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-multiple-carts-glue-api.md +++ b/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-multiple-carts-glue-api.md @@ -91,7 +91,7 @@ Make sure that the following endpoints are available: {% info_block warningBox “Verification” %} -Make sure that it is possible to create more than one cart. +Make sure that it's possible to create more than one cart. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-navigation-glue-api.md b/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-navigation-glue-api.md index e3218cda94..c59ed7ec7b 100644 --- a/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-navigation-glue-api.md +++ b/_includes/pbc/all/install-features/202307.0/install-glue-api/install-the-navigation-glue-api.md @@ -155,7 +155,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency {% info_block warningBox “Verification” %} -Now, it is possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) +Now, it's possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-agent-assist-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-agent-assist-feature.md index eb6f824d95..147ee90eff 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-agent-assist-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-agent-assist-feature.md @@ -203,7 +203,7 @@ Add environment configuration for the agent security: |----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------| | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | -| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | +| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md index 23d309371d..a15fbd28ec 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US @@ -448,7 +448,7 @@ quote_approval_widget.cart.status.waiting,"Waiting",en_US quote_approval_widget.cart.status.waiting,"Wartet",de_DE quote_approval_widget.shared_cart_warning,"After a cart has been sent to approval, all of its shares will be dismissed.",en_US quote_approval_widget.shared_cart_warning,"Nachdem der Warenkorb zur Genehmigung gesendet wurde, wird sein Sharing aufgehoben.",de_DE -quote_approval_widget.limit_text,"Your purchase limit is %amount%. To spend more, request approval from your manager.",en_US +quote_approval_widget.limit_text,"Your purchase limit's %amount%. To spend more, request approval from your manager.",en_US quote_approval_widget.limit_text,"Ihr Einkaufsrahmen liegt bei %amount%. Um mehr auszugeben, fordern Sie bitte die Genehmigung bei Ihrem Manager an",de_DE quote_approval_widget.no_limit_text,"You do not have a purchase limit",en_US quote_approval_widget.no_limit_text,"Sie haben kein Einkaufslimit",de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md index 755cd86a70..d64c958051 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-category-image-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-category-image-feature.md index 1d9f41e6ca..f200dcf769 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-category-image-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-category-image-feature.md @@ -263,7 +263,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Make sure that when a category image is created, updated, or deleted, it is exported or removed from Redis accordingly. +Make sure that when a category image is created, updated, or deleted, it's exported or removed from Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-category-management-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-category-management-feature.md index e7ea07ca1d..8894184c2c 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-category-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-category-management-feature.md @@ -710,7 +710,7 @@ Make sure that *category-node*, *category-tree* synchronization plugins works co {% info_block warningBox "Verification" %} -Make sure that when a category is created or edited through ORM, it is exported to Redis and Elasticsearch accordingly. +Make sure that when a category is created or edited through ORM, it's exported to Redis and Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202307.0/install-the-company-account-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-company-account-feature.md index c27d44c1c5..58d5498bed 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-company-account-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-company-account-feature.md @@ -329,7 +329,7 @@ Enable the following behaviors by registering the plugins: | DefaultCompanyUserCustomerTransferExpanderPlugin | Sets a default company user for a Business on Behalf customer if a company user has not been selected yet. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | IsOnBehalfCustomerTransferExpanderPlugin | Sets the `CustomerTransfer.IsOnBehalf` property so that other features can determine if the selected company user is a Business on Behalf company user. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | CompanyUserAccessTokenAuthenticationHandlerPlugin | Provides functionality to log in a customer by an access token. | None | Spryker\Client\OauthCompanyUser\Plugin\Customer | -| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it is already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | +| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it's already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | | CompanyUserAccessTokenOauthUserProviderPlugin | Provides a user transfer by a company user ID. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | CompanyUserAccessTokenOauthGrantTypeConfigurationProviderPlugin | Provides the configuration of `CompanyUser` `GrantType`. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | OauthCompanyUserInstallerPlugin| Creates new OAuth scope—adds `company_user scope` to the `spy_oauth_scope` table.) | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Installer | @@ -729,7 +729,7 @@ 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,"You can not select this company user, it's 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 customer_page.error.customer_already_logged_in,Customer already logged in.,en_US customer_page.error.customer_already_logged_in,Der Kunde ist bereits eingeloggt.,de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-configurable-bundle-feature.md index 4aae85c18e..fc8c949fc1 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-configurable-bundle-feature.md @@ -605,7 +605,7 @@ class ConfigurableBundlePageSearchConfig extends SprykerConfigurableBundlePageSe * from `spy_configurable_bundle_template_storage` table to Redis * from `spy_configurable_bundle_template_page_search` table to Elasticsearch -3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it is exported to Redis or Elasticsearch accordingly. +3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it's exported to Redis or Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202307.0/install-the-customer-access-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-customer-access-feature.md index 1d3ce1cb6f..4019eb1feb 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-customer-access-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-customer-access-feature.md @@ -170,7 +170,7 @@ class EventDependencyProvider extends SprykerEventDependencyProvider {% info_block warningBox "Verification" %} -Make sure that when a customer access rule is created, updated, or deleted, it is exported (or removed) to Redis. +Make sure that when a customer access rule is created, updated, or deleted, it's exported (or removed) to Redis. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |-------------------------------------|------------------------------------| diff --git a/_includes/pbc/all/install-features/202307.0/install-the-discontinued-products-product-labels-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-discontinued-products-product-labels-feature.md index 3528d1a6f7..6469c8e033 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-discontinued-products-product-labels-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-discontinued-products-product-labels-feature.md @@ -79,6 +79,6 @@ class ProductLabelDependencyProvider extends SprykerProductLabelDependencyProvid {% info_block warningBox "Verification" %} -Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it is assigned. +Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it's assigned. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-file-manager-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-file-manager-feature.md index e43b874a7b..081598d2a2 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-file-manager-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-file-manager-feature.md @@ -439,6 +439,6 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -When a file data is created, updated, or deleted, make sure it is exported or removed from Redis accordingly. +When a file data is created, updated, or deleted, make sure it's exported or removed from Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md index 2584aa3c87..b910894bb1 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% 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 Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202307.0/install-the-multiple-carts-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-multiple-carts-feature.md index 62ca6a0c41..f1d4529702 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-multiple-carts-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-multiple-carts-feature.md @@ -331,7 +331,7 @@ Make sure that customer carts have unique names. If a customer creates a cart wi Example: -If the name "Shopping cart" already exists, it is changed to the following: +If the name "Shopping cart" already exists, it's changed to the following: * Shopping cart → Shopping cart 1 * Shopping cart → Shopping cart 2 @@ -427,7 +427,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|---------------------------------| -| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it is not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | +| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it's not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | **src/Pyz/Client/Customer/CustomerDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md index 14d64f65dd..235a4c12a9 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md @@ -956,7 +956,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit is displayed. +- The correct sales unit's displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-feature.md index b2d3beeefd..c9cafadc2b 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-feature.md @@ -210,7 +210,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Ensure that, when a product bundle is created, updated, or deleted, it is exported to or removed from Redis. +Ensure that, when a product bundle is created, updated, or deleted, it's exported to or removed from Redis. Storage type: Redis Target entity: Product Bundle diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-category-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-category-feature.md index f528dd0a1b..55b924d04d 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-category-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-category-feature.md @@ -345,7 +345,7 @@ class EventBehaviorDependencyProvider extends SprykerEventBehaviorDependencyProv {% info_block warningBox "Verification" %} -When a category product assignment is changed through ORM, make sure it is exported to Redis. +When a category product assignment is changed through ORM, make sure it's exported to Redis. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |--------------|-------------------------|--------------------------------------| diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-images-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-images-configurable-bundle-feature.md index 92e36980ad..23db51e003 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-images-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-images-configurable-bundle-feature.md @@ -153,7 +153,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency 1. Make sure that when you added some data to tables `spy_product_image_set`, `spy_product_image_set_to_product_image`, `spy_product_image` with `fk_resource_configurable_bundle_template` and run `console trigger:event -r configurable_bundle_template_image` command, the changes are reflected in the `spy_configurable_bundle_template_image_storage` table. 2. Make sure that after step #4 or after `console sync:data configurable_bundle_template_image` command execution, the data s added to the `spy_configurable_bundle_template_image_storage` table and Redis. -3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it is exported to Redis accordingly. +3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it's exported to Redis accordingly. 4. Ensure that Elasticsearch document has been expanded by images property. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md index 88112f3806..e141d4e44e 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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.| +|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's 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.| +|is_default|mandatory|integer|1|Controls if this sales unit's 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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit's available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-sets-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-sets-feature.md index 13dfc73c86..5a6d0a8f44 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-sets-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-sets-feature.md @@ -117,7 +117,7 @@ Implement an installer in your project to put products together in sets represen ### Listing products sets on the Storefront -The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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. +The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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's possible to implement the same features with a custom implementation. For a 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 on the Storefront. The results are sorted in descending order based on the product sets' weight attributes. diff --git a/_includes/pbc/all/install-features/202307.0/install-the-quotation-process-approval-process-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-quotation-process-approval-process-feature.md index a840cd76dc..40d9b38804 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-quotation-process-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-quotation-process-approval-process-feature.md @@ -22,7 +22,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---|---|---|---| | QuoteApprovalQuoteRequestQuoteCheckPlugin | Checks if the "Request For Quote" button should be shown on the cart page or not. | None | Spryker\Client\QuoteApproval\Plugin\QuoteRequest | -| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it is in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | +| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it's in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | | QuoteApprovalQuoteRequestPreCreateCheckPlugin | Checks if the quote doesn't have the status `waiting`. | None | Spryker\Zed\QuoteApproval\Communication\Plugin\QuoteRequest | **src/Pyz/Client/QuoteRequest/QuoteRequestDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md index 5252dbdbb1..0872a5293e 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md @@ -1138,7 +1138,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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.empty,Zurzeit'st 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 diff --git a/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-back-office-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-back-office-feature.md index 5192396b51..f563938177 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-back-office-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-back-office-feature.md @@ -106,7 +106,7 @@ Add the following configuration to your project: | AclConstants::ACL_DEFAULT_RULES | Default rules for ACL functionality, where you can open access to some modules or controller out of the box. | Spryker\Shared\Acl | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for a Back Office user. | Spryker\Shared\SecurityBlockerBackoffice | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the Back Office user is blocked if the number of attempts is exceeded for the Back Office. | Spryker\Shared\SecurityBlockerBackoffice | -| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerBackoffice | +| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerBackoffice | **config/Shared/config_default.php** @@ -155,7 +155,7 @@ $config[SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_A Spryker offers two authentication strategies out of the box: -* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it is created automatically based on the data from an external service. +* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it's created automatically based on the data from an external service. * `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_ACCEPT_ONLY_EXISTING_USERS`: It accepts only existing users for authentication. diff --git a/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-feature.md index 22935032e6..f0832fda52 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-spryker-core-feature.md @@ -306,7 +306,7 @@ Add environment configuration for customer security: |----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_TTL | Specifies the TTL configuration, the period when number of unsuccessful tries will be counted for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | -| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | +| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-inventory-management-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-inventory-management-feature.md index 4da32209f4..e84bf35f3a 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-inventory-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-inventory-management-feature.md @@ -612,7 +612,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency Make sure the following actions take place as expected: * The command `console sync:data merchant_profile` exports data from the `spy_product_offer_availability_storage` table to Redis. -* When a product offer availability entity gets created or updated through ORM, it is exported to Redis accordingly. +* When a product offer availability entity gets created or updated through ORM, it's exported to Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-feature.md index 06cf3d977c..13e0aea4c7 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-merchant-feature.md @@ -971,17 +971,17 @@ To import data: ``` 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 allow us to 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 ``` diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-order-management-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-order-management-feature.md index b4387ae9c6..c4a0b3ee2a 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-order-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-order-management-feature.md @@ -1100,7 +1100,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency 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 when retrieving an order in the *Sales* module, it's 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. diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-offer-cart-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-offer-cart-feature.md index ee34358318..9ce7e3141e 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-offer-cart-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-offer-cart-feature.md @@ -84,7 +84,7 @@ class CartDependencyProvider extends SprykerCartDependencyProvider 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. +Make sure that it's only possible to have items in cart where the product offer reference belongs to the correct concrete product. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-options-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-options-feature.md index de77f65bec..e98c72d876 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-options-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-product-options-feature.md @@ -372,7 +372,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider Make sure the following is true: * Merchants can create product option groups and values in the Merchant Portal. -* Merchant product option information is shown on a product details page when it is approved and active. +* Merchant product option information is shown on a product details page when it's approved and active. * Merchant product option information is displayed in the cart, checkout, and user account. * Merchant product options are a part of the marketplace or merchant order, and all totals are calculated correctly. diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-return-management-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-return-management-feature.md index 0460b1b503..38200ac77d 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-return-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-marketplace-return-management-feature.md @@ -835,7 +835,7 @@ Make sure that when you create and process a return for merchant order items, it | MARKETPLACE SM | DEFAULT MERCHANT SM | MAIN MERCHANT SM | | --- | ---| --- | | Used by an operator | Used by a third-party merchant. | Used by a 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 +| start-return (can be started by entering in the Return Flow; it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's 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 diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-opening-hours-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-opening-hours-feature.md index 7ffc72236c..04cc69a554 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-opening-hours-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-opening-hours-feature.md @@ -274,7 +274,7 @@ class MerchantOpeningHoursStorageConfig extends SprykerMerchantOpeningHoursStora 1. Make sure that after step 1 the command `console sync:data merchant_opening_hours` exports data from the `spy_merchant_opening_hours_storage` table to Redis. -2. Make sure that when merchant opening hours entities get created or updated through ORM, it is exported to Redis accordingly. +2. Make sure that when merchant opening hours entities get created or updated through ORM, it's exported to Redis accordingly. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | ---------------- | ----------------- | diff --git a/_includes/pbc/all/install-features/202311.0/enable-gift-cards.md b/_includes/pbc/all/install-features/202311.0/enable-gift-cards.md index 031d6cb424..fada0bdabb 100644 --- a/_includes/pbc/all/install-features/202311.0/enable-gift-cards.md +++ b/_includes/pbc/all/install-features/202311.0/enable-gift-cards.md @@ -31,7 +31,7 @@ spryker/product-management:"^0.12.0" | `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` | - | +| `GiftCardMetadataExpanderPlugin` | Populates Gift Card information when it's in the cart. | `CartDependencyProvider::getExpanderPlugins` | - | | `GiftCardCheckoutDoSaveOrderPlugin` | Saves a Gift Card with populated data when an order is placed. Keeps Gift Card as an order payment method. | `CheckoutDependencyProvider::getCheckoutOrderSavers` | - | | `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` | - | | `GiftCardCheckoutPreConditionPlugin` | 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.. | `CheckoutDependencyProvider::getCheckoutPreConditions` | - | diff --git a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore-the-prices-feature.md b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore-the-prices-feature.md index 5958994389..d8ca3aaee7 100644 --- a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore-the-prices-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore-the-prices-feature.md @@ -134,7 +134,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Using the following data, make sure that when you add, update, or delete a store currency, it is exported to or removed from Storage. +Using the following data, make sure that when you add, update, or delete a store currency, it's exported to or removed from Storage. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md index 4acfb3afdd..9cf6f7e48c 100644 --- a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md @@ -622,7 +622,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Ensure that, when a store created, updated, or deleted with local and country data. And it is exported to or removed from Redis. +Ensure that, when a store created, updated, or deleted with local and country data. And it's exported to or removed from Redis. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-multiple-carts-glue-api.md b/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-multiple-carts-glue-api.md index f1cbb92e00..f3045c5b42 100644 --- a/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-multiple-carts-glue-api.md +++ b/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-multiple-carts-glue-api.md @@ -91,7 +91,7 @@ Make sure that the following endpoints are available: {% info_block warningBox “Verification” %} -Make sure that it is possible to create more than one cart. +Make sure that it's possible to create more than one cart. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-navigation-glue-api.md b/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-navigation-glue-api.md index e3218cda94..c59ed7ec7b 100644 --- a/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-navigation-glue-api.md +++ b/_includes/pbc/all/install-features/202311.0/install-glue-api/install-the-navigation-glue-api.md @@ -155,7 +155,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency {% info_block warningBox “Verification” %} -Now, it is possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) +Now, it's possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-the-agent-assist-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-agent-assist-feature.md index eb6f824d95..147ee90eff 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-agent-assist-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-agent-assist-feature.md @@ -203,7 +203,7 @@ Add environment configuration for the agent security: |----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------| | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | -| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | +| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md index 23d309371d..a15fbd28ec 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US @@ -448,7 +448,7 @@ quote_approval_widget.cart.status.waiting,"Waiting",en_US quote_approval_widget.cart.status.waiting,"Wartet",de_DE quote_approval_widget.shared_cart_warning,"After a cart has been sent to approval, all of its shares will be dismissed.",en_US quote_approval_widget.shared_cart_warning,"Nachdem der Warenkorb zur Genehmigung gesendet wurde, wird sein Sharing aufgehoben.",de_DE -quote_approval_widget.limit_text,"Your purchase limit is %amount%. To spend more, request approval from your manager.",en_US +quote_approval_widget.limit_text,"Your purchase limit's %amount%. To spend more, request approval from your manager.",en_US quote_approval_widget.limit_text,"Ihr Einkaufsrahmen liegt bei %amount%. Um mehr auszugeben, fordern Sie bitte die Genehmigung bei Ihrem Manager an",de_DE quote_approval_widget.no_limit_text,"You do not have a purchase limit",en_US quote_approval_widget.no_limit_text,"Sie haben kein Einkaufslimit",de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md index 755cd86a70..d64c958051 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-category-image-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-category-image-feature.md index 1d9f41e6ca..f200dcf769 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-category-image-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-category-image-feature.md @@ -263,7 +263,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Make sure that when a category image is created, updated, or deleted, it is exported or removed from Redis accordingly. +Make sure that when a category image is created, updated, or deleted, it's exported or removed from Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-the-category-management-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-category-management-feature.md index e7ea07ca1d..8894184c2c 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-category-management-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-category-management-feature.md @@ -710,7 +710,7 @@ Make sure that *category-node*, *category-tree* synchronization plugins works co {% info_block warningBox "Verification" %} -Make sure that when a category is created or edited through ORM, it is exported to Redis and Elasticsearch accordingly. +Make sure that when a category is created or edited through ORM, it's exported to Redis and Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202311.0/install-the-company-account-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-company-account-feature.md index c27d44c1c5..58d5498bed 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-company-account-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-company-account-feature.md @@ -329,7 +329,7 @@ Enable the following behaviors by registering the plugins: | DefaultCompanyUserCustomerTransferExpanderPlugin | Sets a default company user for a Business on Behalf customer if a company user has not been selected yet. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | IsOnBehalfCustomerTransferExpanderPlugin | Sets the `CustomerTransfer.IsOnBehalf` property so that other features can determine if the selected company user is a Business on Behalf company user. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | CompanyUserAccessTokenAuthenticationHandlerPlugin | Provides functionality to log in a customer by an access token. | None | Spryker\Client\OauthCompanyUser\Plugin\Customer | -| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it is already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | +| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it's already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | | CompanyUserAccessTokenOauthUserProviderPlugin | Provides a user transfer by a company user ID. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | CompanyUserAccessTokenOauthGrantTypeConfigurationProviderPlugin | Provides the configuration of `CompanyUser` `GrantType`. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | OauthCompanyUserInstallerPlugin| Creates new OAuth scope—adds `company_user scope` to the `spy_oauth_scope` table.) | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Installer | @@ -729,7 +729,7 @@ 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,"You can not select this company user, it's 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 customer_page.error.customer_already_logged_in,Customer already logged in.,en_US customer_page.error.customer_already_logged_in,Der Kunde ist bereits eingeloggt.,de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-configurable-bundle-feature.md index 4aae85c18e..fc8c949fc1 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-configurable-bundle-feature.md @@ -605,7 +605,7 @@ class ConfigurableBundlePageSearchConfig extends SprykerConfigurableBundlePageSe * from `spy_configurable_bundle_template_storage` table to Redis * from `spy_configurable_bundle_template_page_search` table to Elasticsearch -3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it is exported to Redis or Elasticsearch accordingly. +3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it's exported to Redis or Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202311.0/install-the-customer-access-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-customer-access-feature.md index 1d3ce1cb6f..4019eb1feb 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-customer-access-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-customer-access-feature.md @@ -170,7 +170,7 @@ class EventDependencyProvider extends SprykerEventDependencyProvider {% info_block warningBox "Verification" %} -Make sure that when a customer access rule is created, updated, or deleted, it is exported (or removed) to Redis. +Make sure that when a customer access rule is created, updated, or deleted, it's exported (or removed) to Redis. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |-------------------------------------|------------------------------------| diff --git a/_includes/pbc/all/install-features/202311.0/install-the-discontinued-products-product-labels-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-discontinued-products-product-labels-feature.md index 3528d1a6f7..6469c8e033 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-discontinued-products-product-labels-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-discontinued-products-product-labels-feature.md @@ -79,6 +79,6 @@ class ProductLabelDependencyProvider extends SprykerProductLabelDependencyProvid {% info_block warningBox "Verification" %} -Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it is assigned. +Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it's assigned. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md index 2584aa3c87..b910894bb1 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% 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 Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202311.0/install-the-multiple-carts-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-multiple-carts-feature.md index 0a6f095f4f..29a171b1cb 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-multiple-carts-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-multiple-carts-feature.md @@ -331,7 +331,7 @@ Make sure that customer carts have unique names. If a customer creates a cart wi Example: -If the name "Shopping cart" already exists, it is changed to the following: +If the name "Shopping cart" already exists, it's changed to the following: * Shopping cart → Shopping cart 1 * Shopping cart → Shopping cart 2 @@ -427,7 +427,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|---------------------------------| -| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it is not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | +| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it's not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | **src/Pyz/Client/Customer/CustomerDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md index 1fa6fe44de..3fb3021400 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit is displayed. +- The correct sales unit's displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-feature.md index b2d3beeefd..c9cafadc2b 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-feature.md @@ -210,7 +210,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Ensure that, when a product bundle is created, updated, or deleted, it is exported to or removed from Redis. +Ensure that, when a product bundle is created, updated, or deleted, it's exported to or removed from Redis. Storage type: Redis Target entity: Product Bundle diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-category-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-category-feature.md index f528dd0a1b..55b924d04d 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-category-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-category-feature.md @@ -345,7 +345,7 @@ class EventBehaviorDependencyProvider extends SprykerEventBehaviorDependencyProv {% info_block warningBox "Verification" %} -When a category product assignment is changed through ORM, make sure it is exported to Redis. +When a category product assignment is changed through ORM, make sure it's exported to Redis. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |--------------|-------------------------|--------------------------------------| diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-images-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-images-configurable-bundle-feature.md index 92e36980ad..23db51e003 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-images-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-images-configurable-bundle-feature.md @@ -153,7 +153,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency 1. Make sure that when you added some data to tables `spy_product_image_set`, `spy_product_image_set_to_product_image`, `spy_product_image` with `fk_resource_configurable_bundle_template` and run `console trigger:event -r configurable_bundle_template_image` command, the changes are reflected in the `spy_configurable_bundle_template_image_storage` table. 2. Make sure that after step #4 or after `console sync:data configurable_bundle_template_image` command execution, the data s added to the `spy_configurable_bundle_template_image_storage` table and Redis. -3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it is exported to Redis accordingly. +3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it's exported to Redis accordingly. 4. Ensure that Elasticsearch document has been expanded by images property. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md index 88112f3806..e141d4e44e 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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.| +|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's 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.| +|is_default|mandatory|integer|1|Controls if this sales unit's 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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit's available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-offer-service-points-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-offer-service-points-feature.md index 3648f5f66c..f111df9818 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-offer-service-points-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-offer-service-points-feature.md @@ -464,7 +464,7 @@ Make sure that the `product-offer-service` synchronization plugin works correctl 2. Run the `console sync:data -r product_offer_service` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_service:{store}:{product_offer_reference}` mask. -Make sure when a product offer service is created via DataImport, it is exported to Redis accordingly. +Make sure when a product offer service is created via DataImport, it's exported to Redis accordingly. Make sure that, in Redis, data is displayed in the following format: diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-offer-shipment-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-offer-shipment-feature.md index ea9933eab9..81c6f1883c 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-offer-shipment-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-offer-shipment-feature.md @@ -336,7 +336,7 @@ Make sure that `product-offer-shipment-type` synchronization plugin works correc 2. Run the `console sync:data -r product_offer_shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_shipment_type:{store}:{product_offer_reference}` mask. -Make sure that when a product offer shipment type relation is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a product offer shipment type relation is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-sets-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-sets-feature.md index 13dfc73c86..5a6d0a8f44 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-sets-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-sets-feature.md @@ -117,7 +117,7 @@ Implement an installer in your project to put products together in sets represen ### Listing products sets on the Storefront -The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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. +The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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's possible to implement the same features with a custom implementation. For a 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 on the Storefront. The results are sorted in descending order based on the product sets' weight attributes. diff --git a/_includes/pbc/all/install-features/202311.0/install-the-quotation-process-approval-process-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-quotation-process-approval-process-feature.md index a840cd76dc..40d9b38804 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-quotation-process-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-quotation-process-approval-process-feature.md @@ -22,7 +22,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---|---|---|---| | QuoteApprovalQuoteRequestQuoteCheckPlugin | Checks if the "Request For Quote" button should be shown on the cart page or not. | None | Spryker\Client\QuoteApproval\Plugin\QuoteRequest | -| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it is in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | +| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it's in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | | QuoteApprovalQuoteRequestPreCreateCheckPlugin | Checks if the quote doesn't have the status `waiting`. | None | Spryker\Zed\QuoteApproval\Communication\Plugin\QuoteRequest | **src/Pyz/Client/QuoteRequest/QuoteRequestDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md index a374116cb9..4a7d2a47b5 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US @@ -1075,7 +1075,7 @@ Verify the `service-point` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that, when a service point is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that, when a service point is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```yaml @@ -1148,7 +1148,7 @@ Verify the `service-type` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that when a service type is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that when a service type is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```json diff --git a/_includes/pbc/all/install-features/202311.0/install-the-shipment-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-shipment-feature.md index 3771019e5e..2ef8891c97 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-shipment-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-shipment-feature.md @@ -971,7 +971,7 @@ Make sure that `shipment-type` synchronization plugin works correctly: 2. Run the `console sync:data -r shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:shipment_type:{store}:{shipment_type_id}` mask. -Make sure that when a shipment type is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a shipment type is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md index 2eabd441a0..9c97b7d84b 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md @@ -1138,7 +1138,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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.empty,Zurzeit'st 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 diff --git a/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-back-office-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-back-office-feature.md index 5192396b51..f563938177 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-back-office-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-back-office-feature.md @@ -106,7 +106,7 @@ Add the following configuration to your project: | AclConstants::ACL_DEFAULT_RULES | Default rules for ACL functionality, where you can open access to some modules or controller out of the box. | Spryker\Shared\Acl | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for a Back Office user. | Spryker\Shared\SecurityBlockerBackoffice | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the Back Office user is blocked if the number of attempts is exceeded for the Back Office. | Spryker\Shared\SecurityBlockerBackoffice | -| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerBackoffice | +| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerBackoffice | **config/Shared/config_default.php** @@ -155,7 +155,7 @@ $config[SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_A Spryker offers two authentication strategies out of the box: -* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it is created automatically based on the data from an external service. +* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it's created automatically based on the data from an external service. * `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_ACCEPT_ONLY_EXISTING_USERS`: It accepts only existing users for authentication. diff --git a/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-feature.md index 22935032e6..f0832fda52 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-spryker-core-feature.md @@ -306,7 +306,7 @@ Add environment configuration for customer security: |----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_TTL | Specifies the TTL configuration, the period when number of unsuccessful tries will be counted for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | -| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | +| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-inventory-management-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-inventory-management-feature.md index 4da32209f4..e84bf35f3a 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-inventory-management-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-inventory-management-feature.md @@ -612,7 +612,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency Make sure the following actions take place as expected: * The command `console sync:data merchant_profile` exports data from the `spy_product_offer_availability_storage` table to Redis. -* When a product offer availability entity gets created or updated through ORM, it is exported to Redis accordingly. +* When a product offer availability entity gets created or updated through ORM, it's exported to Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-merchant-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-merchant-feature.md index 06cf3d977c..13e0aea4c7 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-merchant-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-merchant-feature.md @@ -971,17 +971,17 @@ To import data: ``` 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 allow us to 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 ``` diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-order-management-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-order-management-feature.md index b4387ae9c6..c4a0b3ee2a 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-order-management-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-order-management-feature.md @@ -1100,7 +1100,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency 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 when retrieving an order in the *Sales* module, it's 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. diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-offer-cart-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-offer-cart-feature.md index ee34358318..9ce7e3141e 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-offer-cart-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-offer-cart-feature.md @@ -84,7 +84,7 @@ class CartDependencyProvider extends SprykerCartDependencyProvider 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. +Make sure that it's only possible to have items in cart where the product offer reference belongs to the correct concrete product. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-options-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-options-feature.md index 406fbea6c4..07d625a9cd 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-options-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-product-options-feature.md @@ -372,7 +372,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider Make sure the following is true: * Merchants can create product option groups and values in the Merchant Portal. -* Merchant product option information is shown on a product details page when it is approved and active. +* Merchant product option information is shown on a product details page when it's approved and active. * Merchant product option information is displayed in the cart, checkout, and user account. * Merchant product options are a part of the marketplace or merchant order, and all totals are calculated correctly. diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-return-management-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-return-management-feature.md index 0460b1b503..38200ac77d 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-return-management-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-marketplace-return-management-feature.md @@ -835,7 +835,7 @@ Make sure that when you create and process a return for merchant order items, it | MARKETPLACE SM | DEFAULT MERCHANT SM | MAIN MERCHANT SM | | --- | ---| --- | | Used by an operator | Used by a third-party merchant. | Used by a 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 +| start-return (can be started by entering in the Return Flow; it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's 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 diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-opening-hours-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-opening-hours-feature.md index 7ffc72236c..04cc69a554 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-opening-hours-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-opening-hours-feature.md @@ -274,7 +274,7 @@ class MerchantOpeningHoursStorageConfig extends SprykerMerchantOpeningHoursStora 1. Make sure that after step 1 the command `console sync:data merchant_opening_hours` exports data from the `spy_merchant_opening_hours_storage` table to Redis. -2. Make sure that when merchant opening hours entities get created or updated through ORM, it is exported to Redis accordingly. +2. Make sure that when merchant opening hours entities get created or updated through ORM, it's exported to Redis accordingly. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | ---------------- | ----------------- | diff --git a/_includes/pbc/all/install-features/202311.0/unified-commerce/install-the-warehouse-picking-product-feature.md b/_includes/pbc/all/install-features/202311.0/unified-commerce/install-the-warehouse-picking-product-feature.md index 79e4b8f996..ed1a87d72f 100644 --- a/_includes/pbc/all/install-features/202311.0/unified-commerce/install-the-warehouse-picking-product-feature.md +++ b/_includes/pbc/all/install-features/202311.0/unified-commerce/install-the-warehouse-picking-product-feature.md @@ -153,7 +153,7 @@ Make sure the `concrete-products` and `concrete-product-image-sets` resources ar "is_active": true }, "name": "Sony SmartWatch 3", - "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit ist, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", + "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit'st, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", "isSearchable": true, "attributes": { "color": "Weiß" diff --git a/_includes/pbc/all/install-features/202404.0/enable-gift-cards.md b/_includes/pbc/all/install-features/202404.0/enable-gift-cards.md index 031d6cb424..fada0bdabb 100644 --- a/_includes/pbc/all/install-features/202404.0/enable-gift-cards.md +++ b/_includes/pbc/all/install-features/202404.0/enable-gift-cards.md @@ -31,7 +31,7 @@ spryker/product-management:"^0.12.0" | `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` | - | +| `GiftCardMetadataExpanderPlugin` | Populates Gift Card information when it's in the cart. | `CartDependencyProvider::getExpanderPlugins` | - | | `GiftCardCheckoutDoSaveOrderPlugin` | Saves a Gift Card with populated data when an order is placed. Keeps Gift Card as an order payment method. | `CheckoutDependencyProvider::getCheckoutOrderSavers` | - | | `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` | - | | `GiftCardCheckoutPreConditionPlugin` | 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.. | `CheckoutDependencyProvider::getCheckoutPreConditions` | - | diff --git a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore-the-prices-feature.md b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore-the-prices-feature.md index 5958994389..d8ca3aaee7 100644 --- a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore-the-prices-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore-the-prices-feature.md @@ -134,7 +134,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Using the following data, make sure that when you add, update, or delete a store currency, it is exported to or removed from Storage. +Using the following data, make sure that when you add, update, or delete a store currency, it's exported to or removed from Storage. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md index 77bbd0e419..b7bee8d227 100644 --- a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md @@ -643,7 +643,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -When a store’s data is created, updated, or deleted, including local and country information, make sure it is correctly exported to or removed from Redis. +When a store’s data is created, updated, or deleted, including local and country information, make sure it's correctly exported to or removed from Redis. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-multiple-carts-glue-api.md b/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-multiple-carts-glue-api.md index 3cd1d00c78..a9e32dde44 100644 --- a/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-multiple-carts-glue-api.md +++ b/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-multiple-carts-glue-api.md @@ -91,7 +91,7 @@ Make sure that the following endpoints are available: {% info_block warningBox “Verification” %} -Make sure that it is possible to create more than one cart. +Make sure that it's possible to create more than one cart. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-navigation-glue-api.md b/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-navigation-glue-api.md index a8810da82c..7c60ed571c 100644 --- a/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-navigation-glue-api.md +++ b/_includes/pbc/all/install-features/202404.0/install-glue-api/install-the-navigation-glue-api.md @@ -155,7 +155,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency {% info_block warningBox “Verification” %} -Now, it is possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) +Now, it's possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-agent-assist-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-agent-assist-feature.md index b50a978d1e..8e71466f00 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-agent-assist-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-agent-assist-feature.md @@ -203,7 +203,7 @@ Add environment configuration for the agent security: |----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------| | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | | SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for an agent. | Spryker\Shared\SecurityBlockerStorefrontAgent | -| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | +| SecurityBlockerStorefrontAgentConstants::AGENT_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt an agent can make during the `SECURITY_BLOCKER_STOREFRONT:AGENT_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontAgent | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md index 23d309371d..a15fbd28ec 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US @@ -448,7 +448,7 @@ quote_approval_widget.cart.status.waiting,"Waiting",en_US quote_approval_widget.cart.status.waiting,"Wartet",de_DE quote_approval_widget.shared_cart_warning,"After a cart has been sent to approval, all of its shares will be dismissed.",en_US quote_approval_widget.shared_cart_warning,"Nachdem der Warenkorb zur Genehmigung gesendet wurde, wird sein Sharing aufgehoben.",de_DE -quote_approval_widget.limit_text,"Your purchase limit is %amount%. To spend more, request approval from your manager.",en_US +quote_approval_widget.limit_text,"Your purchase limit's %amount%. To spend more, request approval from your manager.",en_US quote_approval_widget.limit_text,"Ihr Einkaufsrahmen liegt bei %amount%. Um mehr auszugeben, fordern Sie bitte die Genehmigung bei Ihrem Manager an",de_DE quote_approval_widget.no_limit_text,"You do not have a purchase limit",en_US quote_approval_widget.no_limit_text,"Sie haben kein Einkaufslimit",de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md index 755cd86a70..d64c958051 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-category-image-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-category-image-feature.md index 1d9f41e6ca..f200dcf769 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-category-image-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-category-image-feature.md @@ -263,7 +263,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Make sure that when a category image is created, updated, or deleted, it is exported or removed from Redis accordingly. +Make sure that when a category image is created, updated, or deleted, it's exported or removed from Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-category-management-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-category-management-feature.md index 781d68981f..8d1a3105bc 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-category-management-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-category-management-feature.md @@ -712,7 +712,7 @@ Make sure that *category-node* and *category-tree* synchronization plugins works 3. Run the `console sync:data -r category_tree` command. 4. Check that, in your system, the storage entries are displayed with the `kv:category_node:{store}:{locale}:{id}` and `kv:category_tree:{store}:{locale}:{id}` masks. -Make sure that, when a category is created or edited through ORM, it is exported to Redis and Elasticsearch accordingly. +Make sure that, when a category is created or edited through ORM, it's exported to Redis and Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |---------------|---------------|----------------------------------| diff --git a/_includes/pbc/all/install-features/202404.0/install-the-company-account-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-company-account-feature.md index c27d44c1c5..58d5498bed 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-company-account-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-company-account-feature.md @@ -329,7 +329,7 @@ Enable the following behaviors by registering the plugins: | DefaultCompanyUserCustomerTransferExpanderPlugin | Sets a default company user for a Business on Behalf customer if a company user has not been selected yet. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | IsOnBehalfCustomerTransferExpanderPlugin | Sets the `CustomerTransfer.IsOnBehalf` property so that other features can determine if the selected company user is a Business on Behalf company user. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | CompanyUserAccessTokenAuthenticationHandlerPlugin | Provides functionality to log in a customer by an access token. | None | Spryker\Client\OauthCompanyUser\Plugin\Customer | -| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it is already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | +| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it's already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | | CompanyUserAccessTokenOauthUserProviderPlugin | Provides a user transfer by a company user ID. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | CompanyUserAccessTokenOauthGrantTypeConfigurationProviderPlugin | Provides the configuration of `CompanyUser` `GrantType`. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | OauthCompanyUserInstallerPlugin| Creates new OAuth scope—adds `company_user scope` to the `spy_oauth_scope` table.) | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Installer | @@ -729,7 +729,7 @@ 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,"You can not select this company user, it's 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 customer_page.error.customer_already_logged_in,Customer already logged in.,en_US customer_page.error.customer_already_logged_in,Der Kunde ist bereits eingeloggt.,de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-configurable-bundle-feature.md index 4aae85c18e..fc8c949fc1 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-configurable-bundle-feature.md @@ -605,7 +605,7 @@ class ConfigurableBundlePageSearchConfig extends SprykerConfigurableBundlePageSe * from `spy_configurable_bundle_template_storage` table to Redis * from `spy_configurable_bundle_template_page_search` table to Elasticsearch -3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it is exported to Redis or Elasticsearch accordingly. +3. Make sure that when a configurable bundle template (or template slot) created or edited through ORM, it's exported to Redis or Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202404.0/install-the-customer-access-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-customer-access-feature.md index 1d3ce1cb6f..4019eb1feb 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-customer-access-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-customer-access-feature.md @@ -170,7 +170,7 @@ class EventDependencyProvider extends SprykerEventDependencyProvider {% info_block warningBox "Verification" %} -Make sure that when a customer access rule is created, updated, or deleted, it is exported (or removed) to Redis. +Make sure that when a customer access rule is created, updated, or deleted, it's exported (or removed) to Redis. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |-------------------------------------|------------------------------------| diff --git a/_includes/pbc/all/install-features/202404.0/install-the-discontinued-products-product-labels-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-discontinued-products-product-labels-feature.md index 3528d1a6f7..6469c8e033 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-discontinued-products-product-labels-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-discontinued-products-product-labels-feature.md @@ -79,6 +79,6 @@ class ProductLabelDependencyProvider extends SprykerProductLabelDependencyProvid {% info_block warningBox "Verification" %} -Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it is assigned. +Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it's assigned. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md index 10670f8161..f68a55814c 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md @@ -171,7 +171,7 @@ Enable the following behaviors by registering the plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------------------------------------------------------------------------------| -| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | +| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit's deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | | MerchantRelationRequestCompanyUserPreDeletePlugin | When a company user is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyUser | | MerchantRelationRequestStatusChangeMailTypeBuilderPlugin | Builds `MailTransfer` with the data for the merchant relation request status change email. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\Mail | | StatusChangeCompanyUserNotificationMerchantRelationshipRequestPostUpdatePlugin | Sends a status change notification email to the company user who initiated the request to the merchant. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\MerchantRelationRequest | @@ -204,7 +204,7 @@ class CompanyBusinessUnitDependencyProvider extends SprykerCompanyBusinessUnitDe {% info_block warningBox "Verification" %} -Make sure that, when a company business unit is deleted, all related merchant relation requests are deleted too. +Make sure that, when a company business unit's deleted, all related merchant relation requests are deleted too. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md index 2584aa3c87..b910894bb1 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% 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 Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202404.0/install-the-multiple-carts-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-multiple-carts-feature.md index 7023ce4fb9..195fbb4e3c 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-multiple-carts-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-multiple-carts-feature.md @@ -330,7 +330,7 @@ Make sure that customer carts have unique names. If a customer creates a cart wi Example: -If the name "Shopping cart" already exists, it is changed to the following: +If the name "Shopping cart" already exists, it's changed to the following: * Shopping cart → Shopping cart 1 * Shopping cart → Shopping cart 2 @@ -426,7 +426,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|---------------------------------| -| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it is not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | +| GuestCartSaveCustomerSessionSetPlugin | Executed after the customer has been added to the session. Saves a guest customer quote to the database if it's not empty. Takes an actual customer quote from the database if the guest cart is empty. | Must be added before `GuestCartUpdateCustomerSessionSetPlugin`. | Spryker\Client\MultiCart\Plugin | **src/Pyz/Client/Customer/CustomerDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md index 1fa6fe44de..3fb3021400 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit is displayed. +- The correct sales unit's displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-feature.md index b2d3beeefd..c9cafadc2b 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-feature.md @@ -210,7 +210,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Ensure that, when a product bundle is created, updated, or deleted, it is exported to or removed from Redis. +Ensure that, when a product bundle is created, updated, or deleted, it's exported to or removed from Redis. Storage type: Redis Target entity: Product Bundle diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-category-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-category-feature.md index f528dd0a1b..55b924d04d 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-category-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-category-feature.md @@ -345,7 +345,7 @@ class EventBehaviorDependencyProvider extends SprykerEventBehaviorDependencyProv {% info_block warningBox "Verification" %} -When a category product assignment is changed through ORM, make sure it is exported to Redis. +When a category product assignment is changed through ORM, make sure it's exported to Redis. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |--------------|-------------------------|--------------------------------------| diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-images-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-images-configurable-bundle-feature.md index 92e36980ad..23db51e003 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-images-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-images-configurable-bundle-feature.md @@ -153,7 +153,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency 1. Make sure that when you added some data to tables `spy_product_image_set`, `spy_product_image_set_to_product_image`, `spy_product_image` with `fk_resource_configurable_bundle_template` and run `console trigger:event -r configurable_bundle_template_image` command, the changes are reflected in the `spy_configurable_bundle_template_image_storage` table. 2. Make sure that after step #4 or after `console sync:data configurable_bundle_template_image` command execution, the data s added to the `spy_configurable_bundle_template_image_storage` table and Redis. -3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it is exported to Redis accordingly. +3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it's exported to Redis accordingly. 4. Ensure that Elasticsearch document has been expanded by images property. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md index 88112f3806..e141d4e44e 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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.| +|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's 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.| +|is_default|mandatory|integer|1|Controls if this sales unit's 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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit's available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-offer-service-points-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-offer-service-points-feature.md index 3648f5f66c..f111df9818 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-offer-service-points-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-offer-service-points-feature.md @@ -464,7 +464,7 @@ Make sure that the `product-offer-service` synchronization plugin works correctl 2. Run the `console sync:data -r product_offer_service` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_service:{store}:{product_offer_reference}` mask. -Make sure when a product offer service is created via DataImport, it is exported to Redis accordingly. +Make sure when a product offer service is created via DataImport, it's exported to Redis accordingly. Make sure that, in Redis, data is displayed in the following format: diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-offer-shipment-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-offer-shipment-feature.md index ea9933eab9..81c6f1883c 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-offer-shipment-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-offer-shipment-feature.md @@ -336,7 +336,7 @@ Make sure that `product-offer-shipment-type` synchronization plugin works correc 2. Run the `console sync:data -r product_offer_shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_shipment_type:{store}:{product_offer_reference}` mask. -Make sure that when a product offer shipment type relation is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a product offer shipment type relation is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-sets-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-sets-feature.md index 13dfc73c86..5a6d0a8f44 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-sets-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-sets-feature.md @@ -117,7 +117,7 @@ Implement an installer in your project to put products together in sets represen ### Listing products sets on the Storefront -The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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. +The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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's possible to implement the same features with a custom implementation. For a 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 on the Storefront. The results are sorted in descending order based on the product sets' weight attributes. diff --git a/_includes/pbc/all/install-features/202404.0/install-the-quotation-process-approval-process-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-quotation-process-approval-process-feature.md index a840cd76dc..40d9b38804 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-quotation-process-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-quotation-process-approval-process-feature.md @@ -22,7 +22,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---|---|---|---| | QuoteApprovalQuoteRequestQuoteCheckPlugin | Checks if the "Request For Quote" button should be shown on the cart page or not. | None | Spryker\Client\QuoteApproval\Plugin\QuoteRequest | -| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it is in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | +| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it's in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | | QuoteApprovalQuoteRequestPreCreateCheckPlugin | Checks if the quote doesn't have the status `waiting`. | None | Spryker\Zed\QuoteApproval\Communication\Plugin\QuoteRequest | **src/Pyz/Client/QuoteRequest/QuoteRequestDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md index a374116cb9..4a7d2a47b5 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US @@ -1075,7 +1075,7 @@ Verify the `service-point` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that, when a service point is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that, when a service point is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```yaml @@ -1148,7 +1148,7 @@ Verify the `service-type` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that when a service type is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that when a service type is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```json diff --git a/_includes/pbc/all/install-features/202404.0/install-the-shipment-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-shipment-feature.md index 3771019e5e..2ef8891c97 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-shipment-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-shipment-feature.md @@ -971,7 +971,7 @@ Make sure that `shipment-type` synchronization plugin works correctly: 2. Run the `console sync:data -r shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:shipment_type:{store}:{shipment_type_id}` mask. -Make sure that when a shipment type is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a shipment type is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md index 524564bdb5..52ba385bd2 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md @@ -1232,7 +1232,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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.empty,Zurzeit'st 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 diff --git a/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-back-office-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-back-office-feature.md index a9cd536737..53eaf7d3b8 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-back-office-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-back-office-feature.md @@ -108,7 +108,7 @@ Add the following configuration to your project: | AclConstants::ACL_DEFAULT_RULES | Default rules for ACL functionality, where you can open access to some modules or controller out of the box. | Spryker\Shared\Acl | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_TTL | Specifies the TTL configuration, the period when the number of unsuccessful tries is counted for a Back Office user. | Spryker\Shared\SecurityBlockerBackoffice | | SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the Back Office user is blocked if the number of attempts is exceeded for the Back Office. | Spryker\Shared\SecurityBlockerBackoffice | -| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerBackoffice | +| SecurityBlockerBackofficeConstants::BACKOFFICE_USER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempts a Back Office user can make during the `SECURITY_BLOCKER_BACKOFFICE:BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerBackoffice | **config/Shared/config_default.php** @@ -176,7 +176,7 @@ class SecurityGuiConfig extends SprykerSecurityGuiConfig By default, Spryker offers two authentication strategies: -* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it is created automatically based on the data from an external service. +* `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_CREATE_USER_ON_FIRST_LOGIN`: If a user doesn't exist, it's created automatically based on the data from an external service. * `\Spryker\Zed\SecurityOauthUser\SecurityOauthUserConfig::AUTHENTICATION_STRATEGY_ACCEPT_ONLY_EXISTING_USERS`: It accepts only existing users for authentication. diff --git a/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-feature.md index 89409cde50..372925b67e 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-spryker-core-feature.md @@ -306,7 +306,7 @@ Add environment configuration for customer security: |----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCK_FOR_SECONDS | Specifies the TTL configuration, the period for which the agent is blocked if the number of attempts is exceeded for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | | SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_TTL | Specifies the TTL configuration, the period when number of unsuccessful tries will be counted for customer. | Spryker\Shared\SecurityBlockerStorefrontCustomer | -| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it is blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | +| SecurityBlockerStorefrontCustomerConstants::CUSTOMER_BLOCKING_NUMBER_OF_ATTEMPTS | Specifies number of failed login attempt a customer can make during the `SECURITY_BLOCKER_STOREFRONT:CUSTOMER_BLOCKING_TTL` time before it's blocked. | Spryker\Shared\SecurityBlockerStorefrontCustomer | **config/Shared/config_default.php** diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-inventory-management-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-inventory-management-feature.md index 4da32209f4..e84bf35f3a 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-inventory-management-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-inventory-management-feature.md @@ -612,7 +612,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency Make sure the following actions take place as expected: * The command `console sync:data merchant_profile` exports data from the `spy_product_offer_availability_storage` table to Redis. -* When a product offer availability entity gets created or updated through ORM, it is exported to Redis accordingly. +* When a product offer availability entity gets created or updated through ORM, it's exported to Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-merchant-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-merchant-feature.md index 31bd5548e7..f987804c87 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-merchant-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-merchant-feature.md @@ -431,17 +431,17 @@ To import data follow the steps in the following sections. ```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 allow us to 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 ``` diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-order-management-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-order-management-feature.md index b4387ae9c6..c4a0b3ee2a 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-order-management-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-order-management-feature.md @@ -1100,7 +1100,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency 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 when retrieving an order in the *Sales* module, it's 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. diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-offer-cart-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-offer-cart-feature.md index ee34358318..9ce7e3141e 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-offer-cart-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-offer-cart-feature.md @@ -84,7 +84,7 @@ class CartDependencyProvider extends SprykerCartDependencyProvider 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. +Make sure that it's only possible to have items in cart where the product offer reference belongs to the correct concrete product. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-options-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-options-feature.md index 406fbea6c4..07d625a9cd 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-options-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-product-options-feature.md @@ -372,7 +372,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider Make sure the following is true: * Merchants can create product option groups and values in the Merchant Portal. -* Merchant product option information is shown on a product details page when it is approved and active. +* Merchant product option information is shown on a product details page when it's approved and active. * Merchant product option information is displayed in the cart, checkout, and user account. * Merchant product options are a part of the marketplace or merchant order, and all totals are calculated correctly. diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-return-management-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-return-management-feature.md index 0460b1b503..38200ac77d 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-return-management-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-marketplace-return-management-feature.md @@ -835,7 +835,7 @@ Make sure that when you create and process a return for merchant order items, it | MARKETPLACE SM | DEFAULT MERCHANT SM | MAIN MERCHANT SM | | --- | ---| --- | | Used by an operator | Used by a third-party merchant. | Used by a 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 +| start-return (can be started by entering in the Return Flow; it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's 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 diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-opening-hours-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-opening-hours-feature.md index 7ffc72236c..04cc69a554 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-opening-hours-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-opening-hours-feature.md @@ -274,7 +274,7 @@ class MerchantOpeningHoursStorageConfig extends SprykerMerchantOpeningHoursStora 1. Make sure that after step 1 the command `console sync:data merchant_opening_hours` exports data from the `spy_merchant_opening_hours_storage` table to Redis. -2. Make sure that when merchant opening hours entities get created or updated through ORM, it is exported to Redis accordingly. +2. Make sure that when merchant opening hours entities get created or updated through ORM, it's exported to Redis accordingly. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | ---------------- | ----------------- | diff --git a/_includes/pbc/all/install-features/202404.0/unified-commerce/install-the-warehouse-picking-product-feature.md b/_includes/pbc/all/install-features/202404.0/unified-commerce/install-the-warehouse-picking-product-feature.md index 79e4b8f996..ed1a87d72f 100644 --- a/_includes/pbc/all/install-features/202404.0/unified-commerce/install-the-warehouse-picking-product-feature.md +++ b/_includes/pbc/all/install-features/202404.0/unified-commerce/install-the-warehouse-picking-product-feature.md @@ -153,7 +153,7 @@ Make sure the `concrete-products` and `concrete-product-image-sets` resources ar "is_active": true }, "name": "Sony SmartWatch 3", - "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit ist, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", + "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit'st, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", "isSearchable": true, "attributes": { "color": "Weiß" diff --git a/_includes/pbc/all/install-features/202410.0/enable-gift-cards.md b/_includes/pbc/all/install-features/202410.0/enable-gift-cards.md index 031d6cb424..fada0bdabb 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-gift-cards.md +++ b/_includes/pbc/all/install-features/202410.0/enable-gift-cards.md @@ -31,7 +31,7 @@ spryker/product-management:"^0.12.0" | `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` | - | +| `GiftCardMetadataExpanderPlugin` | Populates Gift Card information when it's in the cart. | `CartDependencyProvider::getExpanderPlugins` | - | | `GiftCardCheckoutDoSaveOrderPlugin` | Saves a Gift Card with populated data when an order is placed. Keeps Gift Card as an order payment method. | `CheckoutDependencyProvider::getCheckoutOrderSavers` | - | | `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` | - | | `GiftCardCheckoutPreConditionPlugin` | 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.. | `CheckoutDependencyProvider::getCheckoutPreConditions` | - | diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore-the-prices-feature.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore-the-prices-feature.md index 189e373f8c..c1f5932c31 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore-the-prices-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore-the-prices-feature.md @@ -128,7 +128,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -Using the following data, make sure that when you add, update, or delete a store currency, it is exported to or removed from Storage. +Using the following data, make sure that when you add, update, or delete a store currency, it's exported to or removed from Storage. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index 92e1a8077c..52e323e662 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -689,7 +689,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider {% info_block warningBox "Verification" %} -When a store’s data is created, updated, or deleted, including local and country information, make sure it is correctly exported to or removed from Redis. +When a store’s data is created, updated, or deleted, including local and country information, make sure it's correctly exported to or removed from Redis. Storage type: Redis Target entity: Store diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-multiple-carts-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-multiple-carts-glue-api.md index 3cd1d00c78..a9e32dde44 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-multiple-carts-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-multiple-carts-glue-api.md @@ -91,7 +91,7 @@ Make sure that the following endpoints are available: {% info_block warningBox “Verification” %} -Make sure that it is possible to create more than one cart. +Make sure that it's possible to create more than one cart. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-navigation-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-navigation-glue-api.md index a8810da82c..7c60ed571c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-navigation-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-navigation-glue-api.md @@ -155,7 +155,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency {% info_block warningBox “Verification” %} -Now, it is possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) +Now, it's possible to verify that the configuration of NavigationsRestApiConfig is done correctly. Perform the "https://glue.mysprykershop.com/navigations/{navigationId}" request and check that each node of the type you set up in the configuration (category and CMS pages in the example "resourceId" is filled with the valid foreign key.) {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md index 23d309371d..a15fbd28ec 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US @@ -448,7 +448,7 @@ quote_approval_widget.cart.status.waiting,"Waiting",en_US quote_approval_widget.cart.status.waiting,"Wartet",de_DE quote_approval_widget.shared_cart_warning,"After a cart has been sent to approval, all of its shares will be dismissed.",en_US quote_approval_widget.shared_cart_warning,"Nachdem der Warenkorb zur Genehmigung gesendet wurde, wird sein Sharing aufgehoben.",de_DE -quote_approval_widget.limit_text,"Your purchase limit is %amount%. To spend more, request approval from your manager.",en_US +quote_approval_widget.limit_text,"Your purchase limit's %amount%. To spend more, request approval from your manager.",en_US quote_approval_widget.limit_text,"Ihr Einkaufsrahmen liegt bei %amount%. Um mehr auszugeben, fordern Sie bitte die Genehmigung bei Ihrem Manager an",de_DE quote_approval_widget.no_limit_text,"You do not have a purchase limit",en_US quote_approval_widget.no_limit_text,"Sie haben kein Einkaufslimit",de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md index 755cd86a70..d64c958051 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-category-image-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-category-image-feature.md index 1d9f41e6ca..f200dcf769 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-category-image-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-category-image-feature.md @@ -263,7 +263,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Make sure that when a category image is created, updated, or deleted, it is exported or removed from Redis accordingly. +Make sure that when a category image is created, updated, or deleted, it's exported or removed from Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-category-management-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-category-management-feature.md index 781d68981f..8d1a3105bc 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-category-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-category-management-feature.md @@ -712,7 +712,7 @@ Make sure that *category-node* and *category-tree* synchronization plugins works 3. Run the `console sync:data -r category_tree` command. 4. Check that, in your system, the storage entries are displayed with the `kv:category_node:{store}:{locale}:{id}` and `kv:category_tree:{store}:{locale}:{id}` masks. -Make sure that, when a category is created or edited through ORM, it is exported to Redis and Elasticsearch accordingly. +Make sure that, when a category is created or edited through ORM, it's exported to Redis and Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |---------------|---------------|----------------------------------| diff --git a/_includes/pbc/all/install-features/202410.0/install-the-company-account-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-company-account-feature.md index c27d44c1c5..58d5498bed 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-company-account-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-company-account-feature.md @@ -329,7 +329,7 @@ Enable the following behaviors by registering the plugins: | DefaultCompanyUserCustomerTransferExpanderPlugin | Sets a default company user for a Business on Behalf customer if a company user has not been selected yet. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | IsOnBehalfCustomerTransferExpanderPlugin | Sets the `CustomerTransfer.IsOnBehalf` property so that other features can determine if the selected company user is a Business on Behalf company user. | None | Spryker\Zed\BusinessOnBehalf\Communication\Plugin\Customer | | CompanyUserAccessTokenAuthenticationHandlerPlugin | Provides functionality to log in a customer by an access token. | None | Spryker\Client\OauthCompanyUser\Plugin\Customer | -| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it is already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | +| CompanyUserReloadCustomerTransferExpanderPlugin | Reloads a company user if it's already set in `CustomerTransfer`. | None | Spryker\Zed\CompanyUser\Communication\Plugin\Customer | | CompanyUserAccessTokenOauthUserProviderPlugin | Provides a user transfer by a company user ID. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | CompanyUserAccessTokenOauthGrantTypeConfigurationProviderPlugin | Provides the configuration of `CompanyUser` `GrantType`. | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Oauth | | OauthCompanyUserInstallerPlugin| Creates new OAuth scope—adds `company_user scope` to the `spy_oauth_scope` table.) | None | Spryker\Zed\OauthCompanyUser\Communication\Plugin\Installer | @@ -729,7 +729,7 @@ 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,"You can not select this company user, it's 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 customer_page.error.customer_already_logged_in,Customer already logged in.,en_US customer_page.error.customer_already_logged_in,Der Kunde ist bereits eingeloggt.,de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-configurable-bundle-feature.md index f939944713..b1d63c153f 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-configurable-bundle-feature.md @@ -612,7 +612,7 @@ class ConfigurableBundlePageSearchConfig extends SprykerConfigurableBundlePageSe * from `spy_configurable_bundle_template_page_search` table to Elasticsearch 4. Create or edit a configurable bundle template or template slot through ORM. - Make sure it is exported to Redis or Elasticsearch accordingly. + Make sure it's exported to Redis or Elasticsearch accordingly. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | --- | --- | --- | diff --git a/_includes/pbc/all/install-features/202410.0/install-the-customer-access-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-customer-access-feature.md index 1d3ce1cb6f..4019eb1feb 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-customer-access-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-customer-access-feature.md @@ -170,7 +170,7 @@ class EventDependencyProvider extends SprykerEventDependencyProvider {% info_block warningBox "Verification" %} -Make sure that when a customer access rule is created, updated, or deleted, it is exported (or removed) to Redis. +Make sure that when a customer access rule is created, updated, or deleted, it's exported (or removed) to Redis. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |-------------------------------------|------------------------------------| diff --git a/_includes/pbc/all/install-features/202410.0/install-the-discontinued-products-product-labels-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-discontinued-products-product-labels-feature.md index 3528d1a6f7..6469c8e033 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-discontinued-products-product-labels-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-discontinued-products-product-labels-feature.md @@ -79,6 +79,6 @@ class ProductLabelDependencyProvider extends SprykerProductLabelDependencyProvid {% info_block warningBox "Verification" %} -Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it is assigned. +Ensure that, on the Storefront, the Discontinued product label is displayed on the *Catalog* and *Product Details* pages for all the products to which it's assigned. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md index 10670f8161..f68a55814c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md @@ -171,7 +171,7 @@ Enable the following behaviors by registering the plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------------------------------------------------------------------------------| -| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | +| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit's deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | | MerchantRelationRequestCompanyUserPreDeletePlugin | When a company user is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyUser | | MerchantRelationRequestStatusChangeMailTypeBuilderPlugin | Builds `MailTransfer` with the data for the merchant relation request status change email. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\Mail | | StatusChangeCompanyUserNotificationMerchantRelationshipRequestPostUpdatePlugin | Sends a status change notification email to the company user who initiated the request to the merchant. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\MerchantRelationRequest | @@ -204,7 +204,7 @@ class CompanyBusinessUnitDependencyProvider extends SprykerCompanyBusinessUnitDe {% info_block warningBox "Verification" %} -Make sure that, when a company business unit is deleted, all related merchant relation requests are deleted too. +Make sure that, when a company business unit's deleted, all related merchant relation requests are deleted too. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md index 2584aa3c87..b910894bb1 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% 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 Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md index 1fa6fe44de..3fb3021400 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit is displayed. +- The correct sales unit's displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-feature.md index b2d3beeefd..c9cafadc2b 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-feature.md @@ -210,7 +210,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency {% info_block warningBox "Verification" %} -Ensure that, when a product bundle is created, updated, or deleted, it is exported to or removed from Redis. +Ensure that, when a product bundle is created, updated, or deleted, it's exported to or removed from Redis. Storage type: Redis Target entity: Product Bundle diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-category-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-category-feature.md index f528dd0a1b..55b924d04d 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-category-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-category-feature.md @@ -345,7 +345,7 @@ class EventBehaviorDependencyProvider extends SprykerEventBehaviorDependencyProv {% info_block warningBox "Verification" %} -When a category product assignment is changed through ORM, make sure it is exported to Redis. +When a category product assignment is changed through ORM, make sure it's exported to Redis. | STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | |--------------|-------------------------|--------------------------------------| diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-comparison-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-comparison-feature.md index 40a1fa1828..3f0dd8d3da 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-comparison-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-comparison-feature.md @@ -54,7 +54,7 @@ product_comparison_page.list_link,Artikelvergleich,de_DE product_comparison_page.list_link,Product comparison,en_US product_comparison_page.add_to_comparison.success,Zum Vergleich hinzugefügt,de_DE product_comparison_page.add_to_comparison.success,Added to comparison,en_US -product_comparison_page.add_to_comparison.error.max,Das Limit ist bereits erreicht,de_DE +product_comparison_page.add_to_comparison.error.max,Das Limit'st bereits erreicht,de_DE product_comparison_page.add_to_comparison.error.max,The limit has already been reached,en_US product_comparison_page.removed_from_the_list,Artikel wurde aus der Vergleichsliste entfernt.,de_DE product_comparison_page.removed_from_the_list,Product was removed from the comparison list.,en_US diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-images-configurable-bundle-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-images-configurable-bundle-feature.md index 92e36980ad..23db51e003 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-images-configurable-bundle-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-images-configurable-bundle-feature.md @@ -153,7 +153,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency 1. Make sure that when you added some data to tables `spy_product_image_set`, `spy_product_image_set_to_product_image`, `spy_product_image` with `fk_resource_configurable_bundle_template` and run `console trigger:event -r configurable_bundle_template_image` command, the changes are reflected in the `spy_configurable_bundle_template_image_storage` table. 2. Make sure that after step #4 or after `console sync:data configurable_bundle_template_image` command execution, the data s added to the `spy_configurable_bundle_template_image_storage` table and Redis. -3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it is exported to Redis accordingly. +3. Make sure that when a product image set with the `fk_resource_configurable_bundle_template` is created or edited through ORM, it's exported to Redis accordingly. 4. Ensure that Elasticsearch document has been expanded by images property. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md index 88112f3806..e141d4e44e 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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.| +|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's 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.| +|is_default|mandatory|integer|1|Controls if this sales unit's 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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit's available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-offer-service-points-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-offer-service-points-feature.md index 3648f5f66c..f111df9818 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-offer-service-points-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-offer-service-points-feature.md @@ -464,7 +464,7 @@ Make sure that the `product-offer-service` synchronization plugin works correctl 2. Run the `console sync:data -r product_offer_service` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_service:{store}:{product_offer_reference}` mask. -Make sure when a product offer service is created via DataImport, it is exported to Redis accordingly. +Make sure when a product offer service is created via DataImport, it's exported to Redis accordingly. Make sure that, in Redis, data is displayed in the following format: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-offer-shipment-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-offer-shipment-feature.md index ea9933eab9..81c6f1883c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-offer-shipment-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-offer-shipment-feature.md @@ -336,7 +336,7 @@ Make sure that `product-offer-shipment-type` synchronization plugin works correc 2. Run the `console sync:data -r product_offer_shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:product_offer_shipment_type:{store}:{product_offer_reference}` mask. -Make sure that when a product offer shipment type relation is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a product offer shipment type relation is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-sets-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-sets-feature.md index c9e1c5340f..64f01d6aca 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-sets-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-sets-feature.md @@ -117,7 +117,7 @@ Implement an installer in your project to put products together in sets represen ### Listing products sets on the Storefront -The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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. +The KV storage and Elasticsearch should by now contain some product sets you can display on the Storefront. By default, the exported documents in Search 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's possible to implement the same features with a custom implementation. For a 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 on the Storefront. The results are sorted in descending order based on the product sets' weight attributes. diff --git a/_includes/pbc/all/install-features/202410.0/install-the-quotation-process-approval-process-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-quotation-process-approval-process-feature.md index a840cd76dc..40d9b38804 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-quotation-process-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-quotation-process-approval-process-feature.md @@ -22,7 +22,7 @@ Register the following plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---|---|---|---| | QuoteApprovalQuoteRequestQuoteCheckPlugin | Checks if the "Request For Quote" button should be shown on the cart page or not. | None | Spryker\Client\QuoteApproval\Plugin\QuoteRequest | -| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it is in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | +| QuoteRequestQuoteApprovalUnlockPreCheckPlugin | Prevents quote unlock by approval process when it's in quotation process. | None | Spryker\Zed\QuoteRequest\Communication\Plugin\QuoteApproval | | QuoteApprovalQuoteRequestPreCreateCheckPlugin | Checks if the quote doesn't have the status `waiting`. | None | Spryker\Zed\QuoteApproval\Communication\Plugin\QuoteRequest | **src/Pyz/Client/QuoteRequest/QuoteRequestDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md index a374116cb9..4a7d2a47b5 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US @@ -1075,7 +1075,7 @@ Verify the `service-point` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that, when a service point is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that, when a service point is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```yaml @@ -1148,7 +1148,7 @@ Verify the `service-type` synchronization plugin works correctly: {% info_block warningBox "Verification" %} -* Make sure that when a service type is created or edited through BAPI, it is exported to Redis accordingly. +* Make sure that when a service type is created or edited through BAPI, it's exported to Redis accordingly. * Make sure that, in Redis, data is displayed in the following format: ```json diff --git a/_includes/pbc/all/install-features/202410.0/install-the-shipment-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-shipment-feature.md index ba4e639fd1..31b67756ce 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-shipment-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-shipment-feature.md @@ -976,7 +976,7 @@ Make sure that `shipment-type` synchronization plugin works correctly: 2. Run the `console sync:data -r shipment_type` command. 3. Make sure that, in your system, storage entries are displayed with the `kv:shipment_type:{store}:{shipment_type_id}` mask. -Make sure that when a shipment type is created or edited through BAPI, it is exported to Redis accordingly. +Make sure that when a shipment type is created or edited through BAPI, it's exported to Redis accordingly. In Redis, make sure data is represented in the following format: ```json diff --git a/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md index 04be712979..9f75580e0b 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md @@ -1139,7 +1139,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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.empty,Zurzeit'st 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 diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-inventory-management-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-inventory-management-feature.md index 4da32209f4..e84bf35f3a 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-inventory-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-inventory-management-feature.md @@ -612,7 +612,7 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency Make sure the following actions take place as expected: * The command `console sync:data merchant_profile` exports data from the `spy_product_offer_availability_storage` table to Redis. -* When a product offer availability entity gets created or updated through ORM, it is exported to Redis accordingly. +* When a product offer availability entity gets created or updated through ORM, it's exported to Redis accordingly. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-merchant-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-merchant-feature.md index 3dcc6895d6..d4da2ab1d1 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-merchant-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-merchant-feature.md @@ -728,17 +728,17 @@ To import data follow the steps in the following sections. ```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 allow us to 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 allow us to 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 +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 allow us to 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's not obligatory. To meet the withdrawal deadline, it's 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 ``` diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-offer-cart-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-offer-cart-feature.md index ee34358318..9ce7e3141e 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-offer-cart-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-offer-cart-feature.md @@ -84,7 +84,7 @@ class CartDependencyProvider extends SprykerCartDependencyProvider 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. +Make sure that it's only possible to have items in cart where the product offer reference belongs to the correct concrete product. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-options-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-options-feature.md index 406fbea6c4..07d625a9cd 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-options-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-product-options-feature.md @@ -372,7 +372,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider Make sure the following is true: * Merchants can create product option groups and values in the Merchant Portal. -* Merchant product option information is shown on a product details page when it is approved and active. +* Merchant product option information is shown on a product details page when it's approved and active. * Merchant product option information is displayed in the cart, checkout, and user account. * Merchant product options are a part of the marketplace or merchant order, and all totals are calculated correctly. diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-return-management-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-return-management-feature.md index 0460b1b503..38200ac77d 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-return-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-marketplace-return-management-feature.md @@ -835,7 +835,7 @@ Make sure that when you create and process a return for merchant order items, it | MARKETPLACE SM | DEFAULT MERCHANT SM | MAIN MERCHANT SM | | --- | ---| --- | | Used by an operator | Used by a third-party merchant. | Used by a 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 +| start-return (can be started by entering in the Return Flow; it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's not manually executable as a button) > waiting for return | start-return (can be started by entering in the Return Flow, it's 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 diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-opening-hours-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-opening-hours-feature.md index 7ffc72236c..04cc69a554 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-opening-hours-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-opening-hours-feature.md @@ -274,7 +274,7 @@ class MerchantOpeningHoursStorageConfig extends SprykerMerchantOpeningHoursStora 1. Make sure that after step 1 the command `console sync:data merchant_opening_hours` exports data from the `spy_merchant_opening_hours_storage` table to Redis. -2. Make sure that when merchant opening hours entities get created or updated through ORM, it is exported to Redis accordingly. +2. Make sure that when merchant opening hours entities get created or updated through ORM, it's exported to Redis accordingly. | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | | ---------------- | ----------------- | diff --git a/_includes/pbc/all/install-features/202410.0/unified-commerce/install-the-warehouse-picking-product-feature.md b/_includes/pbc/all/install-features/202410.0/unified-commerce/install-the-warehouse-picking-product-feature.md index 79e4b8f996..ed1a87d72f 100644 --- a/_includes/pbc/all/install-features/202410.0/unified-commerce/install-the-warehouse-picking-product-feature.md +++ b/_includes/pbc/all/install-features/202410.0/unified-commerce/install-the-warehouse-picking-product-feature.md @@ -153,7 +153,7 @@ Make sure the `concrete-products` and `concrete-product-image-sets` resources ar "is_active": true }, "name": "Sony SmartWatch 3", - "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit ist, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", + "description": "Gear S2 X Atelier Mendini In einer wunderbaren Partnerschaft bringt Alessandro Mendini seinen Geschmack, Humor und Farbsinn in die Gestaltung der Gear S2 ein. Das Ergebnis ist eine Reihe von Zifferblättern und Armbändern, die Ihren persönlichen Stil zum Ausdruck bringen. Die wesentlichen Smartphone-Funktionen sind mit einer einfachen Drehung an der Gear S2 verfügbar. Drehen Sie leicht an der Blende, um lange E-Mails zu durchblättern, eine Karte zu vergrössern oder bei der Musikwiedergabe ein Stück zu überspringen. Mit jeder Drehung wird das Leben noch interessanter und bunter. Mit der Gear S2 können Sie sich sehr leicht um Ihre Gesundheit kümmern. Verfolgen Sie Ihre täglichen Aktivitäten, Ihren Puls und Ihren Wasserkonsum verglichen mit Ihrem Koffeinkonsum. Bleiben Sie fit mit zeitgerechten motivierenden Botschaften. Bleiben Sie auf dem Laufenden und fit. Und wenn es Zeit'st, die Smartwatch wieder aufzuladen, stellen Sie sie einfach auf eine drahtlose Ladestation.", "isSearchable": true, "attributes": { "color": "Weiß" diff --git a/_includes/pbc/all/install-glue-api/202311.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md b/_includes/pbc/all/install-glue-api/202311.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md index 10bbcf6cd4..c6384f156d 100644 --- a/_includes/pbc/all/install-glue-api/202311.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md +++ b/_includes/pbc/all/install-glue-api/202311.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md @@ -217,7 +217,7 @@ Response sample: "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 allow us to 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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/_includes/pbc/all/install-glue-api/202404.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md b/_includes/pbc/all/install-glue-api/202404.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md index 10bbcf6cd4..c6384f156d 100644 --- a/_includes/pbc/all/install-glue-api/202404.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md +++ b/_includes/pbc/all/install-glue-api/202404.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md @@ -217,7 +217,7 @@ Response sample: "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 allow us to 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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/_includes/pbc/all/install-glue-api/202410.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md b/_includes/pbc/all/install-glue-api/202410.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md index 10bbcf6cd4..c6384f156d 100644 --- a/_includes/pbc/all/install-glue-api/202410.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md +++ b/_includes/pbc/all/install-glue-api/202410.0/marketplace/install-the-marketplace-shopping-lists-glue-api.md @@ -217,7 +217,7 @@ Response sample: "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 allow us to 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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-calculation-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-calculation-module.md index 145f5e1635..de8a609b5d 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-calculation-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-calculation-module.md @@ -351,7 +351,7 @@ After this, when you read an order using `SalesFacade::getOrderByIdSalesOrder()` {% info_block errorBox %} -The Sales module does not depend on the `SalesAggregator` anymore. Therefore, you need to remove the `/sales-aggregator/sales/list` from `\Pyz\Zed\Sales\SalesConfig::getSalesDetailExternalBlocksUrls` as it is no longer in use. Totals were moved to Sales to the template `Spryker/Zed/Sales/Presentation/Detail/boxes/totals.twig` available in Sales version >= 6.\*. +The Sales module does not depend on the `SalesAggregator` anymore. Therefore, you need to remove the `/sales-aggregator/sales/list` from `\Pyz\Zed\Sales\SalesConfig::getSalesDetailExternalBlocksUrls` as it's no longer in use. Totals were moved to Sales to the template `Spryker/Zed/Sales/Presentation/Detail/boxes/totals.twig` available in Sales version >= 6.\*. {% endinfo_block %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-categorypagesearch-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-categorypagesearch-module.md index b8cf2b04f6..e35941d8cc 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-categorypagesearch-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-categorypagesearch-module.md @@ -230,7 +230,7 @@ To upgrade to the new version of the module, do the following: composer update spryker/category-page-search ``` -2. Remove deprecated plugin usages listed below (in case it is used) from `Pyz\Zed\Search\SearchDependencyProvider`: +2. Remove deprecated plugin usages listed below (in case it's used) from `Pyz\Zed\Search\SearchDependencyProvider`: ```bash Spryker\Zed\CategoryPageSearch\Communication\Plugin\Search\CategoryNodeDataPageMapBuilder diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-collector-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-collector-module.md index dd269ea395..0b5493b9d6 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-collector-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-collector-module.md @@ -15,7 +15,7 @@ The following classes were altered to support the multi-store concept: ### Collector multi-store concept overview -1. The primary change affects the `AbstractDatabaseCollector::processBatchForExport()`. Previously this method was responsible for simply exporting all "touch active" touched entities to Storage or Search. In multi-store environment, a multi-store entity does not necessary exist in all stores even though it is "touch active" in all stores. Moreover, an exported "touch active" multi-store entity can become invalid if it is unassigned from a specific store. To achieve the expected behavior, the `AbstractCollector::isStorable()` method is introduced. Whenever this method returns with `true`, the subject entity is considered to be available (in the current store) and will be exported. On the other hand, the `false` return value that the entity is not available (in the current store) and either not should not be exported or should be deleted from Storage or Search if it has already been exported previously. +1. The primary change affects the `AbstractDatabaseCollector::processBatchForExport()`. Previously this method was responsible for simply exporting all "touch active" touched entities to Storage or Search. In multi-store environment, a multi-store entity does not necessary exist in all stores even though it's "touch active" in all stores. Moreover, an exported "touch active" multi-store entity can become invalid if it's unassigned from a specific store. To achieve the expected behavior, the `AbstractCollector::isStorable()` method is introduced. Whenever this method returns with `true`, the subject entity is considered to be available (in the current store) and will be exported. On the other hand, the `false` return value that the entity is not available (in the current store) and either not should not be exported or should be deleted from Storage or Search if it has already been exported previously. {% info_block warningBox %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-companyuser-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-companyuser-module.md index b8b697e5cc..876eb4fa51 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-companyuser-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-companyuser-module.md @@ -15,7 +15,7 @@ To upgrade to the new version of the module, do the following: ALTER TABLE "spy_company_user" ADD "is_active" BOOLEAN DEFAULT 't'; ``` -As a result, all existing company users will receive a new column `is_active`. By default, the value is `true` and it is `required`. +As a result, all existing company users will receive a new column `is_active`. By default, the value is `true` and it's `required`. 2. Rebuild `Propel2` models: diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-environment-configuration-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-environment-configuration-module.md index 942e66cb92..824256d574 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-environment-configuration-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-environment-configuration-module.md @@ -1,6 +1,6 @@ -The environment configuration was restructured to solve a couple of inconsistencies and dependencies within the configuration itself. To untangle some of the configuration options it was necessary to introduce a few new configuration constants. Although the Spryker core should be fully backward compatible it is advised to update project implementations to make use of the new configuration options. +The environment configuration was restructured to solve a couple of inconsistencies and dependencies within the configuration itself. To untangle some of the configuration options it was necessary to introduce a few new configuration constants. Although the Spryker core should be fully backward compatible it's advised to update project implementations to make use of the new configuration options. Along with the introduction of the new configuration constants, a couple of unused ones have been marked as deprecated. @@ -69,7 +69,7 @@ $config[ApplicationConstants::BASE_URL_ZED] = sprintf( ``` ### List of the new configuration diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-oms-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-oms-module.md index afca1dbb26..e8ad2781c4 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-oms-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-oms-module.md @@ -148,7 +148,7 @@ CREATE TABLE "spy_oms_product_reservation_last_exported_version" ## Upgrading from version 6.* to version 7.* -In version 7, OMS no longer uses `SalesAggregator` to calculate totals; it is now done via the `Calculator` module. Therefore, there is no more dependency with `SalesAggregator`. +In version 7, OMS no longer uses `SalesAggregator` to calculate totals; it's now done via the `Calculator` module. Therefore, there is no more dependency with `SalesAggregator`. The `Spryker\Zed\Oms\Business\Mail\MailHandler` dependency to `SalesAggregatorFacade` was replaced with `SalesFacade`. To learn how to migrate to the new structure, see the [Upgrading from version 3.* to version 4.*](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-calculation-module.html#upgrading-from-version-3-to-version-4) section in *Upgrade the Calculation module*. diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-product-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-product-module.md index 2a863f3812..9320fddd55 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-product-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-product-module.md @@ -131,7 +131,7 @@ class ProductCollector extends AbstractSearchPdoCollector Collectors should now be able to export abstract product data per store both for Storage and Search. -10. `Facade/ProductToUrlInterface::hasUrl()` method is removed because it is not used within the module. Please check your code if you have customized calls to it. +10. `Facade/ProductToUrlInterface::hasUrl()` method is removed because it's not used within the module. Please check your code if you have customized calls to it. 11. `ProductAbstractManager` internal class was amended to handle `abstract product-store` relation, take a look if you have customized it. Additionally you might want to update the Product Information Management (PIM) Zed Admin UI to manage abstract products and their store configuration. You can find further information about multi-store products here, and [Upgrade the ProductManagement module](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productmanagement-module.html). diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-productconfiguration-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-productconfiguration-module.md index fafe2ad815..434b02113c 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-productconfiguration-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-productconfiguration-module.md @@ -6,7 +6,7 @@ Version 1.0.0 of the `ProductConfiguration` module introduces the following backward incompatible changes: -* Adjusted `ProductConfigurationFacade::getProductConfigurationCollection()` so it is now getting product configurations by `ProductConfigurationCriteria` instead of `ProductConfigurationFilterTransfer`. +* Adjusted `ProductConfigurationFacade::getProductConfigurationCollection()` so it's now getting product configurations by `ProductConfigurationCriteria` instead of `ProductConfigurationFilterTransfer`. * Introduced the `spy_product_configuration.uuid` field to allow unique identifier. * Introduced the `spy_product_configuration-unique-uuid` unique index. diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-productlistgui-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-productlistgui-module.md index 08e7ffe860..c14ff69414 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-productlistgui-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-productlistgui-module.md @@ -59,7 +59,7 @@ Other changes are listed below: * Replaced `ProductListFacade::deleteProductList()` usage with `ProductListFacade::removeProductList()` in `DeleteController::confirmAction()`. * Introduced extension point to inject buttons for the product list table. * Adjusted UI to see the owner domain entities for each product list. -* Adjusted deletion logic so that it is not possible to delete a product list if it has any owner domain entity. +* Adjusted deletion logic so that it's not possible to delete a product list if it has any owner domain entity. * Introduced extension point to define the ownership over product list by another domain entity. * Deprecated `ProductListOwnerTypeFormExpanderPluginInterface` to allow multiple owners concept. diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-productoption-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-productoption-module.md index 6d156db943..3f3f8c455a 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-productoption-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-productoption-module.md @@ -47,7 +47,7 @@ class ProductOptionDependencyProvider extends SprykerProductOptionDependencyProv } ``` -11. Migrate prices from `spy_product_option_value.price` field to `spy_product_option_value_price` table. Each `spy_product_option_value` row must have at least 1 `spy_product_option_value_price` row connected. A `ProductOptionValue` entity can have multiple `ProductOptionValuePrices` connected. You can define different gross/net price per currency per store by populating the `fk_currency` and `fk_store` fields accordingly. When either `gross_price` or `net_price` database field is left as `null`, that option will not be available for customers in that exact currency, store, price mode trio. If you set a price field as 0, the option is available for customers and it means it is free of charge. +11. Migrate prices from `spy_product_option_value.price` field to `spy_product_option_value_price` table. Each `spy_product_option_value` row must have at least 1 `spy_product_option_value_price` row connected. A `ProductOptionValue` entity can have multiple `ProductOptionValuePrices` connected. You can define different gross/net price per currency per store by populating the `fk_currency` and `fk_store` fields accordingly. When either `gross_price` or `net_price` database field is left as `null`, that option will not be available for customers in that exact currency, store, price mode trio. If you set a price field as 0, the option is available for customers and it means it's free of charge.
Example of the migration diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-search-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-search-module.md index b6790111d8..c3f4868a6a 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-search-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-search-module.md @@ -158,7 +158,7 @@ you have to merge the latest changes with the core. Especially this is important * `\Spryker\Client\Search\Plugin\Config\SortConfigBuilder` now looks for configuration by configuration field name. **Yves changes:** -The `UrlGenerator` was incorrectly setting the request parameters, therefore now it is necessary to change processFacetSearchResultTransfer and processRangeSearchResultTransfer as shown in the code sample below. +The `UrlGenerator` was incorrectly setting the request parameters, therefore now it's necessary to change processFacetSearchResultTransfer and processRangeSearchResultTransfer as shown in the code sample below. **Code sample:** diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-transfer-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-transfer-module.md index 39891a3964..73cea8d1c9 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-transfer-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-transfer-module.md @@ -2,7 +2,7 @@ ## Upgrading from version 2.* to version 3.* -When upgrading to the new major version of the `Transfer` module, it is necessary to make sure that everywhere the `$foo->fromArray($bar->toArray())` statement is used and the types are matching. +When upgrading to the new major version of the `Transfer` module, it's necessary to make sure that everywhere the `$foo->fromArray($bar->toArray())` statement is used and the types are matching. From now on we are no longer silently ignoring when you try to set a string to an array field and an exception is getting thrown instead. diff --git a/_templates/best-practices-file-template.md b/_templates/best-practices-file-template.md index cae86b1756..be9ee78e4d 100644 --- a/_templates/best-practices-file-template.md +++ b/_templates/best-practices-file-template.md @@ -16,7 +16,7 @@ template: best-practices-guide-template 1. Describe a possible use case and what a customer might want to achieve. For example: Suppose you are a clothing retailer and often get items returned within the 14-days return window. You want to automate the return process as much as possible so that minimum intervention of your employees is required. 2. Suggest the solution for this scenario. -3. Describe the advantages of the suggested solution and in what cases it is best to apply it. --> +3. Describe the advantages of the suggested solution and in what cases it's best to apply it. --> ### Scenario 2: {Title} diff --git a/_templates/feature-installation-guide-template.md b/_templates/feature-installation-guide-template.md index 0ae6bf0548..393831eb5e 100644 --- a/_templates/feature-installation-guide-template.md +++ b/_templates/feature-installation-guide-template.md @@ -244,9 +244,9 @@ Configure tables to be published and synchronized to the Storage on create, edit **Verification** +Usually, it's technically impossible to verify the current step before the [Import data](#import-data) step. In such a case, move the verification of this step there. --> -Make sure that, when an {entity} is created, updated or deleted, it is exported to or removed from Redis and Elasticsearch. +Make sure that, when an {entity} is created, updated or deleted, it's exported to or removed from Redis and Elasticsearch. | STORAGE TYPE | TARGET ENTITY | EXPECTED DATA IDENTIFIER EXAMPLE | EXPECTED DATA FRAGMENT EXAMPLE | | ------------ | ------------- | -------------------------------- | ---------------------------------- | @@ -276,9 +276,9 @@ Configure tables to be published to the {table name} table and synchronized to t **Verification** +Usually, it's technically impossible to verify the current step before the [Import data](#import-data) step. In such a case, move the verification of this step there. --> -Make sure that, when an {entity} is created, updated or deleted, it is exported to or removed from Redis and Elasticsearch. +Make sure that, when an {entity} is created, updated or deleted, it's exported to or removed from Redis and Elasticsearch. | STORAGE TYPE | TARGET ENTITY | EXPECTED DATA IDENTIFIER EXAMPLE | EXPECTED DATA FRAGMENT EXAMPLE | | ------------ | ------------- | -------------------------------- | ---------------------------------- | @@ -309,9 +309,9 @@ Install the following plugins: **Verification** +Usually, it's technically impossible to verify the current step before the [Import data](#import-data) step. In such a case, move the verification of this step there. --> -Make sure that, when an {entity} is created, updated or deleted, it is exported to or removed from Redis and Elasticsearch. +Make sure that, when an {entity} is created, updated or deleted, it's exported to or removed from Redis and Elasticsearch. | STORAGE TYPE | TARGET ENTITY | EXPECTED DATA IDENTIFIER EXAMPLE | EXPECTED DATA FRAGMENT EXAMPLE | | ------------ | ------------- | -------------------------------- | ---------------------------------- | diff --git a/_templates/syntax-and-formatting-rules.md b/_templates/syntax-and-formatting-rules.md index 758e1aed40..4390ed13be 100644 --- a/_templates/syntax-and-formatting-rules.md +++ b/_templates/syntax-and-formatting-rules.md @@ -1,4 +1,4 @@ -We use the default Markdown syntax, however, in some cases, it is not enough or is not processed correctly. For such cases, the rules described here apply. +We use the default Markdown syntax, however, in some cases, it's not enough or is not processed correctly. For such cases, the rules described here apply. ## Code samples in dropdowns For code samples with more than 38 lines, use dropdowns with this syntax: diff --git a/docs/about/all/about-spryker.md b/docs/about/all/about-spryker.md index b908aa21ce..d599c7393f 100644 --- a/docs/about/all/about-spryker.md +++ b/docs/about/all/about-spryker.md @@ -65,7 +65,7 @@ Spryker is split into four different layers: * We confine long and resource-intensive processes to the business and persistence layers, which ensures high performance on the presentation layer. The presentation side is separated from the rest of the OS to make sure that only lean processes are executed there. Anything that can impact the purchase process is offloaded to an area that does not impact the performance. * Separate frontend and backend means developers can work in parallel, allowing for faster implementation, testing, and better optimization—all for less internal cost. * Because your commercial offering is not dependent on a single channel, you can focus your effort on growth and improvement, rather than on solutions, extensions, and sometimes workarounds to make things work. -* Essential information is not tied up with the presentation. You can easily swap out, extend, replace this information, as well as change the ways it is presented. +* Essential information is not tied up with the presentation. You can easily swap out, extend, replace this information, as well as change the ways it's presented. ## Managed cloud platform diff --git a/docs/about/all/about-the-docs/contribute-to-the-docs/edit-the-docs-locally.md b/docs/about/all/about-the-docs/contribute-to-the-docs/edit-the-docs-locally.md index 824672b51f..55f62afb21 100644 --- a/docs/about/all/about-the-docs/contribute-to-the-docs/edit-the-docs-locally.md +++ b/docs/about/all/about-the-docs/contribute-to-the-docs/edit-the-docs-locally.md @@ -67,7 +67,7 @@ At this point, you are most likely to know which document you want to edit. To f 5. Below the list of edited files, enter the name and description of your changes. The name of your fist commit will be used as the pull request's name. 6. To add your changes to the branch, click **Commit to {BRANCH_NAME}**. 7. To publish the changes on GitHub, click **Push origin**. - If you are editing in several sessions, it is good practice to commit and push after each session. If something happens to the changes on your machine, they will be safe on GitHub, and you will be able to keep working on them. + If you are editing in several sessions, it's good practice to commit and push after each session. If something happens to the changes on your machine, they will be safe on GitHub, and you will be able to keep working on them.
diff --git a/docs/about/all/about-the-docs/contribute-to-the-docs/merge-docs-pull-requests.md b/docs/about/all/about-the-docs/contribute-to-the-docs/merge-docs-pull-requests.md index 4889bedb6a..c965b8f5d6 100644 --- a/docs/about/all/about-the-docs/contribute-to-the-docs/merge-docs-pull-requests.md +++ b/docs/about/all/about-the-docs/contribute-to-the-docs/merge-docs-pull-requests.md @@ -61,7 +61,7 @@ For fixing internal links, you need to understand their structure: * Non-versioned link example: `/docs/about/all/about-the-docs/run-the-docs-locally.html`. * Versioned link example: `/docs/dg/dev/frontend-development/{{site.version}}/create-angular-modules.html` -If you have a broken link, the easiest way to fix it is as follows: +If you have a broken link, the easiest way to fix it's as follows: 1. Copy the relative path to the target document, starting from `docs`: `docs/dg/dev/frontend-development/202404.0/create-angular-modules.md`. 2. Add a slash in the beginning: `/docs/dg/dev/frontend-development/202404.0/create-angular-modules.md`. 3. Replace `.md` with `.html`: `/docs/dg/dev/frontend-development/202404.0/create-angular-modules.html`. diff --git a/docs/about/all/master-suite.md b/docs/about/all/master-suite.md index 63d28b82c8..a019c9f7bf 100644 --- a/docs/about/all/master-suite.md +++ b/docs/about/all/master-suite.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/user/intro-to-spryker/master-suite.html --- -Master Suite represents a collection of both [B2B](/docs/about/all/b2b-suite.html) and [B2C](/docs/about/all/b2c-suite.html) modules. However, unlike B2B and B2C Demo Shops, the code in the [Master Suite project repository](https://github.com/spryker-shop/suite) is released as soon as it is ready. If you have an implementation that combines B2B and B2C, you can benefit from the full range of SCOS functionality. +Master Suite represents a collection of both [B2B](/docs/about/all/b2b-suite.html) and [B2C](/docs/about/all/b2c-suite.html) modules. However, unlike B2B and B2C Demo Shops, the code in the [Master Suite project repository](https://github.com/spryker-shop/suite) is released as soon as it's ready. If you have an implementation that combines B2B and B2C, you can benefit from the full range of SCOS functionality. Or if you want to take a single feature or module from the larger SCOS scope, you can take single modules from the following GitHub repositories: * [https://github.com/spryker-shop/*](https://github.com/spryker-shop/) diff --git a/docs/about/all/releases/security-release-notes-202302.0.md b/docs/about/all/releases/security-release-notes-202302.0.md index 0d4168777f..4c9c37f087 100644 --- a/docs/about/all/releases/security-release-notes-202302.0.md +++ b/docs/about/all/releases/security-release-notes-202302.0.md @@ -32,7 +32,7 @@ To implement a fix for this vulnerability, update the sales module. {% info_block infoBox "Recommended upgrade is 11.36.2" %} -Spryker recommends upgrading to 11.36.2 because it is the continuous latest stable version. However, because of the increased migration effort caused by 11.31.0 (Propel timestamp type fix), 11.33.0 (PHP8.0), and 11.36.0 (Symfony 6), you might need to consider upgrading to the nearest possible patch (see the following details). +Spryker recommends upgrading to 11.36.2 because it's the continuous latest stable version. However, because of the increased migration effort caused by 11.31.0 (Propel timestamp type fix), 11.33.0 (PHP8.0), and 11.36.0 (Symfony 6), you might need to consider upgrading to the nearest possible patch (see the following details). {% endinfo_block %} diff --git a/docs/about/all/spryker-marketplace/marketplace-concept.md b/docs/about/all/spryker-marketplace/marketplace-concept.md index 35f715c7c1..293fc857b6 100644 --- a/docs/about/all/spryker-marketplace/marketplace-concept.md +++ b/docs/about/all/spryker-marketplace/marketplace-concept.md @@ -18,7 +18,7 @@ The Spryker Marketplace solution supports two major types of marketplace models: * *Enterprise Marketplace*: This type of marketplace is an organization with existing e-commerce operations, which lets third-party merchants sell through its platform to enrich offerings and stimulate growth. In such cases, both merchants and a Marketplace administrator act as sellers. -The Spryker Marketplace solution supports both B2C and B2B marketplaces. Besides, Spryker Marketplace is not a separate system. Instead, it is built as a set of extensions on top of Spryker Commerce OS, which makes upgrading to Marketplace straightforward and easy. +The Spryker Marketplace solution supports both B2C and B2B marketplaces. Besides, Spryker Marketplace is not a separate system. Instead, it's built as a set of extensions on top of Spryker Commerce OS, which makes upgrading to Marketplace straightforward and easy. ![Marketplace concept](https://spryker.s3.eu-central-1.amazonaws.com/docs/About/Marketplace/Marketplace+Concept/marketplace-concept.png) diff --git a/docs/about/all/support/gdpr-compliance-guidelines.md b/docs/about/all/support/gdpr-compliance-guidelines.md index 54e171d452..d4d19e4464 100644 --- a/docs/about/all/support/gdpr-compliance-guidelines.md +++ b/docs/about/all/support/gdpr-compliance-guidelines.md @@ -27,4 +27,4 @@ The following guidelines describe how to make your Spryker projects compliant in | Enable customers to withdraw consent. | Use the consent withdrawal feature for newsletter subscriptions. The *Delete Account* feature is shipped by default to handle data privacy. Without agreeing to terms, customers can't use the website. Add options to unsubscribe from newsletters and to delete email address and other personal data from the database. | The Delete Account feature is shipped by default. Take all other measures during the project implementation and before going live. | | Enable customers to get the copy of personal data in a readable format: PDF or text file. | Offer a *Copy of all data* feature, which provides information from all data sources: Spryker, CRM, log files, third-party applications. Spryker has a **User Account** page that shows the customer information: profile, orders, preferences. The information on this page can be saved as a PDF file and shared upon request. | The *User Accounts* feature is shipped by default. Take all other measures during the project implementation and before going live. | | Enable customers to delete personal data. | Use the Delete Account feature to anonymize customer information. Some information needs to be kept for other reasons: transactional information or order information for fiscal authorities. Review and establish an unsubscribe option that deletes the email address from the respective database. Add an unsubscribe link to email communication. | The *Delete Account* feature is shipped by default. Take all other measures during the project implementation and before going live. | -| Control third-party integration permissions and data collection | Offer an option to review and revoke access for third-party integrations, like social media and payment providers. Review the data shared with third parties and make sure it is reflected and represented in privacy policies and terms of service. For example, the IP address for the third-party payment provider integration. Check all existing Data Processing Agreements for validity. | During the project implementation and before going live. | +| Control third-party integration permissions and data collection | Offer an option to review and revoke access for third-party integrations, like social media and payment providers. Review the data shared with third parties and make sure it's reflected and represented in privacy policies and terms of service. For example, the IP address for the third-party payment provider integration. Check all existing Data Processing Agreements for validity. | During the project implementation and before going live. | diff --git a/docs/about/all/support/getting-the-most-out-of-spryker-support.md b/docs/about/all/support/getting-the-most-out-of-spryker-support.md index fac57a66d0..0c14e79344 100644 --- a/docs/about/all/support/getting-the-most-out-of-spryker-support.md +++ b/docs/about/all/support/getting-the-most-out-of-spryker-support.md @@ -60,7 +60,7 @@ Even though this is hard to achieve with a complex product like Spryker, we stri | INFORMATION | QUESTIONS THAT HELP YOU | EXPLANATION | | --- | --- | --- | | Prerequisites and steps to reproduce | What prerequisites must be met, so they can see the problem occures? Am I using Spryker Suite/B2B/B2C Demo Shop? Am I using Spryker hosting? What project-level adjustments have been made that might have an influence on the problem? What do they need to do, step by step, to arrive at the same point as me and see the error? | For a new issue, one of the first steps we do is trying to reproduce it in our latest version of Spryker. In order to do so quickly and targeted, we need clear, step-by-step instructions. Occasionally, we will ask you to provide your `composer.lock` file. This file also contains all the version information for all the components and models you are using and is very helpful in diagnosing more complex problems. It might seem tedious, but providing a good description of how we can reproduce your problem is the biggest time saver.| -| Expected behavior | What did I expect would happen if I executed the actions described above? | Sometimes, it is just not obvious enough that the outcome you expected and tell us helps us avoid misdiagnosing an issue or research in the wrong direction. | +| Expected behavior | What did I expect would happen if I executed the actions described above? | Sometimes, it's just not obvious enough that the outcome you expected and tell us helps us avoid misdiagnosing an issue or research in the wrong direction. | | Actual behavior | What was the unexpected thing that happened? Where there any error messages? What happened that should not have happened? | This is what we will look out for when we are reproducing your issue. Please be specific and precise and share error messages. | | Your contact details | Did I write my email address correctly? Is it ideally the one that we included in our SLA as a named contact? | It might sound strange, however, misspelled email addresses are almost impossible to detect from a support perspective and can immediately introduce a communication problem. | | The Company this issue applies to | Am I a Spryker partner, and the issue impacts a customer of mine? Or is this a Spryker-led project, and I am a direct customer of Spryker? | This information is important so that we can map the correct SLA for you and know exactly with whom to speak in Spryker to get more contextual information on your case. It makes a big difference for us, so please always include info that tells us who company impacted by the problem | diff --git a/docs/about/all/support/how-spryker-support-works.md b/docs/about/all/support/how-spryker-support-works.md index ecbac39f68..ac49eb50ba 100644 --- a/docs/about/all/support/how-spryker-support-works.md +++ b/docs/about/all/support/how-spryker-support-works.md @@ -46,7 +46,7 @@ By conducting an initial investigation on your end, you can help us speed up thi #### Security issues -To say that we take security issues seriously would be an understatement. The topic is so important to us, that when you raise a case with us that has a suspected impact on the security of our software or our infrastructure, it is escalated to our senior management and most senior engineering personnel. We believe it is better to deal with quite some false positives than to underestimate only one report. While we cannot guarantee certain resolution times here, you can see from our response that we take your case very seriously. If we discover a genuine security threat, we work with you to resolve it with the highest priority. +To say that we take security issues seriously would be an understatement. The topic is so important to us, that when you raise a case with us that has a suspected impact on the security of our software or our infrastructure, it's escalated to our senior management and most senior engineering personnel. We believe it's better to deal with quite some false positives than to underestimate only one report. While we cannot guarantee certain resolution times here, you can see from our response that we take your case very seriously. If we discover a genuine security threat, we work with you to resolve it with the highest priority. ### Customer Effort Score (CES) and Customer Satisfaction Score (CSS) Proven scores that we use to measure your experience with our support. diff --git a/docs/about/all/support/prioritzing-support-cases.md b/docs/about/all/support/prioritzing-support-cases.md index dcf24fd3a0..d37a7c886b 100644 --- a/docs/about/all/support/prioritzing-support-cases.md +++ b/docs/about/all/support/prioritzing-support-cases.md @@ -51,7 +51,7 @@ Priority is an internal attribute that we set for cases after having evaluated t * *Urgent*: urgent cases have the highest priority for us. Since there can only be a very limited number of urgent cases for us to be able to operate, we assign this priority only to the most severe cases (for example, Security Incidents or Infrastructure Outages). * *High*: high priority cases are dealt with priority if there are no urgent cases in the backlog, or not all support representatives are currently busy working on urgent cases. * *Medium*: most of the problem cases we receive are assigned `Medium` priority. They are dealt with if there are no urgent and high cases in the backlog or if enough free resources are available. -* *Low*: low priority cases are dealt with if there are no urgent and high priority cases in the Backlog or if a support representative thinks that the request can be dealt with very quickly or that they are working on a similar case already and it is beneficial to work on the related low priority case as well. +* *Low*: low priority cases are dealt with if there are no urgent and high priority cases in the Backlog or if a support representative thinks that the request can be dealt with very quickly or that they are working on a similar case already and it's beneficial to work on the related low priority case as well. You can see what priority your case was assigned to in the case detail view on the Support and Partner Portal. @@ -65,7 +65,7 @@ You can see what priority your case was assigned to in the case detail view on t We recently gave our partners and customers the option to specify desired solution times on request, change request, and problem cases. Emergency cases do not have this field, because they are always dealt with as soon as possible. ### Case types -The case type you choose to create an issue also determines how high it is prioritized initially. +The case type you choose to create an issue also determines how high it's prioritized initially. * *Request Cases* automatically receive low priority and are dealt with when there is time. * *Problem Cases* let you specify business impact and desired solution time. We assign a priority to this case after evaluating the information provided, the business impact specified, and the desired solution time. * *Emergency Cases* are reserved for severe outages with significant business impact. Emergency cases always receive the highest priority and can only be cases with business impact P1—Urgent. diff --git a/docs/about/all/support/project-level-and-core-level-fixes.md b/docs/about/all/support/project-level-and-core-level-fixes.md index ac1a5adf4b..9a54b85737 100644 --- a/docs/about/all/support/project-level-and-core-level-fixes.md +++ b/docs/about/all/support/project-level-and-core-level-fixes.md @@ -13,7 +13,7 @@ This document explains the differences between project and core level fixes to p ## Project-level fixes -Sometimes, it is important to react fast and provide an undemocratic solution to an urgent problem. This is where project-level fixes come into place. We use them to solve problems on a project level. If a reported problem is relatively simple but has a high business impact, we sometimes provide a patch. This patch might not run through the normal QA and review processes and has the singular purpose of solving a problem with high business impact as fast as possible and buying the time necessary to provide a proper solution. +Sometimes, it's important to react fast and provide an undemocratic solution to an urgent problem. This is where project-level fixes come into place. We use them to solve problems on a project level. If a reported problem is relatively simple but has a high business impact, we sometimes provide a patch. This patch might not run through the normal QA and review processes and has the singular purpose of solving a problem with high business impact as fast as possible and buying the time necessary to provide a proper solution. We also usually try to avoid project-level fixes where possible, because they do not make Spryker better for everyone and treat symptoms rather than solving the core issue. ## Core-level fixes diff --git a/docs/about/all/support/support-case-escalations.md b/docs/about/all/support/support-case-escalations.md index 439009622f..5c8bf37515 100644 --- a/docs/about/all/support/support-case-escalations.md +++ b/docs/about/all/support/support-case-escalations.md @@ -21,7 +21,7 @@ While this strategy might feel like the right thing to do (we need to do somethi ## How do we want to deal with escalations? -In Support, we acknowledge that we cannot always produce a satisfying result. We do not always get it right, and sometimes our hands might simply be tied. Escalations happen, and it is important for us to steer them into a constructive and orderly direction right away that ensures: +In Support, we acknowledge that we cannot always produce a satisfying result. We do not always get it right, and sometimes our hands might simply be tied. Escalations happen, and it's important for us to steer them into a constructive and orderly direction right away that ensures: 1. It is easy for a customer or partner to escalate an issue. 2. The customer's or partner's problem is evaluated by the right audience. 3. The stakeholders align quickly to find a feasible strategy going forward. @@ -36,7 +36,7 @@ The escalation process is designed in a way to create visibility for the right a `STARTED`. A customer or partner has created an emergency case. Internal stakeholders are informed and began evaluating the information provided. In cases where the Emergency Case option is misused, the Escalation is canceled, and the requester is informed about it. -`ACKNOWLEDGED`. If the escalation is valid, it is acknowledged by the support rep that takes care of the case. They do not inform internal stakeholders and see to it that a solution is developed. They also make sure to update the customer and partner at regular intervals on their progress. +`ACKNOWLEDGED`. If the escalation is valid, it's acknowledged by the support rep that takes care of the case. They do not inform internal stakeholders and see to it that a solution is developed. They also make sure to update the customer and partner at regular intervals on their progress. `SOLUTION PROPOSED`. Once the team has found a solution that either fixes the problem outright, or at least mitigates its impact, they propose a solution, and the partner and customer are asked to accept or reject the proposed solution. diff --git a/docs/about/all/support/support-ticket-statuses.md b/docs/about/all/support/support-ticket-statuses.md index e04376cc94..cd986a9558 100644 --- a/docs/about/all/support/support-ticket-statuses.md +++ b/docs/about/all/support/support-ticket-statuses.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/user/intro-to-spryker/support/understanding-ticket-status.html --- -When you report an issue, and we discover an underlying problem with Spryker, we create a Jira Bug Ticket. Then, this ticket is handed over to our development department, and our colleagues evaluate how to address the problem best and resolve it. After the issue is resolved, it is then released to our repositories. +When you report an issue, and we discover an underlying problem with Spryker, we create a Jira Bug Ticket. Then, this ticket is handed over to our development department, and our colleagues evaluate how to address the problem best and resolve it. After the issue is resolved, it's then released to our repositories. ## Status descriptions diff --git a/docs/about/all/support/understanding-slas.md b/docs/about/all/support/understanding-slas.md index ac98e23681..2c10dce7c3 100644 --- a/docs/about/all/support/understanding-slas.md +++ b/docs/about/all/support/understanding-slas.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/user/intro-to-spryker/support/understand-slas.html --- -Like any legal text, Service Level Agreements (SLAs) can be hard to understand for the uninitiated. We strive to keep our SLAs clear and comprehensive, but sometimes it is better to explain some core concepts more verbose. +Like any legal text, Service Level Agreements (SLAs) can be hard to understand for the uninitiated. We strive to keep our SLAs clear and comprehensive, but sometimes it's better to explain some core concepts more verbose. ## What we expect from you Fulfilling SLA is a two-way street, and we cannot achieve good results without you. The following is what we expect from our customers. @@ -17,7 +17,7 @@ Fulfilling SLA is a two-way street, and we cannot achieve good results without y ### Keeping Spryker environments up-to-date We generally expect our customers to keep their Spryker environment up to date. The reason for this is having multiple layers. We release updates to introduce new features, performance improvements, and security enhancements. Especially the last ones you do not want to miss. We want our customers to have fast, responsive, and more secure shops. -Up-to-date code generally means more stability, better support, and compatibility for 3rd party applications. If you use the latest versions, it means that you are using the best and most up-to-date version of the code we have to offer. Looking at the motivations to keep up-to-.date listed above, this is not only good for you, but it is good for us too. Working with a project that has recent code means that we have an easier time understanding what is going on. This reduces case resolution time and makes communication between you, Spryker Support, and Development much easier. +Up-to-date code generally means more stability, better support, and compatibility for 3rd party applications. If you use the latest versions, it means that you are using the best and most up-to-date version of the code we have to offer. Looking at the motivations to keep up-to-.date listed above, this is not only good for you, but it's good for us too. Working with a project that has recent code means that we have an easier time understanding what is going on. This reduces case resolution time and makes communication between you, Spryker Support, and Development much easier. ### Keep it in English @@ -48,7 +48,7 @@ There is a number of things you can do to avoid problems. ### Keep updated on Spryker -Keeping your Spryker environment up to date is important, but it is equally important to keep your knowledge about what is going on with Spryker updated, too. +Keeping your Spryker environment up to date is important, but it's equally important to keep your knowledge about what is going on with Spryker updated, too. Our Spryker Community on [CommerceQuest](https://commercequest.space/), a vibrant forum for people using Spryker, is a perfect platform to use. It is also a place where people come to discuss. We would like to invite every customer to join and contribute actively. Often, you will hear the latest news first there. In addition, our community team also hosts monthly Spryker User Group Meetups in which internal Spryker teams and community members share and discuss the latest developments. See [commercequest.space/events](https://commercequest.space/events/category) for upcoming meetups and other relevant events. Also, subscribe to our new newsletter (soon to come) and be sure to check out our Technical News Page (soon to come), for the latest important news. diff --git a/docs/ca/dev/add-variables-in-the-parameter-store.md b/docs/ca/dev/add-variables-in-the-parameter-store.md index c39177075b..b5bd1b0edc 100644 --- a/docs/ca/dev/add-variables-in-the-parameter-store.md +++ b/docs/ca/dev/add-variables-in-the-parameter-store.md @@ -35,7 +35,7 @@ If there is a need to modify a Spryker-owned environment variable, it must be do By adhering to these guidelines, you can effectively manage your environment variables without risking the system stability. It also helps in maintaining a seamless experience while working with the Spryker Cloud Commerce OS. -Please remember that improper management of environment variables can lead to unexpected issues. Therefore, it is recommended to consult the Spryker Cloud or support team for any complex or system-critical changes. +Please remember that improper management of environment variables can lead to unexpected issues. Therefore, it's recommended to consult the Spryker Cloud or support team for any complex or system-critical changes. ## Naming convention for variables diff --git a/docs/ca/dev/best-practices/best-practises-jenkins-stability.md b/docs/ca/dev/best-practices/best-practises-jenkins-stability.md index 32a2efd8ba..3e2933d6b9 100644 --- a/docs/ca/dev/best-practices/best-practises-jenkins-stability.md +++ b/docs/ca/dev/best-practices/best-practises-jenkins-stability.md @@ -25,7 +25,7 @@ We recommend profiling your application to understand how much RAM your Jenkins ## Jenkins executors configuration -Jenkins executors let you orchestrate Jenkins jobs and introduce parallel processing. By default, Jenkins instances have two executors configured, similar to local environment setups. You can adjust the executor count and run many console commands in parallel. While this may speed up processing in your application, it increases the importance of understanding the memory utilization profile of your application. For stable job execution, you need to ensure that no parallelized jobs collectively consume more memory than the amount available to the Jenkins container. Also, it is a common practice to set the number of executors equal to the number of CPUs available to Jenkins. Standard environments are equipped with two vCPUs. Configuring more than the standard two executors risks jobs "fighting" for CPU cycles. This severely limits the performance of all jobs running in parallel and potentially introduces instability to the container itself. +Jenkins executors let you orchestrate Jenkins jobs and introduce parallel processing. By default, Jenkins instances have two executors configured, similar to local environment setups. You can adjust the executor count and run many console commands in parallel. While this may speed up processing in your application, it increases the importance of understanding the memory utilization profile of your application. For stable job execution, you need to ensure that no parallelized jobs collectively consume more memory than the amount available to the Jenkins container. Also, it's a common practice to set the number of executors equal to the number of CPUs available to Jenkins. Standard environments are equipped with two vCPUs. Configuring more than the standard two executors risks jobs "fighting" for CPU cycles. This severely limits the performance of all jobs running in parallel and potentially introduces instability to the container itself. We recommend sticking to the default executor count or the concurrent job limit recommended in the Spryker Service Description for your package. This ensures the stability of Jenkins and prevents instability and crashes. diff --git a/docs/ca/dev/best-practices/jenkins-operational-best-practices.md b/docs/ca/dev/best-practices/jenkins-operational-best-practices.md index 320504e588..6ca79d8265 100644 --- a/docs/ca/dev/best-practices/jenkins-operational-best-practices.md +++ b/docs/ca/dev/best-practices/jenkins-operational-best-practices.md @@ -48,7 +48,7 @@ Formula to estimate your maximum theoretical RAM demand: Number of executors x (maximum workers and threads spawned by heaviest job * memory_limit) = Theoretical max RAM Demand -As you can see from the multiplicative nature of the threads and executors, you can easily reach a surprisingly high theoretical max RAM demand. However, it's unlikely that you will actually consume this amount. You would need to have multiple heaviest jobs running in parallel and consuming up to the `memory_limit simultaneously`. Nevertheless, calculating it is good practice, as keeping your theoretical maximum RAM demand below the memory supply significantly increases stability as it virtually eliminates the risk of Jenkins crashing because of exhausting its memory supply. This is currently the most common root cause of Jenkins service degradation and outages. +As you can see from the multiplicative nature of the threads and executors, you can easily reach a surprisingly high theoretical max RAM demand. However, it's unlikely that you will actually consume this amount. You would need to have multiple heaviest jobs running in parallel and consuming up to the `memory_limit simultaneously`. Nevertheless, calculating it's good practice, as keeping your theoretical maximum RAM demand below the memory supply significantly increases stability as it virtually eliminates the risk of Jenkins crashing because of exhausting its memory supply. This is currently the most common root cause of Jenkins service degradation and outages. ### To-Dos @@ -95,7 +95,7 @@ Import jobs, as well as Publish and Sync-related processes, can be taxing on the ### Imports and Publish and Synchronize -Imports and certain Publish and Sync processes can lead to high computational costs, such as permutation calculations for filters. Therefore, it is crucial to implement [RAM-aware batch processing](/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.html#integrate-ram-aware-batch-processing) and [queue chunk sizes](/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.html#chunk-size) that are suitable for the complexity of your data. The former helps prevent loading all import data into RAM, while the latter prevents RabbitMQ pipe timeouts because of lengthy processing times. A chunk or batch size that is too large may result in memory-related exceptions or messages being stuck in queues (with logs indicating RabbitMQ broken pipe exceptions), whereas a chunk or batch size that is too small may lead to subpar import and P&S performance. There is no one-size-fits-all solution, but with profiling, you can find a good balance between stability and performance. +Imports and certain Publish and Sync processes can lead to high computational costs, such as permutation calculations for filters. Therefore, it's crucial to implement [RAM-aware batch processing](/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.html#integrate-ram-aware-batch-processing) and [queue chunk sizes](/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.html#chunk-size) that are suitable for the complexity of your data. The former helps prevent loading all import data into RAM, while the latter prevents RabbitMQ pipe timeouts because of lengthy processing times. A chunk or batch size that is too large may result in memory-related exceptions or messages being stuck in queues (with logs indicating RabbitMQ broken pipe exceptions), whereas a chunk or batch size that is too small may lead to subpar import and P&S performance. There is no one-size-fits-all solution, but with profiling, you can find a good balance between stability and performance. While fine-tuning your chunk size, check out the following articles: - [Messages are moved to error queues](https://docs.spryker.com/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/messages-are-moved-to-error-queues.html) diff --git a/docs/ca/dev/configure-deployment-pipelines/deployment-in-states.md b/docs/ca/dev/configure-deployment-pipelines/deployment-in-states.md index b92bad0748..d2a3ffc1c8 100644 --- a/docs/ca/dev/configure-deployment-pipelines/deployment-in-states.md +++ b/docs/ca/dev/configure-deployment-pipelines/deployment-in-states.md @@ -111,7 +111,7 @@ During this step, all the services in an updated state may still respond to requ ## Run_install -In this step, the scripts in the `SPRYKER_HOOK_INSTALL` are run. By default, it is `vendor/bin/install -r EU/production --no-ansi -vvv`. +In this step, the scripts in the `SPRYKER_HOOK_INSTALL` are run. By default, it's `vendor/bin/install -r EU/production --no-ansi -vvv`. The script runs all the propel database migrations, so the database is updated to V2. However, Search and Redis are not, as the synchronization was "paused". diff --git a/docs/ca/dev/configure-deployment-pipelines/deployment-pipelines.md b/docs/ca/dev/configure-deployment-pipelines/deployment-pipelines.md index 62b076a04c..f32d2ea711 100644 --- a/docs/ca/dev/configure-deployment-pipelines/deployment-pipelines.md +++ b/docs/ca/dev/configure-deployment-pipelines/deployment-pipelines.md @@ -106,7 +106,7 @@ The CodeBuild project of this stage is named `Run_pre-deploy_for_` {% info_block warningBox "Updating the pre-deploy hook" %} -The CodeBuild project of the pre-deploy hook uses a *currently running* application image. If you add a new command to the hook, it is added to the hook during the next deployment. So, after updating the hook's configuration, the command only runs starting from the second deployment. +The CodeBuild project of the pre-deploy hook uses a *currently running* application image. If you add a new command to the hook, it's added to the hook during the next deployment. So, after updating the hook's configuration, the command only runs starting from the second deployment. {% endinfo_block %} diff --git a/docs/ca/dev/environment-provisioning.md b/docs/ca/dev/environment-provisioning.md index 13a547fb06..c58dbb78d6 100644 --- a/docs/ca/dev/environment-provisioning.md +++ b/docs/ca/dev/environment-provisioning.md @@ -121,7 +121,7 @@ Customer and partner users can have access to the following: This section explains what additional attributes you can specify at the beginning of your provisioning, as well as accesses you can request. ### Optional: SFTP -SFTP is implemented on top of EFS. You can use SFTP for any third-party integrations or for explicit data imports via Jenkins jobs if required on the project level. Note that SFTP is only available on Bastion and Jenkins. This feature is disabled by default. You can also request it later via the support ticket, but it is preferred to validate this option during provisioning. +SFTP is implemented on top of EFS. You can use SFTP for any third-party integrations or for explicit data imports via Jenkins jobs if required on the project level. Note that SFTP is only available on Bastion and Jenkins. This feature is disabled by default. You can also request it later via the support ticket, but it's preferred to validate this option during provisioning. For data import, we recommend using S3 buckets. diff --git a/docs/ca/dev/environment-scaling.md b/docs/ca/dev/environment-scaling.md index e5a0794969..d1f9c8f9aa 100644 --- a/docs/ca/dev/environment-scaling.md +++ b/docs/ca/dev/environment-scaling.md @@ -27,7 +27,7 @@ There is an autoscaling configuration that has a service-level CPU threshold con You can test autoscaling by applying load to the aforementioned services of your application. The application will automatically scale, which might visible by by "steps" in your monitoring—response time climbing until a new container is provisioned, which will make it fall again. You should also be able to see new containers being deployed when checking the ECS overview of the service you are load testing. -Because autoscaling is guard-railed by a maximum number of scaling group members, we recommend load and performance testing before going live so that this maximum number can be dialed in more easily. While our monitoring team can adjust these settings on the fly as well, it is normally best to apply a realistic load to the application (containing the data you want to use in production) before going live. This will also help adjust the container CPU and memory budget—which will determine how much CPU and memory each service will "get" compared to other containers. This helps to further optimize the setup. +Because autoscaling is guard-railed by a maximum number of scaling group members, we recommend load and performance testing before going live so that this maximum number can be dialed in more easily. While our monitoring team can adjust these settings on the fly as well, it's normally best to apply a realistic load to the application (containing the data you want to use in production) before going live. This will also help adjust the container CPU and memory budget—which will determine how much CPU and memory each service will "get" compared to other containers. This helps to further optimize the setup. ## Additional notes diff --git a/docs/ca/dev/getting-started-with-cloud-administration.md b/docs/ca/dev/getting-started-with-cloud-administration.md index d134941c2d..6ea4dd1989 100644 --- a/docs/ca/dev/getting-started-with-cloud-administration.md +++ b/docs/ca/dev/getting-started-with-cloud-administration.md @@ -56,7 +56,7 @@ The following CD pipelines are configured in [CodePipeline](https://docs.aws.ama | --- | --- | | DESTRUCTIVE | You can configure the installation stage of this pipeline in `config/install/destructive.yml`. | | NORMAL | You can configure the installation stage of this pipeline in `config/install/production.yml`. | -| Build | Compiles images and pushes them into the [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Starts automatically when a new commit is detected. | +| Build | Compiles images and pushes them into the [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Starts automatically when a new commit's detected. | | Rollout Scheduler | Deploys the scheduler. | diff --git a/docs/ca/dev/multi-store-setups/multistore-setup-options.md b/docs/ca/dev/multi-store-setups/multistore-setup-options.md index 759daef8c6..ae7a2813ba 100644 --- a/docs/ca/dev/multi-store-setups/multistore-setup-options.md +++ b/docs/ca/dev/multi-store-setups/multistore-setup-options.md @@ -17,7 +17,7 @@ Keep in mind that the definition of a store can vary depending on the business u ## Assess whether your shop is fit for Spryker Multi-Store -When planning multiple stores, it is crucial to determine whether your project supports the Spryker Multistore solution and assess whether it is necessary for your business needs. +When planning multiple stores, it's crucial to determine whether your project supports the Spryker Multistore solution and assess whether it's necessary for your business needs. The Spryker Multi-Store solution is designed to represent several business channels on a single platform. These channels include: @@ -48,7 +48,7 @@ There are three types of setups you can choose from. {% info_block infoBox "Stores grouping" %} -When setting up multiple stores, we recommended to group stores that share the same processes and data to regional stores. For instance, if your DE and AT stores share the same database, it is best not to separate them but to have one regional store instead. +When setting up multiple stores, we recommended to group stores that share the same processes and data to regional stores. For instance, if your DE and AT stores share the same database, it's best not to separate them but to have one regional store instead. {% endinfo_block %} @@ -162,7 +162,7 @@ This setup has the following characteristics: - Separate database per account. - Allows for different regions. - Lets you use themes for a different visual look and feel. -- Possibility of an isolated codebase for each store. In this case, it is possible to have fully independent development teams. +- Possibility of an isolated codebase for each store. In this case, it's possible to have fully independent development teams. - In the case of a shared codebase: - Use of code buckets for store customization (logic). - Centralized third-party integrations. diff --git a/docs/ca/dev/performance-testing-in-staging-enivronments.md b/docs/ca/dev/performance-testing-in-staging-enivronments.md index 7e5999c9aa..6867a41167 100644 --- a/docs/ca/dev/performance-testing-in-staging-enivronments.md +++ b/docs/ca/dev/performance-testing-in-staging-enivronments.md @@ -334,7 +334,7 @@ APPLICATION_STORE="DE" COMMAND="$PHP_BIN vendor/bin/console queue:worker:start - {% info_block infoBox %} -While it is possible to change the Jenkins cronjobs found at **/config/Zed/cronjobs/jenkins.php**, please note that these entries require a scheduled time and setting this will cause those jobs to run until they have been disabled in the Jenkins web UI. +While it's possible to change the Jenkins cronjobs found at **/config/Zed/cronjobs/jenkins.php**, please note that these entries require a scheduled time and setting this will cause those jobs to run until they have been disabled in the Jenkins web UI. {% endinfo_block %} diff --git a/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-a-third-party-dns-zone-provider.md b/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-a-third-party-dns-zone-provider.md index 4e592f61b4..53d2a42ea4 100644 --- a/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-a-third-party-dns-zone-provider.md +++ b/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-a-third-party-dns-zone-provider.md @@ -67,7 +67,7 @@ groups: {% info_block warningBox "Store configuration" %} -`store:` must correspond to `groups:` and `region:`. For example, it is impossible to set a US store in the DE region. +`store:` must correspond to `groups:` and `region:`. For example, it's impossible to set a US store in the DE region. {% endinfo_block %} diff --git a/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-route-53.md b/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-route-53.md index 229635f8c2..bb1833158c 100644 --- a/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-route-53.md +++ b/docs/ca/dev/set-up-a-custom-domain-name/set-up-a-custom-domain-name-with-route-53.md @@ -68,7 +68,7 @@ groups: {% info_block warningBox "Store configuration" %} -`store:` must correspond to `groups:` and `region:`. For example, it is impossible to set a US store in the DE region. +`store:` must correspond to `groups:` and `region:`. For example, it's impossible to set a US store in the DE region. {% endinfo_block %} diff --git a/docs/ca/dev/setting-up-a-custom-ssl-certificate.md b/docs/ca/dev/setting-up-a-custom-ssl-certificate.md index a67fa75586..69ce6db25a 100644 --- a/docs/ca/dev/setting-up-a-custom-ssl-certificate.md +++ b/docs/ca/dev/setting-up-a-custom-ssl-certificate.md @@ -17,7 +17,7 @@ By default, all the domain names (domains) are provided with generic SSLs, which {% info_block infoBox "Third-party DNS zone provider" %} -If the DNS zone of a domain name is hosted with a third-party provider, it is impossible to use the generic SSLs and manage custom SSLs in Spryker Cloud Commerce OS. +If the DNS zone of a domain name is hosted with a third-party provider, it's impossible to use the generic SSLs and manage custom SSLs in Spryker Cloud Commerce OS. {% endinfo_block %} diff --git a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-403-error.md b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-403-error.md index 27dbd0f44a..00295707d3 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-403-error.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-403-error.md @@ -16,7 +16,7 @@ To check 403 errors via browser console, do the following: ## Checking the WAF rule that triggered the 403 error -If you found a 403 status response code in the frontend logs or in the browser console, it is most likely that it had been triggered by a [WAF(web application firewall)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) rule. Knowing the rule that triggered the error will help you to understand the source of the issue. +If you found a 403 status response code in the frontend logs or in the browser console, it's most likely that it had been triggered by a [WAF(web application firewall)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) rule. Knowing the rule that triggered the error will help you to understand the source of the issue. To check the WAF rule that triggered the error, do the following: diff --git a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-a-failed-deployment.md b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-a-failed-deployment.md index 03ab452b3c..e3460a1244 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-a-failed-deployment.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-a-failed-deployment.md @@ -89,7 +89,7 @@ Alternatively, you can check the script of the step in the environment's deploy ![pre-deploy-file] -In this example, the `scheduler:suspendddddddddddd` is misspelled, and it is the root cause of the issue. +In this example, the `scheduler:suspendddddddddddd` is misspelled, and it's the root cause of the issue. {% info_block infoBox "Debugging pre-deploy scripts" %} diff --git a/docs/ca/devscu/developing-with-spryker-code-upgrader.md b/docs/ca/devscu/developing-with-spryker-code-upgrader.md index 7769c8b812..ac13a838e2 100644 --- a/docs/ca/devscu/developing-with-spryker-code-upgrader.md +++ b/docs/ca/devscu/developing-with-spryker-code-upgrader.md @@ -8,7 +8,7 @@ redirect_from: - /docs/scu/dev/spryker-code-upgrader-in-a-development-workflow.html --- -Spryker Code Upgrader works best when it is strategically integrated into your development process. This document describes how to integrate the Upgrader into your scrum activities and Git flow to streamline and optimize the development workflow. +Spryker Code Upgrader works best when it's strategically integrated into your development process. This document describes how to integrate the Upgrader into your scrum activities and Git flow to streamline and optimize the development workflow. ## Processing code upgrades with Scrum diff --git a/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.md b/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.md index 37bff777c0..6e2126403d 100644 --- a/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.md +++ b/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.md @@ -11,7 +11,7 @@ To start managing upgrades with Spryker Code Upgrader, fulfill the following pre ## Make your code compliant with upgradability guidelines -Our [upgradability guidelines](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/upgradability-guidelines.html) ensure your project stays upgradable. When an application is compliant with the guidelines, it can take minor and patch updates without breaking functionality, even if it is highly customized. +Our [upgradability guidelines](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/upgradability-guidelines.html) ensure your project stays upgradable. When an application is compliant with the guidelines, it can take minor and patch updates without breaking functionality, even if it's highly customized. To check if your code is compliant with the guidelines, [run the evaluator tool](/docs/dg/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). diff --git a/docs/ca/devscu/troubleshooting/a-php-extension-is-missing-from-your-system.md b/docs/ca/devscu/troubleshooting/a-php-extension-is-missing-from-your-system.md index f2eea6cbda..3e56cc7902 100644 --- a/docs/ca/devscu/troubleshooting/a-php-extension-is-missing-from-your-system.md +++ b/docs/ca/devscu/troubleshooting/a-php-extension-is-missing-from-your-system.md @@ -70,7 +70,7 @@ Your requirements could not be resolved to an installable set of packages. Problem 1 - - / requires ext- * -> it is missing from your system. Install or enable PHP\'s extension. + - / requires ext- * -> it's missing from your system. Install or enable PHP\'s extension. You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode. diff --git a/docs/dg/dev/acp/acp-security-assessment.md b/docs/dg/dev/acp/acp-security-assessment.md index ef2b348c78..1c27c6a9fb 100644 --- a/docs/dg/dev/acp/acp-security-assessment.md +++ b/docs/dg/dev/acp/acp-security-assessment.md @@ -15,7 +15,7 @@ This document outlines the threat modeling and security assessment requirements ## ACP security -In the context of listings on the ACP apps catalog, security is a measure of trust. For our enterprise customers to trust us with their data, it is important that every app they use with SCCOS offers a satisfactory level of security. +In the context of listings on the ACP apps catalog, security is a measure of trust. For our enterprise customers to trust us with their data, it's important that every app they use with SCCOS offers a satisfactory level of security. ## Security responsibility @@ -158,7 +158,7 @@ The diagram below demonstrates the security assessment procedure: ## Review results - As soon as a review is cleared, an app is marked as approved, and a badge is displayed on the marketplace listing. -- During subsequent full reviews (typically annually), the app will retain its badge while it is in the test cycles. Nevertheless, in the following scenarios, the badge will be removed, and customers notified of it: +- During subsequent full reviews (typically annually), the app will retain its badge while it's in the test cycles. Nevertheless, in the following scenarios, the badge will be removed, and customers notified of it: - The app developer fails to respond to repeated requests for annual re-assessments. - During the re-assessment, the app fails repeatedly (about 5 times), and the app developer isn’t able to fix the reported issues. - At this time, customers can choose to look at an alternate application or work with the developer to remedy the issues. diff --git a/docs/dg/dev/architecture/architectural-convention.md b/docs/dg/dev/architecture/architectural-convention.md index 71aed562c4..875273f66e 100644 --- a/docs/dg/dev/architecture/architectural-convention.md +++ b/docs/dg/dev/architecture/architectural-convention.md @@ -2218,7 +2218,7 @@ No general conventions. #### Guidelines - Operations on single items in plugin stack methods is not feasible, except for the following reasons: - - it is strictly and inevitably a single-item flow. + - it's strictly and inevitably a single-item flow. - the items go in FIFO order and there is no other way to use a collection instead. - Plugin interface class specification should explain: - how the [Plugins](#plugin) will be used, diff --git a/docs/dg/dev/architecture/conceptual-overview.md b/docs/dg/dev/architecture/conceptual-overview.md index bc86c039bf..f92c7c6378 100644 --- a/docs/dg/dev/architecture/conceptual-overview.md +++ b/docs/dg/dev/architecture/conceptual-overview.md @@ -53,7 +53,7 @@ Along with the default frontend app that is provided out of the box, you can hav The application separation brings three main benefits: -1. *Performance*. A frontend applications in Spryker uses a data storage separated from the backend one. It uses a blazing fast key-value storage while the backend uses a relational database. With this separation, it is way faster than using the traditional way of sharing one relational database for both applications. +1. *Performance*. A frontend applications in Spryker uses a data storage separated from the backend one. It uses a blazing fast key-value storage while the backend uses a relational database. With this separation, it's way faster than using the traditional way of sharing one relational database for both applications. 2. *Scalability*. As frontends in Spryker have their own applications, storages, and deployments, scalability becomes easily achievable and given by the architecture. Spryker can be easily scaled out horizontally by simply just adding more instances with more storages without affecting the backend application and logic. 3. *Security*. Having two applications, accessing the backend relational database becomes a harder challenge for cyber attacks. The backend application also is usually hidden behind a firewall making the Commerce OS even more secured for different e-commerce applications. diff --git a/docs/dg/dev/architecture/module-api/semantic-versioning-major-vs.-minor-vs.-patch-release.md b/docs/dg/dev/architecture/module-api/semantic-versioning-major-vs.-minor-vs.-patch-release.md index 5eb2001d00..f51af41500 100644 --- a/docs/dg/dev/architecture/module-api/semantic-versioning-major-vs.-minor-vs.-patch-release.md +++ b/docs/dg/dev/architecture/module-api/semantic-versioning-major-vs.-minor-vs.-patch-release.md @@ -24,7 +24,7 @@ A pull request can ship a new feature, bug fixes, and improvements to existing f ## What is a Major release? -When we make a change to the [external API of a module](/docs/dg/dev/architecture/module-api/declaration-of-module-apis-public-and-private.html), it is a major release. This includes changes to the internal contract. Even when there is no change in a facade method, there can be a change in the behavior so that the contract (~ expected behavior) changes. Please obey the constraints for major releases. +When we make a change to the [external API of a module](/docs/dg/dev/architecture/module-api/declaration-of-module-apis-public-and-private.html), it's a major release. This includes changes to the internal contract. Even when there is no change in a facade method, there can be a change in the behavior so that the contract (~ expected behavior) changes. Please obey the constraints for major releases. Our customers need to change their `composer.json` file to get major versions of modules. @@ -34,7 +34,7 @@ We have two types of major releases: ## What is a Minor release? -A release is *minor* when the internal API is changed. For example, when the signature of internal models or constructors is changed, or classes are renamed. Actually, it is anything that can break extensions using inheritance or composition on a project level. +A release is *minor* when the internal API is changed. For example, when the signature of internal models or constructors is changed, or classes are renamed. Actually, it's anything that can break extensions using inheritance or composition on a project level. Our customers get all new minor releases automatically during composer update if they use the _^_ (caret) symbol in `composer.json`—for example, `"spryker/category": "^4.1.2"`. We recommend using the _~_ (tilde) symbol for all modules that have been extended at the project level to make sure that nothing breaks after a release—for example, `"spryker/category": "~4.1.0"`. For mode details about how you can easily detect _^_ in the extended modules and update them with _~_, see [Using ~ Composer Constraint for Customized Modules](/docs/dg/dev/architecture/module-api/use-composer-constraint-for-customized-modules.html) diff --git a/docs/dg/dev/architecture/programming-concepts.md b/docs/dg/dev/architecture/programming-concepts.md index e37057c686..867979e0b4 100644 --- a/docs/dg/dev/architecture/programming-concepts.md +++ b/docs/dg/dev/architecture/programming-concepts.md @@ -24,7 +24,7 @@ Having covered the main architectural concepts of the Spryker Commerce OS, front Spryker *Facades* use the [Facade design pattern](https://en.wikipedia.org/wiki/Facade_pattern). They hide all the business logic of a module behind them and give a very simple and straightforward interface. Thus, the main API of a module is its Facade. When you want to find out what a module does, simply check its Facade interface. -Spryker's Facades work as delegators, so they do not have any business logic in them. They delegate to the right model in order to handle the needed business logic. There is only one Facade for each module, and it is located in the Business layer. +Spryker's Facades work as delegators, so they do not have any business logic in them. They delegate to the right model in order to handle the needed business logic. There is only one Facade for each module, and it's located in the Business layer. ## Factory @@ -32,7 +32,7 @@ Spryker *Factories* follow the [Factory method pattern](https://en.wikipedia.org To isolate objects between the software layers in Spryker, every software layer in a module has its own Factory. The only exception is that the Presentation layer does not have objects, only templates. So, there are Persistence Factories, Business Factories, and Communication Factories. -Glue, Client, and Service application layers have their own Factories as well. Yves can have a Factory when needed. However, it is not enforced by the Spryker architecture as, in many cases, it is not needed for the frontend presentation logic. +Glue, Client, and Service application layers have their own Factories as well. Yves can have a Factory when needed. However, it's not enforced by the Spryker architecture as, in many cases, it's not needed for the frontend presentation logic. ## Query Container @@ -64,7 +64,7 @@ To manage data transfer between the frontend and the Commerce OS applications an Transfer Objects are defined as XML files. Every module can define its own Transfer Objects or extend Transfer Objects from other modules when a dependency to that data is needed. The XML files are merged and transformed into auto-generated PHP objects. -Transfer Objects are a great way to represent data contracts between the Commerce OS and frontend applications. It also represents data contracts between different modules. When any data is needed from a module, it is clear what structure the data has and how to properly use it. +Transfer Objects are a great way to represent data contracts between the Commerce OS and frontend applications. It also represents data contracts between different modules. When any data is needed from a module, it's clear what structure the data has and how to properly use it. As both the Commerce OS and the frontend application need to know about the structure of the Transfer Objects, they are located on the Shared application layer. Every module can have one or more Transfer Objects. diff --git a/docs/dg/dev/backend-development/client/client.md b/docs/dg/dev/backend-development/client/client.md index b5643c9f49..faba2a659b 100644 --- a/docs/dg/dev/backend-development/client/client.md +++ b/docs/dg/dev/backend-development/client/client.md @@ -28,7 +28,7 @@ End customers interact only with the frontend application. The frontend applicat The _client's_ job is to connect the frontend application to all of the surrounding resources needed for the frontend application to work. These resources include the Commerce OS, Storage, and Search. It also contains some other resources like Session and Queues. -For each of these resources, there is a client. So, it is not only one client, but many of them. Each one of them is responsible for a specific resource or functionality. Spryker, by default, is shipped with the following clients: +For each of these resources, there is a client. So, it's not only one client, but many of them. Each one of them is responsible for a specific resource or functionality. Spryker, by default, is shipped with the following clients: * SearchClient: to connect to Elasticsearch using its API. * StorageClient: to connect to Redis using the Redis protocol; RESP. diff --git a/docs/dg/dev/backend-development/client/use-and-configure-redis-as-a-key-value-storage.md b/docs/dg/dev/backend-development/client/use-and-configure-redis-as-a-key-value-storage.md index 09b124bd43..dddb0ddbc0 100644 --- a/docs/dg/dev/backend-development/client/use-and-configure-redis-as-a-key-value-storage.md +++ b/docs/dg/dev/backend-development/client/use-and-configure-redis-as-a-key-value-storage.md @@ -158,12 +158,12 @@ To optimize the data retrieval from Redis, we designed an algorithm to store all The Redis cache for a page is basically a key-value pair. The key of the cache is the prefix `StorageClient_` followed by the URL of the page, while the value of the cache is simply a list of all Redis keys used on the cached page. -When accessing a new page, the algorithm checks if a cache for it is already built. If yes, the page uses or refreshes the cache if needed; otherwise, the algorithm builds a new cache. +When accessing a new page, the algorithm checks if a cache for it's already built. If yes, the page uses or refreshes the cache if needed; otherwise, the algorithm builds a new cache. Spryker provides three caching strategies to build the list of the keys in the cache entry: * *Replacement strategy.* This strategy overwrites the list of the keys in a cache with a new one every time a cached page is accessed. This strategy is useful with static pages where the list of keys for these does not change often. This is a default strategy when a strategy is not specified. -* *Incremental strategy.* This strategy increments the list of keys inside the cache until the limit is exceeded. The default limit is 1000 keys. The incremental strategy is useful with a page that uses configurators—for example, variants where the cache stores all the different combinations. +* *Incremental strategy.* This strategy increments the list of keys inside the cache until the limit's exceeded. The default limit's 1000 keys. The incremental strategy is useful with a page that uses configurators—for example, variants where the cache stores all the different combinations. * *Inactive strategy.* This strategy deactivates the cache for a specified page. All the cache entries have a default TTL of one day. The cache is removed after one day, and a new one is generated for different pages when accessing them. diff --git a/docs/dg/dev/backend-development/console-commands/console-commands.md b/docs/dg/dev/backend-development/console-commands/console-commands.md index 720f6f98c7..35140c4208 100644 --- a/docs/dg/dev/backend-development/console-commands/console-commands.md +++ b/docs/dg/dev/backend-development/console-commands/console-commands.md @@ -219,7 +219,7 @@ Depending on your environment and needs, there is a number of commands you can r {% info_block infoBox %} -To use the npm commands, download and install [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). The minimum version for Node.js is *18.x* and for npm it is *9.x*. Then, you can use the appropriate commands listed in the table. +To use the npm commands, download and install [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). The minimum version for Node.js is *18.x* and for npm it's *9.x*. Then, you can use the appropriate commands listed in the table. {% endinfo_block %} diff --git a/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md b/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md index 2c985d2736..4371738c11 100644 --- a/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md +++ b/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md @@ -11,7 +11,7 @@ redirect_from: Our out-of-the-box (OOTB) system requires a specific command (Worker - `queue:worker:start`) to be continuously running for each store to process queues and ensure the propagation of information. In addition to this command, there are other commands such as OMS processing, import, export, and more. When these processes are not functioning or running slowly, there is a delay in data changes being reflected on the frontend, causing dissatisfaction among customers and leading to disruption of business processes. -By default, our system has a limit of two Jenkins executors for each environment. This limit is usually not a problem for single-store setups, but it becomes a potentially critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. +By default, our system has a limit of two Jenkins executors for each environment. This limit's usually not a problem for single-store setups, but it becomes a potentially critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU utilization are not generally high (around 20-30%), there can be spikes in memory consumption because of a random combination of several workers simultaneously processing heavy messages for multiple stores. @@ -31,7 +31,7 @@ In computer science, a pool refers to a collection of resources that are kept in ![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/NewWorker+Flow.png) -We define the total number of simultaneously running processes for the entire setup on the EC2 instance level. This makes it easier to manage, as we can monitor the average memory consumption for the process pool. If it's too low, we can increase the pool size, and if it's too high, we can decrease it. Additionally, we check the available memory (RAM) and prevent spawning additional processes if it is too low, ensuring system stability. Execution statistics provide valuable insights for decision-making, including adjusting the pool size or scaling the EC2 instance up or down. +We define the total number of simultaneously running processes for the entire setup on the EC2 instance level. This makes it easier to manage, as we can monitor the average memory consumption for the process pool. If it's too low, we can increase the pool size, and if it's too high, we can decrease it. Additionally, we check the available memory (RAM) and prevent spawning additional processes if it's too low, ensuring system stability. Execution statistics provide valuable insights for decision-making, including adjusting the pool size or scaling the EC2 instance up or down. The following parameters exist: @@ -61,7 +61,7 @@ Child processes are killed at the end of each minute, which means those batches There are two methods possible for implementing this: -1. Applying a patch, although it may require conflict resolution since it is applied on the project level and each project may have unique customizations already in place. See the attached diffs for an example implementation. [Here's a diff](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/one-worker.diff). +1. Applying a patch, although it may require conflict resolution since it's applied on the project level and each project may have unique customizations already in place. See the attached diffs for an example implementation. [Here's a diff](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/one-worker.diff). ```bash git apply one-worker.diff @@ -118,7 +118,7 @@ class NewWorker implements WorkerInterface public function start(string $command, array $options = []): void { // env var - QUEUE_WORKER_MAX_THRESHOLD_SECONDS - // default is 60 seconds, 1 minute, it is safe to have it as 1 hour instead + // default is 60 seconds, 1 minute, it's safe to have it as 1 hour instead $maxThreshold = $this->queueConfig->getQueueWorkerMaxThreshold(); // minimum interval after starting one process before executing another @@ -156,7 +156,7 @@ class NewWorker implements WorkerInterface // QUEUE_WORKER_MEMORY_MAX_GROWTH_FACTOR, 50 by default // measures how much Worker own memory consumption increased after first iteration - // when more than 50% - it is considered a memory leak and Worker will finish its operation + // when more than 50% - it's considered a memory leak and Worker will finish its operation // allowing Jenkins to run Worker again if ($ownMemGrowthFactor > $this->queueConfig->maxAllowedWorkerMemoryGrowthFactor()) { $this->logger->emergency(sprintf('Worker memory grew more than %d%%, probably a memory leak, exiting', $ownMemGrowthFactor)); @@ -248,7 +248,7 @@ Available free system memory measured before spawning each child process. The system should always have spare resources, because each `queue:task:start ...` command can consume different amount of resources, which is not easily predictable. Because of this, this buffer must be set with such limitations in mind. -- to accomodate a new process it is going to launch +- to accomodate a new process it's going to launch - to leave space for any sporadic memory consumption change of already running processes
@@ -478,7 +478,7 @@ class OrderedQueuesStrategy implements QueueProcessingStrategyInterface Currently, this solution proved to be useful for multi-store setup environments with more than 2 stores operated within a single AWS region, although projects with only two stores can benefit from this solution as well. -At the same time, it is worth mentioning that it does not make sense to apply this customization for a single-store setup. Although there are no drawbacks, it won't provide any significant benefits in performance, just better logging. +At the same time, it's worth mentioning that it does not make sense to apply this customization for a single-store setup. Although there are no drawbacks, it won't provide any significant benefits in performance, just better logging. - In summary, this HowTo can be applied to multi-store setup with at least 2 stores within one AWS region to gain such benefits as potential cost reduction from scaling down a Jenkins instance, or to speed Publish and Synchronize processing instead. diff --git a/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md b/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md index 4b34ec7564..d06c32ef98 100644 --- a/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md +++ b/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md @@ -9,7 +9,7 @@ redirect_from: By default, the system requires the `queue:worker:start` command to be continuously running for each store to process queues and ensure the propagation of information. In addition to this command, there are other commands such as OMS processing, import, export, and more. When these processes aren't functioning or running slowly, there is a delay in data changes being reflected on the frontend, causing dissatisfaction among customers and leading to disruption of business processes. -By default, Spryker has a limit of two Jenkins executors for each environment. This limit is usually not a problem for single-store setups, but it can be a critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. +By default, Spryker has a limit of two Jenkins executors for each environment. This limit's usually not a problem for single-store setups, but it can be a critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU usage aren't generally high (around 20-30%), there can be spikes in memory consumption because of a random combination of several workers simultaneously processing heavy messages for multiple stores. @@ -47,7 +47,7 @@ A pool refers to a collection of resources that are kept in memory and ready to ![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/NewWorker+Flow.png) -We define the total number of simultaneously running processes for the entire setup on the EC2 instance level. This makes it easier to manage, as we can monitor the average memory consumption for the process pool. If it's too low, we can increase the pool size, and if it's too high, we can decrease it. Additionally, we check the available memory (RAM) and prevent spawning additional processes if it is too low, ensuring system stability. Execution statistics provide valuable insights for decision-making, including adjusting the pool size or scaling the EC2 instance up or down. +We define the total number of simultaneously running processes for the entire setup on the EC2 instance level. This makes it easier to manage, as we can monitor the average memory consumption for the process pool. If it's too low, we can increase the pool size, and if it's too high, we can decrease it. Additionally, we check the available memory (RAM) and prevent spawning additional processes if it's too low, ensuring system stability. Execution statistics provide valuable insights for decision-making, including adjusting the pool size or scaling the EC2 instance up or down. The following parameters exist: @@ -76,7 +76,7 @@ Child processes are killed at the end of each minute, which means those batches There are two ways to implement the background job orchestration: -1. Applying a patch, although it may require conflict resolution since it is applied on the project level, and each project may have unique customizations already in place. See [these diffs](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/one-worker.diff) for an example implementation. +1. Applying a patch, although it may require conflict resolution since it's applied on the project level, and each project may have unique customizations already in place. See [these diffs](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/howto-reduce-jenkins-execution-cost-without-refactoring/one-worker.diff) for an example implementation. ```bash git apply one-worker.diff @@ -133,7 +133,7 @@ class NewWorker implements WorkerInterface public function start(string $command, array $options = []): void { // env var - QUEUE_WORKER_MAX_THRESHOLD_SECONDS - // default is 60 seconds, 1 minute, it is safe to have it as 1 hour instead + // default is 60 seconds, 1 minute, it's safe to have it as 1 hour instead $maxThreshold = $this->queueConfig->getQueueWorkerMaxThreshold(); // minimum interval after starting one process before executing another @@ -171,7 +171,7 @@ class NewWorker implements WorkerInterface // QUEUE_WORKER_MEMORY_MAX_GROWTH_FACTOR, 50 by default // measures how much Worker own memory consumption increased after first iteration - // when more than 50% - it is considered a memory leak and Worker will finish its operation + // when more than 50% - it's considered a memory leak and Worker will finish its operation // allowing Jenkins to run Worker again if ($ownMemGrowthFactor > $this->queueConfig->maxAllowedWorkerMemoryGrowthFactor()) { $this->logger->emergency(sprintf('Worker memory grew more than %d%%, probably a memory leak, exiting', $ownMemGrowthFactor)); diff --git a/docs/dg/dev/backend-development/data-manipulation/configuration-management.md b/docs/dg/dev/backend-development/data-manipulation/configuration-management.md index 45e00da66f..708f17722a 100644 --- a/docs/dg/dev/backend-development/data-manipulation/configuration-management.md +++ b/docs/dg/dev/backend-development/data-manipulation/configuration-management.md @@ -39,7 +39,7 @@ All of these files are merged automatically by Spryker when the application is r ### Constant interfaces -As you can see in the configuration files, the whole configuration is a big array of keys and values. To enable traceability, it is a good practice to use constants as keys. These constants are defined in shared interfaces that are provided by the related module. +As you can see in the configuration files, the whole configuration is a big array of keys and values. To enable traceability, it's a good practice to use constants as keys. These constants are defined in shared interfaces that are provided by the related module. ```php ”`. Running the composer update command removes all mentions of the module (for example, `refund`) and replaces it with your module (for example, `replace_refund`). {% info_block warningBox %} diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/add-publish-events.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/add-publish-events.md index c767b416c4..0e09b7bccc 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/add-publish-events.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/add-publish-events.md @@ -204,4 +204,4 @@ class SpyGlossary extends BaseSpyGlossary } ``` -Now, you can track the changes in the `Glossary` entity. When it is created, updated, or deleted, an event is created and posted to the specified RabbitMQ publish queue (`publish.translation`). +Now, you can track the changes in the `Glossary` entity. When it's created, updated, or deleted, an event is created and posted to the specified RabbitMQ publish queue (`publish.translation`). diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/bypass-the-key-value-storage.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/bypass-the-key-value-storage.md index ee9eb0aaa0..a732800e28 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/bypass-the-key-value-storage.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/bypass-the-key-value-storage.md @@ -36,7 +36,7 @@ This new module is responsible for interacting with the database in read-only mo There are two limitations of using the database as storage on Yves compared to the default storage engine. The following are scenarios when Yves actually writes data to storage: -- Caching of requests to storage: while using the database as storage, it is not possible to cache anything in Yves. +- Caching of requests to storage: while using the database as storage, it's not possible to cache anything in Yves. - Concurrent requests and caching for the Glue API. {% endinfo_block %} diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.md index 3e4cbcba14..efff22da5c 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.md @@ -546,7 +546,7 @@ For debugging purposes, use the `-k` option to keep messages in the queue `queue ## 6. Storage table -To synchronize data with Redis, an intermediate Zed database table is required. The table stores the data until it is sent to Redis. The data in the table is already structured for Redis. +To synchronize data with Redis, an intermediate Zed database table is required. The table stores the data until it's sent to Redis. The data in the table is already structured for Redis. Follow the steps to create the table: diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-publish-and-synchronization.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-publish-and-synchronization.md index 2b05df58be..2a01039e12 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-publish-and-synchronization.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-publish-and-synchronization.md @@ -124,7 +124,7 @@ The next step is to create a database table that is used as a mirror for the cor {% info_block infoBox "Naming convention"%} -As a naming convention, it is recommended to append `_storage` to the end of the table name if it is synchronized with Redis, and `_search` if it is synchronized with Elasticsearch. +As a naming convention, it's recommended to append `_storage` to the end of the table name if it's synchronized with Redis, and `_search` if it's synchronized with Elasticsearch. {% endinfo_block %} @@ -173,8 +173,8 @@ The *Synchronization* behavior added by the above schema files adds a column tha Synchronization behavior parameters: * `resource`—specifies the Redis or Elasticsearch namespace to synchronize with. -* `store`—specifies whether it is necessary to specify a store for an entity. -* `locale`—specifies whether it is necessary to specify a locale for an entity. +* `store`—specifies whether it's necessary to specify a store for an entity. +* `locale`—specifies whether it's necessary to specify a locale for an entity. * `key_suffix_column`—specifies the name of the column that will be appended to the Redis or Elasticsearch key to make the key unique. If this parameter is omitted, then all entities will be stored under the same key. * `queue_group`—specifies the queue group for synchronization. * `params`—specifies search parameters (Elasticsearch only). @@ -298,7 +298,7 @@ The `handleBulk` method is called by the event queue for the defined events in t {% info_block infoBox "Info"%} -For performance considerations, events are passed to the listener in bulk. Even if a single event must be handled, it is passed as an array of a single element. +For performance considerations, events are passed to the listener in bulk. Even if a single event must be handled, it's passed as an array of a single element. {% endinfo_block %} diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.md index 2baa638bc0..751745189c 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.md @@ -38,7 +38,7 @@ During the [Publish and Synchronization](/docs/dg/dev/backend-development/data-m where *123* is the product ID from the database. Now, we can get that product's data straight away by querying storage for this particular key. But what if we don't know ID of a product, but know its SKU? What if we don't want to expose database IDs to the outer world? In these cases, we could make some heavy changes to the Publish & Synchronize mechanism on the project level, or we could use *mappings*. ## What are mappings -You can instruct Publish & Synchronize facilities to create mappings for any resource. Mapping is a relation between a resource's database ID and some other unique piece of information about that resource. In terms of storage, it is an extra-record, related to some resource entity, which stores its ID, and is saved with its own key. This key, of course, does not have database ID as its part. To understand the mappings better, read on how mappings are [defined](#defining) and [used](#using). +You can instruct Publish & Synchronize facilities to create mappings for any resource. Mapping is a relation between a resource's database ID and some other unique piece of information about that resource. In terms of storage, it's an extra-record, related to some resource entity, which stores its ID, and is saved with its own key. This key, of course, does not have database ID as its part. To understand the mappings better, read on how mappings are [defined](#defining) and [used](#using). diff --git a/docs/dg/dev/backend-development/extend-spryker/spryker-os-module-customisation/extend-the-core.md b/docs/dg/dev/backend-development/extend-spryker/spryker-os-module-customisation/extend-the-core.md index f230866aa8..d670302be0 100644 --- a/docs/dg/dev/backend-development/extend-spryker/spryker-os-module-customisation/extend-the-core.md +++ b/docs/dg/dev/backend-development/extend-spryker/spryker-os-module-customisation/extend-the-core.md @@ -18,7 +18,7 @@ related: We offer several ways like plugins to hook into the core's behavior and extend this without modifications. But sometimes this is not enough, so you need to replace a method that is deep in the core. -Before you proceed, double-check if there is no other way to solve your requirement, maybe there is a facade method that fits in or you can use plugins. You must understand that if you do a core extension, you are behind the stable internal APIs, so there is no guarantee that the extended class is not modified, renamed, or even non-existing in the next release. Therefore, you take over responsibility for your extension, and it is highly recommended to cover it with unit tests. If it is not urgent, you can request a change in our support desk to get an official extension point. +Before you proceed, double-check if there is no other way to solve your requirement, maybe there is a facade method that fits in or you can use plugins. You must understand that if you do a core extension, you are behind the stable internal APIs, so there is no guarantee that the extended class is not modified, renamed, or even non-existing in the next release. Therefore, you take over responsibility for your extension, and it's highly recommended to cover it with unit tests. If it's not urgent, you can request a change in our support desk to get an official extension point. There are three ways to extend classes from the core: * Replacement class diff --git a/docs/dg/dev/backend-development/factory/factory.md b/docs/dg/dev/backend-development/factory/factory.md index ceae0c52bf..0015d7ed23 100644 --- a/docs/dg/dev/backend-development/factory/factory.md +++ b/docs/dg/dev/backend-development/factory/factory.md @@ -71,7 +71,7 @@ The extended `AbstractFactory` holds some important methods: ## Snippets to create a new factory -The factory pattern is used all over our code base. The concrete implementations look a bit different for Yves, Zed, and Client. You can copy and paste these snippets and just replace `MyBundle` with your real module name. To enable auto-completion, it is recommended to define the interfaces for the query container and module config in the class doc block as shown in the snippets. +The factory pattern is used all over our code base. The concrete implementations look a bit different for Yves, Zed, and Client. You can copy and paste these snippets and just replace `MyBundle` with your real module name. To enable auto-completion, it's recommended to define the interfaces for the query container and module config in the class doc block as shown in the snippets. ### Yves diff --git a/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md b/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md index 4dc3561116..9b711b24b4 100644 --- a/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md +++ b/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md @@ -13,7 +13,7 @@ related: link: docs/dg/dev/backend-development/plugins/plugins.html --- -To use a new feature projects most likely need to add some plugins to their `*DependencyProvider`. Currently, it is not easy for projects to integrate a new feature because of the difficulties in identifying to which *`DependencyProvider` plugin A* of *module B* can be added to bring *functionality X*. +To use a new feature projects most likely need to add some plugins to their `*DependencyProvider`. Currently, it's not easy for projects to integrate a new feature because of the difficulties in identifying to which *`DependencyProvider` plugin A* of *module B* can be added to bring *functionality X*. To see which [Plugin](/docs/dg/dev/backend-development/plugins/plugins.html) can be used in which `DependencyProvider` we added a feature called **Plugin Overview**. This feature gives you several ways of displaying our plugin usages. The feature brings a console command (`vendor/bin/console dev:plugin-usage:dump`) and a [GUI in Zed](https://zed.mysprykershop.com/development/dependency-provider-plugin-usage). diff --git a/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md b/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md index a0e3f4b43a..d52ef6c7e2 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md +++ b/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md @@ -14,7 +14,7 @@ related: link: docs/dg/dev/backend-development/zed/business-layer/business-models.html --- -To throw an exception, you need to define your own type of exception. Later, it is much easier to handle exceptions when the type represents a specific type of error. +To throw an exception, you need to define your own type of exception. Later, it's much easier to handle exceptions when the type represents a specific type of error. {% info_block errorBox %} diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md b/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md index 6f4322ed25..77b0c252ed 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md @@ -45,7 +45,7 @@ class GlossaryFacade extends AbstractFacade When you look at the `deleteKey()` method, observe the following: -* The method's name expresses exactly what happens. It uses the terms of the related terminology, but it is easy to grasp what happens ("A key is deleted"). +* The method's name expresses exactly what happens. It uses the terms of the related terminology, but it's easy to grasp what happens ("A key is deleted"). * The method does not contain any control logic, like `if` or `foreach` statements; it just delegates to the business model and calls the right method. * The business model KeyManager is created using the factory, so it does not need to know how the class is created. diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md b/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md index 7e405c576f..1029adac74 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md @@ -51,5 +51,5 @@ Based on the name, this method "saves a customer". So the contract is as follows **Additional information**: * *The post-conditions are complete*. Any other behavior is not expected here—for example, this method must not send an email to a customer to confirm the change. -* *This method must not return anything*. You could think of a boolean return value if the email cannot be changed. But then this method would do two things. Therefore, it is a better approach to have another `doesEmailExist($email)` method for the pre-check. +* *This method must not return anything*. You could think of a boolean return value if the email cannot be changed. But then this method would do two things. Therefore, it's a better approach to have another `doesEmailExist($email)` method for the pre-check. * *If the preconditions are not valid, the method must throw an exception*. In this case, if the email address already exists, the `EmailAlreadyExistsException` exception is thrown. diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md b/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md index 929dcf419c..91e4f30c88 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md @@ -31,7 +31,7 @@ The `src/Orm/Propel` folder is for the following: * Configuration in Propel format (generated `propel.json`—don't touch it). * Copy of merged schema files (don't touch). -* Migration files (can be in `.gitignore` or can be committed; the decision is made on the project level. We recommend using `.gitignore`; however Propel documentation says that "On a project using version control, it is important to commit the migration classes to the code repository. That way, other developers checking out the project just have to run the same migrations to get a database in a similar state". +* Migration files (can be in `.gitignore` or can be committed; the decision is made on the project level. We recommend using `.gitignore`; however Propel documentation says that "On a project using version control, it's important to commit the migration classes to the code repository. That way, other developers checking out the project just have to run the same migrations to get a database in a similar state". The `src/Orm/Zed` folder is for the following: diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md b/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md index 77dd6aea55..8f5ce78261 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md @@ -79,14 +79,14 @@ The workflow can be described like this: ## Schema file merge -Sometimes it is useful to add columns to a table that belongs to another module. Possible use cases are: +Sometimes it's useful to add columns to a table that belongs to another module. Possible use cases are: * A core module wants to inject a foreign key into a table from another core module. This happens when the dependency direction is in contrast to the direction of the relation. * A project module wants to add a column to a table from a core module. When you add a column to a core table, this column must not be mandatory. Otherwise, the core classes, not knowing the mandatory fields, become unusable and, thus, have to be overwritten. This makes updating more difficult. In most cases, you need to avoid adding a column to a core table, as it can cause compatibility problems in the future. -What happens when the next release adds a column with the same name but another meaning? To avoid this problem, it is a good practice to add a new table and use a one-to-one relationship. +What happens when the next release adds a column with the same name but another meaning? To avoid this problem, it's a good practice to add a new table and use a one-to-one relationship. ### Merge workflow diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md b/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md index ad41326738..dbd6baa786 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md @@ -30,7 +30,7 @@ As an example of using an entity manager, see the [Company module](https://githu ## Entity transfers -With the Publish and Synchronize feature, we have added a new transfer generation for `EntityTransfers`. The `EntityTransfers` are a direct representation of SQL tables. `EntityTransfer` has all properties, and relations defined and holds FQCN to the Propel entity it is mapped to. This FQCN is used when mapping the entity as the data is persisted. +With the Publish and Synchronize feature, we have added a new transfer generation for `EntityTransfers`. The `EntityTransfers` are a direct representation of SQL tables. `EntityTransfer` has all properties, and relations defined and holds FQCN to the Propel entity it's mapped to. This FQCN is used when mapping the entity as the data is persisted. ## AbstractEntityManager class diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md index b2541fceba..5d0248bd90 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md @@ -36,6 +36,6 @@ As you can see `src/Orm/Zed/` the query object which belongs to the Spryker core The `Propel` module alters the rules of generating query models by requiring explicit passing of filtering criteria into `filterBy..` and `findBy...` methods. -This means, that when an array, `LIKE` expression or an array with `min/max` are passed as a filtering argument, it is explicitly required to specify `Criteria::IN`, `Criteria::LIKE` or `Criteria::BETWEEN`. The `Criteria::BETWEEN` is implemented in the wrapper class `Spryker\Zed\Propel\Business\Runtime\ActiveQuery\Criteria`. +This means, that when an array, `LIKE` expression or an array with `min/max` are passed as a filtering argument, it's explicitly required to specify `Criteria::IN`, `Criteria::LIKE` or `Criteria::BETWEEN`. The `Criteria::BETWEEN` is implemented in the wrapper class `Spryker\Zed\Propel\Business\Runtime\ActiveQuery\Criteria`. Additionally the `Propel` module adds the following methods into the generated classes, that allow to easily filter: `filterBy...._In()`, `filterBy...._Like()` and `filterBy...._Between()`. diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/repository.md b/docs/dg/dev/backend-development/zed/persistence-layer/repository.md index deaf6634e8..cede4912da 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/repository.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/repository.md @@ -53,7 +53,7 @@ class BlogRepository extends AbstractRepository implements BlogRepositoryInterfa ## EntityTransfers -With the Publish and Synchronize feature, we have added a new transfer generation for `EntityTransfers`. The `EntityTransfers` are a direct representation of SQL tables, `EntityTransfer` has all properties and relations defined, also it holds FQCN to the Propel entity it is mapped to. This FQCN is used when mapping entity when data is persisted. Names of `EntityTransfers` start with `Spy`, followed by the table name, and then the `EntityTransfer` suffix. For example, `SpyBlogEntityTransfer` would map to SpyBlog Propel entity. +With the Publish and Synchronize feature, we have added a new transfer generation for `EntityTransfers`. The `EntityTransfers` are a direct representation of SQL tables, `EntityTransfer` has all properties and relations defined, also it holds FQCN to the Propel entity it's mapped to. This FQCN is used when mapping entity when data is persisted. Names of `EntityTransfers` start with `Spy`, followed by the table name, and then the `EntityTransfer` suffix. For example, `SpyBlogEntityTransfer` would map to SpyBlog Propel entity. ## Abstract Repository Class diff --git a/docs/dg/dev/best-practices/basic-seo-techniques-to-use-in-your-project.md b/docs/dg/dev/best-practices/basic-seo-techniques-to-use-in-your-project.md index 7e05d4473d..351d55fc7b 100644 --- a/docs/dg/dev/best-practices/basic-seo-techniques-to-use-in-your-project.md +++ b/docs/dg/dev/best-practices/basic-seo-techniques-to-use-in-your-project.md @@ -26,7 +26,7 @@ It is important to use the `h1` heading. However, the number of `h1` elements on {% endinfo_block %} -For example, on a catalog page, `h1` is the name of the chosen category. Or, on a product details page, it is the product name. +For example, on a catalog page, `h1` is the name of the chosen category. Or, on a product details page, it's the product name. Then `h2` and `h3` subheadings are used to introduce different sections. Those individual sections might also use more specific headers (`h3` tags, then `h4` tags) to introduce sub-sections. It's rare for most content to get deep enough to need to use h4 tags. Check out the headings structure on a catalog page in the Spryker Demo Shop: diff --git a/docs/dg/dev/best-practices/coding-best-practices.md b/docs/dg/dev/best-practices/coding-best-practices.md index 3c7fe1e123..30263d96c1 100644 --- a/docs/dg/dev/best-practices/coding-best-practices.md +++ b/docs/dg/dev/best-practices/coding-best-practices.md @@ -13,12 +13,12 @@ This document outlines a few common PHP coding problems and the recommended solu ## Merging arrays -When merging arrays, one usually uses `array_merge($defaults, $options)`. However, when working with associative arrays (keys are all string identifiers), it is recommended to use the `+` operator. This is not only a lot faster, it also yields more correct results with edge cases. Beware of the switched order in this case: `$mergedOptions = $options + $defaults;` +When merging arrays, one usually uses `array_merge($defaults, $options)`. However, when working with associative arrays (keys are all string identifiers), it's recommended to use the `+` operator. This is not only a lot faster, it also yields more correct results with edge cases. Beware of the switched order in this case: `$mergedOptions = $options + $defaults;` ## Operations per line -To facilitate readability and debugging, it is recommended to use only one operation per line. +To facilitate readability and debugging, it's recommended to use only one operation per line. ## Method size -Long methods tend to have too many responsibilities, and are usually harder to understand and maintain than smaller ones. Therefore it is advisable to stick to the "single responsibility" principle, when a method is just a few lines long. +Long methods tend to have too many responsibilities, and are usually harder to understand and maintain than smaller ones. Therefore it's advisable to stick to the "single responsibility" principle, when a method is just a few lines long. diff --git a/docs/dg/dev/data-import/202311.0/data-importers-implementation.md b/docs/dg/dev/data-import/202311.0/data-importers-implementation.md index 022de1037e..542fd34373 100644 --- a/docs/dg/dev/data-import/202311.0/data-importers-implementation.md +++ b/docs/dg/dev/data-import/202311.0/data-importers-implementation.md @@ -212,7 +212,7 @@ These actions should be enough to prepare a module-based importer to use. * Product Set Content Item Importer * Tax Importer -Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it is possible to append it directly to the `DataImport` module on the project level. +Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it's possible to append it directly to the `DataImport` module on the project level. To append a data importer to the DataImport module, do the following: diff --git a/docs/dg/dev/data-import/202311.0/importing-data-with-the-queue-data-importer.md b/docs/dg/dev/data-import/202311.0/importing-data-with-the-queue-data-importer.md index a42005aa45..3893a94aa7 100644 --- a/docs/dg/dev/data-import/202311.0/importing-data-with-the-queue-data-importer.md +++ b/docs/dg/dev/data-import/202311.0/importing-data-with-the-queue-data-importer.md @@ -23,7 +23,7 @@ Also, queue data import allows you to use different import groups. ## Why do you need it? -Mainly, it is used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. +Mainly, it's used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. ## How does it work? diff --git a/docs/dg/dev/data-import/202404.0/data-importers-implementation.md b/docs/dg/dev/data-import/202404.0/data-importers-implementation.md index a160b691db..a17056fd72 100644 --- a/docs/dg/dev/data-import/202404.0/data-importers-implementation.md +++ b/docs/dg/dev/data-import/202404.0/data-importers-implementation.md @@ -212,7 +212,7 @@ These actions should be enough to prepare a module-based importer to use. * Product Set Content Item Importer * Tax Importer -Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it is possible to append it directly to the `DataImport` module on the project level. +Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it's possible to append it directly to the `DataImport` module on the project level. To append a data importer to the DataImport module, do the following: diff --git a/docs/dg/dev/data-import/202404.0/importing-data-with-the-queue-data-importer.md b/docs/dg/dev/data-import/202404.0/importing-data-with-the-queue-data-importer.md index d217365bc8..ef882d2a73 100644 --- a/docs/dg/dev/data-import/202404.0/importing-data-with-the-queue-data-importer.md +++ b/docs/dg/dev/data-import/202404.0/importing-data-with-the-queue-data-importer.md @@ -23,7 +23,7 @@ Also, queue data import allows you to use different import groups. ## Why do you need it? -Mainly, it is used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. +Mainly, it's used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. ## How does it work? diff --git a/docs/dg/dev/data-import/202410.0/data-importers-implementation.md b/docs/dg/dev/data-import/202410.0/data-importers-implementation.md index a160b691db..a17056fd72 100644 --- a/docs/dg/dev/data-import/202410.0/data-importers-implementation.md +++ b/docs/dg/dev/data-import/202410.0/data-importers-implementation.md @@ -212,7 +212,7 @@ These actions should be enough to prepare a module-based importer to use. * Product Set Content Item Importer * Tax Importer -Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it is possible to append it directly to the `DataImport` module on the project level. +Project-level importers work a little bit different. You can still use a module-based approach if you add a new data importer to the project level. Note that it's possible to append it directly to the `DataImport` module on the project level. To append a data importer to the DataImport module, do the following: diff --git a/docs/dg/dev/data-import/202410.0/importing-data-with-the-queue-data-importer.md b/docs/dg/dev/data-import/202410.0/importing-data-with-the-queue-data-importer.md index d217365bc8..ef882d2a73 100644 --- a/docs/dg/dev/data-import/202410.0/importing-data-with-the-queue-data-importer.md +++ b/docs/dg/dev/data-import/202410.0/importing-data-with-the-queue-data-importer.md @@ -23,7 +23,7 @@ Also, queue data import allows you to use different import groups. ## Why do you need it? -Mainly, it is used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. +Mainly, it's used to import data in parallel. Once data is stored in a queue, it can be consumed by several consumers at a time, thus roughly dividing total import execution time by the number of consumers. ## How does it work? diff --git a/docs/dg/dev/example-modules.md b/docs/dg/dev/example-modules.md index 29cda6bc4d..382d6dacf9 100644 --- a/docs/dg/dev/example-modules.md +++ b/docs/dg/dev/example-modules.md @@ -46,7 +46,7 @@ In contrast to Spryker SCCOS core modules, example modules do not adhere to stri * While we do our best to keep things compatible, we can't guarantee forward or backward compatibility. * There is no upgradability support for projects or Demo Shop integrations. * **Learnability:** - While documentation is provided when possible, it is not a firm commitment. We encourage community learning and support. + While documentation is provided when possible, it's not a firm commitment. We encourage community learning and support. * **Maintainability:** * There is no obligation to maintain example modules. * Example modules may be abandoned at any time. diff --git a/docs/dg/dev/frontend-development/202311.0/marketplace/angular-services.md b/docs/dg/dev/frontend-development/202311.0/marketplace/angular-services.md index 8c833c0018..9d2b0616d0 100644 --- a/docs/dg/dev/frontend-development/202311.0/marketplace/angular-services.md +++ b/docs/dg/dev/frontend-development/202311.0/marketplace/angular-services.md @@ -20,7 +20,7 @@ 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. +Using Angular Services methods, the data is maintained throughout the life of an application, that is, it's never refreshed and is always available. #### Component communication using Angular services diff --git a/docs/dg/dev/frontend-development/202311.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md b/docs/dg/dev/frontend-development/202311.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md index 870a34c276..944649aae4 100644 --- a/docs/dg/dev/frontend-development/202311.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md +++ b/docs/dg/dev/frontend-development/202311.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md @@ -37,7 +37,7 @@ This document explains the Table Feature Batch Actions component in the Componen 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/dg/dev/frontend-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. +To escape the `batch action mode`, it's necessary to unselect the table rows. Check out an example usage of the Table Feature Batch Actions in the `@spryker/table` config. diff --git a/docs/dg/dev/frontend-development/202311.0/marketplace/ui-components-library/data-transformers/data-transformers.md b/docs/dg/dev/frontend-development/202311.0/marketplace/ui-components-library/data-transformers/data-transformers.md index 6ee35ca268..230380540a 100644 --- a/docs/dg/dev/frontend-development/202311.0/marketplace/ui-components-library/data-transformers/data-transformers.md +++ b/docs/dg/dev/frontend-development/202311.0/marketplace/ui-components-library/data-transformers/data-transformers.md @@ -136,7 +136,7 @@ export class CustomDataTransformerService implements export class RootModule {} ``` -The context in which the Data Transformer operates is determined by the local injector where it is being used. +The context in which the Data Transformer operates is determined by the local injector where it's being used. ## Interfaces diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md index d590ac30e9..6214c4109e 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md @@ -34,7 +34,7 @@ In this example, the `inject` method is used to resolve a dependency based on a ## Multi-providers -Most dependencies in an application correspond to only one value, like a class. In some cases, it is useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. +Most dependencies in an application correspond to only one value, like a class. In some cases, it's useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. There are different types of multi-providers based on location an number of asterisks(`*`) in the name of their tokens. They are described in the following sections. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection.md index ac547f6b48..95c25ffb04 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/dependency-injection/dependency-injection.md @@ -14,7 +14,7 @@ Dependency injection (DI) is a design pattern that provides loosely-coupled, mai In the context of Oryx, DI enables you to customize logic deep inside the framework, which is particularly useful for projects with complex or rapidly-evolving requirements. Without DI, you need to override large portions of the logic or create a lot of boilerplate code. By leveraging DI, you can override logic while still being able to upgrade to new versions of Oryx. -The key advantage of using Oryx's DI implementation is that it is vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. +The key advantage of using Oryx's DI implementation is that it's vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. ## Next step diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md index 82686e05cd..2f357d4cbe 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md @@ -14,7 +14,7 @@ To compose a frontend application from different backend APIs, Oryx provides a f ## Data models -In modern web applications, it is common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. +In modern web applications, it's common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. In the Oryx framework, adapters transform API responses into a client model. Adapters make HTTP requests to load data from APIs and provide normalizers or serializers to transform the data into a more readable format. This is especially important when working with complex data standards like JSON-API, as they can be difficult for a component to work with directly. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactive-components.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactive-components.md index 34aff77d1d..0b6730e1dd 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactive-components.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactive-components.md @@ -18,7 +18,7 @@ export class ProductPriceComponent extends LitElement { } ``` -To ensure that components are reusable in different contexts, it is recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. +To ensure that components are reusable in different contexts, it's recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. `ProductController` resolves the product qualifier (SKU) from the context and returns an observable from `ProductService`. If an SKU is provided statically to the component, `ProductController` also takes `sku` as a component property into account. This can be useful in custom development or for demonstrating the component—for example, in a Storybook. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactivity.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactivity.md index a0bf1d0ff8..472954e0ba 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactivity.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/reactivity.md @@ -20,7 +20,7 @@ This is achieved by establishing a connection between the user interface and the Implementing reactivity in a web application is a complex challenge, especially in an SPA where data is loaded asynchronously and in real time from a backend API. Various components dynamically request the same data, and updates of the application state must be managed in a highly efficient way. -The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it is shown using a product component. +The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it's shown using a product component. {% include diagrams/oryx/reactivity-high-level.md %} diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/signals.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/signals.md index fbbeb20196..85417a685f 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/signals.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/reactivity/signals.md @@ -117,7 +117,7 @@ class MyComponent extends LitElement {} This decorator is required to make a component work with signals as expected. With the decorator, the component automatically detects signals and renders changes whenever a signal alters. It does this intelligently, considering only the signals relevant to the last render. -Some Oryx domain components are not using this decorator directly, as it is already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. +Some Oryx domain components are not using this decorator directly, as it's already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. ### `@elementEffect` directive diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md index 3d4fbd9143..8120c83aaf 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md @@ -119,7 +119,7 @@ appBuilder().withOptions({'your-feature-key': {...}}); ### Define default values for feature options -To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it is used when a user does not provide any option: +To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it's used when a user does not provide any option: ```ts import { AppFeature } from '@spryker-oryx/core'; diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md index a39b77ead6..8dce2cc070 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md @@ -114,7 +114,7 @@ You can create custom plugins to change the behavior of an Oryx application. The - `apply()`: main life-cycle method. - `destroy()`: Optional cleanup method. -When a plugin is registered to the Oryx application builder, it is _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. +When a plugin is registered to the Oryx application builder, it's _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. The following additional plugin life-cycle methods are invoked around the main lifecycle of _all_ plugins: diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-typography.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-typography.md index 406829e3ed..f73666307f 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-typography.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-typography.md @@ -93,7 +93,7 @@ The headings get `margin: 0` to avoid any clashes in the component layout. ### Semantic HTML structure versus UI -The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it is considered a violation of accessibility best practices. +The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it's considered a violation of accessibility best practices. A valid structure, however, might conflict with the UI design. UI designers use the headings in combination with the layout, which means that their options are more advanced compared to the structure only. UI designers tend to ignore the structure and favor layout options to emphasize sections of a page. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-component-types.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-component-types.md index 230042e35f..6b5db46569 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-component-types.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-component-types.md @@ -42,7 +42,7 @@ Oryx functionality is organized in domains. Domain packages contain functional c Domain components leverage the design system components to ensure a consistent UI/UX. The design system components are integrated with inputs (properties), and all of their events are handled by domain components. -Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it is changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. +Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it's changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. Each domain package contains associated domain components. Product components, for example, are part of the `@spryker-oryx/ui` package. The components use a consistent naming convention for class and element names. For example, the Product Title component, is named `ProductTitleComponent` and can be used with the `` element. To avoid clashes with other frameworks, the elements are prefixed with `oryx-`. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-implementing-components.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-implementing-components.md index 87ba7c6cd9..07a7a6df17 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-implementing-components.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-implementing-components.md @@ -8,7 +8,7 @@ redirect_from: --- -Oryx components are web components built with [Lit](https://lit.dev). Lit is a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. +Oryx components are web components built with [Lit](https://lit.dev). Lit's a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. ## Implementing a component @@ -155,7 +155,7 @@ If your application needs to be indexed by crawlers, such as Google Search or Pi When a component is server-side rendered, some of the browser APIs are not available. Most commonly known are the `window` and `document` objects. Take this into account when implementing custom components. -Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it is needed. +Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it's needed. When developing a component, you need to configure the hydration trigger using the `@hydrate` decorator that can take an event or context. The following example shows how to set up the component to be hydrated when the context is changed: diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md index 4c220a0116..9ba8320767 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md @@ -121,7 +121,7 @@ protected override render(): TemplateResult { ## Using component options -To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. +To use component options asynchronously, it's important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-boilerplate.md b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-boilerplate.md index 19e100f83d..ec7aaedc33 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-boilerplate.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-boilerplate.md @@ -64,7 +64,7 @@ The following is a breakdown of the different bits of the boilerplate code. ### `package.json` -`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it is a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. +`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it's a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. That being said, having unused dependencies in your project does _not_ affect the build time or run time of your project. It is only an overhead during the installation process. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-technology.md b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-technology.md index a0070f107c..9799a2c8f1 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-technology.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-technology.md @@ -50,7 +50,7 @@ In Oryx, Web Components are used to create reusable UI components that can be us ## Lit -Lit is a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit is used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. +Lit's a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit's used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. You can use Lit to customize Oryx, but you can also use another framework to build web components. Advantages of using Lit: - Reusable component mixins and controllers. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-versioning.md b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-versioning.md index 97e76d4573..666e0a1fd0 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-versioning.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/getting-started/oryx-versioning.md @@ -65,7 +65,7 @@ Oryx consists of a range of packages, applications, and tools. To avoid inadvert ## Backward compatibility -The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it is removed completely only after a few releases. +The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it's removed completely only after a few releases. Minor releases are fully backward compatible and do not require any developer assistance. diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/atomic-frontend.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/atomic-frontend.md index 851f9ff9d5..593c7d40ba 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/atomic-frontend.md @@ -58,7 +58,7 @@ Based on their structure and use, all components are divided into the following * *Atom*. These are the smallest, most basic building blocks of UI design. Typical examples of atoms are labels, input fields, or buttons. Usually, atoms are very abstract in their essence and limited to a single functionality that can be included in many pages. They are not very useful by themselves. Being the smallest building block of atomic design, atoms cannot include other components. * *Molecules*. Molecules typically include two or more atoms or other molecules bonded together to serve a single purpose. These structures are already complex enough to have their own properties; however, they must not be overcomplicated and built for wide reuse. * *Organisms*. Such components are rather specific and already provide sufficient context for the molecules and atoms they are composed of. Usually, organisms do not form a certain page, but they are rather specific as to what they do and what is their function. Typical examples of organisms can include a header, a footer, or a sidebar. Such components are already complex enough to be used directly on a page. -* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it is available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it is recommended to limit the use of widgets as much as possible in your projects. +* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it's available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it's recommended to limit the use of widgets as much as possible in your projects. * *Templates*. Templates can be viewed as combinations of components composed according to a specific graphic layout. They are used to define a visual schema for a set of pages. Typically, pages with a common template have the same structure and share most of the content with the exception of a small portion of page-specific or widget-specific information that changes from page to page. Thus, a template serves as a backbone that defines a set of shared components and the overall layout. Examples of templates are the main site layout or the checkout layout. * *Views*. This is the highest point in the frontend hierarchy. A view is a template filled with specific content for use in a specific case. It represents a specific page or widget. Views are the only components that can be called by the backend directly which means that they also serve as a connection point between the backend and frontend. On the backend side, views are always connected to controllers. @@ -289,7 +289,7 @@ When defining a component template with Twig, you need to use the following defa **Attributes:** * `name` (required). It specifies the component name. This name is also used as the main class name for the component; therefore, the HTML element and modifiers have this name as the base. - * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it is created automatically by prefing `js-` to the component name. + * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it's created automatically by prefing `js-` to the component name. * `tag` (optional). It specifies the HTML tag name for the component. Every component is defined in the DOM as an HTML class with its dedicated tag name. Therefore, a tag name must be specified. You can use either a standard HTML5 tag name (for example, `p` or `td`) or have a custom element tag name in order to attach Javascript behavior. To create a component with custom behavior defined in Javascript, Web Component specification, specify a custom tag name. If tag name is not specified, `div`is used by default. * `data`. It is the variable defining the data contract for the component. This variable is used the data contract for the component. The contract consists of the attributes required for the component to function properly. The attributes provided by this variable can be either required or optional. Required attributes must always be defined whenever a component is used, while optional ones can be left undefined. Nevertheless, by convention, attributes cannot have their value undefined. For this reason, if you define an optional attribute in your contract, you must set a default value for it. The default value is used if an attribute value is not set explicitly or by context. @@ -479,7 +479,7 @@ export default class ComponentName extends Component { } ``` -The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it is derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: +The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it's derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: ```ts // Import class SideDrawer @@ -499,7 +499,7 @@ The `index.ts` file is required to load the client-side of the component with We To register the component in the DOM, you need to use the `register` function of the shop application. It accepts two arguments: -* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it is used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. +* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it's used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. * `importer`. It must be a call of Webpack's import function to import Typescript code for the component. The call must include a Webpack magic comment that specifies which type of import you want for the component, 'lazy' or 'eager'. For details, see [Dynamic Imports](https://webpack.js.org/guides/code-splitting/#dynamic-imports). diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/customizing-spryker-frontend.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/customizing-spryker-frontend.md index 4dc1311a26..a63ad0768d 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/customizing-spryker-frontend.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/customizing-spryker-frontend.md @@ -28,7 +28,7 @@ This guide reviews customizing Spryker UI on each of these levels. ## Twig -The visual layout of each component, whether it is a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. +The visual layout of each component, whether it's a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. For more information about Twig basics, see [Twig Homepage](https://twig.symfony.com/). diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md index 31e3add119..6c85eb8d94 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md @@ -188,6 +188,6 @@ $('.any-target-selector').countdown('2100/01/01', function (event: any) { {% info_block errorBox %} -Make sure that it is invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). +Make sure that it's invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). {% endinfo_block %} diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/extending-components.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/extending-components.md index 823d82f3b8..0554c86063 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/extending-components.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/extending-components.md @@ -22,7 +22,7 @@ Let us review the process of extending a component on the example of **side-draw ![Open side drawer](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Customize+Frontend/open-side-drawer.png) -The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it is present on a page. Also, the component outlook will be different. +The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it's present on a page. Also, the component outlook will be different. ## 1. Create component folder @@ -66,7 +66,7 @@ Now, let us customize the template of the source component. The original templa Apart from changing the icon, we are going to use different colors. This can be done via styles. -First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it is a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. +First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it's a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. Let us create file `new-existing-component-side-drawer.scss`, include the original mixin of the _side-drawer_ component, and pass the class name of the new component we are creating: diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/overriding-components.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/overriding-components.md index 382ef41006..075d3f83f8 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/overriding-components.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/overriding-components.md @@ -41,7 +41,7 @@ To override the global component, the Twig file name on the project level must b } {% raw %}%}{% endraw %} ``` -Since the new component will be used everywhere instead of the global one, it is also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. +Since the new component will be used everywhere instead of the global one, it's also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. As we are not going to change the component template, let us copy the whole of the source twig implementation (`vendor/spryker-shop/shop-ui/src/SprykerShop/Yves/ShopUi/Theme/default/components/molecules/simple-carousel/simple-carousel.twig`) to the project level (`src/Pyz/Yves/ShopUi/Theme/default/components/molecules/simple-carousel.twig`). The Twig file will look as follows: diff --git a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/using-components.md b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/using-components.md index b6f9784c01..bc257b0f17 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/using-components.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/atomic-frontend/managing-components/using-components.md @@ -69,7 +69,7 @@ For more details, see section _Twig_ in [Atomic Frontend](/docs/dg/dev/frontend- ## Include -By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it is added. +By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it's added. The following block demonstrates how to include component `new-component-counter`. ```twig diff --git a/docs/dg/dev/frontend-development/202311.0/yves/frontend-assets-building-and-loading.md b/docs/dg/dev/frontend-development/202311.0/yves/frontend-assets-building-and-loading.md index a94bbee40f..9352853595 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/frontend-assets-building-and-loading.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/frontend-assets-building-and-loading.md @@ -22,7 +22,7 @@ To support the assets loading behavior as described above, most pages considered For the landing pages, there is the `page-critical-path` layout defining the asset's loading behavior. It is an extension of the `page-blank` layout with the overwritten `nonCriticalStyles` and `styleLazyLoader` blocks. The `page-critical-path` contains a `style-loader` component before the closing tag of ``. The `style-loader` component is responsible for loading the non-critical CSS only after the whole page is loaded. -The `page-critical-path` layout uses cookies to track whether it is the first session on the site. If it is the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. +The `page-critical-path` layout uses cookies to track whether it's the first session on the site. If it's the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. The main purpose of the page-critical-path layout is to use the CSS Lazy Load only for the landing pages. To enable the CSS Lazy Load for your project, see [Frontend CSS Lazy Load integration](/docs/dg/dev/integrate-and-configure/integrate-css-lazy-loading.html). @@ -46,7 +46,7 @@ A *polyfill* is a code that is used to provide modern functionality for older br ## Cache-busting mechanism -The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it is a development environment, the `assets` folder is in a public `assets` folder rather than a container. +The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it's a development environment, the `assets` folder is in a public `assets` folder rather than a container. ## `isCssLazyLoadSupported` Twig variable diff --git a/docs/dg/dev/frontend-development/202311.0/yves/frontend-builder-for-yves.md b/docs/dg/dev/frontend-development/202311.0/yves/frontend-builder-for-yves.md index 30a021c693..396cbb5146 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/frontend-builder-for-yves.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/frontend-builder-for-yves.md @@ -96,7 +96,7 @@ class TwigConfig extends SprykerTwigConfig All public assets are generated into `/public/Yves/` plus the path defined in the config file, which is `assets/%namespace%/%theme%/` by default. -For example, for the `DE` namespace and default theme, it is`/public/Yves/assets/DE/default/`. +For example, for the `DE` namespace and default theme, it's`/public/Yves/assets/DE/default/`. All incoming files (images, fonts, etc.) are copied from `global` (for every namespace) and `DE` folders: diff --git a/docs/dg/dev/frontend-development/202404.0/marketplace/angular-services.md b/docs/dg/dev/frontend-development/202404.0/marketplace/angular-services.md index 4f3f6c8acd..cd8881a5dc 100644 --- a/docs/dg/dev/frontend-development/202404.0/marketplace/angular-services.md +++ b/docs/dg/dev/frontend-development/202404.0/marketplace/angular-services.md @@ -20,7 +20,7 @@ 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. +Using Angular Services methods, the data is maintained throughout the life of an application, that is, it's never refreshed and is always available. #### Component communication using Angular services diff --git a/docs/dg/dev/frontend-development/202404.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md b/docs/dg/dev/frontend-development/202404.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md index 1af2feaf23..ff8232b5a9 100644 --- a/docs/dg/dev/frontend-development/202404.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md +++ b/docs/dg/dev/frontend-development/202404.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md @@ -37,7 +37,7 @@ This document explains the Table Feature Batch Actions component in the Componen 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/dg/dev/frontend-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. +To escape the `batch action mode`, it's necessary to unselect the table rows. Check out an example usage of the Table Feature Batch Actions in the `@spryker/table` config. diff --git a/docs/dg/dev/frontend-development/202404.0/marketplace/ui-components-library/data-transformers/data-transformers.md b/docs/dg/dev/frontend-development/202404.0/marketplace/ui-components-library/data-transformers/data-transformers.md index 1fdbbfcd89..782bb5430c 100644 --- a/docs/dg/dev/frontend-development/202404.0/marketplace/ui-components-library/data-transformers/data-transformers.md +++ b/docs/dg/dev/frontend-development/202404.0/marketplace/ui-components-library/data-transformers/data-transformers.md @@ -136,7 +136,7 @@ export class CustomDataTransformerService implements export class RootModule {} ``` -The context in which the Data Transformer operates is determined by the local injector where it is being used. +The context in which the Data Transformer operates is determined by the local injector where it's being used. ## Interfaces diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md index 10aecded4e..8ea3cef5a2 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md @@ -34,7 +34,7 @@ In this example, the `inject` method is used to resolve a dependency based on a ## Multi-providers -Most dependencies in an application correspond to only one value, like a class. In some cases, it is useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. +Most dependencies in an application correspond to only one value, like a class. In some cases, it's useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. There are different types of multi-providers based on location an number of asterisks(`*`) in the name of their tokens. They are described in the following sections. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection.md index facb315f08..d5a337bbeb 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/dependency-injection/dependency-injection.md @@ -14,7 +14,7 @@ Dependency injection (DI) is a design pattern that provides loosely-coupled, mai In the context of Oryx, DI enables you to customize logic deep inside the framework, which is particularly useful for projects with complex or rapidly-evolving requirements. Without DI, you need to override large portions of the logic or create a lot of boilerplate code. By leveraging DI, you can override logic while still being able to upgrade to new versions of Oryx. -The key advantage of using Oryx's DI implementation is that it is vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. +The key advantage of using Oryx's DI implementation is that it's vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. ## Next step diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md index 0db2e87132..e214b37efb 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md @@ -14,7 +14,7 @@ To compose a frontend application from different backend APIs, Oryx provides a f ## Data models -In modern web applications, it is common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. +In modern web applications, it's common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. In the Oryx framework, adapters transform API responses into a client model. Adapters make HTTP requests to load data from APIs and provide normalizers or serializers to transform the data into a more readable format. This is especially important when working with complex data standards like JSON-API, as they can be difficult for a component to work with directly. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactive-components.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactive-components.md index 9d96b7308c..713bd391ca 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactive-components.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactive-components.md @@ -18,7 +18,7 @@ export class ProductPriceComponent extends LitElement { } ``` -To ensure that components are reusable in different contexts, it is recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. +To ensure that components are reusable in different contexts, it's recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. `ProductController` resolves the product qualifier (SKU) from the context and returns an observable from `ProductService`. If an SKU is provided statically to the component, `ProductController` also takes `sku` as a component property into account. This can be useful in custom development or for demonstrating the component—for example, in a Storybook. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactivity.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactivity.md index 1c9e8965ec..4d96ab0184 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactivity.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/reactivity.md @@ -20,7 +20,7 @@ This is achieved by establishing a connection between the user interface and the Implementing reactivity in a web application is a complex challenge, especially in an SPA where data is loaded asynchronously and in real time from a backend API. Various components dynamically request the same data, and updates of the application state must be managed in a highly efficient way. -The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it is shown using a product component. +The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it's shown using a product component. {% include diagrams/oryx/reactivity-high-level.md %} diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/signals.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/signals.md index 2e35806be3..a6f92dcd9b 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/signals.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/reactivity/signals.md @@ -117,7 +117,7 @@ class MyComponent extends LitElement {} This decorator is required to make a component work with signals as expected. With the decorator, the component automatically detects signals and renders changes whenever a signal alters. It does this intelligently, considering only the signals relevant to the last render. -Some Oryx domain components are not using this decorator directly, as it is already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. +Some Oryx domain components are not using this decorator directly, as it's already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. ### `@elementEffect` directive diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md index 8ce85c89a8..79696bb564 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md @@ -119,7 +119,7 @@ appBuilder().withOptions({'your-feature-key': {...}}); ### Define default values for feature options -To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it is used when a user does not provide any option: +To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it's used when a user does not provide any option: ```ts import { AppFeature } from '@spryker-oryx/core'; diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md index 12f074dd38..557dfa5d51 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md @@ -114,7 +114,7 @@ You can create custom plugins to change the behavior of an Oryx application. The - `apply()`: main life-cycle method. - `destroy()`: Optional cleanup method. -When a plugin is registered to the Oryx application builder, it is _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. +When a plugin is registered to the Oryx application builder, it's _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. The following additional plugin life-cycle methods are invoked around the main lifecycle of _all_ plugins: diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-typography.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-typography.md index c794c492ac..2bab0735ad 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-typography.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-typography.md @@ -93,7 +93,7 @@ The headings get `margin: 0` to avoid any clashes in the component layout. ### Semantic HTML structure versus UI -The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it is considered a violation of accessibility best practices. +The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it's considered a violation of accessibility best practices. A valid structure, however, might conflict with the UI design. UI designers use the headings in combination with the layout, which means that their options are more advanced compared to the structure only. UI designers tend to ignore the structure and favor layout options to emphasize sections of a page. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-component-types.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-component-types.md index bda740dc82..0b895bac85 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-component-types.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-component-types.md @@ -42,7 +42,7 @@ Oryx functionality is organized in domains. Domain packages contain functional c Domain components leverage the design system components to ensure a consistent UI/UX. The design system components are integrated with inputs (properties), and all of their events are handled by domain components. -Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it is changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. +Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it's changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. Each domain package contains associated domain components. Product components, for example, are part of the `@spryker-oryx/ui` package. The components use a consistent naming convention for class and element names. For example, the Product Title component, is named `ProductTitleComponent` and can be used with the `` element. To avoid clashes with other frameworks, the elements are prefixed with `oryx-`. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-implementing-components.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-implementing-components.md index 9161577319..15f31cce93 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-implementing-components.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-implementing-components.md @@ -8,7 +8,7 @@ redirect_from: --- -Oryx components are web components built with [Lit](https://lit.dev). Lit is a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. +Oryx components are web components built with [Lit](https://lit.dev). Lit's a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. ## Implementing a component @@ -155,7 +155,7 @@ If your application needs to be indexed by crawlers, such as Google Search or Pi When a component is server-side rendered, some of the browser APIs are not available. Most commonly known are the `window` and `document` objects. Take this into account when implementing custom components. -Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it is needed. +Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it's needed. When developing a component, you need to configure the hydration trigger using the `@hydrate` decorator that can take an event or context. The following example shows how to set up the component to be hydrated when the context is changed: diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md index d81b74f42d..6a1dd2177c 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md @@ -121,7 +121,7 @@ protected override render(): TemplateResult { ## Using component options -To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. +To use component options asynchronously, it's important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-boilerplate.md b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-boilerplate.md index 022ed2fe44..83d8d871f1 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-boilerplate.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-boilerplate.md @@ -64,7 +64,7 @@ The following is a breakdown of the different bits of the boilerplate code. ### `package.json` -`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it is a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. +`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it's a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. That being said, having unused dependencies in your project does _not_ affect the build time or run time of your project. It is only an overhead during the installation process. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-technology.md b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-technology.md index d2ee1d78eb..c25c09d2d0 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-technology.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-technology.md @@ -50,7 +50,7 @@ In Oryx, Web Components are used to create reusable UI components that can be us ## Lit -Lit is a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit is used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. +Lit's a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit's used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. You can use Lit to customize Oryx, but you can also use another framework to build web components. Advantages of using Lit: - Reusable component mixins and controllers. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-versioning.md b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-versioning.md index 995ab038bd..797ed43832 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-versioning.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/getting-started/oryx-versioning.md @@ -65,7 +65,7 @@ Oryx consists of a range of packages, applications, and tools. To avoid inadvert ## Backward compatibility -The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it is removed completely only after a few releases. +The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it's removed completely only after a few releases. Minor releases are fully backward compatible and do not require any developer assistance. diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/atomic-frontend.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/atomic-frontend.md index 3aa5feaea6..323cf4ce9f 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/atomic-frontend.md @@ -58,7 +58,7 @@ Based on their structure and use, all components are divided into the following * *Atom*. These are the smallest, most basic building blocks of UI design. Typical examples of atoms are labels, input fields, or buttons. Usually, atoms are very abstract in their essence and limited to a single functionality that can be included in many pages. They are not very useful by themselves. Being the smallest building block of atomic design, atoms cannot include other components. * *Molecules*. Molecules typically include two or more atoms or other molecules bonded together to serve a single purpose. These structures are already complex enough to have their own properties; however, they must not be overcomplicated and built for wide reuse. * *Organisms*. Such components are rather specific and already provide sufficient context for the molecules and atoms they are composed of. Usually, organisms do not form a certain page, but they are rather specific as to what they do and what is their function. Typical examples of organisms can include a header, a footer, or a sidebar. Such components are already complex enough to be used directly on a page. -* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it is available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it is recommended to limit the use of widgets as much as possible in your projects. +* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it's available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it's recommended to limit the use of widgets as much as possible in your projects. * *Templates*. Templates can be viewed as combinations of components composed according to a specific graphic layout. They are used to define a visual schema for a set of pages. Typically, pages with a common template have the same structure and share most of the content with the exception of a small portion of page-specific or widget-specific information that changes from page to page. Thus, a template serves as a backbone that defines a set of shared components and the overall layout. Examples of templates are the main site layout or the checkout layout. * *Views*. This is the highest point in the frontend hierarchy. A view is a template filled with specific content for use in a specific case. It represents a specific page or widget. Views are the only components that can be called by the backend directly which means that they also serve as a connection point between the backend and frontend. On the backend side, views are always connected to controllers. @@ -289,7 +289,7 @@ When defining a component template with Twig, you need to use the following defa **Attributes:** * `name` (required). It specifies the component name. This name is also used as the main class name for the component; therefore, the HTML element and modifiers have this name as the base. - * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it is created automatically by prefing `js-` to the component name. + * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it's created automatically by prefing `js-` to the component name. * `tag` (optional). It specifies the HTML tag name for the component. Every component is defined in the DOM as an HTML class with its dedicated tag name. Therefore, a tag name must be specified. You can use either a standard HTML5 tag name (for example, `p` or `td`) or have a custom element tag name in order to attach Javascript behavior. To create a component with custom behavior defined in Javascript, Web Component specification, specify a custom tag name. If tag name is not specified, `div`is used by default. * `data`. It is the variable defining the data contract for the component. This variable is used the data contract for the component. The contract consists of the attributes required for the component to function properly. The attributes provided by this variable can be either required or optional. Required attributes must always be defined whenever a component is used, while optional ones can be left undefined. Nevertheless, by convention, attributes cannot have their value undefined. For this reason, if you define an optional attribute in your contract, you must set a default value for it. The default value is used if an attribute value is not set explicitly or by context. @@ -479,7 +479,7 @@ export default class ComponentName extends Component { } ``` -The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it is derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: +The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it's derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: ```ts // Import class SideDrawer @@ -499,7 +499,7 @@ The `index.ts` file is required to load the client-side of the component with We To register the component in the DOM, you need to use the `register` function of the shop application. It accepts two arguments: -* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it is used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. +* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it's used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. * `importer`. It must be a call of Webpack's import function to import Typescript code for the component. The call must include a Webpack magic comment that specifies which type of import you want for the component, 'lazy' or 'eager'. For details, see [Dynamic Imports](https://webpack.js.org/guides/code-splitting/#dynamic-imports). diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/customizing-spryker-frontend.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/customizing-spryker-frontend.md index 911ac245cb..1220395193 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/customizing-spryker-frontend.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/customizing-spryker-frontend.md @@ -28,7 +28,7 @@ This guide reviews customizing Spryker UI on each of these levels. ## Twig -The visual layout of each component, whether it is a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. +The visual layout of each component, whether it's a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. For more information about Twig basics, see [Twig Homepage](https://twig.symfony.com/). diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md index fc8eccca8b..cb44cbd1c0 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md @@ -188,6 +188,6 @@ $('.any-target-selector').countdown('2100/01/01', function (event: any) { {% info_block errorBox %} -Make sure that it is invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). +Make sure that it's invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). {% endinfo_block %} diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/extending-components.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/extending-components.md index 1a5cac4ad4..d08fc90800 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/extending-components.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/extending-components.md @@ -22,7 +22,7 @@ Let us review the process of extending a component on the example of **side-draw ![Open side drawer](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Customize+Frontend/open-side-drawer.png) -The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it is present on a page. Also, the component outlook will be different. +The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it's present on a page. Also, the component outlook will be different. ## 1. Create component folder @@ -66,7 +66,7 @@ Now, let us customize the template of the source component. The original templa Apart from changing the icon, we are going to use different colors. This can be done via styles. -First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it is a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. +First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it's a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. Let us create file `new-existing-component-side-drawer.scss`, include the original mixin of the _side-drawer_ component, and pass the class name of the new component we are creating: diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/overriding-components.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/overriding-components.md index b9ac523e24..6b85b5418a 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/overriding-components.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/overriding-components.md @@ -41,7 +41,7 @@ To override the global component, the Twig file name on the project level must b } {% raw %}%}{% endraw %} ``` -Since the new component will be used everywhere instead of the global one, it is also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. +Since the new component will be used everywhere instead of the global one, it's also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. As we are not going to change the component template, let us copy the whole of the source twig implementation (`vendor/spryker-shop/shop-ui/src/SprykerShop/Yves/ShopUi/Theme/default/components/molecules/simple-carousel/simple-carousel.twig`) to the project level (`src/Pyz/Yves/ShopUi/Theme/default/components/molecules/simple-carousel.twig`). The Twig file will look as follows: diff --git a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/using-components.md b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/using-components.md index 852c69e44c..977b802188 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/using-components.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/atomic-frontend/managing-components/using-components.md @@ -69,7 +69,7 @@ For more details, see section _Twig_ in [Atomic Frontend](/docs/dg/dev/frontend- ## Include -By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it is added. +By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it's added. The following block demonstrates how to include component `new-component-counter`. ```twig diff --git a/docs/dg/dev/frontend-development/202404.0/yves/frontend-assets-building-and-loading.md b/docs/dg/dev/frontend-development/202404.0/yves/frontend-assets-building-and-loading.md index 966cf259ab..e07950afa2 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/frontend-assets-building-and-loading.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/frontend-assets-building-and-loading.md @@ -22,7 +22,7 @@ To support the assets loading behavior as described above, most pages considered For the landing pages, there is the `page-critical-path` layout defining the asset's loading behavior. It is an extension of the `page-blank` layout with the overwritten `nonCriticalStyles` and `styleLazyLoader` blocks. The `page-critical-path` contains a `style-loader` component before the closing tag of ``. The `style-loader` component is responsible for loading the non-critical CSS only after the whole page is loaded. -The `page-critical-path` layout uses cookies to track whether it is the first session on the site. If it is the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. +The `page-critical-path` layout uses cookies to track whether it's the first session on the site. If it's the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. The main purpose of the page-critical-path layout is to use the CSS Lazy Load only for the landing pages. To enable the CSS Lazy Load for your project, see [Frontend CSS Lazy Load integration](/docs/dg/dev/integrate-and-configure/integrate-css-lazy-loading.html). @@ -46,7 +46,7 @@ A *polyfill* is a code that is used to provide modern functionality for older br ## Cache-busting mechanism -The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it is a development environment, the `assets` folder is in a public `assets` folder rather than a container. +The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it's a development environment, the `assets` folder is in a public `assets` folder rather than a container. ## `isCssLazyLoadSupported` Twig variable diff --git a/docs/dg/dev/frontend-development/202404.0/yves/frontend-builder-for-yves.md b/docs/dg/dev/frontend-development/202404.0/yves/frontend-builder-for-yves.md index 6ccda4b48a..a27c71d705 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/frontend-builder-for-yves.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/frontend-builder-for-yves.md @@ -96,7 +96,7 @@ class TwigConfig extends SprykerTwigConfig All public assets are generated into `/public/Yves/` plus the path defined in the config file, which is `assets/%namespace%/%theme%/` by default. -For example, for the `DE` namespace and default theme, it is`/public/Yves/assets/DE/default/`. +For example, for the `DE` namespace and default theme, it's`/public/Yves/assets/DE/default/`. All incoming files (images, fonts, etc.) are copied from `global` (for every namespace) and `DE` folders: diff --git a/docs/dg/dev/frontend-development/202410.0/marketplace/angular-services.md b/docs/dg/dev/frontend-development/202410.0/marketplace/angular-services.md index 4f3f6c8acd..cd8881a5dc 100644 --- a/docs/dg/dev/frontend-development/202410.0/marketplace/angular-services.md +++ b/docs/dg/dev/frontend-development/202410.0/marketplace/angular-services.md @@ -20,7 +20,7 @@ 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. +Using Angular Services methods, the data is maintained throughout the life of an application, that is, it's never refreshed and is always available. #### Component communication using Angular services diff --git a/docs/dg/dev/frontend-development/202410.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md b/docs/dg/dev/frontend-development/202410.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md index 1af2feaf23..ff8232b5a9 100644 --- a/docs/dg/dev/frontend-development/202410.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md +++ b/docs/dg/dev/frontend-development/202410.0/marketplace/table-design/table-feature-extension/table-feature-batch-actions.md @@ -37,7 +37,7 @@ This document explains the Table Feature Batch Actions component in the Componen 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/dg/dev/frontend-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. +To escape the `batch action mode`, it's necessary to unselect the table rows. Check out an example usage of the Table Feature Batch Actions in the `@spryker/table` config. diff --git a/docs/dg/dev/frontend-development/202410.0/marketplace/ui-components-library/data-transformers/data-transformers.md b/docs/dg/dev/frontend-development/202410.0/marketplace/ui-components-library/data-transformers/data-transformers.md index 1fdbbfcd89..782bb5430c 100644 --- a/docs/dg/dev/frontend-development/202410.0/marketplace/ui-components-library/data-transformers/data-transformers.md +++ b/docs/dg/dev/frontend-development/202410.0/marketplace/ui-components-library/data-transformers/data-transformers.md @@ -136,7 +136,7 @@ export class CustomDataTransformerService implements export class RootModule {} ``` -The context in which the Data Transformer operates is determined by the local injector where it is being used. +The context in which the Data Transformer operates is determined by the local injector where it's being used. ## Interfaces diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md index 10aecded4e..8ea3cef5a2 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection-advanced-strategies.md @@ -34,7 +34,7 @@ In this example, the `inject` method is used to resolve a dependency based on a ## Multi-providers -Most dependencies in an application correspond to only one value, like a class. In some cases, it is useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. +Most dependencies in an application correspond to only one value, like a class. In some cases, it's useful to have dependencies with multiple values, like HTTP interceptors or normalizers. However, it's not very practical to configure these dependencies separately, because the application needs to access them all together at once. Therefore, you can use a special type of dependency that accepts multiple values and is linked to the same dependency injection token. These are called multi-providers. There are different types of multi-providers based on location an number of asterisks(`*`) in the name of their tokens. They are described in the following sections. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection.md index facb315f08..d5a337bbeb 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/dependency-injection/dependency-injection.md @@ -14,7 +14,7 @@ Dependency injection (DI) is a design pattern that provides loosely-coupled, mai In the context of Oryx, DI enables you to customize logic deep inside the framework, which is particularly useful for projects with complex or rapidly-evolving requirements. Without DI, you need to override large portions of the logic or create a lot of boilerplate code. By leveraging DI, you can override logic while still being able to upgrade to new versions of Oryx. -The key advantage of using Oryx's DI implementation is that it is vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. +The key advantage of using Oryx's DI implementation is that it's vanilla JavaScript and can be used in other frameworks as well. Although there are popular DI packages available, using Oryx's implementation ensures seamless integration and compatibility with its features. ## Next step diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md index 0db2e87132..e214b37efb 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/oryx-integration-of-backend-apis.md @@ -14,7 +14,7 @@ To compose a frontend application from different backend APIs, Oryx provides a f ## Data models -In modern web applications, it is common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. +In modern web applications, it's common to communicate with an API to retrieve data. However, the response from an API can be complex and not suitable to be directly used in a component. This is where client models come into play. A _client model_ is a representation of data that is tailored specifically for the needs of a client-side application. In the Oryx framework, adapters transform API responses into a client model. Adapters make HTTP requests to load data from APIs and provide normalizers or serializers to transform the data into a more readable format. This is especially important when working with complex data standards like JSON-API, as they can be difficult for a component to work with directly. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactive-components.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactive-components.md index 9d96b7308c..713bd391ca 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactive-components.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactive-components.md @@ -18,7 +18,7 @@ export class ProductPriceComponent extends LitElement { } ``` -To ensure that components are reusable in different contexts, it is recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. +To ensure that components are reusable in different contexts, it's recommended to not couple them directly with the qualifier that is used to load data. For example, `ProductPriceComponent` does not need to be aware of `SKU`, as `SKU` can be determined from the route of the product page, the product card in a list, or the cart entry. Oryx provides a mechanism to set up a so-called context. In the case of product components, the product controller is used to resolve the SKU from the context controller. `ProductController` resolves the product qualifier (SKU) from the context and returns an observable from `ProductService`. If an SKU is provided statically to the component, `ProductController` also takes `sku` as a component property into account. This can be useful in custom development or for demonstrating the component—for example, in a Storybook. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactivity.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactivity.md index 1c9e8965ec..4d96ab0184 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactivity.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/reactivity.md @@ -20,7 +20,7 @@ This is achieved by establishing a connection between the user interface and the Implementing reactivity in a web application is a complex challenge, especially in an SPA where data is loaded asynchronously and in real time from a backend API. Various components dynamically request the same data, and updates of the application state must be managed in a highly efficient way. -The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it is shown using a product component. +The following is a high-level overview of the reactivity patterns available in Oryx. In the diagram, it's shown using a product component. {% include diagrams/oryx/reactivity-high-level.md %} diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/signals.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/signals.md index 2e35806be3..a6f92dcd9b 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/signals.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/reactivity/signals.md @@ -117,7 +117,7 @@ class MyComponent extends LitElement {} This decorator is required to make a component work with signals as expected. With the decorator, the component automatically detects signals and renders changes whenever a signal alters. It does this intelligently, considering only the signals relevant to the last render. -Some Oryx domain components are not using this decorator directly, as it is already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. +Some Oryx domain components are not using this decorator directly, as it's already applied to some common domain mixins, like `ContentMixin` or `ProductMixin`. ### `@elementEffect` directive diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md index 8ce85c89a8..79696bb564 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-feature.md @@ -119,7 +119,7 @@ appBuilder().withOptions({'your-feature-key': {...}}); ### Define default values for feature options -To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it is used when a user does not provide any option: +To avoid forcing users to repeatedly pass the same kind of values, you can provide default values for your feature options. After you define `AppFeature.defaultOptions` for a feature, it's used when a user does not provide any option: ```ts import { AppFeature } from '@spryker-oryx/core'; diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md index 12f074dd38..557dfa5d51 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/oryx-application-orchestration/oryx-application-plugins.md @@ -114,7 +114,7 @@ You can create custom plugins to change the behavior of an Oryx application. The - `apply()`: main life-cycle method. - `destroy()`: Optional cleanup method. -When a plugin is registered to the Oryx application builder, it is _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. +When a plugin is registered to the Oryx application builder, it's _applied_ by invoking the `AppPlugin.apply()` method with an `App` instance as an argument. Then, the plugin behaves as configured. The following additional plugin life-cycle methods are invoked around the main lifecycle of _all_ plugins: diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-typography.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-typography.md index c794c492ac..2bab0735ad 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-typography.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-typography.md @@ -93,7 +93,7 @@ The headings get `margin: 0` to avoid any clashes in the component layout. ### Semantic HTML structure versus UI -The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it is considered a violation of accessibility best practices. +The semantic usage of heading elements, like h1 or h2, defines the structure, which crawlers and screen readers use to interpret the content. This enables easier content navigation, especially for those with limited sight; screen readers guide and let them skip sections that are not of interest. Consequently, if the structure is not well formatted, for example, when `h3` is followed by an `h5`, it's considered a violation of accessibility best practices. A valid structure, however, might conflict with the UI design. UI designers use the headings in combination with the layout, which means that their options are more advanced compared to the structure only. UI designers tend to ignore the structure and favor layout options to emphasize sections of a page. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-component-types.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-component-types.md index bda740dc82..0b895bac85 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-component-types.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-component-types.md @@ -42,7 +42,7 @@ Oryx functionality is organized in domains. Domain packages contain functional c Domain components leverage the design system components to ensure a consistent UI/UX. The design system components are integrated with inputs (properties), and all of their events are handled by domain components. -Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it is changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. +Domain components integrate with domain services to obtain and update the application state. The services handle the integration with backend APIs and application state management. In a single page application experience, domain components need to support [reactivity](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) to ensure the application state is reflected immediately after it's changed. The complexity of reactivity is avoided as much as possible in components by using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To avoid repeating the boilerplate code that is required for each domain component, domains often provide a mixin. The mixin provides the required properties and signals that can be used by the components. Each domain package contains associated domain components. Product components, for example, are part of the `@spryker-oryx/ui` package. The components use a consistent naming convention for class and element names. For example, the Product Title component, is named `ProductTitleComponent` and can be used with the `` element. To avoid clashes with other frameworks, the elements are prefixed with `oryx-`. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-implementing-components.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-implementing-components.md index 9161577319..15f31cce93 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-implementing-components.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-implementing-components.md @@ -8,7 +8,7 @@ redirect_from: --- -Oryx components are web components built with [Lit](https://lit.dev). Lit is a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. +Oryx components are web components built with [Lit](https://lit.dev). Lit's a lightweight open-source framework from Google that's used to build highly efficient web components. Web components can be created with any framework or even with vanilla HTML, CSS, and JavaScript. You can use any other framework instead of Lit. However, some Oryx utilities, like [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html) and component mixins, are available only with Lit. ## Implementing a component @@ -155,7 +155,7 @@ If your application needs to be indexed by crawlers, such as Google Search or Pi When a component is server-side rendered, some of the browser APIs are not available. Most commonly known are the `window` and `document` objects. Take this into account when implementing custom components. -Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it is needed. +Oryx renders pages on the server and returns the minimum amount of JavaScript needed. A component doesn't need JavaScript initially, but when a user start interacting with it, or when the component needs to reflect a certain application state, additional JavaScript needs to be loaded. Loading the component logic at the client side is called _hydration_. Because the component logic is loaded over the network and initialized in the application, hydration is costly. Additionally, the component might need to fetch data from a backend API. Oryx therefore tries to avoid or delay hydration till it's needed. When developing a component, you need to configure the hydration trigger using the `@hydrate` decorator that can take an event or context. The following example shows how to set up the component to be hydrated when the context is changed: diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md index d81b74f42d..6a1dd2177c 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md @@ -121,7 +121,7 @@ protected override render(): TemplateResult { ## Using component options -To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. +To use component options asynchronously, it's important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-boilerplate.md b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-boilerplate.md index 022ed2fe44..83d8d871f1 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-boilerplate.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-boilerplate.md @@ -64,7 +64,7 @@ The following is a breakdown of the different bits of the boilerplate code. ### `package.json` -`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it is a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. +`package.json` contains all the dependencies of the project. To simplify the dependency management, all dependencies are pulled through a single preset package. The preset package contains dependencies to all available Oryx packages. This might not be the most optimal setup over time, as it might contain a lot of "dead code", but it's a convenient starting point. As you are getting experienced with Oryx, you can consider creating a narrowed down list of dependencies. That being said, having unused dependencies in your project does _not_ affect the build time or run time of your project. It is only an overhead during the installation process. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-technology.md b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-technology.md index 416c00096c..e5610dd125 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-technology.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-technology.md @@ -50,7 +50,7 @@ In Oryx, Web Components are used to create reusable UI components that can be us ## Lit -Lit is a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit is used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. +Lit's a lightweight library for creating web components using TS and HTML templates. In Oryx, Lit's used to create reusable and encapsulated UI components that can be easily styled and extended. It provides a simple and intuitive API for creating custom elements and lets developers write less boilerplate code. You can use Lit to customize Oryx, but you can also use another framework to build web components. Advantages of using Lit: - Reusable component mixins and controllers. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-versioning.md b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-versioning.md index 995ab038bd..797ed43832 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-versioning.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/getting-started/oryx-versioning.md @@ -65,7 +65,7 @@ Oryx consists of a range of packages, applications, and tools. To avoid inadvert ## Backward compatibility -The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it is removed completely only after a few releases. +The Oryx framework provides maximum compatibility with previous versions. If a feature is deprecated, it's removed completely only after a few releases. Minor releases are fully backward compatible and do not require any developer assistance. diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/atomic-frontend.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/atomic-frontend.md index 3aa5feaea6..323cf4ce9f 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/atomic-frontend.md @@ -58,7 +58,7 @@ Based on their structure and use, all components are divided into the following * *Atom*. These are the smallest, most basic building blocks of UI design. Typical examples of atoms are labels, input fields, or buttons. Usually, atoms are very abstract in their essence and limited to a single functionality that can be included in many pages. They are not very useful by themselves. Being the smallest building block of atomic design, atoms cannot include other components. * *Molecules*. Molecules typically include two or more atoms or other molecules bonded together to serve a single purpose. These structures are already complex enough to have their own properties; however, they must not be overcomplicated and built for wide reuse. * *Organisms*. Such components are rather specific and already provide sufficient context for the molecules and atoms they are composed of. Usually, organisms do not form a certain page, but they are rather specific as to what they do and what is their function. Typical examples of organisms can include a header, a footer, or a sidebar. Such components are already complex enough to be used directly on a page. -* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it is available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it is recommended to limit the use of widgets as much as possible in your projects. +* *Widgets*. This is a special component type that can be used to inject information from an external data source that might be unavailable On the backend side, a widget must contain logic to access the data source and verify whether it's available. On the frontend side, a widget must provide means to show or hide information in such a way as not to break the functionality of the entire shop if the data source is not available. A typical use case for widgets is to show information from Spryker modules that can be missing in a specific customer implementation. For example, if the Discounts module is not used in a project, this does not break the calculation of the overall price, for which reason discount information is injected as a widget. Generally, it's recommended to limit the use of widgets as much as possible in your projects. * *Templates*. Templates can be viewed as combinations of components composed according to a specific graphic layout. They are used to define a visual schema for a set of pages. Typically, pages with a common template have the same structure and share most of the content with the exception of a small portion of page-specific or widget-specific information that changes from page to page. Thus, a template serves as a backbone that defines a set of shared components and the overall layout. Examples of templates are the main site layout or the checkout layout. * *Views*. This is the highest point in the frontend hierarchy. A view is a template filled with specific content for use in a specific case. It represents a specific page or widget. Views are the only components that can be called by the backend directly which means that they also serve as a connection point between the backend and frontend. On the backend side, views are always connected to controllers. @@ -289,7 +289,7 @@ When defining a component template with Twig, you need to use the following defa **Attributes:** * `name` (required). It specifies the component name. This name is also used as the main class name for the component; therefore, the HTML element and modifiers have this name as the base. - * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it is created automatically by prefing `js-` to the component name. + * `jsName` (optional): It is a Javascript name of the component. By convention, whenever Javascript behavior is added to a component, the DOM addressing for elements must be performed using dedicated classnames starting with the `-js` prefix. This prevents confusion in who-does-what: a classname starting with `js-` has no style attached to it, but only Javascript behaviour. On the other hand, any classname that does not start with `js-` is a pure style. If `jsName` is not defined explicitly, it's created automatically by prefing `js-` to the component name. * `tag` (optional). It specifies the HTML tag name for the component. Every component is defined in the DOM as an HTML class with its dedicated tag name. Therefore, a tag name must be specified. You can use either a standard HTML5 tag name (for example, `p` or `td`) or have a custom element tag name in order to attach Javascript behavior. To create a component with custom behavior defined in Javascript, Web Component specification, specify a custom tag name. If tag name is not specified, `div`is used by default. * `data`. It is the variable defining the data contract for the component. This variable is used the data contract for the component. The contract consists of the attributes required for the component to function properly. The attributes provided by this variable can be either required or optional. Required attributes must always be defined whenever a component is used, while optional ones can be left undefined. Nevertheless, by convention, attributes cannot have their value undefined. For this reason, if you define an optional attribute in your contract, you must set a default value for it. The default value is used if an attribute value is not set explicitly or by context. @@ -479,7 +479,7 @@ export default class ComponentName extends Component { } ``` -The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it is derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: +The preceding example extend the default Component model defined in the ShopUi application. However, you can extend from any component both on the Spryker core and on the project level. In this case, your new component inherits the logic and behavior of the component it's derived from. The following example shows a component inherited from the default side-drawer component of Spryker Shop: ```ts // Import class SideDrawer @@ -499,7 +499,7 @@ The `index.ts` file is required to load the client-side of the component with We To register the component in the DOM, you need to use the `register` function of the shop application. It accepts two arguments: -* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it is used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. +* `name`. It specifies the component's tag name. This name is associated with the component and can be used in Twig to insert the component into a template. Also, it's used in the DOM as a tag name. Whenever a tag with the specified name occurs in the DOM, the Shop Application loads the component. * `importer`. It must be a call of Webpack's import function to import Typescript code for the component. The call must include a Webpack magic comment that specifies which type of import you want for the component, 'lazy' or 'eager'. For details, see [Dynamic Imports](https://webpack.js.org/guides/code-splitting/#dynamic-imports). diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/customizing-spryker-frontend.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/customizing-spryker-frontend.md index 911ac245cb..1220395193 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/customizing-spryker-frontend.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/customizing-spryker-frontend.md @@ -28,7 +28,7 @@ This guide reviews customizing Spryker UI on each of these levels. ## Twig -The visual layout of each component, whether it is a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. +The visual layout of each component, whether it's a molecule or a whole organism, is defined using Symphony Twig. Twig is a template language for defining the HTML code of pages rendered dynamically. It is a common technology used for building web components, like the ones that comprise Spryker Atomic Frontend. For more information about Twig basics, see [Twig Homepage](https://twig.symfony.com/). diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md index fc8eccca8b..cb44cbd1c0 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/integrate-jquery-into-atomic-frontend.md @@ -188,6 +188,6 @@ $('.any-target-selector').countdown('2100/01/01', function (event: any) { {% info_block errorBox %} -Make sure that it is invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). +Make sure that it's invoked inside/after `mountCallback (readyCallback` can be used as well, but it's now deprecated). {% endinfo_block %} diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/extending-components.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/extending-components.md index 1a5cac4ad4..d08fc90800 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/extending-components.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/extending-components.md @@ -22,7 +22,7 @@ Let us review the process of extending a component on the example of **side-draw ![Open side drawer](https://spryker.s3.eu-central-1.amazonaws.com/docs/Tutorials/Introduction/Customize+Frontend/open-side-drawer.png) -The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it is present on a page. Also, the component outlook will be different. +The following tutorial shows how to create a new component based on the default side drawer. The new side drawer will show an alert whenever it's present on a page. Also, the component outlook will be different. ## 1. Create component folder @@ -66,7 +66,7 @@ Now, let us customize the template of the source component. The original templa Apart from changing the icon, we are going to use different colors. This can be done via styles. -First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it is a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. +First of all, we need to inherit the styles of the source component (_side-drawer_). It has a mixin called **shop-ui-side-drawer**. Since it's a core component shipped with Spryker Shop Suite, this mixin is shared. Therefore, it can be accessed everywhere in Shop UI. To inherit the styles, we need to include the mixin in the _SCSS_ file of our new component. To render the block, elements and modifiers with the class name of the new component, we need to pass its class name to the mixin. Let us create file `new-existing-component-side-drawer.scss`, include the original mixin of the _side-drawer_ component, and pass the class name of the new component we are creating: diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.md index b9ac523e24..6b85b5418a 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.md @@ -41,7 +41,7 @@ To override the global component, the Twig file name on the project level must b } {% raw %}%}{% endraw %} ``` -Since the new component will be used everywhere instead of the global one, it is also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. +Since the new component will be used everywhere instead of the global one, it's also recommended to replicate the data contracts. For this purpose, the **data** and **attributes** properties need to be configured the same as in the source component. If you are going to change the outlook of the component only, without changing its **data** property, attributes etc, you can copy the source Twig file, and then make changes to the **body** block only. The block contains the visual layout of a component. As we are not going to change the component template, let us copy the whole of the source twig implementation (`vendor/spryker-shop/shop-ui/src/SprykerShop/Yves/ShopUi/Theme/default/components/molecules/simple-carousel/simple-carousel.twig`) to the project level (`src/Pyz/Yves/ShopUi/Theme/default/components/molecules/simple-carousel.twig`). The Twig file will look as follows: diff --git a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/using-components.md b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/using-components.md index 852c69e44c..977b802188 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/using-components.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/using-components.md @@ -69,7 +69,7 @@ For more details, see section _Twig_ in [Atomic Frontend](/docs/dg/dev/frontend- ## Include -By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it is added. +By including a component, you place it on a page as is. Each component has the `data`, `attributes`, and other properties that allow passing the necessary information to configure it, but apart from that, you can't change it. The outlook of the component depends only on configuration. By including an element, you also pass the context of the page where it's added. The following block demonstrates how to include component `new-component-counter`. ```twig diff --git a/docs/dg/dev/frontend-development/202410.0/yves/frontend-assets-building-and-loading.md b/docs/dg/dev/frontend-development/202410.0/yves/frontend-assets-building-and-loading.md index 966cf259ab..e07950afa2 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/frontend-assets-building-and-loading.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/frontend-assets-building-and-loading.md @@ -22,7 +22,7 @@ To support the assets loading behavior as described above, most pages considered For the landing pages, there is the `page-critical-path` layout defining the asset's loading behavior. It is an extension of the `page-blank` layout with the overwritten `nonCriticalStyles` and `styleLazyLoader` blocks. The `page-critical-path` contains a `style-loader` component before the closing tag of ``. The `style-loader` component is responsible for loading the non-critical CSS only after the whole page is loaded. -The `page-critical-path` layout uses cookies to track whether it is the first session on the site. If it is the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. +The `page-critical-path` layout uses cookies to track whether it's the first session on the site. If it's the first session, the critical CSS and utils are loaded into the `` tag at the start of the page loading. Only after the whole page is loaded, the `style-loader` component appends the non-critical CSS to the end of the `` tag. Otherwise, the approach for the non-landing pages is used. The main purpose of the page-critical-path layout is to use the CSS Lazy Load only for the landing pages. To enable the CSS Lazy Load for your project, see [Frontend CSS Lazy Load integration](/docs/dg/dev/integrate-and-configure/integrate-css-lazy-loading.html). @@ -46,7 +46,7 @@ A *polyfill* is a code that is used to provide modern functionality for older br ## Cache-busting mechanism -The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it is a development environment, the `assets` folder is in a public `assets` folder rather than a container. +The main idea of the *cache-busting mechanism* is to provide an ability to reset JS/CSS cache for a newly deployed version so that the new assets are delivered to the frontend applications. It is achieved by adding a hash to every asset path using an environment variable `SPRYKER_BUILD_HASH` that lets you reset the browser cache instead of a namespace variable. The path of the resources on Yves is displayed with this hash folder `assets/SPRYKER_BUILD_HASH/default/css/yves_default.app.css`. If the project is set up by Docker, the `assets` folder is present in the Docker container in a production environment. Otherwise, if it's a development environment, the `assets` folder is in a public `assets` folder rather than a container. ## `isCssLazyLoadSupported` Twig variable diff --git a/docs/dg/dev/frontend-development/202410.0/yves/frontend-builder-for-yves.md b/docs/dg/dev/frontend-development/202410.0/yves/frontend-builder-for-yves.md index 6ccda4b48a..a27c71d705 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/frontend-builder-for-yves.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/frontend-builder-for-yves.md @@ -96,7 +96,7 @@ class TwigConfig extends SprykerTwigConfig All public assets are generated into `/public/Yves/` plus the path defined in the config file, which is `assets/%namespace%/%theme%/` by default. -For example, for the `DE` namespace and default theme, it is`/public/Yves/assets/DE/default/`. +For example, for the `DE` namespace and default theme, it's`/public/Yves/assets/DE/default/`. All incoming files (images, fonts, etc.) are copied from `global` (for every namespace) and `DE` folders: diff --git a/docs/dg/dev/glue-api/202311.0/authentication-and-authorization.md b/docs/dg/dev/glue-api/202311.0/authentication-and-authorization.md index a8aa3fcc1e..e4cb049e89 100644 --- a/docs/dg/dev/glue-api/202311.0/authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202311.0/authentication-and-authorization.md @@ -17,7 +17,7 @@ redirect_from: --- -For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202311.0/configure-the-included-section.md b/docs/dg/dev/glue-api/202311.0/configure-the-included-section.md index b2b727facd..f43ea49f5a 100644 --- a/docs/dg/dev/glue-api/202311.0/configure-the-included-section.md +++ b/docs/dg/dev/glue-api/202311.0/configure-the-included-section.md @@ -34,7 +34,7 @@ By default, the option is enabled on the Spryker Core level but disabled on th {% info_block infoBox %} -For the purposes of boosting the API performance and bandwidth usage optimization, it is recommended to request only the information you need. +For the purposes of boosting the API performance and bandwidth usage optimization, it's recommended to request only the information you need. {% endinfo_block %} diff --git a/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md index a7fbeb2a42..954c6052f2 100644 --- a/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it isn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/dg/dev/glue-api/202311.0/glue-api-tutorials/document-glue-api-resources.md b/docs/dg/dev/glue-api/202311.0/glue-api-tutorials/document-glue-api-resources.md index b20a98714a..9a5e03efba 100644 --- a/docs/dg/dev/glue-api/202311.0/glue-api-tutorials/document-glue-api-resources.md +++ b/docs/dg/dev/glue-api/202311.0/glue-api-tutorials/document-glue-api-resources.md @@ -65,7 +65,7 @@ vendor/bin/console rest-api:generate:documentation --- ``` -When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it is `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. +When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it's `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. ## 3. Describe your REST API: Requests and responses @@ -167,7 +167,7 @@ The following table describes the annotation keys: | --- | --- | --- | | `getResourceById` | When set to `true`, indicates a `GET` endpoint that returns a single resource—for example, _`/wishlists/{ID}. *`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | | `getCollection` | When set to `true`, indicates a `GET` endpoint that returns a collection of resources—for example, _`/wishlists.*`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | -| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it is generated automatically. | +| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it's generated automatically. | | `parameters` | Sets optional parameters for the request. | Parameters can be passed in HTTP headers, queries, cookies, or as a part of the resource URI. For more information about parameter use and the available fields, in Swagger official documentation, see [Operation Object](https://swagger.io/specification/#parameterObject). | | `responses` | Use this parameter to describe all responses that can be generated by this endpoint and their respective response codes. | The `default` response is included automatically. There is no need to include it here. | | `responseAttributesClassName` | Sets the FQCN of a custom transfer class that represents the response object. | Use this annotation when a response object is different from the corresponding request object. | @@ -236,6 +236,6 @@ vendor/bin/console rest-api:generate:documentation When the command completes, you can see a specification file generated in the directory with the filename you configure in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). -By default, it is `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. +By default, it's `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. To get a visual representation of your API or use it in tools like Postman (with the OpenAPI v.3 support) for development purposes, you can upload the file to [Swagger Editor](https://editor.swagger.io/). diff --git a/docs/dg/dev/glue-api/202311.0/glue-spryks.md b/docs/dg/dev/glue-api/202311.0/glue-spryks.md index 1a736e0202..7c002d3300 100644 --- a/docs/dg/dev/glue-api/202311.0/glue-spryks.md +++ b/docs/dg/dev/glue-api/202311.0/glue-spryks.md @@ -43,8 +43,8 @@ To call a Spryk, you can use the following console commands: | `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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.
| +| `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's 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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's the same as the class name plus the `Interface` suffix.
| ## Routing management @@ -131,8 +131,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -140,8 +140,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -155,8 +155,8 @@ For more details, see section **Generic Rest Response** in [Glue Infrastructure | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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's 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/dg/dev/sdks/sdk/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's 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's the same as the class name plus the `Interface` suffix.
| ## Adding validation diff --git a/docs/dg/dev/glue-api/202311.0/integrate-a-ciam-provider.md b/docs/dg/dev/glue-api/202311.0/integrate-a-ciam-provider.md index 803177d67a..d3062f2e6f 100644 --- a/docs/dg/dev/glue-api/202311.0/integrate-a-ciam-provider.md +++ b/docs/dg/dev/glue-api/202311.0/integrate-a-ciam-provider.md @@ -302,7 +302,7 @@ In the `OauthApi` module, extend the access token validation step with your CIAM ``` Adjust `OauthApiFactory` and `OauthApiDependencyProvider` to include the CIAM provider service. -In the implementation example, it is `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. +In the implementation example, it's `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. The following example extends `AccessTokenValidator` to validate the authorization header using the CIAM provider parser: diff --git a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md index 80d46800d3..454f93274e 100644 --- a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md @@ -30,7 +30,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-security-and-authentication.md b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-security-and-authentication.md index 54a68c3546..00bc2b24ed 100644 --- a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-security-and-authentication.md +++ b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-api-security-and-authentication.md @@ -26,7 +26,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -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. +When exposing information via Spryker Glue API and integrating with third-party applications, it's 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. @@ -141,7 +141,7 @@ All data related to API authentication functionality is stored in the following |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_access_token| Stores all issued tokens.
The table is not used for token verification, it's 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.| diff --git a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-infrastructure.md b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-infrastructure.md index 4b5e929aac..fc2228602c 100644 --- a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-infrastructure.md +++ b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-infrastructure.md @@ -109,9 +109,9 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency ### 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/dg/dev/backend-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. +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/dg/dev/backend-development/client/client.html). It can also communicate with the Spryker Commerce OS (Zed), however, it's 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. +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's always safer to extend the relevant _Resource module_ than infrastructure. #### Module structure @@ -207,7 +207,7 @@ Business errors are returned as the `RestErrorMessageTransfer` objects with the ### 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. +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's 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 diff --git a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-rest-api.md b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-rest-api.md index 132e44eff0..5f18204930 100644 --- a/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-rest-api.md +++ b/docs/dg/dev/glue-api/202311.0/old-glue-infrastructure/glue-rest-api.md @@ -43,7 +43,7 @@ For more details, see REST API reference: ## B2C API React example -To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it is based on our customers' interests. The app is single-page application based on a React JS library. +To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it's based on our customers' interests. The app is single-page application based on a React JS library. It delivers a full customer experience from browsing the catalog to placing an order. The application helps you understand how you can use the predefined APIs to create a B2C user experience. As an example, the full power of Elasticsearch, which is already present in our [B2B](/docs/about/all/b2b-suite.html) and [B2C Demo Shops](/docs/about/all/b2c-suite.html), is leveraged through dedicated endpoints to deliver catalog search functionality with autocompletion, autosuggestion, facets, sorting, and pagination. @@ -57,7 +57,7 @@ For more deatails about installing and running, see [B2C API React example](/doc Glue API helps you to connect your Spryker 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 frontend: Build a new frontend or use a frontend framework like Progressive Web Apps and power it by the Glue API. -* Mobile app: a 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. +* Mobile app: a mobile app, no matter if it's 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 are trying to reach out to you and help them answer basic questions about your products. diff --git a/docs/dg/dev/glue-api/202311.0/routing/create-routes.md b/docs/dg/dev/glue-api/202311.0/routing/create-routes.md index 3ce9cfc0a5..67326d9b97 100644 --- a/docs/dg/dev/glue-api/202311.0/routing/create-routes.md +++ b/docs/dg/dev/glue-api/202311.0/routing/create-routes.md @@ -50,7 +50,7 @@ class ModuleBarController extends AbstractController ``` -Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it is done everywhere in Spryker. +Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it's done everywhere in Spryker. {% info_block infoBox %} diff --git a/docs/dg/dev/glue-api/202311.0/security-and-authentication.md b/docs/dg/dev/glue-api/202311.0/security-and-authentication.md index 60111bb894..33cdaa5ff7 100644 --- a/docs/dg/dev/glue-api/202311.0/security-and-authentication.md +++ b/docs/dg/dev/glue-api/202311.0/security-and-authentication.md @@ -11,7 +11,7 @@ redirect_from: --- -When exposing information through 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 lets users authenticate themselves with their username and password and receive an access token. The token can then be used to access protected resources. +When exposing information through Spryker Glue API and integrating with third-party applications, it's 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 lets users 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 lets you 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 require user authentication to use. diff --git a/docs/dg/dev/glue-api/202311.0/use-default-glue-parameters.md b/docs/dg/dev/glue-api/202311.0/use-default-glue-parameters.md index 3dc5a7863c..68d1351947 100644 --- a/docs/dg/dev/glue-api/202311.0/use-default-glue-parameters.md +++ b/docs/dg/dev/glue-api/202311.0/use-default-glue-parameters.md @@ -21,7 +21,7 @@ The Glue JSON:API convention provides some parameter parsing out of the box. The ## Pagination -Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit is the number of records to display, and offset is the number of records to skip. Here is an example: +Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit's the number of records to display, and offset is the number of records to skip. Here is an example: ``` ?page[offset]=0&page[limit]=10 # display 10 records starting at 0 (AKA page #1) @@ -58,7 +58,7 @@ $glueResponseTransfer->getPagination()->setNbResults(); ## Sorting -Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it is ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. +Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it's ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. To get an order, you can read it from `$glueRequestTransfer->getSortings()`, which returns an array of `SortTransfer`, each containing field to be sorted. Use it to sort data when querying from persistence. @@ -74,4 +74,4 @@ You can reduce the amount of data returned by using sparse fields. Clients can p When processing a request, you can get this by accessing `$glueRequestTransfer->getQueryFields()`. This returns an array of strings. -When building response attributes that are not within the fields, the list is removed, even if it is populated by resource processing. +When building response attributes that are not within the fields, the list is removed, even if it's populated by resource processing. diff --git a/docs/dg/dev/glue-api/202404.0/authentication-and-authorization.md b/docs/dg/dev/glue-api/202404.0/authentication-and-authorization.md index 4ff5081a94..0c3704aa4d 100644 --- a/docs/dg/dev/glue-api/202404.0/authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202404.0/authentication-and-authorization.md @@ -17,7 +17,7 @@ redirect_from: --- -For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202404.0/configure-the-included-section.md b/docs/dg/dev/glue-api/202404.0/configure-the-included-section.md index 51bb714054..87e2c46619 100644 --- a/docs/dg/dev/glue-api/202404.0/configure-the-included-section.md +++ b/docs/dg/dev/glue-api/202404.0/configure-the-included-section.md @@ -34,7 +34,7 @@ By default, the option is enabled on the Spryker Core level but disabled on th {% info_block infoBox %} -For the purposes of boosting the API performance and bandwidth usage optimization, it is recommended to request only the information you need. +For the purposes of boosting the API performance and bandwidth usage optimization, it's recommended to request only the information you need. {% endinfo_block %} diff --git a/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md index feccb86fef..33472b7f9f 100644 --- a/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it isn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/dg/dev/glue-api/202404.0/glue-api-tutorials/document-glue-api-resources.md b/docs/dg/dev/glue-api/202404.0/glue-api-tutorials/document-glue-api-resources.md index 0fc5223eb6..33b153d442 100644 --- a/docs/dg/dev/glue-api/202404.0/glue-api-tutorials/document-glue-api-resources.md +++ b/docs/dg/dev/glue-api/202404.0/glue-api-tutorials/document-glue-api-resources.md @@ -65,7 +65,7 @@ vendor/bin/console rest-api:generate:documentation --- ``` -When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it is `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. +When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it's `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. ## 3. Describe your REST API: Requests and responses @@ -167,7 +167,7 @@ The following table describes the annotation keys: | --- | --- | --- | | `getResourceById` | When set to `true`, indicates a `GET` endpoint that returns a single resource—for example, _`/wishlists/{ID}. *`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | | `getCollection` | When set to `true`, indicates a `GET` endpoint that returns a collection of resources—for example, _`/wishlists.*`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | -| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it is generated automatically. | +| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it's generated automatically. | | `parameters` | Sets optional parameters for the request. | Parameters can be passed in HTTP headers, queries, cookies, or as a part of the resource URI. For more information about parameter use and the available fields, in Swagger official documentation, see [Operation Object](https://swagger.io/specification/#parameterObject). | | `responses` | Use this parameter to describe all responses that can be generated by this endpoint and their respective response codes. | The `default` response is included automatically. There is no need to include it here. | | `responseAttributesClassName` | Sets the FQCN of a custom transfer class that represents the response object. | Use this annotation when a response object is different from the corresponding request object. | @@ -236,6 +236,6 @@ vendor/bin/console rest-api:generate:documentation When the command completes, you can see a specification file generated in the directory with the filename you configure in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). -By default, it is `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. +By default, it's `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. To get a visual representation of your API or use it in tools like Postman (with the OpenAPI v.3 support) for development purposes, you can upload the file to [Swagger Editor](https://editor.swagger.io/). diff --git a/docs/dg/dev/glue-api/202404.0/glue-spryks.md b/docs/dg/dev/glue-api/202404.0/glue-spryks.md index dcc706b86f..e96aa225ba 100644 --- a/docs/dg/dev/glue-api/202404.0/glue-spryks.md +++ b/docs/dg/dev/glue-api/202404.0/glue-spryks.md @@ -43,8 +43,8 @@ To call a Spryk, you can use the following console commands: | `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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.
| +| `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's 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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's the same as the class name plus the `Interface` suffix.
| ## Routing management @@ -131,8 +131,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -140,8 +140,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -155,8 +155,8 @@ For more details, see section **Generic Rest Response** in [Glue Infrastructure | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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's 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/dg/dev/sdks/sdk/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's 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's the same as the class name plus the `Interface` suffix.
| ## Adding validation diff --git a/docs/dg/dev/glue-api/202404.0/integrate-a-ciam-provider.md b/docs/dg/dev/glue-api/202404.0/integrate-a-ciam-provider.md index 611f6d7869..8beaa44e70 100644 --- a/docs/dg/dev/glue-api/202404.0/integrate-a-ciam-provider.md +++ b/docs/dg/dev/glue-api/202404.0/integrate-a-ciam-provider.md @@ -302,7 +302,7 @@ In the `OauthApi` module, extend the access token validation step with your CIAM ``` Adjust `OauthApiFactory` and `OauthApiDependencyProvider` to include the CIAM provider service. -In the implementation example, it is `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. +In the implementation example, it's `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. The following example extends `AccessTokenValidator` to validate the authorization header using the CIAM provider parser: diff --git a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md index 50d3cc3eed..8496b52f9d 100644 --- a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md @@ -30,7 +30,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-security-and-authentication.md b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-security-and-authentication.md index dc879b9ff6..3021cec08f 100644 --- a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-security-and-authentication.md +++ b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-api-security-and-authentication.md @@ -26,7 +26,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -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. +When exposing information via Spryker Glue API and integrating with third-party applications, it's 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. @@ -141,7 +141,7 @@ All data related to API authentication functionality is stored in the following |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_access_token| Stores all issued tokens.
The table is not used for token verification, it's 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.| diff --git a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-infrastructure.md b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-infrastructure.md index 34a5cf694e..56ca972fa5 100644 --- a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-infrastructure.md +++ b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-infrastructure.md @@ -109,9 +109,9 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency ### 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/dg/dev/backend-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. +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/dg/dev/backend-development/client/client.html). It can also communicate with the Spryker Commerce OS (Zed), however, it's 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. +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's always safer to extend the relevant _Resource module_ than infrastructure. #### Module structure @@ -207,7 +207,7 @@ Business errors are returned as the `RestErrorMessageTransfer` objects with the ### 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. +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's 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 diff --git a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-rest-api.md b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-rest-api.md index 5ef4b1001a..0f45c9aae3 100644 --- a/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-rest-api.md +++ b/docs/dg/dev/glue-api/202404.0/old-glue-infrastructure/glue-rest-api.md @@ -43,7 +43,7 @@ For more details, see REST API reference: ## B2C API React example -To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it is based on our customers' interests. The app is single-page application based on a React JS library. +To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it's based on our customers' interests. The app is single-page application based on a React JS library. It delivers a full customer experience from browsing the catalog to placing an order. The application helps you understand how you can use the predefined APIs to create a B2C user experience. As an example, the full power of Elasticsearch, which is already present in our [B2B](/docs/about/all/b2b-suite.html) and [B2C Demo Shops](/docs/about/all/b2c-suite.html), is leveraged through dedicated endpoints to deliver catalog search functionality with autocompletion, autosuggestion, facets, sorting, and pagination. @@ -57,7 +57,7 @@ For more deatails about installing and running, see [B2C API React example](/doc Glue API helps you to connect your Spryker 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 frontend: Build a new frontend or use a frontend framework like Progressive Web Apps and power it by the Glue API. -* Mobile app: a 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. +* Mobile app: a mobile app, no matter if it's 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 are trying to reach out to you and help them answer basic questions about your products. diff --git a/docs/dg/dev/glue-api/202404.0/routing/create-routes.md b/docs/dg/dev/glue-api/202404.0/routing/create-routes.md index 5d58084c0a..f3548a395e 100644 --- a/docs/dg/dev/glue-api/202404.0/routing/create-routes.md +++ b/docs/dg/dev/glue-api/202404.0/routing/create-routes.md @@ -50,7 +50,7 @@ class ModuleBarController extends AbstractController ``` -Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it is done everywhere in Spryker. +Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it's done everywhere in Spryker. {% info_block infoBox %} diff --git a/docs/dg/dev/glue-api/202404.0/security-and-authentication.md b/docs/dg/dev/glue-api/202404.0/security-and-authentication.md index 06de5af5c9..8ba29bedfb 100644 --- a/docs/dg/dev/glue-api/202404.0/security-and-authentication.md +++ b/docs/dg/dev/glue-api/202404.0/security-and-authentication.md @@ -11,7 +11,7 @@ redirect_from: --- -When exposing information through 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 lets users authenticate themselves with their username and password and receive an access token. The token can then be used to access protected resources. +When exposing information through Spryker Glue API and integrating with third-party applications, it's 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 lets users 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 lets you 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 require user authentication to use. diff --git a/docs/dg/dev/glue-api/202404.0/use-default-glue-parameters.md b/docs/dg/dev/glue-api/202404.0/use-default-glue-parameters.md index cbfe35f9bd..6b71f5d0fd 100644 --- a/docs/dg/dev/glue-api/202404.0/use-default-glue-parameters.md +++ b/docs/dg/dev/glue-api/202404.0/use-default-glue-parameters.md @@ -21,7 +21,7 @@ The Glue JSON:API convention provides some parameter parsing out of the box. The ## Pagination -Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit is the number of records to display, and offset is the number of records to skip. Here is an example: +Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit's the number of records to display, and offset is the number of records to skip. Here is an example: ``` ?page[offset]=0&page[limit]=10 # display 10 records starting at 0 (AKA page #1) @@ -58,7 +58,7 @@ $glueResponseTransfer->getPagination()->setNbResults(); ## Sorting -Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it is ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. +Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it's ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. To get an order, you can read it from `$glueRequestTransfer->getSortings()`, which returns an array of `SortTransfer`, each containing field to be sorted. Use it to sort data when querying from persistence. @@ -74,4 +74,4 @@ You can reduce the amount of data returned by using sparse fields. Clients can p When processing a request, you can get this by accessing `$glueRequestTransfer->getQueryFields()`. This returns an array of strings. -When building response attributes that are not within the fields, the list is removed, even if it is populated by resource processing. +When building response attributes that are not within the fields, the list is removed, even if it's populated by resource processing. diff --git a/docs/dg/dev/glue-api/202410.0/authentication-and-authorization.md b/docs/dg/dev/glue-api/202410.0/authentication-and-authorization.md index 4ff5081a94..0c3704aa4d 100644 --- a/docs/dg/dev/glue-api/202410.0/authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202410.0/authentication-and-authorization.md @@ -17,7 +17,7 @@ redirect_from: --- -For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +For authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202410.0/configure-the-included-section.md b/docs/dg/dev/glue-api/202410.0/configure-the-included-section.md index 51bb714054..87e2c46619 100644 --- a/docs/dg/dev/glue-api/202410.0/configure-the-included-section.md +++ b/docs/dg/dev/glue-api/202410.0/configure-the-included-section.md @@ -34,7 +34,7 @@ By default, the option is enabled on the Spryker Core level but disabled on th {% info_block infoBox %} -For the purposes of boosting the API performance and bandwidth usage optimization, it is recommended to request only the information you need. +For the purposes of boosting the API performance and bandwidth usage optimization, it's recommended to request only the information you need. {% endinfo_block %} diff --git a/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md index feccb86fef..33472b7f9f 100644 --- a/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it isn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/dg/dev/glue-api/202410.0/glue-api-tutorials/document-glue-api-resources.md b/docs/dg/dev/glue-api/202410.0/glue-api-tutorials/document-glue-api-resources.md index 0fc5223eb6..33b153d442 100644 --- a/docs/dg/dev/glue-api/202410.0/glue-api-tutorials/document-glue-api-resources.md +++ b/docs/dg/dev/glue-api/202410.0/glue-api-tutorials/document-glue-api-resources.md @@ -65,7 +65,7 @@ vendor/bin/console rest-api:generate:documentation --- ``` -When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it is `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. +When the command completes, you can see a specification file generated in the directory with the filename as you configured in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). By default, it's `src/Generated/Glue/Specification/spryker_rest_api.schema.yml`. ## 3. Describe your REST API: Requests and responses @@ -167,7 +167,7 @@ The following table describes the annotation keys: | --- | --- | --- | | `getResourceById` | When set to `true`, indicates a `GET` endpoint that returns a single resource—for example, _`/wishlists/{ID}. *`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | | `getCollection` | When set to `true`, indicates a `GET` endpoint that returns a collection of resources—for example, _`/wishlists.*`_ | The `getResourceById` and `getCollection` annotations are used for `GET` endpoints only. If neither of the notations is present for the `getAction` function or they are both set to false, a `GET` endpoint is generated anyway. However, in such a case, the resource ID is not included in the response. | -| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it is generated automatically. | +| `summary` | Sets a description for the endpoint. Use it to describe, as detailed as possible, what the endpoint is used for, its purpose, and intention. | If a summary is not specified explicitly, it's generated automatically. | | `parameters` | Sets optional parameters for the request. | Parameters can be passed in HTTP headers, queries, cookies, or as a part of the resource URI. For more information about parameter use and the available fields, in Swagger official documentation, see [Operation Object](https://swagger.io/specification/#parameterObject). | | `responses` | Use this parameter to describe all responses that can be generated by this endpoint and their respective response codes. | The `default` response is included automatically. There is no need to include it here. | | `responseAttributesClassName` | Sets the FQCN of a custom transfer class that represents the response object. | Use this annotation when a response object is different from the corresponding request object. | @@ -236,6 +236,6 @@ vendor/bin/console rest-api:generate:documentation When the command completes, you can see a specification file generated in the directory with the filename you configure in [step 2. Configuration](/docs/dg/dev/glue-api/{{page.version}}/glue-api-tutorials/implement-a-rest-api-resource.html#create-a-configuration-class). -By default, it is `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. +By default, it's `src/Pyz/Generated/Glue/Specification/spryker_rest_api.schema.yml`. The specification contains all REST API endpoints configured in Glue, on the global and project levels, along with data models for all requests and responses. To get a visual representation of your API or use it in tools like Postman (with the OpenAPI v.3 support) for development purposes, you can upload the file to [Swagger Editor](https://editor.swagger.io/). diff --git a/docs/dg/dev/glue-api/202410.0/glue-spryks.md b/docs/dg/dev/glue-api/202410.0/glue-spryks.md index dcc706b86f..e96aa225ba 100644 --- a/docs/dg/dev/glue-api/202410.0/glue-spryks.md +++ b/docs/dg/dev/glue-api/202410.0/glue-spryks.md @@ -43,8 +43,8 @@ To call a Spryk, you can use the following console commands: | `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**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.
| +| `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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's 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/dg/dev/sdks/sdk/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 name of the module.
  • **applicationType** - specifies which application type should be used: Backend or Storefront. By default the **Backend** application type is used.

**Spryk-Specific Arguments:**

  • **className** - specifies the PHP class name for the resource.
  • **interfaceName** - specifies the PHP interface name for the resource. By default, it's the same as the class name plus the `Interface` suffix.
| ## Routing management @@ -131,8 +131,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -140,8 +140,8 @@ For more details, see section **Controller management** in [Glue Infrastructur | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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's 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| @@ -155,8 +155,8 @@ For more details, see section **Generic Rest Response** in [Glue Infrastructure | 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/dg/dev/sdks/sdk/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/dg/dev/sdks/sdk/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.
| +| `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/dg/dev/sdks/sdk/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's 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's 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/dg/dev/sdks/sdk/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's 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's the same as the class name plus the `Interface` suffix.
| ## Adding validation diff --git a/docs/dg/dev/glue-api/202410.0/integrate-a-ciam-provider.md b/docs/dg/dev/glue-api/202410.0/integrate-a-ciam-provider.md index 611f6d7869..8beaa44e70 100644 --- a/docs/dg/dev/glue-api/202410.0/integrate-a-ciam-provider.md +++ b/docs/dg/dev/glue-api/202410.0/integrate-a-ciam-provider.md @@ -302,7 +302,7 @@ In the `OauthApi` module, extend the access token validation step with your CIAM ``` Adjust `OauthApiFactory` and `OauthApiDependencyProvider` to include the CIAM provider service. -In the implementation example, it is `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. +In the implementation example, it's `Pyz\Service\CiamProvider\CiamProviderServiceInterface`. The following example extends `AccessTokenValidator` to validate the authorization header using the CIAM provider parser: diff --git a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md index 50d3cc3eed..8496b52f9d 100644 --- a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md +++ b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-authentication-and-authorization.md @@ -30,7 +30,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it is represented by the Login API. +[Protected resources](#protected-resources) in Spryker Glue API require user authentication. For the authentication, Spryker implements the OAuth 2.0 mechanism. On the REST API level, it's represented by the Login API. To get access to a protected resource, a user obtains an *access token*. An access token is a JSON Web Token used to identify a user during API calls. Then, they pass the token in the request header. diff --git a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-security-and-authentication.md b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-security-and-authentication.md index dc879b9ff6..3021cec08f 100644 --- a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-security-and-authentication.md +++ b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-api-security-and-authentication.md @@ -26,7 +26,7 @@ This is a document related to the Old Glue infrastructure. For the new one, see {% endinfo_block %} -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. +When exposing information via Spryker Glue API and integrating with third-party applications, it's 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. @@ -141,7 +141,7 @@ All data related to API authentication functionality is stored in the following |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_access_token| Stores all issued tokens.
The table is not used for token verification, it's 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.| diff --git a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-infrastructure.md b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-infrastructure.md index 34a5cf694e..56ca972fa5 100644 --- a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-infrastructure.md +++ b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-infrastructure.md @@ -109,9 +109,9 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency ### 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/dg/dev/backend-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. +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/dg/dev/backend-development/client/client.html). It can also communicate with the Spryker Commerce OS (Zed), however, it's 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. +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's always safer to extend the relevant _Resource module_ than infrastructure. #### Module structure @@ -207,7 +207,7 @@ Business errors are returned as the `RestErrorMessageTransfer` objects with the ### 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. +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's 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 diff --git a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-rest-api.md b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-rest-api.md index 5ef4b1001a..0f45c9aae3 100644 --- a/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-rest-api.md +++ b/docs/dg/dev/glue-api/202410.0/old-glue-infrastructure/glue-rest-api.md @@ -43,7 +43,7 @@ For more details, see REST API reference: ## B2C API React example -To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it is based on our customers' interests. The app is single-page application based on a React JS library. +To help you understand possible use cases, we provide a sample app as an exemplary implementation (which is not a starting point for development). It can coexist with a shop as a second touchpoint in the project. From a technological perspective, it's based on our customers' interests. The app is single-page application based on a React JS library. It delivers a full customer experience from browsing the catalog to placing an order. The application helps you understand how you can use the predefined APIs to create a B2C user experience. As an example, the full power of Elasticsearch, which is already present in our [B2B](/docs/about/all/b2b-suite.html) and [B2C Demo Shops](/docs/about/all/b2c-suite.html), is leveraged through dedicated endpoints to deliver catalog search functionality with autocompletion, autosuggestion, facets, sorting, and pagination. @@ -57,7 +57,7 @@ For more deatails about installing and running, see [B2C API React example](/doc Glue API helps you to connect your Spryker 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 frontend: Build a new frontend or use a frontend framework like Progressive Web Apps and power it by the Glue API. -* Mobile app: a 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. +* Mobile app: a mobile app, no matter if it's 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 are trying to reach out to you and help them answer basic questions about your products. diff --git a/docs/dg/dev/glue-api/202410.0/routing/create-routes.md b/docs/dg/dev/glue-api/202410.0/routing/create-routes.md index 5d58084c0a..f3548a395e 100644 --- a/docs/dg/dev/glue-api/202410.0/routing/create-routes.md +++ b/docs/dg/dev/glue-api/202410.0/routing/create-routes.md @@ -50,7 +50,7 @@ class ModuleBarController extends AbstractController ``` -Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it is done everywhere in Spryker. +Even though an empty response is returned, the module's `Factory` is available and can be used to access Processor models or external dependencies the same way it's done everywhere in Spryker. {% info_block infoBox %} diff --git a/docs/dg/dev/glue-api/202410.0/security-and-authentication.md b/docs/dg/dev/glue-api/202410.0/security-and-authentication.md index 06de5af5c9..8ba29bedfb 100644 --- a/docs/dg/dev/glue-api/202410.0/security-and-authentication.md +++ b/docs/dg/dev/glue-api/202410.0/security-and-authentication.md @@ -11,7 +11,7 @@ redirect_from: --- -When exposing information through 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 lets users authenticate themselves with their username and password and receive an access token. The token can then be used to access protected resources. +When exposing information through Spryker Glue API and integrating with third-party applications, it's 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 lets users 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 lets you 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 require user authentication to use. diff --git a/docs/dg/dev/glue-api/202410.0/use-default-glue-parameters.md b/docs/dg/dev/glue-api/202410.0/use-default-glue-parameters.md index cbfe35f9bd..6b71f5d0fd 100644 --- a/docs/dg/dev/glue-api/202410.0/use-default-glue-parameters.md +++ b/docs/dg/dev/glue-api/202410.0/use-default-glue-parameters.md @@ -21,7 +21,7 @@ The Glue JSON:API convention provides some parameter parsing out of the box. The ## Pagination -Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit is the number of records to display, and offset is the number of records to skip. Here is an example: +Glue uses an offset-based pagination style: the client passes two values, `offset` and `limit`, where the limit's the number of records to display, and offset is the number of records to skip. Here is an example: ``` ?page[offset]=0&page[limit]=10 # display 10 records starting at 0 (AKA page #1) @@ -58,7 +58,7 @@ $glueResponseTransfer->getPagination()->setNbResults(); ## Sorting -Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it is ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. +Sorting can be passed part as a request as simple GET parameters `?sort=resources.age`, where value is the field by which sort resource and attribute; by default, it's ASCENDING order. To change it to DESCENDING, add a hyphen (`-`)—for example, `?sort=-resources.age`. To get an order, you can read it from `$glueRequestTransfer->getSortings()`, which returns an array of `SortTransfer`, each containing field to be sorted. Use it to sort data when querying from persistence. @@ -74,4 +74,4 @@ You can reduce the amount of data returned by using sparse fields. Clients can p When processing a request, you can get this by accessing `$glueRequestTransfer->getQueryFields()`. This returns an array of strings. -When building response attributes that are not within the fields, the list is removed, even if it is populated by resource processing. +When building response attributes that are not within the fields, the list is removed, even if it's populated by resource processing. diff --git a/docs/dg/dev/guidelines/coding-guidelines/code-style-guide.md b/docs/dg/dev/guidelines/coding-guidelines/code-style-guide.md index 6d499b005e..e1023fb5d9 100644 --- a/docs/dg/dev/guidelines/coding-guidelines/code-style-guide.md +++ b/docs/dg/dev/guidelines/coding-guidelines/code-style-guide.md @@ -198,7 +198,7 @@ Storing the dates in a common time zone ensures consistency, as the time zone co ### Deprecations -When you deprecate a method, class, or alike, it is recommended to add a short sentence on what to use instead, so all people know what to do without having to investigate deeper. +When you deprecate a method, class, or alike, it's recommended to add a short sentence on what to use instead, so all people know what to do without having to investigate deeper. |DEPRECATION | MESSAGE | |---|---| diff --git a/docs/dg/dev/guidelines/keeping-a-project-upgradable/extension-scenarios/plugins-registration.md b/docs/dg/dev/guidelines/keeping-a-project-upgradable/extension-scenarios/plugins-registration.md index 1c63125793..87ad1783f6 100644 --- a/docs/dg/dev/guidelines/keeping-a-project-upgradable/extension-scenarios/plugins-registration.md +++ b/docs/dg/dev/guidelines/keeping-a-project-upgradable/extension-scenarios/plugins-registration.md @@ -92,7 +92,7 @@ Manifests fully support multiple plugins registration in an indexed array. Manif Restrictions on the order of the plugins can be done with special annotation keys `before` and `after`. -If the plugin doesn’t contain any of these keys, it is added to the end of the plugin stack. +If the plugin doesn’t contain any of these keys, it's added to the end of the plugin stack. If the plugin contains the `after` key and defined plugins in the `after` parameter don’t exist on the project side, the plugin is added to the end of the plugin stack. @@ -460,7 +460,7 @@ class PublisherDependencyProvider extends SprykerPublisherDependencyProvider ## Special situations -* If the target dependency provider class doesn’t exist in the project, it is created and all required methods are created automatically as well. +* If the target dependency provider class doesn’t exist in the project, it's created and all required methods are created automatically as well. * If the target dependency provider class exists in the project without the target method, but such method exists in the parent class, the method is created and the changes are applied. diff --git a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.md b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.md index f14308e852..5725cdfb67 100644 --- a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.md +++ b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.md @@ -11,9 +11,9 @@ The *Minimum allowed shop version* check makes sure that the project uses one of ## Problem description -To enable smooth upgradability of the project using the [Spryker Code Upgrader](/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.html), it is essential for the project to adhere to the minimum required Spryker product release. +To enable smooth upgradability of the project using the [Spryker Code Upgrader](/docs/ca/devscu/prepare-a-project-for-spryker-code-upgrader.html), it's essential for the project to adhere to the minimum required Spryker product release. -In case the project does not utilize the feature packages, it is necessary to ensure that the corresponding Spryker module versions are used. +In case the project does not utilize the feature packages, it's necessary to ensure that the corresponding Spryker module versions are used. ## Example of an evaluator error message diff --git a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.md b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.md index 6a5c08e1e1..d1c040dc69 100644 --- a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.md +++ b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.md @@ -11,7 +11,7 @@ Spryker dev packages checker checks the project Spryker dependencies for the _de ## Problem description -Projects contain the Spryker packages dependencies in the `require` section of the `composer.json` file. The integration of new versions of Spryker modules by the Spryker Code Upgrader may fail if some of these packages have references to specific branches that use `dev-*` constraint versions. To prevent this, it is essential to ensure that all Spryker packages have valid version constraints. +Projects contain the Spryker packages dependencies in the `require` section of the `composer.json` file. The integration of new versions of Spryker modules by the Spryker Code Upgrader may fail if some of these packages have references to specific branches that use `dev-*` constraint versions. To prevent this, it's essential to ensure that all Spryker packages have valid version constraints. ## Example of code that causes the evaluator error diff --git a/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md b/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md index 548243218e..e2e11e9b28 100644 --- a/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md +++ b/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md @@ -66,7 +66,7 @@ Below, you will find an analysis of the Spryker architecture and solutions for t ### Database queries in plugins -Spryker widely uses plugins to reduce module dependencies and to increase flexibility to make features work together smoothly. However, this can lead to some performance issues if there are database queries in each plugin. That's why it is essential to aggregate all queries to decrease the number of database operations. +Spryker widely uses plugins to reduce module dependencies and to increase flexibility to make features work together smoothly. However, this can lead to some performance issues if there are database queries in each plugin. That's why it's essential to aggregate all queries to decrease the number of database operations. Let's consider an example. Suppose there are 10 plugins for the cart feature to calculate items price, discount, tax, etc. Each plugin has a query to find a product by SKU per order item, which means the code will execute 10 same queries per each item in the cart. @@ -215,7 +215,7 @@ As the Spryker boilerplate comes with most of the features enabled, make sure yo ### Zed calls -Zed calls are necessary when it comes to executing a database-related operation like Cart and Checkout requests. As an RPC mechanism handles these calls, it is necessary to reduce the number of calls to maximum one call to Zed. You can achieve this by: +Zed calls are necessary when it comes to executing a database-related operation like Cart and Checkout requests. As an RPC mechanism handles these calls, it's necessary to reduce the number of calls to maximum one call to Zed. You can achieve this by: - Exporting necessary data, only product-related ones, from Zed to Redis at the pre-calculation phase with the help of Publish and Synchronization. - Merging duplicate Zed requests to only one customer request (AddToCart + Validations + …). @@ -228,7 +228,7 @@ Avoid making ZED calls within QueryExpanderPlugin (from Storage or Search). ### OMS optimization -OMS processes are the template of the order fulfillment in Spryker. The first state of OMS processes, called the NEW state, plays an important role in the checkout process. Therefore, it is necessary to make sure you don't use unnecessary features when you don't need them, for example, Reservation or Timeout transitions. +OMS processes are the template of the order fulfillment in Spryker. The first state of OMS processes, called the NEW state, plays an important role in the checkout process. Therefore, it's necessary to make sure you don't use unnecessary features when you don't need them, for example, Reservation or Timeout transitions. One can avoid using the unnecessary transitions by: diff --git a/docs/dg/dev/guidelines/performance-guidelines/general-performance-guidelines.md b/docs/dg/dev/guidelines/performance-guidelines/general-performance-guidelines.md index d12fb444fb..eb8d6252bd 100644 --- a/docs/dg/dev/guidelines/performance-guidelines/general-performance-guidelines.md +++ b/docs/dg/dev/guidelines/performance-guidelines/general-performance-guidelines.md @@ -174,7 +174,7 @@ Making calculations on the PHP side can help here a lot, as well as using `{% ra ## Activate Zed navigation cache -The navigation of Zed is defined in XML files that need to be parsed and merged. As it does not happen quite often, it is recommended to keep the cache activated at all times (even during development) and to run `vendor/bin/console navigation:build-cache` only when something has changed. +The navigation of Zed is defined in XML files that need to be parsed and merged. As it does not happen quite often, it's recommended to keep the cache activated at all times (even during development) and to run `vendor/bin/console navigation:build-cache` only when something has changed. Zed navigation cache is activated by default: diff --git a/docs/dg/dev/guidelines/project-development-guidelines.md b/docs/dg/dev/guidelines/project-development-guidelines.md index d5fcebaa37..3abdfdd397 100644 --- a/docs/dg/dev/guidelines/project-development-guidelines.md +++ b/docs/dg/dev/guidelines/project-development-guidelines.md @@ -62,7 +62,7 @@ Instead of using, extending, and overriding [Private API](/docs/dg/dev/architect Extending Private API is still possible, but Spryker development team can change them without a notice in the minor change, since Spryker BC break policy is only considering a Public API. We recommend to not extend Private API classes, but implement new one based on the same interface. In this case changes in core classes will not affect your code. -If you believe that you found a bug in Spryker module, or you want to submit a fix, new functionality by yourself, you can create a pull request to the corresponding module repository. It will be reviewed by the Spryker team and, if it is accepted, it will be merged into the core via our release process. Be advised that such PRs will be checked as a Core contribution and should be prepared accordingly. +If you believe that you found a bug in Spryker module, or you want to submit a fix, new functionality by yourself, you can create a pull request to the corresponding module repository. It will be reviewed by the Spryker team and, if it's accepted, it will be merged into the core via our release process. Be advised that such PRs will be checked as a Core contribution and should be prepared accordingly. ## Development and tests Starting from the first day of development, write tests for all the customizations you implement. We provide infrastructure for unit, functional, and acceptance tests. diff --git a/docs/dg/dev/guidelines/testing-guidelines/building-tests-for-test-driven-devleopment.md b/docs/dg/dev/guidelines/testing-guidelines/building-tests-for-test-driven-devleopment.md index 06d93b38d9..dbb0d86339 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/building-tests-for-test-driven-devleopment.md +++ b/docs/dg/dev/guidelines/testing-guidelines/building-tests-for-test-driven-devleopment.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/introduction-tutorials/tutorial-testing-and-tdd-spryker-commerce-os.html --- -This document helps you understand the main concepts of testing with Spryker and see how simple it is to build tests. You will use the *test-driven development (TDD)* approach. +This document helps you understand the main concepts of testing with Spryker and see how simple it's to build tests. You will use the *test-driven development (TDD)* approach. Spryker's testing structure and data handling make it very easy to develop using TDD. You will build a simple module that reverses a string and test it. diff --git a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/test-console-commands.md b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/test-console-commands.md index cc91e1fac6..a3f9f2d393 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/test-console-commands.md +++ b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/test-console-commands.md @@ -51,7 +51,7 @@ suites: For more information about the `codeception.yml` file, see [Test framework](/docs/dg/dev/guidelines/testing-guidelines/test-framework.html). -2. Create the test directory `tests/PyzTests/Zed/FooModule/Communication/Plugin/Console/`, if it is not available yet. +2. Create the test directory `tests/PyzTests/Zed/FooModule/Communication/Plugin/Console/`, if it's not available yet. 3. Add the test class: ```php diff --git a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md index 1451cc842b..fa0506f2de 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md +++ b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md @@ -34,7 +34,7 @@ related: link: docs/scos/dev/guidelines/testing-guidelines/testing-console-commands.html --- -Publish & Synchronize (P&S) is an asynchronous process of changing data available to customers by pushing the data into storage, for example, Redis, and making it searchable, for example, with Elasticsearch. Because of its asynchronous nature, it is not easy to test the full process while developing. +Publish & Synchronize (P&S) is an asynchronous process of changing data available to customers by pushing the data into storage, for example, Redis, and making it searchable, for example, with Elasticsearch. Because of its asynchronous nature, it's not easy to test the full process while developing. In short, in P&S, you create or update an entity in the database. The process is like this: diff --git a/docs/dg/dev/guidelines/testing-guidelines/running-tests-with-robot-framework.md b/docs/dg/dev/guidelines/testing-guidelines/running-tests-with-robot-framework.md index d7559c6c4c..ae1ba1b214 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/running-tests-with-robot-framework.md +++ b/docs/dg/dev/guidelines/testing-guidelines/running-tests-with-robot-framework.md @@ -134,7 +134,7 @@ To re-execute a subset of tests, for example, after fixing a bug in the system o * Tags: `--include` and `--exclude` * Previous status: `--rerunfailed` or `--rerunfailedsuites` -Combining re-execution results with the original results using the default combining outputs approach doesn't work well. The main issue is that you get separate test suites, and possibly already fixed failures are also shown. In this situation, it is better to use the `--merge (-R)` option to tell Rebot to merge the results instead. In practice, this means that tests from the latter test runs replace the tests in the original. +Combining re-execution results with the original results using the default combining outputs approach doesn't work well. The main issue is that you get separate test suites, and possibly already fixed failures are also shown. In this situation, it's better to use the `--merge (-R)` option to tell Rebot to merge the results instead. In practice, this means that tests from the latter test runs replace the tests in the original. The following is the recommended way of re-executing failed tested: diff --git a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/best-practices-for-effective-testing.md b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/best-practices-for-effective-testing.md index 0daa681371..b00040dd73 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/best-practices-for-effective-testing.md +++ b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/best-practices-for-effective-testing.md @@ -92,7 +92,7 @@ If the test failed, you will see the passed message on the console, which should ## Use as less mocks as possible -Testing single units of your application is a good approach, however, it has some drawbacks as described in the [Test API](#test-api) section. The more you mock, the less you really test. Besides, it is very common to forget to update mocks, which leads to even more issues in your code. +Testing single units of your application is a good approach, however, it has some drawbacks as described in the [Test API](#test-api) section. The more you mock, the less you really test. Besides, it's very common to forget to update mocks, which leads to even more issues in your code. Of course, you can mock all the dependencies of a model under test, but, most likely, that just adds unneeded overhead to your test. In many cases, let's say at least in the happy case, your code should work with the given dependencies. Testing exceptional cases very often requires mocking to be able to test the un-happy cases. In this case, you should also try to use as little mocks as possible to get the most coverage out of a few lines of test code. diff --git a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/test-types-best-practices.md b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/test-types-best-practices.md index f38dc6de01..539408ef9d 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/test-types-best-practices.md +++ b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/test-types-best-practices.md @@ -1,6 +1,6 @@ --- title: Test types best practices -description: Learn when and how it is best to use different test types in your Spryker project. +description: Learn when and how it's best to use different test types in your Spryker project. last_updated: Jun 16, 2021 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/testing-concepts.md b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/testing-concepts.md index cc9d204952..adf917fde6 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/testing-concepts.md +++ b/docs/dg/dev/guidelines/testing-guidelines/testing-best-practices/testing-concepts.md @@ -1,6 +1,6 @@ --- title: Testing concepts -description: Testing your project is one of the best ways to ensure that your software functions as it is supposed to. The role of testing is to find bugs during the early stages of development to minimize risks. +description: Testing your project is one of the best ways to ensure that your software functions as it's supposed to. The role of testing is to find bugs during the early stages of development to minimize risks. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/testing-concepts @@ -34,7 +34,7 @@ related: link: docs/scos/dev/guidelines/testing-guidelines/testing-console-commands.html --- -Testing your project is one of the best ways to ensure that your software functions as it is supposed to. The role of testing is to find bugs during the early stages of development to minimize risks. QA is the process of assuring quality, not just verifying you will not get an error on some page. +Testing your project is one of the best ways to ensure that your software functions as it's supposed to. The role of testing is to find bugs during the early stages of development to minimize risks. QA is the process of assuring quality, not just verifying you will not get an error on some page. However, testing will not make a system completely bug-free, it can and will reduce the quantity of system faults, help you avoid having major and critical errors and minimize those which can just distract users from using the system. @@ -46,7 +46,7 @@ With or without a QA engineer, we have compiled a few tips, guidelines and recom ## The four main reasons errors occur -Errors can appear during all stages of software development: while introducing a feature, during specification, development and testing phases. These are elements of human error - features are introduced without taking into consideration how they will work for the end user, specifications don't include integration with an existing or upcoming feature, validation rules and behavior descriptions are not fully thought through and many more other intricacies that are overlooked. In the development stage, bugs are a natural occurrence and during testing it is not uncommon to discover that fixing a bug actually reveals or introduces new ones. +Errors can appear during all stages of software development: while introducing a feature, during specification, development and testing phases. These are elements of human error - features are introduced without taking into consideration how they will work for the end user, specifications don't include integration with an existing or upcoming feature, validation rules and behavior descriptions are not fully thought through and many more other intricacies that are overlooked. In the development stage, bugs are a natural occurrence and during testing it's not uncommon to discover that fixing a bug actually reveals or introduces new ones. Generally, errors happen from the following reasons: @@ -70,7 +70,7 @@ We have compiled a short checklist to use while creating the specification and d ## What is “high-quality software”? -Quality doesn't mean "bug free". Quality means, meeting the stated requirements, functions correctly where it is supposed to, there are no critical, blocking or major issues, and that bugs of other severity are brought to the possible minimum or don’t distract/prevent the user from using the system. +Quality doesn't mean "bug free". Quality means, meeting the stated requirements, functions correctly where it's supposed to, there are no critical, blocking or major issues, and that bugs of other severity are brought to the possible minimum or don’t distract/prevent the user from using the system. This brings us to two questions: @@ -93,7 +93,7 @@ Is the capability of a system to prevent malicious or accidental actions outside ### Usability -Usability defines how well the application meets user requirements. We are looking for an application that is intuitive and provides a good overall user experience. Even if you do not have a QA team you can still run usability testing. "Still" because as mentioned above, developers tend to think positively of their code. Usually a developer only wants to check that the scenarios written in the requirements are passed. But it is important to look at your software from the outside. To imagine you are not the creator but the user. Try to identify what irritates you when using the software. It is very common for us to get frustrated by bad usability and want to fix it ourselves, but we can only report bugs to the creators and wait for the fix. Here you have the opportunity to fix everything yourself in the way you see it the best! +Usability defines how well the application meets user requirements. We are looking for an application that is intuitive and provides a good overall user experience. Even if you do not have a QA team you can still run usability testing. "Still" because as mentioned above, developers tend to think positively of their code. Usually a developer only wants to check that the scenarios written in the requirements are passed. But it's important to look at your software from the outside. To imagine you are not the creator but the user. Try to identify what irritates you when using the software. It is very common for us to get frustrated by bad usability and want to fix it ourselves, but we can only report bugs to the creators and wait for the fix. Here you have the opportunity to fix everything yourself in the way you see it the best! Naturally, there are many more quality attributes and there are lots of articles and resources online that you can use to further research and tailor your own list, like (Chapter 16: Quality Attributes)[https://msdn.microsoft.com/en-us/library/ee658094.aspx]. However, for us, our top priority is to focus on performance, security and usability. @@ -111,7 +111,7 @@ Here are the steps you should follow: * Prioritize test scenarios. Sometimes you will not have enough time to run a full regression test scope for all existing features. In this case, knowing which are the highest priority scenarios helps you to concentrate on them to pass. * Using TDD for implementation can be a good practice. First, write the acceptance tests and then implement until tests are all passed. * Also make sure to manually test the feature at least once. -* Testing each module as soon as it is ready. It is best not to wait until the project is more or less done. Instead, adopt the approach that if a feature is ready - test it. Use manual tests and follow your test scenarios to make the process fast and effective. +* Testing each module as soon as it's ready. It is best not to wait until the project is more or less done. Instead, adopt the approach that if a feature is ready - test it. Use manual tests and follow your test scenarios to make the process fast and effective. * By our estimate, testing a module such as the Product Category module with some positive and some negative cases takes 30 - 40 minutes for an experienced tester. An inexperienced person would probably take an hour. Use these estimates to help calculate the time you need for testing in your plans. Planning projects with development time and test time together, helps to create a more realistic timeline. It will also help you to be able to predict your launch date a bit better as a well-tested project is likely to have less surprises towards the end. The following diagram illustrates what a test process looks like without a QA team. @@ -151,7 +151,7 @@ Real example: Link tickets and documents with feature changes to the original features. Make sure that it’s easy to find initial functionality and how it’s connected to the new changes. Be sure that support documentation is also updated and does not stay in initial state without new changes. -Link bugs found during testing to the tested feature with a relation like "discovered by" - bugs sometimes reveal uncovered requirements steps and it is easier to track such black points if they are all linked together. +Link bugs found during testing to the tested feature with a relation like "discovered by" - bugs sometimes reveal uncovered requirements steps and it's easier to track such black points if they are all linked together. Link tests to use cases and other requirement tickets with relation like "covers" or "verifies", this will help you understand in the future how well your requirement tickets are covered and see whether there are any not covered by any tests. @@ -191,7 +191,7 @@ Test environments should as much as possible, correspond with the final target o ### Where to test -When you are working on a single module or functionality, it is easy to forget that the end result is a collection of many working pieces. Do not limit testing to just either Yves or Zed, check them both together. For example: if you create a new shipment method, it is not enough to see the success message in Zed. Take a moment to go to Yves to see that the new element is also there, functional and not throwing exceptions when you try to select/open it. +When you are working on a single module or functionality, it's easy to forget that the end result is a collection of many working pieces. Do not limit testing to just either Yves or Zed, check them both together. For example: if you create a new shipment method, it's not enough to see the success message in Zed. Take a moment to go to Yves to see that the new element is also there, functional and not throwing exceptions when you try to select/open it. ### Test and test again diff --git a/docs/dg/dev/integrate-and-configure/implementing-graceful-shutdown.md b/docs/dg/dev/integrate-and-configure/implementing-graceful-shutdown.md index da79f7134d..589f0bb3d0 100644 --- a/docs/dg/dev/integrate-and-configure/implementing-graceful-shutdown.md +++ b/docs/dg/dev/integrate-and-configure/implementing-graceful-shutdown.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/howtos/howto-handle-graceful-shutdown.html --- -When a running process is stopped by, for example, signals like `SIGTERM` and `SIGINT`, the process is stopped right away, no matter if it is completed or not. Sometimes, such behavior is not acceptable—for example, in the case of half imported data set. +When a running process is stopped by, for example, signals like `SIGTERM` and `SIGINT`, the process is stopped right away, no matter if it's completed or not. Sometimes, such behavior is not acceptable—for example, in the case of half imported data set. To make sure that a process is shut down gracefully, use the `GracefulRunner` module and pass `\Generator` to its `GracefulRunnerFacadeInterface::run()` method. `GracefulRunnerFacadeInterface::run()` uses the [signal handler](https://github.com/Seldaek/signal-handler) to register a new handler [with pcntl_signal](https://www.php.net/manual/en/function.pcntl-signal.php), and wraps the passed `\Generator`. Until a signal is sent, the `\Generator::next()` method is executed to make sure that one step of your process is fully completed before the script shuts down. diff --git a/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md b/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md index 1117f1f0e7..64e6dc4ddf 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md +++ b/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md @@ -128,7 +128,7 @@ class DataImportBusinessFactory extends SprykerDataImportBusinessFactory } ``` -3. In `Pyz\Zed\DataImport\Business\Model\Glossary\GlossaryWriterStep`, update the writer steps by adjusting the execute method to flush `MemoryAllocatedElasticBatch` when it is full. +3. In `Pyz\Zed\DataImport\Business\Model\Glossary\GlossaryWriterStep`, update the writer steps by adjusting the execute method to flush `MemoryAllocatedElasticBatch` when it's full. ```php diff --git a/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md b/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md index f7d998b3a3..dc05ac6450 100644 --- a/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md +++ b/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md @@ -37,7 +37,7 @@ After the disk has been created, you can see it being mounted in Finder already. ## Copy existing projects -You can copy all existing projects to the newly created box. If it is not mounted, double-click the disk image file in Finder. After copying all your projects, you can replace your current project directory with the mount-point for the disk image so that you don't have to adjust any paths you already set up. For details, see the following section. +You can copy all existing projects to the newly created box. If it's not mounted, double-click the disk image file in Finder. After copying all your projects, you can replace your current project directory with the mount-point for the disk image so that you don't have to adjust any paths you already set up. For details, see the following section. ## mount the disk image at boot automatically diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 05b2e45ae0..05cec46687 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -17,7 +17,7 @@ This guide is applicable in scenarios where store configurations and setups are ## Initial planning and best practices ### Clear Roadmap -It is good to have overall plan, detailing all stores that will be added in the future. This can impact not only database structure and configurations, but overall decisions on how to approach the rollout, making sure it is cost-efficient over time, on all ends. +It is good to have overall plan, detailing all stores that will be added in the future. This can impact not only database structure and configurations, but overall decisions on how to approach the rollout, making sure it's cost-efficient over time, on all ends. ### Backup strategy Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. diff --git a/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md index 800cbd108e..b150fdd568 100644 --- a/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md @@ -1,11 +1,10 @@ --- -title: "Adding stores in a multi-database setup" +title: "Adding stores in a multi-datatabse setup" description: Adding and deploying a new store in multi-db store setup requires additional steps and preparation. This guideline contains all the best practices you need to know. last_updated: Dec 02, 2024 template: howto-guide-template -originalLink: -originalArticleId: redirect_from: + - /docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.html --- Setting up a new store in an existing multi-database environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This document describes how to launch a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. @@ -20,82 +19,92 @@ This section describes the planning stage of launching a store. ### Clear roadmap -It's good to have an overall plan, detailing all the stores you want to add in future. This can affect database structure, configuration, and overall decisions on how to approach the rollout, making sure it is cost-efficient over time, on all ends. +Create a long-term plan, detailing all the stores you want to add in future. This can affect database (DB) structure, configuration, and the choice of rollout approach, making sure it's cost-efficient over time. ### Backup strategy -A backup plan needs to be ready in case of issues during deployment. Apart from database backups, this includes considerations on all the points in the following sections, including the business side. +A backup plan needs to be ready in case of issues during deployment. Apart from DB backups, this includes considerations on all the points in the following sections, including the business side. ### Environment preparation -To prepare your production and non-production environments for a store rollout, make sure there's no additional functionality to be released on top or parallel development. Teams and stakeholders need to be prepared and aware of the procedure. + +To prepare production and non-production environments for a store rollout, make sure there's no additional functionality to be released on top or parallel development. Teams and stakeholders need to be prepared and aware of the procedure. ### Repeatability -If you're planning to release more stores in future, prepare process to be easily repeatable. This includes creating various detailed documentation, release procedure, and tickets, such as epics, stories, tasks, in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. +If you're planning to release more stores in future, make the process easily repeatable. This includes creating detailed documentation, release procedure, and tickets, such as epics, stories, or tasks, in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. + +## Store rollout considerations -## Detailed considerations for the migration +This section describes parts of the application you need to consider when preparing a rollout plan. ### Integrations and third-party systems -* Review and adjust all third-party integrations to ensure they work with the new store setup. This mainly concerns data and it’s isolation across multiple virtual DBs. Make sure that people working with both sides of the system, such as backend, frontend, merchant portal and APIs, have access to all the needed data. -* Integrations, such as single sign-on, payment gateways, or inventory systems, may require updates. Make sure tech teams responsible for those systems are available and ready to do needed changes on time. +* Review and adjust all third-party integrations to ensure they work with the new store setup. This mainly concerns data and it’s isolation across virtual DBs. Teams working with both sides of the system, such as backend, frontend, merchant portal and APIs, should have access to all the needed data. +* Integrations, such as single sign-on, payment gateways, or inventory systems, may require updates. Teams responsible for those systems should be available and ready to do needed changes on time. ### Data import -* Handle the data import process carefully, breaking it down into specific tasks such as configuring databases and adjusting the data import setup to work with the new store. -* Make sure existing DBs, for example–a DB from another country, are correctly renamed or adjusted to fit the new multi-DB structure. +* Handle the data import process carefully, breaking it down into specific tasks such as configuring DBs and adjusting the data import setup to work with the new store. +* Make sure existing DBs, for example–a DB from another country, are correctly renamed or adjusted to fit the multi-DB structure. * Anticipate and plan for potential updates that may arise after end-to-end testing of the project data migration. ### Code buckets -* If code buckets are used, investigate and adjust their configurations as necessary. Thoroughly document the steps for adjusting the configurations, making sure that code bucket keep working properly after a new store is added. + +If code buckets are used, investigate and adjust their configurations, making sure code buckets keeps working properly after the stored is introduced. Thoroughly document the steps for adjusting the code buckets configuration. ### Cloud environment and monitoring -* Consider and adjust monitoring tools and APM, such as NewRelic and CloudWatch, to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store. -* Check if you need to adjust AWS services, for example–introduce buckets for the new store in S3. +* Consider and adjust application performance monitoring tools, such as NewRelic and CloudWatch, to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store. +* Consider adjusting AWS services, for example–introduce S3 buckets for the new store. ### Frontend considerations Reconsider the prior topics relative to your frontend. For example–frontend separation might be a significant task, requiring layout changes between different stores and API changes. + + + + + ## Releasing stores This section provides detailed guidelines for releasing stores. -For general instructions for defining new databases, connecting them with new stores, and adding configuration, follow [Integrate multi-database logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html). +For general instructions for defining new DBs, connecting them with new stores, and adding configuration, follow [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-DB-logic.html). ### Local setup +This section describes how to add the configuration and deployment recipes for a new store. -#### New store configuration +#### Add the configuration for the new store -* Using [Add and remove databases of stores](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html#remove-the-configuration-of-the-database), define the following new entities in your deploy file: +* Using [Add and remove DBs of stores](/docs/ca/dev/multi-store-setups/add-and-remove-DBs-of-stores.html), define the following new entities in your deploy file: | ENTITY | SECTION | -| Database | `regions..services.databases` | +| Database | `regions..services.DBs` | | Store | `regions..stores`| | Domains | `groups..applications` | -* Using [Integrate multi-database logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html), add the configuration needed for the new store to `stores.php`. +* In `stores.php`, add the configuration for the new store. For instructions, see [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-DB-logic.html). * Prepare data import configurations and data files for the new store. * Adjust the local environment setup as needed, including configurations and environment variables. Examples: * Frontend router configuration * Code bucket configuration * Create new Back Office users -* To make sure these steps are repeatable in future, document them. +* To make these steps repeatable in future, document them. #### Running initial setup locally -Bootstrap your updated configuration and run the project: +Bootstrap the updated configuration and run the project: ```bash docker/sdk boot deploy.dev.yml docker/sdk up ``` -Make sure the new store’s database has been correctly initialized and filled up with the demo data. +Make sure the new store’s DB has been correctly initialized and filled up with demo data. #### Setting up additional deployment recipes -When adding and deleting stores, for testing purposes, we recommend creating additional deployment install recipes in `config/install`. The following are examples of such recipes, which we tested in action. The examples recipes are based on the default folder structure with the EU folder as a base, but you can introduce your own structure. +When adding and deleting stores, for testing purposes, we recommend creating additional deployment install recipes in `config/install`. The following are examples of such recipes, which we tested in action. The examples are based on the default folder structure with the EU folder as a base, but you can introduce your own structure. A minimal recipe for adding a store: @@ -160,22 +169,23 @@ More information on this is provided in the following sections. ### Staging setup +This section describes how to roll out a new store in a staging environment. -#### Environment configuration - -* Add the configuration for the new store to the staging environment’s configuration. - - -For the database to be initialized, you will need to run a destructive deployment for the new store. +#### Staging environment configuration -To make sure existing stores are not affected, you need to specify only new store code(s) in your deployment yml file (image.environment section), in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. +Add the configuration for the new store to the staging environment’s configuration. -Example, for new PL and AT stores to be introduced: `SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv"` +For initialize the DB, run a destructive deployment for the new store. To not affect existing stores, in the `image.environment` section of the deployment file, define only the new store in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. In the following example, new PL and AT stores are introduced: +```yml +... +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv" +... +``` -You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) +You can also use a custom recipe as described in [Setting up additional deployment recipes](#setting-up-additional-deployment-recipes). -#### Support Requests -* Open a support request to apply the new configuration to the environment. Attach deploy file and explain shortly expected changes, i.e. new DB should be created. In case you have the necessary configuration in a specific branch of your repository, provide a reference to it in the ticket, making sure support team has access to your code base. +#### Support requests +* Open a support request to apply the new configuration to the environment. Attach the deploy file and shortly explain expected changes, that is the stores that need to be introduced. If the necessary configuration is in a specific repository branch, reference it in the ticket and make sure the support team has access to your code base. * Run the destructive deployment, assuring the right store(s) is specified. #### Deployment Execution diff --git a/docs/dg/dev/internationalization-and-multi-store/handling-internationalization.md b/docs/dg/dev/internationalization-and-multi-store/handling-internationalization.md index 6096f99c5a..f7f7eec111 100644 --- a/docs/dg/dev/internationalization-and-multi-store/handling-internationalization.md +++ b/docs/dg/dev/internationalization-and-multi-store/handling-internationalization.md @@ -8,7 +8,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/advanced-tutorials/tutorial-internationalization.html --- -In international business, it is important to fine-tune a shop's behavior according to the country. Functionality that needs to be configured: +In international business, it's important to fine-tune a shop's behavior according to the country. Functionality that needs to be configured: * Design and layout * Currency and price @@ -25,7 +25,7 @@ At the same time, the product import from a PIM system cart calculation and the ## Store concept -To cope with these challenges, Spryker’s architecture differentiates a project and a store level. That means coding and behavior can be defined on each level. Logic that is identical will be on the project level. Examples are the product structure or customer structure. At the same time, it is possible to define a store level, this will typically be used for each country the company operates in. This allows maintaining coding that is only relevant for the given store. The store will define design and layout, used currency, and price. We recommend you have a different store at least on the currency level. +To cope with these challenges, Spryker’s architecture differentiates a project and a store level. That means coding and behavior can be defined on each level. Logic that is identical will be on the project level. Examples are the product structure or customer structure. At the same time, it's possible to define a store level, this will typically be used for each country the company operates in. This allows maintaining coding that is only relevant for the given store. The store will define design and layout, used currency, and price. We recommend you have a different store at least on the currency level. ## Internationalization vs localization diff --git a/docs/dg/dev/miscellaneous-guides/simulating-deployments-locally.md b/docs/dg/dev/miscellaneous-guides/simulating-deployments-locally.md index 0ae3b8e436..74a1d4b25b 100644 --- a/docs/dg/dev/miscellaneous-guides/simulating-deployments-locally.md +++ b/docs/dg/dev/miscellaneous-guides/simulating-deployments-locally.md @@ -8,7 +8,7 @@ redirect_from: --- -Are you about to roll out an important feature to your staging or production environment and want to ensure that everything will work out right? Or you are encountering behavior in your application when it is deployed that does not seem right, and you are wondering how to best debug it? This document provides tips that can help you avoid surprises and help you prepare your project optimally for deployment and build a local development setup with which you can debug more effectively. +Are you about to roll out an important feature to your staging or production environment and want to ensure that everything will work out right? Or you are encountering behavior in your application when it's deployed that does not seem right, and you are wondering how to best debug it? This document provides tips that can help you avoid surprises and help you prepare your project optimally for deployment and build a local development setup with which you can debug more effectively. To simulate your application behavior and how it looks when deployed to the staging or production environment, bootstrap the `deploy.yml` files used by those environments. The following sections show what needs to be done. diff --git a/docs/dg/dev/sdks/sdk/customization-strategies-and-upgradability.md b/docs/dg/dev/sdks/sdk/customization-strategies-and-upgradability.md index ced14dca96..dc7f511ea3 100644 --- a/docs/dg/dev/sdks/sdk/customization-strategies-and-upgradability.md +++ b/docs/dg/dev/sdks/sdk/customization-strategies-and-upgradability.md @@ -35,7 +35,7 @@ Module configuration is one of the Public APIs. This means that Spryker makes s ### Plug and Play customization -Plug and Play is Spryker’s out-of-the-box development strategy that allows customers to extend a project with various built-in plugins. In case there’s no plugin, it is recommended to create a feature request or create a custom plugin and wire it up in the DependencyProvider, or via configuration. +Plug and Play is Spryker’s out-of-the-box development strategy that allows customers to extend a project with various built-in plugins. In case there’s no plugin, it's recommended to create a feature request or create a custom plugin and wire it up in the DependencyProvider, or via configuration. Check out our [Plugins](/docs/dg/dev/backend-development/plugins/plugins.html) article to get more information. @@ -135,7 +135,7 @@ Let’s see how this affects our upgrade process. #### Patch releases -Patch releases, such as for example 1.2.1 to 1.2.2, will not affect the `DEFAULT_CATEGORY_READ_CHUNK` value or usage so it is safe to automatically update to patches even if the project has modified the constant value to suit its needs. +Patch releases, such as for example 1.2.1 to 1.2.2, will not affect the `DEFAULT_CATEGORY_READ_CHUNK` value or usage so it's safe to automatically update to patches even if the project has modified the constant value to suit its needs. #### Minor release diff --git a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md index 298e54821e..d65475e777 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md +++ b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md @@ -63,7 +63,7 @@ Note that running this command with the level 2 key (**-l 2**) and having no err **Main configuration file inheritance** -To avoid duplicated code while specifying a different configuration in the _parameters_ section of the `phpstat.neon` file, it is possible to extend this file and determine only the changes needed for a particular configuration of a module. +To avoid duplicated code while specifying a different configuration in the _parameters_ section of the `phpstat.neon` file, it's possible to extend this file and determine only the changes needed for a particular configuration of a module. ### ./[ROOT]/phpstan.neon diff --git a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md index 2544481dd8..5cc32e67f2 100644 --- a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md @@ -294,7 +294,7 @@ class YourValueResolver implements ValueResolverInterface } ``` -You can define a value resolver as a Symfony service, for example to be able to inject services into it. If the value resolver is not defined as a service, it is instantiated by its FQCN. +You can define a value resolver as a Symfony service, for example to be able to inject services into it. If the value resolver is not defined as a service, it's instantiated by its FQCN. Example of defining a value resolver as a Symfony service: diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-reference.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-reference.md index 5657678d30..e4561fe1c3 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-reference.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-reference.md @@ -345,7 +345,7 @@ image: Defines PHP settings. {% info_block warningBox "Memory Limits" %} -Please note that the maximum recommended PHP memory limit is 2048M. Going above this limit is rarely necessary and can lead to stability and performance issues in your environment. Test any configuration change carefully in a non-production setting. +Please note that the maximum recommended PHP memory limit's 2048M. Going above this limit's rarely necessary and can lead to stability and performance issues in your environment. Test any configuration change carefully in a non-production setting. {% endinfo_block %} @@ -852,7 +852,7 @@ Defines the composer settings to be used during deployment. ## Services You can configure and use external tools that are shipped with Spryker in Docker as services. -If a service has a dedicated configuration, it is configured and run when the current environment is set up and executed. +If a service has a dedicated configuration, it's configured and run when the current environment is set up and executed. The following services are supported: diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md index 0300d1e951..a9c6316bdb 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md @@ -174,7 +174,7 @@ Deploy files are merged in the following order: ## Parameter inheritance -When merging deploy files, the deploy file builder skips each duplicate parameter that was present in the previous parsed deploy files. For example, in `deploy.dev.yml`, memory limit is defined as follows: +When merging deploy files, the deploy file builder skips each duplicate parameter that was present in the previous parsed deploy files. For example, in `deploy.dev.yml`, memory limit's defined as follows: ```yaml image: @@ -184,7 +184,7 @@ image: memory_limit: 2048M ``` -And, in `./spryker/generator/deploy-file-generator/templates/services.deploy.template.yml`, the memory limit is defined as follows: +And, in `./spryker/generator/deploy-file-generator/templates/services.deploy.template.yml`, the memory limit's defined as follows: ```yaml image: diff --git a/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md b/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md index cff22f24a1..318b0b61eb 100644 --- a/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md +++ b/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md @@ -44,7 +44,7 @@ SCCOS consists of a number of independent components. Each of them has a dedicat You can check the current `composer.json` file in the corresponding [repository of the Cart module](https://github.com/spryker/cart). -In the project level `composer.json` file you can specify the components that you want to use along with their versions like it is done in the [Spryker Commerce OS](https://github.com/spryker-shop/suite ): +In the project level `composer.json` file you can specify the components that you want to use along with their versions like it's done in the [Spryker Commerce OS](https://github.com/spryker-shop/suite ): ```php ... @@ -133,7 +133,7 @@ For each module that you want to add: 1. Name or rename the new module by using the old module’s name and prefixing it with `replace_`. For example, create a dummy file called `replace_refund` to replace the refund module. This will help to keep track of any replaces you do in the project. 2. In the newly created dummy module directory, create an empty `composer.json` file and add the following Composer Configuration Information. 3. Add the newly created module to your project’s `composer.json` file by going into your project’s `composer.json` and adding the new location. - 4. Check if the core module is in your project’s `composer.json` file and if it is, remove it. + 4. Check if the core module is in your project’s `composer.json` file and if it's, remove it. * Execute composer update with the replace module name: diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/redis-session-lock.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/redis-session-lock.md index 01144dc6b1..5db78d64fc 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/redis-session-lock.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/redis-session-lock.md @@ -141,7 +141,7 @@ $config[SessionConstants::YVES_SESSION_SAVE_HANDLER] = CONDITION ? SessionRedisConfig::SESSION_HANDLER_REDIS_LOCKING; ``` -In this example, `CONDITION` can be any operation with a boolean result, but it is impostant to keep it quickly executed, not to make a bottleneck from configuration declartion. +In this example, `CONDITION` can be any operation with a boolean result, but it's impostant to keep it quickly executed, not to make a bottleneck from configuration declartion. Here's one of the possible examples of a condition: - `str_contains($_SERVER['HTTP_USER_AGENT'] ?? '', 'Googlebot')` or - `str_contains($_SERVER['REQUEST_URI'] ?? '', '/some-url')` or diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/container.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/container.md index 5de07359ad..4adcad51b6 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/container.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/container.md @@ -18,7 +18,7 @@ A *container* is a class which holds one or more object collections or definitio The container is used to add services and allow other application plugins access them. Services are integrations like Twig or Symfony components like Security or Form. To be able to configure or change the services easily, they are added to the applications as a part of [application plugins](/docs/dg/dev/upgrade-and-migrate/silex-replacement/application.html). -It's important that almost everything that is accessible through the container should only be instantiated when it is requested. It's not as important for static values like `isDebugMode` as it is important for expensive instantiations. +It's important that almost everything that is accessible through the container should only be instantiated when it's requested. It's not as important for static values like `isDebugMode` as it's important for expensive instantiations. ## Where is the container used? @@ -166,7 +166,7 @@ if ($container->has('your service identifier')) { } ``` -With the code, you can alter your service without loading it. Your service will only be loaded when it is requested from the container using `container::get()`. +With the code, you can alter your service without loading it. Your service will only be loaded when it's requested from the container using `container::get()`. ## Global services @@ -228,4 +228,4 @@ class ModuleCommunicationFactory extends AbstractCommunicationFactory `FrozenServiceException` - The service `your service identifier` is marked as frozen and can't be extended at this point. **then** -If you try to extend a service which was already requested from the container, you will see this exception. A debugger will help you to find a solution. Check which code causes this error by setting a breakpoint in the container where this exception is thrown. Most likely, you will spot the issue right away. If not, set an additional conditional breakpoint in the first line of the `container::get()` method: `$id === 'your service identifier'`. It instructs the debugger to stop when the service identifier which brings the exception is retrieved from the container. Now check the code which wants to retrieve the service and change it in a way that it is called only after `container::extend()` was executed. +If you try to extend a service which was already requested from the container, you will see this exception. A debugger will help you to find a solution. Check which code causes this error by setting a breakpoint in the container where this exception is thrown. Most likely, you will spot the issue right away. If not, set an additional conditional breakpoint in the first line of the `container::get()` method: `$id === 'your service identifier'`. It instructs the debugger to stop when the service identifier which brings the exception is retrieved from the container. Now check the code which wants to retrieve the service and change it in a way that it's called only after `container::extend()` was executed. diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-yves.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-yves.md index d6e7bf7838..cdc2deecb7 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-yves.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-yves.md @@ -42,7 +42,7 @@ Routers are added to the `\Pyz\Yves\Router\RouterDependencyProvider::getRouterPl The Router can be configured with the following `\Spryker\Yves\Router\RouterEnvironmentConfigConstantsYves` options: -* `\Spryker\Shared\Router\RouterConstants::YVES_IS_CACHE_ENABLED` - use this option to enable/disable the cache. By default, it is enabled. +* `\Spryker\Shared\Router\RouterConstants::YVES_IS_CACHE_ENABLED` - use this option to enable/disable the cache. By default, it's enabled. * `\Spryker\Shared\Router\RouterConstants::YVES_CACHE_PATH` - use this option if you want to change the path to the generated cache files. * `\Spryker\Shared\Router\RouterConstants::YVES_IS_SSL_ENABLED` - use this option to enable/disable the Router's SSL capabilities. * `\Spryker\Shared\Router\RouterConstants::YVES_SSL_EXCLUDED_ROUTE_NAMES` - use this option to disable SSL for the specific route names when SSL is enabled. diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-zed.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-zed.md index 7dc12cbadf..7f50aa7e01 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-zed.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-zed.md @@ -34,7 +34,7 @@ Additionally, you need to add the following plugins to the `\Pyz\Zed\EventDispat The Router can be configured with the following `RouterEnvironmentConfigConstantsZed` options: -* `\Spryker\Zed\Router\RouterConstants::ZED_IS_CACHE_ENABLED` - use this option to enable/disable the cache. By default, it is enabled. +* `\Spryker\Zed\Router\RouterConstants::ZED_IS_CACHE_ENABLED` - use this option to enable/disable the cache. By default, it's enabled. * `\Spryker\Zed\Router\RouterConstants::ZED_CACHE_PATH` - use this if you want to change the path to the generated cache files. * `\Spryker\Zed\Router\RouterConstants::ZED_IS_SSL_ENABLED` - use this to enable/disable Router's SSL capabilities. * `\Spryker\Zed\Router\RouterConstants::ZED_SSL_EXCLUDED_ROUTE_NAMES` - use this to disable SSL for the specific route names when SSL is enabled. diff --git a/docs/dg/dev/zed-api/tutorial-using-zed-api.md b/docs/dg/dev/zed-api/tutorial-using-zed-api.md index c0b6cb8118..4e675bfe63 100644 --- a/docs/dg/dev/zed-api/tutorial-using-zed-api.md +++ b/docs/dg/dev/zed-api/tutorial-using-zed-api.md @@ -94,9 +94,9 @@ After this step log into Zed and try opening `http://ZED_HOST/api/v1/doc` and `h ## 2. Create a business model to examine facade classes using reflection -First, it is needed to create an empty model class `ApiEntry` in the business layer, it can be placed in `Business/Model/ApiEntry.php`. +First, it's needed to create an empty model class `ApiEntry` in the business layer, it can be placed in `Business/Model/ApiEntry.php`. -This class must be created in a factory of the module. Additionally, the factory must provide additional dependencies from facades of other modules. To simplify the solution, facades can be created dynamically based on GET parameters of the request, while in real life it is advised to always specify these dependencies implicitly. +This class must be created in a factory of the module. Additionally, the factory must provide additional dependencies from facades of other modules. To simplify the solution, facades can be created dynamically based on GET parameters of the request, while in real life it's advised to always specify these dependencies implicitly. Considering all of above, the factory implementation can look like this: diff --git a/docs/pbc/all/carrier-management/202311.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md b/docs/pbc/all/carrier-management/202311.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md index 6d0fd2fb33..b47498d43d 100644 --- a/docs/pbc/all/carrier-management/202311.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md +++ b/docs/pbc/all/carrier-management/202311.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md @@ -44,7 +44,7 @@ data:import:shipment-price ## Additional information -The field *value* must be an *integer* as it is the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. +The field *value* must be an *integer* as it's the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. Fields `shipment_method_key`, `store` and `currency` are mandatory, and must be valid (imported already from existing database values, or created manually using the precedent CSV files: `shipment_method.csv` and `currency.csv` and `stores.php` configuration project file). Empty value fields are imported as zeros. diff --git a/docs/pbc/all/carrier-management/202404.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md b/docs/pbc/all/carrier-management/202404.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md index 6d0fd2fb33..b47498d43d 100644 --- a/docs/pbc/all/carrier-management/202404.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md +++ b/docs/pbc/all/carrier-management/202404.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md @@ -44,7 +44,7 @@ data:import:shipment-price ## Additional information -The field *value* must be an *integer* as it is the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. +The field *value* must be an *integer* as it's the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. Fields `shipment_method_key`, `store` and `currency` are mandatory, and must be valid (imported already from existing database values, or created manually using the precedent CSV files: `shipment_method.csv` and `currency.csv` and `stores.php` configuration project file). Empty value fields are imported as zeros. diff --git a/docs/pbc/all/carrier-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md b/docs/pbc/all/carrier-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md index b0453d46a6..0ac25738de 100644 --- a/docs/pbc/all/carrier-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md +++ b/docs/pbc/all/carrier-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment-price.csv.md @@ -45,7 +45,7 @@ data:import:shipment-price ## Additional information -The field *value* must be an *integer* as it is the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. +The field *value* must be an *integer* as it's the internal format to store money (currency) in the Spryker Demo Shop. Float values get converted into integer through multiplying by 100. For example, if the shipment cost is 5.50 EUR, the value in the CSV file should be 550. Fields `shipment_method_key`, `store` and `currency` are mandatory, and must be valid (imported already from existing database values, or created manually using the precedent CSV files: `shipment_method.csv` and `currency.csv` and `stores.php` configuration project file). Empty value fields are imported as zeros. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/calculation-data-structure.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/calculation-data-structure.md index 5d0e1ca3cd..21552f869d 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/calculation-data-structure.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/calculation-data-structure.md @@ -62,7 +62,7 @@ The entire data object is stored in the session, and it consists of the followin |sumGrossPrice (int)|The sum of item's gross price, calculated with `PriceCalculatorPlugin`.| |unitNetPrice (int) | A single item net price, set with `CartItemPricePlugin` (cart expander). | | sumNetPrice (int) | The sum of items net price, calculated with `PriceCalculatorPlugin`. | -| unitPrice (int) | A single item price without assuming whether it is new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | +| unitPrice (int) | A single item price without assuming whether it's new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | | sumPrice (int) | The sum of item's price calculated with `PriceCalculatorPlugin`. | | taxRate (float) | The current tax rate set by `ProductItemTaxRateCalculatorPlugin`. | | refundableAmount (int) | The item's available refundable amount (order only). It's set by `RefundableAmountCalculatorPlugin`. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index 7021b48f2a..b389e6be21 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -1,6 +1,6 @@ --- title: Checkout process review and implementation -description: This document provides an overview of the checkout process and how it is implemented in Spryker. +description: This document provides an overview of the checkout process and how it's implemented in Spryker. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/checkout-process-review-and-implementation @@ -80,7 +80,7 @@ Symfony forms provide a mechanism to store data into objects without needing man ### Checkout form submission -On form submission, the same processing starts with the difference that if form submit is detected, then the validation is called: +On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. * If form data is valid, then `execute()` is called on the step that executes the step-related logic. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-steps.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-steps.md index 99f7e0e4ab..7facabe4eb 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-steps.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-steps.md @@ -45,7 +45,7 @@ The checkout process consists of the following steps: Read on to learn more on each step. ## Entry step -The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it is not rendered. +The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it's not rendered. ## Customer step The customer step provides three forms: @@ -56,7 +56,7 @@ The customer step provides three forms: This step is responsible for filling `CustomerTransfer` with corresponding data. The authentication logic is left to the customer module, this step only delegates calls to and from the customer module and mapping data with forms. ## Address step -The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it is saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. +The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it's saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. ## Shipment step Get shipment method information and store it in the quote. This step requires additional configuration because different shipment providers and different ways forms must be handled for each. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md index e3fe1e3e26..e50c2add94 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit is in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. {% endinfo_block %} @@ -138,7 +138,7 @@ The company has the following company users: | Manager | Approver | Has the *Approve up to grand total* permission set to €600. | | Head of the department | Approver | Has the *Approve up to grand total* permission set to €1000. | -Quote C needs approval that has to be provided by the head of the department because the manager's approval limit is lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. +Quote C needs approval that has to be provided by the head of the department because the manager's approval limit's lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. #### Case 4: Approval Process is not initiated diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md index 572f3147f7..06043caa99 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md @@ -25,4 +25,4 @@ For the **Add to cart** icon to be active for the product on the **Catalog** pag A product belonging to a [product group](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/feature-overviews/product-feature-overview/product-feature-overview.html) can also be added to the cart from the **Category** page. However, like with regular products, a product from the product group must have no more than one variant and be available. -If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it is added without any options. +If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it's added without any options. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md index 05007878a4..4e34fd82ab 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md @@ -95,7 +95,7 @@ All the thresholds have a store relation. If you have a multi-store and multi-cu ## Merchant order thresholds -A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it is defined. +A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it's defined. If global and merchant order thresholds are defined, both are applied to the customers' orders belonging to the merchant relation. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/comments-feature-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/comments-feature-overview.md index 85d096f0af..9d6a376b3a 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/comments-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/comments-feature-overview.md @@ -23,7 +23,7 @@ Thus, the Comments feature lets your B2B customers effectively communicate and d ## Comments widget -Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it is the **Shopping Cart** page. +Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it's the **Shopping Cart** page. The comment contains the following information: diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-global-thresholds.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-global-thresholds.md index 36cf02caa7..f0b01fb703 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-global-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-global-thresholds.md @@ -69,7 +69,7 @@ In the **Message** field, enter *{% raw %}{{{% endraw %}threshold{% raw %}}}{% e | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md index a978691f21..105ff50447 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md @@ -73,7 +73,7 @@ The page refreshes with a success message displayed. | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index d937d4742a..794a48b924 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -16,7 +16,7 @@ This endpoint allows finalizing the checkout process by placing an order. After sending a request, the cart is deleted, and you cannot make any further changes in the checkout data. This means the endpoint is best used for checkouts that can be performed in one pass or for finalizing a checkout after [submitting checkout data](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.html). -The endpoint also provides information on whether it is necessary to redirect the user to a third-party page to complete the payment. +The endpoint also provides information on whether it's necessary to redirect the user to a third-party page to complete the payment. ## Installation diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md index e2bcb887ab..4417d89ac7 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md @@ -1173,8 +1173,8 @@ In case of a successful update, the endpoint responds with information that can | addresses | iso2Code | String | Specifies an ISO 2 Country Code to use. | | addresses | company | String | Specifies the customer's company. | | addresses | phone | String | Specifies the customer's phone number. | -| addresses | isDefaultShipping | String | Defines if it is the default shipping address of the customer. | -| addresses | isDefaultBilling | String | Defines if it is the default billing address of the customer. | +| addresses | isDefaultShipping | String | Defines if it's the default shipping address of the customer. | +| addresses | isDefaultBilling | String | Defines if it's the default billing address of the customer. | | shipments | Items | Array | A list of items in the shipment. | | shipments | requestedDeliveryDate | Date | Desired delivery date. | | shipments | shippingAddress | Object | The address to which this shipment will be delivered. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md index e48232f20a..2bd5d9843a 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md @@ -3002,7 +3002,7 @@ To delete a cart, send the request: {% info_block infoBox "Deleting carts" %} -You cannot delete a cart if it is the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. +You cannot delete a cart if it's the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. {% endinfo_block %} diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md index bc1e48de30..25b4b6a453 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md @@ -2691,7 +2691,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***cart_uuid*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -3176,7 +3176,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md index b843729cd9..a14136fb6f 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md @@ -2879,7 +2879,7 @@ To change item quantity, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -3250,7 +3250,7 @@ To remove an item from a guest cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md index 81db053841..c77c806b2a 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md @@ -1006,7 +1006,7 @@ For the attributes of other included resources, see: Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be automatically assigned to their account. -To assign a guest cart to a customer, for example, 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +To assign a guest cart to a customer, for example, 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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md index 4cbc9a411a..645ee521a4 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md @@ -85,7 +85,7 @@ class ItemTaxAmountCalculatorPlugin extends AbstractPlugin implements Calculatio } ``` -6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it is not present. +6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it's not present. ```php

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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -4270,7 +4270,7 @@ To retrieve a registered user's cart, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md index a8ef70a03c..d355d594a9 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md @@ -1470,7 +1470,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1547,7 +1547,7 @@ It is the responsibility of the API Client to track whether the selected items a | 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. | +| unitPrice | Integer | Single item price without assuming if it's 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. | @@ -1614,7 +1614,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -1784,7 +1784,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %}| Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md index 35e673ffb1..67fd6bea1c 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md @@ -1593,7 +1593,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1760,7 +1760,7 @@ To change item quantity, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -1823,7 +1823,7 @@ To remove an item from a guest cart, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md index f20f35baa2..45181eada9 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md @@ -1811,7 +1811,7 @@ When retrieving the cart with `guestCartId`, the response includes a single obje "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1948,7 +1948,7 @@ For the attributes of other included resources, see: Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/calculation-data-structure.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/calculation-data-structure.md index 5d0e1ca3cd..21552f869d 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/calculation-data-structure.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/calculation-data-structure.md @@ -62,7 +62,7 @@ The entire data object is stored in the session, and it consists of the followin |sumGrossPrice (int)|The sum of item's gross price, calculated with `PriceCalculatorPlugin`.| |unitNetPrice (int) | A single item net price, set with `CartItemPricePlugin` (cart expander). | | sumNetPrice (int) | The sum of items net price, calculated with `PriceCalculatorPlugin`. | -| unitPrice (int) | A single item price without assuming whether it is new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | +| unitPrice (int) | A single item price without assuming whether it's new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | | sumPrice (int) | The sum of item's price calculated with `PriceCalculatorPlugin`. | | taxRate (float) | The current tax rate set by `ProductItemTaxRateCalculatorPlugin`. | | refundableAmount (int) | The item's available refundable amount (order only). It's set by `RefundableAmountCalculatorPlugin`. | diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index 7021b48f2a..b389e6be21 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -1,6 +1,6 @@ --- title: Checkout process review and implementation -description: This document provides an overview of the checkout process and how it is implemented in Spryker. +description: This document provides an overview of the checkout process and how it's implemented in Spryker. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/checkout-process-review-and-implementation @@ -80,7 +80,7 @@ Symfony forms provide a mechanism to store data into objects without needing man ### Checkout form submission -On form submission, the same processing starts with the difference that if form submit is detected, then the validation is called: +On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. * If form data is valid, then `execute()` is called on the step that executes the step-related logic. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-steps.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-steps.md index 99f7e0e4ab..7facabe4eb 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-steps.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-steps.md @@ -45,7 +45,7 @@ The checkout process consists of the following steps: Read on to learn more on each step. ## Entry step -The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it is not rendered. +The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it's not rendered. ## Customer step The customer step provides three forms: @@ -56,7 +56,7 @@ The customer step provides three forms: This step is responsible for filling `CustomerTransfer` with corresponding data. The authentication logic is left to the customer module, this step only delegates calls to and from the customer module and mapping data with forms. ## Address step -The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it is saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. +The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it's saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. ## Shipment step Get shipment method information and store it in the quote. This step requires additional configuration because different shipment providers and different ways forms must be handled for each. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md index 134526ad96..f472888796 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit is in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. {% endinfo_block %} @@ -138,7 +138,7 @@ The company has the following company users: | Manager | Approver | Has the *Approve up to grand total* permission set to €600. | | Head of the department | Approver | Has the *Approve up to grand total* permission set to €1000. | -Quote C needs approval that has to be provided by the head of the department because the manager's approval limit is lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. +Quote C needs approval that has to be provided by the head of the department because the manager's approval limit's lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. #### Case 4: Approval Process is not initiated diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md index 572f3147f7..06043caa99 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md @@ -25,4 +25,4 @@ For the **Add to cart** icon to be active for the product on the **Catalog** pag A product belonging to a [product group](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/feature-overviews/product-feature-overview/product-feature-overview.html) can also be added to the cart from the **Category** page. However, like with regular products, a product from the product group must have no more than one variant and be available. -If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it is added without any options. +If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it's added without any options. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md index 05007878a4..4e34fd82ab 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md @@ -95,7 +95,7 @@ All the thresholds have a store relation. If you have a multi-store and multi-cu ## Merchant order thresholds -A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it is defined. +A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it's defined. If global and merchant order thresholds are defined, both are applied to the customers' orders belonging to the merchant relation. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/comments-feature-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/comments-feature-overview.md index 85d096f0af..9d6a376b3a 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/comments-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/comments-feature-overview.md @@ -23,7 +23,7 @@ Thus, the Comments feature lets your B2B customers effectively communicate and d ## Comments widget -Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it is the **Shopping Cart** page. +Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it's the **Shopping Cart** page. The comment contains the following information: diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-global-thresholds.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-global-thresholds.md index 36cf02caa7..f0b01fb703 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-global-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-global-thresholds.md @@ -69,7 +69,7 @@ In the **Message** field, enter *{% raw %}{{{% endraw %}threshold{% raw %}}}{% e | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md index a978691f21..105ff50447 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md @@ -73,7 +73,7 @@ The page refreshes with a success message displayed. | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index d937d4742a..794a48b924 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -16,7 +16,7 @@ This endpoint allows finalizing the checkout process by placing an order. After sending a request, the cart is deleted, and you cannot make any further changes in the checkout data. This means the endpoint is best used for checkouts that can be performed in one pass or for finalizing a checkout after [submitting checkout data](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.html). -The endpoint also provides information on whether it is necessary to redirect the user to a third-party page to complete the payment. +The endpoint also provides information on whether it's necessary to redirect the user to a third-party page to complete the payment. ## Installation diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md index b8861ef699..b03fa816fd 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md @@ -3006,7 +3006,7 @@ To delete a cart, send the request: {% info_block infoBox "Deleting carts" %} -You cannot delete a cart if it is the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. +You cannot delete a cart if it's the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. {% endinfo_block %} diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md index 50f138993a..5d2a6ed4c0 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md @@ -2704,7 +2704,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***cart_uuid*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -3189,7 +3189,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md index 5ff5eddd98..135ecbfad0 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md @@ -2890,7 +2890,7 @@ To change item quantity, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -3274,7 +3274,7 @@ To remove an item from a guest cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md index 1a0b73dc91..c5f0160b9a 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md @@ -1006,7 +1006,7 @@ When retrieving the cart with `guestCartId`, the response includes a single obje Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be automatically assigned to their account. -To assign a guest cart to a customer, for example, 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +To assign a guest cart to a customer, for example, 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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md index 4cbc9a411a..645ee521a4 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md @@ -85,7 +85,7 @@ class ItemTaxAmountCalculatorPlugin extends AbstractPlugin implements Calculatio } ``` -6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it is not present. +6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it's not present. ```php

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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -4272,7 +4272,7 @@ To retrieve a registered user's cart, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md index a8ef70a03c..d355d594a9 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md @@ -1470,7 +1470,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1547,7 +1547,7 @@ It is the responsibility of the API Client to track whether the selected items a | 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. | +| unitPrice | Integer | Single item price without assuming if it's 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. | @@ -1614,7 +1614,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -1784,7 +1784,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %}| Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md index 35e673ffb1..67fd6bea1c 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md @@ -1593,7 +1593,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1760,7 +1760,7 @@ To change item quantity, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -1823,7 +1823,7 @@ To remove an item from a guest cart, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md index 31fbed8ec0..d0ca2ac1e9 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md @@ -1811,7 +1811,7 @@ When retrieving the cart with `guestCartId`, the response includes a single obje "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1950,7 +1950,7 @@ For the attributes of other included resources, see: Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/calculation-data-structure.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/calculation-data-structure.md index 550dd95f01..b6659f5c39 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/calculation-data-structure.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/calculation-data-structure.md @@ -62,7 +62,7 @@ The entire data object is stored in the session, and it consists of the followin |sumGrossPrice (int)|The sum of item's gross price, calculated with `PriceCalculatorPlugin`.| |unitNetPrice (int) | A single item net price, set with `CartItemPricePlugin` (cart expander). | | sumNetPrice (int) | The sum of items net price, calculated with `PriceCalculatorPlugin`. | -| unitPrice (int) | A single item price without assuming whether it is new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | +| unitPrice (int) | A single item price without assuming whether it's new or gross. This value must be used everywhere the price is displayed. It lets you switch tax mode without side effects. It's set with `CartItemPricePlugin` (cart expander). | | sumPrice (int) | The sum of item's price calculated with `PriceCalculatorPlugin`. | | taxRate (float) | The current tax rate set by `ProductItemTaxRateCalculatorPlugin`. | | refundableAmount (int) | The item's available refundable amount (order only). It's set by `RefundableAmountCalculatorPlugin`. | diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index 7021b48f2a..b389e6be21 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -1,6 +1,6 @@ --- title: Checkout process review and implementation -description: This document provides an overview of the checkout process and how it is implemented in Spryker. +description: This document provides an overview of the checkout process and how it's implemented in Spryker. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/checkout-process-review-and-implementation @@ -80,7 +80,7 @@ Symfony forms provide a mechanism to store data into objects without needing man ### Checkout form submission -On form submission, the same processing starts with the difference that if form submit is detected, then the validation is called: +On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. * If form data is valid, then `execute()` is called on the step that executes the step-related logic. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-steps.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-steps.md index 99f7e0e4ab..7facabe4eb 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-steps.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-steps.md @@ -45,7 +45,7 @@ The checkout process consists of the following steps: Read on to learn more on each step. ## Entry step -The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it is not rendered. +The entry step redirects the customer to the correct step based on the `QuoteTransfer` state. This step requires `input = false`, so it's not rendered. ## Customer step The customer step provides three forms: @@ -56,7 +56,7 @@ The customer step provides three forms: This step is responsible for filling `CustomerTransfer` with corresponding data. The authentication logic is left to the customer module, this step only delegates calls to and from the customer module and mapping data with forms. ## Address step -The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it is saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. +The address step is the step where the customer fills billing and shipping addresses in `QuoteTransfer::billingAddress` and `QuoteTransfer::shippingAddress`, respectively. This step lets the returning customers select one of the existing addresses or create a new one. A new address will be created only if the **Save new address to address book** checkbox is selected. Otherwise, it's saved in the order but is not stored in the database. This allows a customer to skip the new address saving if they want to. New and guest customers can only create a new address. If a new address is selected, it's only created when the order is placed, and the `OrderCustomerSavePlugin` plugin is enabled. ## Shipment step Get shipment method information and store it in the quote. This step requires additional configuration because different shipment providers and different ways forms must be handled for each. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md index 1994885b70..a83ae24daa 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit is in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. {% endinfo_block %} @@ -138,7 +138,7 @@ The company has the following company users: | Manager | Approver | Has the *Approve up to grand total* permission set to €600. | | Head of the department | Approver | Has the *Approve up to grand total* permission set to €1000. | -Quote C needs approval that has to be provided by the head of the department because the manager's approval limit is lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. +Quote C needs approval that has to be provided by the head of the department because the manager's approval limit's lower than the quote grand total. After the request has been approved by the head of the department, the buyer can complete the checkout. #### Case 4: Approval Process is not initiated diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md index 572f3147f7..06043caa99 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/cart-feature-overview/quick-order-from-the-catalog-page-overview.md @@ -25,4 +25,4 @@ For the **Add to cart** icon to be active for the product on the **Catalog** pag A product belonging to a [product group](/docs/pbc/all/product-information-management/{{site.version}}/base-shop/feature-overviews/product-feature-overview/product-feature-overview.html) can also be added to the cart from the **Category** page. However, like with regular products, a product from the product group must have no more than one variant and be available. -If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it is added without any options. +If a product has [options](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/feature-overviews/product-options-feature-overview.html), it can be added to the cart from the Category page, but it's added without any options. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md index c3fb8cc03a..ee2038caf7 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/checkout-feature-overview/order-thresholds-overview.md @@ -95,7 +95,7 @@ All the thresholds have a store relation. If you have a multi-store and multi-cu ## Merchant order thresholds -A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it is defined. +A *merchant order threshold* is a threshold that is applied to the customers belonging to the [merchant relation](/docs/pbc/all/merchant-management/{{site.version}}/base-shop/merchant-b2b-contracts-and-contract-requests-feature-overview.html) for which it's defined. If global and merchant order thresholds are defined, both are applied to the customers' orders belonging to the merchant relation. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/comments-feature-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/comments-feature-overview.md index 85d096f0af..9d6a376b3a 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/comments-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/comments-feature-overview.md @@ -23,7 +23,7 @@ Thus, the Comments feature lets your B2B customers effectively communicate and d ## Comments widget -Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it is the **Shopping Cart** page. +Within the Comments feature, we have created the Comments widget. The widget can be placed on any entity page. In our case, it's the **Shopping Cart** page. The comment contains the following information: diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-global-thresholds.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-global-thresholds.md index 281314a1c5..8914120ef3 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-global-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-global-thresholds.md @@ -69,7 +69,7 @@ In the **Message** field, enter *{% raw %}{{{% endraw %}threshold{% raw %}}}{% e | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md index a978691f21..105ff50447 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-in-the-back-office/define-merchant-order-thresholds.md @@ -73,7 +73,7 @@ The page refreshes with a success message displayed. | ATTRIBUTE |DESCRIPTION| | --- | --- | -| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it is displayed. | +| STORE AND CURRENCY | Defines the store to which the threshold is applied and the currency in which it's displayed. | | ENTER THRESHOLD VALUE | Depending on the threshold type, defines the value that should be reached or not reached.| |MESSAGE |Short message that informs the customer about the threshold conditions. For example, _You should add items for {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} to pass a recommended threshold. You can't proceed with checkout._

Enter {% raw %}{{{% endraw %}threshold{% raw %}}}{% endraw %} or {% raw %}{{{% endraw %}fee{% raw %}}}{% endraw %} to reference the threshold name or the defined fee respectively. When the message is rendered on the Storefront, the placeholders are replaced with the values from **Enter threshold value** and **Enter flexible fee** or **Enter fixed fee** fields. | | ENTER FIXED FEE | Adds this value to cart if the threshold is not reached. | diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index 58a87c35a0..1e2c77e846 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -16,7 +16,7 @@ This endpoint allows finalizing the checkout process by placing an order. After sending a request, the cart is deleted, and you cannot make any further changes in the checkout data. This means the endpoint is best used for checkouts that can be performed in one pass or for finalizing a checkout after [submitting checkout data](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.html). -The endpoint also provides information on whether it is necessary to redirect the user to a third-party page to complete the payment. +The endpoint also provides information on whether it's necessary to redirect the user to a third-party page to complete the payment. ## Installation diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md index b8861ef699..b03fa816fd 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.md @@ -3006,7 +3006,7 @@ To delete a cart, send the request: {% info_block infoBox "Deleting carts" %} -You cannot delete a cart if it is the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. +You cannot delete a cart if it's the customer's only cart. If you attempt to delete a customer's last cart, the endpoint responds with the **422 Unprocessable Entry** status code. If you delete the default cart of a customer, another cart will be assigned as default automatically. {% endinfo_block %} diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md index 50f138993a..5d2a6ed4c0 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-items-in-carts-of-registered-users.md @@ -2704,7 +2704,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***cart_uuid*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -3189,7 +3189,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}cart_uuid{% raw %}}}{% endraw %}*** | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#create-a-cart) or [Retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-carts-of-registered-users/glue-api-manage-carts-of-registered-users.html#retrieve-registered-users-carts) to get it. | -| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it is equal to the item’s SKU. | +| ***{% raw %}{{{% endraw %}itemgroupkey{% raw %}}}{% endraw %}*** | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md index 5ff5eddd98..135ecbfad0 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-cart-items.md @@ -2890,7 +2890,7 @@ To change item quantity, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -3274,7 +3274,7 @@ To remove an item from a guest cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | ***{% raw %}{{{% endraw %}guest_cart_id{% raw %}}}{% endraw %}*** | The unique ID of the guest cart in the system. To get it, [retrieve a guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart). | -| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| ***{% raw %}{{{% endraw %}groupKey{% raw %}}}{% endraw %}*** | The group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md index 1a0b73dc91..c5f0160b9a 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.md @@ -1006,7 +1006,7 @@ When retrieving the cart with `guestCartId`, the response includes a single obje Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be automatically assigned to their account. -To assign a guest cart to a customer, for example, 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +To assign a guest cart to a customer, for example, 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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md index 4cbc9a411a..645ee521a4 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/tutorials-and-howtos/tutorial-calculator-plugin.md @@ -85,7 +85,7 @@ class ItemTaxAmountCalculatorPlugin extends AbstractPlugin implements Calculatio } ``` -6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it is not present. +6. Add a new facade method: `Pyz\Zed\Tax\TaxFacade::calculateItemTax()` and create the `TaxFacade` class extending Spryker Core `TaxFacade` if it's not present. ```php

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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -4272,7 +4272,7 @@ To retrieve a registered user's cart, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md index dbf16d9a29..eb4536ee50 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/carts-of-registered-users/manage-items-in-carts-of-registered-users.md @@ -1470,7 +1470,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1547,7 +1547,7 @@ It is the responsibility of the API Client to track whether the selected items a | 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. | +| unitPrice | Integer | Single item price without assuming if it's 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. | @@ -1614,7 +1614,7 @@ To change the number of items in a cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. | ### Request @@ -1784,7 +1784,7 @@ To remove an item from a registered user's cart, send the request: | PATH PARAMETER | DESCRIPTION | | --- | --- | | {% raw %}***{{cart_uuid}}***{% endraw %} | Unique identifier of a cart. [Create a cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-carts-of-registered-users.html) or [retrieve a registered user's carts](/docs/pbc/all/cart-and-checkout/{{page.version}}/marketplace/manage-using-glue-api/carts-of-registered-users/manage-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. | +| {% raw %}***{{item_group_key}}***{% endraw %}| Group key of the item. Usually, it's equal to the item’s SKU. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md index 35e673ffb1..67fd6bea1c 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-cart-items.md @@ -1593,7 +1593,7 @@ It is the responsibility of the API Client to track whether the selected items a "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1760,7 +1760,7 @@ To change item quantity, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request @@ -1823,7 +1823,7 @@ To remove an item from a guest cart, send the request: | 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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-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/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | +| {% raw %}***{{groupKey}}***{% endraw %} | Group key of the item. Usually, it's equal to the item’s SKU. To get it, [retrieve the guest cart](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/manage-using-glue-api/manage-guest-carts/glue-api-manage-guest-carts.html#retrieve-a-guest-cart) with the guest cart items included. | ### Request diff --git a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md index 31fbed8ec0..d0ca2ac1e9 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/marketplace/manage-using-glue-api/guest-carts/manage-guest-carts.md @@ -1811,7 +1811,7 @@ When retrieving the cart with `guestCartId`, the response includes a single obje "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -1950,7 +1950,7 @@ For the attributes of other included resources, see: Guest carts are anonymous as they are not related to any user. If a user registers or logs in, the guest cart can be 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. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: +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's an existing customer, or request to create a customer account if it's a new one. Adjust the configuration constant to create a cart for the newly authenticated customer while merging the guest cart with the customer cart: **src/Pyz/Zed/CartsRestApi/CartsRestApiConfig.php** diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/cms-blocks-overview.md b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/cms-blocks-overview.md index 300c1a0873..0aacc97e81 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/cms-blocks-overview.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/cms-blocks-overview.md @@ -25,7 +25,7 @@ The CMS feature is shipped with several block templates by default. A developer ## CMS block validity period -When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it is added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. +When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it's added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. ## CMS block store relation diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md index eac371535d..ad35b41459 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md @@ -38,7 +38,7 @@ A Developer can create more CMS Block email templates. ### Naming of email CMS blocks -Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it is assigned to. +Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it's assigned to. #### Template assignment @@ -116,7 +116,7 @@ To learn how a Back Office User creates translations, see [Managing Glossary](/d ### Variables in Email Templates -Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it is sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. +Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it's sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. A developer can provide a full list of variables and create new ones. diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/templates-and-slots-overview.md b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/templates-and-slots-overview.md index 11b88dbd67..196f7650eb 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/templates-and-slots-overview.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/cms-feature-overview/templates-and-slots-overview.md @@ -165,7 +165,7 @@ The template list contains the following information: | description | Template description. It is shown in the Back Office. | "The layout of Slots in the Home Page, always below Store Header including Navigation, and above Store Footer." | Note the following: -* If a template has only inactive slots, it is still considered a template with slots. Therefore, it is shown in the **Slots** section. +* If a template has only inactive slots, it's still considered a template with slots. Therefore, it's shown in the **Slots** section. * If a template is on an imported template list but does not have a slot, it's not considered a template with slots. Therefore, it's not displayed in the **Slots** section. ### Slot list @@ -179,7 +179,7 @@ The slot list contains the following information: | content provider | Defines the source of content of this slot. | SprykerCmsSlotBlock | | name | Alphabetical identifier of the slot. It is shown in the Back Office. | "Header Top" | | description | Description of the slot. It is shown in the Back Office. | "A content area in the Header section, that is below the logo and search section and above main navigation" | -| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it is not rendered in the Storefront by the slot widget. | 1 | +| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it's not rendered in the Storefront by the slot widget. | 1 | ## Content providers A content provider is a source from which Slot Widget fetches content to embed into slots and, subsequently, render it in the Storefront. With templates and slots, you can use slots to embed the content created in your Spryker project or CMS editors of technology partners (for example, [CoreMedia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/coremedia.html), [E-spirit](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/e-spirit.html), [Styla](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/styla.html), [Magnolia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/magnolia.html)). @@ -196,7 +196,7 @@ The following schema shows how content is managed with the help of templates wit ![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/CMS/Templates+%26+Slots/Templates+%26+Slots+Feature+Overview/templates-and-slots.png) ## Visibility conditions -When the content manager assigns a CMS block to a slot, it is displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. +When the content manager assigns a CMS block to a slot, it's displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. Page identifiers used to define visibility conditions depend on the page type to which a template with slots is applied. You can check identifiers for each page type in the following table. @@ -255,7 +255,7 @@ Properties are used by slot widgets to identify for which entity content is bein You can add other properties to meet your project or external content provider requirements. #### Property Types -Properties can be either `required` or `autofilled`. If a property is of the required type, it is entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: +Properties can be either `required` or `autofilled`. If a property is of the required type, it's entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: ```twig {% raw %}{%{% endraw %} cms_slot "cms-slot-key" autofilled ['locale', 'store'] required ['requiredProperty'] with { diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md b/docs/pbc/all/content-management-system/202311.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md index ec0f891250..d8b28975b3 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md @@ -30,7 +30,7 @@ This document describes the `cms_slot.csv` file to configure [CMS Slot](/docs/pb | content_provider | ✓ | String |Must be a valid type of content provider. | Defines the source of content of this slot. | | name | ✓ | String | | Alphabetical identifier of the slot. It will be shown in the Back Office. | | description | ✓ | String | | Description of the slot. It will be shown in the Back Office. | -| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it is not rendered in the Storefront by the slot widget. | +| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it's not rendered in the Storefront by the slot widget. | diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md index d535f36415..8521a33211 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md @@ -58,7 +58,7 @@ You don’t need to activate the email CMS block, as the deactivated status of t * Add a [glossary key](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html) to the email block. When the email is sent, the key is replaced with the translation you defined for the locale selected by the customer. To learn how to add translations, see [Managing glossary](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html). -* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it is replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. +* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it's replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. ## Reference information: Create an email CMS block diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md index 3fe4820b04..12dad949cc 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md @@ -19,14 +19,14 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/product-sets-feature-overview.html --- -This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it is on a page. +This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it's on a page. To reorder product sets by editing their weight, do the following: 1. Go to **Merchandising > Product Sets**. 2. On the **Product Sets** page, click **Reorder Product Sets**. This opens the **Reorder Product Sets** page. The product sets are displayed in the ascending order of their current weight. -3. Change the **WEIGHT** of each product set, so that it is in the needed position relatively to the other product sets. +3. Change the **WEIGHT** of each product set, so that it's in the needed position relatively to the other product sets. 4. Click **Submit**. This opens the **Product Sets** page with a success message displayed. The updated **WEIGHT** is displayed in the list and the product sets are ordered according to it. diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md index eac6f5b82a..44a21d725e 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md @@ -50,7 +50,7 @@ Request sample: `GET http://glue.mysprykershop.com/navigations/SOCIAL_LINKS` {% info_block infoBox "Performance" %} -If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it is absolutely necessary. +If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it's absolutely necessary. {% endinfo_block %} diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md index 6af1f2836c..ff8272c3e5 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md @@ -14,7 +14,7 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/cms-feature-overview/cms-feature-overview.html --- -By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it is transferred to TEXT (65535 bytes), and for PostgreSQL, it is transferred to TEXT (unlimited length). +By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it's transferred to TEXT (65535 bytes), and for PostgreSQL, it's transferred to TEXT (unlimited length). If your project requires more, you can redefine the field's size in the `spy_cms_version` table. diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md index 24bd13e61b..2569ef10df 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md @@ -246,7 +246,7 @@ class PersonalizedProductQueryPlugin implements QueryInterface {% info_block infoBox %} -The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it is used with the random score from Elasticsearch. You can change these values according to your needs. +The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it's used with the random score from Elasticsearch. You can change these values according to your needs. {% endinfo_block %} diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/cms-blocks-overview.md b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/cms-blocks-overview.md index 300c1a0873..0aacc97e81 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/cms-blocks-overview.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/cms-blocks-overview.md @@ -25,7 +25,7 @@ The CMS feature is shipped with several block templates by default. A developer ## CMS block validity period -When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it is added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. +When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it's added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. ## CMS block store relation diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md index 244daf4c4f..8bae34a724 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md @@ -38,7 +38,7 @@ A Developer can create more CMS Block email templates. ### Naming of email CMS blocks -Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it is assigned to. +Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it's assigned to. #### Template assignment @@ -122,7 +122,7 @@ To learn how a Back Office User creates translations, see [Managing Glossary](/d ### Variables in Email Templates -Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it is sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. +Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it's sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. A developer can provide a full list of variables and create new ones. diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/templates-and-slots-overview.md b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/templates-and-slots-overview.md index 11b88dbd67..196f7650eb 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/templates-and-slots-overview.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/cms-feature-overview/templates-and-slots-overview.md @@ -165,7 +165,7 @@ The template list contains the following information: | description | Template description. It is shown in the Back Office. | "The layout of Slots in the Home Page, always below Store Header including Navigation, and above Store Footer." | Note the following: -* If a template has only inactive slots, it is still considered a template with slots. Therefore, it is shown in the **Slots** section. +* If a template has only inactive slots, it's still considered a template with slots. Therefore, it's shown in the **Slots** section. * If a template is on an imported template list but does not have a slot, it's not considered a template with slots. Therefore, it's not displayed in the **Slots** section. ### Slot list @@ -179,7 +179,7 @@ The slot list contains the following information: | content provider | Defines the source of content of this slot. | SprykerCmsSlotBlock | | name | Alphabetical identifier of the slot. It is shown in the Back Office. | "Header Top" | | description | Description of the slot. It is shown in the Back Office. | "A content area in the Header section, that is below the logo and search section and above main navigation" | -| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it is not rendered in the Storefront by the slot widget. | 1 | +| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it's not rendered in the Storefront by the slot widget. | 1 | ## Content providers A content provider is a source from which Slot Widget fetches content to embed into slots and, subsequently, render it in the Storefront. With templates and slots, you can use slots to embed the content created in your Spryker project or CMS editors of technology partners (for example, [CoreMedia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/coremedia.html), [E-spirit](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/e-spirit.html), [Styla](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/styla.html), [Magnolia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/magnolia.html)). @@ -196,7 +196,7 @@ The following schema shows how content is managed with the help of templates wit ![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/CMS/Templates+%26+Slots/Templates+%26+Slots+Feature+Overview/templates-and-slots.png) ## Visibility conditions -When the content manager assigns a CMS block to a slot, it is displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. +When the content manager assigns a CMS block to a slot, it's displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. Page identifiers used to define visibility conditions depend on the page type to which a template with slots is applied. You can check identifiers for each page type in the following table. @@ -255,7 +255,7 @@ Properties are used by slot widgets to identify for which entity content is bein You can add other properties to meet your project or external content provider requirements. #### Property Types -Properties can be either `required` or `autofilled`. If a property is of the required type, it is entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: +Properties can be either `required` or `autofilled`. If a property is of the required type, it's entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: ```twig {% raw %}{%{% endraw %} cms_slot "cms-slot-key" autofilled ['locale', 'store'] required ['requiredProperty'] with { diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md b/docs/pbc/all/content-management-system/202404.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md index ec0f891250..d8b28975b3 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md @@ -30,7 +30,7 @@ This document describes the `cms_slot.csv` file to configure [CMS Slot](/docs/pb | content_provider | ✓ | String |Must be a valid type of content provider. | Defines the source of content of this slot. | | name | ✓ | String | | Alphabetical identifier of the slot. It will be shown in the Back Office. | | description | ✓ | String | | Description of the slot. It will be shown in the Back Office. | -| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it is not rendered in the Storefront by the slot widget. | +| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it's not rendered in the Storefront by the slot widget. | diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md index d535f36415..8521a33211 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md @@ -58,7 +58,7 @@ You don’t need to activate the email CMS block, as the deactivated status of t * Add a [glossary key](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html) to the email block. When the email is sent, the key is replaced with the translation you defined for the locale selected by the customer. To learn how to add translations, see [Managing glossary](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html). -* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it is replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. +* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it's replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. ## Reference information: Create an email CMS block diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md index 3fe4820b04..12dad949cc 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md @@ -19,14 +19,14 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/product-sets-feature-overview.html --- -This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it is on a page. +This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it's on a page. To reorder product sets by editing their weight, do the following: 1. Go to **Merchandising > Product Sets**. 2. On the **Product Sets** page, click **Reorder Product Sets**. This opens the **Reorder Product Sets** page. The product sets are displayed in the ascending order of their current weight. -3. Change the **WEIGHT** of each product set, so that it is in the needed position relatively to the other product sets. +3. Change the **WEIGHT** of each product set, so that it's in the needed position relatively to the other product sets. 4. Click **Submit**. This opens the **Product Sets** page with a success message displayed. The updated **WEIGHT** is displayed in the list and the product sets are ordered according to it. diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md index e6aa66f80f..b93662504d 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md @@ -50,7 +50,7 @@ Request sample: `GET http://glue.mysprykershop.com/navigations/SOCIAL_LINKS` {% info_block infoBox "Performance" %} -If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it is absolutely necessary. +If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it's absolutely necessary. {% endinfo_block %} diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md index 6af1f2836c..ff8272c3e5 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md @@ -14,7 +14,7 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/cms-feature-overview/cms-feature-overview.html --- -By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it is transferred to TEXT (65535 bytes), and for PostgreSQL, it is transferred to TEXT (unlimited length). +By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it's transferred to TEXT (65535 bytes), and for PostgreSQL, it's transferred to TEXT (unlimited length). If your project requires more, you can redefine the field's size in the `spy_cms_version` table. diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md index 24bd13e61b..2569ef10df 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md @@ -246,7 +246,7 @@ class PersonalizedProductQueryPlugin implements QueryInterface {% info_block infoBox %} -The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it is used with the random score from Elasticsearch. You can change these values according to your needs. +The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it's used with the random score from Elasticsearch. You can change these values according to your needs. {% endinfo_block %} diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/cms-blocks-overview.md b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/cms-blocks-overview.md index 300c1a0873..0aacc97e81 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/cms-blocks-overview.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/cms-blocks-overview.md @@ -25,7 +25,7 @@ The CMS feature is shipped with several block templates by default. A developer ## CMS block validity period -When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it is added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. +When creating a block, you can select validity dates. The dates define when the block starts and stops being displayed on the pages it's added to on the Storefront. For example, if you are planning to run a promotion campaign, you can create a banner beforehand and define when it starts and stops being displayed based on the promotion period. ## CMS block store relation diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md index 62c1f2d6d1..96559aef30 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/email-as-a-cms-block-overview.md @@ -39,7 +39,7 @@ A Developer can create more CMS Block email templates. ### Naming of email CMS blocks -Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it is assigned to. +Being a multi-purpose entity, CMS Blocks relies strongly on its naming when used as an email. The CMS Block name defines the email template it's assigned to. #### Template assignment @@ -123,7 +123,7 @@ To learn how a Back Office User creates translations, see [Managing Glossary](/d ### Variables in Email Templates -Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it is sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. +Also, you can use variables to adjust details like a customer name in the emails automatically. For example, if you add the `firstName` variable, when the email is sent, the variable is replaced with the first name of the customer it's sent to. Unlike glossary keys, variables are defined on the code level, namely in the transfer object definition. A developer can provide a full list of variables and create new ones. diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/templates-and-slots-overview.md b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/templates-and-slots-overview.md index 11b88dbd67..196f7650eb 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/templates-and-slots-overview.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/cms-feature-overview/templates-and-slots-overview.md @@ -165,7 +165,7 @@ The template list contains the following information: | description | Template description. It is shown in the Back Office. | "The layout of Slots in the Home Page, always below Store Header including Navigation, and above Store Footer." | Note the following: -* If a template has only inactive slots, it is still considered a template with slots. Therefore, it is shown in the **Slots** section. +* If a template has only inactive slots, it's still considered a template with slots. Therefore, it's shown in the **Slots** section. * If a template is on an imported template list but does not have a slot, it's not considered a template with slots. Therefore, it's not displayed in the **Slots** section. ### Slot list @@ -179,7 +179,7 @@ The slot list contains the following information: | content provider | Defines the source of content of this slot. | SprykerCmsSlotBlock | | name | Alphabetical identifier of the slot. It is shown in the Back Office. | "Header Top" | | description | Description of the slot. It is shown in the Back Office. | "A content area in the Header section, that is below the logo and search section and above main navigation" | -| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it is not rendered in the Storefront by the slot widget. | 1 | +| status | Defines whether the slot is active or not where "0" stands for "inactive" and "1" stands for "active". If a slot is inactive, it's not rendered in the Storefront by the slot widget. | 1 | ## Content providers A content provider is a source from which Slot Widget fetches content to embed into slots and, subsequently, render it in the Storefront. With templates and slots, you can use slots to embed the content created in your Spryker project or CMS editors of technology partners (for example, [CoreMedia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/coremedia.html), [E-spirit](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/e-spirit.html), [Styla](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/styla.html), [Magnolia](/docs/pbc/all/content-management-system/{{page.version}}/base-shop/third-party-integrations/magnolia.html)). @@ -196,7 +196,7 @@ The following schema shows how content is managed with the help of templates wit ![image](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/CMS/Templates+%26+Slots/Templates+%26+Slots+Feature+Overview/templates-and-slots.png) ## Visibility conditions -When the content manager assigns a CMS block to a slot, it is displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. +When the content manager assigns a CMS block to a slot, it's displayed on all the pages to which the template with the slot is applied. To narrow down the number of pages to a needed selection, the content manager can define visibility conditions for each CMS block assigned to a slot. Visibility conditions are defined by selecting particular pages in which the content of a CMS block will be displayed. When visibility conditions are defined, the slot widget checks if the CMS block must be rendered in an opened page or not. Then, it either renders or skips it. Page identifiers used to define visibility conditions depend on the page type to which a template with slots is applied. You can check identifiers for each page type in the following table. @@ -255,7 +255,7 @@ Properties are used by slot widgets to identify for which entity content is bein You can add other properties to meet your project or external content provider requirements. #### Property Types -Properties can be either `required` or `autofilled`. If a property is of the required type, it is entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: +Properties can be either `required` or `autofilled`. If a property is of the required type, it's entered manually and the slot widget does not render the content if one of the required values is not filled. If a property is of the auto-filled type, when sending a request to fetch content, the slot widget fills this value based on the page opened on the Storefront and fetches the corresponding content. For example, if you want a slot widget to fill `locale` and `store` values automatically, it looks as follows: ```twig {% raw %}{%{% endraw %} cms_slot "cms-slot-key" autofilled ['locale', 'store'] required ['requiredProperty'] with { diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md b/docs/pbc/all/content-management-system/202410.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md index b94e0de4b5..478e8d47ac 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/import-and-export-data/import-file-details-cms-slot.csv.md @@ -31,7 +31,7 @@ This document describes the `cms_slot.csv` file to configure [CMS Slot](/docs/pb | content_provider | ✓ | String |Must be a valid type of content provider. | Defines the source of content of this slot. | | name | ✓ | String | | Alphabetical identifier of the slot. It will be shown in the Back Office. | | description | ✓ | String | | Description of the slot. It will be shown in the Back Office. | -| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it is not rendered in the Storefront by the slot widget. | +| is_active | | Boolean |
  • Inactive = 0
  • Active = 1
  • If empty during the import, the slots will be imported as inactive.
| Indicates if the slot is active or inactive.
If the slot is inactive, it's not rendered in the Storefront by the slot widget. | diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md index f3359f89ae..d2d4727615 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/blocks/create-email-cms-blocks.md @@ -58,7 +58,7 @@ You don’t need to activate the email CMS block, as the deactivated status of t * Add a [glossary key](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html) to the email block. When the email is sent, the key is replaced with the translation you defined for the locale selected by the customer. To learn how to add translations, see [Managing glossary](/docs/pbc/all/miscellaneous/{{page.version}}/manage-in-the-back-office/add-translations.html). -* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it is replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. +* Add variables to the email CMS block to replace them with customer and order specific details. When the email is sent, the variables are replaced with the actual details. For example, add *firstName*, and it's replaced with the name of the customer the email is sent to. A developer can provide a full list of variables and create new ones. ## Reference information: Create an email CMS block diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md index e6ced71c3c..4fc4721f6a 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-in-the-back-office/product-sets/reorder-product-sets.md @@ -19,14 +19,14 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/product-sets-feature-overview.html --- -This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it is on a page. +This document describes how to reorder product sets in the Back Office by defining weight. A product set's weight, relatively to other the other product sets' weight on a page defines how high it's on a page. To reorder product sets by editing their weight, do the following: 1. Go to **Merchandising > Product Sets**. 2. On the **Product Sets** page, click **Reorder Product Sets**. This opens the **Reorder Product Sets** page. The product sets are displayed in the ascending order of their current weight. -3. Change the **WEIGHT** of each product set, so that it is in the needed position relatively to the other product sets. +3. Change the **WEIGHT** of each product set, so that it's in the needed position relatively to the other product sets. 4. Click **Submit**. This opens the **Product Sets** page with a success message displayed. The updated **WEIGHT** is displayed in the list and the product sets are ordered according to it. diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md index e6aa66f80f..b93662504d 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-navigation-trees.md @@ -50,7 +50,7 @@ Request sample: `GET http://glue.mysprykershop.com/navigations/SOCIAL_LINKS` {% info_block infoBox "Performance" %} -If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it is absolutely necessary. +If a navigation tree has a category child node, include the `category-nodes` resource to retrieve the category information without extra calls to the `/category-nodes` endpoint. Retrieving the category information can affect the performance of the Navigation API. We recommend doing it only when it's absolutely necessary. {% endinfo_block %} diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md index a6b7f495dc..9b43dc0f60 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/define-the-maximum-size-of-content-fields.md @@ -14,7 +14,7 @@ related: link: docs/pbc/all/content-management-system/page.version/base-shop/cms-feature-overview/cms-feature-overview.html --- -By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it is transferred to TEXT (65535 bytes), and for PostgreSQL, it is transferred to TEXT (unlimited length). +By default, the CMS module doesn't specify the content field's size. For MySQL and MariaDB, it's transferred to TEXT (65535 bytes), and for PostgreSQL, it's transferred to TEXT (unlimited length). If your project requires more, you can redefine the field's size in the `spy_cms_version` table. diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md index 24bd13e61b..2569ef10df 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/tutorial-content-and-search-personalized-catalog-pages.md @@ -246,7 +246,7 @@ class PersonalizedProductQueryPlugin implements QueryInterface {% info_block infoBox %} -The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it is used with the random score from Elasticsearch. You can change these values according to your needs. +The limit passed in the constructor of the query plugin. Also, the seed value is `session_id()` of the customer and it's used with the random score from Elasticsearch. You can change these values according to your needs. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md index 305de57242..b09fbd0723 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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 specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md index 113abcc59a..9898481268 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit is the *company address*. The company address is a physical representation of a company. +The level below the business unit's the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it is a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md index 8f9c5a6d6b..de9221e3cd 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md @@ -12,7 +12,7 @@ redirect_from: - /docs/scos/user/features/202204.0/company-account-feature-overview/company-user-roles-and-permissions-overview.html --- -Usually, employees within a company have different roles (for example, purchasing, administration, supervision). These roles are related to company users and are referred to as **Company Roles**. A role can be default (the **is_default** option), which means that it is used for all new users automatically. +Usually, employees within a company have different roles (for example, purchasing, administration, supervision). These roles are related to company users and are referred to as **Company Roles**. A role can be default (the **is_default** option), which means that it's 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, they create the structure of the company and can define the default role to be used further on. diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/customer-account-management-feature-overview/password-management-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/customer-account-management-feature-overview/password-management-overview.md index 9b2f311132..e2d48a4a35 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/customer-account-management-feature-overview/password-management-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/customer-account-management-feature-overview/password-management-overview.md @@ -23,7 +23,7 @@ You can create customer accounts by [importing](/docs/dg/dev/data-import/{{page. With the help of [Glue API](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/glue-rest-api.html), you can change and reset customer account passwords. This can be useful when you want to use a single authentication in all the apps connected to your shop. To learn how a developer can do it, see [Change a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#change-a-customers-password) and [Reset a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#reset-a-customers-password). -On the Storefront, it is mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. +On the Storefront, it's mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. ## Related Business User documents diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index 5da4c15647..4997e3e261 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -36,7 +36,7 @@ This document describes how to create company units. 5. Optional: Enter an **IBAN**. 6. Optional: Enter a **BIC**. 7. Click **Save**. - This opens the **Company Units** page. The created company business unit is displayed in the list. + This opens the **Company Units** page. The created company business unit's displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md index 9776b74f82..859aeaea4c 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it is created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index 9c084b6eda..baf481510e 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -241,7 +241,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit is not found or the user does not have access to it. | +| 1901 | Specified business unit's not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md index 1600c84577..f6effd7cef 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md @@ -36,7 +36,7 @@ The Customer API allows creating customers and manage their account data. This i In your development, these resources can help you: -* Retrieve relevant customer information. for any page where it is needed. +* Retrieve relevant customer information. for any page where it's needed. * Retrieve customer subscriptions to availability notifications. * Enable customer registration. * Allow customer login and authentication. diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md index aaf82d752c..870cb8ca45 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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 specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md index 29f5cd200b..abc8d2a17a 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit is the *company address*. The company address is a physical representation of a company. +The level below the business unit's the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it is a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md index b463d89691..2e95137c1c 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-user-roles-and-permissions-overview.md @@ -12,7 +12,7 @@ redirect_from: - /docs/scos/user/features/202204.0/company-account-feature-overview/company-user-roles-and-permissions-overview.html --- -Usually, employees within a company have different roles (for example, purchasing, administration, supervision). These roles are related to company users and are referred to as **Company Roles**. A role can be default (the **is_default** option), which means that it is used for all new users automatically. +Usually, employees within a company have different roles (for example, purchasing, administration, supervision). These roles are related to company users and are referred to as **Company Roles**. A role can be default (the **is_default** option), which means that it's 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, they create the structure of the company and can define the default role to be used further on. diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/customer-account-management-feature-overview/password-management-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/customer-account-management-feature-overview/password-management-overview.md index 9b2f311132..e2d48a4a35 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/customer-account-management-feature-overview/password-management-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/customer-account-management-feature-overview/password-management-overview.md @@ -23,7 +23,7 @@ You can create customer accounts by [importing](/docs/dg/dev/data-import/{{page. With the help of [Glue API](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/glue-rest-api.html), you can change and reset customer account passwords. This can be useful when you want to use a single authentication in all the apps connected to your shop. To learn how a developer can do it, see [Change a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#change-a-customers-password) and [Reset a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#reset-a-customers-password). -On the Storefront, it is mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. +On the Storefront, it's mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. ## Related Business User documents diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index 17f69d0e09..33349e7cc1 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -37,7 +37,7 @@ This document describes how to create company units in the Back Office. 6. Optional: Enter a **BIC**. 7. Optional: Enter a **PHONE**. 8. Click **Save**. - This opens the **Company Units** page. The created company business unit is displayed in the list. + This opens the **Company Units** page. The created company business unit's displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md index 9776b74f82..859aeaea4c 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it is created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index e662c116d2..9b22ebf44e 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -224,7 +224,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit is not found or the user does not have access to it. | +| 1901 | Specified business unit's not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md index 708c9268f1..288ed5ea24 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md @@ -36,7 +36,7 @@ The Customer API allows creating customers and manage their account data. This i In your development, these resources can help you: -* Retrieve relevant customer information. for any page where it is needed. +* Retrieve relevant customer information. for any page where it's needed. * Retrieve customer subscriptions to availability notifications. * Enable customer registration. * Allow customer login and authentication. diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md index aaf82d752c..870cb8ca45 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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 specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md index 29f5cd200b..abc8d2a17a 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit is the *company address*. The company address is a physical representation of a company. +The level below the business unit's the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it is a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/customer-account-management-feature-overview/password-management-overview.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/customer-account-management-feature-overview/password-management-overview.md index df305b567c..befa467e38 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/customer-account-management-feature-overview/password-management-overview.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/customer-account-management-feature-overview/password-management-overview.md @@ -23,7 +23,7 @@ You can create customer accounts by [importing](/docs/dg/dev/data-import/{{page. With the help of [Glue API](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/glue-rest-api.html), you can change and reset customer account passwords. This can be useful when you want to use a single authentication in all the apps connected to your shop. To learn how a developer can do it, see [Change a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#change-a-customers-password) and [Reset a customer’s password](/docs/pbc/all/identity-access-management/{{page.version}}/manage-using-glue-api/glue-api-manage-customer-passwords.html#reset-a-customers-password). -On the Storefront, it is mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. +On the Storefront, it's mandatory to enter a password when creating a customer account. After the account is created, you can update the password in the customer account or request a password reset using email. ## Related Business User documents diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index 4badac3e84..e6ec2860f4 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -37,7 +37,7 @@ This document describes how to create company units in the Back Office. 6. Optional: Enter a **BIC**. 7. Optional: Enter a **PHONE**. 8. Click **Save**. - This opens the **Company Units** page. The created company business unit is displayed in the list. + This opens the **Company Units** page. The created company business unit's displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md index 9776b74f82..859aeaea4c 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it is created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index b05b4fd451..d7c33661bb 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -224,7 +224,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit is not found or the user does not have access to it. | +| 1901 | Specified business unit's not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md index 9edbc7626e..a6365a5208 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/customers/glue-api-manage-customers.md @@ -36,7 +36,7 @@ The Customer API allows creating customers and manage their account data. This i In your development, these resources can help you: -* Retrieve relevant customer information. for any page where it is needed. +* Retrieve relevant customer information. for any page where it's needed. * Retrieve customer subscriptions to availability notifications. * Enable customer registration. * Allow customer login and authentication. diff --git a/docs/pbc/all/data-exchange/202311.0/sending-requests-with-data-exchange-api.md b/docs/pbc/all/data-exchange/202311.0/sending-requests-with-data-exchange-api.md index d7b9452140..94195c4670 100644 --- a/docs/pbc/all/data-exchange/202311.0/sending-requests-with-data-exchange-api.md +++ b/docs/pbc/all/data-exchange/202311.0/sending-requests-with-data-exchange-api.md @@ -310,7 +310,7 @@ For example, configure `isCreatable: false` for `iso3_code` and send the same re ``` -Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it is impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: +Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it's impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: ```json [ @@ -427,7 +427,7 @@ If `id_country` is not found, the following is returned: {% info_block infoBox %} -Similarly to the `POST` request, it is important to consider database-specific configurations when sending a `PATCH` request. +Similarly to the `POST` request, it's important to consider database-specific configurations when sending a `PATCH` request. {% endinfo_block %} diff --git a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md index 0930f34983..1af0d69fb9 100644 --- a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md +++ b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md @@ -33,7 +33,7 @@ The Akeneo PIM Integration App works with B2C and B2B business models of Spryker Akeneo lets you create products with up to 3 levels of enrichment, while Spryker lets you select multiple super attributes to enrich product information and create product variants. -For example, if you want to create a T-shirt with varying sizes and colors, here is how it is created in Akeneo: +For example, if you want to create a T-shirt with varying sizes and colors, here is how it's created in Akeneo: *Root* Product Model = T-shirt *Level 1* Product Models (created by varying colour) = Yellow T-shirt, red T-shirt *Level 2* Product Variants (with variant: size) = Yellow T-shirt small, yellow T-shirt large, red T-shirt small, red T-shirt Large diff --git a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md index da07215e36..b6a62fab17 100644 --- a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md +++ b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md @@ -152,7 +152,7 @@ To configure this transformer, do the following: To configure this transformer, do the following: -1. In *Stock value*, specify the value of the stock that the product will have after it is imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. +1. In *Stock value*, specify the value of the stock that the product will have after it's imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. 2. Optional: Specify the warehouse where this stock should be kept. For details about the warehouses in the Spryker Back Office, see [Create warehouses](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/manage-in-the-back-office/create-warehouses.html). ![memo-base-product-set-stock](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/data-exchange/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/3-configure-data-mapping-between-akeneo-and-spryker/memo-base-product-set-stock.png) diff --git a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md index 918bc916e6..b4d5357842 100644 --- a/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md +++ b/docs/pbc/all/data-exchange/202311.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md @@ -84,7 +84,7 @@ To create the scheduler, do the following: 5. In *Expression*, enter the time you want the scheduler to run. Use [Crontab guru](https://crontab.guru/) to set the time in the right format. 6. Create one more scheduler with the same parameters, but for step 3, select the *Run outgoing configuration* job. -Since the number of tasks that can be processed is limited, it is recommended to create a scheduler that would remove completed tasks after the specified intervals. +Since the number of tasks that can be processed is limited, it's recommended to create a scheduler that would remove completed tasks after the specified intervals. To create such a scheduler, do the following: diff --git a/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md b/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md index 075d31050e..20e0967ffb 100644 --- a/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md +++ b/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md @@ -310,7 +310,7 @@ For example, configure `isCreatable: false` for `iso3_code` and send the same re ``` -Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it is impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: +Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it's impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: ```json [ @@ -427,7 +427,7 @@ If `id_country` is not found, the following is returned: {% info_block infoBox %} -Similarly to the `POST` request, it is important to consider database-specific configurations when sending a `PATCH` request. +Similarly to the `POST` request, it's important to consider database-specific configurations when sending a `PATCH` request. {% endinfo_block %} diff --git a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md index 0930f34983..1af0d69fb9 100644 --- a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md +++ b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md @@ -33,7 +33,7 @@ The Akeneo PIM Integration App works with B2C and B2B business models of Spryker Akeneo lets you create products with up to 3 levels of enrichment, while Spryker lets you select multiple super attributes to enrich product information and create product variants. -For example, if you want to create a T-shirt with varying sizes and colors, here is how it is created in Akeneo: +For example, if you want to create a T-shirt with varying sizes and colors, here is how it's created in Akeneo: *Root* Product Model = T-shirt *Level 1* Product Models (created by varying colour) = Yellow T-shirt, red T-shirt *Level 2* Product Variants (with variant: size) = Yellow T-shirt small, yellow T-shirt large, red T-shirt small, red T-shirt Large diff --git a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md index 89f217a9b2..db820a52f7 100644 --- a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md +++ b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md @@ -152,7 +152,7 @@ To configure this transformer, do the following: To configure this transformer, do the following: -1. In *Stock value*, specify the value of the stock that the product will have after it is imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. +1. In *Stock value*, specify the value of the stock that the product will have after it's imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. 2. Optional: Specify the warehouse where this stock should be kept. For details about the warehouses in the Spryker Back Office, see [Create warehouses](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/manage-in-the-back-office/create-warehouses.html). ![memo-base-product-set-stock](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/data-exchange/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/3-configure-data-mapping-between-akeneo-and-spryker/memo-base-product-set-stock.png) diff --git a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md index 918bc916e6..b4d5357842 100644 --- a/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md +++ b/docs/pbc/all/data-exchange/202404.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md @@ -84,7 +84,7 @@ To create the scheduler, do the following: 5. In *Expression*, enter the time you want the scheduler to run. Use [Crontab guru](https://crontab.guru/) to set the time in the right format. 6. Create one more scheduler with the same parameters, but for step 3, select the *Run outgoing configuration* job. -Since the number of tasks that can be processed is limited, it is recommended to create a scheduler that would remove completed tasks after the specified intervals. +Since the number of tasks that can be processed is limited, it's recommended to create a scheduler that would remove completed tasks after the specified intervals. To create such a scheduler, do the following: diff --git a/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md b/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md index fcda9cd700..0371e52381 100644 --- a/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md +++ b/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md @@ -310,7 +310,7 @@ For example, configure `isCreatable: false` for `iso3_code` and send the same re ``` -Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it is impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: +Certain database-specific configurations may result in issues independent of entity configurations. For example, with MariaDB, it's impossible to set the ID value for an auto-incremented field. Additionally, the `iso2_code` field in the `spy_country` table must have a unique value. Therefore, before creating a new record, you need to make sure you are not passing a duplicate value for this field. If a duplicate value is passed, the following is returned: ```json [ @@ -427,7 +427,7 @@ If `id_country` is not found, the following is returned: {% info_block infoBox %} -Similarly to the `POST` request, it is important to consider database-specific configurations when sending a `PATCH` request. +Similarly to the `POST` request, it's important to consider database-specific configurations when sending a `PATCH` request. {% endinfo_block %} diff --git a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md index 1d0ef2d11b..deb60f5669 100644 --- a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md +++ b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/akeneo-pim-integration-app.md @@ -33,7 +33,7 @@ The Akeneo PIM Integration App works with B2C and B2B business models of Spryker Akeneo lets you create products with up to 3 levels of enrichment, while Spryker lets you select multiple super attributes to enrich product information and create product variants. -For example, if you want to create a T-shirt with varying sizes and colors, here is how it is created in Akeneo: +For example, if you want to create a T-shirt with varying sizes and colors, here is how it's created in Akeneo: *Root* Product Model = T-shirt *Level 1* Product Models (created by varying colour) = Yellow T-shirt, red T-shirt *Level 2* Product Variants (with variant: size) = Yellow T-shirt small, yellow T-shirt large, red T-shirt small, red T-shirt Large diff --git a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md index 945bdf8008..b1c67111e1 100644 --- a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md +++ b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/configure-data-mapping-between-akeneo-and-sccos.md @@ -152,7 +152,7 @@ To configure this transformer, do the following: To configure this transformer, do the following: -1. In *Stock value*, specify the value of the stock that the product will have after it is imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. +1. In *Stock value*, specify the value of the stock that the product will have after it's imported into Spryker. You can specify 0 as well, but in this case, in SCCOS, this product would be considered as out-of-stock, and, therefore, be unavailable in the Storefront. 2. Optional: Specify the warehouse where this stock should be kept. For details about the warehouses in the Spryker Back Office, see [Create warehouses](/docs/pbc/all/warehouse-management-system/{{page.version}}/base-shop/manage-in-the-back-office/create-warehouses.html). ![memo-base-product-set-stock](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/data-exchange/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/3-configure-data-mapping-between-akeneo-and-spryker/memo-base-product-set-stock.png) diff --git a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md index 918bc916e6..b4d5357842 100644 --- a/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md +++ b/docs/pbc/all/data-exchange/202410.0/spryker-middleware-powered-by-alumio/integration-apps/akeneo-pim-integration-app/configure-the-akeneo-pim-integration-app/create-tasks-and-import-products-from-akeneo-to-sccos.md @@ -84,7 +84,7 @@ To create the scheduler, do the following: 5. In *Expression*, enter the time you want the scheduler to run. Use [Crontab guru](https://crontab.guru/) to set the time in the right format. 6. Create one more scheduler with the same parameters, but for step 3, select the *Run outgoing configuration* job. -Since the number of tasks that can be processed is limited, it is recommended to create a scheduler that would remove completed tasks after the specified intervals. +Since the number of tasks that can be processed is limited, it's recommended to create a scheduler that would remove completed tasks after the specified intervals. To create such a scheduler, do the following: diff --git a/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/create-discounts.md b/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/create-discounts.md index 85e4596ec3..5c0f9048ce 100644 --- a/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/create-discounts.md +++ b/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/create-discounts.md @@ -151,7 +151,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly to [defining discounted products](#discount-application-type-query-string), the conditions on which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/edit-discounts.md b/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/edit-discounts.md index 09fdd09f62..6ab4f6c2cc 100644 --- a/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/edit-discounts.md +++ b/docs/pbc/all/discount-management/202311.0/base-shop/manage-in-the-back-office/edit-discounts.md @@ -149,7 +149,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly do [defining discounted products](#discount-application-type-query-string), the conditions in which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md index 21dc18b15f..6ac1700e4d 100644 --- a/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md @@ -63,7 +63,7 @@ A discount can have one or more decision rules. Find an example combination belo 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 Management capability, 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. +Multiple decision rules form a query. A query is a request for information based on the defined parameters. In the Discount Management capability, a query requests information from a cart to check if it's eligible for the discount. By specifying decision rules, you define the parameters of the query. In the Back Office, you create decision rules in a Query Builder. Query Builder transforms the decision rules into a single query. @@ -101,7 +101,7 @@ 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 levels of the hierarchy. At each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all levels of the hierarchy. At 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) @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it's not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/discount-management/202311.0/marketplace/marketplace-promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202311.0/marketplace/marketplace-promotions-discounts-feature-overview.md index 65383f7eee..8f9350ef3a 100644 --- a/docs/pbc/all/discount-management/202311.0/marketplace/marketplace-promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202311.0/marketplace/marketplace-promotions-discounts-feature-overview.md @@ -22,7 +22,7 @@ A product catalog manager selects a discount type when [creating a discount](/do {% info_block warningBox %} -Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it is possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. +Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it's possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. {% endinfo_block %} @@ -75,7 +75,7 @@ A discount can have one or more decision rules. Find an exemplary combination be 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. +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's 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. @@ -123,7 +123,7 @@ 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 levels of the hierarchy. On each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all 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) diff --git a/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/create-discounts.md b/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/create-discounts.md index 0342bc2f2c..56f3cde277 100644 --- a/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/create-discounts.md +++ b/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/create-discounts.md @@ -151,7 +151,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly to [defining discounted products](#discount-application-type-query-string), the conditions on which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/edit-discounts.md b/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/edit-discounts.md index 09fdd09f62..6ab4f6c2cc 100644 --- a/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/edit-discounts.md +++ b/docs/pbc/all/discount-management/202404.0/base-shop/manage-in-the-back-office/edit-discounts.md @@ -149,7 +149,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly do [defining discounted products](#discount-application-type-query-string), the conditions in which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md index 21dc18b15f..6ac1700e4d 100644 --- a/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md @@ -63,7 +63,7 @@ A discount can have one or more decision rules. Find an example combination belo 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 Management capability, 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. +Multiple decision rules form a query. A query is a request for information based on the defined parameters. In the Discount Management capability, a query requests information from a cart to check if it's eligible for the discount. By specifying decision rules, you define the parameters of the query. In the Back Office, you create decision rules in a Query Builder. Query Builder transforms the decision rules into a single query. @@ -101,7 +101,7 @@ 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 levels of the hierarchy. At each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all levels of the hierarchy. At 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) @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it's not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/discount-management/202404.0/marketplace/marketplace-promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202404.0/marketplace/marketplace-promotions-discounts-feature-overview.md index 65383f7eee..8f9350ef3a 100644 --- a/docs/pbc/all/discount-management/202404.0/marketplace/marketplace-promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202404.0/marketplace/marketplace-promotions-discounts-feature-overview.md @@ -22,7 +22,7 @@ A product catalog manager selects a discount type when [creating a discount](/do {% info_block warningBox %} -Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it is possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. +Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it's possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. {% endinfo_block %} @@ -75,7 +75,7 @@ A discount can have one or more decision rules. Find an exemplary combination be 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. +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's 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. @@ -123,7 +123,7 @@ 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 levels of the hierarchy. On each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all 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) diff --git a/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/create-discounts.md b/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/create-discounts.md index 2694645c81..18bde28d5a 100644 --- a/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/create-discounts.md +++ b/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/create-discounts.md @@ -151,7 +151,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly to [defining discounted products](#discount-application-type-query-string), the conditions on which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/edit-discounts.md b/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/edit-discounts.md index 09fdd09f62..6ab4f6c2cc 100644 --- a/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/edit-discounts.md +++ b/docs/pbc/all/discount-management/202410.0/base-shop/manage-in-the-back-office/edit-discounts.md @@ -149,7 +149,7 @@ To give away a promotional product for free, select percentage calculator type a Similarly do [defining discounted products](#discount-application-type-query-string), the conditions in which a discount is a applied are defined using a query string. -Example: The discount is applied if five or more items are in the cart, and if it is Tuesday or Wednesday. +Example: The discount is applied if five or more items are in the cart, and if it's 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 **THE DISCOUNT CAN BE APPLIED IF THE QUERY APPLIES FOR AT LEAST X ITEM(S).** defines a minimum number of items that must fulfill the query for the discount to be applies. By default, the minimum order amount value is 1. It means that the discount is applied if there is one item in a cart the fulfills the query. diff --git a/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md index 21dc18b15f..6ac1700e4d 100644 --- a/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md @@ -63,7 +63,7 @@ A discount can have one or more decision rules. Find an example combination belo 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 Management capability, 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. +Multiple decision rules form a query. A query is a request for information based on the defined parameters. In the Discount Management capability, a query requests information from a cart to check if it's eligible for the discount. By specifying decision rules, you define the parameters of the query. In the Back Office, you create decision rules in a Query Builder. Query Builder transforms the decision rules into a single query. @@ -101,7 +101,7 @@ 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 levels of the hierarchy. At each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all levels of the hierarchy. At 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) @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it's not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/discount-management/202410.0/marketplace/marketplace-promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202410.0/marketplace/marketplace-promotions-discounts-feature-overview.md index 65383f7eee..8f9350ef3a 100644 --- a/docs/pbc/all/discount-management/202410.0/marketplace/marketplace-promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202410.0/marketplace/marketplace-promotions-discounts-feature-overview.md @@ -22,7 +22,7 @@ A product catalog manager selects a discount type when [creating a discount](/do {% info_block warningBox %} -Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it is possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. +Creating cart rules or vouchers based on any merchant parameters, such as a merchant ID or product offer, is not available by default in the current implementation and needs to be added on the project level by extending the Discount Engine. However, it's possible to create cart rules and vouchers for the Marketplace products. See [Create discounts](/docs/pbc/all/discount-management/{{page.version}}/base-shop/manage-in-the-back-office/create-discounts.html) for more details. {% endinfo_block %} @@ -75,7 +75,7 @@ A discount can have one or more decision rules. Find an exemplary combination be 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. +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's 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. @@ -123,7 +123,7 @@ 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 levels of the hierarchy. On each level, there can be both rules and rule groups. +With the rule groups, you can build multiple levels of rule hierarchy. When a cart is evaluated against the rules, it's evaluated on all 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) diff --git a/docs/pbc/all/gift-cards/202311.0/gift-cards.md b/docs/pbc/all/gift-cards/202311.0/gift-cards.md index 4857ae752a..fc35a1f038 100644 --- a/docs/pbc/all/gift-cards/202311.0/gift-cards.md +++ b/docs/pbc/all/gift-cards/202311.0/gift-cards.md @@ -25,7 +25,7 @@ Gift cards are sensitive data and can be used to pay orders. Keep in mind that t {% endinfo_block %} -Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it is treated like a product. When it is applied, it’s a *voucher* that can be used as a payment method. +Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it's treated like a product. When it's applied, it’s a *voucher* that can be used as a payment method. Gift cards have variants just like abstract products. For example, a New Year Gift Card can have all the different values—50 Euro and 100 Euro. In this case, the New Year Gift Card would be handled like an abstract product, and 50 Euro and 100 Euro gift cards would be its variants. @@ -76,7 +76,7 @@ The main advantage of this strategy is that the same gift card code cannot be us ### Balance strategy -In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it is used`. +In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it's used`. With this strategy, a Back Office user will see gift card balance information such as the date when the gift card was used, the customer who used it, the gift card's code, and its spent value. diff --git a/docs/pbc/all/gift-cards/202404.0/gift-cards.md b/docs/pbc/all/gift-cards/202404.0/gift-cards.md index 4857ae752a..fc35a1f038 100644 --- a/docs/pbc/all/gift-cards/202404.0/gift-cards.md +++ b/docs/pbc/all/gift-cards/202404.0/gift-cards.md @@ -25,7 +25,7 @@ Gift cards are sensitive data and can be used to pay orders. Keep in mind that t {% endinfo_block %} -Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it is treated like a product. When it is applied, it’s a *voucher* that can be used as a payment method. +Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it's treated like a product. When it's applied, it’s a *voucher* that can be used as a payment method. Gift cards have variants just like abstract products. For example, a New Year Gift Card can have all the different values—50 Euro and 100 Euro. In this case, the New Year Gift Card would be handled like an abstract product, and 50 Euro and 100 Euro gift cards would be its variants. @@ -76,7 +76,7 @@ The main advantage of this strategy is that the same gift card code cannot be us ### Balance strategy -In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it is used`. +In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it's used`. With this strategy, a Back Office user will see gift card balance information such as the date when the gift card was used, the customer who used it, the gift card's code, and its spent value. diff --git a/docs/pbc/all/gift-cards/202410.0/gift-cards.md b/docs/pbc/all/gift-cards/202410.0/gift-cards.md index 4857ae752a..fc35a1f038 100644 --- a/docs/pbc/all/gift-cards/202410.0/gift-cards.md +++ b/docs/pbc/all/gift-cards/202410.0/gift-cards.md @@ -25,7 +25,7 @@ Gift cards are sensitive data and can be used to pay orders. Keep in mind that t {% endinfo_block %} -Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it is treated like a product. When it is applied, it’s a *voucher* that can be used as a payment method. +Gift cards follow the same rules as any product, and are bought as products. They can even be bundled. However, they are purely virtual and do not require shipping. A gift card can be applied as a voucher and redeemed to pay an order. Gift cards have two traits: a product traits and a voucher (+payment method) traits. When a gift card is bought, it's treated like a product. When it's applied, it’s a *voucher* that can be used as a payment method. Gift cards have variants just like abstract products. For example, a New Year Gift Card can have all the different values—50 Euro and 100 Euro. In this case, the New Year Gift Card would be handled like an abstract product, and 50 Euro and 100 Euro gift cards would be its variants. @@ -76,7 +76,7 @@ The main advantage of this strategy is that the same gift card code cannot be us ### Balance strategy -In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it is used`. +In the case of the Balance strategy, the gift card's purchase history and its balance information are checked. If after paying an order a gift card has any remaining balance, then in contrast to the Replacement strategy, the user does not get a new gift card code with the new gift card value, but the old gift card code is used instead. The remaining gift card value is calculated by the following formula: `Gift Card Value - Value of all orders where it's used`. With this strategy, a Back Office user will see gift card balance information such as the date when the gift card was used, the customer who used it, the gift card's code, and its spent value. diff --git a/docs/pbc/all/merchant-management/202311.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md b/docs/pbc/all/merchant-management/202311.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md index f55f2e8572..5849e53760 100644 --- a/docs/pbc/all/merchant-management/202311.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md +++ b/docs/pbc/all/merchant-management/202311.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md @@ -25,12 +25,12 @@ On this page, you can find commonly encountered cases of product restrictions be Product Catalog Blacklist -

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it is greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

+

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it's greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

All products assigned to a category are also included in the black/white list.

-

In case the products are added to the category after it was included in a list, it is reflected after some time with the help of publish & sync process.

+

In case the products are added to the category after it was included in a list, it's reflected after some time with the help of publish & sync process.

@@ -86,7 +86,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If the product, that is added to the shopping list, has been blacklisted, it is displayed as if it is unavailable.

+

If the product, that is added to the shopping list, has been blacklisted, it's displayed as if it's unavailable.

@@ -100,7 +100,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If a product that has been added to a list of the alternative products, is restricted, it is not suggested on product pages.

+

If a product that has been added to a list of the alternative products, is restricted, it's not suggested on product pages.

@@ -114,7 +114,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the products that are added to a product group, is restricted, it is not displayed in the Shop Application.

+

If any of the products that are added to a product group, is restricted, it's not displayed in the Shop Application.

@@ -128,7 +128,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the related products is added to a blacklist - it is not displayed in the Shop Application.

+

If any of the related products is added to a blacklist - it's not displayed in the Shop Application.

diff --git a/docs/pbc/all/merchant-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md b/docs/pbc/all/merchant-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md index e13ab93c2f..b018b05dac 100644 --- a/docs/pbc/all/merchant-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md +++ b/docs/pbc/all/merchant-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md @@ -74,7 +74,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -111,7 +111,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -152,7 +152,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -184,7 +184,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -231,7 +231,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -268,7 +268,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -383,7 +383,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -430,7 +430,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/merchant-management/202311.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md b/docs/pbc/all/merchant-management/202311.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md index 39db182cdc..e0ffba0b60 100644 --- a/docs/pbc/all/merchant-management/202311.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md +++ b/docs/pbc/all/merchant-management/202311.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md @@ -52,7 +52,7 @@ See the complete configuration of the `PersistenceAcl` module at [AclEntityMetad ## 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: +To override the rules that are created automatically when creating a merchant and a user's merchant, it's enough to override such methods as: - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantAclRoleEntityRules()` - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantUserAclRoleEntityRules()` diff --git a/docs/pbc/all/merchant-management/202404.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md b/docs/pbc/all/merchant-management/202404.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md index f55f2e8572..5849e53760 100644 --- a/docs/pbc/all/merchant-management/202404.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md +++ b/docs/pbc/all/merchant-management/202404.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md @@ -25,12 +25,12 @@ On this page, you can find commonly encountered cases of product restrictions be Product Catalog Blacklist -

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it is greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

+

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it's greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

All products assigned to a category are also included in the black/white list.

-

In case the products are added to the category after it was included in a list, it is reflected after some time with the help of publish & sync process.

+

In case the products are added to the category after it was included in a list, it's reflected after some time with the help of publish & sync process.

@@ -86,7 +86,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If the product, that is added to the shopping list, has been blacklisted, it is displayed as if it is unavailable.

+

If the product, that is added to the shopping list, has been blacklisted, it's displayed as if it's unavailable.

@@ -100,7 +100,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If a product that has been added to a list of the alternative products, is restricted, it is not suggested on product pages.

+

If a product that has been added to a list of the alternative products, is restricted, it's not suggested on product pages.

@@ -114,7 +114,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the products that are added to a product group, is restricted, it is not displayed in the Shop Application.

+

If any of the products that are added to a product group, is restricted, it's not displayed in the Shop Application.

@@ -128,7 +128,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the related products is added to a blacklist - it is not displayed in the Shop Application.

+

If any of the related products is added to a blacklist - it's not displayed in the Shop Application.

diff --git a/docs/pbc/all/merchant-management/202404.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md b/docs/pbc/all/merchant-management/202404.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md index e13ab93c2f..b018b05dac 100644 --- a/docs/pbc/all/merchant-management/202404.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md +++ b/docs/pbc/all/merchant-management/202404.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md @@ -74,7 +74,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -111,7 +111,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -152,7 +152,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -184,7 +184,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -231,7 +231,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -268,7 +268,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -383,7 +383,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -430,7 +430,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/merchant-management/202404.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md b/docs/pbc/all/merchant-management/202404.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md index 39db182cdc..e0ffba0b60 100644 --- a/docs/pbc/all/merchant-management/202404.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md +++ b/docs/pbc/all/merchant-management/202404.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md @@ -52,7 +52,7 @@ See the complete configuration of the `PersistenceAcl` module at [AclEntityMetad ## 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: +To override the rules that are created automatically when creating a merchant and a user's merchant, it's enough to override such methods as: - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantAclRoleEntityRules()` - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantUserAclRoleEntityRules()` diff --git a/docs/pbc/all/merchant-management/202410.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md b/docs/pbc/all/merchant-management/202410.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md index f55f2e8572..5849e53760 100644 --- a/docs/pbc/all/merchant-management/202410.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md +++ b/docs/pbc/all/merchant-management/202410.0/base-shop/merchant-product-restrictions-feature-overview/restricted-products-behavior.md @@ -25,12 +25,12 @@ On this page, you can find commonly encountered cases of product restrictions be Product Catalog Blacklist -

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it is greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

+

If the merchant relation has a blacklist, all buyers in the associated business units cannot interact with any products from the blacklist. The blacklisted products are excluded from view, search, existing lists and carts. If the category is a part of a blacklist, it's greyed out in the shop navigation, however, you can change this setting on the project level so, for example, that the category is not greyed out.

All products assigned to a category are also included in the black/white list.

-

In case the products are added to the category after it was included in a list, it is reflected after some time with the help of publish & sync process.

+

In case the products are added to the category after it was included in a list, it's reflected after some time with the help of publish & sync process.

@@ -86,7 +86,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If the product, that is added to the shopping list, has been blacklisted, it is displayed as if it is unavailable.

+

If the product, that is added to the shopping list, has been blacklisted, it's displayed as if it's unavailable.

@@ -100,7 +100,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If a product that has been added to a list of the alternative products, is restricted, it is not suggested on product pages.

+

If a product that has been added to a list of the alternative products, is restricted, it's not suggested on product pages.

@@ -114,7 +114,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the products that are added to a product group, is restricted, it is not displayed in the Shop Application.

+

If any of the products that are added to a product group, is restricted, it's not displayed in the Shop Application.

@@ -128,7 +128,7 @@ On this page, you can find commonly encountered cases of product restrictions be

Blacklist

-

If any of the related products is added to a blacklist - it is not displayed in the Shop Application.

+

If any of the related products is added to a blacklist - it's not displayed in the Shop Application.

diff --git a/docs/pbc/all/merchant-management/202410.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md b/docs/pbc/all/merchant-management/202410.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md index a70f87b4f0..aa5cff7197 100644 --- a/docs/pbc/all/merchant-management/202410.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md +++ b/docs/pbc/all/merchant-management/202410.0/marketplace/manage-using-glue-api/glue-api-retrieve-merchants.md @@ -74,7 +74,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -111,7 +111,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -152,7 +152,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -184,7 +184,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -231,7 +231,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -268,7 +268,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -383,7 +383,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, @@ -430,7 +430,7 @@ This endpoint returns only [active](/docs/pbc/all/merchant-management/{{page.ver "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/merchant-management/202410.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md b/docs/pbc/all/merchant-management/202410.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md index 0e42d86c0f..3b844b60b5 100644 --- a/docs/pbc/all/merchant-management/202410.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md +++ b/docs/pbc/all/merchant-management/202410.0/marketplace/marketplace-merchant-portal-core-feature-overview/persistence-acl-configuration.md @@ -52,7 +52,7 @@ See the complete configuration of the `PersistenceAcl` module at [AclEntityMetad ## 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: +To override the rules that are created automatically when creating a merchant and a user's merchant, it's enough to override such methods as: - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantAclRoleEntityRules()` - `\Spryker\Zed\AclMerchantPortal\AclMerchantPortalConfig::getMerchantUserAclRoleEntityRules()` diff --git a/docs/pbc/all/merchant-management/202410.0/marketplace/tutorials-and-howtos/create-merchant-commission-collector-rule.md b/docs/pbc/all/merchant-management/202410.0/marketplace/tutorials-and-howtos/create-merchant-commission-collector-rule.md index 07464d5d2b..bbd21dd476 100644 --- a/docs/pbc/all/merchant-management/202410.0/marketplace/tutorials-and-howtos/create-merchant-commission-collector-rule.md +++ b/docs/pbc/all/merchant-management/202410.0/marketplace/tutorials-and-howtos/create-merchant-commission-collector-rule.md @@ -293,7 +293,7 @@ class DiscountMerchantCommissionFacade extends AbstractFacade implements Discoun ## 6) Implement the collector rule plugin The plugin will call our `DiscountAmountMerchantCommissionItemCollectorRule` class to collect order items. In our example, the plugin only accepts the `number` data type, but you can adjust it to accept other data types, like `list` or `string`. -The `getFieldName()` method returns the field name as it is used in the item collector query string, e.g. `discount-amount >= '100'`. +The `getFieldName()` method returns the field name as it's used in the item collector query string, e.g. `discount-amount >= '100'`. ```php file to the respective section of your project, `FACT-Finder/FACT-Finder-PHP-Library": "1.3.*` 2. Add to the repositories section: diff --git a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md index 47d9a914ad..c5456dd7f8 100644 --- a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md +++ b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md @@ -49,7 +49,7 @@ Basic parameters: * `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. +* `searchField` - Normally FACT-Finder searches all fields defined as searchable. However, it's 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. diff --git a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md index e048268620..1987573a2f 100644 --- a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md +++ b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md @@ -85,7 +85,7 @@ public function getConsoleCommands(Container $container) * The first row of the CSV file must contain the field names. The structure of this row is identical to the data rows. * The number of fields is limited to 128. However, the standard FACT-Finder modules require the use of a limited number of fields. For that reason, we recommend that you do not use this limit in full. If your product database contains more than 128 attributes, you can store them in the multi-attribute fields. -* The field content is not limited in length. There is, however, a limit on the complete data record size. This limit is set at 50,000 characters. In special cases, the limit can be removed. We consider it as a part of a special FACT-Finder package creation process we perform for you. +* The field content is not limited in length. There is, however, a limit on the complete data record size. This limit's set at 50,000 characters. In special cases, the limit can be removed. We consider it as a part of a special FACT-Finder package creation process we perform for you. ### Recommendations @@ -94,7 +94,7 @@ public function getConsoleCommands(Container $container) You need to create an URL for a CSV file or put it into a public folder. Then you can set up an URL and an interval in a FACT-Finder channel management panel to download the CSV file. * A CSV file export can be scheduled with the help of a cron job or triggered by an event. * If additional attributes are available, they can also be used by the search process. -* If you have attribute types that vary from item to item, it does not make sense to create a separate field for every possible attribute type. Instead, you can create an attribute field that is formatted according to the following pattern: `|attribute1=value|attribute2=value|attribute3=value|`.Please note that for the Attribute field the pipe separator `(|)` appears between the attributes, as well as at the beginning and at the end of the field contents. Also note, that the symbols `|`, `#` and `=` are reserved symbols in attribute field data and therefore are not permitted here. For some attributes, it is desirable to include a unit or currency designator. You must separate the attribute name from the unit with a double tilde `(~~)`. Please note that there can only be one unit per attribute name (even if the attributes appear in different data records), so the values must be normalized beforehand. +* If you have attribute types that vary from item to item, it does not make sense to create a separate field for every possible attribute type. Instead, you can create an attribute field that is formatted according to the following pattern: `|attribute1=value|attribute2=value|attribute3=value|`.Please note that for the Attribute field the pipe separator `(|)` appears between the attributes, as well as at the beginning and at the end of the field contents. Also note, that the symbols `|`, `#` and `=` are reserved symbols in attribute field data and therefore are not permitted here. For some attributes, it's desirable to include a unit or currency designator. You must separate the attribute name from the unit with a double tilde `(~~)`. Please note that there can only be one unit per attribute name (even if the attributes appear in different data records), so the values must be normalized beforehand. ## Checking Your Setup diff --git a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md index 9ca48c7d5c..431aa557c5 100644 --- a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md +++ b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md @@ -44,7 +44,7 @@ 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: +If you faced an issue with the FACT-Finder library dependency and it's 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: diff --git a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md index 47d9a914ad..c5456dd7f8 100644 --- a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md +++ b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md @@ -49,7 +49,7 @@ Basic parameters: * `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. +* `searchField` - Normally FACT-Finder searches all fields defined as searchable. However, it's 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. diff --git a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md index e048268620..1987573a2f 100644 --- a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md +++ b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/exporting-product-data-for-fact-finder.md @@ -85,7 +85,7 @@ public function getConsoleCommands(Container $container) * The first row of the CSV file must contain the field names. The structure of this row is identical to the data rows. * The number of fields is limited to 128. However, the standard FACT-Finder modules require the use of a limited number of fields. For that reason, we recommend that you do not use this limit in full. If your product database contains more than 128 attributes, you can store them in the multi-attribute fields. -* The field content is not limited in length. There is, however, a limit on the complete data record size. This limit is set at 50,000 characters. In special cases, the limit can be removed. We consider it as a part of a special FACT-Finder package creation process we perform for you. +* The field content is not limited in length. There is, however, a limit on the complete data record size. This limit's set at 50,000 characters. In special cases, the limit can be removed. We consider it as a part of a special FACT-Finder package creation process we perform for you. ### Recommendations @@ -94,7 +94,7 @@ public function getConsoleCommands(Container $container) You need to create an URL for a CSV file or put it into a public folder. Then you can set up an URL and an interval in a FACT-Finder channel management panel to download the CSV file. * A CSV file export can be scheduled with the help of a cron job or triggered by an event. * If additional attributes are available, they can also be used by the search process. -* If you have attribute types that vary from item to item, it does not make sense to create a separate field for every possible attribute type. Instead, you can create an attribute field that is formatted according to the following pattern: `|attribute1=value|attribute2=value|attribute3=value|`.Please note that for the Attribute field the pipe separator `(|)` appears between the attributes, as well as at the beginning and at the end of the field contents. Also note, that the symbols `|`, `#` and `=` are reserved symbols in attribute field data and therefore are not permitted here. For some attributes, it is desirable to include a unit or currency designator. You must separate the attribute name from the unit with a double tilde `(~~)`. Please note that there can only be one unit per attribute name (even if the attributes appear in different data records), so the values must be normalized beforehand. +* If you have attribute types that vary from item to item, it does not make sense to create a separate field for every possible attribute type. Instead, you can create an attribute field that is formatted according to the following pattern: `|attribute1=value|attribute2=value|attribute3=value|`.Please note that for the Attribute field the pipe separator `(|)` appears between the attributes, as well as at the beginning and at the end of the field contents. Also note, that the symbols `|`, `#` and `=` are reserved symbols in attribute field data and therefore are not permitted here. For some attributes, it's desirable to include a unit or currency designator. You must separate the attribute name from the unit with a double tilde `(~~)`. Please note that there can only be one unit per attribute name (even if the attributes appear in different data records), so the values must be normalized beforehand. ## Checking Your Setup diff --git a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md index 9ca48c7d5c..431aa557c5 100644 --- a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md +++ b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-fact-finder.md @@ -44,7 +44,7 @@ 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: +If you faced an issue with the FACT-Finder library dependency and it's 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: diff --git a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md index 47d9a914ad..c5456dd7f8 100644 --- a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md +++ b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/using-fact-finder-search.md @@ -49,7 +49,7 @@ Basic parameters: * `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. +* `searchField` - Normally FACT-Finder searches all fields defined as searchable. However, it's 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. diff --git a/docs/pbc/all/offer-management/202311.0/marketplace/glue-api-retrieve-product-offers.md b/docs/pbc/all/offer-management/202311.0/marketplace/glue-api-retrieve-product-offers.md index e69184d775..95d938f257 100644 --- a/docs/pbc/all/offer-management/202311.0/marketplace/glue-api-retrieve-product-offers.md +++ b/docs/pbc/all/offer-management/202311.0/marketplace/glue-api-retrieve-product-offers.md @@ -230,7 +230,7 @@ To retrieve the product offers, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." } diff --git a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md index 92f7c4e3d7..834af8c642 100644 --- a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md +++ b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md @@ -4,7 +4,7 @@ template: concept-topic-template last_updated: Nov 21, 2023 --- -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* 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's 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. diff --git a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md index 9c800d1bc6..088a941f32 100644 --- a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md +++ b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md @@ -5,7 +5,7 @@ template: concept-topic-template last_updated: Nov 21, 2023 --- -Product Offer and data related to it is cached to enhance performance. +Product Offer and data related to it's cached to enhance performance. {% info_block infoBox "" %} diff --git a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-overview.md b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-overview.md index 22f4865fc2..3ce6b11758 100644 --- a/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-overview.md +++ b/docs/pbc/all/offer-management/202311.0/marketplace/marketplace-product-offer-feature-overview.md @@ -60,9 +60,9 @@ Product offer status defines whether the offer is active and displayed on the St ### Visibility -* *Active*: When an offer is active, it is displayed on the Storefront. Either merchant or Marketplace administrator can make the offer active. +* *Active*: When an offer is active, it's 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. +* *Inactive*: When an offer is inactive, it's 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) @@ -76,7 +76,7 @@ The product offer prices support: * Store * Currency -Product offer price follows the [concrete product price inheritance model](/docs/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). 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/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). +Product offer price follows the [concrete product price inheritance model](/docs/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). So if the Merchant doesn't set a price in the offer, it's taken from the concrete product. Otherwise, the product offer price has a higher priority and substitutes the concrete product price if it's indicated. If at least one price is defined for the offer (for example, original), it's 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/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). If a [merchant custom price](/docs/pbc/all/price-management/{{page.version}}/base-shop/merchant-custom-prices-feature-overview.html) exists for a customer, they see only the prices that apply to them, based on their merchant relationship. If the merchant relationship doesn't have prices for some products, default prices are displayed for the customer. @@ -141,7 +141,7 @@ During the checkout, offers from the same merchant are grouped for delivery so t ### Product offers on the wishlist page -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. +Customers can add product offers to a wishlist for future purchase. Merchant information is kept for the offer when it's 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) diff --git a/docs/pbc/all/offer-management/202311.0/marketplace/render-merchant-product-offers-on-the-storefront.md b/docs/pbc/all/offer-management/202311.0/marketplace/render-merchant-product-offers-on-the-storefront.md index f2075730d4..478f33aca4 100644 --- a/docs/pbc/all/offer-management/202311.0/marketplace/render-merchant-product-offers-on-the-storefront.md +++ b/docs/pbc/all/offer-management/202311.0/marketplace/render-merchant-product-offers-on-the-storefront.md @@ -11,7 +11,7 @@ This document explains how to render 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. +The [MerchantProductOfferWidget](https://github.com/spryker-shop/merchant-product-offer-widget) module is responsible for rendering product offers on the Storefront. Make sure it's installed in your project before adding the product offers to the Storefront. ## Rendering product offers on the product details page diff --git a/docs/pbc/all/offer-management/202404.0/marketplace/glue-api-retrieve-product-offers.md b/docs/pbc/all/offer-management/202404.0/marketplace/glue-api-retrieve-product-offers.md index e69184d775..95d938f257 100644 --- a/docs/pbc/all/offer-management/202404.0/marketplace/glue-api-retrieve-product-offers.md +++ b/docs/pbc/all/offer-management/202404.0/marketplace/glue-api-retrieve-product-offers.md @@ -230,7 +230,7 @@ To retrieve the product offers, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." } diff --git a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md index d9d19f207a..4fbe50fcec 100644 --- a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md +++ b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/marketplace-product-offer-feature-domain-model-and-relationships.md @@ -4,7 +4,7 @@ template: concept-topic-template last_updated: Nov 21, 2023 --- -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. +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's owned by a merchant. The Marketplace product offer has its own validity dates and its own availability calculation based on its reservations. diff --git a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md index 9c800d1bc6..088a941f32 100644 --- a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md +++ b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-domain-model-and-relationships/product-offer-storage.md @@ -5,7 +5,7 @@ template: concept-topic-template last_updated: Nov 21, 2023 --- -Product Offer and data related to it is cached to enhance performance. +Product Offer and data related to it's cached to enhance performance. {% info_block infoBox "" %} diff --git a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-overview.md b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-overview.md index 1f3bcbe561..4244a38d3a 100644 --- a/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-overview.md +++ b/docs/pbc/all/offer-management/202404.0/marketplace/marketplace-product-offer-feature-overview.md @@ -60,9 +60,9 @@ Product offer status defines whether the offer is active and displayed on the St ### Visibility -* *Active*: When an offer is active, it is displayed on the Storefront. Either merchant or Marketplace administrator can make the offer active. +* *Active*: When an offer is active, it's 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. +* *Inactive*: When an offer is inactive, it's 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) @@ -76,7 +76,7 @@ The product offer prices support: * Store * Currency -Product offer price follows the [concrete product price inheritance model](/docs/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). 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/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). +Product offer price follows the [concrete product price inheritance model](/docs/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). So if the Merchant doesn't set a price in the offer, it's taken from the concrete product. Otherwise, the product offer price has a higher priority and substitutes the concrete product price if it's indicated. If at least one price is defined for the offer (for example, original), it's 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/pbc/all/price-management/{{page.version}}/base-shop/prices-feature-overview/prices-feature-overview.html). If a [merchant custom price](/docs/pbc/all/price-management/{{page.version}}/base-shop/merchant-custom-prices-feature-overview.html) exists for a customer, they see only the prices that apply to them, based on their merchant relationship. If the merchant relationship doesn't have prices for some products, default prices are displayed for the customer. @@ -158,7 +158,7 @@ During the checkout, offers from the same merchant are grouped for delivery so t ### Product offers on the wishlist page -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. +Customers can add product offers to a wishlist for future purchase. Merchant information is kept for the offer when it's added to a wishlist. Further, customers can add the offer from the wishlist to cart.
-Every marketplace order contains information about the merchant orders it is split into. +Every marketplace order contains information about the merchant orders it's split into. ### Reference information: Viewing marketplace orders diff --git a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-domain-model-and-relationships.md b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-domain-model-and-relationships.md index f0398c475b..3771db7898 100644 --- a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-domain-model-and-relationships.md +++ b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-domain-model-and-relationships.md @@ -20,7 +20,7 @@ related: *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/dg/dev/architecture/marketplace-architecture/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`. +By using `MerchantSalesOrderFacade::createMerchantOrderCollection()`, you can decide when to create merchant orders out of an order in your project. By default, it's created by `CreateMerchantOrdersCommandPlugin`. ## Module dependency graph diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md index b2012190f6..af96fd4f8a 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md @@ -51,7 +51,7 @@ The overall interaction diagram between Glue API, the API Client, and the third First, implement a plugin that maps the checkout response and fills it with the necessary redirect URL and other attributes that are mapped. To do so, create a plugin file on the `Glue` layer: `src/Pyz/Glue/MyModule/Plugin/CheckoutRestApi/CheckoutResponseMapperPlugin.php`. -The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it is an internal or external redirect. +The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it's an internal or external redirect. **Sample implementation** @@ -99,7 +99,7 @@ The plugin must extend the `OrderPaymentUpdaterPluginInterface` and implement th * `isAppplicable`: This function determines whether a specific payment is processed by the plugin. The function returns true if the payment must be processed; otherwise, it returns false. * `updateOrderPayment`: This function updates the payment data in the database. -To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it is always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. +To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it's always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. {% info_block infoBox %} diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md index 682b13486e..8f05eb2d11 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md @@ -82,7 +82,7 @@ The table below describes all general configuration keys and their values. | `AdyenApiConstants::CAPTURE_ACTION_URL` | string | URL for the capture API call. | | `AdyenApiConstants::CANCEL_ACTION_URL` | string | URL for the cancel API call. | | `AdyenApiConstants::REFUND_ACTION_URL` | string | URL for the refund API call. | -| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it is used for the refund API call. | +| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it's used for the refund API call. | | `AdyenApiConstants::TECHNICAL_CANCEL_ACTION_URL` | string | URL for the technical cancellation API call. | | `AdyenApiConstants::ADJUST_AUTHORIZATION_ACTION_URL` | string | URL for the API call to adjust the authorized amount. | diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md index 68c32f6d81..ac9bf2be88 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md @@ -86,7 +86,7 @@ Next step is rendering Pay with Amazon button. Just insert this line in a proper {% 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. +Make sure that the button is rendered and works properly. In the sandbox mode it's 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's possible to retrieve available shipment methods. For that purpose Spryker provides Shipment Bundle and its client with method `getAvailableMethods()`. @@ -110,4 +110,4 @@ The rest of integration includes State machine which is different for synchronou 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. +`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's possible to do the same manually using state machine buttons in Zed. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md index 83bbe75467..ad01538617 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md @@ -20,7 +20,7 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/amazon-pay/obtain-an-amazon-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 is different for synchronous and asynchronous flow. Although from status "capture completed" it's the same and in the state machine, it's presented as a sub-process. The state machine for the synchronous flow: diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md index c2d9e3bca6..cb4cd6b44a 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md @@ -91,7 +91,7 @@ $config[AmazonPayConstants::WIDGET_BUTTON_SIZE] = AmazonPayConfig::WIDGET_BUTTON $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). +According to Amazon Pay restrictions, a module can run either on a `localhost` domain or via HTTPS. If it's 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). {% info_block warningBox "Important" %} diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md index 6feefdb33e..215d601206 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md @@ -36,7 +36,7 @@ Each API call involves similar classes from the module: * 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: +Since it's 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`. @@ -113,7 +113,7 @@ The next step is to authorize the order. It's a separate operation because in te ## 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. +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's 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 @@ -127,7 +127,7 @@ When all previous steps return a positive response and authorization is accepted 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. +If it's 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. @@ -141,18 +141,18 @@ There is one special constraint related to the selected payment method `PaymentM ## 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. +Unlike the synchronous authorisation, it's 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. +`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's 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. +`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's possible to request a capture. In both decline cases, it's 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. +After successful authorization and capture processes order receives the status "capture completed". From this state only one operation is possible and it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billie.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billie.md index cb85e23fe9..f09201ca4b 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billie.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billie.md @@ -20,7 +20,7 @@ redirect_from: 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: +Billie is Germany’s innovative online-only provider of flexible working capital solutions. Whether it's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billpay/integrate-billpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billpay/integrate-billpay.md index c5fe5d706e..ffc6799b6b 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billpay/integrate-billpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/billpay/integrate-billpay.md @@ -35,7 +35,7 @@ See [Configuration Management](/docs/dg/dev/backend-development/data-manipulatio | `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. | +| `USE_PRESCORE` | In if it's 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: diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md index a3f71a38ab..02c1837b09 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md @@ -22,7 +22,7 @@ related: 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. +* **Authorize**: to perform a payment risk check which is a mandatory step before every payment. The payment is considered accepted when it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree.md index f40b6ec480..7b8db70089 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/braintree/braintree.md @@ -39,7 +39,7 @@ Both accounts share the same configuration with different values. Braintree uses 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/computop-api-calls.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/computop-api-calls.md index 9fe31ab734..65cc663797 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/computop-api-calls.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/computop-api-calls.md @@ -39,7 +39,7 @@ related: ## 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. +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's 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: diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md index 5c196497a8..3c13505da1 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md @@ -78,7 +78,7 @@ $config[OmsConstants::ACTIVE_PROCESSES] = [ 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md index 43d9a143ff..1c0e9591b7 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md @@ -59,7 +59,7 @@ You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Z ## 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. +Direct Debit's processed by the bank system once it's 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: diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md index 93aa79beb1..139505c2f0 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md @@ -75,8 +75,8 @@ Each payment option has its own template. You can find and customize it under `Y ## 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. +* 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's `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's 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. @@ -117,4 +117,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md index e76ad376b7..e05b16adc9 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md @@ -61,7 +61,7 @@ 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. +Payment flow with direct debit's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md index 1795dd1a8e..8496d694a3 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md @@ -394,7 +394,7 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr {% 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 %} if data.heidelpayEasyCredit's not null {% raw %}%}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.amortisationText {% raw %}}}{% endraw %}
@@ -541,7 +541,7 @@ No further actions are needed, the quote being filled with payment method select ## 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`. +Once the customer is redirected back to us, the response from Easy Credit's 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. @@ -556,4 +556,4 @@ If the customer has not yet completed the HP.IN they must do that again. **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. +Finalize - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index 9e58056c5c..3983f6f3c1 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -72,4 +72,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md index 04cc222a7b..2eaf783c4b 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md @@ -60,7 +60,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ ``` ## 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 4af4e2ad44..5eb276aed0 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -91,4 +91,4 @@ The most important data here is the payment reference ID which can be used for f 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/klarna/klarna.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/klarna/klarna.md index e4a508e8a9..d31968a3e8 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/klarna/klarna.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/klarna/klarna.md @@ -53,7 +53,7 @@ To Integrate Klarna payments, create and configure a Klarna merchant account. We use state machines for handling and managing orders and payments. To integrate Klarna payments, a dedicated state machine should be created. -A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it is preferred to contact Klarna and confirm the new state machine design and functionality. +A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it's preferred to contact Klarna and confirm the new state machine design and functionality. The [Klarna State Machine Commands and Conditions](klarna-state-machine.htm) trigger the operations exposed by the KlarnaFacade in order to perform the needed requests to Klarna. --> diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md index 29699d9bce..b75ea8cf2e 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md @@ -25,7 +25,7 @@ related: Both [invoice](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-invoice-payment-method-for-payolution.html) and [installment](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-installment-payment-method-for-payolution.html) payment methods utilize the same request flow. It basically consists of the following requests: * Calculation (for instalment only): to calculate the instalment 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. +* Pre-authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is basically considered accepted when it's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution.md index f0e3f55e85..16029a409d 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payolution/payolution.md @@ -34,7 +34,7 @@ Payolution provides two methods of payment: 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 731f4556e5..87bc01f18c 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -24,7 +24,7 @@ You can have multiple accounts with Payone. For example, you can have different For the *Payone Credit Card* payment method, we support the following modes: -- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it is shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. +- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it's shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. - *3DS*: Messaging protocol that enables consumer authentication with their card issuer when making online purchases. - *PCI DSS Compliance via SAQ A*: A set of security standards designed to ensure that you accept, process, and transmit credit card information in a secure environment. @@ -48,7 +48,7 @@ When paying with a credit card, customers can do the following: - Repeat payments as often as they want if the payment (preauthorization) has failed, or cancel and close the payment page. - Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Cancel the order after it's ready for shipment and receive the money back, that is, trigger a refund. - Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. When customers pay with a credit card, a shop owner can do the following: @@ -69,7 +69,7 @@ When customers pay with PayPal, the flow is as follows: When paying with PayPal, customers can: - Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization, without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Cancel the order after it's ready for shipment and receive the money back, that is, trigger a refund. - Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. When customers pay with PayPal, a shop owner can do the following: diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index 89a3c26ae8..43af18ca26 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -19,7 +19,7 @@ related: [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. +Germany’s easiest installment purchase solution ratenkauf by easyCredit's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md index b2012190f6..af96fd4f8a 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md @@ -51,7 +51,7 @@ The overall interaction diagram between Glue API, the API Client, and the third First, implement a plugin that maps the checkout response and fills it with the necessary redirect URL and other attributes that are mapped. To do so, create a plugin file on the `Glue` layer: `src/Pyz/Glue/MyModule/Plugin/CheckoutRestApi/CheckoutResponseMapperPlugin.php`. -The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it is an internal or external redirect. +The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it's an internal or external redirect. **Sample implementation** @@ -99,7 +99,7 @@ The plugin must extend the `OrderPaymentUpdaterPluginInterface` and implement th * `isAppplicable`: This function determines whether a specific payment is processed by the plugin. The function returns true if the payment must be processed; otherwise, it returns false. * `updateOrderPayment`: This function updates the payment data in the database. -To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it is always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. +To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it's always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. {% info_block infoBox %} diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md index 682b13486e..8f05eb2d11 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md @@ -82,7 +82,7 @@ The table below describes all general configuration keys and their values. | `AdyenApiConstants::CAPTURE_ACTION_URL` | string | URL for the capture API call. | | `AdyenApiConstants::CANCEL_ACTION_URL` | string | URL for the cancel API call. | | `AdyenApiConstants::REFUND_ACTION_URL` | string | URL for the refund API call. | -| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it is used for the refund API call. | +| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it's used for the refund API call. | | `AdyenApiConstants::TECHNICAL_CANCEL_ACTION_URL` | string | URL for the technical cancellation API call. | | `AdyenApiConstants::ADJUST_AUTHORIZATION_ACTION_URL` | string | URL for the API call to adjust the authorized amount. | diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md index 68c32f6d81..ac9bf2be88 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md @@ -86,7 +86,7 @@ Next step is rendering Pay with Amazon button. Just insert this line in a proper {% 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. +Make sure that the button is rendered and works properly. In the sandbox mode it's 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's possible to retrieve available shipment methods. For that purpose Spryker provides Shipment Bundle and its client with method `getAvailableMethods()`. @@ -110,4 +110,4 @@ The rest of integration includes State machine which is different for synchronou 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. +`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's possible to do the same manually using state machine buttons in Zed. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md index 83bbe75467..ad01538617 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md @@ -20,7 +20,7 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/amazon-pay/obtain-an-amazon-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 is different for synchronous and asynchronous flow. Although from status "capture completed" it's the same and in the state machine, it's presented as a sub-process. The state machine for the synchronous flow: diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md index c2d9e3bca6..cb4cd6b44a 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md @@ -91,7 +91,7 @@ $config[AmazonPayConstants::WIDGET_BUTTON_SIZE] = AmazonPayConfig::WIDGET_BUTTON $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). +According to Amazon Pay restrictions, a module can run either on a `localhost` domain or via HTTPS. If it's 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). {% info_block warningBox "Important" %} diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md index 6feefdb33e..215d601206 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md @@ -36,7 +36,7 @@ Each API call involves similar classes from the module: * 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: +Since it's 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`. @@ -113,7 +113,7 @@ The next step is to authorize the order. It's a separate operation because in te ## 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. +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's 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 @@ -127,7 +127,7 @@ When all previous steps return a positive response and authorization is accepted 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. +If it's 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. @@ -141,18 +141,18 @@ There is one special constraint related to the selected payment method `PaymentM ## 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. +Unlike the synchronous authorisation, it's 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. +`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's 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. +`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's possible to request a capture. In both decline cases, it's 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. +After successful authorization and capture processes order receives the status "capture completed". From this state only one operation is possible and it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billie.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billie.md index cb85e23fe9..f09201ca4b 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billie.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billie.md @@ -20,7 +20,7 @@ redirect_from: 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: +Billie is Germany’s innovative online-only provider of flexible working capital solutions. Whether it's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billpay/integrate-billpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billpay/integrate-billpay.md index c5fe5d706e..ffc6799b6b 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billpay/integrate-billpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/billpay/integrate-billpay.md @@ -35,7 +35,7 @@ See [Configuration Management](/docs/dg/dev/backend-development/data-manipulatio | `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. | +| `USE_PRESCORE` | In if it's 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: diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md index a3f71a38ab..02c1837b09 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md @@ -22,7 +22,7 @@ related: 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. +* **Authorize**: to perform a payment risk check which is a mandatory step before every payment. The payment is considered accepted when it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree.md index f40b6ec480..7b8db70089 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/braintree/braintree.md @@ -39,7 +39,7 @@ Both accounts share the same configuration with different values. Braintree uses 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/computop-api-calls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/computop-api-calls.md index 9fe31ab734..65cc663797 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/computop-api-calls.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/computop-api-calls.md @@ -39,7 +39,7 @@ related: ## 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. +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's 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: diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md index 5c196497a8..3c13505da1 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md @@ -78,7 +78,7 @@ $config[OmsConstants::ACTIVE_PROCESSES] = [ 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md index 43d9a143ff..1c0e9591b7 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md @@ -59,7 +59,7 @@ You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Z ## 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. +Direct Debit's processed by the bank system once it's 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: diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md index 93aa79beb1..139505c2f0 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md @@ -75,8 +75,8 @@ Each payment option has its own template. You can find and customize it under `Y ## 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. +* 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's `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's 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. @@ -117,4 +117,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md index e76ad376b7..e05b16adc9 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md @@ -61,7 +61,7 @@ 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. +Payment flow with direct debit's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md index 1795dd1a8e..8496d694a3 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md @@ -394,7 +394,7 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr {% 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 %} if data.heidelpayEasyCredit's not null {% raw %}%}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.amortisationText {% raw %}}}{% endraw %}
@@ -541,7 +541,7 @@ No further actions are needed, the quote being filled with payment method select ## 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`. +Once the customer is redirected back to us, the response from Easy Credit's 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. @@ -556,4 +556,4 @@ If the customer has not yet completed the HP.IN they must do that again. **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. +Finalize - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index 9e58056c5c..3983f6f3c1 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -72,4 +72,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md index 04cc222a7b..2eaf783c4b 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md @@ -60,7 +60,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ ``` ## 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 4af4e2ad44..5eb276aed0 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -91,4 +91,4 @@ The most important data here is the payment reference ID which can be used for f 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/klarna/klarna.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/klarna/klarna.md index e4a508e8a9..d31968a3e8 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/klarna/klarna.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/klarna/klarna.md @@ -53,7 +53,7 @@ To Integrate Klarna payments, create and configure a Klarna merchant account. We use state machines for handling and managing orders and payments. To integrate Klarna payments, a dedicated state machine should be created. -A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it is preferred to contact Klarna and confirm the new state machine design and functionality. +A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it's preferred to contact Klarna and confirm the new state machine design and functionality. The [Klarna State Machine Commands and Conditions](klarna-state-machine.htm) trigger the operations exposed by the KlarnaFacade in order to perform the needed requests to Klarna. --> diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md index 29699d9bce..b75ea8cf2e 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md @@ -25,7 +25,7 @@ related: Both [invoice](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-invoice-payment-method-for-payolution.html) and [installment](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-installment-payment-method-for-payolution.html) payment methods utilize the same request flow. It basically consists of the following requests: * Calculation (for instalment only): to calculate the instalment 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. +* Pre-authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is basically considered accepted when it's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution.md index f0e3f55e85..16029a409d 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payolution/payolution.md @@ -34,7 +34,7 @@ Payolution provides two methods of payment: 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 4c387ba214..443c956b95 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -33,7 +33,7 @@ The Payone App supports the B2B and B2C business models and the following paymen For the *Payone Credit Card* payment method, the following modes are supported: -- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it is shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. +- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it's shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. - *3DS*: Messaging protocol that enables consumer authentication with their card issuer when making online purchases. - *PCI DSS Compliance via SAQ A*: A set of security standards designed to ensure that you accept, process, and transmit credit card information in a secure environment. @@ -57,7 +57,7 @@ When paying with a credit card, customers can do the following: - Repeat payments as often as they want if the payment (preauthorization) has failed, or cancel and close the payment page. - Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Cancel the order after it's ready for shipment and receive the money back, that is, trigger a refund. - Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. When customers pay with a credit card, a shop owner can do the following: @@ -78,7 +78,7 @@ When customers pay with PayPal, the flow is as follows: When paying with PayPal, customers can: - Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization, without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Cancel the order after it's ready for shipment and receive the money back, that is, trigger a refund. - Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. When customers pay with PayPal, a shop owner can do the following: diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index 89a3c26ae8..43af18ca26 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -19,7 +19,7 @@ related: [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. +Germany’s easiest installment purchase solution ratenkauf by easyCredit's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md index b2012190f6..af96fd4f8a 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/interact-with-third-party-payment-providers-using-glue-api.md @@ -51,7 +51,7 @@ The overall interaction diagram between Glue API, the API Client, and the third First, implement a plugin that maps the checkout response and fills it with the necessary redirect URL and other attributes that are mapped. To do so, create a plugin file on the `Glue` layer: `src/Pyz/Glue/MyModule/Plugin/CheckoutRestApi/CheckoutResponseMapperPlugin.php`. -The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it is an internal or external redirect. +The plugin must implement `CheckoutResponseMapperPluginInterface`. Using the `mapRestCheckoutResponseTransferToRestCheckoutResponseAttributesTransfer` function of the interface, you can set the redirect URL and specify whether it's an internal or external redirect. **Sample implementation** @@ -99,7 +99,7 @@ The plugin must extend the `OrderPaymentUpdaterPluginInterface` and implement th * `isAppplicable`: This function determines whether a specific payment is processed by the plugin. The function returns true if the payment must be processed; otherwise, it returns false. * `updateOrderPayment`: This function updates the payment data in the database. -To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it is always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. +To help you understand which payments need to be processed, you can use the optional `paymentIdentifier` field in `POST` requests to the `/order-payments` endpoint. To make sure it's always present in a request, you may require the API client to set the field to a specific value to invoke your payment plugin. The value of the field can be retrieved using the `getPaymentIdentifier` helper function. {% info_block infoBox %} diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md index 19e0067c6f..19c1595229 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/adyen/install-and-configure-adyen.md @@ -82,7 +82,7 @@ The table below describes all general configuration keys and their values. | `AdyenApiConstants::CAPTURE_ACTION_URL` | string | URL for the capture API call. | | `AdyenApiConstants::CANCEL_ACTION_URL` | string | URL for the cancel API call. | | `AdyenApiConstants::REFUND_ACTION_URL` | string | URL for the refund API call. | -| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it is used for the refund API call. | +| `AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL` | string | URL for the API call to cancel payment. When it's not possible to know if the payment is already captured, it's used for the refund API call. | | `AdyenApiConstants::TECHNICAL_CANCEL_ACTION_URL` | string | URL for the technical cancellation API call. | | `AdyenApiConstants::ADJUST_AUTHORIZATION_ACTION_URL` | string | URL for the API call to adjust the authorized amount. | diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md index 68c32f6d81..ac9bf2be88 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-sandbox-simulations.md @@ -86,7 +86,7 @@ Next step is rendering Pay with Amazon button. Just insert this line in a proper {% 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. +Make sure that the button is rendered and works properly. In the sandbox mode it's 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's possible to retrieve available shipment methods. For that purpose Spryker provides Shipment Bundle and its client with method `getAvailableMethods()`. @@ -110,4 +110,4 @@ The rest of integration includes State machine which is different for synchronou 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. +`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's possible to do the same manually using state machine buttons in Zed. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md index 83bbe75467..ad01538617 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/amazon-pay-state-machine.md @@ -20,7 +20,7 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/amazon-pay/obtain-an-amazon-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 is different for synchronous and asynchronous flow. Although from status "capture completed" it's the same and in the state machine, it's presented as a sub-process. The state machine for the synchronous flow: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md index c2d9e3bca6..cb4cd6b44a 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/configure-amazon-pay.md @@ -91,7 +91,7 @@ $config[AmazonPayConstants::WIDGET_BUTTON_SIZE] = AmazonPayConfig::WIDGET_BUTTON $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). +According to Amazon Pay restrictions, a module can run either on a `localhost` domain or via HTTPS. If it's 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). {% info_block warningBox "Important" %} diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md index 6feefdb33e..215d601206 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/amazon-pay/handling-orders-with-amazon-pay-api.md @@ -36,7 +36,7 @@ Each API call involves similar classes from the module: * 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: +Since it's 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`. @@ -113,7 +113,7 @@ The next step is to authorize the order. It's a separate operation because in te ## 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. +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's 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 @@ -127,7 +127,7 @@ When all previous steps return a positive response and authorization is accepted 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. +If it's 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. @@ -141,18 +141,18 @@ There is one special constraint related to the selected payment method `PaymentM ## 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. +Unlike the synchronous authorisation, it's 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. +`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's 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. +`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's possible to request a capture. In both decline cases, it's 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. +After successful authorization and capture processes order receives the status "capture completed". From this state only one operation is possible and it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billie.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billie.md index 7a61ddf07e..af75003731 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billie.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billie.md @@ -20,7 +20,7 @@ redirect_from: 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: +Billie is Germany’s innovative online-only provider of flexible working capital solutions. Whether it's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billpay/integrate-billpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billpay/integrate-billpay.md index 1f39a28d4b..b2a88881da 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billpay/integrate-billpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/billpay/integrate-billpay.md @@ -36,7 +36,7 @@ See [Configuration Management](/docs/dg/dev/backend-development/data-manipulatio | `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. | +| `USE_PRESCORE` | In if it's 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: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md index a3f71a38ab..02c1837b09 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree-request-workflow.md @@ -22,7 +22,7 @@ related: 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. +* **Authorize**: to perform a payment risk check which is a mandatory step before every payment. The payment is considered accepted when it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree.md index f40b6ec480..7b8db70089 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/braintree/braintree.md @@ -39,7 +39,7 @@ Both accounts share the same configuration with different values. Braintree uses 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/computop-api-calls.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/computop-api-calls.md index 9fe31ab734..65cc663797 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/computop-api-calls.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/computop-api-calls.md @@ -39,7 +39,7 @@ related: ## 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. +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's 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: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md index 5c196497a8..3c13505da1 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/computop/integrate-payment-methods-for-computop/integrate-the-credit-card-payment-method-for-computop.md @@ -78,7 +78,7 @@ $config[OmsConstants::ACTIVE_PROCESSES] = [ 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md index 43d9a143ff..1c0e9591b7 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/crefopay/crefopay-payment-methods.md @@ -59,7 +59,7 @@ You can find the state machine example in `vendor/spryker-eco/crefo-pay/config/Z ## 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. +Direct Debit's processed by the bank system once it's 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: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md index 93aa79beb1..139505c2f0 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-credit-card-secure-payment-method-for-heidelpay.md @@ -75,8 +75,8 @@ Each payment option has its own template. You can find and customize it under `Y ## 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. +* 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's `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's 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. @@ -117,4 +117,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md index e76ad376b7..e05b16adc9 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-direct-debit-payment-method-for-heidelpay.md @@ -61,7 +61,7 @@ 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. +Payment flow with direct debit's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md index 1795dd1a8e..8496d694a3 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-easy-credit-payment-method-for-heidelpay.md @@ -394,7 +394,7 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr {% 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 %} if data.heidelpayEasyCredit's not null {% raw %}%}{% endraw %} {% raw %}{{{% endraw %} data.heidelpayEasyCredit.amortisationText {% raw %}}}{% endraw %}
@@ -541,7 +541,7 @@ No further actions are needed, the quote being filled with payment method select ## 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`. +Once the customer is redirected back to us, the response from Easy Credit's 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. @@ -556,4 +556,4 @@ If the customer has not yet completed the HP.IN they must do that again. **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. +Finalize - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index d8f7181554..f59415c1dd 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -72,4 +72,4 @@ The most important data here - is the payment reference ID which can be used for 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md index 04cc222a7b..2eaf783c4b 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-invoice-secured-b2c-payment-method-for-heidelpay.md @@ -60,7 +60,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ ``` ## 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 4af4e2ad44..5eb276aed0 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -91,4 +91,4 @@ The most important data here is the payment reference ID which can be used for f 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/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/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". +**Capture the money** - later on, when the item is shipped to the customer, it's 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/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/klarna/klarna.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/klarna/klarna.md index e4a508e8a9..d31968a3e8 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/klarna/klarna.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/klarna/klarna.md @@ -53,7 +53,7 @@ To Integrate Klarna payments, create and configure a Klarna merchant account. We use state machines for handling and managing orders and payments. To integrate Klarna payments, a dedicated state machine should be created. -A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it is preferred to contact Klarna and confirm the new state machine design and functionality. +A basic and fully functional state machine is already available (KlarnaPayment01). You can use the same state machine or build a new one. In case a new state machine needs to be built, it's preferred to contact Klarna and confirm the new state machine design and functionality. The [Klarna State Machine Commands and Conditions](klarna-state-machine.htm) trigger the operations exposed by the KlarnaFacade in order to perform the needed requests to Klarna. --> diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md index 610bf6beb2..63e9e6ae9b 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution-request-flow.md @@ -25,7 +25,7 @@ related: Both [invoice](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-invoice-payment-method-for-payolution.html) and [installment](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payolution/integrate-the-installment-payment-method-for-payolution.html) payment methods utilize the same request flow. It basically consists of the following requests: * Calculation (for instalment only): to calculate the instalment 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. +* Pre-authorize: to perform a payment risk check which is a mandatory step before every payment. The payment is basically considered accepted when it's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution.md index f0e3f55e85..16029a409d 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payolution/payolution.md @@ -34,7 +34,7 @@ Payolution provides two methods of payment: 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. +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's 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. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 8fbe80d2a8..120f96bcb7 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -34,7 +34,7 @@ The Payone App supports the B2B and B2C business models and the following paymen For the *Payone Credit Card* payment method, the following modes are supported: -- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it is shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. +- *Preauthorization and Capture*: After a customer entered the credit card details during the checkout, the seller preauthorizes or reserves the payable amount on the customer’s credit card. As soon as the items have shipped, this amount is captured. Capture kicks off the process of moving money from the customer’s credit card to the seller’s account. The preauthorization and capture mode is the best choice for physical goods. It ensures that in case the ordered items are not available anymore or the customer cancels the order before it's shipped, the seller does not have to transfer the money back to the customer's account and thereby avoids a chargeback. - *3DS*: Messaging protocol that enables consumer authentication with their card issuer when making online purchases. - *PCI DSS Compliance via SAQ A*: A set of security standards designed to ensure that you accept, process, and transmit credit card information in a secure environment. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index 89a3c26ae8..43af18ca26 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -19,7 +19,7 @@ related: [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. +Germany’s easiest installment purchase solution ratenkauf by easyCredit's 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. diff --git a/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/money-module-reference-information.md b/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/money-module-reference-information.md index 0fb60c77b6..6f532b4b2f 100644 --- a/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/money-module-reference-information.md +++ b/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/money-module-reference-information.md @@ -56,7 +56,7 @@ The only difference between them is `MoneyTransfer::$currency`. This value diffe {% endinfo_block %} * In case you don't pass a currency, the currency configured as default is used. -* If you pass a specific currency, it is used instead of the one that's configured as default. +* If you pass a specific currency, it's used instead of the one that's configured as default. **`MoneyFacade::formatWithSymbol()`** diff --git a/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md b/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md index 6523139a88..bc1b629105 100644 --- a/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md +++ b/docs/pbc/all/price-management/202311.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md @@ -59,7 +59,7 @@ The methods defined in the `CurrencyFacade` return an instance of the `CurrencyT * currency name e.g. Euro * currency symbol e.g. € -In addition, `CurrencyTransfer` contains information that specifies if it is the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. +In addition, `CurrencyTransfer` contains information that specifies if it's the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. From currency version 3, we have introduced currency table where currencies are persisted. Also, currency facade provides API to read this data. diff --git a/docs/pbc/all/price-management/202311.0/base-shop/import-and-export-data/import-and-export-price-management-data.md b/docs/pbc/all/price-management/202311.0/base-shop/import-and-export-data/import-and-export-price-management-data.md index 84b34e7f13..2809758f12 100644 --- a/docs/pbc/all/price-management/202311.0/base-shop/import-and-export-data/import-and-export-price-management-data.md +++ b/docs/pbc/all/price-management/202311.0/base-shop/import-and-export-data/import-and-export-price-management-data.md @@ -14,7 +14,7 @@ To learn how data import works and about different ways of importing data, see [ * [product_price.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price.csv.html): allows you to define the price-related information for each product. This data defines the price type, whether is gross or net, its value, the store and currency to which the price applies, and other price data (for example, volumes price). -* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it is gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. +* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it's gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. * [currency.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-currency.csv.html) diff --git a/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2d..2d1551b09f 100644 --- a/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -15,7 +15,7 @@ B2B business model usually challenges any software with higher requirements to a Imagine you have thousands of products and customers with unique pricing terms and conditions. A product can have thousands of prices assigned—one per customer. This document shares the technical challenges of handling such a number of prices and the solutions to solve them. -Such a number of prices cannot be managed manually, but it is defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it is not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. +Such a number of prices cannot be managed manually, but it's defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it's not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. In Spryker, each price is imported as a [price dimension](/docs/pbc/all/price-management/{{site.version}}/base-shop/merchant-custom-prices-feature-overview.html) and has a unique key, which determines its relation to a customer—for example, `specificPrice-DEFAULT-EUR-NET_MODE-FOO1-BAR2`. To appear on the Storefront, the prices must appear in Redis price entries and abstract product search documents so that facet filters can be applied in search and categories. @@ -298,7 +298,7 @@ Ensure that `\Pyz\Zed\EventBehavior\Persistence\Propel\Behavior\ResourceAwareEve 3. Adjust `\Pyz\Zed\EventBehavior\Business\Model\TriggerManager::triggerEvents()` to extract the new piece of data from the payload obtained from the database and set it as the value of the newly created `EventEntityTransfer::queueName` property. -4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it is set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. +4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it's set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. Now you have a separate event queue for prices. This approach applies to any type of event. *Quick lane* ensures that critical data is replicated faster. diff --git a/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/money-module-reference-information.md b/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/money-module-reference-information.md index 0fb60c77b6..6f532b4b2f 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/money-module-reference-information.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/money-module-reference-information.md @@ -56,7 +56,7 @@ The only difference between them is `MoneyTransfer::$currency`. This value diffe {% endinfo_block %} * In case you don't pass a currency, the currency configured as default is used. -* If you pass a specific currency, it is used instead of the one that's configured as default. +* If you pass a specific currency, it's used instead of the one that's configured as default. **`MoneyFacade::formatWithSymbol()`** diff --git a/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md b/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md index 6523139a88..bc1b629105 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md @@ -59,7 +59,7 @@ The methods defined in the `CurrencyFacade` return an instance of the `CurrencyT * currency name e.g. Euro * currency symbol e.g. € -In addition, `CurrencyTransfer` contains information that specifies if it is the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. +In addition, `CurrencyTransfer` contains information that specifies if it's the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. From currency version 3, we have introduced currency table where currencies are persisted. Also, currency facade provides API to read this data. diff --git a/docs/pbc/all/price-management/202404.0/base-shop/import-and-export-data/import-and-export-price-management-data.md b/docs/pbc/all/price-management/202404.0/base-shop/import-and-export-data/import-and-export-price-management-data.md index 84b34e7f13..2809758f12 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/import-and-export-data/import-and-export-price-management-data.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/import-and-export-data/import-and-export-price-management-data.md @@ -14,7 +14,7 @@ To learn how data import works and about different ways of importing data, see [ * [product_price.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price.csv.html): allows you to define the price-related information for each product. This data defines the price type, whether is gross or net, its value, the store and currency to which the price applies, and other price data (for example, volumes price). -* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it is gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. +* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it's gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. * [currency.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-currency.csv.html) diff --git a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2d..2d1551b09f 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -15,7 +15,7 @@ B2B business model usually challenges any software with higher requirements to a Imagine you have thousands of products and customers with unique pricing terms and conditions. A product can have thousands of prices assigned—one per customer. This document shares the technical challenges of handling such a number of prices and the solutions to solve them. -Such a number of prices cannot be managed manually, but it is defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it is not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. +Such a number of prices cannot be managed manually, but it's defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it's not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. In Spryker, each price is imported as a [price dimension](/docs/pbc/all/price-management/{{site.version}}/base-shop/merchant-custom-prices-feature-overview.html) and has a unique key, which determines its relation to a customer—for example, `specificPrice-DEFAULT-EUR-NET_MODE-FOO1-BAR2`. To appear on the Storefront, the prices must appear in Redis price entries and abstract product search documents so that facet filters can be applied in search and categories. @@ -298,7 +298,7 @@ Ensure that `\Pyz\Zed\EventBehavior\Persistence\Propel\Behavior\ResourceAwareEve 3. Adjust `\Pyz\Zed\EventBehavior\Business\Model\TriggerManager::triggerEvents()` to extract the new piece of data from the payload obtained from the database and set it as the value of the newly created `EventEntityTransfer::queueName` property. -4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it is set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. +4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it's set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. Now you have a separate event queue for prices. This approach applies to any type of event. *Quick lane* ensures that critical data is replicated faster. diff --git a/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/money-module-reference-information.md b/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/money-module-reference-information.md index 0fb60c77b6..6f532b4b2f 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/money-module-reference-information.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/money-module-reference-information.md @@ -56,7 +56,7 @@ The only difference between them is `MoneyTransfer::$currency`. This value diffe {% endinfo_block %} * In case you don't pass a currency, the currency configured as default is used. -* If you pass a specific currency, it is used instead of the one that's configured as default. +* If you pass a specific currency, it's used instead of the one that's configured as default. **`MoneyFacade::formatWithSymbol()`** diff --git a/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md b/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md index 95bee148ad..a102f99415 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/extend-and-customize/multiple-currencies-per-store-configuration.md @@ -59,7 +59,7 @@ The methods defined in the `CurrencyFacade` return an instance of the `CurrencyT * currency name e.g. Euro * currency symbol e.g. € -In addition, `CurrencyTransfer` contains information that specifies if it is the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. +In addition, `CurrencyTransfer` contains information that specifies if it's the default currency or not. `CurrencyTransfer::$isDefault` can be used to check if currency that was retrieved by `CurrencyFacade::fromIsoCode()` is the same as the one configured as default for the current store. From currency version 3, we have introduced currency table where currencies are persisted. Also, currency facade provides API to read this data. diff --git a/docs/pbc/all/price-management/202410.0/base-shop/import-and-export-data/import-and-export-price-management-data.md b/docs/pbc/all/price-management/202410.0/base-shop/import-and-export-data/import-and-export-price-management-data.md index 9151094e78..5d8bf4afa9 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/import-and-export-data/import-and-export-price-management-data.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/import-and-export-data/import-and-export-price-management-data.md @@ -15,7 +15,7 @@ To learn how data import works and about different ways of importing data, see [ * [product_price.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price.csv.html): allows you to define the price-related information for each product. This data defines the price type, whether is gross or net, its value, the store and currency to which the price applies, and other price data (for example, volumes price). -* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it is gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. +* [product_price_schedule.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-product-price-schedule.csv.html): use this file to schedule a specific price for a product. For that you have to define the price type, whether it's gross or net, its value, the store and currency to which the price applies, the activation date of that price, and its validity. * [currency.csv](/docs/pbc/all/price-management/{{page.version}}/base-shop/import-and-export-data/import-file-details-currency.csv.html) diff --git a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2d..2d1551b09f 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -15,7 +15,7 @@ B2B business model usually challenges any software with higher requirements to a Imagine you have thousands of products and customers with unique pricing terms and conditions. A product can have thousands of prices assigned—one per customer. This document shares the technical challenges of handling such a number of prices and the solutions to solve them. -Such a number of prices cannot be managed manually, but it is defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it is not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. +Such a number of prices cannot be managed manually, but it's defined by business rules based on which the prices can be generated automatically. For example, you might agree on the special terms with your B2B partner, and they receive their own prices for the whole catalog. It might be considered as a discount, but usually, it's not a single simple rule but a set of rules and their priorities for each partner. These rules exist in an ERP system, which can export data through SOAP or CSV files. In Spryker, each price is imported as a [price dimension](/docs/pbc/all/price-management/{{site.version}}/base-shop/merchant-custom-prices-feature-overview.html) and has a unique key, which determines its relation to a customer—for example, `specificPrice-DEFAULT-EUR-NET_MODE-FOO1-BAR2`. To appear on the Storefront, the prices must appear in Redis price entries and abstract product search documents so that facet filters can be applied in search and categories. @@ -298,7 +298,7 @@ Ensure that `\Pyz\Zed\EventBehavior\Persistence\Propel\Behavior\ResourceAwareEve 3. Adjust `\Pyz\Zed\EventBehavior\Business\Model\TriggerManager::triggerEvents()` to extract the new piece of data from the payload obtained from the database and set it as the value of the newly created `EventEntityTransfer::queueName` property. -4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it is set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. +4. Configure `\Spryker\Zed\Event\Business\Queue\Producer\EventQueueProducer::enqueueListenerBulk()` to check if `queueName` is set on the `EventEntityTransfer.` If it's set, this queue name is used to push event messages to. Otherwise, it falls back to the default event queue. Now you have a separate event queue for prices. This approach applies to any type of event. *Quick lane* ensures that critical data is replicated faster. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md b/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md index b30441c108..95a79c0687 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md @@ -13,9 +13,9 @@ The following schema illustrates relations between alternative products: ![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) -* *conversion*—factor to convert a value from sales to the base unit. If it is *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). -* *precision*—the ratio between a sales unit and a base unit. For example, a base unit is an *item*, and a user selects *kg* as a sales unit. +* *conversion*—factor to convert a value from sales to the base unit. If it's *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). +* *precision*—the ratio between a sales unit and a base unit. For example, a base unit's an *item*, and a user selects *kg* as a sales unit. * `is_displayed`—if true, then the value is shown on the Storefront. -* `is_default`—if true, then the unit is shown as the default unit on the Storefront. +* `is_default`—if true, then the unit's shown as the default unit on the Storefront.
diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/alternative-products-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/alternative-products-feature-overview.md index f4dbceecb8..3f0eca1555 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/alternative-products-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/alternative-products-feature-overview.md @@ -19,7 +19,7 @@ redirect_from: Suggesting product alternatives is a great way to ease the user’s product finding process. Instead of browsing the product catalog, product alternatives let customers jump from one product page to the next until they find a relevant item. -For marketplace relations, alternative products are useful because for a marketplace owner it is irrelevant from what merchant a buyer has bought a product. If a merchant does not have this product, the alternative product can be shown on the marketplace. +For marketplace relations, alternative products are useful because for a marketplace owner it's irrelevant from what merchant a buyer has bought a product. If a merchant does not have this product, the alternative product can be shown on the marketplace. A Back Office user can add product alternatives for both abstract and concrete products in **Catalog > Products**. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md index 8c781760b3..ba52a5c9b9 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md @@ -86,7 +86,7 @@ To learn how a Back Office User creates slots, see [Creating slots in configurab When a Storefront user configures a bundle, for each slot, they select a product from the provided product list. ![Slot Base Cabinet](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Configurable+Bundle/Slot+Base+Cabinet.png) -By default, it is not obligatory to select products for all the slots to order a configurable bundle. +By default, it's not obligatory to select products for all the slots to order a configurable bundle. Schematically, a configurable bundle looks as follows: ![Config Bundle Schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Configurable+Bundle/slots+scheme.png) @@ -197,7 +197,7 @@ The order looks as follows: * Product B x1 -If a configurable bundle contains non-splittable products and its quantity is above 1, it is not split. +If a configurable bundle contains non-splittable products and its quantity is above 1, it's not split. For example, a Storefront User places the order with the following item: diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md index cdf75c42bb..641d3f97aa 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md @@ -16,9 +16,9 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/measurement-units-feature-overview.html --- -The *Measurement Units* feature lets you sell 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". 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 a 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. +The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit's assigned to abstract products, and by default, it's "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 alphabetical order. +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's defined, then the first unit to show will be the first in alphabetical order. The sales units are displayed on the product details page. You can define the sales units in the Administration Interface but choose not to display them on the webshop. 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. @@ -30,11 +30,11 @@ For example, you might have bought a quintal of apples, but want to use kilogram {% endinfo_block %} -The shop owner can define if the conversion factor between base and sales units should be displayed on the webshop. If it is set to `true`, then: +The shop owner can define if the conversion factor between base and sales units should be displayed on the webshop. If it's 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)| +| The base unit's meter and the sales unit's 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 the base unit and sales unit. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 9a47bdb28f..b15804b0c5 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -39,7 +39,7 @@ redirect_from: 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 in 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", or "Pallet" of apples. The "bag", "pallet", and "box" 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: +Each packaging unit's defined on an abstract product level and is represented by one product variant—for example: | ABSTRACT PRODUCT | CONCRETE PRODUCT / VARIANT | PACKAGING UNIT | | --- | --- | --- | @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% 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 two available amounts (because of amount restriction settings), a higher or lower amount must be selected. +The amount of items contained in a sales unit's referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-bundles-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-bundles-feature-overview.md index c653b115b8..92cfda1684 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-bundles-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-bundles-feature-overview.md @@ -15,7 +15,7 @@ redirect_from: 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. +A bundle represents two or more products, sold as a set; it's 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) @@ -94,7 +94,7 @@ For example: 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. +BundleProduct have price this price, it's 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 diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md index 27c6fb5abe..d3f4098b01 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md @@ -16,7 +16,7 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.html --- -If a concrete product runs out of stock, it is tagged as out of stock and cannot be added to cart: +If a concrete product runs out of stock, it's 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) diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md index d4d31d562a..7065ac1b34 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md @@ -24,7 +24,7 @@ A developer can import [product attributes](/docs/pbc/all/product-information-ma ## Product attribute inheritance -A Back Office user can add product attributes to abstract and concrete products. If they add a product attribute to an abstract product, it is added to all its concrete products. If they add it to a concrete product, it's not added to the other concrete products. +A Back Office user can add product attributes to abstract and concrete products. If they add a product attribute to an abstract product, it's added to all its concrete products. If they add it to a concrete product, it's not added to the other concrete products. ## Declared attributes @@ -45,7 +45,7 @@ The Spryker Commerce OS product data model allows the creation of multiple produ For a product variant to be selectable on the Storefront, a value of one of its product attributes must be unique compared to the product attribute values of other variants of the same abstract product. -When creating a product attribute, a Back Office user selects if it is a super attribute. +When creating a product attribute, a Back Office user selects if it's a super attribute. Product variants of the same abstract product can differ by different super attributes. Check the following super attribute examples: diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-labels-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-labels-feature-overview.md index 87ca15a524..98c48f0530 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-labels-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-labels-feature-overview.md @@ -135,7 +135,7 @@ 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 needed products. When the event starts, you just need to activate the label to show it on all the product pages it is applied to. +If a product label is active, it's displayed on all the product pages it's applied to. If a product label is inactive, it's still applied to the selected product, but it's 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 needed products. When the event starts, you just need to activate the label to show it on all the product pages it's applied to. To learn how a Back Office user can activate and deactivate product labels in the Back Office, see [Edit product labels](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/manage-in-the-back-office/product-labels/edit-product-labels.html) diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-options-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-options-feature-overview.md index e26edac1e7..084cb1004d 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-options-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/product-options-feature-overview.md @@ -1,6 +1,6 @@ --- title: Product Options feature overview -description: The document describes the creation process of product options and how it is managed in the Back Office +description: The document describes the creation process of product options and how it's managed in the Back Office last_updated: Jul 26, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/product-options-feature-overview diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md index 15a53762bd..2970eacd28 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md @@ -23,7 +23,7 @@ This document describes the `category_template.csv` file to configure category t | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | | --- | --- | --- | --- | --- | | template_name | ✓ | String | | Name of the category template. | -| template_path | ✓ | String | | Must be a valid path to a twig file and it is a unique field, for example, the file cannot have more than one line with the same template path. | Path of the category template. | +| template_path | ✓ | String | | Must be a valid path to a twig file and it's a unique field, for example, the file cannot have more than one line with the same template path. | Path of the category template. | ## Import template file and content example diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md index 3947245ecf..56a6d79877 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md @@ -33,12 +33,12 @@ This document describes the `category.csv` file to configure [categories](/docs/ | meta_title.{ANY_LOCALE_NAME}
Example value: *meta_title.de_DE* | | String | | Title in the specified location (DE for our example). | | meta_description.{ANY_LOCALE_NAME}
Example value: *meta_description.de_DE* | | String | | Description in the specified location (DE for our example). | | meta_keywords.{ANY_LOCALE_NAME}
Example value: *meta_keywords.de_DE* | | String | | Keywords in the specified location (DE for our example). | -| is_active | | Boolean | True (1), if it is active. False (0), if it is not active. | Indicates if the category is active or not. | -| is_in_menu | | Boolean | True (1), if it is in the menu. False (0), if it is not in the menu. | Indicates if the category is in the menu or not. | -| is_clickable | | Boolean | True (1), if it is clickable. False (0), if it is not clickable. | Indicates if the category is clickable or not. | -| is_searchable | | Boolean | True (1), if it is searchable. False (0), if it is not searchable. | Indicates if it is a searchable category in the menu or not. | -| is_root | | Boolean | True (1), if it is root. False (0), if it is not root. | Indicates if it is a root category or not. | -| is_main | | Boolean | True (1), if it is main. False (0), if it is not main. | Indicates if it is a main category or not. | +| is_active | | Boolean | True (1), if it's active. False (0), if it's not active. | Indicates if the category is active or not. | +| is_in_menu | | Boolean | True (1), if it's in the menu. False (0), if it's not in the menu. | Indicates if the category is in the menu or not. | +| is_clickable | | Boolean | True (1), if it's clickable. False (0), if it's not clickable. | Indicates if the category is clickable or not. | +| is_searchable | | Boolean | True (1), if it's searchable. False (0), if it's not searchable. | Indicates if it's a searchable category in the menu or not. | +| is_root | | Boolean | True (1), if it's root. False (0), if it's not root. | Indicates if it's a root category or not. | +| is_main | | Boolean | True (1), if it's main. False (0), if it's not main. | Indicates if it's a main category or not. | | node_order | | Integer | | Order of the category node. | | template_name | | String | | Template name of the category. | | category_image_name.{ANY_LOCALE_NAME} | | String | | Name of the image for the category in the locale. | diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md index ca4936268f..b61b642ee4 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md @@ -36,7 +36,7 @@ This document describes the `product_abstract.csv` file to configure [Abstract P | abstract_sku | ✓ | String | | SKU identifier of the abstract product. | | name.{ANY_LOCALE_NAME}
Example value: *name.en_US* | ✓ | String |Locale data is dynamic in data importers. It means that ANY_LOCALE_NAME postifx can be changed, removed, and any number of columns with different locales can be added to the .csv files. | Name of the product in the specified location (US for our example). | | url.{ANY_LOCALE_NAME}
Example value: *value_1.en_US* | ✓ | String | | URL page of the product image in the specified location (US for our example). | -|is_featured | | String |If it is empty, will be “False”.
False = 0
True = 1 | Indicates if it is a featured product. | +|is_featured | | String |If it's empty, will be “False”.
False = 0
True = 1 | Indicates if it's a featured product. | | attribute_key_{NUMBER}
Example value: *attribute_key_1*
| ✓ (if this attribute is defined) | String | | Product attribute key for the attribute. | | value_{NUMBER}
Example value: *value_1*
|✓ (if this attribute is defined) | String | | Product value for the attribute. | | attribute_key_{NUMBER}.{ANY_LOCALE_NAME}
Example value: *attribute_key_1.en_US*
| | String | | Product attribute key, for the first attribute, translated in the specified locale (US for our example). | @@ -56,7 +56,7 @@ This document describes the `product_abstract.csv` file to configure [Abstract P ## Additional information -For each attribute, where N is a number starting in 1, it is mandatory to have both fields: +For each attribute, where N is a number starting in 1, it's mandatory to have both fields: * `attribute_key_N` * `value_N` diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md index 92c7de83ff..e0330a08d6 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md @@ -22,7 +22,7 @@ This document describes the `product_attribute_key.csv` file to configure [Produ | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | | --- | --- | --- | --- | --- | | attribute_key | ✓ | String | Must be unique. | Product attribute key name. | -| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it is a super attribute or not. | +| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it's a super attribute or not. | ## Import template file and content example diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md index 7b6dee634f..06483cc9d2 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md @@ -41,7 +41,7 @@ This file has the following dependency: [ product_abstract.csv](/docs/pbc/all/pr | is_searchable.{ANY_LOCALE_NAME}
Example value: *is_searchable.en_US*| | Integer | | Indicates if the product is searchable in the specified locale (US for our example). | | icecat_license | | String | | Icecat product catalogue license code. | | bundled | | String | | Products SKUs separated by comas, that are part of the bundle. | -| is_quantity_splittable | | Boolean |If it is empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | +| is_quantity_splittable | | Boolean |If it's empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | ** ANY_LOCALE_NAME: Locale date is dynamic in data importers. It means that ANY_LOCALE_NAME postfix can be changed, removed, and any number of columns with different locales can be added to the CSV files. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md index 3f48f3a395..0d2bd908a9 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md @@ -558,9 +558,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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.| +|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's 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.| +|is_default|mandatory|integer|1|Controls if this sales unit's 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: @@ -674,7 +674,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit's available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -962,7 +962,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/add-product-alternatives.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/add-product-alternatives.md index 96cb9afbb6..f320b8aba9 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/add-product-alternatives.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/add-product-alternatives.md @@ -41,7 +41,7 @@ The page is refreshed to display the table with the alternative products you hav To remove any alternative product, in the _Actions_ column, click **Remove**. **Tips and tricks** -
The product alternatives is 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 displayed: +
The product alternatives is displayed on the concrete product page only when it's 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 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. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/create-product-variants.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/create-product-variants.md index 8dc6b95747..faf912d3fd 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/create-product-variants.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/create-product-variants.md @@ -125,7 +125,7 @@ Once you select to discontinue the product, you can add a note about that on thi #### 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 auto-suggested 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. +The only field available is **Add Product Alternative by Name or SKU**. Here it's enough to enter three characters of a product name or SKU to see the auto-suggested 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 diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/discontinue-products.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/discontinue-products.md index 7ebdd7122b..a2cc85da95 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/discontinue-products.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/discontinue-products.md @@ -61,7 +61,7 @@ If the product added to the shopping list or wishlist is marked as discontinued, ### Reference information: Discontinuing products This section explains what happens on the Storefront after discontinuing a product. -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. However, you need to propose some replacements for it to make sure that the user journey will be successful. +Let's say the Smartphone with a flash memory equals 16GB is no longer popular, and it's more efficient for you to discontinue it. However, 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) diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.md index 1a134d4647..f14915c652 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-in-the-back-office/products/manage-product-variants/edit-product-variants.md @@ -109,7 +109,7 @@ Once you select to discontinue the product, you can add a note about that on thi #### 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. +The only field available is **Add Product Alternative by Name or SKU**. Here it's 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 diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-concrete-products.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-concrete-products.md index 4ab594c585..3f2c56a089 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-concrete-products.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-concrete-products.md @@ -77,8 +77,8 @@ To retrieve general information about a concrete product, send the request: | `GET https://glue.mysprykershop.com/concrete-products/001_25904006?include=product-offers` | Get information about the `001_25904006` product with its product offers. | | `GET http://glue.mysprykershop.com/concrete-products/fish-1-1?include=sales-units,product-measurement-units` | Get information about the `fish-1-1` product with the information on its sales units and product measurement units included. | | `GET http://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/214_123?included=bundled-products` | Retrieve the concrete product with SKU `214_123`. If it is a product bundle, retrieve the bundled products. | -| `GET https://glue.mysprykershop.com/concrete-products/214_123?included=bundled-products,concrete-products,abstract-products` | Retrieve the concrete product with SKU `214_123`. If it is a product bundle, retrieve the bundled products. Retrieve all the related concrete products and the abstract products owning them. | +| `GET https://glue.mysprykershop.com/concrete-products/214_123?included=bundled-products` | Retrieve the concrete product with SKU `214_123`. If it's a product bundle, retrieve the bundled products. | +| `GET https://glue.mysprykershop.com/concrete-products/214_123?included=bundled-products,concrete-products,abstract-products` | Retrieve the concrete product with SKU `214_123`. If it's a product bundle, retrieve the bundled products. Retrieve all the related concrete products and the abstract products owning them. | ### Response diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md index 936f77c15f..29c275504f 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md @@ -97,10 +97,10 @@ Request sample: retrieve sales units | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | -| conversion | integer | Factor to convert a value from sales to base unit. If it is "null", the information is taken from the global conversions. | +| conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | precision | integer | Ratio between a sales unit and a base unit. | -| is displayed | boolean | Defines if the sales unit is displayed on the product details page. | -| is default | boolean | Defines if the sales unit is selected by default on the product details page. | +| is displayed | boolean | Defines if the sales unit's displayed on the product details page. | +| is default | boolean | Defines if the sales unit's selected by default on the product details page. | | measurementUnitCode | string | Code of the measurement unit. | See [Retrieve measurement units](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.html) for more information on managing the sales units. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md index 9cb1436d89..d64677c4e6 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md @@ -64,7 +64,7 @@ Response sample: retrieve a measurement unit | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | name | string | Name of the product measurement unit. | -| defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | +| defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | | measurementUnitCode | string | Code of the measurement unit. | ## Other management options diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-product-attributes.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-product-attributes.md index b511541290..6a77ce272b 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-product-attributes.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-product-attributes.md @@ -153,7 +153,7 @@ Request sample: retrieve all product attributes | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | allowInput | Boolean | Indicates if custom values can be entered for this product attribute. | -| isSuper | Boolean | Indicates if it is a super attribute or not. | +| isSuper | Boolean | Indicates if it's a super attribute or not. | | inputType | String | Input type of the product attribute, for example, text, number, select, etc. | | localeName | String | Name of the locale. | | values | Array | Possible values of the attribute. | diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/howto-render-configurable-bundle-templates-in-the-storefront.md b/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/howto-render-configurable-bundle-templates-in-the-storefront.md index 3f578647ae..b9e2c63a45 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/howto-render-configurable-bundle-templates-in-the-storefront.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/howto-render-configurable-bundle-templates-in-the-storefront.md @@ -78,7 +78,7 @@ In the checkout summary page template (`CheckoutPage/Theme/default/views/summary {% raw %}{%{% endraw %} endwidget {% raw %}%}{% endraw %} ``` -When you set up `ConfiguredBundleNoteWidget` for your product, it is called automatically in the `configured-bundle` molecule of the `QuoteConfiguredBundleWidget` (the same example as for the cart page). It is impossible to edit or remove comments for the configured bundle product on the checkout summary step. The customer can read comments which are editable on the cart page only. +When you set up `ConfiguredBundleNoteWidget` for your product, it's called automatically in the `configured-bundle` molecule of the `QuoteConfiguredBundleWidget` (the same example as for the cart page). It is impossible to edit or remove comments for the configured bundle product on the checkout summary step. The customer can read comments which are editable on the cart page only. ## Render configurable bundle templates on the order details page diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/product-data-from-import-to-frontend-views.md b/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/product-data-from-import-to-frontend-views.md index ac92e23315..183016b373 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/product-data-from-import-to-frontend-views.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/tutorials-and-howtos/product-data-from-import-to-frontend-views.md @@ -41,7 +41,7 @@ vendor/bin/console collector:storage:export When you have data in the key-value storage, you can display the product details in the frontend views. -When requesting a page in frontend, the `Collector` module takes care of identifying the type of request (if it is a product details page or a category page) and retrieves necessary data from Redis. +When requesting a page in frontend, the `Collector` module takes care of identifying the type of request (if it's a product details page or a category page) and retrieves necessary data from Redis. It also takes care of routing the request to the correct controller action. diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/create-product-options.md b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/create-product-options.md index 1600893743..fc58d8266e 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/create-product-options.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/create-product-options.md @@ -53,7 +53,7 @@ The following table describes the attributes you enter and select while creating | Tax Set | Conditions under which the product option group is to be taxed. To learn how to create tax sets, see [Create tax sets](/docs/pbc/all/tax-management/{{page.version}}/base-shop/manage-in-the-back-office/create-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*.| +| 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's considered *inactive* for that specific currency and price mode. If a price is `0`, it's 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. | diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/manage-product-options.md b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/manage-product-options.md index ff6fb26dcc..d15858a097 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/manage-product-options.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/product-options/manage-product-options.md @@ -48,7 +48,7 @@ The following table describes the attributes you enter and select while editing | Tax Set | Conditions under which the product option group is taxed. To learn how to create tax sets, see [Create tax sets](/docs/pbc/all/tax-management/{{page.version}}/base-shop/manage-in-the-back-office/create-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/pbc/all/product-information-management/{{page.version}}/marketplace/manage-in-the-back-office/product-options/create-product-options.html). | | SKU | Unique identifier of the product option value. You can enter this value only when [creating product options](/docs/pbc/all/product-information-management/{{page.version}}/marketplace/manage-in-the-back-office/product-options/create-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*.| +| 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's considered *inactive* for that specific currency and price mode. If a price is `0`, it's 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. | diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/products/create-product-variants.md b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/products/create-product-variants.md index ddd278052c..d9c7a1f803 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/products/create-product-variants.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-back-office/products/create-product-variants.md @@ -110,7 +110,7 @@ Once you select to discontinue the product, you can add a note about that on thi #### 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. +The only field available is **Add Product Alternative by Name or SKU**. Here it's 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?** diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-merchant-portal/abstract-products/create-marketplace-abstract-products.md b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-merchant-portal/abstract-products/create-marketplace-abstract-products.md index 0404d5b8e2..50259cec17 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-merchant-portal/abstract-products/create-marketplace-abstract-products.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-in-the-merchant-portal/abstract-products/create-marketplace-abstract-products.md @@ -37,7 +37,7 @@ To create a new abstract product: {% info_block warningBox "Warning" %} - You can not save an abstract product unless it is accompanied by at least one concrete product. + You can not save an abstract product unless it's accompanied by at least one concrete product. {% endinfo_block %} diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-abstract-products.md b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-abstract-products.md index 24ab376311..f0a8a99f5c 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-abstract-products.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/manage-using-glue-api/glue-api-retrieve-abstract-products.md @@ -1292,7 +1292,7 @@ To retrieve general information about an abstract product, send the request: "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.", + "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's 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", @@ -1356,7 +1356,7 @@ To retrieve general information about an abstract product, send the request: "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.", + "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's 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", @@ -1434,7 +1434,7 @@ To retrieve general information about an abstract product, send the request: "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.", + "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's not obligatory. To meet the withdrawal deadline, it's 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." }, diff --git a/docs/pbc/all/product-information-management/202311.0/marketplace/marketplace-product-options-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/marketplace/marketplace-product-options-feature-overview.md index 3ef9a6ad27..2dabba8b25 100644 --- a/docs/pbc/all/product-information-management/202311.0/marketplace/marketplace-product-options-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/marketplace/marketplace-product-options-feature-overview.md @@ -40,7 +40,7 @@ Currently, you can create and manage general product options via the Back Office 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/pbc/all/product-information-management/{{page.version}}/marketplace/manage-in-the-back-office/product-options/create-product-options.html#activating-a-product-option), the product option is displayed on the Storefront. +* *Approved*: The product option group was approved by the Marketplace administrator. Merchants can use it for their products and offers, so if it's [active](/docs/pbc/all/product-information-management/{{page.version}}/marketplace/manage-in-the-back-office/product-options/create-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. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md b/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md index b30441c108..95a79c0687 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md @@ -13,9 +13,9 @@ The following schema illustrates relations between alternative products: ![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) -* *conversion*—factor to convert a value from sales to the base unit. If it is *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). -* *precision*—the ratio between a sales unit and a base unit. For example, a base unit is an *item*, and a user selects *kg* as a sales unit. +* *conversion*—factor to convert a value from sales to the base unit. If it's *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). +* *precision*—the ratio between a sales unit and a base unit. For example, a base unit's an *item*, and a user selects *kg* as a sales unit. * `is_displayed`—if true, then the value is shown on the Storefront. -* `is_default`—if true, then the unit is shown as the default unit on the Storefront. +* `is_default`—if true, then the unit's shown as the default unit on the Storefront.
diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/alternative-products-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/alternative-products-feature-overview.md index f4dbceecb8..3f0eca1555 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/alternative-products-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/alternative-products-feature-overview.md @@ -19,7 +19,7 @@ redirect_from: Suggesting product alternatives is a great way to ease the user’s product finding process. Instead of browsing the product catalog, product alternatives let customers jump from one product page to the next until they find a relevant item. -For marketplace relations, alternative products are useful because for a marketplace owner it is irrelevant from what merchant a buyer has bought a product. If a merchant does not have this product, the alternative product can be shown on the marketplace. +For marketplace relations, alternative products are useful because for a marketplace owner it's irrelevant from what merchant a buyer has bought a product. If a merchant does not have this product, the alternative product can be shown on the marketplace. A Back Office user can add product alternatives for both abstract and concrete products in **Catalog > Products**. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md index 1e4e2bc744..fbc9241a45 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/configurable-bundle-feature-overview.md @@ -86,7 +86,7 @@ To learn how a Back Office User creates slots, see [Creating slots in configurab When a Storefront user configures a bundle, for each slot, they select a product from the provided product list. ![Slot Base Cabinet](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Configurable+Bundle/Slot+Base+Cabinet.png) -By default, it is not obligatory to select products for all the slots to order a configurable bundle. +By default, it's not obligatory to select products for all the slots to order a configurable bundle. Schematically, a configurable bundle looks as follows: ![Config Bundle Schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Product+Management/Configurable+Bundle/slots+scheme.png) @@ -197,7 +197,7 @@ The order looks as follows: * Product B x1 -If a configurable bundle contains non-splittable products and its quantity is above 1, it is not split. +If a configurable bundle contains non-splittable products and its quantity is above 1, it's not split. For example, a Storefront User places the order with the following item: diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md index cdf75c42bb..641d3f97aa 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md @@ -16,9 +16,9 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/measurement-units-feature-overview.html --- -The *Measurement Units* feature lets you sell 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". 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 a 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. +The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit's assigned to abstract products, and by default, it's "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 alphabetical order. +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's defined, then the first unit to show will be the first in alphabetical order. The sales units are displayed on the product details page. You can define the sales units in the Administration Interface but choose not to display them on the webshop. 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. @@ -30,11 +30,11 @@ For example, you might have bought a quintal of apples, but want to use kilogram {% endinfo_block %} -The shop owner can define if the conversion factor between base and sales units should be displayed on the webshop. If it is set to `true`, then: +The shop owner can define if the conversion factor between base and sales units should be displayed on the webshop. If it's 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)| +| The base unit's meter and the sales unit's 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 the base unit and sales unit. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 95f0ee39b1..82eb2d7d01 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -39,7 +39,7 @@ redirect_from: 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 in 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", or "Pallet" of apples. The "bag", "pallet", and "box" 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: +Each packaging unit's defined on an abstract product level and is represented by one product variant—for example: | ABSTRACT PRODUCT | CONCRETE PRODUCT / VARIANT | PACKAGING UNIT | | --- | --- | --- | @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% 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 two available amounts (because of amount restriction settings), a higher or lower amount must be selected. +The amount of items contained in a sales unit's referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-bundles-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-bundles-feature-overview.md index c653b115b8..92cfda1684 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-bundles-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-bundles-feature-overview.md @@ -15,7 +15,7 @@ redirect_from: 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. +A bundle represents two or more products, sold as a set; it's 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) @@ -94,7 +94,7 @@ For example: 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. +BundleProduct have price this price, it's 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 diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md index 27c6fb5abe..d3f4098b01 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.md @@ -16,7 +16,7 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/product-feature-overview/discontinued-products-overview.html --- -If a concrete product runs out of stock, it is tagged as out of stock and cannot be added to cart: +If a concrete product runs out of stock, it's 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) diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md index d4d31d562a..7065ac1b34 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-feature-overview/product-attributes-overview.md @@ -24,7 +24,7 @@ A developer can import [product attributes](/docs/pbc/all/product-information-ma ## Product attribute inheritance -A Back Office user can add product attributes to abstract and concrete products. If they add a product attribute to an abstract product, it is added to all its concrete products. If they add it to a concrete product, it's not added to the other concrete products. +A Back Office user can add product attributes to abstract and concrete products. If they add a product attribute to an abstract product, it's added to all its concrete products. If they add it to a concrete product, it's not added to the other concrete products. ## Declared attributes @@ -45,7 +45,7 @@ The Spryker Commerce OS product data model allows the creation of multiple produ For a product variant to be selectable on the Storefront, a value of one of its product attributes must be unique compared to the product attribute values of other variants of the same abstract product. -When creating a product attribute, a Back Office user selects if it is a super attribute. +When creating a product attribute, a Back Office user selects if it's a super attribute. Product variants of the same abstract product can differ by different super attributes. Check the following super attribute examples: diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-labels-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-labels-feature-overview.md index 76f2f94f66..9b0dca3389 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-labels-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-labels-feature-overview.md @@ -135,7 +135,7 @@ 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 needed products. When the event starts, you just need to activate the label to show it on all the product pages it is applied to. +If a product label is active, it's displayed on all the product pages it's applied to. If a product label is inactive, it's still applied to the selected product, but it's 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 needed products. When the event starts, you just need to activate the label to show it on all the product pages it's applied to. To learn how a Back Office user can activate and deactivate product labels in the Back Office, see [Edit product labels](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/manage-in-the-back-office/product-labels/edit-product-labels.html) diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-options-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-options-feature-overview.md index e26edac1e7..084cb1004d 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-options-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/product-options-feature-overview.md @@ -1,6 +1,6 @@ --- title: Product Options feature overview -description: The document describes the creation process of product options and how it is managed in the Back Office +description: The document describes the creation process of product options and how it's managed in the Back Office last_updated: Jul 26, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/product-options-feature-overview diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md index 15a53762bd..2970eacd28 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category-template.csv.md @@ -23,7 +23,7 @@ This document describes the `category_template.csv` file to configure category t | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | | --- | --- | --- | --- | --- | | template_name | ✓ | String | | Name of the category template. | -| template_path | ✓ | String | | Must be a valid path to a twig file and it is a unique field, for example, the file cannot have more than one line with the same template path. | Path of the category template. | +| template_path | ✓ | String | | Must be a valid path to a twig file and it's a unique field, for example, the file cannot have more than one line with the same template path. | Path of the category template. | ## Import template file and content example diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md index 3947245ecf..56a6d79877 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/categories-data-import/import-file-details-category.csv.md @@ -33,12 +33,12 @@ This document describes the `category.csv` file to configure [categories](/docs/ | meta_title.{ANY_LOCALE_NAME}
Example value: *meta_title.de_DE* | | String | | Title in the specified location (DE for our example). | | meta_description.{ANY_LOCALE_NAME}
Example value: *meta_description.de_DE* | | String | | Description in the specified location (DE for our example). | | meta_keywords.{ANY_LOCALE_NAME}
Example value: *meta_keywords.de_DE* | | String | | Keywords in the specified location (DE for our example). | -| is_active | | Boolean | True (1), if it is active. False (0), if it is not active. | Indicates if the category is active or not. | -| is_in_menu | | Boolean | True (1), if it is in the menu. False (0), if it is not in the menu. | Indicates if the category is in the menu or not. | -| is_clickable | | Boolean | True (1), if it is clickable. False (0), if it is not clickable. | Indicates if the category is clickable or not. | -| is_searchable | | Boolean | True (1), if it is searchable. False (0), if it is not searchable. | Indicates if it is a searchable category in the menu or not. | -| is_root | | Boolean | True (1), if it is root. False (0), if it is not root. | Indicates if it is a root category or not. | -| is_main | | Boolean | True (1), if it is main. False (0), if it is not main. | Indicates if it is a main category or not. | +| is_active | | Boolean | True (1), if it's active. False (0), if it's not active. | Indicates if the category is active or not. | +| is_in_menu | | Boolean | True (1), if it's in the menu. False (0), if it's not in the menu. | Indicates if the category is in the menu or not. | +| is_clickable | | Boolean | True (1), if it's clickable. False (0), if it's not clickable. | Indicates if the category is clickable or not. | +| is_searchable | | Boolean | True (1), if it's searchable. False (0), if it's not searchable. | Indicates if it's a searchable category in the menu or not. | +| is_root | | Boolean | True (1), if it's root. False (0), if it's not root. | Indicates if it's a root category or not. | +| is_main | | Boolean | True (1), if it's main. False (0), if it's not main. | Indicates if it's a main category or not. | | node_order | | Integer | | Order of the category node. | | template_name | | String | | Template name of the category. | | category_image_name.{ANY_LOCALE_NAME} | | String | | Name of the image for the category in the locale. | diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md index 8aaa2ad735..468d91e5c1 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-abstract.csv.md @@ -51,7 +51,7 @@ This document describes the `product_abstract.csv` file to configure [Abstract P | new_from | | Date | | To be considered a new product from this presented date. | | new_to | | String | | To be considered a new product until this presented date. | | avalara_tax_code | | String | | [Avalara tax code](/docs/pbc/all/tax-management/{{site.version}}/base-shop/tax-feature-overview.html#avalara-system-for-automated-tax-compliance) for automated tax calculation. Add this field if Avalara is used for tax management. | - @@ -62,7 +62,7 @@ This document describes the `product_abstract.csv` file to configure [Abstract P ## Additional information -For each attribute, where N is a number starting in 1, it is mandatory to have both fields: +For each attribute, where N is a number starting in 1, it's mandatory to have both fields: * `attribute_key_N` * `value_N` diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md index 92c7de83ff..e0330a08d6 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md @@ -22,7 +22,7 @@ This document describes the `product_attribute_key.csv` file to configure [Produ | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | | --- | --- | --- | --- | --- | | attribute_key | ✓ | String | Must be unique. | Product attribute key name. | -| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it is a super attribute or not. | +| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it's a super attribute or not. | ## Import template file and content example diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md index 76dfc9c07b..d57c5d24ed 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md @@ -39,7 +39,7 @@ This file has the following dependency: [ product_abstract.csv](/docs/pbc/all/pr | description.{ANY_LOCALE_NAME}
Example value: *description.en_US* | | String | | Product description, translated in the specified locale (US for our example). | | is_searchable.{ANY_LOCALE_NAME}
Example value: *is_searchable.en_US*| | Integer | | Indicates if the product is searchable in the specified locale (US for our example). | | bundled | | String | | Products SKUs separated by comas, that are part of the bundle. | -| is_quantity_splittable | | Boolean |If it is empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | +| is_quantity_splittable | | Boolean |If it's empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | @@ -63,7 +63,7 @@ This document describes the `product_abstract.csv` file to configure [Abstract P ## Additional information -For each attribute, where N is a number starting in 1, it is mandatory to have both fields: +For each attribute, where N is a number starting in 1, it's mandatory to have both fields: * `attribute_key_N` * `value_N` diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md index 30f02d5ab3..f93c7e46c6 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-attribute-key.csv.md @@ -23,7 +23,7 @@ This document describes the `product_attribute_key.csv` file to configure [Produ | PARAMETER | REQUIRED | TYPE | REQUIREMENTS OR COMMENTS | DESCRIPTION | | --- | --- | --- | --- | --- | | attribute_key | ✓ | String | Must be unique. | Product attribute key name. | -| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it is a super attribute or not. | +| is_super | | Boolean | If empty it will be imported as *False* (0).
False = 0 = It is not a super attribute.
True = 1 = It is a super attribute. | Indicates whether it's a super attribute or not. | ## Import template file and content example diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md index 33ef252f8b..7567222cd8 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/products-data-import/import-file-details-product-concrete.csv.md @@ -40,7 +40,7 @@ This file has the following dependency: [ product_abstract.csv](/docs/pbc/all/pr | description.{ANY_LOCALE_NAME}
Example value: *description.en_US* | | String | | Product description, translated in the specified locale (US for our example). | | is_searchable.{ANY_LOCALE_NAME}
Example value: *is_searchable.en_US*| | Integer | | Indicates if the product is searchable in the specified locale (US for our example). | | bundled | | String | | Products SKUs separated by comas, that are part of the bundle. | -| is_quantity_splittable | | Boolean |If it is empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | +| is_quantity_splittable | | Boolean |If it's empty, will be *False*.
False = 0
True = 1 | Defines if the product is [splittable](/docs/pbc/all/cart-and-checkout/{{page.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) or not. | -## 6. Check ElasticSearch status +## 6. Check Elasticsearch status -Check ElasticSearch status via AWS Management Console: +Check Elasticsearch status via AWS Management Console: {% include checking-elasticsearch-status-via-aws-management-console.md %} -## 7. Check ElasticSearch indices +## 7. Check Elasticsearch indices -To check ElasticSearch indices via a CLI, do the following. +To check Elasticsearch indices via a CLI, do the following. {% include checking-elasticsearch-indices-via-a-cli.md %} diff --git a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md index aaa931c839..e7416cf314 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md @@ -1,6 +1,6 @@ --- title: Tutorial — Troubleshooting unavailable Yves or Glue -description: Troubleshoot unavailable Yves or Glue in Spryker by checking logs, ECS services, Redis, and ElasticSearch to identify and resolve issues quickly. +description: Troubleshoot unavailable Yves or Glue in Spryker by checking logs, ECS services, Redis, and Elasticsearch to identify and resolve issues quickly. template: troubleshooting-guide-template last_updated: Oct 6, 2023 redirect_from: @@ -8,7 +8,7 @@ redirect_from: --- Yves or Glue didn't restart after a deployment or you can't access it. -To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is front end > Yves or Glue > ElastiCache, ElasticSearch, and Zed. +To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is front end > Yves or Glue > ElastiCache, Elasticsearch, and Zed. ![information flow diagram](https://spryker.s3.eu-central-1.amazonaws.com/cloud-docs/_includes/informatin-flow-diagram.png) @@ -43,14 +43,14 @@ Check Redis system information via a CLI as follows. {% include checking-redis-system-information-via-a-cli.md %} -## 6. Check ElasticSearch status +## 6. Check Elasticsearch status -Check ElasticSearch status via AWS Management Console: +Check Elasticsearch status via AWS Management Console: {% include checking-elasticsearch-status-via-aws-management-console.md %} -## 7. Check ElasticSearch indices +## 7. Check Elasticsearch indices -Check ElasticSearch status via a CLI: +Check Elasticsearch status via a CLI: {% include checking-elasticsearch-indices-via-a-cli.md %} diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md index 5a0607ffa4..10915f2759 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md @@ -29,7 +29,7 @@ related: link: docs/scos/dev/back-end-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.html --- -Sometimes it's needed to manually [synchronize or re-syncrhonize](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronize-repeated-export.html#published-data-re-generation) the published model data with Redis or ElasticSearch. To do that, you need to implement a synchronization plugin. +Sometimes it's needed to manually [synchronize or re-syncrhonize](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronize-repeated-export.html#published-data-re-generation) the published model data with Redis or Elasticsearch. To do that, you need to implement a synchronization plugin. Follow these steps to implement and register a synchronization plugin. @@ -115,7 +115,7 @@ The method descriptions: * `HelloWorldSynchronizationDataRepositoryPlugin::getResourceName()`—defines a resource name of the storage or search module for key generation. * `HelloWorldSynchronizationDataRepositoryPlugin::hasStore()`—defines if the entity implements a multi-store concept. * `HelloWorldSynchronizationDataRepositoryPlugin::getData()`—retrieves a collection of sync transfers based on the provided offset and limit. -* `HelloWorldSynchronizationDataRepositoryPlugin::getParams()`—defines additional sync parameters for Redis or ElasticSearch. +* `HelloWorldSynchronizationDataRepositoryPlugin::getParams()`—defines additional sync parameters for Redis or Elasticsearch. * `HelloWorldSynchronizationDataRepositoryPlugin::getQueueName()`—defines a queue name for synchonization. * `HelloWorldSynchronizationDataRepositoryPlugin::getSynchronizationQueuePoolName()`—defines the name of the synchronization queue pool for broadcasting messages. diff --git a/docs/dg/dev/development-getting-started-guide.md b/docs/dg/dev/development-getting-started-guide.md index f8c38b066b..ee96b09143 100644 --- a/docs/dg/dev/development-getting-started-guide.md +++ b/docs/dg/dev/development-getting-started-guide.md @@ -85,7 +85,7 @@ To learn about the module versioning approach in Spryker, see [Semantic Versioni 1. Define how to manage the settings in the configuration files with [Configuration management](/docs/dg/dev/backend-development/data-manipulation/configuration-management.html). 2. [Configure services](/docs/dg/dev/integrate-and-configure/configure-services.html). -3. [Configure ElasticSearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html). +3. [Configure Elasticsearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html). 4. [Configure queue](/docs/dg/dev/backend-development/data-manipulation/queue/queue.html). 5. [Configure stores](/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.html#configure-stores). 6. [Set up cronjobs](/docs/dg/dev/backend-development/cronjobs/cronjobs.html). diff --git a/docs/dg/dev/integrate-and-configure/configure-services.md b/docs/dg/dev/integrate-and-configure/configure-services.md index c246e5c96e..3c5cc9ca26 100644 --- a/docs/dg/dev/integrate-and-configure/configure-services.md +++ b/docs/dg/dev/integrate-and-configure/configure-services.md @@ -218,18 +218,18 @@ docker/sdk clean-data docker/sdk up --build --data ``` -## ElasticSearch +## Elasticsearch [Elasticsearch](https://www.elastic.co/elasticsearch/) is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. For more information, see the following documents: * [Configure Elasticsearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html)—describes ElastciSearch configuration in Spryker. -* [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)—provides detailed information about ElasticSearch. +* [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)—provides detailed information about Elasticsearch. -### Configure ElasticSearch +### Configure Elasticsearch -In `deploy.*.yml`, adjust the `services` section to open the port used for accessing ElasticSearch: +In `deploy.*.yml`, adjust the `services` section to open the port used for accessing Elasticsearch: ```yaml services: search: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md index d4ae6067cc..d988903b5f 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md @@ -9,7 +9,7 @@ redirect_from: Spryker comes pre-configured with the following services by default: * RabbitMQ -* ElasticSearch +* Elasticsearch * Redis * MariaDB * Jenkins diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index 85443026ba..7592776347 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index efb4eaf9e9..cf40de9ac9 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index efb4eaf9e9..cf40de9ac9 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md index f1a495ce04..ae6f4924a3 100644 --- a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md +++ b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md @@ -230,9 +230,9 @@ class SearchRouter implements SearchRouterInterface } ``` -If you want to use ElasticSearch for specific cases, you have to create a plugin on the project level +If you want to use Elasticsearch for specific cases, you have to create a plugin on the project level -**ElasticSearchHandlerPlugin** +**ElasticsearchHandlerPlugin** ```php Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2d..df1152adb0 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -29,7 +29,7 @@ Price import flow: When enabling Spryker to handle such a number of prices, the following challenges occur: 1. 25,000,000 prices are imported in two separate price dimensions. -2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `ElasticSearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. +2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `Elasticsearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. 3. Overloaded product abstract search documents cause issues with memory limit and slow down [Publish and Synchronization](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The average document size is bigger than 1 MB. 4. When more than 100 product abstract search documents are processed at a time, the payload gets above 100 MB, and ES rejects queries. [AWS native service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html) does not allow changing this limit. @@ -94,7 +94,7 @@ In AWS, the `http.max_content_length` ES limit defines the maximum payload size The evaluated solutions are as follows: 1. ES join field type. - This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [ElasticSearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case. + This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [Elasticsearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case.
Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2d..df1152adb0 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -29,7 +29,7 @@ Price import flow: When enabling Spryker to handle such a number of prices, the following challenges occur: 1. 25,000,000 prices are imported in two separate price dimensions. -2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `ElasticSearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. +2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `Elasticsearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. 3. Overloaded product abstract search documents cause issues with memory limit and slow down [Publish and Synchronization](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The average document size is bigger than 1 MB. 4. When more than 100 product abstract search documents are processed at a time, the payload gets above 100 MB, and ES rejects queries. [AWS native service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html) does not allow changing this limit. @@ -94,7 +94,7 @@ In AWS, the `http.max_content_length` ES limit defines the maximum payload size The evaluated solutions are as follows: 1. ES join field type. - This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [ElasticSearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case. + This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [Elasticsearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case.
Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index 03e59d36ec..c0f18c7161 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -188,25 +188,30 @@ These classes provide some information from mapping, such as fields and metadata If you change mapping and run the installer, autogenerated classes change accordingly. -### Index update limitations +### Updating indexes with existing data -ElasticSearch is limited when it comes to updating indexes that contain data. If any issues occur, the errors provided by ElasticSearch are confusing. +Elasticsearch is limited when it comes to updating indexes that contain data. If any issues occur, the errors provided by Elasticsearch are confusing. -To make sure an index is correct, drop, create, and sync data into it. +To make sure an index is correct, do the following: + +1. Drop and recreate data: ```bash APPLICATION_STORE=DE console search:index:delete APPLICATION_STORE=DE console search:setup:sources ``` -If you had *no changes* to the searchable data during the previous commands execution, execute: +2. If the previous command introduced or may have introduced any changes to searchable data, rewrite the data: + ```bash -APPLICATION_STORE=DE console sync:data +APPLICATION_STORE=DE console publish:trigger-events ``` -If you are not sure or you actually may have *any changes* to the searchable data, execute: +3. Sync the data to Elasticsearch: + + ```bash -APPLICATION_STORE=DE console publish:trigger-events +APPLICATION_STORE=DE console sync:data ``` -Please contact our support or community to get more specific help. +For help with more specific cases, engage with [Spryker community](https://commercequest.space/) or [contact support](https://spryker.force.com/support/s/). From 90e1554d8bc462853bfee1b4626b0d8e5ed2ac9f Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 3 Jan 2025 18:06:33 +0200 Subject: [PATCH 38/46] plugin --- .../installing-and-configuring-the-fact-finder-ng-api.md | 8 ++++---- .../installing-and-configuring-the-fact-finder-ng-api.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md index ae6f4924a3..154e744867 100644 --- a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md +++ b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md @@ -232,7 +232,7 @@ class SearchRouter implements SearchRouterInterface If you want to use Elasticsearch for specific cases, you have to create a plugin on the project level -**ElasticsearchHandlerPlugin** +**ElasticSearchHandlerPlugin** ```php Date: Sat, 4 Jan 2025 12:21:29 +0200 Subject: [PATCH 39/46] Update adding-stores-in-a-multi-database-setup.md --- ...adding-stores-in-a-multi-database-setup.md | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md index e3654a9360..376aa276fb 100644 --- a/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/adding-stores-in-a-multi-database-setup.md @@ -7,19 +7,19 @@ redirect_from: - /docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.html --- -Setting up a new store in an existing multi-database environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This document describes how to launch a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. +Setting up a new store in an existing multi-database environment requires a detailed plan to make sure that the data and operations of existing stores remain unaffected. This document describes how to seamlessly launch a new store within a region that already hosts other stores. {% info_block warningBox %} -This guide can be used for projects that are managing stores programmatically through code. If you're using the Dynamic Multistore feature to manage your stores in the Back Office, refer to [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html) +This guide can be used for projects that are managing stores programmatically through code. If you're using the Dynamic Multistore feature to manage stores in the Back Office, refer to [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html). {% endinfo_block %} -## Initial planning and best practices +## Planning and best practices -This section describes the planning stage of launching a store. +This section describes how to properly prepare for making changes related to your stores setup. ### Clear roadmap -Create a long-term plan, detailing all the stores you want to add in future. This can affect database (DB) structure, configuration, and the choice of rollout approach, making sure it's cost-efficient over time. +Create a long-term plan, detailing all the stores you want to add in future. This can affect database (DB) structure, configuration, and the choice of rollout approach, making sure it's cost-efficient over time. ### Backup strategy @@ -28,19 +28,20 @@ A backup plan needs to be ready in case of issues during deployment. Apart from ### Environment preparation -To prepare production and non-production environments for a store rollout, make sure there's no additional functionality to be released on top or parallel development. Teams and stakeholders need to be prepared and aware of the procedure. +To prepare production and non-production environments for a store rollout, make sure there's no parallel development and no additional functionality to be released on top. Teams and stakeholders need to be prepared and aware of the procedure. + +### Repeatable process -### Repeatability If you're planning to release more stores in future, make the process easily repeatable. This includes creating detailed documentation, release procedure, and tickets, such as epics, stories, or tasks, in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. ## Store rollout considerations -This section describes parts of the application you need to consider when preparing a rollout plan. +This section describes parts of the application you need to take into account when preparing a rollout plan. ### Integrations and third-party systems -* Review and adjust all third-party integrations to ensure they work with the new store setup. This mainly concerns data and it’s isolation across virtual DBs. Teams working with both sides of the system, such as backend, frontend, merchant portal and APIs, should have access to all the needed data. -* Integrations, such as single sign-on, payment gateways, or inventory systems, may require updates. Teams responsible for those systems should be available and ready to do needed changes on time. +* Review and adjust all third-party integrations to ensure they work with the new store setup. This mainly concerns data and its isolation across virtual DBs. Teams working with both sides of the system, such as backend, frontend, merchant portal and APIs, should have access to all the needed data. +* Integrations, such as single sign-on, payment gateways, or inventory systems, may require updates. Teams responsible for those systems should be available and ready to do the needed changes on time. ### Data import * Handle the data import process carefully, breaking it down into specific tasks such as configuring DBs and adjusting the data import setup to work with the new store. @@ -66,9 +67,9 @@ Reconsider the prior topics relative to your frontend. For example–frontend se ## Releasing a store -This section provides detailed guidelines for releasing stores. +This section provides detailed guidelines for releasing a store. -For general instructions for defining new DBs, connecting them with new stores, and adding configuration, follow [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-DB-logic.html). +For general instructions for defining new DBs, connecting them with new stores, and adding configuration, follow [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html). ### 1. Local setup @@ -77,14 +78,14 @@ This section describes how to add the configuration and deployment recipes for a #### Add the configuration for the new store -* Using [Add and remove DBs of stores](/docs/ca/dev/multi-store-setups/add-and-remove-DBs-of-stores.html), define the following new entities in your deploy file: +* Using [Add and remove DBs of stores](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html), define the following new entities in your deploy file: | ENTITY | SECTION | | Database | `regions..services.DBs` | | Store | `regions..stores`| | Domains | `groups..applications` | -* In `stores.php`, add the configuration for the new store. For instructions, see [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-DB-logic.html). +* In `stores.php`, add the configuration for the new store. For instructions, see [Integrate multi-DB logic](/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.html). * Prepare data import configurations and data files for the new store. * Adjust the local environment setup as needed, including configurations and environment variables. Examples: * Frontend router configuration @@ -129,7 +130,7 @@ sections: ... ``` -A minimal recipe to remove a store: +A minimal recipe for removing a store: **config/install/EU/delete-store.yml** ``` env: @@ -165,17 +166,17 @@ SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/del ... ``` -More information on this is provided in the following sections. +The following sections describe how custom recipes are used in a store rollout. ### 2. Staging setup -This section describes how to roll out a new store in a staging environment. +This section describes how to roll out a store in a staging environment. This rollout is used to test the new store and how it affects the existing stores. #### Staging environment configuration Add the configuration for the new store to the staging environment’s configuration. -To initialize the DB, run a destructive deployment for the new store. To not affect existing stores, in the `image.environment` section of the deployment file, define only the new store in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. In the following example, new PL and AT stores are introduced: +To initialize the new store's DB, run a destructive deployment. To not affect existing stores, in the `image.environment` section of the deployment file, define only the new store in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. In the following example, new PL and AT stores are introduced: ```yml ... @@ -183,15 +184,16 @@ SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive -- ... ``` -You can also use a custom recipe as described in [Setting up additional deployment recipes](#setting-up-additional-deployment-recipes). +We also recommend using a custom recipe for this deployment as described in [Setting up additional deployment recipes](#setting-up-additional-deployment-recipes). + +#### Apply the configuration +1. Open a support request and explain the expected changes, that is that stores need to be introduced. Attach the deploy file. If the needed configuration is in a specific repository branch, reference it in the ticket and make sure the support team has access to your code base. +2. Run the destructive deployment for the stores that have been configured in the support request. -#### Support requests -* Open a support request to apply the new configuration to the environment. Attach the deploy file and shortly explain expected changes, that is the stores that need to be introduced. If the necessary configuration is in a specific repository branch, reference it in the ticket and make sure the support team has access to your code base. -* Run the destructive deployment, assuring the right store(s) is specified. +#### Deployment execution -#### Deployment Execution -* Deploy the new store in the staging environment. -* Test the new store thoroughly to confirm it operates correctly without affecting other stores, including all the external integrations in the staging mode. +1. Deploy the new store in the staging environment. +2. Thoroughly test the new store to confirm it operates correctly without affecting other stores, including all the external integrations in the staging mode. ### 3. Production setup @@ -202,12 +204,14 @@ This section describes how to roll out a new store in a production environment. Prepare the production environment’s configuration similarly to the staging setup. -#### Support and deployment +#### Apply the configuration + * Open a support request to deploy the new store configuration to production. * Execute the deployment, closely monitoring the process to catch any issues early. #### Post-deployment -* After deployment, verify that the new store is fully operational and that no data or services for existing stores were affected. + +* Verify that the new store is fully operational and that no data or services for existing stores have been affected. * If you updated an existing installation recipe during environment configuration, revert it back to its original state. ## Releasing multiple stores in a row @@ -220,6 +224,8 @@ This lets you avoid repeating some of the steps for multiple stores. ### Release of the first store +This section describes how to release the first store. It includes the preparation for releasing subsequent stores. + #### 1. Local setup Prepare and test the configuration for *all* the stores you want to release. @@ -227,7 +233,6 @@ Prepare and test the configuration for *all* the stores you want to release. #### 2. Staging setup 1. Prepare a staging deploy file, containing all the stores you want to release. 2. Open a support request an describe the end result. Attach the deploy file and optionally provide a rollout schedule for all the stores. - 3. Save the configuration you've prepared separately. 4. Update the configuration to contain only the first store you want to release. 5. Run a destructive deployment. From c00d58e712ce6972a2d9e0181785a5b63aa30ab1 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 12:28:03 +0200 Subject: [PATCH 40/46] its --- .../acp-apps-development/develop-an-app/app-manifest.md | 2 +- .../database-schema-guide/201811.0/catalog-schema.md | 2 +- .../database-schema-guide/201903.0/catalog-schema.md | 2 +- .../database-schema-guide/201907.0/catalog-schema.md | 2 +- .../database-schema-guide/202001.0/catalog-schema.md | 2 +- .../database-schema-guide/202005.0/catalog-schema.md | 2 +- .../database-schema-guide/202009.0/catalog-schema.md | 2 +- .../database-schema-guide/202108.0/catalog-schema.md | 2 +- .../product-measurement-units-response-attributes.md | 2 +- .../202404.0/sales-units-response-attributes.md | 4 ++-- .../product-measurement-units-response-attributes.md | 2 +- .../202410.0/sales-units-response-attributes.md | 4 ++-- .../202307.0/install-the-approval-process-feature.md | 2 +- .../install-the-availability-notification-feature.md | 2 +- .../install-the-merchant-custom-prices-feature.md | 2 +- .../202307.0/install-the-packaging-units-feature.md | 6 +++--- .../install-the-product-measurement-unit-feature.md | 8 ++++---- .../202307.0/install-the-shopping-lists-feature.md | 2 +- .../202311.0/install-the-approval-process-feature.md | 2 +- .../install-the-availability-notification-feature.md | 2 +- .../install-the-merchant-custom-prices-feature.md | 2 +- .../202311.0/install-the-packaging-units-feature.md | 6 +++--- .../install-the-product-measurement-unit-feature.md | 8 ++++---- .../202311.0/install-the-service-points-feature.md | 2 +- .../202311.0/install-the-shopping-lists-feature.md | 2 +- .../202404.0/install-the-approval-process-feature.md | 2 +- .../install-the-availability-notification-feature.md | 2 +- .../install-the-merchant-b2b-contract-requests-feature.md | 4 ++-- .../install-the-merchant-b2b-contracts-feature.md | 2 +- .../install-the-merchant-custom-prices-feature.md | 2 +- .../202404.0/install-the-packaging-units-feature.md | 6 +++--- .../install-the-product-measurement-unit-feature.md | 8 ++++---- .../202404.0/install-the-service-points-feature.md | 2 +- .../202404.0/install-the-shopping-lists-feature.md | 4 ++-- .../202410.0/install-the-approval-process-feature.md | 2 +- .../install-the-availability-notification-feature.md | 2 +- .../install-the-merchant-b2b-contract-requests-feature.md | 4 ++-- .../install-the-merchant-b2b-contracts-feature.md | 2 +- .../install-the-merchant-custom-prices-feature.md | 2 +- .../202410.0/install-the-packaging-units-feature.md | 6 +++--- .../install-the-product-measurement-unit-feature.md | 8 ++++---- .../202410.0/install-the-service-points-feature.md | 2 +- .../202410.0/install-the-shopping-lists-feature.md | 4 ++-- docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md | 2 +- docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md | 2 +- docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md | 2 +- .../approval-process-feature-overview.md | 2 +- .../approval-process-feature-overview.md | 2 +- .../approval-process-feature-overview.md | 2 +- .../business-units-overview.md | 4 ++-- .../company-accounts-overview.md | 4 ++-- .../company-units/create-company-units.md | 2 +- .../manage-in-the-back-office/manage-companies.md | 2 +- .../company-account/glue-api-retrieve-business-units.md | 4 ++-- .../business-units-overview.md | 4 ++-- .../company-accounts-overview.md | 4 ++-- .../company-units/create-company-units.md | 2 +- .../manage-in-the-back-office/manage-companies.md | 2 +- .../company-account/glue-api-retrieve-business-units.md | 2 +- .../business-units-overview.md | 4 ++-- .../company-accounts-overview.md | 4 ++-- .../company-units/create-company-units.md | 2 +- .../manage-in-the-back-office/manage-companies.md | 2 +- .../company-account/glue-api-retrieve-business-units.md | 2 +- .../measurement-units-feature-module-relations.md | 4 ++-- .../measurement-units-feature-overview.md | 8 ++++---- .../feature-overviews/packaging-units-feature-overview.md | 4 ++-- .../install-the-measurement-units-feature.md | 8 ++++---- .../concrete-products/glue-api-retrieve-sales-units.md | 4 ++-- .../glue-api-retrieve-measurement-units.md | 2 +- .../measurement-units-feature-module-relations.md | 4 ++-- .../measurement-units-feature-overview.md | 8 ++++---- .../feature-overviews/packaging-units-feature-overview.md | 4 ++-- .../install-the-measurement-units-feature.md | 8 ++++---- .../measurement-units-feature-module-relations.md | 4 ++-- .../measurement-units-feature-overview.md | 8 ++++---- .../feature-overviews/packaging-units-feature-overview.md | 4 ++-- .../install-the-measurement-units-feature.md | 8 ++++---- 78 files changed, 136 insertions(+), 136 deletions(-) diff --git a/_drafts/acp-apps-development/develop-an-app/app-manifest.md b/_drafts/acp-apps-development/develop-an-app/app-manifest.md index dd6838aa82..3d3e42a956 100644 --- a/_drafts/acp-apps-development/develop-an-app/app-manifest.md +++ b/_drafts/acp-apps-development/develop-an-app/app-manifest.md @@ -119,7 +119,7 @@ For the manifest, make sure to follow these conditions: |description | Full description of the app. New line symbols and HTML tags are not allowed. | "description": "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." | |developedBy | Optional. Provides information about who developed the App. | "developedBy": "Spryker Systems GmbH" | |url | URL to a homepage of the application provider (not visible in the AppCatalog). | "url": "https://www.payone.com/DE-en" | -|isAvailable | Shows if the application is currently available. Possible values:
  • false — the application is not available, it'sn't possible to connect and configure it.
  • true — the application is available, it’s possible to connect, configure, and use it.
| "isAvailable": true | +|isAvailable | Shows if the application is currently available. Possible values:
  • false — the application is not available, it's not possible to connect and configure it.
  • true — the application is available, it’s possible to connect, configure, and use it.
| "isAvailable": true | |businessModels | An array of suite types that are compatible with the application. Possible values:
  • B2C
  • B2B
  • B2C_MARKETPLACE
  • B2B_MARKETPLACE
| See *businessModels example* under this table. | |categories | An array of categories that the application belongs to. Possible values:
  • BUSINESS_INTELLIGENCE
  • CONSENT_MANAGEMENT
  • LOYALTY_MANAGEMENT
  • PAYMENT
  • PRODUCT_INFORMATION_MANAGEMENT
  • SEARCH
  • TAX
  • USER_GENERATED_CONTENT
| See *categories example* under this table. | |pages | Adds additional content to the application detail page. This part contains an object with a page type and its blocks.
Possible page types (object keys):
  • Overview
  • Legal
Each page can contain no or multiple blocks. Each block should be specified by an object with the following keys:
  • title — header of the block;
  • type — the way the data is displayed. Possible values:
    • list
    • text
  • data — information that is displayed inside the block. Can be a string, if *type=text*, or an array of strings if *type=list*.
| See *pages example* under this table. | diff --git a/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md index afc9d174fd..edd9e88988 100644 --- a/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201811.0/catalog-schema.md @@ -193,7 +193,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md index 3046eeeefd..29ab746cbe 100644 --- a/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201903.0/catalog-schema.md @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md index 296fc9d681..92d71cba07 100644 --- a/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/201907.0/catalog-schema.md @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md index de8b2b80a5..4ce6f5a699 100644 --- a/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202001.0/catalog-schema.md @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md index 808b00c99f..678abdbd36 100644 --- a/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202005.0/catalog-schema.md @@ -191,7 +191,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md index e4d41b8aa3..3351227479 100644 --- a/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202009.0/catalog-schema.md @@ -192,7 +192,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md b/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md index 43df3fbddb..8cc07b6e01 100644 --- a/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md +++ b/_drafts/drafts-dev/database-schema-guide/202108.0/catalog-schema.md @@ -193,7 +193,7 @@ Structure: ### Measurement Units {% info_block infoBox %} -Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit's the base one that we use for all internal calculations. +Products can be sold in different **Measurement Units**. For instance, apples can be sold in "Item" and "Kilogram" amounts. Each product variant can be sold in one or multiple different units but only one unit is the base one that we use for all internal calculations. {% endinfo_block %} ![Measurement units](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Database+Schema+Guide/Catalog+Schema/measurement-units.png) diff --git a/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md index b1f3cab7da..f1f9c4aea0 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/product-measurement-units-response-attributes.md @@ -1,5 +1,5 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-measurement-units | name | string | Name of the product measurement unit. | -| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | +| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | | product-measurement-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md index 15cd818c0b..8cc43153b2 100644 --- a/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202404.0/sales-units-response-attributes.md @@ -2,6 +2,6 @@ | --- | --- | --- | --- | | sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | sales-units | precision | integer | Ratio between a sales unit and a base unit. | -| sales-units | is displayed | boolean | Defines if the sales unit's displayed on the product details page. | -| sales-units | is default | boolean | Defines if the sales unit's selected by default on the product details page. | +| sales-units | is displayed | boolean | Defines if the sales unit is displayed on the product details page. | +| sales-units | is default | boolean | Defines if the sales unit is selected by default on the product details page. | | sales-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md index b1f3cab7da..f1f9c4aea0 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/product-measurement-units-response-attributes.md @@ -1,5 +1,5 @@ | RESOURCE | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | --- | | product-measurement-units | name | string | Name of the product measurement unit. | -| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | +| product-measurement-units | defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | | product-measurement-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md b/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md index 15cd818c0b..8cc43153b2 100644 --- a/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md +++ b/_includes/pbc/all/glue-api-guides/202410.0/sales-units-response-attributes.md @@ -2,6 +2,6 @@ | --- | --- | --- | --- | | sales-units | conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | sales-units | precision | integer | Ratio between a sales unit and a base unit. | -| sales-units | is displayed | boolean | Defines if the sales unit's displayed on the product details page. | -| sales-units | is default | boolean | Defines if the sales unit's selected by default on the product details page. | +| sales-units | is displayed | boolean | Defines if the sales unit is displayed on the product details page. | +| sales-units | is default | boolean | Defines if the sales unit is selected by default on the product details page. | | sales-units | measurementUnitCode | string | Code of the measurement unit. | diff --git a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md index a15fbd28ec..579ad7b6eb 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US diff --git a/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md index d64c958051..755cd86a70 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md index b910894bb1..2584aa3c87 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% info_block warningBox "Verification" %} -Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit is assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md index 235a4c12a9..1c383df777 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-packaging-units-feature.md @@ -939,13 +939,13 @@ Add an item with packaging units to cart and check if the following statements a * A packaging unit can be found for an item. * The `amount`, `amountSalesUnit`, `amountLeadProduct` and `ProductPackagingUnit` fields in the `ItemTransfer` properties get fully populated. * The amount restriction works as expected. -* Availability is validated respectfully according to your lead product's and packaging unit's configuration. +* Availability is validated respectfully according to your lead product's and packaging unit is configuration. * Item grouping in cart works as expected. * Variable amount changes affect unit prices in the `ItemTransfer` properties. * The quantity and amount are merged correctly when the group key matches. Go through the checkout workflow, make an order and check if the following statements are true: -* Check if the stock is modified respectfully according to your lead product's and packaging unit's configuration. +* Check if the stock is modified respectfully according to your lead product's and packaging unit is configuration. * Check if the following fields in the `spy_sales_order_item` table are saved: * `amount` * `amount_sku` @@ -956,7 +956,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit's displayed. +- The correct sales unit is displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md index e141d4e44e..88112f3806 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md index 0872a5293e..5252dbdbb1 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-shopping-lists-feature.md @@ -1138,7 +1138,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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'st kein Produkt auf deiner Einkaufsliste.,de_DE +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 diff --git a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md index a15fbd28ec..579ad7b6eb 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US diff --git a/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md index d64c958051..755cd86a70 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md index b910894bb1..2584aa3c87 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% info_block warningBox "Verification" %} -Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit is assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md index 3fb3021400..6f00aab6c7 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-packaging-units-feature.md @@ -934,13 +934,13 @@ Add an item with packaging units to cart and check if the following statements a * A packaging unit can be found for an item. * The `amount`, `amountSalesUnit`, `amountLeadProduct` and `ProductPackagingUnit` fields in the `ItemTransfer` properties get fully populated. * The amount restriction works as expected. -* Availability is validated respectfully according to your lead product's and packaging unit's configuration. +* Availability is validated respectfully according to your lead product's and packaging unit is configuration. * Item grouping in the cart works as expected. * Variable amount changes affect unit prices in the `ItemTransfer` properties. * The quantity and amount are merged correctly when the group key matches. Go through the checkout workflow, make an order and check if the following statements are true: -* Check if the stock is modified respectfully according to your lead product's and packaging unit's configuration. +* Check if the stock is modified respectfully according to your lead product's and packaging unit is configuration. * Check if the following fields in the `spy_sales_order_item` table are saved: * `amount` * `amount_sku` @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit's displayed. +- The correct sales unit is displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md index e141d4e44e..88112f3806 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md index 4a7d2a47b5..84aedff44c 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US diff --git a/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md index 9c97b7d84b..2eabd441a0 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-shopping-lists-feature.md @@ -1138,7 +1138,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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'st kein Produkt auf deiner Einkaufsliste.,de_DE +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 diff --git a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md index a15fbd28ec..579ad7b6eb 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US diff --git a/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md index d64c958051..755cd86a70 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md index f68a55814c..10670f8161 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contract-requests-feature.md @@ -171,7 +171,7 @@ Enable the following behaviors by registering the plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------------------------------------------------------------------------------| -| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit's deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | +| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | | MerchantRelationRequestCompanyUserPreDeletePlugin | When a company user is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyUser | | MerchantRelationRequestStatusChangeMailTypeBuilderPlugin | Builds `MailTransfer` with the data for the merchant relation request status change email. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\Mail | | StatusChangeCompanyUserNotificationMerchantRelationshipRequestPostUpdatePlugin | Sends a status change notification email to the company user who initiated the request to the merchant. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\MerchantRelationRequest | @@ -204,7 +204,7 @@ class CompanyBusinessUnitDependencyProvider extends SprykerCompanyBusinessUnitDe {% info_block warningBox "Verification" %} -Make sure that, when a company business unit's deleted, all related merchant relation requests are deleted too. +Make sure that, when a company business unit is deleted, all related merchant relation requests are deleted too. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contracts-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contracts-feature.md index 9cd7512ca0..ad3265daef 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contracts-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-merchant-b2b-contracts-feature.md @@ -316,7 +316,7 @@ class MerchantRelationshipDependencyProvider extends SprykerMerchantRelationship {% info_block warningBox "Verification" %} -Make sure that, when you delete a merchant relationship, a notification email is sent to the email address of the company business unit's owner. +Make sure that, when you delete a merchant relationship, a notification email is sent to the email address of the company business unit is owner. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md index b910894bb1..2584aa3c87 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% info_block warningBox "Verification" %} -Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit is assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md index 3fb3021400..6f00aab6c7 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-packaging-units-feature.md @@ -934,13 +934,13 @@ Add an item with packaging units to cart and check if the following statements a * A packaging unit can be found for an item. * The `amount`, `amountSalesUnit`, `amountLeadProduct` and `ProductPackagingUnit` fields in the `ItemTransfer` properties get fully populated. * The amount restriction works as expected. -* Availability is validated respectfully according to your lead product's and packaging unit's configuration. +* Availability is validated respectfully according to your lead product's and packaging unit is configuration. * Item grouping in the cart works as expected. * Variable amount changes affect unit prices in the `ItemTransfer` properties. * The quantity and amount are merged correctly when the group key matches. Go through the checkout workflow, make an order and check if the following statements are true: -* Check if the stock is modified respectfully according to your lead product's and packaging unit's configuration. +* Check if the stock is modified respectfully according to your lead product's and packaging unit is configuration. * Check if the following fields in the `spy_sales_order_item` table are saved: * `amount` * `amount_sku` @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit's displayed. +- The correct sales unit is displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md index e141d4e44e..88112f3806 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md index 4a7d2a47b5..84aedff44c 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US diff --git a/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md index 52ba385bd2..eea107c0d0 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-shopping-lists-feature.md @@ -705,7 +705,7 @@ Workstations,spryker_systems_Berlin,READ_ONLY |-----------------------|----------|-----------|--------------------|-----------------------------------------------------------------------------------------| | shopping_list_key | ✓ | string | Laptops | Defines a shopping list to assign to a business unit. | | business_unit_key | ✓ | string | spryker_systems_HR | Defines a business unit to share a shopping list with. | -| permission_group_name | ✓ | integer | FULL_ACCESS | Defines a business unit's permissions to access a shopping list. | +| permission_group_name | ✓ | integer | FULL_ACCESS | Defines a business unit is permissions to access a shopping list. | 2. Register the following plugin to enable data import: @@ -1232,7 +1232,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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'st kein Produkt auf deiner Einkaufsliste.,de_DE +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 diff --git a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md index a15fbd28ec..579ad7b6eb 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md @@ -144,7 +144,7 @@ quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund eine quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US -quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit'st.",de_DE +quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE quote_approval.create.quote_already_approved,"This Cart was already approved.",en_US quote_approval.create.quote_already_approved,"Dieser Einkaufswagen wurde schon zur Genehmigung gesendet.",de_DE quote_approval.create.quote_already_declined,"This Cart was already declined.",en_US diff --git a/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md index d64c958051..755cd86a70 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-availability-notification-feature.md @@ -399,7 +399,7 @@ availability_notification_subscription.mail.notification.subject,"%name% is avai availability_notification_subscription.mail.notification.subject,"%name% ist wieder verfügbar!",de_DE availability_notification_subscription.mail.notification.head,"%name% is available again!",en_US availability_notification_subscription.mail.notification.head,"%name% ist wieder verfügbar",de_DE -availability_notification_subscription.mail.notification.body,"The wait's over, you can not add this product inside your cart.",en_US +availability_notification_subscription.mail.notification.body,"The wait is over, you can not add this product inside your cart.",en_US availability_notification_subscription.mail.notification.body,"Das Warten hat ein Ende, Sie können dieses Produkt nicht in Ihren Warenkorb legen.",de_DE availability_notification_subscription.mail.copyright,"Copyright © current year company name, All rights reserved.

",en_US availability_notification_subscription.mail.copyright,"Copyright © Name des aktuellen Jahres, Alle Rechte vorbehalten.

",de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md index f68a55814c..10670f8161 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contract-requests-feature.md @@ -171,7 +171,7 @@ Enable the following behaviors by registering the plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------------------------------------------------------------------------------| -| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit's deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | +| MerchantRelationRequestCompanyBusinessUnitPreDeletePlugin | When a company business unit is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyBusinessUnit | | MerchantRelationRequestCompanyUserPreDeletePlugin | When a company user is deleted, deletes merchant relation request entities and the related merchant relation request to company business unit entities. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\CompanyUser | | MerchantRelationRequestStatusChangeMailTypeBuilderPlugin | Builds `MailTransfer` with the data for the merchant relation request status change email. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\Mail | | StatusChangeCompanyUserNotificationMerchantRelationshipRequestPostUpdatePlugin | Sends a status change notification email to the company user who initiated the request to the merchant. | | Spryker\Zed\MerchantRelationRequest\Communication\Plugin\MerchantRelationRequest | @@ -204,7 +204,7 @@ class CompanyBusinessUnitDependencyProvider extends SprykerCompanyBusinessUnitDe {% info_block warningBox "Verification" %} -Make sure that, when a company business unit's deleted, all related merchant relation requests are deleted too. +Make sure that, when a company business unit is deleted, all related merchant relation requests are deleted too. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contracts-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contracts-feature.md index 9cd7512ca0..ad3265daef 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contracts-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-merchant-b2b-contracts-feature.md @@ -316,7 +316,7 @@ class MerchantRelationshipDependencyProvider extends SprykerMerchantRelationship {% info_block warningBox "Verification" %} -Make sure that, when you delete a merchant relationship, a notification email is sent to the email address of the company business unit's owner. +Make sure that, when you delete a merchant relationship, a notification email is sent to the email address of the company business unit is owner. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md index b910894bb1..2584aa3c87 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-merchant-custom-prices-feature.md @@ -493,7 +493,7 @@ Make sure that there is the "Merchant Price Dimension" drop-down in the Back Off {% info_block warningBox "Verification" %} -Make sure that a logged in user, who belongs to a company business unit and that business unit's assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit's assigned to multiple Merchant Relationships with different prices for the same product. +Make sure that a logged in user, who belongs to a company business unit and that business unit is assigned to some Merchant Relationship with specified prices, sees Merchant Relationship prices on the Catalog and on the Product page.
Make sure that this user sees MIN price if their business unit is assigned to multiple Merchant Relationships with different prices for the same product. {% endinfo_block %} ### Ensure compatibility diff --git a/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md index 3fb3021400..6f00aab6c7 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-packaging-units-feature.md @@ -934,13 +934,13 @@ Add an item with packaging units to cart and check if the following statements a * A packaging unit can be found for an item. * The `amount`, `amountSalesUnit`, `amountLeadProduct` and `ProductPackagingUnit` fields in the `ItemTransfer` properties get fully populated. * The amount restriction works as expected. -* Availability is validated respectfully according to your lead product's and packaging unit's configuration. +* Availability is validated respectfully according to your lead product's and packaging unit is configuration. * Item grouping in the cart works as expected. * Variable amount changes affect unit prices in the `ItemTransfer` properties. * The quantity and amount are merged correctly when the group key matches. Go through the checkout workflow, make an order and check if the following statements are true: -* Check if the stock is modified respectfully according to your lead product's and packaging unit's configuration. +* Check if the stock is modified respectfully according to your lead product's and packaging unit is configuration. * Check if the following fields in the `spy_sales_order_item` table are saved: * `amount` * `amount_sku` @@ -951,7 +951,7 @@ Go through the checkout workflow, make an order and check if the following state * `amount_base_measurement_unit_name` Go to the Zed UI Sales overview, check the order, and verify the following: -- The correct sales unit's displayed. +- The correct sales unit is displayed. - The correct amount is displayed per sales order item. Make sure the following: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md index e141d4e44e..88112f3806 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-measurement-unit-feature.md @@ -534,9 +534,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -650,7 +650,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -938,7 +938,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md index 4a7d2a47b5..84aedff44c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-service-points-feature.md @@ -471,7 +471,7 @@ service_point.validation.wrong_request_body,Falscher Anforderungstext.,de_DE service_point.validation.country_entity_not_found,Country with iso2 code '%iso2Code%' does not exist.,en_US service_point.validation.country_entity_not_found,Das Land mit dem iso2-Code '%iso2Code%' existiert nicht.,de_DE service_point.validation.region_entity_not_found,Region with uuid '%uuid%' does not exist for country with iso2 code '%countryIso2Code%'.,en_US -service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit'so2-Code '%countryIso2Code%',de_DE +service_point.validation.region_entity_not_found,Region mit uuid '%uuid%' existiert nicht für Land mit iso2-Code '%countryIso2Code%',de_DE service_point.validation.service_point_address_address1_wrong_length,Service Point Address Input address1 must have a length of %min% to %max% characters.,en_US service_point.validation.service_point_address_address1_wrong_length,Service Point Adresse Input address1 muss eine Länge von %min% bis %max% Zeichen haben.,de_DE service_point.validation.service_point_address_address2_wrong_length,Service Point Address Input address2 must have a length of %min% to %max% characters.,en_US diff --git a/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md index 9f75580e0b..a8b09f870c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-shopping-lists-feature.md @@ -706,7 +706,7 @@ Workstations,spryker_systems_Berlin,READ_ONLY | --- | --- | --- | --- | --- | | shopping_list_key | ✓ | string | Laptops | Defines a shopping list to assign to a business unit. | | business_unit_key | ✓ | string | spryker_systems_HR | Defines a business unit to share a shopping list with. | -| permission_group_name | ✓ | integer | FULL_ACCESS | Defines a business unit's permissions to access a shopping list. | +| permission_group_name | ✓ | integer | FULL_ACCESS | Defines a business unit is permissions to access a shopping list. | 2. Register the following plugin to enable data import: @@ -1139,7 +1139,7 @@ customer.account.shopping_list.add_selected_items_to_cart,Ausgewählte Artikel i 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'st kein Produkt auf deiner Einkaufsliste.,de_DE +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 diff --git a/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md index 954c6052f2..a44282afba 100644 --- a/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202311.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it's not found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md index 33472b7f9f..0227ef5631 100644 --- a/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202404.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it's not found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md b/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md index 33472b7f9f..0227ef5631 100644 --- a/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md +++ b/docs/dg/dev/glue-api/202410.0/decoupled-glue-api.md @@ -76,7 +76,7 @@ Upon receiving an API request, an API context transfer is created where we set u First, we hydrate `GlueRequestTransfer` with data from the `Request` object. This includes request body, query params, headers, and attributes. -Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it'sn't found, the application uses the requested and accepted format to prepare request and response data. +Then, `ContentNegotiator` tries to resolve what convention the application must use for this request and updates `GlueRequestTransfer` with the request format. The convention is optional, so if it's not found, the application uses the requested and accepted format to prepare request and response data. With hydrated `GlueRequestTransfer` and selected or not convention, the application executes `RequestFlowExecutor`. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md index e50c2add94..bfd6bb3475 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. {% endinfo_block %} diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md index f472888796..709864692c 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. {% endinfo_block %} diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md index a83ae24daa..cdf46ae051 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/approval-process-feature-overview.md @@ -20,7 +20,7 @@ Permissions related to the approval process are configured based on the restrict Approvers can only approve orders of employees *within their own business unit*. -If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit's the direct parent of the employee's business unit. +If an employee with a *Buy up to grand total* limit's in a business unit without any approvers, at the checkout, the employee can't see any approvers to send their order to and thus can't proceed with their order. Not even if another business unit of the same company does have an approver. And not even if that other business unit is the direct parent of the employee's business unit. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md index b09fbd0723..ec3588684e 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} @@ -62,7 +62,7 @@ The following are special characteristics of business units: {% 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. +A business unit is children that are one level below it, become 0 level parent business units, and their children become 1 level children. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md index 9898481268..d73e2409a4 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit's the *company address*. The company address is a physical representation of a company. +The level below the business unit is the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index 4997e3e261..5da4c15647 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -36,7 +36,7 @@ This document describes how to create company units. 5. Optional: Enter an **IBAN**. 6. Optional: Enter a **BIC**. 7. Click **Save**. - This opens the **Company Units** page. The created company business unit's displayed in the list. + This opens the **Company Units** page. The created company business unit is displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md index 859aeaea4c..85ac51e112 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index baf481510e..b8a4b3f376 100644 --- a/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202311.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -215,7 +215,7 @@ To retrieve a business unit, send the request: | name | String | Specifies the name of the business unit. | | email | String | Specifies the email address of the business unit. | | phone | String | Specifies the telephone number of the business unit. | -| externalUrl | String | Specifies the URL of the business unit's website. | +| externalUrl | String | Specifies the URL of the business unit is website. | | bic | String | Specifies the Bank Identifier Code of the business unit. | | iban | String | Specifies the International Bank Account Number of the business unit. | | defaultBillingAddress | String | Specifies the ID of the business unit default billing address. For details on how to retrieve the actual address, see the *Retrieving Business Unit Addresses* section. | @@ -241,7 +241,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit's not found or the user does not have access to it. | +| 1901 | Specified business unit is not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md index 870cb8ca45..54f7b000b4 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} @@ -62,7 +62,7 @@ The following are special characteristics of business units: {% 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. +A business unit is children that are one level below it, become 0 level parent business units, and their children become 1 level children. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md index abc8d2a17a..153408d23d 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit's the *company address*. The company address is a physical representation of a company. +The level below the business unit is the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index 33349e7cc1..17f69d0e09 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -37,7 +37,7 @@ This document describes how to create company units in the Back Office. 6. Optional: Enter a **BIC**. 7. Optional: Enter a **PHONE**. 8. Click **Save**. - This opens the **Company Units** page. The created company business unit's displayed in the list. + This opens the **Company Units** page. The created company business unit is displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md index 859aeaea4c..85ac51e112 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index 9b22ebf44e..e662c116d2 100644 --- a/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202404.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -224,7 +224,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit's not found or the user does not have access to it. | +| 1901 | Specified business unit is not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md index 870cb8ca45..54f7b000b4 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/business-units-overview.md @@ -37,7 +37,7 @@ 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's not specified, the new business unit's created with the "0" level in the hierarchy—for example, as a parent. +The user can also select a parent business unit of the newly created unit. If it's not specified, the new business unit is created with the "0" level in the hierarchy—for example, as a parent. {% endinfo_block %} @@ -62,7 +62,7 @@ The following are special characteristics of business units: {% 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. +A business unit is children that are one level below it, become 0 level parent business units, and their children become 1 level children. {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md index abc8d2a17a..153408d23d 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/company-account-feature-overview/company-accounts-overview.md @@ -38,11 +38,11 @@ A company consists of several *business units*, which you can consider physical ## Company address -The level below the business unit's the *company address*. The company address is a physical representation of a company. +The level below the business unit is the *company address*. The company address is a physical representation of a company. One company address can be assigned to several business units. For example, if IT and Sales departments are located in the same office, they can share one company address. -However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit's a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. +However, a department may be distributed between several locations and have several addresses. For example, if it's a building company, and each unit is a construction site, for each order made for this department, one selects which address of the department the order is to be delivered to. Also, default billing and shipping addresses can't be assigned to business units. ## Company user diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md index e6ec2860f4..4badac3e84 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/company-units/create-company-units.md @@ -37,7 +37,7 @@ This document describes how to create company units in the Back Office. 6. Optional: Enter a **BIC**. 7. Optional: Enter a **PHONE**. 8. Click **Save**. - This opens the **Company Units** page. The created company business unit's displayed in the list. + This opens the **Company Units** page. The created company business unit is displayed in the list. ## Reference information: Create a company unit diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md index 859aeaea4c..85ac51e112 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-in-the-back-office/manage-companies.md @@ -34,7 +34,7 @@ To start managing companies, go to **Customers  {% info_block warningBox "Company headquarters" %} -Once a company is created, one business unit for it's created automatically. This business unit's the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). +Once a company is created, one business unit for it's created automatically. This business unit is the company's headquarters. To edit it, see [Edit company units](/docs/pbc/all/customer-relationship-management/{{page.version}}/base-shop/manage-in-the-back-office/company-units/edit-company-units.html). {% endinfo_block %} diff --git a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md index d7c33661bb..b05b4fd451 100644 --- a/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md +++ b/docs/pbc/all/customer-relationship-management/202410.0/base-shop/manage-using-glue-api/company-account/glue-api-retrieve-business-units.md @@ -224,7 +224,7 @@ To retrieve a business unit, send the request: | 001 | Access token is invalid. | | 002 | Access token is missing. | | 1903 | Current company account is not set. Select the current company user with `/company-user-access-tokens` to access the resource collection. | -| 1901 | Specified business unit's not found or the user does not have access to it. | +| 1901 | Specified business unit is not found or the user does not have access to it. | To view generic errors that originate from the Glue Application, see [Reference information: GlueApplication errors](/docs/dg/dev/glue-api/{{page.version}}/old-glue-infrastructure/reference-information-glueapplication-errors.html). diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md b/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md index 95a79c0687..557bda9d64 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md @@ -14,8 +14,8 @@ The following schema illustrates relations between alternative products: ![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) * *conversion*—factor to convert a value from sales to the base unit. If it's *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). -* *precision*—the ratio between a sales unit and a base unit. For example, a base unit's an *item*, and a user selects *kg* as a sales unit. +* *precision*—the ratio between a sales unit and a base unit. For example, a base unit is an *item*, and a user selects *kg* as a sales unit. * `is_displayed`—if true, then the value is shown on the Storefront. -* `is_default`—if true, then the unit's shown as the default unit on the Storefront. +* `is_default`—if true, then the unit is shown as the default unit on the Storefront.
diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md index 641d3f97aa..52e2a04eb5 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/measurement-units-feature-overview.md @@ -16,9 +16,9 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/measurement-units-feature-overview.html --- -The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit's assigned to abstract products, and by default, it's "item"; however, it can be changed to any other unit. +The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit is assigned to abstract products, and by default, it's "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's defined, then the first unit to show will be the first in alphabetical order. +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 alphabetical order. The sales units are displayed on the product details page. You can define the sales units in the Administration Interface but choose not to display them on the webshop. 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. @@ -34,7 +34,7 @@ The shop owner can define if the conversion factor between base and sales units | EXAMPLE | DISPLAY VALUE | PRODUCT DETAILS PAGE | | --- | --- | --- | -| The base unit's meter and the sales unit's 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)| +| 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 the base unit and sales unit. @@ -53,7 +53,7 @@ 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 one 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). +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 is default_precision (default value is 1). | CORE LEVEL| PROJECT LEVEL | | --- | --- | diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md index b15804b0c5..9a47bdb28f 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -39,7 +39,7 @@ redirect_from: 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 in 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", or "Pallet" of apples. The "bag", "pallet", and "box" are referred to as *packaging unit types*. -Each packaging unit's defined on an abstract product level and is represented by one product variant—for example: +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 | | --- | --- | --- | @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit's referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. +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 two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md index 0d2bd908a9..3f48f3a395 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md @@ -558,9 +558,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -674,7 +674,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -962,7 +962,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md index 29c275504f..2df78df1d4 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/concrete-products/glue-api-retrieve-sales-units.md @@ -99,8 +99,8 @@ Request sample: retrieve sales units | --- | --- | --- | | conversion | integer | Factor to convert a value from sales to base unit. If it's "null", the information is taken from the global conversions. | | precision | integer | Ratio between a sales unit and a base unit. | -| is displayed | boolean | Defines if the sales unit's displayed on the product details page. | -| is default | boolean | Defines if the sales unit's selected by default on the product details page. | +| is displayed | boolean | Defines if the sales unit is displayed on the product details page. | +| is default | boolean | Defines if the sales unit is selected by default on the product details page. | | measurementUnitCode | string | Code of the measurement unit. | See [Retrieve measurement units](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.html) for more information on managing the sales units. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md index d64677c4e6..9cb1436d89 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-measurement-units.md @@ -64,7 +64,7 @@ Response sample: retrieve a measurement unit | ATTRIBUTE | TYPE | DESCRIPTION | | --- | --- | --- | | name | string | Name of the product measurement unit. | -| defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit's not specified. | +| defaultPrecision | integer | Default ratio between a sales unit and a base unit. It is used when precision for a related sales unit is not specified. | | measurementUnitCode | string | Code of the measurement unit. | ## Other management options diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md b/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md index 95a79c0687..557bda9d64 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md @@ -14,8 +14,8 @@ The following schema illustrates relations between alternative products: ![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) * *conversion*—factor to convert a value from sales to the base unit. If it's *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). -* *precision*—the ratio between a sales unit and a base unit. For example, a base unit's an *item*, and a user selects *kg* as a sales unit. +* *precision*—the ratio between a sales unit and a base unit. For example, a base unit is an *item*, and a user selects *kg* as a sales unit. * `is_displayed`—if true, then the value is shown on the Storefront. -* `is_default`—if true, then the unit's shown as the default unit on the Storefront. +* `is_default`—if true, then the unit is shown as the default unit on the Storefront. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md index 641d3f97aa..52e2a04eb5 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/measurement-units-feature-overview.md @@ -16,9 +16,9 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/measurement-units-feature-overview.html --- -The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit's assigned to abstract products, and by default, it's "item"; however, it can be changed to any other unit. +The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit is assigned to abstract products, and by default, it's "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's defined, then the first unit to show will be the first in alphabetical order. +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 alphabetical order. The sales units are displayed on the product details page. You can define the sales units in the Administration Interface but choose not to display them on the webshop. 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. @@ -34,7 +34,7 @@ The shop owner can define if the conversion factor between base and sales units | EXAMPLE | DISPLAY VALUE | PRODUCT DETAILS PAGE | | --- | --- | --- | -| The base unit's meter and the sales unit's 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)| +| 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 the base unit and sales unit. @@ -53,7 +53,7 @@ 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 one 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). +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 is default_precision (default value is 1). | CORE LEVEL| PROJECT LEVEL | | --- | --- | diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 82eb2d7d01..95f0ee39b1 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -39,7 +39,7 @@ redirect_from: 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 in 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", or "Pallet" of apples. The "bag", "pallet", and "box" are referred to as *packaging unit types*. -Each packaging unit's defined on an abstract product level and is represented by one product variant—for example: +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 | | --- | --- | --- | @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit's referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. +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 two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md index 0d2bd908a9..3f48f3a395 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md @@ -558,9 +558,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -674,7 +674,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -962,7 +962,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md b/docs/pbc/all/product-information-management/202410.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md index 95a79c0687..557bda9d64 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/domain-model-and-relationships/measurement-units-feature-module-relations.md @@ -14,8 +14,8 @@ The following schema illustrates relations between alternative products: ![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) * *conversion*—factor to convert a value from sales to the base unit. If it's *null*, the information is taken from the global conversions (the `MeasurementUnitConverter.php` file). -* *precision*—the ratio between a sales unit and a base unit. For example, a base unit's an *item*, and a user selects *kg* as a sales unit. +* *precision*—the ratio between a sales unit and a base unit. For example, a base unit is an *item*, and a user selects *kg* as a sales unit. * `is_displayed`—if true, then the value is shown on the Storefront. -* `is_default`—if true, then the unit's shown as the default unit on the Storefront. +* `is_default`—if true, then the unit is shown as the default unit on the Storefront. diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/measurement-units-feature-overview.md b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/measurement-units-feature-overview.md index 641d3f97aa..52e2a04eb5 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/measurement-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/measurement-units-feature-overview.md @@ -16,9 +16,9 @@ redirect_from: - /docs/pbc/all/product-information-management/202204.0/base-shop/feature-overviews/measurement-units-feature-overview.html --- -The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit's assigned to abstract products, and by default, it's "item"; however, it can be changed to any other unit. +The *Measurement Units* feature lets you sell 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". 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 a base unit. The base unit is assigned to abstract products, and by default, it's "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's defined, then the first unit to show will be the first in alphabetical order. +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 alphabetical order. The sales units are displayed on the product details page. You can define the sales units in the Administration Interface but choose not to display them on the webshop. 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. @@ -34,7 +34,7 @@ The shop owner can define if the conversion factor between base and sales units | EXAMPLE | DISPLAY VALUE | PRODUCT DETAILS PAGE | | --- | --- | --- | -| The base unit's meter and the sales unit's 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)| +| 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 the base unit and sales unit. @@ -53,7 +53,7 @@ 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 one 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). +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 is default_precision (default value is 1). | CORE LEVEL| PROJECT LEVEL | | --- | --- | diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 82eb2d7d01..95f0ee39b1 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -39,7 +39,7 @@ redirect_from: 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 in 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", or "Pallet" of apples. The "bag", "pallet", and "box" are referred to as *packaging unit types*. -Each packaging unit's defined on an abstract product level and is represented by one product variant—for example: +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 | | --- | --- | --- | @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit's referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. +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 two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md index 0d2bd908a9..3f48f3a395 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/install-features/install-the-measurement-units-feature.md @@ -558,9 +558,9 @@ sales_unit_19,218_1232,ITEM,1,1,1,1 |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's used.| +|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's 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.| +|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: @@ -674,7 +674,7 @@ sales_unit_19,AT | COLUMN | REQUIRED | 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's available.| +|store_name|mandatory|string|DE|Contains the store name where the sales unit is available.| Register the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -962,7 +962,7 @@ measurement_units.recommendation.suggestion,Was würden Sie gerne hinzufügen? , 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 -cart.item.sales_unit.not_found,Sales unit's not found for product with SKU '%sku%'.,en_US +cart.item.sales_unit.not_found,Sales unit is not found for product with SKU '%sku%'.,en_US cart.item.sales_unit.not_found,Verkaufseinheit wird für Produkt mit SKU '%sku%' nicht gefunden.,de_DE ``` From 9c0c10d02ad77fb7882694fec51d9c507bfda54f Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 13:54:27 +0200 Subject: [PATCH 41/46] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 72b06911e8..681197bfa4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,13 +1,15 @@ +## PR labels + +When the PR is ready for review, add a **TW review needed** label. This lets us keep track of PRs that need to be merged and merge them in time. + + ## PR Description -Add a meaningful description here that will let us know what you want to fix with this PR or what functionality you want to add. +Describe the context for your changes and the changes you've made. + +## Tickets -## Steps before you submit a PR -- Please add tests for the code you add if it's possible. -- Please check out our contribution guide: https://docs.spryker.com/docs/dg/dev/code-contribution-guide.html -- Add a `contribution-license-agreement.txt` file with the following content: -`I hereby agree to Spryker\'s Contribution License Agreement in https://github.com/spryker/spryker-docs/blob/HASH_OF_COMMIT_YOU_ARE_BASING_YOUR_BRANCH_FROM_MASTER_BRANCH/CONTRIBUTING.md.` +If changes are associated with a ticket, add a docs ticket here. -This is a mandatory step to make sure you are aware of the license agreement and agree to it. `HASH_OF_COMMIT_YOU_ARE_BASING_YOUR_BRANCH_FROM_MASTER_BRANCH` is a hash of the commit you are basing your branch from the master branch. You can take it from commits list of master branch before you submit a PR. ## Checklist - [x] I agree with the Code Contribution License Agreement in CONTRIBUTING.md From d9c9159fbddd210f7013a4e109da62143aec32c5 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 16:16:54 +0200 Subject: [PATCH 42/46] Delete add-new-store-in-multi-db-setup.md --- .../add-new-store-in-multi-db-setup.md | 174 ------------------ 1 file changed, 174 deletions(-) delete mode 100644 docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md deleted file mode 100644 index 05cec46687..0000000000 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: "Adding new store in multi-db setup" -description: Adding and deploying a new store in multi-db store setup requires additional steps and preparation. This guideline contains all the best practices you need to know. -last_updated: Dec 02, 2024 -template: howto-guide-template -originalLink: -originalArticleId: -redirect_from: ---- - -Setting up a new store in an existing multi-DB environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This guide outlines a detailed procedure for launching a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. - -{% info_block warningBox %} -This guide is applicable in scenarios where store configurations and setups are managed programmatically through code. If you are utilizing the Dynamic Multistore feature to manage your stores via Backoffice, please refer to this {guide}(/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html) -{% endinfo_block %} - -## Initial planning and best practices - -### Clear Roadmap -It is good to have overall plan, detailing all stores that will be added in the future. This can impact not only database structure and configurations, but overall decisions on how to approach the rollout, making sure it's cost-efficient over time, on all ends. - -### Backup strategy -Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. - -### Environment Preparation -Prepare your production and non-production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. - -### Repeatability -If you plan to release more stores in the future, focus that this process is easily repeatable in the future. That includes creating detailed technical documentation, release procedure, and tickets (epics, stories, tasks) in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. This documentation will be invaluable for future deployments and troubleshooting. - -## Detailed Considerations for the Migration - -### Integrations and 3rd party systems -* Review and adjust all third-party integrations to ensure they work with the new store setup. Here we mainly talk about data and it’s isolation across multiple virtual DBs. Assure that people working with both sides of the system (backend, frontend, merchant portal and APIs) do have all needed data access. -* Integrations such as single sign-on, payment gateways, inventory systems may require updates. Make sure tech teams responsible for that systems are available, and ready to do necessary changes on time. - -### Data Import -* Handle the data import process carefully, breaking it down into specific tasks such as configuring databases and adjusting the data import setup to work with the new store. -* Ensure any existing databases, such as the one from another country in one case, are correctly renamed or adjusted to fit the new multi-DB structure. -* Anticipate and plan for potential updates that may arise after end2end testing of the project data migration. - -### Code Buckets -* If used, investigate and adjust code bucket configurations as necessary. The technical steps required for these adjustments should be documented thoroughly, ensuring that code-bucket related functionalities are not disrupted by the addition of a new store. - -### Cloud environment and monitoring -* Think of and adjust monitoring tools and APM (such as NewRelic, CloudWatch) to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store alongside existing ones. -* Think of adjusting AWS Services such as S3, introducing buckets for the new store(s). - -### Front-end Considerations -* Consider any other activities related to the above epics that might impact the deployment. For instance, front-end separation might be a significant task, requiring layout adjustments between different stores and possible adjustments on the API side. - -## Step-by-Step Procedure to release a new store(s) - -Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline for defining new database(s), connecting them with new store(s) and adding necessary configuration. - -### Local Setup -#### New store configuration - -* Define a new database and the store in the deploy file, following [that guide](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html#remove-the-configuration-of-the-database). As a result you should have: - * new database in regions..services.databases - * new store in regions..stores - * new domains in groups..applications -* Adjust stores.php with the configurations, relevant for your new store, following generic technical guideline. -* Prepare data import configurations and data files, specific to the new store. -* Adjust the local environment setup as needed, including configurations and environment variables. Examples: frontend router configuration, code bucket configuration, creating new backoffice users. -* Document all the steps you have done, to make sure they are repeatable in the future. - -#### Running initial setup locally - -* Bootstrap your updated configuration and run your environment as usual: - ```bash - docker/sdk boot deploy.dev.yml - docker/sdk up - ``` -* Verify that the new store’s database is correctly initialized and filled up with the demo data. - -#### Setting up additional deployment recipes - -It is convenient to create additional deployment install recipes (located under config/install folder) to setup a new and delete an existing stores, for testing purposes. Below is an example of such setup that proves to be working well on prcatice. We took the existing out of the box folder structure, and EU folder as a base, but you can introduce your structure: - -1. config/install/EU/setup-store.yml - contains everything needed to do a minimal setup of a new store(s): -``` -env: - NEW_RELIC_ENABLED: 0 -command-timeout: 7200 -stores: - - { STORE-1 } - - { STORE-2 } - ... -sections: - init-storage: - setup-search-create-sources: - command: "vendor/bin/console search:setup:sources -vvv --no-ansi" - stores: true - init-storages-per-store: - propel-migrate: - command: "vendor/bin/console propel:migrate -vvv --no-ansi" - stores: true - ... -``` -2. config/install/EU/delete-store.yml - contains everything needed to remove an existing store(s): -``` -env: - NEW_RELIC_ENABLED: 0 -command-timeout: 7200 -stores: - - { STORE-1 } - - { STORE-2 } - ... -sections: - scheduler-clean: - scheduler-clean: - command: "vendor/bin/console scheduler:clean -vvv --no-ansi || true" - stores: true - clean-storage: - clean-storage: - command: "vendor/bin/console storage:delete -vvv --no-ansi" - stores: true - ... -``` -In further sections below you’ll see how you can use your new custom recipe during the deployment in your main deployment yml file’s “SPRYKER_HOOK_DESTRUCTIVE_INSTALL“ parameter as following: - -```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/setup-store --no-ansi -vvv"``` - -or - -```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/delete-store --no-ansi -vvv"``` - -### Staging Setup -#### Environment Configuration - -* Update the staging environment’s configuration to include the new store. -* For database to be initialised, you will need to run a destructive deployment for your new store. To assure existing stores are not affected, you need to specify only new store code(s) in your deployment yml file (image.environment section), in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. Example, for new PL and AT stores to be introduced: -`SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv"` -You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) - -#### Support Requests -* Open a support request to apply the new configuration to the environment. Attach deploy file and explain shortly expected changes, i.e. new DB should be created. In case you have the necessary configuration in a specific branch of your repository, provide a reference to it in the ticket, making sure support team has access to your code base. -* Run the destructive deployment, assuring the right store(s) is specified. - -#### Deployment Execution -* Deploy the new store in the staging environment, ensuring existing stores remain unaffected. -* Test the new store thoroughly to confirm it operates correctly without impacting other stores, including all the external integrations in the staging mode. - -### Production Setup -#### Configuration Preparation - -* Prepare the production environment’s configuration similarly to the staging setup. - -#### Support and Deployment -* Open a support request to deploy the new store configuration to production, ensuring all configurations are correct. -* Execute the deployment, closely monitoring the process to catch any issues early. - -#### Post-Deployment -* After deployment, verify that the new store is fully operational and that no data or services for existing stores have been impacted. -* During environment configuration, if you have chosen to update existing installation recipe (production or destructive), revert it back to its original state. - -## Releasing many stores one after another -When you plan releasing multiple stores one after another you can save some time on support requests, doing only one request per environment for all stores upfront, which will make the overall process faster. To do so, adjust the above procedure as following: - -### First release -#### Local Setup -* Prepare and test the configuration for ALL stores you are planning to release in the future. - -#### Staging Setup -* Prepare staging deploy yml file, containing ALL stores you are planning to release in the future. Open a support request and hand the deploy file to them, explaining your intent and ideally - approx. schedule on when are you going to release all the stores. -* Once the preparation is ready - you can revert the configuration, leaving only store you’d like to release now. We recommend to save this configuration separately, to be able to come back to it later. -* Run the destructive deployment, assuring the right store(s) is specified and check the result. - -#### Production Setup -Repeat the same procedure as you’ve done for Staging - -### Next releases -While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. From bfe370989d3e08e483b5b2fc61af967f6a6472ab Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 16:31:34 +0200 Subject: [PATCH 43/46] headings --- _scripts/fix-headings.js | 136 ++++++++++++++++++ .../customize-deployment-pipelines.md | 8 +- ...ormance-testing-in-staging-enivronments.md | 66 ++++----- .../publish-and-synchronization.md | 20 +-- .../using-a-query-container.md | 2 +- .../202311.0/document-glue-api-endpoints.md | 2 +- .../202404.0/document-glue-api-endpoints.md | 2 +- .../202410.0/document-glue-api-endpoints.md | 2 +- .../test-helpers-best-practices.md | 4 +- .../Integrate-profiler-module.md | 14 +- .../integrate-separate-endpoint-bootstraps.md | 18 +-- .../spryker-sdk-command-not-found.md | 10 +- ...ckout-process-review-and-implementation.md | 38 ++--- ...ckout-process-review-and-implementation.md | 38 ++--- ...ckout-process-review-and-implementation.md | 38 ++--- .../integrate-inxmail.md | 4 +- .../integrate-inxmail.md | 4 +- .../integrate-inxmail.md | 4 +- ...-the-ideal-payment-method-for-heidelpay.md | 10 +- ...-authorize-payment-method-for-heidelpay.md | 10 +- ...ypal-debit-payment-method-for-heidelpay.md | 12 +- .../unzer/install-unzer/integrate-unzer.md | 24 ++-- ...-the-ideal-payment-method-for-heidelpay.md | 10 +- ...-authorize-payment-method-for-heidelpay.md | 10 +- ...ypal-debit-payment-method-for-heidelpay.md | 12 +- .../unzer/install-unzer/integrate-unzer.md | 24 ++-- ...-the-ideal-payment-method-for-heidelpay.md | 10 +- ...-authorize-payment-method-for-heidelpay.md | 10 +- ...ypal-debit-payment-method-for-heidelpay.md | 12 +- .../unzer/install-unzer/integrate-unzer.md | 24 ++-- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 4 +- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 4 +- .../best-practices/data-driven-ranking.md | 4 +- .../best-practices/generic-faceted-search.md | 4 +- 36 files changed, 369 insertions(+), 233 deletions(-) create mode 100644 _scripts/fix-headings.js diff --git a/_scripts/fix-headings.js b/_scripts/fix-headings.js new file mode 100644 index 0000000000..a226e76385 --- /dev/null +++ b/_scripts/fix-headings.js @@ -0,0 +1,136 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); + +function fixHeadings(content) { + // Parse frontmatter + const fmMatch = content.match(/^---\n([\s\S]*?)\n---/); + if (!fmMatch) return { content, changes: 0 }; + + const frontmatter = fmMatch[1]; + const title = frontmatter.match(/title:\s*(.*)/)?.[1]; + if (!title) return { content: content, changes: 0 }; + + // Get the content after frontmatter + const body = content.slice(fmMatch[0].length); + + // Find all heading levels in the content (excluding code blocks) + const lines = body.split('\n'); + let inCodeBlock = false; + const headingLevels = []; + + lines.forEach(line => { + if (line.trim().startsWith('```')) { + inCodeBlock = !inCodeBlock; + return; + } + if (inCodeBlock) return; + + const headingMatch = line.match(/^(#{1,6}) /); + if (headingMatch) { + headingLevels.push(headingMatch[1].length); + } + }); + + if (headingLevels.length === 0) return { content: content, changes: 0 }; + + // Find the highest level (minimum number of #) + const highestLevel = Math.min(...headingLevels); + + // Calculate how many levels to shift to make highest level H2 + const levelShift = 2 - highestLevel; + + // If no shift needed (highest level is already H2), return unchanged + if (levelShift === 0) return { content: content, changes: 0 }; + + // Apply the shift to all headings while preserving code blocks + let changes = 0; + inCodeBlock = false; + const fixedLines = lines.map(line => { + if (line.trim().startsWith('```')) { + inCodeBlock = !inCodeBlock; + return line; + } + if (inCodeBlock) return line; + + const headingMatch = line.match(/^(#{1,6}) (.*)/); + if (headingMatch) { + const newLevel = Math.max(1, Math.min(6, headingMatch[1].length + levelShift)); + changes++; + return `${'#'.repeat(newLevel)} ${headingMatch[2]}`; + } + return line; + }); + + return { + content: `---\n${frontmatter}\n---${fixedLines.join('\n')}`, + changes: changes + }; +} + +function findMarkdownFiles(dir) { + let results = []; + const files = fs.readdirSync(dir); + + for (const file of files) { + const filePath = path.join(dir, file); + const stat = fs.statSync(filePath); + + if (stat.isDirectory()) { + results = results.concat(findMarkdownFiles(filePath)); + } else if (file.endsWith('.md')) { + results.push(filePath); + } + } + + return results; +} + +function processFile(filePath, stats) { + try { + const content = fs.readFileSync(filePath, 'utf8'); + const result = fixHeadings(content); + stats.totalFiles++; + + if (result.changes > 0) { + fs.writeFileSync(filePath, result.content); + console.log(`Processed ${filePath} - ${result.changes} heading(s) adjusted`); + stats.filesChanged++; + stats.totalHeadingsAdjusted += result.changes; + } else { + console.log(`Processed ${filePath} - no changes needed (headings already correct)`); + } + } catch (err) { + console.error(`Error processing ${filePath}:`, err); + } +} + +// Get command line arguments +const args = process.argv.slice(2); + +// If no arguments provided, process all .md files in /docs/ +let filesToProcess; + +if (args.length === 0) { + console.log('No files specified, processing all .md files in /docs/...\n'); + filesToProcess = findMarkdownFiles('docs'); +} else { + filesToProcess = args; +} + +// Initialize statistics +const stats = { + totalFiles: 0, + filesChanged: 0, + totalHeadingsAdjusted: 0 +}; + +// Process all files +filesToProcess.forEach(file => processFile(file, stats)); + +// Print detailed summary +console.log('\nSummary:'); +console.log(`Total files checked: ${stats.totalFiles}`); +console.log(`Files that needed changes: ${stats.filesChanged}`); +console.log(`Total headings adjusted: ${stats.totalHeadingsAdjusted}`); diff --git a/docs/ca/dev/configure-deployment-pipelines/customize-deployment-pipelines.md b/docs/ca/dev/configure-deployment-pipelines/customize-deployment-pipelines.md index 09fbac2064..78c1a88970 100644 --- a/docs/ca/dev/configure-deployment-pipelines/customize-deployment-pipelines.md +++ b/docs/ca/dev/configure-deployment-pipelines/customize-deployment-pipelines.md @@ -26,7 +26,7 @@ This document describes how to customize deployment pipelines. {% endinfo_block %} -### Adding a single command to a deployment pipeline +## Adding a single command to a deployment pipeline To customize the `pre-deploy` stage of a pipeline: @@ -46,7 +46,7 @@ image: During the next deployment, the command will be executed in the `pre-deploy` stage. -### Adding multiple commands to a deployment pipeline via a shell script +## Adding multiple commands to a deployment pipeline via a shell script To add multiple commands to the `pre-deploy` stage: @@ -70,7 +70,7 @@ Do not include the `.yml` extension of the file name in `{path_to_script}`. For During the next deployment, the commands in the script will be executed in the `pre-deploy` stage. -### Adding different commands for different environments and pipeline types +## Adding different commands for different environments and pipeline types By default, in `pre-deploy` and `post-deploy` stages, there is no possibility to run different commands for combinations of different environments and pipeline types. To do that, you can set up a custom shell script with _if statements_. @@ -94,7 +94,7 @@ if [ "${SPRYKER_PIPELINE_TYPE}" == "destructive" ]; then fi ``` -### Adding commands to the install stage of deployment pipelines +## Adding commands to the install stage of deployment pipelines To add one or more commands to the `install` stage of a deployment pipeline: diff --git a/docs/ca/dev/performance-testing-in-staging-enivronments.md b/docs/ca/dev/performance-testing-in-staging-enivronments.md index 6867a41167..e8ec8fa6aa 100644 --- a/docs/ca/dev/performance-testing-in-staging-enivronments.md +++ b/docs/ca/dev/performance-testing-in-staging-enivronments.md @@ -18,24 +18,24 @@ If you are unable to use real data for your load tests, you can use the [test da Based on our experience, the [Load testing tool](https://github.com/spryker-sdk/load-testing) can greatly assist you in conducting more effective load tests. -# Load testing tool for Spryker +## Load testing tool for Spryker To assist in performance testing, we have a [load testing tool](https://github.com/spryker-sdk/load-testing). The tool contains predefined test scenarios that are specific to Spryker. Test runs based on Gatling.io, an open-source tool. Web UI helps to manage runs and multiple target projects are supported simultaneously. The tool can be used as a package integrated into the Spryker project or as a standalone package. -## What is Gatling? +### What is Gatling? Gatling is a powerful performance testing tool that supports HTTP, WebSocket, Server-Sent-Events, and JMS. Gatling is built on top of Akka that enables thousands of virtual users on a single machine. Akka has a message-driven architecture, and this overrides the JVM limitation of handling many threads. Virtual users are not threads but messages. Gatling is capable of creating an immense amount of traffic from a single node, which helps obtain the most precise information during the load testing. -## Prerequisites +### Prerequisites - Java 8+ - Node 10.10+ -## Including the load testing tool into an environment +### Including the load testing tool into an environment The purpose of this guide is to show you how to integrate Spryker's load testing tool into your environment. While the instructions here will focus on setting this up with using one of Spryker’s many available demo shops, it can also be implemented into an on-going project. @@ -57,7 +57,7 @@ git clone https://github.com/spryker-shop/b2c-demo-shop.git ./ git clone git@github.com:spryker/docker-sdk.git docker ``` -### Integrating Gatling +#### Integrating Gatling With the B2C Demo Shop and Docker SDK cloned, you will need to make a few changes to integrate Gatling into your project. These changes include requiring the load testing tool with composer as well as updating the [Router module](/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router-yves.html) inside of Yves. @@ -122,7 +122,7 @@ extensions: ... ``` -### Setting up the environment +#### Setting up the environment {% info_block infoBox %} @@ -160,13 +160,13 @@ docker/sdk up --build --assets --data You've set up your Spryker B2C Demo Shop and can now access your applications. -### Data preparation +#### Data preparation With the integrations done and the environment set up, you will need to create and load the data fixtures. This is done by first generating the necessary fixtures before triggering a *publish* of all events and then running the *queue worker*. As this will be running tests for this data preparation step, this will need to be done in the [testing mode for the Docker SDK](/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.html). These steps assume you are working from a local environment. If you are attempting to implement these changes to a production or staging environment, you will need to take separate steps to generate parity data between the load-testing tool and your cloud-based environment. -#### Steps for using a cloud-hosted environment. +##### Steps for using a cloud-hosted environment. The Gatling test tool uses pre-seeded data which is used locally for both testing and generating the fixtures in the project's database. If you wish to test a production or a staging environment, there are several factors which need to be addressed. @@ -178,7 +178,7 @@ The Gatling test tool uses pre-seeded data which is used locally for both testin Data used for Gatling's load testing can be found in **/load-test-tool-dir/tests/_data**. Any data that you generate from your cloud-hosted environment will need to be stored here. -##### Setting up for basic authentication. +###### Setting up for basic authentication. If your environment is set for `BASIC AUTH` authentication and requires a user name and password before the site can be loaded, Gatling needs additional configuration. Found within **/load-test-tool-dir/resources/scenarios/spryker/**, two files control the HTTP protocol which is used by each test within the same directory. `GlueProtocol.scala` and `YvesProtocol.scala` each have a value (`httpProtocol`) which needs an additional argument to account for this authentication mode. @@ -195,7 +195,7 @@ val httpProtocol = http **usernamehere** and **passwordhere** should match the username and password used for your environment's basic authentication, and not an account created within Spryker. This username and password are typically set up within your deploy file. -##### Generating product data +###### Generating product data {% info_block errorBox %} @@ -216,7 +216,7 @@ FROM `us-docker`.`spy_product_concrete_storage`; This command parses through the JSON entry and extracts what we need. Once this information has been generated, it should be saved as `product_concrete.csv` and saved in the **/load-test-tool-dir/tests/_data** directory. -##### Generating customer data +###### Generating customer data {% info_block errorBox %} @@ -259,7 +259,7 @@ For each of these, the username is typically the email of the user that was crea Once users have been created and access tokens generated, this information should be stored and formatted in `customer.csv` and saved in the **/load-test-tool-dir/tests/_data** directory. Make sure to put the correct information under the appropriate column name. -#### Steps for using a local environment +##### Steps for using a local environment To start, entering testing mode with the following command: @@ -289,7 +289,7 @@ console queue:worker:start -s You should have the fixtures loaded into the databases and can now exit the CLI to install Gatling into the project. -#### Alternative method to generate local fixtures. +##### Alternative method to generate local fixtures. Jenkins is the default scheduler which ships with Spryker. It is an automation service which helps to automate tasks within Spryker. If you would like an alternative way to generate fixtures for your local environment, Jenkins can be used to schedule the necessary tasks you need for the data preparation step. @@ -340,7 +340,7 @@ While it's possible to change the Jenkins cronjobs found at **/config/Zed/cronjo You are now done and can move on to [Installing Gatling](#installing-gatling)! -### Installing Gatling +#### Installing Gatling {% info_block infoBox %} @@ -370,7 +370,7 @@ cd vendor/spryker-sdk/load-testing After this step has been finished, you will be able to run the Web UI and tool to perform load testing for your project on the local level. -#### Installing Gatling as a standalone package +##### Installing Gatling as a standalone package It is possible for you to run Gatling as a standalone package. Fixtures and data are still needed to be generated on the project level to determine what loads to send with each test. However, as the Spryker load testing tool utilizes NPM to run a localized server for the Web UI, you can do the following to install it: @@ -389,7 +389,7 @@ cd load-testing This should install Gatling with Spryker's available Web UI, making it ready for load testing. -### Running Gatling +#### Running Gatling To get the Web UI of the Gatling tool, run: @@ -432,7 +432,7 @@ Tests like **CartApi** and **GuestCartApi** use an older method of the `cart` en {% endinfo_block %} -## Using Gatling +### Using Gatling In the testing tool Web UI, you can do the following: - Create, edit, and delete instances. @@ -444,11 +444,11 @@ You can perform all these actions from the main page: ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/main-page.png) -### Managing instances +#### Managing instances You can create new instances and edit or delete the existing ones. -#### Creating an instance +##### Creating an instance To create an instance: @@ -462,7 +462,7 @@ To create an instance: Now, the new instance should appear in the navigation bar in *INSTANCES* section. -#### Editing an instance +##### Editing an instance For the already available instances, you can edit Yves URL and Glue URL. Instance names cannot be edited. To edit an instance: @@ -474,7 +474,7 @@ To edit an instance: Now, the instance data is updated. -#### Deleting an instance +##### Deleting an instance To delete an instance: 1. In the navigation bar, click **New instance**. The *Instance* page opens. 2. Click the X sign next to the instance you want to delete: @@ -483,7 +483,7 @@ To delete an instance: Your instance is now deleted. -### Running tests +#### Running tests To run a new load test: @@ -502,7 +502,7 @@ To run a new load test: That's it - your test should run now. While it runs, you see a page where logs are generated. Once the time you specified in the Duration field from step 6 elapses, the test stops, and you can view the detailed test report. -### Viewing the test reports +#### Viewing the test reports On the main page, you can check what tests are currently being run as well as view the detailed log for the completed tests. @@ -521,7 +521,7 @@ To view the reports of the completed tests, on the main page, in the *Done* sect -## Example test: Measuring the capacity +### Example test: Measuring the capacity Let's consider the example of measuring the capacity with the `AddToCustomerCart` or `AddToGuestCart` test. @@ -541,7 +541,7 @@ For the *Steady probe* test type, the following is done: - Checking that the response time is in acceptable boundaries. [< 400ms for 90% of requests] ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/steady-probe.png) -## Gatling Reports +### Gatling Reports Gatling reports are a valuable source of information to read the performance data by providing some details about requests and response timing. @@ -556,18 +556,18 @@ There are the following report types in Gatling: - Response time against Global RPS -### Indicators +#### Indicators This chart shows how response times are distributed among the standard ranges. The right panel shows the number of OK/KO requests. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/indicators.png) -### Statistics +#### Statistics This table shows some standard statistics such as min, max, average, standard deviation, and percentiles globally and per request. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/statistics.png) -### Active users among time +#### Active users among time This chart displays the active users during the simulation: total and per scenario. @@ -581,27 +581,27 @@ It’s computed as: ``` ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/active-users-among-time.png) -### Response time distribution +#### Response time distribution This chart displays the distribution of response times. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/response-time-distribution.png) -### Response time percentiles over time (OK) +#### Response time percentiles over time (OK) This chart displays a variety of response time percentiles over time, but only for successful requests. As failed requests can end prematurely or be caused by timeouts, they would have a drastic effect on the computation for percentiles. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/response-time-percentiles-over-time-ok.png) -### Number of requests per second +#### Number of requests per second This chart displays the number of requests sent per second overtime. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/number-of-requests-per-second.png) -### Number of responses per second +#### Number of responses per second This chart displays the number of responses received per second overtime: total, successes, and failures. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/number-of-responses-per-second.png) -### Response time against Global RPS +#### Response time against Global RPS This chart shows how the response time for the given request is distributed, depending on the overall number of requests at the same time. ![screenshot](https://github.com/spryker-sdk/load-testing/raw/master/docs/images/response-time-against-global-rps.png) diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.md index a7697c0024..0c46e5ce70 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.md @@ -53,11 +53,11 @@ Both Publish and Synchronize implement the queue pattern. See [Spryker Queue The process relies heavily on Propel behaviors, which are used to trigger actions automatically when updating the database. Thus, you don't need to trigger any step of the process in the code manually. See [Boostrapping a Behavior](http://propelorm.org/documentation/cookbook/writing-behavior.html) to learn more. -### Triggering the Publish process +## Triggering the Publish process There are 2 ways to start the Publish process: automated and manual. -#### Automated event emitting +### Automated event emitting Any changes done to an entity implementing the _event_ Propel behavior triggers a publish event immediately. CUD (create, update, delete) operations are covered by this Propel behavior. So you can expect these three types of events on creation, update, and deletion of DB entities managed by Propel ORM. @@ -71,7 +71,7 @@ $productAbstractEntity->save(); Implementing event behaviors is recommended for your project features to keep the Shop App data up-to-date. For example, behaviors are widely used in the `Availability` module to inform customers whether a certain product is available for purchase. -#### Manual event emitting +### Manual event emitting You can trigger the publish event manually using the [Event Facade](/docs/dg/dev/backend-development/data-manipulation/event/add-events.html): @@ -81,12 +81,12 @@ $this->eventFacade->trigger(CmsStorageConfig::CMS_KEY_PUBLISH_WRITE, (new EventE Manual even emitting is best suited when an entity passes several stages before becoming available to a customer. A typical use case for this method is content management. In most cases, a page does not become available once you create it. Usually, it exists as a draft to be published later. For example, when a new product is released to the market. -### How Publish and Synchronize works +## How Publish and Synchronize works Publish and Synchronize Process schema: ![How Publish and Synchronize works](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Architecture+Concepts/Publish+and+Synchronization/how-it-works.png) -### Publish +## Publish When the publish process is triggered, an event or events are posted to a queue. Each event message posted to the queue contains the following information on the event that triggered it: * Event name @@ -128,7 +128,7 @@ To consume an event, the queue adapter calls the publisher plugin specified in t The transformed data is stored in a dedicated database table. It serves as a _mirror table_ for the respective Redis or Elasticsearch storage. The `data` column of the table contains the data to be synced to the front end, defining [the storage and the key](/docs/dg/dev/backend-development/data-manipulation/data-publishing/handle-data-with-publish-and-synchronization.html). It is stored in JSON for easy and fast synchronization. The table also contains the foreign keys used to backtrack data and the timestamp of the last change for each row. The timestamp is used to track changes rapidly. -### Synchronize +## Synchronize When a change happens in the mirror table, its *synchronization behavior* sends the updated rows as messages to one of the Sync Queues. After consuming a message, the data is pushed to Redis or Elastisearch. @@ -178,7 +178,7 @@ When a change happens in the mirror table, its *synchronization behavior* sends } ``` -#### Direct synchronize +### Direct synchronize To optimize performance and flexibility, you can enable direct synchronization on the project level. This approach uses in-memory storage to retain all synchronization events instead of sending them to the queue. With this setup, you can control if entities are synchronized directly or through the traditional queue-based method. @@ -241,7 +241,7 @@ class SynchronizationBehaviorConfig extends SprykerSynchronizationBehaviorConfig ``` -#### Environment limitations related to DMS +### Environment limitations related to DMS When Dynamic Multi-Store (DMS) is disabled, the Direct Sync feature has the following limitations: - Single-store configuration: The feature is only supported for configurations with a single store. @@ -272,7 +272,7 @@ stores: When DMS is enabled, there're no environment limitations for the Direct Sync feature. -### Data Architecture +## Data Architecture P&S plays a major role in data denormalization and distribution to Spryker storefronts and API. Denormalization procedure aims for preparing data in the form it will be consumed by data clients. Distribution procedure aims to distribute the data closer to the end users, so that they feel like accessing a local storage. @@ -290,7 +290,7 @@ When designing a solution using P&S we need to consider the following concerns i - horizontal scalability of publish process (native) and sync process (requires development) - data object limitations -#### Data Object Limitations +### Data Object Limitations In order to build a healthy commerce system, we need to make sure that P&S process is healthy at all times. And first we start with healthy NFRs for P&S. - storage sync message size should not be over 256Kb - this prevents us from problems in data processing, but even more important in data comsumption, when an API consumer might experience failure when reviceing an aggregated object of a high size. diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md index 0cb4db0306..661d9cd8d4 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md @@ -25,7 +25,7 @@ The query container of the current unterminated query is available via `$this->g ![Query container via factory](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Zed/Persistence+Layer/Query+Container/query-container-via-factory.png) -### Executing the query +## Executing the query You can adjust the query itself, but avoid adding more filters or joins because this is the responsibility of the query container only. diff --git a/docs/dg/dev/glue-api/202311.0/document-glue-api-endpoints.md b/docs/dg/dev/glue-api/202311.0/document-glue-api-endpoints.md index 0d532a49b7..4fcb06b782 100644 --- a/docs/dg/dev/glue-api/202311.0/document-glue-api-endpoints.md +++ b/docs/dg/dev/glue-api/202311.0/document-glue-api-endpoints.md @@ -145,7 +145,7 @@ The following table lists descriptions of the properties you can use in the anno | `isEmptyResponse` | The flag used to mark an endpoint that returns empty responses. | | `responses` | A list of possible responses of the endpoint. The object must contain key-value pairs with HTTP codes as key, and a description as the value. | -### Extending the behavior +## Extending the behavior The following interfaces can be used to add more data to the generated documentation. diff --git a/docs/dg/dev/glue-api/202404.0/document-glue-api-endpoints.md b/docs/dg/dev/glue-api/202404.0/document-glue-api-endpoints.md index 4862d85b37..f64ebb83c6 100644 --- a/docs/dg/dev/glue-api/202404.0/document-glue-api-endpoints.md +++ b/docs/dg/dev/glue-api/202404.0/document-glue-api-endpoints.md @@ -145,7 +145,7 @@ The following table lists descriptions of the properties you can use in the anno | `isEmptyResponse` | The flag used to mark an endpoint that returns empty responses. | | `responses` | A list of possible responses of the endpoint. The object must contain key-value pairs with HTTP codes as key, and a description as the value. | -### Extending the behavior +## Extending the behavior The following interfaces can be used to add more data to the generated documentation. diff --git a/docs/dg/dev/glue-api/202410.0/document-glue-api-endpoints.md b/docs/dg/dev/glue-api/202410.0/document-glue-api-endpoints.md index 4862d85b37..f64ebb83c6 100644 --- a/docs/dg/dev/glue-api/202410.0/document-glue-api-endpoints.md +++ b/docs/dg/dev/glue-api/202410.0/document-glue-api-endpoints.md @@ -145,7 +145,7 @@ The following table lists descriptions of the properties you can use in the anno | `isEmptyResponse` | The flag used to mark an endpoint that returns empty responses. | | `responses` | A list of possible responses of the endpoint. The object must contain key-value pairs with HTTP codes as key, and a description as the value. | -### Extending the behavior +## Extending the behavior The following interfaces can be used to add more data to the generated documentation. diff --git a/docs/dg/dev/guidelines/testing-guidelines/test-helpers/test-helpers-best-practices.md b/docs/dg/dev/guidelines/testing-guidelines/test-helpers/test-helpers-best-practices.md index 545954b874..e90495f331 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/test-helpers/test-helpers-best-practices.md +++ b/docs/dg/dev/guidelines/testing-guidelines/test-helpers/test-helpers-best-practices.md @@ -14,11 +14,11 @@ You should organize helpers according to their specific roles and intended use c During the "Act" stage, we often only invoke a specific method that requires testing. In certain situations, it might make sense to create a helper method for executing bigger processes, such as `Helper::checkout()`. This method could include actions like adding a product to the cart, initiating the checkout procedure, completing address forms, selecting payment options, and more. This helper method could then also be reused by other tests. -### Root helper +## Root helper Each module should have a helper named after the module. For example, in the `spryker/customer` module, there is `CustomerHelper`. This particular helper facilitates interactions with customer-related functionalities, such as creating `CustomerTransfer` or registering a customer. You can also use these helpers to configure the system in a manner where, for example, an in-memory message broker is used instead a remote or a locally running one. This switch simplifies testing procedures and enhances overall performance. -### Assert helper +## Assert helper To prevent overburdening the root helper, specific assertions should reside in separate helpers. In the context of the Customer module example, you could establish a CustomerAssertHelper. This dedicated helper should exclusively encompass assertion methods that can be used in any other module as well. diff --git a/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md b/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md index 0745bd4a5a..fa59cb1ab2 100644 --- a/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md +++ b/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md @@ -9,7 +9,7 @@ redirect_from: This document describes how to integrate profiler module into a Spryker project. -## Prerequisites +### Prerequisites To start the integration, install the necessary features: @@ -19,7 +19,7 @@ To start the integration, install the necessary features: | Web Profiler for Zed | {{page.version}} | [Web Profiler feature integration](/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html) | | Web Profiler for Yves | {{page.version}} | [Web Profiler feature integration](/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.html) | -## 1) Enable extension +### 1) Enable extension To collect execution traces, enable the `xhprof` extension. @@ -37,13 +37,13 @@ image: - xhprof ``` -## 2) Bootstrap the Docker setup +### 2) Bootstrap the Docker setup ```shell docker/sdk boot deploy.dev.yml ``` -## 3) Install the required modules using Composer +### 3) Install the required modules using Composer {% info_block warningBox "Verification" %} @@ -60,7 +60,7 @@ Ensure that the following modules have been updated: composer require --dev spryker/profiler --ignore-platform-reqs ``` -### Set up behavior +#### Set up behavior 1. For `Yves` application, register the following plugins: @@ -191,12 +191,12 @@ class WebProfilerDependencyProvider extends SprykerWebProfilerDependencyProvider } ``` -# Generate transfers +## Generate transfers Run the `console transfer:generate` command to generate all the necessary transfer objects. -# Enable the configuration +## Enable the configuration Module Profile works as a part of Web Profiler feature. By default, Web Profiler is disabled. To enable Web Profiler, please update `config/Shared/config_default-docker.dev.php` configuration file. diff --git a/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md b/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md index 6b38eadac7..74581e0aa5 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md +++ b/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md @@ -13,7 +13,7 @@ Gateway and ZedRestApi requests require a different stack of plugins to be proce To separate application bootstrapping into individual endpoints, take the following steps: -### 1) Update modules using Composer +## 1) Update modules using Composer Update the required modules: @@ -34,7 +34,7 @@ Update the required modules: composer update spryker/twig spryker/session spryker/router spryker/monitoring spryker/event-dispatcher spryker/application ``` -### 2) Update modules using npm +## 2) Update modules using npm Update the required module: @@ -64,7 +64,7 @@ npm install npm run zed ``` -### 3) Add application entry points +## 3) Add application entry points 1. Add the following application entry points: @@ -299,7 +299,7 @@ The maintenance page is not yet compatible with Spryker Cloud. } ``` -### 4) Separate application plugin stacks +## 4) Separate application plugin stacks 1. Replace `ApplicationDependencyProvider::getApplicationPlugins();` with separate plugin stacks per endpoint: @@ -378,7 +378,7 @@ class ApplicationDependencyProvider extends SprykerApplicationDependencyProvider ```
-### 5) Separate event dispatcher plugin stacks +## 5) Separate event dispatcher plugin stacks Update `src/Pyz/Zed/EventDispatcher/EventDispatcherDependencyProvider.php` with the following changes: @@ -422,7 +422,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency } ``` -### 6) Separate router plugin stacks +## 6) Separate router plugin stacks Replace `RouterDependencyProvider::getRouterPlugins();` with two new methods: @@ -455,7 +455,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider } ``` -### 7) Add console commands +## 7) Add console commands 1. Configure the following console commands with a router cache warmup per endpoint: @@ -514,7 +514,7 @@ sections: ... ``` -### 8) Configure the application +## 8) Configure the application 1. Configure the Back Office error page, default port, and the ACL rule for the rest endpoint: @@ -589,7 +589,7 @@ class SecurityGuiConfig extends SprykerSecurityGuiConfig Make sure to do this at least 5 working days prior to the planned change. -### 9) Update the Docker SDK +## 9) Update the Docker SDK 1. Update the Docker SDK to version `1.36.1` or higher. 2. In the needed deploy files, replace the `zed` application with `backoffice`, `backend-gateway` and `backend-api` as follows. diff --git a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md index e7c2ca03ac..8688693191 100644 --- a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md +++ b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md @@ -7,21 +7,21 @@ redirect_from: last_updated: Jan 18, 2023 --- -# Troubleshooting +## Troubleshooting -## `spryker-sdk` command not found. +### `spryker-sdk` command not found. The `spryker-sdk` command cannot be found. -## Description +### Description The `spryker-sdk` command cannot be found. -## Cause +### Cause The command might not exist in your file. -## Solution +### Solution 1. Add the command manually to your `shell rc` file. Depending on your shell it can be `~/.bashrc`, `~/.zshrc`, `~/.profile`, and other names. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index b389e6be21..8f349b7a7c 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -27,7 +27,7 @@ related: link: docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/checkout/checkout-steps.html --- -### Checkout process +## Checkout process To use the checkout in Yves, you need to configure it correctly and provide dependencies. Each step can have a form, a controller action, the implementation of the step logic, and a Twig template to render the HTML. @@ -54,13 +54,13 @@ Using a data provider is the only way to pass any external data to the form and Each data provider is passed when `FormCollection` is created. When the handle method is called, the `FormCollection` handler creates all form types and passes the data from data providers to them. -### Checkout quote transfer lifetime +## Checkout quote transfer lifetime ![Quote_transfer_lifetime.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/quote-transfer-lifetime.png) When a process or `postCondition()` is called on `StepProcess`, it tries to get the current valid step by walking through the stack of steps and calling `postCondition()` for each, starting from the first in the stack. If `postCondition()` fails, then this step is used for later processing. After that, the view variables with `QuoteTransfer` and form are passed to Twig, and the HTML is rendered. -#### Postcondition +### Postcondition _Postcondition_ is an essential part of the Processing step. It indicates if a step has all the data that it needs and if its requirements are satisfied. You can't access the next step from the stack if the previous step's postconditions are not met, but you can navigate to any step where postconditions are satisfied (`return true`). @@ -68,17 +68,17 @@ Postconditions are called twice per step processing: * To find the current step or if we can access the current step. * After `execute()`, to make sure the step was completed and that we can continue to the next step. -#### Postcondition error route +### Postcondition error route Inside your step, you can set a postcondition error route if you need to redirect to another error route than the one specified during the step construction. -### How the quote transfer is mapped inside forms +## How the quote transfer is mapped inside forms Symfony forms provide a mechanism to store data into objects without needing manual mapping. It's called [Data transformers](https://symfony.com/doc/current/form/data_transformers.html). There are a few important conditions required to make this work. Because you are passing the entire `QuoteTransfer`, the form handler does not know which fields you are trying to use. Symfony provides a few ways to handle this situation: * Using [property_path](https://symfony.com/doc/current/reference/forms/types/form.html#property-path) configuration directive. It uses the full path to object property you are about to map form into—for example, `payment.paypal` maps your form to `QuoteTransfer:payment:paypal`; this works when the property is not on the same level and when you are using subforms. * Using the main form that includes subforms. Each subform has to be configured with the `data_class` option, which is the FQCN of the transfer object you are about to use. This works when the property is on the top level. -### Checkout form submission +## Checkout form submission On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. @@ -88,17 +88,17 @@ For example, add the address to `QuoteTransfer` or get payment details from Zed, You decide what to do in each `execute()` method. It's essential that after `execute()` runs, the updated returned `QuoteTransfer` must satisfy `postCondition()` so that `StepProcess` can take another step from the stack. -#### Required input +### Required input Normally each step requires input from the customer. However, there are cases when there is no need to render a form or a view, but some processing is still required, that is, `PlaceOrderStep` and `EntryStep`. Each step provides the implementation of the `requireInput()` method. `StepProcess` calls this method and reacts accordingly. If `requireInput()` is false, after running `execute()`, `postConditions` must be satisfied. -#### Precondition and escape route +### Precondition and escape route Preconditions are called before each step; this is a check to indicate that the step can't be processed in a usual way. For example, the cart is empty. If `preCondition()` returns false, the customer is redirected to `escapeRoute` provided when configuring the step. -#### External redirect URL +### External redirect URL Sometimes it's required to redirect the customer to an external URL (outside application). The step must implement `StepWithExternalRedirectInterface::getExternalRedirectUrl()`, which returns the URL to redirect customer after `execute()` is ran. @@ -110,11 +110,11 @@ Each step must implement `StepInterface`. ![Step_flow.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/step-flow.png) -### Placing the order +## Placing the order After the customer clicks the submit button during `SummaryStep`, `PlaceOrderStep` is started. This step takes `QuoteTransfer` and starts the checkout workflow to store the order in the system. Zed's Checkout module contains some plugins where you can add additional behavior, check preconditions, and save or execute postcondition checks. -#### Plugins +### Plugins Zed's Checkout module contains four types of plugins to extend the behavior on placing an order. Any plugin has access to `QuoteTransfer` that is supposed to be read-only and `CheckoutResponseTransfer` data object that can be modified. @@ -123,7 +123,7 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `CheckPostConditions`—is for checking conditions after saving, the last time to react if something did not happen according to plan. It's called after the state machine execution. * `PostSaveHook`—is called after order placement, and sets the success flag to false, if redirect must be headed to an error page afterward. -#### Checkout response transfer +### Checkout response transfer * `isSuccess` (boolean)—indicates if the checkout process was successful. * errors (`CheckoutErrorTransfer`)—list of errors that occurred during the execution of the plugins. @@ -131,19 +131,19 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `redirectUrl` (string)—URL to redirect customer after the order was placed successfully. * `saveOrder` (`SaveOrderTransfer`)—stores ids of the items that OrderSaver plugins have saved. -#### Checkout error transfer +### Checkout error transfer * `errorCode` (int)—numeric error code. The checkout error codes are listed in the following section [Checkout error codes](#checkout-error-codes). * `message` (string)—error message. -#### Checkout error codes +### Checkout error codes * `4001`—customer email already used. * `4002`—product unavailable. * `4003`—cart amount does not match. * `5000`—unknown error. -#### Save order transfer +### Save order transfer * `idSalesOrder` (int)—The unique ID of the current saved order. * `orderReference` (string)—An auto-generated unique ID of the order. @@ -151,12 +151,12 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p There are already some plugins implemented with each of those types: -#### Precondition plugins +### Precondition plugins * `CustomerPreConditionCheckerPlugin`—checks if the email of the customer is already used. * `ProductsAvailableCheckoutPreConditionPlugin`—check if the items contained in the cart are in stock. -#### Postcondition plugins +### Postcondition plugins * `OrderCustomerSavePlugin`—saves or creates a customer in the database if the customer is new or the ID is not set (guest customers are ignored). * `SalesOrderSaverPlugin`—saves order information and creates `sales_order` and `sales_order_item` tables. @@ -165,11 +165,11 @@ There are already some plugins implemented with each of those types: * `OrderShipmentSavePlugin`—saves order shipment information to the `sales_expense` table. * `SalesPaymentCheckoutDoSaveOrderPlugin`—saves order payments to the `spy_sales_payment` table. -#### Pre-save condition plugin +### Pre-save condition plugin `SalesOrderExpanderPlugin`—expands items by quantity and recalculate quote. -#### State machine +### State machine A state machine is triggered in the `CheckoutWorkflow` class from the Checkout module; the execution starts after precondition and order saver plugins store no errors into `CheckoutResponseTransfer`. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index b389e6be21..8f349b7a7c 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -27,7 +27,7 @@ related: link: docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/checkout/checkout-steps.html --- -### Checkout process +## Checkout process To use the checkout in Yves, you need to configure it correctly and provide dependencies. Each step can have a form, a controller action, the implementation of the step logic, and a Twig template to render the HTML. @@ -54,13 +54,13 @@ Using a data provider is the only way to pass any external data to the form and Each data provider is passed when `FormCollection` is created. When the handle method is called, the `FormCollection` handler creates all form types and passes the data from data providers to them. -### Checkout quote transfer lifetime +## Checkout quote transfer lifetime ![Quote_transfer_lifetime.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/quote-transfer-lifetime.png) When a process or `postCondition()` is called on `StepProcess`, it tries to get the current valid step by walking through the stack of steps and calling `postCondition()` for each, starting from the first in the stack. If `postCondition()` fails, then this step is used for later processing. After that, the view variables with `QuoteTransfer` and form are passed to Twig, and the HTML is rendered. -#### Postcondition +### Postcondition _Postcondition_ is an essential part of the Processing step. It indicates if a step has all the data that it needs and if its requirements are satisfied. You can't access the next step from the stack if the previous step's postconditions are not met, but you can navigate to any step where postconditions are satisfied (`return true`). @@ -68,17 +68,17 @@ Postconditions are called twice per step processing: * To find the current step or if we can access the current step. * After `execute()`, to make sure the step was completed and that we can continue to the next step. -#### Postcondition error route +### Postcondition error route Inside your step, you can set a postcondition error route if you need to redirect to another error route than the one specified during the step construction. -### How the quote transfer is mapped inside forms +## How the quote transfer is mapped inside forms Symfony forms provide a mechanism to store data into objects without needing manual mapping. It's called [Data transformers](https://symfony.com/doc/current/form/data_transformers.html). There are a few important conditions required to make this work. Because you are passing the entire `QuoteTransfer`, the form handler does not know which fields you are trying to use. Symfony provides a few ways to handle this situation: * Using [property_path](https://symfony.com/doc/current/reference/forms/types/form.html#property-path) configuration directive. It uses the full path to object property you are about to map form into—for example, `payment.paypal` maps your form to `QuoteTransfer:payment:paypal`; this works when the property is not on the same level and when you are using subforms. * Using the main form that includes subforms. Each subform has to be configured with the `data_class` option, which is the FQCN of the transfer object you are about to use. This works when the property is on the top level. -### Checkout form submission +## Checkout form submission On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. @@ -88,17 +88,17 @@ For example, add the address to `QuoteTransfer` or get payment details from Zed, You decide what to do in each `execute()` method. It's essential that after `execute()` runs, the updated returned `QuoteTransfer` must satisfy `postCondition()` so that `StepProcess` can take another step from the stack. -#### Required input +### Required input Normally each step requires input from the customer. However, there are cases when there is no need to render a form or a view, but some processing is still required, that is, `PlaceOrderStep` and `EntryStep`. Each step provides the implementation of the `requireInput()` method. `StepProcess` calls this method and reacts accordingly. If `requireInput()` is false, after running `execute()`, `postConditions` must be satisfied. -#### Precondition and escape route +### Precondition and escape route Preconditions are called before each step; this is a check to indicate that the step can't be processed in a usual way. For example, the cart is empty. If `preCondition()` returns false, the customer is redirected to `escapeRoute` provided when configuring the step. -#### External redirect URL +### External redirect URL Sometimes it's required to redirect the customer to an external URL (outside application). The step must implement `StepWithExternalRedirectInterface::getExternalRedirectUrl()`, which returns the URL to redirect customer after `execute()` is ran. @@ -110,11 +110,11 @@ Each step must implement `StepInterface`. ![Step_flow.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/step-flow.png) -### Placing the order +## Placing the order After the customer clicks the submit button during `SummaryStep`, `PlaceOrderStep` is started. This step takes `QuoteTransfer` and starts the checkout workflow to store the order in the system. Zed's Checkout module contains some plugins where you can add additional behavior, check preconditions, and save or execute postcondition checks. -#### Plugins +### Plugins Zed's Checkout module contains four types of plugins to extend the behavior on placing an order. Any plugin has access to `QuoteTransfer` that is supposed to be read-only and `CheckoutResponseTransfer` data object that can be modified. @@ -123,7 +123,7 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `CheckPostConditions`—is for checking conditions after saving, the last time to react if something did not happen according to plan. It's called after the state machine execution. * `PostSaveHook`—is called after order placement, and sets the success flag to false, if redirect must be headed to an error page afterward. -#### Checkout response transfer +### Checkout response transfer * `isSuccess` (boolean)—indicates if the checkout process was successful. * errors (`CheckoutErrorTransfer`)—list of errors that occurred during the execution of the plugins. @@ -131,19 +131,19 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `redirectUrl` (string)—URL to redirect customer after the order was placed successfully. * `saveOrder` (`SaveOrderTransfer`)—stores ids of the items that OrderSaver plugins have saved. -#### Checkout error transfer +### Checkout error transfer * `errorCode` (int)—numeric error code. The checkout error codes are listed in the following section [Checkout error codes](#checkout-error-codes). * `message` (string)—error message. -#### Checkout error codes +### Checkout error codes * `4001`—customer email already used. * `4002`—product unavailable. * `4003`—cart amount does not match. * `5000`—unknown error. -#### Save order transfer +### Save order transfer * `idSalesOrder` (int)—The unique ID of the current saved order. * `orderReference` (string)—An auto-generated unique ID of the order. @@ -151,12 +151,12 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p There are already some plugins implemented with each of those types: -#### Precondition plugins +### Precondition plugins * `CustomerPreConditionCheckerPlugin`—checks if the email of the customer is already used. * `ProductsAvailableCheckoutPreConditionPlugin`—check if the items contained in the cart are in stock. -#### Postcondition plugins +### Postcondition plugins * `OrderCustomerSavePlugin`—saves or creates a customer in the database if the customer is new or the ID is not set (guest customers are ignored). * `SalesOrderSaverPlugin`—saves order information and creates `sales_order` and `sales_order_item` tables. @@ -165,11 +165,11 @@ There are already some plugins implemented with each of those types: * `OrderShipmentSavePlugin`—saves order shipment information to the `sales_expense` table. * `SalesPaymentCheckoutDoSaveOrderPlugin`—saves order payments to the `spy_sales_payment` table. -#### Pre-save condition plugin +### Pre-save condition plugin `SalesOrderExpanderPlugin`—expands items by quantity and recalculate quote. -#### State machine +### State machine A state machine is triggered in the `CheckoutWorkflow` class from the Checkout module; the execution starts after precondition and order saver plugins store no errors into `CheckoutResponseTransfer`. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md index b389e6be21..8f349b7a7c 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/extend-and-customize/checkout-process-review-and-implementation.md @@ -27,7 +27,7 @@ related: link: docs/scos/dev/back-end-development/data-manipulation/datapayload-conversion/checkout/checkout-steps.html --- -### Checkout process +## Checkout process To use the checkout in Yves, you need to configure it correctly and provide dependencies. Each step can have a form, a controller action, the implementation of the step logic, and a Twig template to render the HTML. @@ -54,13 +54,13 @@ Using a data provider is the only way to pass any external data to the form and Each data provider is passed when `FormCollection` is created. When the handle method is called, the `FormCollection` handler creates all form types and passes the data from data providers to them. -### Checkout quote transfer lifetime +## Checkout quote transfer lifetime ![Quote_transfer_lifetime.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/quote-transfer-lifetime.png) When a process or `postCondition()` is called on `StepProcess`, it tries to get the current valid step by walking through the stack of steps and calling `postCondition()` for each, starting from the first in the stack. If `postCondition()` fails, then this step is used for later processing. After that, the view variables with `QuoteTransfer` and form are passed to Twig, and the HTML is rendered. -#### Postcondition +### Postcondition _Postcondition_ is an essential part of the Processing step. It indicates if a step has all the data that it needs and if its requirements are satisfied. You can't access the next step from the stack if the previous step's postconditions are not met, but you can navigate to any step where postconditions are satisfied (`return true`). @@ -68,17 +68,17 @@ Postconditions are called twice per step processing: * To find the current step or if we can access the current step. * After `execute()`, to make sure the step was completed and that we can continue to the next step. -#### Postcondition error route +### Postcondition error route Inside your step, you can set a postcondition error route if you need to redirect to another error route than the one specified during the step construction. -### How the quote transfer is mapped inside forms +## How the quote transfer is mapped inside forms Symfony forms provide a mechanism to store data into objects without needing manual mapping. It's called [Data transformers](https://symfony.com/doc/current/form/data_transformers.html). There are a few important conditions required to make this work. Because you are passing the entire `QuoteTransfer`, the form handler does not know which fields you are trying to use. Symfony provides a few ways to handle this situation: * Using [property_path](https://symfony.com/doc/current/reference/forms/types/form.html#property-path) configuration directive. It uses the full path to object property you are about to map form into—for example, `payment.paypal` maps your form to `QuoteTransfer:payment:paypal`; this works when the property is not on the same level and when you are using subforms. * Using the main form that includes subforms. Each subform has to be configured with the `data_class` option, which is the FQCN of the transfer object you are about to use. This works when the property is on the top level. -### Checkout form submission +## Checkout form submission On form submission, the same processing starts with the difference that if form submit's detected, then the validation is called: * If the form is invalid, then the view is rendered with validation errors. @@ -88,17 +88,17 @@ For example, add the address to `QuoteTransfer` or get payment details from Zed, You decide what to do in each `execute()` method. It's essential that after `execute()` runs, the updated returned `QuoteTransfer` must satisfy `postCondition()` so that `StepProcess` can take another step from the stack. -#### Required input +### Required input Normally each step requires input from the customer. However, there are cases when there is no need to render a form or a view, but some processing is still required, that is, `PlaceOrderStep` and `EntryStep`. Each step provides the implementation of the `requireInput()` method. `StepProcess` calls this method and reacts accordingly. If `requireInput()` is false, after running `execute()`, `postConditions` must be satisfied. -#### Precondition and escape route +### Precondition and escape route Preconditions are called before each step; this is a check to indicate that the step can't be processed in a usual way. For example, the cart is empty. If `preCondition()` returns false, the customer is redirected to `escapeRoute` provided when configuring the step. -#### External redirect URL +### External redirect URL Sometimes it's required to redirect the customer to an external URL (outside application). The step must implement `StepWithExternalRedirectInterface::getExternalRedirectUrl()`, which returns the URL to redirect customer after `execute()` is ran. @@ -110,11 +110,11 @@ Each step must implement `StepInterface`. ![Step_flow.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Checkout/Multi-Step+Checkout/Checkout+Process/step-flow.png) -### Placing the order +## Placing the order After the customer clicks the submit button during `SummaryStep`, `PlaceOrderStep` is started. This step takes `QuoteTransfer` and starts the checkout workflow to store the order in the system. Zed's Checkout module contains some plugins where you can add additional behavior, check preconditions, and save or execute postcondition checks. -#### Plugins +### Plugins Zed's Checkout module contains four types of plugins to extend the behavior on placing an order. Any plugin has access to `QuoteTransfer` that is supposed to be read-only and `CheckoutResponseTransfer` data object that can be modified. @@ -123,7 +123,7 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `CheckPostConditions`—is for checking conditions after saving, the last time to react if something did not happen according to plan. It's called after the state machine execution. * `PostSaveHook`—is called after order placement, and sets the success flag to false, if redirect must be headed to an error page afterward. -#### Checkout response transfer +### Checkout response transfer * `isSuccess` (boolean)—indicates if the checkout process was successful. * errors (`CheckoutErrorTransfer`)—list of errors that occurred during the execution of the plugins. @@ -131,19 +131,19 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p * `redirectUrl` (string)—URL to redirect customer after the order was placed successfully. * `saveOrder` (`SaveOrderTransfer`)—stores ids of the items that OrderSaver plugins have saved. -#### Checkout error transfer +### Checkout error transfer * `errorCode` (int)—numeric error code. The checkout error codes are listed in the following section [Checkout error codes](#checkout-error-codes). * `message` (string)—error message. -#### Checkout error codes +### Checkout error codes * `4001`—customer email already used. * `4002`—product unavailable. * `4003`—cart amount does not match. * `5000`—unknown error. -#### Save order transfer +### Save order transfer * `idSalesOrder` (int)—The unique ID of the current saved order. * `orderReference` (string)—An auto-generated unique ID of the order. @@ -151,12 +151,12 @@ Zed's Checkout module contains four types of plugins to extend the behavior on p There are already some plugins implemented with each of those types: -#### Precondition plugins +### Precondition plugins * `CustomerPreConditionCheckerPlugin`—checks if the email of the customer is already used. * `ProductsAvailableCheckoutPreConditionPlugin`—check if the items contained in the cart are in stock. -#### Postcondition plugins +### Postcondition plugins * `OrderCustomerSavePlugin`—saves or creates a customer in the database if the customer is new or the ID is not set (guest customers are ignored). * `SalesOrderSaverPlugin`—saves order information and creates `sales_order` and `sales_order_item` tables. @@ -165,11 +165,11 @@ There are already some plugins implemented with each of those types: * `OrderShipmentSavePlugin`—saves order shipment information to the `sales_expense` table. * `SalesPaymentCheckoutDoSaveOrderPlugin`—saves order payments to the `spy_sales_payment` table. -#### Pre-save condition plugin +### Pre-save condition plugin `SalesOrderExpanderPlugin`—expands items by quantity and recalculate quote. -#### State machine +### State machine A state machine is triggered in the `CheckoutWorkflow` class from the Checkout module; the execution starts after precondition and order saver plugins store no errors into `CheckoutResponseTransfer`. diff --git a/docs/pbc/all/emails/202311.0/third-party-integrations/integrate-inxmail.md b/docs/pbc/all/emails/202311.0/third-party-integrations/integrate-inxmail.md index 5dc114886e..c1b9eb52d7 100644 --- a/docs/pbc/all/emails/202311.0/third-party-integrations/integrate-inxmail.md +++ b/docs/pbc/all/emails/202311.0/third-party-integrations/integrate-inxmail.md @@ -10,7 +10,7 @@ redirect_from: This document desribes how to integrate Inxmail. -### New customer registration event +## 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.` @@ -32,7 +32,7 @@ Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\Inxmai } ``` -### The customer asked to reset password event +## 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` diff --git a/docs/pbc/all/emails/202404.0/third-party-integrations/integrate-inxmail.md b/docs/pbc/all/emails/202404.0/third-party-integrations/integrate-inxmail.md index 5dc114886e..c1b9eb52d7 100644 --- a/docs/pbc/all/emails/202404.0/third-party-integrations/integrate-inxmail.md +++ b/docs/pbc/all/emails/202404.0/third-party-integrations/integrate-inxmail.md @@ -10,7 +10,7 @@ redirect_from: This document desribes how to integrate Inxmail. -### New customer registration event +## 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.` @@ -32,7 +32,7 @@ Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\Inxmai } ``` -### The customer asked to reset password event +## 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` diff --git a/docs/pbc/all/emails/202410.0/third-party-integrations/integrate-inxmail.md b/docs/pbc/all/emails/202410.0/third-party-integrations/integrate-inxmail.md index 7b1a15e226..a30ae01258 100644 --- a/docs/pbc/all/emails/202410.0/third-party-integrations/integrate-inxmail.md +++ b/docs/pbc/all/emails/202410.0/third-party-integrations/integrate-inxmail.md @@ -10,7 +10,7 @@ redirect_from: This document desribes how to integrate Inxmail. -### New customer registration event +## 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.` @@ -32,7 +32,7 @@ Inxmail module has `\SprykerEco\Zed\Inxmail\Communication\Plugin\Customer\Inxmai } ``` -### The customer asked to reset password event +## 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` diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index 3983f6f3c1..5c991ee245 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/install-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,15 +48,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = '31HA0 ``` This value should be taken from HEIDELPAY. -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with a radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote being filled with payment method selection as default. -#### Summary Review and Order +### Summary Review and Order Submitting diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 5eb276aed0..9bc2385216 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-split-payment-marketplace-payment-method-for-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/configure-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -49,15 +49,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote is filled with payment method selection by default. -### Workflow: Summary Review and Order Submitting +## Workflow: Summary Review and Order Submitting **On "save order" event** save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md index 3f7a46307d..2017f00830 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/heidelpay-workflow-for-errors.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,17 +48,17 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA ``` This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment step submit +### Payment step submit No extra actions needed, quote being filled with payment method selection as default. -### Workflow +## Workflow -#### Summary Review and Order Submitting +### Summary Review and Order Submitting **On "save order" event** - save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md index bb91fd36b9..84190a6bd6 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md @@ -11,15 +11,15 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html --- -# Unzer feature integration +## Unzer feature integration This document describes how to integrate [Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/unzer.html) into your project. -## Install feature core +### Install feature core To integrate the Unzer, follow these steps. -### Prerequisites +#### Prerequisites [Install and configure Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html). @@ -29,7 +29,7 @@ The following state machines are examples of the payment service provider flow. {% endinfo_block %} -### 1) Set up the configuration +#### 1) Set up the configuration 1. Add the Unzer OMS processes to the project on the project level or provide your own: @@ -80,7 +80,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ --- -### 2) Set up database schema and transfer objects +#### 2) Set up database schema and transfer objects Apply database changes and generate entity and transfer changes: @@ -233,7 +233,7 @@ Make sure that the following changes have been triggered in transfer objects: --- -### 3) Add translations +#### 3) Add translations Append glossary according to your configuration: @@ -278,7 +278,7 @@ Make sure that, in the database, the configured data are added to the `spy_gloss --- -### 4) Add Zed translations +#### 4) Add Zed translations Generate a new translation cache for Zed: @@ -294,7 +294,7 @@ Make sure that all labels and help tooltips in the Unzer forms have English and --- -### 5) Set up behavior +#### 5) Set up behavior Set up the following behaviors: @@ -685,11 +685,11 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr --- -## Install feature frontend +### Install feature frontend Follow these steps to install the Unzer feature front end. -### 1) Set up behavior +#### 1) Set up behavior Set up the following behaviors: @@ -732,7 +732,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider
-### 2) Set up template +#### 2) Set up template
src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig @@ -753,7 +753,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider
-### 3) Enable Javascript and CSS changes +#### 3) Enable Javascript and CSS changes ```bash console frontend:yves:build diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index 3983f6f3c1..5c991ee245 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/install-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,15 +48,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = '31HA0 ``` This value should be taken from HEIDELPAY. -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with a radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote being filled with payment method selection as default. -#### Summary Review and Order +### Summary Review and Order Submitting diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 5eb276aed0..9bc2385216 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-split-payment-marketplace-payment-method-for-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/configure-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -49,15 +49,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote is filled with payment method selection by default. -### Workflow: Summary Review and Order Submitting +## Workflow: Summary Review and Order Submitting **On "save order" event** save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md index 3f7a46307d..2017f00830 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/heidelpay-workflow-for-errors.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,17 +48,17 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA ``` This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment step submit +### Payment step submit No extra actions needed, quote being filled with payment method selection as default. -### Workflow +## Workflow -#### Summary Review and Order Submitting +### Summary Review and Order Submitting **On "save order" event** - save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md index bb91fd36b9..84190a6bd6 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md @@ -11,15 +11,15 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html --- -# Unzer feature integration +## Unzer feature integration This document describes how to integrate [Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/unzer.html) into your project. -## Install feature core +### Install feature core To integrate the Unzer, follow these steps. -### Prerequisites +#### Prerequisites [Install and configure Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html). @@ -29,7 +29,7 @@ The following state machines are examples of the payment service provider flow. {% endinfo_block %} -### 1) Set up the configuration +#### 1) Set up the configuration 1. Add the Unzer OMS processes to the project on the project level or provide your own: @@ -80,7 +80,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ --- -### 2) Set up database schema and transfer objects +#### 2) Set up database schema and transfer objects Apply database changes and generate entity and transfer changes: @@ -233,7 +233,7 @@ Make sure that the following changes have been triggered in transfer objects: --- -### 3) Add translations +#### 3) Add translations Append glossary according to your configuration: @@ -278,7 +278,7 @@ Make sure that, in the database, the configured data are added to the `spy_gloss --- -### 4) Add Zed translations +#### 4) Add Zed translations Generate a new translation cache for Zed: @@ -294,7 +294,7 @@ Make sure that all labels and help tooltips in the Unzer forms have English and --- -### 5) Set up behavior +#### 5) Set up behavior Set up the following behaviors: @@ -685,11 +685,11 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr --- -## Install feature frontend +### Install feature frontend Follow these steps to install the Unzer feature front end. -### 1) Set up behavior +#### 1) Set up behavior Set up the following behaviors: @@ -732,7 +732,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider -### 2) Set up template +#### 2) Set up template
src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig @@ -753,7 +753,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider
-### 3) Enable Javascript and CSS changes +#### 3) Enable Javascript and CSS changes ```bash console frontend:yves:build diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md index f59415c1dd..a1951db1d9 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-ideal-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/install-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,15 +48,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_IDEAL] = '31HA0 ``` This value should be taken from HEIDELPAY. -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with a radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote being filled with payment method selection as default. -#### Summary Review and Order +### Summary Review and Order Submitting diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md index 5eb276aed0..9bc2385216 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-authorize-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-split-payment-marketplace-payment-method-for-heidelpay.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/configure-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -49,15 +49,15 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment Step Submitting +### Payment Step Submitting No extra actions needed, quote is filled with payment method selection by default. -### Workflow: Summary Review and Order Submitting +## Workflow: Summary Review and Order Submitting **On "save order" event** save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md index 3f7a46307d..2017f00830 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/heidelpay/integrate-payment-methods-for-heidelpay/integrate-the-paypal-debit-payment-method-for-heidelpay.md @@ -35,11 +35,11 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/heidelpay/heidelpay-workflow-for-errors.html --- -### Setup +## Setup The following configuration should be made after Heidelpay has been [installed](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/install-heidelpay.html) and [integrated](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/heidelpay/integrate-heidelpay.html). -#### Configuration +### Configuration Example (for testing only): @@ -48,17 +48,17 @@ $config[HeidelpayConstants::CONFIG_HEIDELPAY_TRANSACTION_CHANNEL_PAYPAL] = '31HA ``` This value should be taken from HEIDELPAY -#### Checkout Payment Step Display +### Checkout Payment Step Display Displays payment method name with radio button. No extra input fields are required. -#### Payment step submit +### Payment step submit No extra actions needed, quote being filled with payment method selection as default. -### Workflow +## Workflow -#### Summary Review and Order Submitting +### Summary Review and Order Submitting **On "save order" event** - save Heidelpay payment per order and items, as usual. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md index 7bf4099f4f..754f766c89 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/unzer/install-unzer/integrate-unzer.md @@ -11,15 +11,15 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html --- -# Unzer feature integration +## Unzer feature integration This document describes how to integrate [Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/unzer.html) into your project. -## Install feature core +### Install feature core To integrate the Unzer, follow these steps. -### Prerequisites +#### Prerequisites [Install and configure Unzer](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/unzer/install-unzer/install-and-configure-unzer.html). @@ -29,7 +29,7 @@ The following state machines are examples of the payment service provider flow. {% endinfo_block %} -### 1) Set up the configuration +#### 1) Set up the configuration 1. Add the Unzer OMS processes to the project on the project level or provide your own: @@ -80,7 +80,7 @@ $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [ --- -### 2) Set up database schema and transfer objects +#### 2) Set up database schema and transfer objects Apply database changes and generate entity and transfer changes: @@ -233,7 +233,7 @@ Make sure that the following changes have been triggered in transfer objects: --- -### 3) Add translations +#### 3) Add translations Append glossary according to your configuration: @@ -278,7 +278,7 @@ Make sure that, in the database, the configured data are added to the `spy_gloss --- -### 4) Add Zed translations +#### 4) Add Zed translations Generate a new translation cache for Zed: @@ -294,7 +294,7 @@ Make sure that all labels and help tooltips in the Unzer forms have English and --- -### 5) Set up behavior +#### 5) Set up behavior Set up the following behaviors: @@ -685,11 +685,11 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr --- -## Install feature frontend +### Install feature frontend Follow these steps to install the Unzer feature front end. -### 1) Set up behavior +#### 1) Set up behavior Set up the following behaviors: @@ -732,7 +732,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider -### 2) Set up template +#### 2) Set up template
src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig @@ -753,7 +753,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider
-### 3) Enable Javascript and CSS changes +#### 3) Enable Javascript and CSS changes ```bash console frontend:yves:build diff --git a/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md b/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md index 3547e0d31a..2ff67a56c1 100644 --- a/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md +++ b/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md @@ -51,7 +51,7 @@ When a query returns hundreds or thousands of results, the most relevant to the A common solution is to manually assign ranks to products (sometimes even within categories). However, this approach is not practical for large catalogs and might result in a bad search experience—for example, when products that are out of stock are listed at the top because of their manually assigned rank. -### Sorting by formulas based on scores +## Sorting by formulas based on scores We recommend an approach where a list of normalized scores per product at import time is precomputed and included in the documents that are sent to Elasticsearch. These are the scores from our previous hammer example (the interesting scores are left out because of the sensitivity of this information): @@ -138,7 +138,7 @@ In queries, search results are sorted using an algebraic expression that combine Very different kinds of scoring functions are conceivable, and the advantages of combining scores at query time are twofold: Your stakeholders (category and product managers) can help you in finding good formulas by testing the effect of different expressions on the sorting of actual queries at run-time. Second, you can use different ranking strategies on different parts of the website. -### Computing normalized scores +## Computing normalized scores To combine scores in such expressions, we normalize them between 0 and 1 and try to make sure that they are more or less equally distributed across all documents. If, for example, the ranking formula is *0.3 * score_1 + 0.7 * score_2* and the scores are in the same range, then you could say that score_1 has a 30% influence on the outcome of the sorting and score_2 an influence of 70%. The equal distribution is important because if, for example, most documents have a very high score_2, then having a high score_2 becomes much more important for appearing at the top of the ranking than having a high score_1 (an effect that can be consciously used). diff --git a/docs/pbc/all/search/202311.0/base-shop/best-practices/generic-faceted-search.md b/docs/pbc/all/search/202311.0/base-shop/best-practices/generic-faceted-search.md index eefe86552c..e969f8ec4b 100644 --- a/docs/pbc/all/search/202311.0/base-shop/best-practices/generic-faceted-search.md +++ b/docs/pbc/all/search/202311.0/base-shop/best-practices/generic-faceted-search.md @@ -55,7 +55,7 @@ The main idea behind faceted search is to present the attributes of the document To support faceted search, Elasticsearch offers a simple but powerful concept of aggregations. One of the nice features of aggregations is that they can be nested. In other words, you can define top-level aggregations that create "buckets" of documents and other aggregations that are executed inside those buckets on a subset of documents. The concept of aggregations is in general similar to the SQL `GROUP_BY` command (but much more powerful). Nested aggregations are analogous to SQL grouping but with multiple column names in the GROUP BY part of the query. -### Indexing facet values +## Indexing facet values Before building aggregations, document attributes that can serve as facets need to be indexed in Elasticsearch. One way to index them is to list all attributes and their values under the same field like in the following example: @@ -140,7 +140,7 @@ This requires special treatment in the mapping because otherwise, Elasticsearch } ``` -### Facet queries +## Facet queries Filtering and aggregating a structure like this requires nested filters and nested aggregations in queries. diff --git a/docs/pbc/all/search/202404.0/base-shop/best-practices/data-driven-ranking.md b/docs/pbc/all/search/202404.0/base-shop/best-practices/data-driven-ranking.md index 3547e0d31a..2ff67a56c1 100644 --- a/docs/pbc/all/search/202404.0/base-shop/best-practices/data-driven-ranking.md +++ b/docs/pbc/all/search/202404.0/base-shop/best-practices/data-driven-ranking.md @@ -51,7 +51,7 @@ When a query returns hundreds or thousands of results, the most relevant to the A common solution is to manually assign ranks to products (sometimes even within categories). However, this approach is not practical for large catalogs and might result in a bad search experience—for example, when products that are out of stock are listed at the top because of their manually assigned rank. -### Sorting by formulas based on scores +## Sorting by formulas based on scores We recommend an approach where a list of normalized scores per product at import time is precomputed and included in the documents that are sent to Elasticsearch. These are the scores from our previous hammer example (the interesting scores are left out because of the sensitivity of this information): @@ -138,7 +138,7 @@ In queries, search results are sorted using an algebraic expression that combine Very different kinds of scoring functions are conceivable, and the advantages of combining scores at query time are twofold: Your stakeholders (category and product managers) can help you in finding good formulas by testing the effect of different expressions on the sorting of actual queries at run-time. Second, you can use different ranking strategies on different parts of the website. -### Computing normalized scores +## Computing normalized scores To combine scores in such expressions, we normalize them between 0 and 1 and try to make sure that they are more or less equally distributed across all documents. If, for example, the ranking formula is *0.3 * score_1 + 0.7 * score_2* and the scores are in the same range, then you could say that score_1 has a 30% influence on the outcome of the sorting and score_2 an influence of 70%. The equal distribution is important because if, for example, most documents have a very high score_2, then having a high score_2 becomes much more important for appearing at the top of the ranking than having a high score_1 (an effect that can be consciously used). diff --git a/docs/pbc/all/search/202404.0/base-shop/best-practices/generic-faceted-search.md b/docs/pbc/all/search/202404.0/base-shop/best-practices/generic-faceted-search.md index eefe86552c..e969f8ec4b 100644 --- a/docs/pbc/all/search/202404.0/base-shop/best-practices/generic-faceted-search.md +++ b/docs/pbc/all/search/202404.0/base-shop/best-practices/generic-faceted-search.md @@ -55,7 +55,7 @@ The main idea behind faceted search is to present the attributes of the document To support faceted search, Elasticsearch offers a simple but powerful concept of aggregations. One of the nice features of aggregations is that they can be nested. In other words, you can define top-level aggregations that create "buckets" of documents and other aggregations that are executed inside those buckets on a subset of documents. The concept of aggregations is in general similar to the SQL `GROUP_BY` command (but much more powerful). Nested aggregations are analogous to SQL grouping but with multiple column names in the GROUP BY part of the query. -### Indexing facet values +## Indexing facet values Before building aggregations, document attributes that can serve as facets need to be indexed in Elasticsearch. One way to index them is to list all attributes and their values under the same field like in the following example: @@ -140,7 +140,7 @@ This requires special treatment in the mapping because otherwise, Elasticsearch } ``` -### Facet queries +## Facet queries Filtering and aggregating a structure like this requires nested filters and nested aggregations in queries. diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/data-driven-ranking.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/data-driven-ranking.md index 3547e0d31a..2ff67a56c1 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/data-driven-ranking.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/data-driven-ranking.md @@ -51,7 +51,7 @@ When a query returns hundreds or thousands of results, the most relevant to the A common solution is to manually assign ranks to products (sometimes even within categories). However, this approach is not practical for large catalogs and might result in a bad search experience—for example, when products that are out of stock are listed at the top because of their manually assigned rank. -### Sorting by formulas based on scores +## Sorting by formulas based on scores We recommend an approach where a list of normalized scores per product at import time is precomputed and included in the documents that are sent to Elasticsearch. These are the scores from our previous hammer example (the interesting scores are left out because of the sensitivity of this information): @@ -138,7 +138,7 @@ In queries, search results are sorted using an algebraic expression that combine Very different kinds of scoring functions are conceivable, and the advantages of combining scores at query time are twofold: Your stakeholders (category and product managers) can help you in finding good formulas by testing the effect of different expressions on the sorting of actual queries at run-time. Second, you can use different ranking strategies on different parts of the website. -### Computing normalized scores +## Computing normalized scores To combine scores in such expressions, we normalize them between 0 and 1 and try to make sure that they are more or less equally distributed across all documents. If, for example, the ranking formula is *0.3 * score_1 + 0.7 * score_2* and the scores are in the same range, then you could say that score_1 has a 30% influence on the outcome of the sorting and score_2 an influence of 70%. The equal distribution is important because if, for example, most documents have a very high score_2, then having a high score_2 becomes much more important for appearing at the top of the ranking than having a high score_1 (an effect that can be consciously used). diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/generic-faceted-search.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/generic-faceted-search.md index eefe86552c..e969f8ec4b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/generic-faceted-search.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/generic-faceted-search.md @@ -55,7 +55,7 @@ The main idea behind faceted search is to present the attributes of the document To support faceted search, Elasticsearch offers a simple but powerful concept of aggregations. One of the nice features of aggregations is that they can be nested. In other words, you can define top-level aggregations that create "buckets" of documents and other aggregations that are executed inside those buckets on a subset of documents. The concept of aggregations is in general similar to the SQL `GROUP_BY` command (but much more powerful). Nested aggregations are analogous to SQL grouping but with multiple column names in the GROUP BY part of the query. -### Indexing facet values +## Indexing facet values Before building aggregations, document attributes that can serve as facets need to be indexed in Elasticsearch. One way to index them is to list all attributes and their values under the same field like in the following example: @@ -140,7 +140,7 @@ This requires special treatment in the mapping because otherwise, Elasticsearch } ``` -### Facet queries +## Facet queries Filtering and aggregating a structure like this requires nested filters and nested aggregations in queries. From 7f9c2d05ca3978a736e96213eeb49230a1ab9295 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 16:46:23 +0200 Subject: [PATCH 44/46] checker --- .../heading_level_checker.js} | 0 .../run_heading_level_checker.md | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+) rename _scripts/{fix-headings.js => heading_level_checker/heading_level_checker.js} (100%) create mode 100644 _scripts/heading_level_checker/run_heading_level_checker.md diff --git a/_scripts/fix-headings.js b/_scripts/heading_level_checker/heading_level_checker.js similarity index 100% rename from _scripts/fix-headings.js rename to _scripts/heading_level_checker/heading_level_checker.js diff --git a/_scripts/heading_level_checker/run_heading_level_checker.md b/_scripts/heading_level_checker/run_heading_level_checker.md new file mode 100644 index 0000000000..d944167566 --- /dev/null +++ b/_scripts/heading_level_checker/run_heading_level_checker.md @@ -0,0 +1,19 @@ +The heading level checker checks and corrects headings according to the standard convention. The standard hierarchy of headings in a document body is h2>h3>h4. h1 is a document's title, which is part of the front matter. The script checks and shifts the highest-level heading to be h2. Then it shifts the other headings to follow the hierarchy. + +Run the checker in the `docs` folder: + +```bash +node _scripts/fix-headings.js +``` + +Run the checker for a particular file or folder: + +```bash +_scripts/fix-headings.js {PATH_TO_FILE} +``` + +Example of a targeted run: + +```bash +_scripts/fix-headings.js docs/dg/dev/guidelines/coding-guidelines +``` From 590c444c5dfd147fa10c6935c99e8e630f8bb1d1 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 4 Jan 2025 16:48:21 +0200 Subject: [PATCH 45/46] Update run_heading_level_checker.md --- _scripts/heading_level_checker/run_heading_level_checker.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_scripts/heading_level_checker/run_heading_level_checker.md b/_scripts/heading_level_checker/run_heading_level_checker.md index d944167566..b507e34ce0 100644 --- a/_scripts/heading_level_checker/run_heading_level_checker.md +++ b/_scripts/heading_level_checker/run_heading_level_checker.md @@ -3,17 +3,17 @@ The heading level checker checks and corrects headings according to the standard Run the checker in the `docs` folder: ```bash -node _scripts/fix-headings.js +node _scripts/heading_level_checker/heading_level_checker.js ``` Run the checker for a particular file or folder: ```bash -_scripts/fix-headings.js {PATH_TO_FILE} +node _scripts/heading_level_checker/heading_level_checker.js {PATH_TO_FILE} ``` Example of a targeted run: ```bash -_scripts/fix-headings.js docs/dg/dev/guidelines/coding-guidelines +node _scripts/heading_level_checker/heading_level_checker.js docs/dg/dev/guidelines/coding-guidelines ``` From 2c1f1abe9230aba7d6b18af3dd8658b5498505ce Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Mon, 6 Jan 2025 11:29:16 +0200 Subject: [PATCH 46/46] Update Rakefile --- Rakefile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Rakefile b/Rakefile index 96c6f94234..e3c0a51d07 100644 --- a/Rakefile +++ b/Rakefile @@ -84,6 +84,7 @@ commonOptions = { /twitter.com\/[\.\w\-\/\?]+/, /www.optimise-it.de\/[\.\w\-\/\?]+/, /blackfire.io\/[\.\w\-\/\?]+/, + /www.cdata.com/virtuality\/[\.\w\-\/\?]+/, /dixa.com\/[\.\w\-\/\?]+/, /rxjs.dev\/[\.\w\-\/\?]+/, /www.blackfire.io\/[\.\w\-\/\?]+/, @@ -96,10 +97,12 @@ commonOptions = { /code.visualstudio.com\/[\.\w\-\/\?]+/, /www.jetbrains.com\/[\.\w\-\/\?]+/, /docs.spring.io\/[\.\w\-\/\?]+/, - "http://redisdesktop.com/", - "https://developer.computop.com/display/EN/Test+Cards", - "https://www.centralbank.cy/", - "https://www.facebook.com/Spryker/" + /redisdesktop.com\/[\.\w\-\/\?]+/, + /developer.computop.com/display/EN/Test+Cards\/[\.\w\-\/\?]+/, + /www.centralbank.cy\/[\.\w\-\/\?]+/, + /dashboard.algolia.com/\/[\.\w\-\/\?]+/, + /www.facebook.com/Spryker\/[\.\w\-\/\?]+/ + ], :ignore_files => [], :typhoeus => {