Версия 4.6.
В скрипте по событию "Таймер" запускается скрипт для выполнения операций над договорами (например, приостановка в 12 ночи по некоторым признакам).
Логика построена на методе getBalance.
К сожалению, возвращаемое значение ИНОГДА отличается от реального (того, что показывается клиенту или в клиенте самого bgbilling), меньше реального на одну итерацию снятия абонентской платы. Например, у клиента текущий баланс 49,0 р., фрагмент
Код:
cid = event.getContractID();
Calendar cx = Calendar.getInstance(); cx.roll(Calendar.HOUR_OF_DAY, 3);
balanceold5 = bu.getBalance(tu.convertCalendarToDate(cx), cid).floatValue();
print ( "balanceold5 = "+balanceold5 );
выдает "balanceold5 = 22.33", хотя этот баланс должен быть на следующий день.
Аналогично выдает и bu.getBalance(new Date(), cid).floatValue() и bu.getBalance(tu.convertCalendarToDate(event.getGenerateTime()), cid).floatValue().
К сожалению, данная проблема наблюдается только на части договоров. Проследить закономерность пока не удается.
Начисление аб. платы и эта функция разнесены по таймеру.