I would use a portal on an "invoice" layout to show products which the customer has rented out. Beneath the portal you can add a summary field for the amount due field from each product. I would then set the portal and summary field to "slide up" in the Inspector window during set up of the layout.
a portal is a great UI device, but it is less well suited for printing. Conventional wisdom suggests to use a list layout based on an instance of the table with the greatest granularity – which in this case (as usual in a sales system) is the line items table (as in Customers --< LineItems >-- Products).
the basic principle goes like this: write a script to …
• search for all customers that have line items that haven't been charged yet
• inside a loop, do this:
• create a new invoice record for the current customer
• go to a line items print layout and find all records for this customer that haven't been charged
• give them all the new invoice ID and print them
• return to customers and go to the next customer
• exit the loop when all customers in the found set have been processed
This assumes that you have a separate Invoices table, and that each line item receives the foreign key (ID) of the invoice it appears on. Not being charged for a line item then simply means not having that invoice ID.
I would suggest trying the solution Erolst has explained. Besides being more conventional, it gives you better record keeping of your invoices for future reference.
Thanks Erolst, excellent answer and will do the job perfectly. It's a longer way round than I had assumed but matches in with the system I use for creating other types of invoice and it will ensure I have a better record of invoices.