Moin,
ich kämpfe gerade an einem “kleinen” Problem bzgl. der oxBasketItem Klasse.
Ich würde gerne, beim hinzufügen eines Items zum Warenkorb, den Preis des einzufügenden Items überschreiben, und anschließend den gesamten Preis rekalkulieren.
Allerdings funktioniert das ganze leider wohl nicht all zu wie erwartet.
Was ich bereits versucht habe ist das setzen des neuen Preises via:
$oPrice = oxNew('oxPrice');
$oPrice->setPrice(10, 19); //testpreis
/* @var $oBasketItem oxbasketitem */
$this->_aBasketContents[$sItemId] = $oBasketItem;
$this->_aBasketContents[$sItemId]->getArticle()->oxarticles__oxprice = new oxField("10"); //testpreis
$this->_aBasketContents[$sItemId]->setPrice($oPrice);
$this->_aBasketContents[$sItemId]->setRegularUnitPrice($oPrice);
$this->_aBasketContents[$sItemId]->getArticle()->setPrice($oPrice);
scheint allerdings wohl nicht wie erhofft zu gehen, der neue Preis wird nicht angezeigt, stattdessen finde ich den alten Preis wieder. Die Methode die ich durch ein neues Model versuche zu überschreiben, ist die addToBasket Methode von oxBasket
Kann mir jemand ggf. einen Tipp geben welche Attribute ich von dem Objekt ändern muss um den korrekten Preis für einen einzufügenden Artikel im Warenkorb dann auch gesetzt bekomme?
oxbasketitem->setprice().
Schau Dir die mal an.
moin, genau das habe ich bereits getan. Mein Attribut _aBasketContents ist ein array aus oxBasketItem Objekten. SetPrice bringt mir nicht das Resultat, was ich mir wünschen würde.
Ich habe festgestellt, sofern ich den Preis mittels ser setPrice Methode setze, habe ich nur den neuen Preis, sofern ich während einer Sitzung einen Artikel in den Warenkorb hinzugefügt habe, mich dann auslogge und erneut einlogge.
Wenn ich dann allerdings nach dem Login zu einer anderen Seite navigiere, habe ich wieder den Preis aus der Datenbank für meine Artikel im Warenkorb.
Hallo, das kann ich nicht nachvollziehen. Die Methode/Funktion setprice aus oxBasketItem ist quasi die “letzte Instanz” und lässt eigentlich alles zu:
Einzelpreis:
$this->_oUnitPrice
Gesamtpreis:
$this->_oPrice
Moin,
also via setPrice kriege ich den Preis nicht aktualisiert.
Wohingegen, nach weiterem Testen ich mit folgendem Aufruf:
$this->_aBasketContents[$sItemId]->getArticle()->oxarticles__oxprice = new oxField("10");
den Preis überschrieben bekomme, allerdings dann über den Warenkorb über “Aktualisieren” nochmal aktualisieren muss. setPrice tut bei mir absolut nichts, bringt keine Veränderung des Warenkorbs.
Ich überlade in meinem Module die Klasse oxbasket (Methode: addToBasket)
https://www.mail-archive.com/[email protected]/msg02035.html
Dazu gefunden.
Vielleicht hilft dir der Kommentar zu diesem Bugeintrag?
https://bugs.oxid-esales.com/view.php?id=5298