Скрипт создания субдоговоров по шаблону
Материал из BiTel WiKi
(Различия между версиями)
Airat (Обсуждение | вклад) |
Airat (Обсуждение | вклад) |
||
(2 промежуточные версии не показаны) | |||
Строка 2: | Строка 2: | ||
При этом с супердоговора копируется комментарий имени и дата начала периода договора, а в номере изменяется префикс. | При этом с супердоговора копируется комментарий имени и дата начала периода договора, а в номере изменяется префикс. | ||
<source lang="java"> | <source lang="java"> | ||
+ | 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) Вписать коды шаблонов договоров в переменные jurPatternId и phizPatternId для юридических и физических лиц . | ||
+ | 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!" ); | ||
+ | } | ||
</source> | </source> |
Текущая версия на 10:43, 24 февраля 2011
Скрипт, используя фильтр по группам, добавляет каждому супердоговору субдоговор, используя 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) Вписать коды шаблонов договоров в переменные jurPatternId и phizPatternId для юридических и физических лиц . 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!" ); }