dimOn писал(а):
даже если вы напишете супер-скрипт, который это делает, то в любом случае как вы потом собираетесь это всё задним числом пересчитывать? если никакой информации о том куда в какой день что считать - у вас в принципе нету, кроме мысленной концепции "activeFromDate=сегодня".
В прошлом периоде и будет считать по статусам как они есть, а в будущем с текущего дня по логике activeFromDate.
Повторюсь, необходимо насчитывать абоплату пропорционально периоду по предоплате. Те нужно чтобы долг за текущий месяц у него уменьшался с каждым днем если статус не активен. Например у него с начала месяца (01 число) статус "Не активен"(абонентка не должна насчитываться) но мы ему начисляем ее за текущий месяц с условием activeFromDate=01число, чтобы она насчиталась с 01 числа по конец месяца. Затем второго числа повторяем операцию но уже activeFromDate=02число, тем самым 1 числа статус учитывается как закрытый, а с 02 и до конца месяца условно активный, сумма наработки становится меньше без учета 01 числа и тд. Абонент в середине месяца решил оплатить, у него минус за пол месяца, он оплачивает, у него активируется статус и все гуд, и в логику статусов все укладывается. Далее на него уже не применяется эта логика начисления до тех пор пока он снова станет "Не активен".
То что я описал выше правильно калькулируется в ru.bitel.bgbilling.modules.npay.server.Calculator но там в задачу начисления это не улетает.
В общем с перерасчетом задним числом проблем нет.