Question

J'ai construit un observateur qui se déclenche à checkout_cart_product_add_after. Dans l'observateur que je mets la quantité comme ceci:

$item->setQty($quantity); 

Je voudrais aller chercher la quantité qui est déjà dans le panier pour ce produit, de sorte que la quantité du produit est mis à jour à la place ou les remplacer. Pourtant, lorsque je tente d'obtenir la quantité de produit dans le panier (Mage :: aide ( « caisse / panier »)), je reçois la quantité « nouveau », probablement parce que le code de la quantité de mise à jour a déjà tiré.

Comment pourrais-je obtenir la quantité de panier pour le produit?

Merci à l'avance,

Joost

EDIT:

Ceci est le code complet de l'observateur:

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;
    }
Était-ce utile?

La solution

Je ne comprends pas ce que vous voulez atteindre, mais pour obtenir la quantité que vous êtes vieux trop tard et même origData est écrasé (je pense), mais le vérifier.

Je pense que le plus simple est de connecter quote_item_load_after et il suffit d'ajouter le qté pour le lire plus tard comme $ quoteItem-> setMyPersonalQty ($ quoteItem-> getQty ())

Autres conseils

Vous pouvez utiliser le sales_quote_product_add_after de l'événement qui est déclenché avant que les nouveaux éléments sont enregistrés, de sorte que vous pouvez utiliser $item->getOrigData('qty') pour obtenir la quantité initiale.

L'événement a un paramètre, items qui est un tableau de tous les éléments de guillemets simples qui ont été générés pour ce produit. Pour les produits simples ce qui est toujours un élément, pour des faisceaux et des produits configurables est l'élément pour le produit principal et ses enfants, le parent étant toujours le premier élément.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top