Скрипт создания субдоговоров по шаблону
Материал из BiTel WiKi
(Различия между версиями)
Airat (Обсуждение | вклад) |
Airat (Обсуждение | вклад) |
||
| Строка 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 javax.swing.JOptionPane; | ||
| + | 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!" ); | ||
| + | } | ||
</source> | </source> | ||
Версия 10:41, 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 javax.swing.JOptionPane; 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!" ); }
