Frage

Ich habe einen Beobachter erstellt, der am Checkout_Cart_Product_add_after abfeuert. Im Beobachter stelle ich die Menge wie folgt fest:

$item->setQty($quantity); 

Ich möchte die Menge, die sich bereits im Wagen für dieses Produkt befindet, abrufen, damit die Menge für das Produkt stattdessen aktualisiert oder überschrieben wird. Wenn ich jedoch versuche, die Produktmenge im Wagen (Magier :: Helper ('Checkout/Cart')) zu erhalten, bekomme ich die "neue" Menge, wahrscheinlich weil der Update -Mengencode bereits abgefeuert wurde.

Wie könnte ich die Karrenmenge für das Produkt bekommen?

Danke im Voraus,

Joost

BEARBEITEN:

Dies ist der vollständige Code des Beobachters:

public function modifyPrice(Varien_Event_Observer $obs)
    {

        $item = $obs->getQuoteItem();
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        $price = $this->_getPrice($item);
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);

        $quantity = $this->_getQuantity($item);
        $item->setQty($quantity);

        $item->getProduct()->setIsSuperMode(true);
    }

    protected function _getPrice(Mage_Sales_Model_Quote_Item $item)
    {
        $price = 0;

        Mage::app()->getRequest()->getPost();

        $qtydropdownbox = Mage::app()->getRequest()->getParam('qtydropdownbox');
        $prices = $item->getProduct()->getData('qty_dropdownbox_prices');
        $quantities = $item->getProduct()->getData('qty_dropdownbox_quantities');

        $array_prices = explode(';', $prices);
        $array_quantities = explode(';', $quantities);
        $price = $array_prices[$qtydropdownbox] / $array_quantities[$qtydropdownbox];

        return $price;
    }

    protected function _getQuantity(Mage_Sales_Model_Quote_Item $item)
    {
        $quantity = 0;

        Mage::app()->getRequest()->getPost();

        $qty = Mage::app()->getRequest()->getParam('qty');
        $qtydropdownbox = Mage::app()->getRequest()->getParam('qtydropdownbox');
        $quantities = $item->getProduct()->getData('qty_dropdownbox_quantities');

        $array_quantities = explode(';', $quantities);
        $quantity = $array_quantities[$qtydropdownbox] * $qty;

        return $quantity;
    }
War es hilfreich?

Lösung

Ich verstehe nicht, was Sie erreichen wollen, aber um die alte Menge zu bekommen, sind Sie zu spät und sogar Origindata wird überschrieben (denke ich), aber überprüfen Sie es.

Ich denke, am einfachsten ist es, sich anzuschließen quote_item_load_after Und fügen Sie einfach das Qty hinzu, um es später wie $ quoteItem-> setMypersonQty ($ quoteItem-> getQty ()) zu lesen.

Andere Tipps

Sie können die Veranstaltung verwenden sales_quote_product_add_after die ausgelöst wird, bevor die neuen Artikel gespeichert werden, damit Sie verwenden können $item->getOrigData('qty') um die ursprüngliche Menge zu bekommen.

Das Ereignis hat einen Parameter, items Dies ist eine Reihe aller einzelnen Zitatelemente, die für dieses Produkt generiert wurden. Für einfache Produkte ist dies immer ein Artikel. Für Bündel und konfigurierbare Produkte ist es das Element für das Hauptprodukt und seine Kinder. Der Elternteil ist immer der erste Artikel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top