Magento: Programmatisch Warenkorb aktualisieren über event
Ich bin Einhängen in die sales_quote_save_after
Veranstaltung disaptcher. Zunächst als test versuche ich, die Artikel in den Warenkorb und ändern Sie Ihre Preise auf 0. Nachdem ich tun, ich werde die Gebäude in einigen anderen Sachen.
Ich Probleme habe. Ändern kann ich das Gerät Preis kein problem, aber wenn ich die Neuberechnung der Warenkorb summiert die Preise sind danach wieder auf den ursprünglichen Preis.
public function sales_quote_save_before($observer) {
if (Mage::registry('basket_observer_executed')) {
return $this;
}
$quote = $observer->getEvent()->getQuote();
foreach ($quote->getAllItems() as $item) {
if($item->getId()) {
$item->setCustomPrice(0);
}
}
Mage::register('basket_observer_executed', true);
$quote->save();
$quote->setTotalsCollectedFlag(false)->collectTotals();
}
Kann jemand Punkt mich gegen die Aufrechterhaltung der neue Preis, während Sie die Neuberechnung der Summen?
Sind Sie auf der Auslösung dieser auf die quote_save_before oder quote_save_after? Deine Frage sagt _after, aber Ihre Funktion ist benannt _before. Auch warum machen Sie sicher, dass diese nur einmal ausgeführt wird? Geht aus dem Gedächtnis, ich glaube die save-event wird mehrmals aufgerufen, so dass es möglicherweise zurücksetzen, indem Sie später Magento code nach Ihr Griff läuft.
InformationsquelleAutor iamjonesy | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde versuchen mit einem anderen Ereignis. Ich benutze immer
checkout_cart_save_after
für die, die ähnliche Aktionen.Mit der Veranstaltung erwähnte ich dann, verwenden Sie den folgenden code:$quote->setTotalsCollectedFlag(false)->collectTotals();
zu erhalten, werden die Summen neu berechnet, wennInformationsquelleAutor Ash Smith