? .DS_Store
? example.patch
Index: uc_coupon.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_coupon/uc_coupon.module,v
retrieving revision 1.30
diff -u -p -r1.30 uc_coupon.module
--- uc_coupon.module	1 Jun 2009 18:04:30 -0000	1.30
+++ uc_coupon.module	3 Jun 2009 20:20:03 -0000
@@ -772,6 +772,9 @@ function uc_coupon_validate($code) {
   $result->code = $coupon->code;
   $result->cid = $coupon->cid;
   $result->title = t('Coupon: @code', array('@code' => $coupon->code));
+  $result->type = $coupon->type;
+  $result->value = $coupon->value;
+
 
   if ($coupon->type == 'percentage') {
     $result->amount = $applicable_total * $coupon->value / 100;
@@ -815,17 +818,27 @@ function uc_cart_pane_coupon($form_state
   return $form;
 }
 
+
+/**
+ * Submit handler for uc_cart_pane_coupon.
+ */
 function uc_cart_pane_coupon_submit($form, &$form_state) {
   if ($form_state['values']['code']) {
     $code = strtoupper(check_plain($form_state['values']['code']));
     $coupon = uc_coupon_validate($code);
     if (!$coupon->valid) {
       unset($_SESSION['uc_coupon']);
+      $_SESSION['uc_coupon'] = 0;
       drupal_set_message($coupon->message, 'error');
     }
     else {
       $_SESSION['uc_coupon'] = $code;
       drupal_set_message(t('The coupon has been applied to your order.'));
+      $_SESSION['uc_coupon_valid'] = $coupon->amount;
+      $_SESSION['uc_coupon_value'] = $coupon->value;
+      $_SESSION['uc_coupon_type'] = $coupon->type;
+      $coupon->message = t('The coupon has been applied to your order.');
+      drupal_set_message($coupon->message);
     }
   }
 }
@@ -1102,3 +1115,38 @@ function _uc_coupon_paypal_check() {
     drupal_set_message(t('To use coupons with PayPal you must select "Submit the whole order as a single line item". Click <a href="!url">here</a> to change this setting.', array('!url' => url('admin/store/settings/payment/edit/methods'))));
   }
 }
+
+
+/**
+ * Implementation of hook_form_alter().
+ */
+function uc_coupon_form_alter(&$form, $form_state, $form_id) {
+  if ($form_id == 'uc_cart_view_form') {
+    if (!variable_get('uc_checkout_enabled', TRUE)) {
+     // dpm($form);
+    }
+  }
+}
+
+
+/**
+ * Implementation of hook_uc_cart_alter().
+ * When cart-based discounts are used, alter the cart prices.
+ */
+function uc_coupon_uc_cart_alter(&$items) {
+  if (isset($_SESSION['uc_coupon_valid']) && $_SESSION['uc_coupon_valid']) {
+    if (count($items)) {
+      foreach ($items as $key => $item) {
+        if (!isset($item->altered)) {
+          if ($_SESSION['uc_coupon_type'] == 'percentage') {
+            $items[$key]->price = $items[$key]->price * ((100 - $_SESSION['uc_coupon_value']) / 100);
+          }
+          if ($_SESSION['uc_coupon_type'] == 'price') {
+            $items[$key]->price = $item->price -$_SESSION['uc_coupon_amount'];
+          }
+          $items[$key]->altered = TRUE;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
