In der Entwicklerdokumentation gibt es folgenden Artikel zur Anpassung der Berechnung von Produktpreisen: https://developer.shopware.com/docs/guides/plugins/plugins/checkout/cart/customize-price-calculation
Ziel ist es dynamische Preise auf der Grundlage eines Cookies bereitzustellen. Zur Vereinfachung habe ich das Verhalten an einem einfachen Beispiel mit dem gleichen Ergebnis getestet:
...
public function calculate(iterable $products, SalesChannelContext $context): void
{
$value = rand(0, 1) == 1;
if ($value) {
foreach ($products as $product) {
$price = $product->getPrice();
$price->first()->setGross(100);
$price->first()->setNet(50);
}
}
}
...
Auf der Grundlage der Zufallsgenerierung sollte der im Storefront angezeigte Preis des Produkts entweder der ursprüngliche Preis des Produkts oder 100 sein.
Im Entwicklungsmodus (APP_ENV=dev) funktioniert die oben genannte Berechnung korrekt (auf der Grundlage einer Zufallsgenerierung). Im Produktivmodus (APP_ENV=prod) scheint erste Wert gecacht zu werden. Wie bereits erwähnt, handelt es sich bei dem angegebenen Beispiel um eine Vereinfachung, die im tatsächlichen Szenario zu demselben Ergebnis führt.
Hat schon jemand ähnliche Probleme gehabt oder eventuelle Lösungsansätze?
Ich habe auch schon ein Ticket dazu erstellt, da sich dieses Verhalten auch in anderen Shopwaresystemen beobachten konnte: