We've had a number of users make this request, and I thought it would be a good idea to mention it since I don't think it would be too difficult to implement. Right now, each recurring fee on a user account has a "cancel" link. The user (or an admin) can click the link to remove the recurring fee from the account.
However there are times when a user may want to enable or disable a recurring fee. We have this occur a number of times on our site. Some users are uncertain they want to renew their subscription before the end of the month, and would prefer the ability to disable the recurring fee, but then may choose to re-enable it before their expiration date. As it is right now, the "cancel" option is an 'all or nothing' for users. Administrators have the ability to turn a recurring fee back on for users in the "admin/store/orders/recurring" area, but no such option exists for users.
I think this could be implemented fairly easily doing something like the following:
- Add a checkbox option in "admin/store/settings/products/edit/features" to allow admins to grant users the right to enable/disable their recurring fees.
- Add a checkbox called "enabled" on the Recurring Fees table displayed on a user account, to the left of the "cancel" link. Have the checkbox selected by default. (Or to make it consistent with the current structure, it could be a link which says "enabled," just like the "cancel" link.)
- When the checkbox (or link) is selected, redirect the user to a page asking for validation that he or she wishes to disable their recurring fee.
- If the user does disable the recurring fee, update a value in the
uc_recurring_userstable in the database. It can be handled one of two ways -- add a new column inuc_recurring_userscalled "status," where "1" is enabled and "0" is disabled, or update the "remaining_intervals" column to be "0" (and then reset it to the maximum value if a user re-enables their recurring fee). My preference would be to add a "status" column, since there may be situations where a site wishes to keep the number of remaining intervals intact.
This ability to toggle recurring fees on and off was available in the short-lived uc_subscribe module (http://www.ubercart.org/contrib/2851). We used it for a brief time last year, but there were far too many other issues with it. We eventually switched to uc_recurring when it was launched. I think this would be a nice feature to add.
Comments
Comment #1
univate commentedHaving been involved in a subscription based business myself, we have never normally wanted to make it easier for people to make the decision to cancel so I would never have a use for this feature myself. I perfer the idea of customers having to make a firm decision to cancel, if they have any doubts they are likely to wait a little closer to the renewal date (hopefully you have conviced them to continue subscribing). On the other hand having the ability to suspend a recurring fee for a period might be useful to administrators.
Depending on the gateway It is possible for a cancel to be undone in the current version - you just need an admin to renable the recurring fee by editing it and changing the number of intervals from 0 to unlimited or a number greater then 0 - so that means you need a gateway with the ability to edit a recurring fee.
So with something like Paypal this never going to be possible when a cancel is triggered you wouldn't be able to undo that.
All user operations are currently provided by the payment method/gateway in the form of menu items in the hook_recurring_info() function. So it would be possible to add enable/delete functions as an user operations/menu item in the gateway being used. As this is potentially a feature the might be useful to other gateway this could be added as a standard function in uc_recurring that other gateways can also enable.
Comment #2
sgdev commentedI agree with you, but not all businesses feel this way. Some actually believe they are providing their customers with a benefit by offering flexibility and transparency, and feel that such an option will lead to more business in the long run. Every business is entitled to set the rules they believe best fits their customers and market segment. This is why I think such functionality should be an option, not mandatory.
Yes, of course... this is what I was referring to in the original post. Administratively it can be accomplished (for Authorize.net); this is understood.
Makes sense to me.
Comment #3
univate commentedSomething that got me thinking about with this issue is that I wonder if there is a way we can override the permission on each user operation, that way when you go to the recurring feature administrations or even directly in the permissions section there are options to enable or disable each operation for specific users, for example there are cases when you want to disable the ability to cancel recurring fees (when the recurring fees are a payment plan like mentioned in another issue).
Comment #4
amitaibu#596636: By product option to allow/disallow user cancellation probably will solve this.
Comment #5
sgdev commented@Amitabitu -- The link you provided is a different issue. In theory I understand the concept you are suggesting, but this is in regards to disabling the recurring fee rather than canceling it.
Comment #6
sgdev commented@univate -- I agree this would be a much more flexible solution, and the same is true of the "cancel" link. If these permissions can be assigned by role, it would provide admins with any possible option. However if prioritizing, I would say having the enable / disable functionality available as an 'all or nothing' for all roles is better than not having it at all.
Comment #7
amitaibu@ron_s,
The concept I suggest is the access permissions entry point for all actions, disabling, canceliing, updating, etc'.
Comment #8
univate commentedThis feature is firstly dependent on the payment gateway providing support for this type of functionality. For those gateways that payments are fully triggered from uc_recurring the hooks in uc_recurring should allow this type of feature to be added onto a site.
I'm not going to try and spend any time on this so marking as wont fix, although I am wiling to look at any patches.
Comment #9
spyderpie commentedDid anything ever come of this? .. I am in D7 and would love this feature to have a user be able to select if they want to autobill (unless its in there and I missed it ;)
Peace,
Julie