diff --git a/src-db/database/model/functions/M_RESERVATION_POST.xml b/src-db/database/model/functions/M_RESERVATION_POST.xml
--- a/src-db/database/model/functions/M_RESERVATION_POST.xml
+++ b/src-db/database/model/functions/M_RESERVATION_POST.xml
@@ -315,13 +315,7 @@
       SET so_res_status = 'NR'
       WHERE c_orderline_id = v_orderline_id;
 
-      SELECT c_order_id INTO v_sales_order_id
-      FROM c_orderline
-      WHERE c_orderline_id = v_orderline_id;
-      SELECT COUNT(*) INTO v_reservedcount
-      FROM c_orderline
-      WHERE c_order_id = v_sales_order_id
-        AND so_res_status <> 'NR';
+     
       
       -- Convert to pre-reserve reservations related to purchase orders that are not released.
       FOR cur_prereserve IN (
@@ -365,12 +359,25 @@
       WHERE m_reservation_id = v_reservation_id
         AND quantity = 0
         AND COALESCE(releasedqty, 0) = 0;
+        
+      BEGIN
+        SELECT c_order_id INTO v_sales_order_id
+        FROM c_orderline
+        WHERE c_orderline_id = v_orderline_id;
+        SELECT COUNT(*) INTO v_reservedcount
+        FROM c_orderline
+        WHERE c_order_id = v_sales_order_id
+        AND so_res_status <> 'NR';
 
-      UPDATE c_order
-      SET so_res_status = CASE WHEN v_reservedcount > 0 THEN 'PR'
+        UPDATE c_order
+        SET so_res_status = CASE WHEN v_reservedcount > 0 THEN 'PR'
                                ELSE 'NR'
                           END
-      WHERE c_order_id = v_sales_order_id;
+        WHERE c_order_id = v_sales_order_id;
+      EXCEPTION
+        WHEN OTHERS THEN
+          NULL;
+      END;
 
       v_newstatus := 'DR';
       v_newaction := 'PR';
