It seems like premiums only work on the minimum amount, without regard for other settings. Is there a way to get around this? I see the EFF has this option, but their contribution page seems not to be generated by CiviCRM anymore.
1 Answer
I just came across this question and we have solved a similar problem a few years ago, i.e. we want to count the total value of recurring contributions (e.g. a $10 recurring should count as much as a $120 one time).
What we do is to rewrite the function used for computing the premium amount. The javascript is in templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
(copied in a custom extension).
Simply adding the following to the function get_amount
do the trick :
var isrecur = $('.is_recur_radio-section input:checked').val();
if (isrecur == 1) amount = amount * 12;
I suppose it's possible to add some more complex logic.
The fact that we need to update a core template file is not ideal for maintenance but it's a rather small change so it's easy to keep track of it and re-apply the change when we upgrade CiviCRM.
EDIT 2021-03-22
The solution above is not enough: there is validation in CRM/Contribute/Form/Contribution/Main.php
that require adjustment.