Что происходит первого числа...
Параметр кредит мы опустим в подсчетах, пусть он равен 0
Система смотрит баланс абонента больше 0, система снимает абонку, баланс абонента становиться -55 грн. (5-60=-55)
далее система переходит к снятию периодического платежа, идет проверка и так как баланс абонента меньше 0 снятие не происходит (в системе нашей настроено не снимать абонки в постоянные минуса)
Код: Выделить всё
Payment type: Тип снятия платежа
>>>Prepaid - Предоплата. Снимается при положительно балансе (Депозит + Кредит)<<<
Postpaid - Снимется вне зависимости от баланса
Допустим через день абонент пополняет свой счет на 60 грн., баланс вновь становиться положительным, и продолжает пользоваться обоими услугами которые подключены к его учетке, то есть по сути мы потеряли 30 грн. так как они не были сняты с счета пользователя.
Смена очередности снятий не прокатит, так как проверка одна и таже для снятий средств(только в данном случае снимит сперва 30, а 60 потеряются).
Как решить сие проблему без Postpaid - Снимется вне зависимости от баланса
Мое решение проблемы это сначала система должна сформировать список снятий для всех абонентов и всех ихних месячных или других снятий (ибо я уверен что если сделать 2 дневных снятия будет таже беда), с проверками баланса до снятия, а уже потом проводить снятия денег, с этого списка без учета баланса.
Пример:
Пользователь 1 баланс 5 грн > 0
добавляем в список снятие абонки
добавляем в список снятие переодического платежа
Пользователь 2 баланс -10 грн < 0
Пользователь 3 баланс 44 грн > 0
добавляем в список снятие абонки
.....
Выполняем список снятий из списка.