Our primary membership sign up is via a dropdown list of options at different prices. Regardless of which option is chosen, we would like to give the sign-up person an option to upgrade (via an additional check box? to a premium version at a fixed additional price.
This could be done by creating a price set with the premium option, and then using the civicrm_post hook to make the change once the transaction was successfully completed in the DB.
Pretty much the only things you can do without coding are by setting up a price set with two fields. The first field would be the membership types in a select or radio list. The second field would be a checkbox field with one option. It could be a regular field without any membership tied to it, and you'd just be collecting extra money if someone selects it.
If you wanted to track an extra set of benefits, you might create another membership type with a different membership organization and tie the checkbox to that. The membership organization indicates that it's not an alternative to the main membership but rather a membership that you can hold simultaneously with the other one. It'll make your life more complex in some ways, but you'll be able to quickly see who's got the premium membership.
Although I don't think this will satisfy Dave T's need for something without any coding, the following would be my preferred way.
Let's say you have three membership types, each with premium/non-premium options:
- Student member
- Individual member
- Family member
You'd create six membership types in CiviCRM:
- Standard Student member
- Standard Individual member
- Standard Family member
- Premium Student member
- Premium Individual member
- Premium Family member
- if the checkbox is checked, show the premium options, see if one of the non-premium options is selected, select the corresponding premium option, and hide the non-premium options, or
- if the checkbox is not checked, show the non-premium options, see if one of the premium options is selected, select the corresponding non-premium option, and hide the premium options.
The result will be a single membership type, so it's easy to maintain, report, etc. However, from the member's perspective, the experience is one of an add-on rather than navigating among a bunch of options.