forum.bitel.ru http://forum.bitel.ru/ |
|
скрипт закрытия абонентов http://forum.bitel.ru/viewtopic.php?f=19&t=7322 |
Страница 1 из 1 |
Автор: | skyb [ 19 окт 2012, 11:30 ] |
Заголовок сообщения: | скрипт закрытия абонентов |
есть скрипт который через определенное время закрывает абонентов, выставляя ему дату закрытия, но после этого не закрывается не абонка не ТП. А когда делается руками - то все закрывается, что выполняет биллинг и что мне и где вызвать в скрипте чтоб закрывалось в скрипте все??? Код: 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 ); } } |
Автор: | Phricker [ 19 окт 2012, 11:50 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
closeContract братииииииииш © Павлик |
Автор: | dimOn [ 19 окт 2012, 11:52 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
никаких отличий не должно быть. разве что если что-то падает |
Автор: | Phricker [ 19 окт 2012, 11:56 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
dimOn писал(а): никаких отличий не должно быть. разве что если что-то падает Да ничего у него не падает (по крайней мере в этом скрипте ![]() ![]() Пускай closeContract использует и будет ему счастье. Заодно новым скриптом поделится ![]() |
Автор: | dimOn [ 19 окт 2012, 11:59 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
ну а как тогда пишет что закрывается? |
Автор: | skyb [ 19 окт 2012, 12:01 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
dimOn писал(а): ну а как тогда пишет что закрывается? Код: String close_query = "update contract set date2 = '" + dateSql + "' where id = "+ cid;
|
Автор: | dimOn [ 19 окт 2012, 12:03 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
ну так это тоже не закроет сущностей то. Цитата: А когда делается руками - то все закрывается, это вот что значит?
|
Автор: | Phricker [ 19 окт 2012, 12:12 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
Я почему то думал что skn ночью не спал и будет с утра тормозить ))) Так у вас там походу групповой поход по пиффку был, и только skn'а прибило и он на форум вылез ![]() Этот скрипт через базу выставляет дату закрытия договора, что естественно не вызывает закрытия сущностей. Однако Скуб заметил, что если через клиент биллинга РУКАМИ установить дату закрытия договора - все его сущности закрываются. Поэтому он спрашивает в чем же дело ) Срочно кофе, Димон ))) Большую чашку ![]() |
Автор: | skyb [ 19 окт 2012, 12:13 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
Phricker писал(а): Я почему то думал что skn ночью не спал и будет с утра тормозить ))) Так у вас там походу групповой поход по пиффку был, и только skn'а прибило и он на форум вылез ![]() Этот скрипт через базу выставляет дату закрытия договора, что естественно не вызывает закрытия сущностей. Однако Скуб заметил, что если через клиент биллинга РУКАМИ установить дату закрытия договора - все его сущности закрываются. Поэтому он спрашивает в чем же дело ) Срочно кофе, Димон ))) Большую чашку ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Автор: | dimOn [ 19 окт 2012, 12:13 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
Объяснять надо ладом ![]() |
Автор: | skyb [ 19 окт 2012, 12:24 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
dimOn писал(а): Объяснять надо ладом ![]() Дык вон, фрикер то сразу понял!!! |
Автор: | skyb [ 19 окт 2012, 12:36 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
блин, а у меня он ещё выпелен, тока в среду появиццо, т.к. обновлятся буду |
Автор: | skyb [ 19 окт 2012, 12:42 ] |
Заголовок сообщения: | Re: скрипт закрытия абонентов |
на обновленном тестовом работает Код: 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 test 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); /* * 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); } } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |