Hey Leute,
ich stehe aktuell auf dem Schlauch und komme nicht weiter.
Ich möchte auf der Detailseite die Versandkosten anzeigen lassen, die je nach nachgefragter Menge schwanken können.
Bisher sieht mein Controller so aus:
public function exampleAction(Request $request, SalesChannelContext $context): JsonResponse
{
$orderNumber = $request->query->get('orderNumber');
$quantity = $request->query->get('quantity');
$productRepository = $this->container->get('product.repository');
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('productNumber', $orderNumber));
$product = $productRepository->search($criteria, Context::createDefaultContext())->first();
$productId = $product->getUniqueIdentifier();
$fakeCart = new Cart(self::DUMMY_TOKEN,$context);
$lineItem = new LineItem("test", LineItem::PRODUCT_LINE_ITEM_TYPE,$productId,1);
$lineItem->setLabel("TEST");
$lineItem->setGood(false);
$lineItem->setStackable(true);
$lineItem->setRemovable(true);
$lineItem->setQuantity((int) $quantity);
$fakeCart->add($lineItem);
$behavior = new CartBehavior([], true, true);
$fakeCart = $this->cartRuleLoader->loadByCart($context, $fakeCart, $behavior)->getCart();
$shippingCost = $fakeCart->getShippingCosts();
return new JsonResponse(['shipping_cost' => $shippingCost]);
}
Bisher habe ich versucht ein zweiten „Fake“-Cart zu nutzen, damit ich wirklich nur die Versandkosten für eine Produkt bekomme. (Sollten andere Produkte im echten Cart sein, werden die Versandkosten berechnet → deswegen der Fake-Cart).
Eine Fehlermeldung war:
Shopware\Core\Checkout\Cart\Delivery\DeliveryCalculator::getCurrencyPrice(): Argument #1 ($priceCollection) must be of type Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollection, null given
Wie könnte man hier vorgehen bzw. vielleicht habt ihr eine andere Idee.