/**
  * update registration REG_paid field after refund and link registration with payment
  *
  * @param EE_Registration $registration
  * @param EE_Payment      $payment
  * @param float           $available_refund_amount - IMPORTANT !!! SEND AVAILABLE REFUND AMOUNT AS A POSITIVE NUMBER
  * @return float
  * @throws \EE_Error
  */
 public function process_registration_refund(EE_Registration $registration, EE_Payment $payment, $available_refund_amount = 0.0)
 {
     //EEH_Debug_Tools::printr( $payment->amount(), '$payment->amount()', __FILE__, __LINE__ );
     if ($registration->paid() > 0) {
         // ensure $available_refund_amount is NOT negative
         $available_refund_amount = (double) abs($available_refund_amount);
         // don't allow refund amount to exceed the available payment amount, OR the amount paid
         $refund_amount = min($available_refund_amount, (double) $registration->paid());
         // update $available_payment_amount
         $available_refund_amount -= $refund_amount;
         //calculate and set new REG_paid
         $registration->set_paid($registration->paid() - $refund_amount);
         // convert payment amount back to a negative value for storage in the db
         $refund_amount = (double) abs($refund_amount) * -1;
         // now save it
         $this->_apply_registration_payment($registration, $payment, $refund_amount);
     }
     return $available_refund_amount;
 }
 /**
  * column__REG_paid
  *
  * @access public
  * @param \EE_Registration $item
  * @return string
  */
 function column__REG_paid(EE_Registration $item)
 {
     $payment_method = $item->payment_method();
     $payment_method_name = $payment_method instanceof EE_Payment_Method ? $payment_method->admin_name() : __('Unknown', 'event_espresso');
     $content = '<span class="reg-pad-rght">' . $item->pretty_paid() . '</span>';
     if ($item->paid() > 0) {
         $content .= '<br><span class="ee-status-text-small">' . sprintf(__('...via %s', 'event_espresso'), $payment_method_name) . '</span>';
     }
     return $content;
 }