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

"Управление статусом" договора в статистике и открытие шлюза
http://forum.bitel.ru/viewtopic.php?f=7&t=5756
Страница 1 из 1

Автор:  maxbond [ 02 авг 2011, 17:00 ]
Заголовок сообщения:  "Управление статусом" договора в статистике и открытие шлюза

Здравствуйте.

Как можно исправить следующую ситуацию:
Абоненты с помегабайтной оплатой, режим дебет. Если зайти в статистику и приостановить договор с отрицательным балансом, а затем сделать отмену, закрытый шлюз открывается до отработки следующей проверки шлюзов.
Как лучше сделать так, чтобы шлюз открывался только с положительным балансом?

Сервер 5.1 - 620, IPN - 233.

Автор:  Phricker [ 02 авг 2011, 17:24 ]
Заголовок сообщения:  Re: "Управление статусом" договора в статистике и открытие ш

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

Автор:  maxbond [ 04 авг 2011, 16:05 ]
Заголовок сообщения:  Re: "Управление статусом" договора в статистике и открытие ш

Нашел только эту тему: viewtopic.php?f=22&t=4835

Подозреваю, что решением будет повесить обработчик на событие "Изменение статуса договора", но пока не соображу как сделать. Или проверять баланс при наступлении события "Статус договора изменен".

Автор:  maxbond [ 10 авг 2011, 16:43 ]
Заголовок сообщения:  Re: "Управление статусом" договора в статистике и открытие ш

Решение:
Код:
import java.sql.*;
import java.util.*;
 
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.util.*;
import bitel.billing.common.KernelConst;
import bitel.billing.server.ipn.*;
import bitel.billing.server.ipn.bean.*;
import bitel.billing.server.contract.bean.BalanceUtils;

public void onEvent(event, setup, con, conSlave){

mid = *IPN_MID*;
 
cid = event.getContractId();
contract = new ContractManager(con).getContractById(cid);
 
BalanceUtils bal = new BalanceUtils( con );
Date balanceDate = new Date( System.currentTimeMillis() );
balance = bal.getBalance (balanceDate, cid);

limit = contract.getBalanceLimit();

if ( balance.intValue() < limit.intValue() )
{
    ipncsm = new IPNContractStatusManager(con,mid,setup);
    ipncsm.changeStatus(cid,2,0,true);
}

}


Повесить на "Статус договора изменен".

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