BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 апр 2024, 07:15

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: BGBS: добавление item (номера)
СообщениеДобавлено: 25 апр 2011, 13:02 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Добрый день.

Подскажите, как через BGBS добавить номер для абонента.

у меня сейчас написано вот что:

Код:
import bitel.billing.server.util.*;
import com.Ostermiller.util.*;
import java.util.*;
import bitel.billing.common.*;
import java.io.*;
import java.sql.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.contract.*;
import ru.bitel.bgbilling.server.util.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.phone.bean.*;
~~~~~~~~~~~~~~~
ClientItemManager cim = new ClientItemManager ( con, PHONE_MID );
~~~~~~~~~~~~~~~
//добавление номеров
ClientItem item = new ClientItem();
item.setContractId( contract.getID() );
item.setClientNumbers( number );
item.setDate1( TimeUtils.convertDateToCalendar( createDate ) );
item.setSourceId(3);
cim.updateClientItem (item);         


Но такая конструкция не работает

в логе вот что
Код:
EXCEPTIONS:
Error in method invocation: Method setClientNumbers( java.lang.String ) not found in class'bitel.billing.server.phone.bean.ClientItem'
Error in method invocation: Method setClientNumbers( java.lang.String ) not found in class'bitel.billing.server.phone.bean.ClientItem' : at Line: 129 : in file: импорт абонентов phone : item .setClientNumbers ( number )

Подскажите, что я не так делаю?

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 25 апр 2011, 17:02 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
logicall писал(а):
Подскажите, что я не так делаю?


вместо number в этот метод нужно подавать List<String> .. Создайте лист и добавьте туда number


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 25 апр 2011, 17:13 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
stark писал(а):
logicall писал(а):
Подскажите, что я не так делаю?


вместо number в этот метод нужно подавать List<String> .. Создайте лист и добавьте туда number

А можно поподробней? А то я в яве не силён....

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 26 апр 2011, 08:21 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Люди! Ну подскажите пожалуйста, как добавить номер телефона в модуль phone в договоре через api.

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 26 апр 2011, 08:29 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Попробовал сделать так

Код:
         number_list = new java.util.ArrayList();
         number_list.add(number);

         ClientItem item = new ClientItem();
         item.setContractId( 2912 );
         item.setClientNumbers( number_list );
         item.setDate1( TimeUtils.convertDateToCalendar( createDate ) );
         item.setSourceId(3);
         cim.addClientItem (item);         


Но номер всёравно в договоре не появился....

Но и ошибок нету

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 26 апр 2011, 09:05 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Ура. Заработало!

Может кому пригодится

За основу взял скрипт из Wiki http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8%D0%B7_csv-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B1%D0%B0%D0%B7%D1%83_BGBilling

Мне некоторые поля в csv не нужны, но я их из скрипта не удалял. А просто изменил из значение под себя

Получился вот такой скрипт. Он берёт данные из csv файла и на основе их создёт договора по шаблону, уже созданному в биллинге.
Вот содержание csv

Код:
"Название",contract_title,01.04.11,73953XXXXXX,123,1

Здесь
"Название" - название организации или ФИО абонента
contract_title - номер договора
01.04.11 - дата создания договора и подключения номера
123 - пароль договора
1- осталось от исходного скрипта - тариф (у меня не используется, всё берётся из шаблона)

Вот сам скрипт
Код:
import bitel.billing.server.util.*;
import com.Ostermiller.util.*;
import java.util.*;
import bitel.billing.common.*;
import java.io.*;
import java.sql.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.contract.*;
import ru.bitel.bgbilling.server.util.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.phone.bean.*;

 
public void main( setup, con, conSlave )
{
   String   FILE = "/home/logic/BGBilling/import.csv";
   int PATTERN_ID = 37;
   int LOADED_GROUP = 1;
   int NPAY_MID = 3;
   int PHONE_MID = 15;
 
   ContractManager cm = new ContractManager( con );
   ContractTariffManager ctm = new ContractTariffManager( con );
   ContractRemover cr = new ContractRemover( Setup.getSetup(), con, null );
   ServiceObjectManager som = new ServiceObjectManager( con, NPAY_MID );
   ClientItemManager cim = new ClientItemManager ( con, PHONE_MID );
 
 
   int rowNum = 0;
 
   String[][] data = ExcelCSVParser.parse( new InputStreamReader( new FileInputStream( FILE ), "UTF-8" ) , ',' );
   if( data != null && data.length > 0 )
   {
      final int rowCount = data.length;
      for( rowNum = 0; rowNum < rowCount; rowNum++ )
                {
         String[] fields = data[rowNum];
         if( fields.length < 6 )
         {
            error( "Incorrect line " + rowNum );
            continue;
         }
 
         /*
         if( rowNum > 1 )
         {
            print( "Break" );
            break;
         }
         */
 
         String fio = fields[0];
         String contractTitle = fields[1];
         java.util.Date createDate = TimeUtils.parseDate( fields[2], "dd.MM.yy" );
         String number = fields[3];
         String pswd = fields[4];
         String tariffName = fields[5].toLowerCase();
 
         print( "FIO: " + fio + "; contract: " + contractTitle + "; number: " + number );         

         // создание договора
         Contract contract = cm.createFromPattern( PATTERN_ID, contractTitle, TimeUtils.convertDateToCalendar( createDate ), pswd );
         contract.setComment( number );
         cm.updateContract( contract );

         
      //добавление номеров
         number_list = new java.util.ArrayList();
         number_list.add(number);

         print( "number: " + number_list );         

         ClientItem item = new ClientItem();
         item.setContractId( contract.getID() );
         item.setClientNumbers( number_list );
         item.setType(1)   ;   
         item.setDate1( TimeUtils.convertDateToCalendar( createDate ) );
         item.setSourceId(3);
         cim.addClientItem (item);         
   
      }
   }         
}


Может кому пригодится

P.S.
Есть один минус в данном скрипте - если у абонента несколько номеров и в csv этот абонент записан разными строчками, то будет создано несколько договоров для этого абонента.

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 26 апр 2011, 09:31 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Обнаружил минус скрипта - почему-то нет синхронизации с ресурсами номеров... Только если синхронизировать ручками в ресурсах.
Если кто знает, подскажите как побороть

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 24 май 2011, 17:40 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Выдержка из акшена обновления, попробуйте так.

Код:
int id = getIntParameter( "id", 0 );
        int type = getIntParameter( "type", -1 );

        if( mid <= 0 || cid <= 0 || type <= 0 )
        {
            throw new BGIllegalArgumentException();
        }
.........       
        ClientItemManager man = new ClientItemManager( con, mid );
        Date date1 = getDateParameter( "date1" );
        Date date2 = getDateParameter( "date2" );
       
       
        ClientItem item = new ClientItem();

        item.setId( id );
        item.setObjectId( getIntParameter( "object_id", 0 ) );
        item.setContractId( cid );
        item.setSourceId( getIntParameter( "sourceId", 0 ) );
        item.setDate1( TimeUtils.convertDateToCalendar( date1 ) );
        item.setDate2( TimeUtils.convertDateToCalendar( date2 ) );
        item.setType( type );
        item.setComment( getParameter( "comment", "" ) );
        item.setAlias( getParameter( "alias", "" ) );

        if( type == ClientItem.TYPE_POINT )
        {
            item.setClientNumbers( Utils.toList( getParameter( "clientNumbers" ) ) );
            item.setClientPorts( Utils.toList( getParameter( "clientPorts" ) ) );
        }
       
       
         //  набор затронутых номеров для обновления информации в базе ресурсов
        man.realUpdate( userID, item, man );
.......       


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 25 май 2011, 06:20 
Не в сети
Клиент

Зарегистрирован: 25 авг 2008, 11:25
Сообщения: 233
Откуда: Братск
Карма: 12
Спасибо! Попробую

_________________
Век живи - век учись!
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BGBS: добавление item (номера)
СообщениеДобавлено: 07 авг 2012, 22:03 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
logicall писал(а):
P.S.
Есть один минус в данном скрипте - если у абонента несколько номеров и в csv этот абонент записан разными строчками, то будет создано несколько договоров для этого абонента.


Если чуть чуть дополнить
Код:
public void main( setup, con, conSlave )
{
...
}

private void loadFile( file, setup, con, PATTERN_ID )
{   
   String lastContract = "";
   int cid = 0;
 
   String[][] data = ExcelCSVParser.parse( new InputStreamReader( new FileInputStream( file ), "windows-1251" ) , ';' );
   if( data != null && data.length > 0 )
   {
      final int rowCount = data.length;
      for( rowNum = 0; rowNum < rowCount; rowNum++ )
        {
         String contractTitle = fields[0]
          
         if(!lastContract.equals(contractTitle)){
         // создание договора и всех его параметров и бла бла бла
         Contract contract = cm.createFromPattern( PATTERN_ID, contractTitle, TimeUtils.convertDateToCalendar( createDate ), contractTitle );
         ...

         cid = contract.getId();
         }
         
         //добавление телефонов и бла бла бла
         ClientItemManager cim = new ClientItemManager(con, PHONE_MID) ;
         ...
         
         
         lastContract = contractTitle;
      }
   }      
}


То будет создаваться один договор и в нем будут создаваться поинты, до тех пор пока не создатся новый договор.
Файл должен быть отсортирован по номерам договоров.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


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

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


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

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


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

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