Should there be a temporary table to hold Order and OrderItems? After trying out a few open-source restaurant  POS, I still couldn't decide if there should be a temporary to hold Orders and OrderItems?

I was initially thinking to have temporary tables and permanent tables for Orders and OrderItems and move a record from temporary tables to permanent tables after an order is Closed/Voided. So, temporary table is not immutable and permanent table is immutable. But it seems having both temporary table and permanent tables complex the process because records have to move from temp to permanent table, delete records in the temp table. 

Will it be better to have just one permanent table?
I personally don't see an advantage to separating them, especially given that you will probably have a primary key on the Orders table that the OrderItems table will need to reference.  I normally handle this by having a nullable column for "closed" and/or "voided" that is stamped with now() on the appropriate event but left NULL until then.  If you're concerned about having too many open orders, you could have a garbage collection script that runs during off-peak hours to remove them.