forum.bitel.ru http://forum.bitel.ru/ |
|
BGBS: добавление item (номера) http://forum.bitel.ru/viewtopic.php?f=10&t=5408 |
Страница 1 из 1 |
Автор: | logicall [ 25 апр 2011, 13:02 ] |
Заголовок сообщения: | BGBS: добавление item (номера) |
Добрый день. Подскажите, как через 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 ) Подскажите, что я не так делаю? |
Автор: | stark [ 25 апр 2011, 17:02 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
logicall писал(а): Подскажите, что я не так делаю? вместо number в этот метод нужно подавать List<String> .. Создайте лист и добавьте туда number |
Автор: | logicall [ 25 апр 2011, 17:13 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
stark писал(а): logicall писал(а): Подскажите, что я не так делаю? вместо number в этот метод нужно подавать List<String> .. Создайте лист и добавьте туда number А можно поподробней? А то я в яве не силён.... |
Автор: | logicall [ 26 апр 2011, 08:21 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Люди! Ну подскажите пожалуйста, как добавить номер телефона в модуль phone в договоре через api. |
Автор: | logicall [ 26 апр 2011, 08:29 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Попробовал сделать так Код: 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); Но номер всёравно в договоре не появился.... Но и ошибок нету |
Автор: | logicall [ 26 апр 2011, 09:05 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Ура. Заработало! Может кому пригодится За основу взял скрипт из 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 этот абонент записан разными строчками, то будет создано несколько договоров для этого абонента. |
Автор: | logicall [ 26 апр 2011, 09:31 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Обнаружил минус скрипта - почему-то нет синхронизации с ресурсами номеров... Только если синхронизировать ручками в ресурсах. Если кто знает, подскажите как побороть |
Автор: | Администратор [ 24 май 2011, 17:40 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Выдержка из акшена обновления, попробуйте так. Код: 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 ); ....... |
Автор: | logicall [ 25 май 2011, 06:20 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
Спасибо! Попробую |
Автор: | Phricker [ 07 авг 2012, 22:03 ] |
Заголовок сообщения: | Re: BGBS: добавление item (номера) |
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; } } } То будет создаваться один договор и в нем будут создаваться поинты, до тех пор пока не создатся новый договор. Файл должен быть отсортирован по номерам договоров. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |