есть скрипт который через определенное время закрывает абонентов, выставляя ему дату закрытия, но после этого не закрывается не абонка не ТП. А когда делается руками - то все закрывается, что выполняет биллинг и что мне и где вызвать в скрипте чтоб закрывалось в скрипте все???
Код:
package ru.skyb.scripts.global;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import java.sql.*;
import java.util.*;
import java.util.Date;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;
public class archive
extends GlobalScriptBase
{
@Override
public void execute( Setup setup1, ConnectionSet connectionSet2 )
throws Exception
{
Connection con = connectionSet2.getConnection();
Calendar calendar = new GregorianCalendar();
GregorianCalendar nowDate = (GregorianCalendar) calendar.clone();//клонируем дату для дальнейшей работы
nowDate.get(Calendar.DATE);
GregorianCalendar sqlDate = (GregorianCalendar) calendar.clone();
Date dateSql = TimeUtils.convertCalendarToSqlDate(sqlDate);
Date dateNow = TimeUtils.convertCalendarToDate(nowDate);//переводим дату в тип Date с типа Calendar
String query = "select id from contract where gr&(1<<3)>0";
PreparedStatement contractPs = con.prepareStatement( query );
ResultSet contractRs = contractPs.executeQuery();
int cid;
int i = 0;
while ( contractRs.next() )
{
cid = contractRs.getInt( 1 );
ContractManager contract = new ContractManager(con);
Contract ct = contract.getContractById(cid);
/*==========================close==============================
getLastBalanceMonth
public java.util.Date getLastBalanceMonth(Contract contract)
возращает самый старший месяц, за который есть данные по Балансу*/
BalanceUtils balance = new BalanceUtils(con);
Date contract_balance = (Date) balance.getLastBalanceMonth(ct);
if( contract_balance == null)
{
continue;
}
//==========================close==============================//
int mounth = TimeUtils.monthsDelta(contract_balance,dateNow);
if (mounth > 6 )
{
print ("Контракт с сидом " + cid);
/* print ("Дата которая попала в жопу " + contract_balance);
String update_query = "update contract set gr=0 where id = "+ cid;
PreparedStatement ps = con.prepareStatement( update_query );
ps.executeUpdate() ; */
String close_query = "update contract set date2 = '" + dateSql + "' where id = "+ cid;
PreparedStatement rs = con.prepareStatement( close_query );
rs.executeUpdate() ;
ContractParameterManager cpu = new ContractParameterManager( con );
cpu.setGroup( cid, 19 );
cpu.unsetGroup( cid, 3 );
cpu.unsetGroup( cid, 0 );
i++;
}
}
print("кол-во " +i );
}
}
_________________
Код:
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegramСтиль программирования - пьяный мастерстер
Разработка мобильных приложений