Comunque io vedo che in step 4 recuperi l'id dell'ordine e lo metti in sessione
$_SESSION['orderId'] = $orderId;
ma poi non lo usi in step 3 anzi saveOrder ti restituisce un altro id. Cioè tu cerchi l'ultimo id inserito (ed è sbagliato come fai perchè se qualcuno inserisce un ordine contemporaneamente tu prendi il suo id) lo metti in sessione e dovresti andare ad inserire in tbl_order un ordine con l'id recuperato ma questo equivale a fare un update e non un insert...
c'è qualcosa che non riesco a capire nel funzionamento...non ti pare?