0

Condition: I have restricted category of products [category id = 680, 894, 895], this category of products should be purchase alone, not mixed with other products.

Workout: Case 1: If cart had other products, if the customer tries to add restricted category products trigger observer like not eligible to add to cart and display a message like If you want this product, Purchase alone not mixed with other Products

case 2: If cart had a restricted category of products if customer try to add non-restricted products trigger observer like not eligible to add to cart and display a message like Cart has Special Product you can not add another

code :

app/etc/modules/Gta_KolupadiRestrict.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <!-- Gta_KolupadiRestrict -->
        <Gta_KolupadiRestrict>
            <active>true</active>
            <codePool>local</codePool>
        </Gta_KolupadiRestrict>
    </modules>
</config>

app/code/local/Gta/KolupadiRestrict/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Gta_KolupadiRestrict>
            <version>1.0.0</version>
        </Gta_KolupadiRestrict>
    </modules>
    <global> 
        <models>
            <gta_kolupadirestrict>
                <class>Gta_KolupadiRestrict_Model</class>
            </gta_kolupadirestrict>
        </models>
        <events>
            <checkout_cart_product_add_after>
                <observers>
                    <Gta_KolupadiRestrict_Model_Observer>   
                        <type>singleton</type>
                        <class>Gta_KolupadiRestrict_Model_Observer</class>
                        <method>cartevent</method>
                    </Gta_KolupadiRestrict_Model_Observer>
                </observers>
            </checkout_cart_product_add_after>      
        </events>
    </global>   
</config>

app/code/local/Gta/KolupadiRestrict/Model/Observer.php

    <?php 
    // Mage::log('fine dude', null, 'logfile.log');
    //create class

    class Gta_KolupadiRestrict_Model_Observer
    {

        //create function
        public function cartevent(Varien_Event_Observer $observer)
        {
            // $category_id = array(680, 894, 895) ; //category ids

            // $category_products  = Mage::getModel('catalog/category')
            //                  ->addAttributeToFilter('category_id', array('in' => array('680','894','895')))
            //                  ->setWebsiteId(2);              // load website id  

            $product = $observer->getProduct();

            $category_id = $product->getCategoryIds();
            $productCatId  = Mage::getModel('catalog/category')
                                ->setWebsiteId(2)        // load website id
                                ->load($category_id);        // load category 

            // check cart qty status                            
            $cart_qty = (int) Mage::getModel('checkout/cart')->getQuote()->getItemQty();  

            //logic
            if($productCatId->getId()=='680' && $cart_qty > 0  ) //680 category id
            {
                Mage::throwException("If you want Kolu Padi, Purchase alone not mixed with other Products");    
            }

             //check if cart have products 
             $quote = Mage::getModel('checkout/cart')->getQuote();

            foreach($quote->getAllItems() as $item)
            {
                $productCategoryId  = $item->getCategoryIds();

                if($productCategoryId =='680')  //680 category id
                {
                    Mage::throwException("Cart has Special Product you can not add another");
                }
            }    
        }       
    }
?>

Observer not trigger. Does anyone help me?

zus
  • 165
  • 2
  • 17
  • 77

2 Answers2

1

In config.xml:

<class>Kolupadi_Restrict_Model_Observer</class>

should be

<class>Gta_KolupadiRestrict_Model_Observer</class>

Change your app/etc/modules/Gta_KolupadiRestrict.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Gta_KolupadiRestrict>
            <active>true</active>
            <codePool>local</codePool>
        </Gta_KolupadiRestrict>
    </modules>
</config>

Clear cache.

[update]

config.xml looks like:

<?xml version="1.0"?>
<config>
    <modules>
        <Gta_KolupadiRestrict>
            <version>1.0.0</version>
        </Gta_KolupadiRestrict>
    </modules>
    <global>
        <models>
            <gta_kolupadirestrict>
                <class>Gta_KolupadiRestrict_Model</class>
            </gta_kolupadirestrict>
        </models>
        <events>
            <checkout_cart_product_add_after>
                <observers>
                    <gta_kolupadirestrict_checkout_cart_product_add_after>
                        <class>gta_kolupadirestrict/observer</class>
                        <method>cartevent</method>
                    </gta_kolupadirestrict_checkout_cart_product_add_after>
                </observers>
            </checkout_cart_product_add_after>
        </events>
    </global>
</config>

app/code/local/Gta/KolupadiRestrict/Model/Observer.php

<?php

class Gta_KolupadiRestrict_Model_Observer
{
    public function cartevent($observer)
    {
        error_log('hey');
    }
}

Now you can see log for every add to cart press.

Sohel Rana
  • 35,846
  • 3
  • 72
  • 90
0

Please check with below url :

Observer not firing

I hope its work for you..

Anas Mansuri
  • 2,627
  • 1
  • 11
  • 28