Index: up_discounts.module
===================================================================
--- up_discounts.module	(revision 1421)
+++ up_discounts.module	(working copy)
@@ -33,11 +33,7 @@
 function up_discounts_order($op, &$order, $arg2) {
   global $up_discounts_recalc;
   if ($op == 'save') {
-    if(!empty($order->uc_discounts_codes) && $up_discounts_recalc) {
-      $codes = implode("\n", $order->uc_discounts_codes);
-      up_discounts_process($order);
-    }
-    $up_discounts_recalc = FALSE;
+    up_discounts_process($order);
   }
 }
 
@@ -57,26 +53,20 @@
   $up_discounts_recalc = TRUE;
 }
 
-function up_discounts_process($order, $discount_code = '') {
-  $codes = array();
-  if ($discount_code) {
-    $codes[] = $discount_code;
-  }
-  if (!empty($order->uc_discounts_codes)) {
-    $codes += $order->uc_discounts_codes;
-  }
-  $codes = implode("\r", $codes);
-  
-  uc_discounts_order_pane_callback(t('Apply discounts'), array('order_id' => $order->order_id, 'uc-discounts-codes' => $codes));
-  
-  // Clear status messages.
-  drupal_get_messages('status', TRUE);
-  
-  // Display errors.
-  $errors = drupal_get_messages('error', TRUE);
-  $warnings = drupal_get_messages('warning', TRUE);
-  $message .= implode(' ', $errors['error']);
-  $message .= implode(' ', $warnings['warning']);
-  if ($message) 
-    uberpos_clear_message($message);
-}
+function up_discounts_process(&$order, $discount_code = '') {
+
+  if (! property_exists($order, 'uc_discounts_codes')) {
+    $order->uc_discounts_codes = array();
+  };
+  if (drupal_strlen($discount_code)) {
+    $order->uc_discounts_codes[] = $discount_code;
+  };
+
+  $result = uc_discounts_apply($order, TRUE, FALSE);
+
+  // since we're attempting to apply discounts every time the order is saved,
+  // it's not a problem if no discount is applied. Suppress warnings and 
+  // errors
+  // ie do nothing
+
+};
