To filter Payment Method Options we can use observer, i assume you have knowledge of Magento module development, anyway let’s begin
- on config.xml, register an event
-
12345678910111213.....<events><payment_method_is_active><observers><paymentfilter_payment_method_is_active><type>singleton</type><class>myfilter/observer</class><method>paymentMethodIsActive</method></paymentfilter_payment_method_is_active></observers></payment_method_is_active></events>.....
- create observer file app/code/local/MyModule/MyFilter/Model/Observer.php
-
12345678910111213141516171819<?phpclass MyModule_MyFilter_Model_Observer {public function paymentMethodIsActive(Varien_Event_Observer $observer) {$event = $observer->getEvent();$method = $event->getMethodInstance();$result = $event->getResult();/* remove COD payment */if($method->getCode() == 'cashondelivery' ){$result->isAvailable = false;}else{$result->isAvailable = true;}}}
next to filter shipping methods you have to rewirite shipping model file
- on config.xml file
-
12345678910111213...<global>...<models><shipping><rewrite><shipping>MyModule_MyFilter_Model_Shipping</shipping></rewrite></shipping></models>...</global>...
- create file app/code/local/MyModule/MyFilter/Model/Shipping.php
-
12345678910111213141516171819<?phpclass MyModule_MyFilter_Model_Shipping extends Mage_Shipping_Model_Shipping{public function collectCarrierRates($carrierCode, $request){if (!$this->_checkCarrierAvailability($carrierCode, $request)) {return $this;}return parent::collectCarrierRates($carrierCode, $request);}protected function _checkCarrierAvailability($carrierCode, $request = null){/* remove Free shipping */if($carrierCode == 'freeshipping'){return false;}}
Comments are closed.