?>
: </span><span  class="amount"><?php 
echo $grand_total;
?>
</span></td>
            <td><span class="small1"><?php 
epl_e('Balance Due');
?>
: </span><span  class="amount"><?php 
echo epl_get_formatted_curr(epl_get_balance_due(), null, true);
?>
</span></td>

        </tr>
        <?php 
$payment_data = epl_get_regis_payments();
foreach ($payment_data as $t => $p) {
    if ($p['_epl_payment_amount'] == 0) {
        continue;
    }
    ?>
            <tr style="border-top:1px solid #d7d7d7;">
                <td><?php 
    echo epl_formatted_date($p['_epl_payment_date']);
    ?>
</td>
                <td><?php 
    echo epl_get_formatted_curr($p['_epl_payment_amount'], null, true);
    ?>
                    <span style="float: right;"><?php 
    echo epl_trunc(epl_get_element($p['_epl_payment_method'], $epl_fields['epl_regis_payment_fields']['_epl_payment_method']['options'], ''), 10);
function epl_get_balance_due()
{
    global $cart_totals;
    $regis_total = get_the_regis_total_amount(false);
    $payment_data = epl_get_regis_payments();
    $alt_total_due = epl_get_element_m('pay_deposit', 'money_totals', $cart_totals) == 1 ? epl_get_element_m('min_deposit', 'money_totals', $cart_totals, $regis_total) : $regis_total;
    if (!empty($payment_data)) {
        $total_paid = 0;
        foreach ($payment_data as $time => $p) {
            if ($p['_epl_payment_amount'] == 0) {
                continue;
            }
            $regis_total -= epl_get_formatted_curr($p['_epl_payment_amount'], 4);
        }
    } else {
        $regis_total = $alt_total_due;
    }
    return $regis_total == 0 ? abs($regis_total) : $regis_total;
}
 function _exp_checkout_do_payment()
 {
     global $event_details, $cart_totals;
     $event_id = $event_details['ID'];
     if (is_null($event_id)) {
         //return false;
     }
     $regis_id = $this->erm->get_regis_id();
     $post_ID = $this->erm->get_regis_post_id();
     $this->ecm->setup_event_details($event_id);
     $line_item_surcharge = false;
     $line_item_surcharge = apply_filters('egm__pp_exp__line_item_surcharge', $line_item_surcharge);
     $_totals = $this->erm->calculate_cart_totals();
     $amount = $cart_totals['money_totals']['grand_total'];
     $amount = epl_get_balance_due();
     $tax = epl_get_element_m('surcharge', 'money_totals', $cart_totals, 0);
     $subtotal = epl_get_element_m('subtotal', 'money_totals', $cart_totals, 0);
     $num_days_in_cart = array();
     $price_multiplier = array();
     $price_multiplier_label = array();
     $discount_amount = number_format(epl_get_element('discount_amount', $cart_totals['money_totals'], 0), 2, ".", "");
     //$subtotal = $discount_amount > 0 ? number_format( $subtotal - $discount_amount, 2 ) : $subtotal;
     $this->epl->load_file('libraries/gateways/paypal/paypal.php');
     $paypal = new EPL_Paypal();
     $gateway_info = $this->erm->get_gateway_info();
     $paypal->_credentials = array('USER' => $gateway_info['_epl_pp_exp_user'], 'PWD' => $gateway_info['_epl_pp_exp_pwd'], 'SIGNATURE' => $gateway_info['_epl_pp_exp_sig']);
     $requestParams = array('TOKEN' => $_GET['token'], 'PAYMENTACTION' => 'Sale', 'PAYERID' => $_GET['PayerID']);
     $orderParams = array('PAYMENTREQUEST_0_AMT' => $amount, 'PAYMENTREQUEST_0_ITEMAMT' => $amount - $tax, 'PAYMENTREQUEST_0_CURRENCYCODE' => epl_nz(epl_get_general_setting('epl_currency_code'), 'USD'), 'PAYMENTREQUEST_0_TAXAMT' => $line_item_surcharge === false ? $tax : 0);
     $counter = 0;
     $tickets = $_SESSION['__epl'][$regis_id]['_dates']['_att_quantity'];
     $dates = isset($_SESSION['__epl'][$regis_id]['_dates']['_epl_start_date']) ? $_SESSION['__epl'][$regis_id]['_dates']['_epl_start_date'] : array();
     $events = $_SESSION['__epl'][$regis_id]['_events'];
     $parallel_pay = epl_get_regis_setting('_epl_enable_PP_parallel_pay') == 10 && !epl_is_empty_array(epl_get_element('_epl_price_parallel_pay_email', $event_details, array()));
     $pp_email = epl_get_element('_epl_pp_exp_email', $gateway_info);
     if ($parallel_pay) {
         $orderParams = array();
         foreach ($tickets as $event_id => $ind_tickets) {
             $this->ecm->setup_event_details($event_id);
             foreach ($ind_tickets as $ticket_id => $ticket_qty) {
                 $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']);
                 $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']);
                 if (epl_is_eligible_for_member_price($ticket_id)) {
                     $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price);
                 }
                 $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty;
                 if ($qty > 0) {
                     $orderParams['PAYMENTREQUEST_' . $counter . '_AMT'] = $ticket_price;
                     $orderParams['PAYMENTREQUEST_' . $counter . '_SELLERPAYPALACCOUNTID'] = epl_get_element_m($ticket_id, '_epl_price_parallel_pay_email', $event_details, $pp_email);
                     $orderParams['PAYMENTREQUEST_' . $counter . '_SHIPPINGAMT'] = 0;
                     $orderParams['PAYMENTREQUEST_' . $counter . '_CURRENCYCODE'] = epl_nz(epl_get_general_setting('epl_currency_code'), 'USD');
                     $orderParams['PAYMENTREQUEST_' . $counter . '_ITEMAMT'] = $ticket_price;
                     $orderParams['PAYMENTREQUEST_' . $counter . '_TAXAMT'] = 0;
                     $orderParams['PAYMENTREQUEST_' . $counter . '_DESC'] = substr($ticket_name, 0, 126);
                     $orderParams['PAYMENTREQUEST_' . $counter . '_PAYMENTREQUESTID'] = $post_ID . '-' . $counter;
                     $counter++;
                 }
             }
         }
     }
     $counter = 0;
     $item = array();
     foreach ($tickets as $event_id => $ind_tickets) {
         $this->ecm->setup_event_details($event_id);
         $num_days_in_cart[$event_id] = count(epl_get_element($event_id, $dates, array()));
         $price_multiplier[$event_id] = $event_details['_epl_price_per'] == 10 && !epl_is_date_level_price() ? $num_days_in_cart[$event_id] : 1;
         $price_multiplier_label[$event_id] = $price_multiplier[$event_id] > 1 ? ' - ' . $num_days_in_cart[$event_id] . ' ' . epl__('days') : '';
         foreach ($ind_tickets as $ticket_id => $ticket_qty) {
             $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']);
             $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']);
             if (epl_is_eligible_for_member_price($ticket_id)) {
                 $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price);
             }
             $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty;
             if ($qty > 0) {
                 $item['L_PAYMENTREQUEST_0_NAME' . $counter] = substr($event_details['post_title'], 0, 126);
                 $item['L_PAYMENTREQUEST_0_DESC' . $counter] = $ticket_name . $price_multiplier_label[$event_id];
                 //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
                 $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $ticket_price;
                 $item['L_PAYMENTREQUEST_0_QTY' . $counter] = $qty * $price_multiplier[$event_id];
                 $counter++;
             }
         }
     }
     if ($parallel_pay) {
         $item = array();
         $counter = 0;
         $ticket_counter = 0;
         //this will be incremented if we do line item per ticket qty
         foreach ($tickets as $event_id => $ind_tickets) {
             $this->ecm->setup_event_details($event_id);
             foreach ($ind_tickets as $ticket_id => $ticket_qty) {
                 $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']);
                 $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']);
                 if (epl_is_eligible_for_member_price($ticket_id)) {
                     $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price);
                 }
                 $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty;
                 if ($qty > 0) {
                     $item['L_PAYMENTREQUEST_' . $counter . '_NAME' . $ticket_counter] = substr($event_details['post_title'], 0, 126);
                     $item['L_PAYMENTREQUEST_' . $counter . '_DESC' . $ticket_counter] = $ticket_name . $price_multiplier_label[$event_id];
                     //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
                     $item['L_PAYMENTREQUEST_' . $counter . '_AMT' . $ticket_counter] = $ticket_price;
                     $item['L_PAYMENTREQUEST_' . $counter . '_QTY' . $ticket_counter] = $qty * $price_multiplier[$event_id];
                     $counter++;
                 }
             }
         }
     }
     if (!$parallel_pay) {
         if ($tax > 0 && $line_item_surcharge !== false) {
             //$discount_description = epl_get_element( 'discount_description', $cart_totals['money_totals'], null );
             foreach ($_SESSION['__epl'][$regis_id]['_events'] as $event_id => $event_totals) {
                 $sc = epl_get_element_m('surcharge', 'money_totals', $event_totals, 0);
                 if ($sc == 0) {
                     continue;
                 }
                 $this->ecm->setup_event_details($event_id);
                 $surcharge_label = epl_get_element('_epl_surcharge_label', $event_details, epl__('Surcharge'));
                 $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $surcharge_label;
                 //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description;
                 //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
                 $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $sc;
                 $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
                 $requestParams['PAYMENTREQUEST_0_ITEMAMT'] += $sc;
                 $counter++;
             }
         }
         if ($discount_amount > 0) {
             $discount_description = epl_get_element('discount_description', $cart_totals['money_totals'], null);
             $discount_description = substr($discount_description, 0, 126);
             $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $discount_description;
             //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description;
             //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
             $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $discount_amount;
             $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
         }
         $alt_total_due = epl_get_element_m('pay_deposit', 'money_totals', $cart_totals) == 1;
         if ($alt_total_due > 0) {
             $counter++;
             $balance_due_desc = epl__('Deposit Offset.  Due at a later date.');
             $balance_due_desc = substr($balance_due_desc, 0, 126);
             $balance_offset = get_the_regis_total_amount(false) - $amount;
             $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $balance_due_desc;
             //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description;
             //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
             $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $balance_offset;
             $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
         }
         $payment_data = epl_get_regis_payments();
         if (!empty($payment_data)) {
             if (count($payment_data) > 0) {
                 foreach ($payment_data as $time => $p) {
                     $counter++;
                     $payment_made_description = epl__('Offset for payment made on: ') . epl_formatted_date($p['_epl_payment_date']);
                     $payment_made_description = substr($payment_made_description, 0, 126);
                     $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $payment_made_description;
                     //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description;
                     //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id;
                     $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $p['_epl_payment_amount'];
                     $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
                 }
             }
         }
         if (($donation_amount = epl_get_element_m('donation_amount', 'money_totals', $cart_totals, 0)) > 0) {
             $counter++;
             $item['L_PAYMENTREQUEST_0_NAME' . $counter] = epl__('Donation');
             $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $donation_amount;
             $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
         }
         if (($original_total = epl_get_element_m('original_total', 'money_totals', $cart_totals, 0)) > 0) {
             $counter++;
             $item['L_PAYMENTREQUEST_0_NAME' . $counter] = epl__('Offset');
             $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * ($original_total - $orderParams['PAYMENTREQUEST_0_AMT']);
             $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1;
         }
     }
     $request = $requestParams + $item + $orderParams;
     $request = apply_filters('epl_express_checkout_do_payment_request_params', $request);
     $response = $paypal->request('DoExpressCheckoutPayment', $request);
     if (is_array($response) && $response['ACK'] == 'Success') {
         $payment_amount = $response['PAYMENTINFO_0_AMT'];
         $counter = 0;
         if ($parallel_pay) {
             $payment_amount = 0;
             foreach ($tickets as $event_id => $ind_tickets) {
                 $this->ecm->setup_event_details($event_id);
                 foreach ($ind_tickets as $ticket_id => $ticket_qty) {
                     $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty;
                     if ($qty > 0) {
                         $payment_amount += epl_get_element('PAYMENTINFO_' . $counter . '_AMT', $response, 0);
                         $counter++;
                     }
                 }
             }
         }
         $data['post_ID'] = $post_ID;
         $data['_epl_grand_total'] = $cart_totals['money_totals']['grand_total'];
         $data['_epl_payment_amount'] = $payment_amount;
         $data['_epl_payment_date'] = current_time('mysql');
         $data['_epl_payment_method'] = $this->erm->get_payment_profile_id();
         $data['_epl_transaction_id'] = $response['PAYMENTINFO_0_TRANSACTIONID'];
         $data['_epl_prediscount_total'] = epl_get_element('pre_discount_total', $cart_totals['money_totals'], 0);
         $data['_epl_discount_amount'] = epl_get_element('discount_amount', $cart_totals['money_totals'], 0);
         $data = apply_filters('epl_pp_exp_response_data', $data, $response);
         $this->erm->update_payment_data($data);
         return true;
         //echo "DONE";
     } else {
         $error = 'ERROR: ' . $response['L_SHORTMESSAGE0'] . '. ' . $response['L_LONGMESSAGE0'];
         echo EPL_Util::get_instance()->epl_invoke_error(0, $error, false);
     }
     return false;
 }
 function get_the_regis_balance_due()
 {
     global $regis_details, $event_details;
     $payment_data = epl_get_regis_payments();
     $grand_total = $this->get_the_regis_total_amount(false);
     $total_paid = 0;
     foreach ($payment_data as $time => $p) {
         $total_paid += $p['_epl_payment_amount'];
     }
     return epl_nz($grand_total - $total_paid);
 }