When placing an order in a shop, should a shapshop be taken of the products in an order also?
The best way of freezing the information for this would be to have a separate table for invoice details. This would store not  the basic invoice information (date_of_purchase, customer_ID) , but it would store the individual items in the invoice (Invoice_ID, Product_ID, Product_QTY, Product_Price_Per_Unit). Check out this link here, it covers the general idea that I'm talking about. 
https://itextpdf.com/en/resources/books/zugferd-future-invoicing/3-simple-invoice-database