forum.bitel.ru
http://forum.bitel.ru/

Проблема с подсчетом текущего баланса
http://forum.bitel.ru/viewtopic.php?f=22&t=4590
Страница 1 из 1

Автор:  __Андрей__ [ 27 сен 2010, 17:29 ]
Заголовок сообщения:  Проблема с подсчетом текущего баланса

Версия 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().

К сожалению, данная проблема наблюдается только на части договоров. Проследить закономерность пока не удается.
Начисление аб. платы и эта функция разнесены по таймеру.

Автор:  Администратор [ 28 сен 2010, 10:21 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Ну вы можете распечатать состояние таблицы contract_balance для договора на этот же момент. Данные берутся оттуда.

Автор:  Cromeshnic [ 28 сен 2010, 11:04 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Может параллельно какой-нибудь процесс начисления работает?

Автор:  __Андрей__ [ 28 сен 2010, 14:14 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Cromeshnic писал(а):
Может параллельно какой-нибудь процесс начисления работает?

Не работает. Есть одно начисление, разнесено специально по времени.

Автор:  __Андрей__ [ 28 сен 2010, 14:23 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Администратор писал(а):
Ну вы можете распечатать состояние таблицы contract_balance для договора на этот же момент. Данные берутся оттуда.

Должно быть примерно так? Новичок в java, прошу простить.

Код:
query = "select summa1+summa2-summa3 as curb from contract_balance where yy=YEAR(now()) and mm=MONTH(now()) and cid=" + event.getContractID();
rs = con.createStatement().executeQuery( query );
if( rs.next() )
{
   balans = rs.srs.getFloat("curb");
}

Автор:  Администратор [ 28 сен 2010, 15:23 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Ну да, примерно. Только типы лучше переменных объявляйте.

Автор:  dimOn [ 28 сен 2010, 16:15 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

Администратор писал(а):
Ну да, примерно. Только типы лучше переменных объявляйте.

Видимо, не объявляют оттого, что у нас в документации явно сказано "не следует указывать типы переменных" (sic!). пруф

Автор:  stark [ 05 окт 2010, 20:08 ]
Заголовок сообщения:  Re: Проблема с подсчетом текущего баланса

документация поправлена. Но это для 5.1 . Для 4.6 не настолько актуально , но лучше все равно указывать типы переменных

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/