Automatic Quote Generation

We would like for a way to automatically generate quotes either based from a form submission where the prospect selects the products they are interested in and populate the rest of their information or from a workflow where the quote can be populated using personalisation tokens taken from the contact or deal record. It would also be good if the snippets used to populate the payment terms could be automatically populated in the quote. We are a Diamond agency and we have had several clients with this requirement.