I can generate both without having to store them inside a database, but the question is: Should I still store them inside my database? What if my client wanted to review his previous invoices and sales reports?
Even for previous invoices and reports you can still generate them on demand, ma you are already supposed to keep track of every single transaction, including it's details and it's dates. A table holding invoices in your case it just repetition of information, you already have that info in other entities.