Fixed-Term Extensions (Auto-Extend), need improvement

Hello
I found out long ago something that i did not like, today i decided to let you know so you might improve in the next update.
The problem is that if someone buy Lvl 1 package for one month and after 3 days he decide to buy Lvl 4 package which is one year and if the settings is set to Yes (Default) then those remaining 27 days are added automatically to one year Lvl 4 so the person gets additional almost one month of higher Lvl access and it does not matter if i would sell 3 months Lvl 1 he would get those added to one year Lvl 4 which i think is a very bad situation.
The extend must happen only in case if the person buy same Lvl package not different ones.

P.s. sorry for my poor English it’s not my native.

1 Like

Hello Filip.

Thank you very much for your feedback, it’s appreciated. I understand how that would bother you.

That’s called prorating, and s2Member doesn’t do it. It’s up to the site owner to do the prorating in cases like that.

Basically you’d figure out with a bit of PHP how much paid time the person has left, you estimate how much that is in money, and then discount that from the first payment of the higher level. You’d use the trial amount for the first payment, and the regular amount would be what you normally charge.

Google s2Member proration and you’ll find old conversations about it. If you need help after researching it a bit, let me know and I’ll see what I can do. :slight_smile:

Hello
Not sure if you understand what i mean but s2member does what i wrote and this happens from long ago i should have take some screenshots before i edited one members EOT time to remove those 27 of days from that additional year.
First he have buy Lvl 1 access for 1 month and it goes as a subscription monthly then he contacted me later after 3 days by telling that he needs Lvl 4 access, so before he buy higher level i told to cancel the lower level package which he did and he had 27 days left as Lvl 1 access after he did payment for Lvl 4 one year access he received those 27 days extended automatically by s2member function which i explained in my first post so he got one year and 27 days of Lvl 4 access, and i had to edit and remove those 27 days because he did not pay for those.
Also i don’t offer trial on my site.
This problem is related to Auto Extend and s2member does not see the difference in Lvl packages when it does this.
And i not want to use codes, we hope to see some update with our suggestions else people will move to other plugin.
Anyway i have set that function to No (Do NOT Extend, s2member should reset EOT Time completely) and will leave it like that and will notify users about this.
Thanks for try to help.

I understood what you meant.

Proration is a feature that I plan to implement in the future, it’s not in the current release. I have added your request as a vote towards this feature.

I understand you don’t give trials. I wasn’t suggesting that you do. It’s called trial or initial period, trial if free, initial if paid, but it’s basically a period different from the following regular ones. This period can have a different length and price than the regular ones. This flexibility lets you use it to charge a custom amount according to the time/money the customer had left from the previous subscription level. That’s what I meant earlier when I said that you’d use this trial period. Just wanted to clarify that.

Like I said, it can be done with a bit of code if you really want this to work for you now, instead of waiting for a possible feature in the future. It’d be something like this:

// Proration for level 1 subscription upgrade to level 2 subscription.
if (current_user_is('s2member_level1') {
	$level1_price     = 50;  // Your level 1 price.
	$level1_days      = 365; // Your level 1 term in days.
	$level1_day_price = $level1_price / $level1_days;
	$level2_price     = 80;  // Your level 2 price.
	$user_eot_npt     = s2member_eot(); // https://s2member.com/kb-article/s2eot-shortcode-documentation/#toc-e00e3e46
	$user_days_left   = ceil(($user_eot_npt['time'] - time()) / DAY_IN_SECONDS);
	$user_credit      = ceil($user_days_left * level1_day_price);
	$level2_1st_pay   = $level2_price - $user_credit;

	// Now configure your Shortcode with trial term same as regular term, but trial amount with what you calculated above.
	// The Shortcode here has been abbreviated for clarity in this regard.
	echo do_shortcode('[s2Member-Pro-PayPal-Form ... ta="'.$level2_1st_pay.'" ... /]');
}

I hope that helps. :slight_smile:

Yes it help, thank you!
I look forward to that feature selectable bulk protection of posts, hope to see it in new update.

1 Like

Now there is a plugin to handle pro-rates.