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

Schreibe einen Kommentar