Index: branches/5.3.x/units/orders/orders_event_handler.php =================================================================== diff -u -r15807 -r15899 --- branches/5.3.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 15807) +++ branches/5.3.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 15899) @@ -1,6 +1,6 @@ LockTables($event); - if ( !$this->CheckQuantites($event) ) { + $reoccurring_order = substr($event->Special, 0, 9) == 'recurring'; + + if ( !$reoccurring_order && !$this->CheckQuantites($event) ) { + // don't check quantities (that causes recalculate) for reoccurring orders return; } @@ -2916,7 +2919,8 @@ $sql = 'SELECT '.$backorder_select.' AS BackOrderFlagCalc, oi.* FROM '.TABLE_PREFIX.'OrderItems oi LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId - WHERE (OrderId = %s) AND (BackOrderFlagCalc = 0) AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.')'; + WHERE (OrderId = %s) AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.') + HAVING BackOrderFlagCalc = 0'; $products = $this->Conn->Query( sprintf($sql, $ord_id) ); foreach ($products as $product) {