Установка даты истечения для подписок с периодом N месяцев

Продление подписок с периодом N месяцeв имеет особенности из-за разного количества дней в месяцах.

Рассмотрим пример заказа и продления подписки с периодом подписки один месяц:

  1. 31.12.2016 создается новая подписка. Так как период действия подписки один месяц дата истечения подписки устанавливается как 31.01.2017. Подписка доступна для использования с 31.12.2016 по 31.01.2017 включительно. Фактический период действия подписки 31 день.
  2. При автоматическом или ручном продлении подписки происходит установка новой даты истечения подписки, исходя из предыдущей даты истечения подписки 31.01.2017. Так как в феврале отсутствует 31-ое число, происходит поиск числа в феврале, которое является ближайшим существующим к 31-ому числу. В данном случае 28-ое февраля. Период действия подписки устанавливается с 01.02.2017 по 28.02.2017 включительно. Фактический период действия подписки 28 дней.
  3. При следующем автоматическом или ручном продлении подписки происходит установка новой даты истечения подписки. Так как предыдущая дата истечения подписки 28.02.2017, следующая дата истечения подписки устанавливается как 28.03.2017. Период действия подписки с 01.03.2017 по 28.03.2017 включительно. Фактический период действия подписки 28 дней.