You are here

function commerce_coupon_handler_area_cart_form_submit in Commerce Coupon 7.2

Same name and namespace in other branches
  1. 7 includes/views/handlers/commerce_coupon_handler_area_cart_form.inc \commerce_coupon_handler_area_cart_form_submit()

Submit: function commerce_coupon_handler_area_cart_form

@todo Anyway to rollback redeeming a coupon if we find an error during redemption?

1 string reference to 'commerce_coupon_handler_area_cart_form_submit'
commerce_coupon_handler_area_cart_form::views_form in includes/views/handlers/commerce_coupon_handler_area_cart_form.inc

File

includes/views/handlers/commerce_coupon_handler_area_cart_form.inc, line 190
Display a commerce coupon form field on the cart form.

Code

function commerce_coupon_handler_area_cart_form_submit($form, $form_state) {

  // Get the values for the coupon form.
  $coupon_parents = array_slice($form_state['triggering_element']['#parents'], 0, -1);
  $coupon_values = drupal_array_get_nested_value($form_state['values'], $coupon_parents);
  $coupon_code = $coupon_values['coupon_code'];
  $order = $form_state['order'];
  $error = '';

  // Redeem the coupon.
  $coupon = commerce_coupon_redeem_coupon_code($coupon_code, $order, $error);
  $order = commerce_order_load($order->order_id);

  // Error found during redeem.
  if (!empty($error)) {
    watchdog('commerce_coupon', 'An error occurred redeeming a coupon: @error', array(
      '@error' => $error,
    ), WATCHDOG_ERROR);
    drupal_set_message(t('Unable to redeem coupon.'), 'error');
    commerce_coupon_remove_coupon_from_order($order, $coupon);
  }
  if ($coupon) {

    // Allow modules/rules to act when a coupon has been successfully added
    // to the cart.
    rules_invoke_all('commerce_coupon_applied_to_cart', $coupon, $order);
  }
}