Index: contrib/up_multi/includes/up_multi.ca.inc
===================================================================
--- contrib/up_multi/includes/up_multi.ca.inc	(revision 115)
+++ contrib/up_multi/includes/up_multi.ca.inc	(working copy)
@@ -62,3 +62,116 @@
     uc_order_comment_save($order->order_id, $user->uid, t('The stock level for %model_name at location %store has been increased to !qty.', array('%model_name' => $product->title, '%store' => $store, '!qty' => ($stock - $product->qty))));
   }
 }
+
+
+/**
+ * Implementation of hook_ca_condition().
+ */
+function up_multi_ca_condition() {
+  $order_arg = array(
+    '#entity' => 'uc_order',
+  );
+
+  $conditions['up_multi_condition_pos_store_postal_code'] = array(
+    '#title' => t("Check an order's POS store postal code"),
+    '#category' => t('Order: POS Store address'),
+    '#description' => t('Returns TRUE if the POS store postal code is in the specified area.'),
+    '#callback' => 'up_multi_condition_pos_store_postal_code',
+    '#arguments' => array(
+      'order' => $order_arg,
+    ),
+  );
+  $conditions['up_multi_condition_pos_store_zone'] = array(
+    '#title' => t("Check an order's POS store @zone", array('@zone' => uc_get_field_name('zone'))),
+    '#category' => t('Order: POS Store address'),
+    '#description' => t('Returns TRUE if the POS store @zone is in the specified list.', array('@zone' => uc_get_field_name('zone'))),
+    '#callback' => 'up_multi_condition_pos_store_zone',
+    '#arguments' => array(
+      'order' => $order_arg,
+    ),
+  );
+  $conditions['up_multi_condition_pos_store_country'] = array(
+    '#title' => t("Check an order's POS store country"),
+    '#category' => t('Order: POS Store address'),
+    '#description' => t('Returns TRUE if the POS store country is in the specified list.'),
+    '#callback' => 'up_multi_condition_pos_store_country',
+    '#arguments' => array(
+      'order' => $order_arg,
+    ),
+  );
+
+  return $conditions;
+}
+
+/**
+ * Check an order's POS store postal code.
+ *
+ * @see up_multi_condition_pos_store_postal_code_form()
+ */
+function up_multi_condition_pos_store_postal_code($order, $settings) {
+  $store = up_multi_stores($order->store_id);
+  
+  // If it is an array, that means the store_id doesn't exist, so return FALSE
+  if (is_array($store)) {
+    return FALSE;
+  }
+  
+  // Trim the wildcard off the pattern.
+  $pattern = rtrim($settings['pattern'], '*');
+
+  // Return TRUE if the delivery postal code begins with the pattern.
+  return strpos($store->store_zip, $pattern) === 0;
+}
+
+/**
+ * @see up_multi_condition_pos_store_postal_code()
+ */
+function up_multi_condition_pos_store_postal_code_form($form_state, $settings = array()) {
+  return uc_order_condition_billing_postal_code_form($form_state, $settings);
+}
+
+/**
+ * Check an order's POS store zone.
+ *
+ * @see up_multi_condition_pos_store_zone_form()
+ */
+function up_multi_condition_pos_store_zone($order, $settings) {
+  $store = up_multi_stores($order->store_id);
+  
+  // If it is an array, that means the store_id doesn't exist, so return FALSE
+  if (is_array($store)) {
+    return FALSE;
+  }
+  
+  return in_array($store->store_state, $settings['zones']);
+}
+
+/**
+ * @see up_multi_condition_pos_store_zone()
+ */
+function up_multi_condition_pos_store_zone_form($form_state, $settings = array()) {
+  return uc_order_condition_billing_zone_form($form_state, $settings);
+}
+
+/**
+ * Check an order's POS store country.
+ *
+ * @see up_multi_condition_pos_store_country_form()
+ */
+function up_multi_condition_pos_store_country($order, $settings) {
+  $store = up_multi_stores($order->store_id);
+  
+  // If it is an array, that means the store_id doesn't exist, so return FALSE
+  if (is_array($store)) {
+    return FALSE;
+  }
+  
+  return in_array($store->store_country, $settings['countries']);
+}
+
+/**
+ * @see up_multi_condition_pos_store_country()
+ */
+function up_multi_condition_pos_store_country_form($form_state, $settings = array()) {
+  return uc_order_condition_billing_country_form($form_state, $settings);
+}
\ No newline at end of file
Index: includes/uberpos.ca.inc
===================================================================
--- includes/uberpos.ca.inc	(revision 115)
+++ includes/uberpos.ca.inc	(working copy)
@@ -101,6 +101,28 @@
 }
 
 
+/**
+ * Implementation of hook_ca_condition().
+ */
+function uberpos_ca_condition() {
+  $order_arg = array(
+    '#entity' => 'uc_order',
+  );
+  
+  $conditions['uberpos_condition_is_pos_order'] = array(
+    '#title' => t('Check if an order is from the POS system'),
+    '#category' => t('Order: POS'),
+    '#description' => t('Returns TRUE if the order was from the POS system'),
+    '#callback' => 'uberpos_condition_is_pos_order',
+    '#arguments' => array(
+      'order' => $order_arg,
+    ),
+  );
+
+  return $conditions;
+}
+
+
 /******************************************************************************
  * Conditional Action Callbacks and Forms                                     *
  ******************************************************************************/
@@ -137,3 +159,11 @@
     uc_order_comment_save($order->order_id, 0, t('The stock level for %model_name has been increased to !qty.', array('%model_name' => $product->model, '!qty' => ($stock - $product->qty))));
   }
 }
+
+/**
+ * Check that the order was completed using the POS system
+ */
+function uberpos_condition_is_pos_order($order, $settings) {dsm($order);
+  return $order->cashier > 0;
+}
+
