From 6d4ab6de3519c9998224a81572c4dccec5d75396 Mon Sep 17 00:00:00 2001 From: Michael Nielson Date: Sat, 21 Jul 2012 00:25:29 -0700 Subject: [PATCH] Revised remaining uses to times used. --- classes/commerce_coupon_type.inc | 1 + commerce_coupon.info | 1 + commerce_coupon.install | 6 +++++ commerce_coupon.module | 11 +++++--- includes/views/commerce_coupon.views.inc | 7 +++++ ...erce_coupon_handler_field_coupon_times_used.inc | 28 ++++++++++++++++++++ 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 includes/views/handlers/commerce_coupon_handler_field_coupon_times_used.inc diff --git a/classes/commerce_coupon_type.inc b/classes/commerce_coupon_type.inc index 88355ac..c501cbb 100644 --- a/classes/commerce_coupon_type.inc +++ b/classes/commerce_coupon_type.inc @@ -12,6 +12,7 @@ class CommerceCouponType extends Entity { public $type; public $label; public $weight = 0; + public $times_used = 0; public function __construct($values = array()) { parent::__construct($values, 'commerce_coupon_type'); diff --git a/commerce_coupon.info b/commerce_coupon.info index 2e34755..96ce013 100644 --- a/commerce_coupon.info +++ b/commerce_coupon.info @@ -15,4 +15,5 @@ files[] = classes/commerce_coupon_type.inc ; Views Handler files[] = includes/views/handlers/commerce_coupon_handler_field_coupon_granted_amount.inc +files[] = includes/views/handlers/commerce_coupon_handler_field_coupon_times_used.inc files[] = includes/views/handlers/commerce_coupon_handler_field_coupon_operations.inc diff --git a/commerce_coupon.install b/commerce_coupon.install index 06be799..dcfe7c7 100644 --- a/commerce_coupon.install +++ b/commerce_coupon.install @@ -31,6 +31,12 @@ function commerce_coupon_schema() { 'not null' => TRUE, 'default' => 0, ), + 'times_used' => array( + 'description' => 'Number of times the coupon has been used.', + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), 'created' => array( 'description' => 'The Unix timestamp when the coupon was created.', 'type' => 'int', diff --git a/commerce_coupon.module b/commerce_coupon.module index 590d895..0b7d625 100644 --- a/commerce_coupon.module +++ b/commerce_coupon.module @@ -249,6 +249,10 @@ function commerce_coupon_redeem_coupon($coupon, $order) { // We invoke the rule. The defined action callback methods sets then the // coupon value appropriate. rules_invoke_event('commerce_coupon_redeem', $coupon, $order); + // Increment the times used. + $coupon->times_used++; + // Save the coupon and the order objects. + commerce_coupon_save($coupon); commerce_order_save($order); } @@ -776,10 +780,9 @@ 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) { - $query = new EntityFieldQuery(); - $query->entityCondition('entity_type', 'commerce_order') - ->fieldCondition('commerce_coupon_order_reference', 'target_id', $coupon_id, '='); - return $query->count()->execute(); + // Load the coupon and return the number of times used. + $coupon = commerce_coupon_load($coupon_id); + return $coupon->times_used; } /** diff --git a/includes/views/commerce_coupon.views.inc b/includes/views/commerce_coupon.views.inc index 3e509b1..af6db8c 100644 --- a/includes/views/commerce_coupon.views.inc +++ b/includes/views/commerce_coupon.views.inc @@ -25,5 +25,12 @@ function commerce_coupon_views_data_alter(&$data) { 'handler' => 'commerce_coupon_handler_field_coupon_granted_amount', ), ); + $data['commerce_coupon']['times_used'] = array( + 'field' => array( + 'title' => t('Times used'), + 'help' => t('Number of times the coupon has been used.'), + 'handler' => 'commerce_coupon_handler_field_coupon_times_used', + ), + ); } } diff --git a/includes/views/handlers/commerce_coupon_handler_field_coupon_times_used.inc b/includes/views/handlers/commerce_coupon_handler_field_coupon_times_used.inc new file mode 100644 index 0000000..cafdc4c --- /dev/null +++ b/includes/views/handlers/commerce_coupon_handler_field_coupon_times_used.inc @@ -0,0 +1,28 @@ +additional_fields['coupon_id'] = 'coupon_id'; + + } + + function query() { + $this->ensure_my_table(); + $this->add_additional_fields(); + } + + function render($values) { + // Get the coupon id. + $coupon_id = $this->get_value($values, 'coupon_id'); + // Get the number of times used. + $times_used = commerce_coupon_get_number_of_uses($coupon_id); + return $times_used; + } +} -- 1.7.9.5