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

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

Перейти к: навигация, поиск

Скрипт, используя фильтр по группам, добавляет каждому супердоговору субдоговор, используя 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!" );
}
Личные инструменты