Saving in a column will be a better option considering the data integrity. In a simple scenario where a line item has a discount and over the cause of time, discount can be a different value. If calculated every time, changed discount will show incorrect values for paid invoices.