Скрипт создания субдоговоров по шаблону

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
 
(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!" );
}
Личные инструменты