/**
  * Void payment either online or offline (process void notification)
  * NOTE: that in some cases authorization can be voided after a capture. In such case it makes sense to use
  *       the amount void amount, for informational purposes.
  * Updates payment totals, updates order status and adds proper comments
  *
  * @param bool $isOnline
  * @param float $amount
  * @param string $gatewayCallback
  * @return Mage_Sales_Model_Order_Payment
  */
 protected function _void($isOnline, $amount = null, $gatewayCallback = 'void')
 {
     if (Mage::helper("creditcard")->isMOPLitle($this)) {
         $order = $this->getOrder();
         if (Mage::helper("creditcard")->isStateOfOrderEqualTo($order, Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND)) {
             $this->_reverseRefund($isOnline, $amount, $gatewayCallback);
         } else {
             if (Mage::helper("creditcard")->isStateOfOrderEqualTo($order, Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH)) {
                 parent::_void($isOnline, $amount, $gatewayCallback);
             } else {
                 if (Mage::helper("creditcard")->isStateOfOrderEqualTo($order, Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE)) {
                     $this->_voidCapture($isOnline, $amount, $gatewayCallback);
                 } else {
                     parent::_void($isOnline, $amount, $gatewayCallback);
                 }
             }
         }
     } else {
         parent::_void($isOnline, $amount, $gatewayCallback);
     }
     return $this;
 }