Invoices - Would like to customize with summary

I am looking at customizing the sales invoice, and for invoiced time, instead of listing each time entry, I would like to be able to summarize the time recorded so that instead of saying:

[Description] [Hours] [Unit Price] [Amout]

It could be:
[Project] [Category] [Hours] [Unit Price] [Amount]

where [Project] then [Category] then [Unit Price] are my “group by” values, and I show a sum of all hours and a sum of the Amount as well

I have extensively read the Liquid APIs, but have not been able to discern how best to accomplish this.

I would only want to do this for billable time, and not for reimbursable expenses and/or items that are being sold.

Is there a way to accomplish this?

My reasoning for this is that a month of recorded time can span 3-5 pages, and having a more succinct invoice would be easier for the client, and myself, to understand.

Your goal might be best accomplished by keeping track of time outside of Manager. Then, at the end of a month, make a single entry combining all the month’s billable time in one entry. You are not going to be able to do what you want with custom themes, because themes can only display variables already defined for a transaction form. The summarized values are not available anywhere in the database and, therefore, are not called for the invoice form.

I realize that the data within the database itself is not summarized. I am ok with that. I feel like there must be an object model that you can somehow _map and _reduce in a manner to be able to summarize the data within the template itself, like you would with JavaScript???

Does Liquid not support such a thing?

Maybe that is the root of my question. Two things:

  1. Is there an object model document somewhere that I (and others) can access to better build custom templates?
  2. Is there a way to map/reduce the data?
  3. Can we access custom values from the data elements?

With these items, you can build templates where the time portion is summarized, but other items are detailed in nature, so long as the attributes within the object model are projected as would be expected. I know Liquid does support some filtering, so I thought maybe it would be possible…

Maybe a for…each loop with a few variables & some summation may help here? Unsure and could use some guidance.

No. Liquid (in Manager) really only controls display of information already destined for a form.

No. The Plain theme includes all variables called by any transaction form (because themes can be used by any form). If you have the skills to do the types of things you are asking about, you should be able to decipher which variables do what in each transaction form type. The key is to understand that in every tab, the same variable may be populated with different information. recipient, for example, can be a customer, supplier, or employee.

Your other questions go beyond the scope of this forum. We try to stick to use of the program, not be a place for software tutorials.