In meinem Service rufe ich Produktinfo via DAL (EntityRepositoryInterface & Search\Criteria) ab:
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
....
private function enrichTrackingDataWithProducts($ids): void {
$entities = $this->productRepository->search(
new Criteria($ids),
\Shopware\Core\Framework\Context::createDefaultContext()
)->getElements();
foreach ($entities as $id => $product) {
$this->productTrackdataSetter('productId', $id);
$this->productTrackdataSetter('productName', $product->getName());
$this->productTrackdataSetter('productPrice', $product->getPrice()->first()->getGross());
}
}
private function productTrackdataSetter(string $key, $value): void {
$this->trackData[$key] = isset($this->trackData[$key]) ?
$this->trackData[$key] . ';' . $value : $value;
}
....
Die Suche findet auch ein Produkt, ich bekomme den Namen und den Preis, alles kein Problem. Ich möchte nun aber auch die Preise bekommen, die man im Backend unter “Advanced pricing” einstellt, also den Mengenrabatt usw. Ich konnte keinen einfachen getter dazu in $product finden, und nehme an ich benötige des Saleschannelcontext dazu, um an die regeln zu kommen? Gibt es dazu ggf. irgendwo ein Beispiel? Ich konnte leider nichts finden bisher.
Danke!