Magento:Cash On Delivery activated only for Admin Only

There are many ways to activated Cash On Delivery  only for admin . I would discourage using Observer events hide it from the end user.

I also suggest not override core files (even if you are not editing them), as that will cause upgrade problems in the future.

you can create your  custom module like below :

/app/etc/modules/Namespace_Module.xml

 

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Payment/>
            </depends>
        </Namespace_Module>
    </modules>
</config>

 

/app/code/local/Namespace/Module/etc/config.xml

 

<?xml version="1.0"?>
<config>
<modules>
    <Namespace_Module>
        <version>0.0.1</version>
    </Namespace_Module>
</modules>

<global>
    <models>
        <Namespace_Module>
            <class>Namespace_Module_Model</class>
        </Namespace_Module>
    </models>
    <events>
        <payment_method_is_active>
            <observers>
                <namespace_module>
                    <type>singleton</type>
                    <class>Namespace_Module/Observer</class>
                    <method>paymentMethodIsActive</method>
                </namespace_module>
            </observers>
        </payment_method_is_active>
    </events>
</global>

</config>

 

 

 

/app/code/local/Namespace/Module/Model/Observer.php

 

<?php

class Namespace_Module_Model_Observer
{
    public function paymentMethodIsActive($observer)
    {
        $instance = $observer->getMethodInstance();
        $result = $observer->getResult();

        if ($instance->getName() == "checkmo") {
            if (Mage::app()->getStore()->isAdmin()) {
                $result->isAvailable = true;
            } else {
                $result->isAvailable = false;
            }
        }
    }
}

 

Remark : You can change “Namespace” as per your need.

 

Leave a Reply

Your email address will not be published.