=== modified file 'payment/uc_payment/uc_payment.ca.inc'
--- payment/uc_payment/uc_payment.ca.inc	2009-07-12 01:09:29 +0000
+++ payment/uc_payment/uc_payment.ca.inc	2009-08-14 17:42:30 +0000
@@ -42,6 +42,17 @@
         ),
         array(
           '#name' => 'uc_order_status_condition',
+          '#title' => t('If the order has been completed.'),
+          '#argument_map' => array(
+            'order' => 'order',
+          ),
+          '#settings' => array(
+            'negate' => TRUE,
+            'order_status' => 'in_checkout',
+          ),
+        ),
+        array(
+          '#name' => 'uc_order_status_condition',
           '#title' => t('If the order status is not already Payment Received.'),
           '#argument_map' => array(
             'order' => 'order',
@@ -67,10 +78,54 @@
     ),
   );

+  $predicates['uc_checkout_complete_paid_shippable'] = array(
+    '#title' => t('Update shippable order status upon checkout completion with full payment'),
+    '#trigger' => 'uc_checkout_complete',
+    '#class' => 'payment',
+    '#status' => 1,
+    '#weight' => 1,
+    '#conditions' => array(
+      '#operator' => 'AND',
+      '#conditions' => array(
+        array(
+          '#name' => 'uc_payment_condition_order_balance',
+          '#title' => t('If the balance is less than or equal to $0.00.'),
+          '#argument_map' => array(
+            'order' => 'order',
+          ),
+          '#settings' => array(
+            'negate' => FALSE,
+            'balance_comparison' => 'less_equal',
+          ),
+        ),
+        array(
+          '#name' => 'uc_order_condition_is_shippable',
+          '#title' => t('If the order is shippable.'),
+          '#argument_map' => array(
+            'order' => 'order',
+          ),
+          '#settings' => array(),
+        ),
+      ),
+    ),
+    '#actions' => array(
+      array(
+        '#name' => 'uc_order_update_status',
+        '#title' => t('Update the order status to "Payment received".'),
+        '#argument_map' => array(
+          'order' => 'order',
+        ),
+        '#settings' => array(
+          'order_status' => 'payment_received',
+        ),
+      )
+    ),
+  );
+
   // Set the order status to "Completed" when checkout is complete, none
   // of the products are shippable, and the balance is less than or equal to 0.
   $predicates['uc_checkout_complete_paid'] = array(
-    '#title' => t('Update order status upon checkout completion with full payment'),
+    '#title' => t('Update non-shippable order status upon checkout completion with full payment'),
     '#trigger' => 'uc_checkout_complete',
     '#class' => 'payment',
     '#status' => 1,

