diff -bduN /home/klavs/drupal6/ubercart-6.x-2.2/uc_order/uc_order.line_item.inc uc_order/uc_order.line_item.inc
--- /home/klavs/drupal6/ubercart-6.x-2.2/uc_order/uc_order.line_item.inc	2009-09-21 16:34:46.000000000 +0200
+++ uc_order/uc_order.line_item.inc	2010-04-30 07:52:48.000000000 +0200
@@ -119,6 +119,7 @@
   if (!is_null($data)) {
     db_query("UPDATE {uc_order_line_items} SET data = '%s' WHERE line_item_id = %d", serialize($data), $id);
   }
+	uc_order_update_total($order_id); //update order total
 
   return TRUE;
 }
@@ -134,6 +135,7 @@
   else {
     db_query("DELETE FROM {uc_order_line_items} WHERE order_id = %d", $id);
   }
+	uc_order_update_total($order_id); //update order total
   return TRUE;
 }
 
@@ -146,6 +148,7 @@
   }
 
   db_query("INSERT INTO {uc_order_line_items} (order_id, type, title, amount, weight, data) VALUES (%d, '%s', '%s', %f, %d, '%s')", $order_id, $type, $title, $amount, $weight, serialize($data));
+	uc_order_update_total($order_id); //update order total
 
   return TRUE;
 }
diff -bduN /home/klavs/drupal6/ubercart-6.x-2.2/uc_order/uc_order.module uc_order/uc_order.module
--- /home/klavs/drupal6/ubercart-6.x-2.2/uc_order/uc_order.module	2009-11-18 23:24:02.000000000 +0100
+++ uc_order/uc_order.module	2010-04-30 21:00:09.000000000 +0200
@@ -1124,12 +1122,6 @@
   $order->line_items = array_merge($order->line_items, uc_order_load_line_items($order, FALSE));
   usort($order->line_items, 'uc_weight_sort');
 
-  // Make sure the total still matches up...
-  if (($total = uc_order_get_total($order)) !== $order->order_total) {
-    db_query("UPDATE {uc_orders} SET order_total = %f WHERE order_id = %d", $total, $order->order_id);
-    $order->order_total = $total;
-  }
-
   if (($count = uc_order_get_product_count($order)) !== $order->product_count) {
     db_query("UPDATE {uc_orders} SET product_count = %d WHERE order_id = %d", $count, $order->order_id);
     $order->product_count = $count;
@@ -1408,6 +1400,18 @@
 }
 
 /**
+	* Update an order's total
+	*/
+function uc_order_update_total($order_id) {
+	//update order total
+	$order = uc_order_load($order_id);				
+  if (($total = uc_order_get_total($order)) !== $order->order_total) {
+    db_query("UPDATE {uc_orders} SET order_total = %f WHERE order_id = %d", $total, $order->order_id);
+    $order->order_total = $total;
+  } 
+}
+
+/**
  * Calculate up an order's total!
  */
 function uc_order_get_total($order, $products_only = FALSE) {
@@ -1452,7 +1456,6 @@
       $total += $value;
     }
   }
-
   return $total;
 }
