Produktpreise inkl. Mengenrabatt (advanced pricing) - wie Werte in den Service kriegen?

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!

Evtl. musst du einfach nur die Relation zu den Preisen auflösen.

$criteria->addAssociation('prices');

und dann

$product->getPrices();

 

1 Like

Danke für den Vorschlag, hat aber leider nicht geklappt, getPrices liefert keine Ergebnisse:

Du hast das criteria mit der association nicht beim search übergeben :wink:

1 Like

Oh stimmt. Super, jetzt klappt es, vielen Dank!