Index: uc_order.ca.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ubercart/uc_order/uc_order.ca.inc,v
retrieving revision 1.1.2.23
diff -u -p -r1.1.2.23 uc_order.ca.inc
--- uc_order.ca.inc	15 Jun 2009 19:52:26 -0000	1.1.2.23
+++ uc_order.ca.inc	29 Jun 2009 18:35:15 -0000
@@ -527,7 +527,7 @@ function uc_order_condition_billing_coun
 function uc_order_condition_has_products($order, $settings) {
   $products = array();
   foreach ($order->products as $product) {
-    $products[] = $product->nid;
+    $products[] = $product->model;
   }
   $required = array_intersect($settings['products'], $products);
   if ($settings['required']) {
@@ -564,12 +564,20 @@ function uc_order_condition_has_products
     '#default_value' => $settings['forbidden'],
   );
   $options = array();
+  if (module_exists('uc_attribute')) {
+    $adjustments = db_query("SELECT n.nid, a.model FROM {uc_products} AS n INNER JOIN {uc_product_adjustments} AS a ON n.nid = a.nid GROUP BY a.model");
+    while ($adjustment = db_fetch_object($adjustments)) {
+      $options[$adjustment->model] = $adjustment->model;
+    }
+  }
+
   $result = db_query("SELECT nid, model FROM {uc_products}");
   while ($product = db_fetch_object($result)) {
-    $options[$product->nid] = $product->model;
+    $options[$product->model] = $product->model;
   }
+  asort($options);
   $form['products'] = array('#type' => 'select',
-    '#title' => t('Products'),
+    '#title' => t('Product Models'),
     '#options' => $options,
     '#default_value' => $settings['products'],
     '#multiple' => TRUE,
