I would like to suggest a feature to allow memberships to always expire at a certain date, kind of relative to the start date.
My client currently handles memberships as such:
User signs up, say, in April 2010.
In November 2010, a staff person from my client's organization contacts the user and reminds them to send their membership dues for 2011.
If user never responds, their membership expires Dec 31, 2010.
If user sends a payment, their membership is renewed and expires Dec 31, 2011.
If a user signs up for a membership late in the year, say, November 2010, then their membership will be considered as paid for the following year, and expires on Dec 31, 2011.
I imagine the membership edit plan admin form being modified to display as follows:
-> Period Settings
-> Expiration Settings
( ) Relative expiration date: (default Membership Suite behavior, whatever it should be named)
Membership Length (select list): [Never Expire, 1, 2, ...]
Unit (select list): [Days, ..., Years]
( ) Fixed expiration date: (again, whatever makes sense to name this)
Date Spec (select list): [First of, End of, Day N of]
Unit (select list): [Day, Month, Year]
So in my case, I'd select Fixed expiration date, then select 'End of', then select 'Year'. This would be relative to the membership sign up date. When the user signs up, say, in June 2010, their membership end date gets set, relatively, and according to this membership's plan settings, to Dec 31, 2010 (end of year, referencing sign-up date of June 2010).
Of course, if the user registers in November of 2010, the staff will still get the "user ____ has purchased new membership" email, and it would be nice if the staff could go in and change that particular user's expiration date manually. The next time the user pays for the membership, the membership gets the current year that the user signs up, and the expiration date gets set to the end of that year.
Thoughts?








Bkbetts,
I've given this scenario some thought in the past as well, and I think that if the 'fixed expiration date' functionality is to work, we will also need to provide support for pro-rated costs of membership, so if they user purchases half-way through a cycle, they will only have to pay half the price.
In order to calculate the pro-rated amount, there will need to be a 'fixed start date' as well so that it can calculate the prorated amount as (end - current)/(end - start). There are a lot of things to consider when trying to implement functionality like this...
Sincerely,
Leighton Whiting