Better than overriding the Model Class , we can use the Event and Observer for this purpose.
We can use payment_method_is_active
public function HideCODforCouponCode($observer) {
$event = $observer->getEvent();
$methodInstance = $event->getMethodInstance();
$store_id = Mage::app()->getStore()->getStoreId();
$result = $event->getResult();
$cashOnDeliveryenable = Mage::getStoreConfig('payment/phoenix_cashondelivery/active' , $store_id);
$coupon = Mage::getSingleton('checkout/session')->getQuote()->getCouponCode();
if (($methodInstance->getCode() != 'phoenix_cashondelivery') || ($cashOnDeliveryenable == 0)) {
return $this; //if it's not the payment method your a looking for do nothing
}
if ($coupon == "TEST50") && ($methodInstance->getCode() == 'phoenix_cashondelivery')) {
$result->isAvailable = false;
}
}