Ура. Заработало!
Может кому пригодится
За основу взял скрипт из 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 этот абонент записан разными строчками, то будет создано несколько договоров для этого абонента.