Код:
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 = Calendar.getInstance();
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);
/*
* 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);
/*
* 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() ;
*/
contract.closeContract(cid);
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Стиль программирования - пьяный мастерстер
Разработка мобильных приложений