diff --git a/commerce_coupon.module b/commerce_coupon.module index 1256621..6491a3c 100644 --- a/commerce_coupon.module +++ b/commerce_coupon.module @@ -796,13 +796,23 @@ function commerce_coupon_code_exists($code) { * Returns number of uses of the coupon in all orders. */ function commerce_coupon_get_number_of_uses($coupon_id) { + $order_statuses = variable_get('commerce_coupon_used_order_statuses', commerce_coupon_default_used_order_statuses()); $query = new EntityFieldQuery(); $query->entityCondition('entity_type', 'commerce_order') + ->propertyCondition('status', $order_statuses) ->fieldCondition('commerce_coupon_order_reference', 'target_id', $coupon_id, '='); return $query->count()->execute(); } /** + * Get a default list of order statuses that makes a coupon used. + */ +function commerce_coupon_default_used_order_statuses() { + $statuses = commerce_order_statuses(array('state' => 'completed')) + commerce_order_statuses(array('state' => 'canceled')); + return array_keys($statuses); +} + +/** * Finds out if a given coupon code is present in an order. * * @param $code diff --git a/includes/commerce_coupon_ui.settings.inc b/includes/commerce_coupon_ui.settings.inc index 3c5ddb3..24f677a 100644 --- a/includes/commerce_coupon_ui.settings.inc +++ b/includes/commerce_coupon_ui.settings.inc @@ -16,6 +16,20 @@ function commerce_coupon_ui_settings_form($form, &$form_state) { '#description' => t('Set the coupon code length for auto generated codes.'), ); + $options = array(); + foreach (commerce_order_statuses() as $status) { + $options[$status['name']] = $status['title']; + } + + $form['commerce_coupon_used_order_statuses'] = array( + '#type' => 'select', + '#title' => t('Order statuses for used coupons'), + '#description' => t('Select the order statuses that will mark a coupon code as used.'), + '#options' => $options, + '#multiple' => TRUE, + '#default_value' => variable_get('commerce_coupon_used_order_statuses', commerce_coupon_default_used_order_statuses()), + ); + $form['commerce_coupon_coupon_upgrade_types'] = array( '#type' => 'fieldset', '#title' => t('Upgrade basic coupons'),