Сейчас при поступлении средств срок действия членского взноса рассчитывается, исходя из текущего тарифа участника, с точностью до дня, и сохраняется в базе. При этом:
- если участник захотел сменить тариф, то он вступит в действие только после окончания срока текущего взноса (а при оплате наперёд это может быть неудобно)
- если оплатил "дробное" число дней, то деньги теряются за счёт округления
Предложение:
Учитывать на балансе деньги вместо дней.
Это позволит и решить вышеописанные проблемы, и сделать возможным выход пользователя из саспенда при некоем пороге суммы на счету (например, две недели), даже если она вносилась частями.
Сложности:
- необходимо обеспечить надёжное ежедневное списание средств со счёта участника, даже если произошли технические неполадки на сервере и в какой-то момент "крон не отработал".
- как отображать статистику "с какой по какую дату было уплачено в прошлом"?