We have a coldfusion shopping cart that is currently saving order item information in a way that is referencing the live inventory instead of saving the items and archiving them for future reference. So What happens is when we go to look at an old order, it might make items missing or prices missing or changed since it is using the current live inventory that might have changed vs. the inventory at the time of order. To in the orders table there's an "order" field it's storing a CSV list of item id numbers like "1254,1722,1255" etc.
So basically I think what needs to happen is that a new table is created that archives and stores a copy of the order but stores a copy of each item in the inventory. And the admin page where the order is displayed when processing orders needs to be adjusted so when the order is looked up in the admin area it's referencing the archived order data not the live inventory.
The shopping cart uses a cookie that stores this CSV value and passes it into the URL. In other words you'll probably just want to add a new function in that stores the order data to the is table and not change the current core code's functionality.
The cart's code is pretty simple and I don't think this will take someone good at coldfusion more then a couple hours to do.