ChainPriceService is the base entry point to the price engine. This service gets prices depending on the
$contextId is a parameter that indicates the context in which the prices should be calculated, e.g. basket, product list or product detail.
ChainPriceService does not calculate the prices by itself. It calls price providers in a chain depending on the configuration.
If an error occurs, the price provider throws an exception and the next provider in the chain is used. If the first provider returns prices, they are returned back to the caller. The next price provider is not executed.
If none of the price providers return prices, an exception is thrown and empty prices and empty stock must be set.
Chain configuration example for basket:
1 2 3 4
||This method always returns an instance of