Pregunta

He creado un observador que se dispara en checkout_cart_product_add_after. En el observador establecí la cantidad así:

$item->setQty($quantity); 

Me gustaría obtener la cantidad que ya está en el carrito para ese producto, de modo que la cantidad para el producto se actualiza o se sobrescribe. Sin embargo, cuando trato de obtener la cantidad del producto en el CART (Mage :: Helper ('Checkout/Cart')), obtengo la cantidad "nueva", probablemente porque el código de cantidad de actualización ya ha disparado.

¿Cómo podría obtener la cantidad de carrito para el producto?

Gracias por adelantado,

Joost

EDITAR:

Este es el código completo del observador:

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;
    }
¿Fue útil?

Solución

No entiendo lo que quieres lograr, pero para obtener la vieja cantidad que llegas demasiado tarde e incluso el origen se sobrescribe (creo), pero verifíquelo.

Creo que lo más fácil es engancharse quote_item_load_after Y simplemente agregue la Cantidad para leerla más tarde como $ QUOTEItem-> SetMypersonalQty ($ QUOTEItem-> getqty ())

Otros consejos

Puedes usar el evento sales_quote_product_add_after que se activa antes de guardar los nuevos elementos, para que pueda usar $item->getOrigData('qty') Para obtener la cantidad original.

El evento tiene un parámetro, items que es una variedad de todos los elementos de citas individuales que se generaron para este producto. Para productos simples, este es siempre un elemento, para paquetes y productos configurables, es el artículo para el producto principal y sus hijos, el padre siempre es el primer elemento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top