You are here

function commerce_sagepay_refund_form in Drupal Commerce SagePay Integration 7

Form callback: allows the user to refund a transaction.

Parameters

array $form: The form array.

array $form_state: The form state array

commerce_order $order: The Commerce Order to process.

commerce_payment_transaction $transaction: The Commerce Payment Transaction to process.

Return value

mixed The form array.

1 string reference to 'commerce_sagepay_refund_form'
commerce_sagepay_menu in ./commerce_sagepay.module
Implements hook_menu().

File

includes/commerce_sagepay_refund.inc, line 27

Code

function commerce_sagepay_refund_form($form, &$form_state, $order, $transaction) {
  $form_state['order'] = $order;
  $form_state['transaction'] = $transaction;

  // Load and store the payment method instance for this transaction.
  $payment_method = commerce_payment_method_instance_load($transaction->instance_id);
  $form_state['payment_method'] = $payment_method;
  $balance = commerce_payment_order_balance($order);

  // Assume we are going to want to refund the whole transaction.
  $default_amount = $transaction->amount;

  // Convert the price amount to a user friendly decimal value.
  $default_amount = commerce_currency_amount_to_decimal($default_amount, $transaction->currency_code);
  $description = implode('<br />', array(
    t('Refund: @amount', array(
      '@amount' => commerce_currency_format($transaction->amount, $transaction->currency_code),
    )),
    t('Order balance: @balance', array(
      '@balance' => commerce_currency_format($balance['amount'], $balance['currency_code']),
    )),
  ));
  $form['amount'] = array(
    '#type' => 'textfield',
    '#title' => t('Refund amount'),
    '#description' => check_plain($description),
    '#default_value' => $default_amount,
    '#field_suffix' => check_plain($transaction->currency_code),
    '#size' => 16,
  );
  $form = confirm_form($form, t('What amount do you want to refund?'), 'admin/commerce/orders/' . $order->order_id . '/payment', '', t('Refund'), t('Cancel'), 'confirm');
  return $form;
}