0

I have created a observer event like below inside my config.xml file

<events>          
              <sales_quote_add_item>
                  <observers>
                     <CustomModule_model_observer>
                        <type>singleton</type>
                        <class>CustomModule_Model_Observer</class>
                        <method>updatePrice</method>
                     </CustomModule_model_observer>
                 </observers>
              </sales_quote_add_item>
    </events>

In my Model i have created Observer.php

require_once 'Mage/Checkout/controllers/CartController.php';

class CustomModule_Observer
{
    public function _construct()
      {
      }

    public function getNewPrice()
      {

        $newprice = "5";

        return $newprice;
      }

     public function updatePrice($observer)
     {
        $event = $observer->getEvent();
        $product = $event->getProduct();// not getting any values how can i get this.
        $quote_item = $event->getQuoteItem();
        $new_price = $this->getNewPrice();
        $quote_item->setOriginalCustomPrice($new_price);
        $quote_item->save();
      }
  }

Reference Changing the price in quote while adding product to cart: magento

Community
  • 1
  • 1
Naveenbos
  • 2,532
  • 3
  • 34
  • 60

2 Answers2

1

You did not get any value in $product = $event->getProduct(); because this object is not set when add item event is dispatched.

Please check Mage_Sales_Model_Quote class line number 939.

$item->setQuote($this);
    if (!$item->getId()) {
        $this->getItemsCollection()->addItem($item);
        Mage::dispatchEvent('sales_quote_add_item', array('quote_item' => $item));
    }

Its only return quote_item object. If want products so you have to find some other way like :

 $quote_item = $event->getQuoteItem(); // Which return quote item 
 $quote_item->getProduct();

I hope this is work for you Thanks.

Manashvi Birla
  • 2,837
  • 3
  • 14
  • 28
Kandarp B Patel
  • 1,062
  • 10
  • 28
0

I have tried this, and its working, it gives us the product id.

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item){
   $productId = $item->getProductId();
   $product = Mage::getModel('catalog/product')->load($productId);
   // Do something
}
Chirag Prajapati
  • 135
  • 2
  • 11
Naveenbos
  • 2,532
  • 3
  • 34
  • 60