Index: uc_discounts.module
===================================================================
--- uc_discounts.module	(revision 1455)
+++ uc_discounts.module	(working copy)
@@ -180,35 +180,29 @@
           $existing_line_items = $arg1->line_items;
         }
         else {
-          $existing_line_items = uc_order_load_line_items($arg1->order_id, TRUE);
+          $existing_line_items = uc_order_load_line_items($arg1, TRUE);
         }
 
-        // Use new_order_line_items to populate $arg1->line_items by:
-        // Storing all non-discounts line items
-        // Storing new discount line items
-        $new_order_line_items = array();
-
         //Delete existing discount line items
         foreach ($existing_line_items as $line_item) {
           if ($line_item["type"] == LINE_ITEM_KEY_NAME) {
             uc_order_delete_line_item($line_item["line_item_id"]);
           }
-          //Otherwise store non-discount line item
-          else {
-            $new_order_line_items[] = $line_item;
-          }
         }
 
-        //Add discount line items
+        // Add discount line items
         foreach ($arg1->uc_discounts_line_items as $line_item) {
           if ($line_item['amount'] != 0) {
             uc_order_line_item_add($arg1->order_id, $line_item['type'], $line_item['title'], $line_item['amount'], $line_item['weight'], $line_item['data']);
-            $new_order_line_items[] = $line_item;
           }
         }
 
         //Update order line items (see new_order_line_items notes above)
-        $arg1->line_items = $new_order_line_items;
+        //$arg1->line_items = $new_order_line_items;
+        // Reload order from database to make sure all line items have IDs
+        // (which is necessary in case we get called again and want to delete 
+        // discount line items before adding them again)
+        $arg1->line_items = uc_order_load_line_items($arg1, TRUE);
 
         //Force tax recalculation (currently unused but may be required if line item weights change)
         //module_invoke("uc_taxes", "order", "save", $arg1, "");
