Ändern der Menge an Produkt bei einer Bestellung via Skript/DAL

Hallo,

ich würde gerne die menge einer bestellposition via skript/dal ändern.

Der Datensatz für eine Bestellposition einer Bestellung (order_line_item) enthält 4 Felder die sich auf die bestellte Menge, bzw den Preis beziehen.

quantity / total_price

price_definition

price

 

Ich habe meinen eigenen Controller erstellt der vom AbstractController erbt. Folgend mein Code um die Bestellposition anzupassen:

/** @var EntityRepositoryInterface $orderLineItemRepository */

$orderLineItemRepository = $this->container->get(‘order_line_item.repository’);

$orderedProducts = $this->oiUtils->getOrderedProducts($orderLineItemRepository, $orderID, $context); // $orderID wird vorher abgefragt und ist die UUID der entsprechenden Bestellung

Meine eigene Klasse oiUtils hat die Funktion getOrderedProducts. Diese gibt ein Array mit allen Bestellpositionen (order line items) der jeweiligen Bestellung zurück.

Dieses Array durchlaufe ich in einer Schleife und vergleiche den “quantity” Wert mit einem anderen Wert aus anderer Quelle. Sofern sich die Werte unterscheiden will ich die Bestellposition dahingehend anpassen, dass der neue Wert für die Anzahl übernommen wird, natürlich soll im Zuge dessen auch der Preis angepasst werden.

Direkt über die DAL ist dies leider nicht möglich, ich kann lediglich die Anzahl ändern, nicht jedoch das Feld für den Komplettpreis der Position.

$orderLineItemRepository->update(

[

[‘id’ => $orderLineItem->getId(), ‘quantity’ => $reportedAmount],

],

Context::createDefaultContext()

);

Dieser Befehl ändert zwar die Anzahl des bestellten Produkts, allerdings kann das Feld “total_price” nicht auf gleiche Art und Weise überschrieben werden.

$orderLineItemRepository->update(

[

[‘id’ => $orderLineItem->getId(), ‘quantity’ => $reportedAmount, ‘totalPrice’ => $newTotal],

],

Context::createDefaultContext()

);

Ändert nichts ausser der “quantity”

 

Ich glaube, dass ich irgend eine spezielle Funktion aufrufen muss, allerdings findet sich hierzu inder Dokumentation kein Hinweis. Sofern ich nur die “quantity” anpasse und danach in der Administration die Bestellung anrufe, Bearbeite und ohne etwas zu ändern bestätige wird der Preis korrekt angepasst.

keiner eine idee?