0
votes

I want to delete cart product using observer.

I am able to get all products of current cart but after trying lots of times I can't delete products from cart using observer. Even also tried to delete products using query but again product was not deleted.

<?xml version="1.0"?>
<config>
    <modules>
        <Check_Price>
            <version>0.0.1</version>
        </Check_Price>
    </modules>
    <global>
        <models>
            <checkprice>
                <class>Observerexample_Model</class>
            </checkprice>
        </models>
        <events>
            <sales_order_place_before>
                <observers>
                    <check_price_model_observer>
                        <type>singleton</type>
                        <class>Check_Price_Model_Observer</class>
                        <method>example</method>
                    </check_price_model_observer>
                </observers>
            </sales_order_place_before> 
        </events>
    </global>
</config>

I have used this code in observer:-

 $event = $observer->getEvent();
         $order = $event->getOrder();
         $items = $order->getQuote()->getAllItems();        
         foreach ($items as $item) {
           if($item->getProduct()->getFinalPrice()==0){

             ??
           }          
         }

I have everything like itemID,quoteID How to delete products from cart.

2

2 Answers

0
votes

There Lot of issue in config.xml

1.Model prefix issue: 1st of all model prefix class is not right. It Should be

<models>
            <checkprice>
                <class>Check_Price_Model_Model</class>
            </checkprice>
        </models>

from

<models>
    <checkprice>
        <class>Observerexample_Model</class>
    </checkprice>
</models>

Issue2: sales_order_place_before event is called for all case of order place.It called whenever $orderObject call it function: place() function. you see at class Mage_Sales_Model_Order. It will be better idea to use event checkout_submit_all_after.

0
votes

You can remove a cart item by the item's id. Here's how to remove an item with id = 1:

$cart = Mage::getSingleton('checkout/cart');
$cart->removeItem(1);

Here's how to remove all items:

$quote = $cart->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $cartItem){
   $cart->removeItem($cartItem->getId());
}