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

Унивесальные карты
http://forum.bitel.ru/viewtopic.php?f=8&t=677
Страница 1 из 1

Автор:  Igor [ 16 янв 2008, 15:52 ]
Заголовок сообщения:  Унивесальные карты

Хочу создать универсальную карту.
Чтобы при активации подключались услуги из двух модулей, VoIP и dialup. В документации по модулю "карточки" есть такие строчки:
Код:
#код модуля
activate.login.service.1.mid=3
#список возможных тарифов, коды, через запятую
activate.login.service.1.tariffs=1

Прокомментируйте пожалуйста. Я правильно понял? По одной карте можно завести договор только с одним модулем? Группу тарифов тоже нельзя установить?

Автор:  Amir [ 16 янв 2008, 17:01 ]
Заголовок сообщения: 

Цитата:
По одной карте можно завести договор только с одним модулем?

Да, однако возможно создание логина в другом модуле через скрипты.
Группу тарифов можно указать в шаблоне договора.

Автор:  Igor [ 05 апр 2008, 13:08 ]
Заголовок сообщения: 

Подскажите, пожалуйста, в какое место воткнуть скрипт и как указать шаблон договора?

Автор:  Amir [ 05 апр 2008, 13:35 ]
Заголовок сообщения: 

Шаблон договора указывается при создании карты.
В шаблоне необходимо указать скрипт(точнее набор скриптов).
В этом наборе (уже в Автоматизация-Скрипты поведения), добавить скрипт с событием на создание договора.

Автор:  Igor [ 07 апр 2008, 12:37 ]
Заголовок сообщения: 

Спасибо.
Подскажите ещё, пожалуйста, каким классом и функциями пользоваться, чтобы добавить логин для Dialup.

Автор:  Amir [ 07 апр 2008, 16:09 ]
Заголовок сообщения: 

Примерно так:
Код:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import bitel.billing.server.call.bean.CardCallUtils;
import bitel.billing.server.call.bean.LoginUtils;
import bitel.billing.server.card.bean.Card;
import bitel.billing.server.card.bean.CardManager;


int voiceipMid = 1;
int dialupMid = 2;
// кол-во одновременных сессий
int sessionCol = 1;

PreparedStatement ps = con.prepareStatement( "SELECT id FROM card_data_5 WHERE cid=? AND status=?" );
ps.setInt( 1, cid );
ps.setInt( 2, Card.CARD_ACTIVATE_CONTRACT );

ResultSet rs = ps.executeQuery();
if( rs.next() )
{
    int cardId = rs.getInt( 1 );

    CardManager cm = new CardManager( setup, mid );
    List<Card> cards = cm.getCards( String.valueOf( cardId ) );
    Card card = cards.get( 0 );

    // если нет dialup логина
    LoginUtils lu = LoginUtils.getLoginUtils( "dialup", con, dialupMid, setup );
    if( lu.getContractLogins( cid ).size() == 0 )
    {
        int loginId = new CardCallUtils( con, dialupMid ).createLogin( cid, card, sessionCol );
    }

    // если нет voiceip логина
    lu = LoginUtils.getLoginUtils( "voiceip", con, voiceipMid, setup );
    if( lu.getContractLogins( cid ).size() == 0 )
    {
        int loginId = new CardCallUtils( con, voiceipMid ).createLogin( cid, card, sessionCol );
    }
}

Однако следует учитывать, что при звонке voip по протоколу максимум минут, в течение которых может длится звонок, отправляются в начале разговора. Т.е. во время разговора есть возможность потратить остаток по другой услуге, при этом звонок не прервется при достижении лимита.

Автор:  Igor [ 07 апр 2008, 17:29 ]
Заголовок сообщения: 

ЗдОрово!
только
Код:
Eval error: Sourced file: inline evaluation of: ``import java.sql.Connection; import java.sql.PreparedStatement; import ja
va.sql.R . . . '' : Undefined argument: cid

cid уже должен быть определён? Я ставлю скрипт на событие "Договор создан"

Автор:  Amir [ 07 апр 2008, 17:50 ]
Заголовок сообщения: 

int cid = event.getContractID();
или
int cid = event.getContract().getID();

и в CardManager cm = new CardManager( setup, mid ); - mid код модуля карточек.

Автор:  Igor [ 08 апр 2008, 15:17 ]
Заголовок сообщения: 

Спасибо, в рабочем варианте (может кому пригодится) получилось так:
Код:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import bitel.billing.server.call.bean.CardCallUtils;
import bitel.billing.server.call.bean.LoginUtils;
import bitel.billing.server.card.bean.Card;
import bitel.billing.server.card.bean.CardManager;


int voiceipMid = 3;
int dialupMid = 1;
int cardMid = 11;

String cardTable = "card_data_" + String.valueOf( cardMid );
int cid = event.getContractID();

// кол-во одновременных сессий
int sessionCol = 1;

PreparedStatement ps = con.prepareStatement( "SELECT id FROM " + cardTable + " WHERE cid=? AND status=?" );
ps.setInt( 1, cid );
ps.setInt( 2, Card.CARD_ACTIVATE_CONTRACT );

ResultSet rs = ps.executeQuery();
if( rs.next() )
{
    int cardId = rs.getInt( 1 );

    CardManager cm = new CardManager( setup, cardMid );
    //List<Card> cards = cm.getCards( String.valueOf( cardId ) );
   List cards = cm.getCards( String.valueOf( cardId ) );
    Card card = (Card)cards.get( 0 );

    // если нет dialup логина
    LoginUtils lu = LoginUtils.getLoginUtils( "dialup", con, dialupMid, setup );
    if( lu.getContractLogins( cid ).size() == 0 )
    {
        int loginId = new CardCallUtils( con, dialupMid ).createLogin( cid, card, sessionCol );
    }

    // если нет voiceip логина
    lu = LoginUtils.getLoginUtils( "voiceip", con, voiceipMid, setup );
    if( lu.getContractLogins( cid ).size() == 0 )
    {
        int loginId = new CardCallUtils( con, voiceipMid ).createLogin( cid, card, sessionCol );
    }
}

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