--- c:\documents and settings\user\desktop\patching\old_userpoints_ecommerce.module	2007-05-06 13:02:48.000000000 -0500
+++ c:\documents and settings\user\desktop\patching\new_userpoints_ecommerce.module	2007-07-10 09:37:52.671875000 -0500
@@ -149,6 +149,7 @@ function userpoints_ecommerce_paymentapi
 
       // Check the user's balance
       $balance = userpoints_get_current_points($uid);
+
       if ($balance >= $points) {
 
         $txnid = $txn->txnid;
@@ -185,5 +186,64 @@ function userpoints_ecommerce_paymentapi
         }
       }
       break;
+
   }
 }
+
+function userpoints_ecommerce_checkoutapi(&$txn, $op, $arg3 = NULL, $arg4 = NULL) {
+  global $user;
+  $uid = $user->uid;
+  $balance = userpoints_get_current_points($uid);
+  $multiplier = (int)variable_get(USERPOINTS_EC_SPEND, 1);
+  $gross = store_transaction_calc_gross($txn);
+  $points = ($gross * $multiplier);
+
+  $output = '';
+  switch ($op) {
+    case 'form':
+      if ($form = payment_view_methods()) {
+        drupal_set_title(t('Please select a payment method'));
+        $form[] = array(
+          '#type' => 'submit',
+          '#value' => t('Continue'),
+          );
+        return $form;
+      }
+      else {
+        foreach (payment_get_methods() as $module) {
+		$module = (object) $module;
+          if (module_invoke($module, 'paymentapi', $txn, 'display name')) {
+            $txn->payment_method = $module;
+            break;
+          }
+        }
+        return false;
+      }
+
+    case 'validate':
+      if (!$txn->payment_method) {
+        form_set_error('payment_method', t('Please choose a payment method.'));
+      }
+      break;
+
+    case 'save':
+      $txn->screen++;
+      break;
+
+    case 'review':
+      $form['payment'] = array('#value' => module_invoke($txn->payment_method, 'paymentapi', $txn, 'display name'));
+      return $form;
+
+    case 'review_validate':
+	  if ($balance < $points) { 
+        form_set_error('gross', t('You do not have enough !points for this purchase', userpoints_translation()));
+      }
+		break;
+
+
+    case 'review_save':
+      break;
+  }
+} 
+
+
