diff -urp /Users/mik/Downloads/uc_discounts/discounts/uc_discounts_multi_product.module ./discounts/uc_discounts_multi_product.module
--- /Users/mik/Downloads/uc_discounts/discounts/uc_discounts_multi_product.module	2008-10-20 20:05:20.000000000 +0300
+++ ./discounts/uc_discounts_multi_product.module	2008-12-24 23:41:02.000000000 +0200
@@ -25,6 +25,7 @@ function uc_discounts_multi_product_disc
     'property' => 'product_multi_items',
     'description' => t('Discount multiple products from order'),
     'has_qty_field' => TRUE,
+    'item_name_callback' => 'uc_discounts_multi_product_item_name',
     'item_field_callback' => 'uc_discounts_multi_product_item_field', // recycle
     'product_class_callback' => 'uc_discounts_multi_product_class_name', // recycle
     'apply_callback' => 'uc_discounts_multi_product_apply',
@@ -39,10 +40,10 @@ function uc_discounts_multi_product_disc
 
 function uc_discounts_multi_product_check($condition, $total_price, $cart) {
 
-  if (isset($condition->item)) {
+  if (isset($condition->item_id)) {
     $product_count = 0;
     foreach ($cart as $product) {
-      if ( (in_array($product->type, $condition->item) || in_array($product->nid, $condition->item)) && (($condition->amount > 0) ? ($product->price == (float)$condition->amount) : TRUE) ) {
+      if ( (in_array($product->type, $condition->item_id) || in_array($product->nid, $condition->item_id)) && (($condition->amount > 0) ? ($product->price == (float)$condition->amount) : TRUE) ) {
         $product_count += $product->qty;
       }
     }
@@ -67,19 +68,16 @@ function uc_discounts_multi_product_clas
   return $product_name;
 }
 
-function uc_discounts_multi_product_item_name($class_id) {
-  $result = db_query("SELECT name FROM {uc_product_classes} WHERE pcid='%s'", $class_id);
-  $class_name = check_plain(db_result($result));
-  return $class_name;
+function uc_discounts_multi_product_item_name($prod_ids) {
+  $result = db_query("SELECT n.nid,n.title FROM {uc_products} p LEFT JOIN {node} n ON n.nid=p.nid WHERE p.nid IN (".implode(',',$prod_ids).") ORDER BY title");
+	while( $dat = db_fetch_array($result) ) {
+		$prod_names_array[] = check_plain($dat['title']);
+	}
+  $prod_names = implode('; ',$prod_names_array);
+  return $prod_names;
 }
 
 function uc_discounts_multi_product_item_field() {
-  $options = array();
-  $result = db_query("SELECT pcid,name FROM {uc_product_classes} ORDER BY pcid");
-  while ($row = db_fetch_object($result)) {
-    $options[$row->pcid] = check_plain($row->name);
-  }
-
   $products = array();
   $result = db_query("SELECT n.nid,n.title FROM {uc_products} p LEFT JOIN {node} n ON n.nid=p.nid ORDER BY title");
   while ($row = db_fetch_object($result)) {
@@ -111,7 +109,6 @@ function uc_discounts_multi_product_valu
 function uc_discounts_multi_product_apply($op, $action, $total_price, &$cart) {
 
   $action = uc_discounts_load_action($action->id);
-  $action->item = unserialize($action->item_id);
 
   $sql = "SELECT id FROM {uc_discounts_conditions} WHERE discount_id=%d ";
   $sql .= "AND property='product_multi' ";
@@ -120,7 +117,7 @@ function uc_discounts_multi_product_appl
   $condition_list = array();
   while ($row = db_fetch_object($result)) {
     $c = uc_discounts_load_condition($row->id);
-    foreach ($action->item as $ai) {
+    foreach ($action->item_id as $ai) {
       if ($c->amount && in_array($ai, $c->item)) {
         $action->condition_amount = $c->amount;
       }
@@ -129,7 +126,7 @@ function uc_discounts_multi_product_appl
 
   $product_price = 0;
   foreach ($cart as $index => $product) {
-    if ( (in_array($product->nid, $action->item) || in_array($product->type, $action->item)) && (($action->condition_amount > 0) ? ($product->price == (float)$action->condition_amount) : TRUE) ) {
+    if ( (in_array($product->nid, $action->item_id) || in_array($product->type, $action->item_id)) && (($action->condition_amount > 0) ? ($product->price == (float)$action->condition_amount) : TRUE) ) {
       $product_count += $product->qty;
       $product_total += ($product->qty * $product->price);
       $product_found[$index] = $product->qty;
diff -urp /Users/mik/Downloads/uc_discounts/uc_discounts.module ./uc_discounts.module
--- /Users/mik/Downloads/uc_discounts/uc_discounts.module	2008-11-05 09:57:29.000000000 +0200
+++ ./uc_discounts.module	2008-12-24 23:39:57.000000000 +0200
@@ -1255,7 +1255,7 @@ function uc_discounts_condition_form($di
     $form['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Next'),
-    );
+    );		
   }
 
   // stage 2 - everything else
@@ -1799,6 +1799,10 @@ function uc_discounts_load_condition($co
     if (!$condition) {
       drupal_goto('admin/store/discounts');
     }
+		// for product_multi
+		if ($condition->property=='product_multi') {
+			$condition->item_id = unserialize($condition->item_id);
+		}
   }
 
   return $condition;
@@ -1826,6 +1830,10 @@ function uc_discounts_load_action($actio
     if (!$action) {
       drupal_goto('admin/store/discounts');
     }
+		// for product_multi
+		if ($action->property=='product_multi_items') {
+			$action->item_id = unserialize($action->item_id);
+		}
   }
 
   return $action;
Only in ./: uc_discounts_multiproduct.patch
