Functional Invoice Features, please!

The "invoice" feature would be great if it had basic features expected in a standard invoice, such as sender organization details (essential!), etc. but in addition please add other essential features such as a stored list of "items". (businesses tend to sell the same product/service, often with variables, so there is a stored list of "items" to chose from, e.g.,
WIDGET - Red $4
WIDGET - Red, Deluxe $10
WIDGET - Orange $4
WIDGET - Red, Set of 10, volume discount $30

and I don't see a way to generate invoices without retyping the product/service each time)

We also need the ability to set deposits / payment terms, etc. and apply discounts for invoices to be usable. Thanks!