I am wondering why you are starting with the invoice. If you started with a central data table, say one line for each invoice, and a column for each charge, it would not only be easy to generate new invoice numbers by filling down in the data table it would be easy to examine that data, summarize, etc.. It would be much easier to navigate to past invoices- in many cases you could find at a glance what you wanted in your data table.
I am suggesting a single invoice that draws on a data table to populate its various charges dependent on what name or invioce number is entered into it. This invoice is printed to be sent and/or saved to a pdf if you want an actual copy of what was sent. How does that sound?