BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 02 май 2024, 17:24

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Унивесальные карты
СообщениеДобавлено: 16 янв 2008, 15:52 
Не в сети

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

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

_________________
Чтобы понять рекурсию, нужно сначала понять рекурсию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2008, 17:01 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
По одной карте можно завести договор только с одним модулем?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 апр 2008, 13:08 
Не в сети

Зарегистрирован: 30 мар 2007, 15:56
Сообщения: 60
Карма: 0
Подскажите, пожалуйста, в какое место воткнуть скрипт и как указать шаблон договора?

_________________
Чтобы понять рекурсию, нужно сначала понять рекурсию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 апр 2008, 13:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Шаблон договора указывается при создании карты.
В шаблоне необходимо указать скрипт(точнее набор скриптов).
В этом наборе (уже в Автоматизация-Скрипты поведения), добавить скрипт с событием на создание договора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 апр 2008, 12:37 
Не в сети

Зарегистрирован: 30 мар 2007, 15:56
Сообщения: 60
Карма: 0
Спасибо.
Подскажите ещё, пожалуйста, каким классом и функциями пользоваться, чтобы добавить логин для Dialup.

_________________
Чтобы понять рекурсию, нужно сначала понять рекурсию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 апр 2008, 16:09 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Примерно так:
Код:
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 по протоколу максимум минут, в течение которых может длится звонок, отправляются в начале разговора. Т.е. во время разговора есть возможность потратить остаток по другой услуге, при этом звонок не прервется при достижении лимита.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 апр 2008, 17:29 
Не в сети

Зарегистрирован: 30 мар 2007, 15:56
Сообщения: 60
Карма: 0
ЗдОрово!
только
Код:
Eval error: Sourced file: inline evaluation of: ``import java.sql.Connection; import java.sql.PreparedStatement; import ja
va.sql.R . . . '' : Undefined argument: cid

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

_________________
Чтобы понять рекурсию, нужно сначала понять рекурсию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 апр 2008, 17:50 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
int cid = event.getContractID();
или
int cid = event.getContract().getID();

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 апр 2008, 15:17 
Не в сети

Зарегистрирован: 30 мар 2007, 15:56
Сообщения: 60
Карма: 0
Спасибо, в рабочем варианте (может кому пригодится) получилось так:
Код:
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 );
    }
}

_________________
Чтобы понять рекурсию, нужно сначала понять рекурсию.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.053s | 36 Queries | GZIP : On ]