forum.bitel.ru http://forum.bitel.ru/ |
|
[BUG в API ??]Попадают договора которые не должны http://forum.bitel.ru/viewtopic.php?f=19&t=6087 |
Страница 1 из 1 |
Автор: | skyb [ 08 ноя 2011, 12:31 ] |
Заголовок сообщения: | [BUG в API ??]Попадают договора которые не должны |
Народ, подскажиет, есть скрипт, работает. Но как то не понятно с датами Код: 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<<19)=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); BalanceUtils balance = new BalanceUtils(con); Contract ct = contract.getContractById(cid); //возращает самый старший месяц, за который есть данные по Балансу Date contract_balance = (Date) balance.getLastBalanceMonth(ct); if( contract_balance == null) { contract_balance = new Date(i); } //==========================close==============================// int mounth = TimeUtils.monthsDelta(contract_balance,dateNow); print ("mounth =>" + mounth); 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() ; ContractParamUtils cpu = new ContractParamUtils( con ); cpu.setGroup( cid, 19 ); i++; } } print("кол-во " +i ); } } Собственно волнует вопрос о Код: int mounth = TimeUtils.monthsDelta(contract_balance,dateNow); Дело в том что если у договора вообще не было движения денежных средств, он всеравно попадает в группу, а не должен. В выводе, в принте стоит на 0 Код: print ("mounth =>" + mounth); раньше работало все нормально, а вот сейчас как то не очень ![]() |
Автор: | skyb [ 09 ноя 2011, 12:50 ] |
Заголовок сообщения: | Re: [BUG в API ??]Попадают договора которые не должны |
Хотяб скажите - я косяпор или что то изменилось? |
Автор: | Cromeshnic [ 09 ноя 2011, 14:46 ] |
Заголовок сообщения: | Re: [BUG в API ??]Попадают договора которые не должны |
Цитата: Хотяб скажите - я косяпор или что то изменилось? Правильный ответ - первый ![]() Цитата: Дело в том что если у договора вообще не было движения денежных средств, он всеравно попадает в группу, а не должен. Так у тебя же русским по белому написано: Код: if( contract_balance == null) { contract_balance = new Date(i); } Правда зачем i - непонятно, явный косяк. Но если тебе не надо, чтобы договоры без движухи вообще (у них contract_balance=(Date) balance.getLastBalanceMonth(ct) и будет null) попадали, просто делай continue; Код: if( contract_balance == null)
{ continue; } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |