<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Spryker Documentation</title>
        <description>Spryker documentation center.</description>
        <link>https://docs-archive.spryker.com/</link>
        <atom:link href="https://docs-archive.spryker.com/feed.xml" rel="self" type="application/rss+xml"/>
        <lastBuildDate>Fri, 20 Mar 2026 12:13:39 +0000</lastBuildDate>
        <generator>Jekyll v4.2.2</generator>
        
        
        <item>
            <title>Xentral</title>
            <description>## Partner Information

[ABOUT XENTRAL](https://xentral.com/en/)

Xentral is a flexible ERP / CRM software that can be configured according to individual requirements. Xentral is available in four basic versions with different range of functions. The App-Store contains over 100 modules such as sales cockpit, automated warehouse management or major manufacturing programs that can be installed with just a few clicks. In addition, Xentral offers interfaces to all common online shop systems and marketplaces, shipping service providers, payment providers and much more.

YOUR ADVANTAGES:
- Flexible ERP software in 4 basic versions
- Connected to our own Xentral App-Store
- More than 100 modules and interfaces can be installed with just a few clicks
- Xentral is based on open-source technologies: opportunity to develop own interfaces
- that can be connected to Xentral
- Xentral provides interfaces to all common online shop systems, shipping service
- providers, payment providers and more

---

## Copyright and Disclaimer

See [Disclaimer](https://github.com/spryker/spryker-documentation).

---
For further information on this partner and integration into Spryker,  contact us.

&lt;div class=&quot;hubspot-form js-hubspot-form&quot; data-portal-id=&quot;2770802&quot; data-form-id=&quot;163e11fb-e833-4638-86ae-a2ca4b929a41&quot; id=&quot;hubspot-1&quot;&gt;&lt;/div&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/third-party-integrations/xentral.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/third-party-integrations/xentral.html</guid>
            
            
        </item>
        
        <item>
            <title>Volume Prices overview</title>
            <description>In highly competitive markets, the business tactic is made compelling by issuing drastic discounts when buying products in large quantities or volumes.

Volume pricing helps the merchants to gain the commitment of the customers. Providing volume discounts result in increasing the placement of large orders with the small ones. Large orders are preferred as they reduce the expenses incurred by the company.

Such incentives allow a business company to purchase additional inventory at a reduced cost and allow sellers or manufacturers to reduce the products by selling more units and increase their revenues per transaction.

The following schema illustrates the connection between `spy_price_product_store` table links `spy_price_product_merchant_relationship` with the `spy_currency` and `spy_store` tables.

![Database schema](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-dbschema.png)

`price_data` in`spy_price_product_store` table contains a JSON with prices per mode, currency and type.

{% info_block infoBox %}

The &quot;price_data&quot; field is a JSON with attributes such as volume prices, merchant prices, customer prices and then a specific set of prices inside its price type ([&quot;QTY&quot; =&gt; 10, &quot;GROSS(DEFAULT)&quot; =&gt; 100, &quot;NET(DEFAULT)&quot; =&gt; 90]).

{% endinfo_block %}


The following is an example of JSON:

```js
[
	&quot;EUR&quot; =&gt; [
		&quot;GROSS_MODE&quot; =&gt; [
		&quot;DEFAULT&quot; =&gt; 9999,
		&quot;ORIGINAL&quot; =&gt; 12564,
	],
		&quot;NET_MODE&quot; =&gt; [
		&quot;DEFAULT&quot; =&gt; 8999,
		&quot;ORIGINAL&quot; =&gt; 11308,
	],

		&quot;price_data&quot; =&gt; [&quot;QTY&quot; =&gt; 10, &quot;GROSS(DEFAULT)&quot; =&gt; 100, &quot;NET(DEFAULT)&quot; =&gt; 90], [&quot;QTY&quot; =&gt; 20, &quot;GROSS(DEFAULT)&quot; =&gt; 90, &quot;NET(DEFAULT)&quot; =&gt; 80]
	],
		&quot;CHF&quot; =&gt; [
		&quot;GROSS_MODE&quot; =&gt; [
		&quot;DEFAULT&quot; =&gt; 11499,
		&quot;ORIGINAL&quot; =&gt; 14449,
		],
		&quot;NET_MODE&quot; =&gt; [
		&quot;DEFAULT&quot; =&gt; 10349,
		&quot;ORIGINAL&quot; =&gt; 13004,
		],
	],
],
```

Volume prices are configured per store and per currency, and a shop administrator can set volume prices for every locale.

Volume prices are set for both gross and net mode and are either inherited from the abstract product or specified directly for a standalone concrete product.

{% info_block infoBox %}

The concrete product can also have its own volume prices different from its abstract (if they are explicitly defined per `concrete_sku`).

{% endinfo_block %}

A specific volume price for a concrete product has a higher priority over an inherited one from its abstract product.

The volume prices are imported using [data importer](https://github.com/spryker/price-product-data-import/blob/master/data/import/product_price.csv). The JSON with volume prices is added to the `price_data.volume_prices` column as shown in the example:

![CSV file containing volume prices](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-csv.png)

After the import is completed the volume prices are shown on the product detail page:

![Volume prices displayed on the product detail page](https://spryker.s3.eu-central-1.amazonaws.com/docs/Features/Price/Volume+Prices/Volume+Prices+Feature+Overview/volume-prices-pdp.png)

Once the product is added to the shopping list or to the cart, the item price corresponding to the volume price is displayed for that quantity. If the user increases or decreases the quantity in cart (but not in shopping list since here we don&apos;t really change quantities), the price is updated once the user goes over or under a threshold defined by the volume prices.

## Threshold

Volume pricing is applied when a certain threshold is reached.

Threshold is a minimum value that serves as a benchmark/boundary for a discounted price when the product is dependent on the volume bought—for example, the number of units of the product.

{% info_block infoBox %}

This means that if you buy more quantity of products or sometimes may be group of products, you would get discount based on the volume of purchase. All of the individual products exceeding the threshold will receive the special price.

{% endinfo_block %}

The volume price is applicable only if the shopper exceeds a certain quantity threshold—the number of units the customer chooses to buy.

The following table illustrates a typical volume pricing model:

| Quantity of products | Price per products | Total Price |
| --- | --- | --- |
| 1 | $100 | $100 |
| 5 | $70 | $350 |
| 10 | $50 | $500 |
| 20 | $40 | $800 |

The new price will go into effect after 5 units are purchased and only apply to the units beyond that threshold. The buyer would still pay full price for the first 5 units they procured.

{% info_block infoBox %}

If the customer selects five, each unit will cost $70. If the customer selects 12, each unit will cost $50.

{% endinfo_block %}

Volume prices can also mean higher prices per item at increasing thresholds.

{% info_block infoBox %}

That is a particular case of electricity bills where you pay more if you use more.

{% endinfo_block %}

## Current Constraints

{% info_block infoBox %}

The feature has the following functional constraints which are going to be resolved in the future.

{% endinfo_block %}

- Unlike other prices in Spryker which support both price types (DEFAULT and ORIGINAL), volume price supports only DEFAULT price type.

- As volume price does not support ORIGINAL price type, you cannot define a promotion for a volume price.

- Volume prices cannot be applied to the [prices per merchant relation](/docs/pbc/all/price-management/{{page.version}}/base-shop/merchant-custom-prices-feature-overview.html).

## Related Business User documents

|BACK OFFICE USER GUIDES|
|---|
| [Add volume prices to abstract products](/docs/pbc/all/price-management/{{page.version}}/base-shop/manage-in-the-back-office/add-volume-prices-to-abstract-products-and-product-bundles.html)  |
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/price-management/202512.0/base-shop/prices-feature-overview/volume-prices-overview.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/price-management/202512.0/base-shop/prices-feature-overview/volume-prices-overview.html</guid>
            
            
        </item>
        
        <item>
            <title>Users and rights overview</title>
            <description>User and rights management is implemented in the following three bundles:

- ACL—ACL stands for Access Control List. This is where you can manage your roles, groups, privileges and resources.
- Auth—manages the authorization of a specific user by returning true or false if the credentials are allowed to access the system or not. It is used for login, logout, and used by the login controller to verify if a given user token is authenticated. Login is authenticated with a form or a header (via token). Auth is also used to validate that Zed has authorization to process incoming requests from Yves or third parties such as payment providers.
- User—lets you create users and assign them to groups. Each group contains a set of roles.

## Users and customers

It is important to distinguish between users and customers. A user works with the back-end side of the store and handles the store maintenance such as creating users and assigning them to roles that will let them perform actions such as editing the CMS, activating and deactivating products, and managing discounts. A customer on the other hand is the final consumer of the online store—for example, the person who places orders. Customers are also managed in Zed but in a different section.

Users are assigned to groups. Groups are a collection of Roles—for example, customer-care, root, or third-party. Roles have Resources (rules) assigned to them. Resources (rules) are used to assign specific privileges to a Role for example, a Sales Representative Role or a System Administrator Role. Resources are always /module/controller/action and you can use * as placeholder.

- `/customer/*/*` would mean everything in /customer.
- `/customer/view/*` would mean a user can only see customers but can&apos;t edit them.

## Managing users

The Auth, ACL, and User bundles are configured and managed through the Zed user interface. Bundles correspond with the tabs in Zed. You can find which name to place here from the file `/project/config/Zed/navigation.xml`

Also, you can find bundle names as well as controllers and actions in the file `communication/navigation.xml`. For example:

![bundles_navigation.png](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/feature-walkthroughs/spryker-core-back-office-feature-walkthrough/user-and-rights-overview.md/bundles_navigation.png)

See [Managing users](/docs/pbc/all/user-management/{{page.version}}/base-shop/manage-in-the-back-office/manage-users/create-users.html) to learn how to create and manage users, groups, and roles.

&lt;a name=&quot;add-acl&quot;&gt;&lt;/a&gt;

{% info_block infoBox &quot;Adding users in the ACL module&quot; %}

You can add Zed users not only via the Back Office, but also in the ACL module. To do so, add the user in `/Spryker/Zed/Acl/AclConfig::getInstallerUsers()`(see [AclConfig.php](https://github.com/spryker/acl/blob/d3193c9259ed2f2b6815f3b2c9f52f4e4e250bbe/src/Spryker/Zed/Acl/AclConfig.php) for example) and run `console setup:init-db`.

{% endinfo_block %}

## ACL configuration

Apart from being able to configure user access to Zed resources via Zed UI, you can grant access to additional resources by specifying them in `config_*.php`. The following options are used to do that:

- `AclConstants::ACL_DEFAULT_RULES`—is used to provide/restrict access to Zed resources, defined in the `Spryker/Zed/Auth/AuthConfig::$ingorable` property. For example:

```php
$config[AclConstants::ACL_DEFAULT_RULES] = [
    // ....
    [
        &apos;bundle&apos; =&gt; &apos;auth&apos;,
        &apos;controller&apos; =&gt; &apos;login&apos;,
        &apos;action&apos; =&gt; &apos;index&apos;,
        &apos;type&apos; =&gt; &apos;deny&apos;,
    ],
    // ....
];
```

In the example, we restrict access for everyone to Zed login page. This option affects both logged-in and anonymous users. The key feature is the ability to restrict/provide access for anonymous users.

- `AclConstants::ACL_USER_RULE_WHITELIST`—is used to provide additional access to Zed resources for all logged-in users. For example:

```php
$config[AclConstants::ACL_USER_RULE_WHITELIST] = [
    // ....
    [
        &apos;bundle&apos; =&gt; &apos;application&apos;,
        &apos;controller&apos; =&gt; &apos;*&apos;,
        &apos;action&apos; =&gt; &apos;*&apos;,
        &apos;type&apos; =&gt; &apos;allow&apos;,
    ],
    // ....
];
```

In the example, we grant access to the Application module resources for all users.

{% info_block warningBox &quot;Note&quot; %}

With the configuration provided in the example, users are granted access to these resources regardless of ACL configuration in ZED UI.

{% endinfo_block %}

- `AclConstants::ACL_DEFAULT_CREDENTIALS`—is used to provide additional access to Zed resources for a specific user. For example:

```php
$config[AclConstants::ACL_DEFAULT_CREDENTIALS] = [
    &apos;winner@spryker.com&apos; =&gt; [
        &apos;rules&apos; =&gt; [
            [
                &apos;bundle&apos; =&gt; &apos;*&apos;,
                &apos;controller&apos; =&gt; &apos;*&apos;,
                &apos;action&apos; =&gt; &apos;*&apos;,
                &apos;type&apos; =&gt; &apos;allow&apos;,
            ],
        ],
    ],
]
```

In the example, we grant the user **winner@spryker.com** access to all Zed resources. To make it work, we should also add **winner@spryker.com** to this option: `UserConstants::USER_SYSTEM_USERS`. Here, a system user is any user who has additional ACL rules defined for them in `config_*.php` file.

- Note that if there is at least one `allow` type for a resource, the user will have access to it in spite of having a `deny` type for the same resource. It works for `AclConstants::ACL_USER_RULE_WHITELIST`, `AclConstants::ACL_DEFAULT_CREDENTIALS` and rules configured via Zed UI, except for `AclConstants::ACL_DEFAULT_RULES` as it&apos;s handled before checking if user logged in or not.
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/user-management/202512.0/base-shop/user-and-rights-overview.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/user-management/202512.0/base-shop/user-and-rights-overview.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the Touch module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-touch-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-touch-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-touch-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-touch-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the Tax module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-tax-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-tax-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/tax-management/202512.0/base-shop/install-and-upgrade/upgrade-the-tax-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/tax-management/202512.0/base-shop/install-and-upgrade/upgrade-the-tax-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the Stock module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-stock-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-stock-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-stock-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/product-information-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-stock-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the ShoppingListWidget module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-shoppinglistwidget-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-shoppinglistwidget-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/shopping-list-and-wishlist/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/shopping-list-and-wishlist/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the ShoppingList module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-shoppinglist-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-shoppinglist-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/shopping-list-and-wishlist/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/shopping-list-and-wishlist/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the ShipmentGui module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-shipmentgui-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-shipmentgui-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/carrier-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shipmentgui-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/carrier-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shipmentgui-module.html</guid>
            
            
        </item>
        
        <item>
            <title>Upgrade the ShipmentDiscountConnector module</title>
            <description>{% include pbc/all/upgrade-modules/upgrade-the-shipmentdiscountconnector-module.md %} &lt;!-- To edit, see /_includes/pbc/all/upgrade-modules/upgrade-the-shipmentdiscountconnector-module.md --&gt;
</description>
            <pubDate>Tue, 17 Mar 2026 16:15:45 +0000</pubDate>
            <link>https://docs-archive.spryker.com/docs/pbc/all/carrier-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shipmentdiscountconnector-module.html</link>
            <guid isPermaLink="true">https://docs-archive.spryker.com/docs/pbc/all/carrier-management/202512.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shipmentdiscountconnector-module.html</guid>
            
            
        </item>
        
    </channel>
</rss>
