Скрипт создания субдоговоров по шаблону
Материал из BiTel WiKi
Версия от 10:42, 24 февраля 2011; Airat (Обсуждение | вклад)
Скрипт, используя фильтр по группам, добавляет каждому супердоговору субдоговор, используя 2 разных шаблона для юридических и физических лиц. При этом с супердоговора копируется комментарий имени и дата начала периода договора, а в номере изменяется префикс.
import bitel.billing.server.util.*; import bitel.billing.server.contract.bean.Contract; import bitel.billing.server.contract.bean.ContractManager; import bitel.billing.common.KernelConst; import java.util.*; import java.sql.PreparedStatement; import bitel.billing.common.TimeUtils; public void main( setup, con, conSlave ) { /* Скрипт добавления субдоговоров. Для всех супердоговоров создает субдоговор по шаблону, комментарий имени, дату начала периода копирует из супердоговора, в номере договора заменятеся префикс. Перед запуском скрипта: 1) установить режим group_mode: false - будут обрабатываться договора, коды которых через запятую вписаны в переменную cid; true - будут обрабатываться договора, коды групп которых через запятую вписаны в переменную groupsId. 2) Заполнить коды групп или коды договоров в переменных cid и groupsId. 3) Вписать код шаблона договора в переменную patternId. 4) Вписать префиксы супер- и суб- договора в переменные superPrefix и subPrefix соответственно. 5) Запустить скрипт. */ //boolean group_mode = false; boolean group_mode = true; String cid = "353091"; //Здесь коды обрабатываемых групп через запятую String groupsId = "0,1"; //Код шаблона договора для юридических лиц int jurPatternId = 28; //Код шаблона договора для физических лиц int phizPatternId = 30; //Префикс супердоговора String superPrefix = "1#"; //Префикс субдоговора String subPrefix = "78#"; //----------------------- long group = 0L; int patternId = -1; print( "Hi!" ); String query = "SELECT id, title, comment, date1, pswd, fc FROM contract WHERE scid=-1"; if( group_mode ) { query += " AND (gr & ?) > 0"; } else { query += " AND id IN (" + cid + ")"; } PreparedStatement ps = conSlave.prepareStatement( query ); if( group_mode ) { StringTokenizer stgroup = new StringTokenizer( groupsId, "," ); while( stgroup.hasMoreTokens() ) { try { group += 1L << Long.parseLong( stgroup.nextToken() ); } catch( Exception ex ) { print( "Возможно неправильно перечислены коды групп" ); print( ex ); ex.printStackTrace(); } } ps.setLong( 1, group ); } //print( query ); rs = ps.executeQuery(); ContractManager cm = new ContractManager( con ); int count = 0; while( rs.next() ) { title = rs.getString("title"); dateOpen = TimeUtils.convertDateToCalendar( rs.getDate( "date1" ) ); superId = rs.getInt("id"); pswd = rs.getString("pswd"); print( String.valueOf(++count) + ". Обработка супердоговора: id:'" + superId + "' title:'" + title + "'" ); title = title.replace( superPrefix, subPrefix ); if( rs.getInt("fc") == 1 ) { patternId = jurPatternId; } else { patternId = phizPatternId; } try { Contract c = cm.createFromPattern( patternId, title, dateOpen, pswd, null, true, superId, KernelConst.SUB_MODE_INDEPEND_BALANCE ); if( c != null ) { c.setComment( rs.getString("comment") ); cm.updateContract( c ); print( String.valueOf(count) + ". Создан субдоговор: id:'" + String.valueOf(c.id) + "' title:'" + c.title + "'" ); } else { print( String.valueOf(count) + ". Ошибка!! Договор не был создан!!!" ); } } catch( Exception e ) { print( e ); e.printStackTrace(); } } print( "By!" ); }