Создание копий документа на договорах

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

(Различия между версиями)
Перейти к: навигация, поиск
Aardvark (Обсуждение | вклад)
(Создал. Внес исходник скрипта)
Следующая правка →

Версия 08:21, 18 сентября 2012

Копирование файла с одного договора на другие

Глобальный скрипт позволяет создать копии документа на договорах с уже загруженного в систему документа.

import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
 
import ru.bitel.bgbilling.kernel.plugin.server.BGPluginManagerServer;
import ru.bitel.bgbilling.plugins.documents.server.bean.Document;
import ru.bitel.bgbilling.plugins.documents.server.bean.DocumentManager;
import ru.bitel.bgbilling.plugins.filestorage.server.BGServerFile;
import ru.bitel.bgbilling.plugins.filestorage.server.FileStorage;
import ru.bitel.bgbilling.server.util.Setup;
 
/*
 *
 * @author aardvark <e.a.latuhin+bgbilling@gmail.com>
 */
public void main( setup, con, conSlave )
{
        /*
         * Ид плагина документы с которым мы будем работать.
         */
	int DOCUMENTS_PLUGIN_ID = 9;
        /*
         * Ид документа из таблицы contract_document_<mid>,
         * который мы собираемся размножить
         */
	int SHAPE_DOCUMENT_ID = 3;
 
	int DOCUMENTS_FILE_TYPE = 3;
	int DOCUMENTS_JOURNAL_TYPE = 2;
 
	DocumentManager dm = new DocumentManager(con, 
		BGPluginManagerServer.getManager().getPluginByUID(DOCUMENTS_PLUGIN_ID));
 
	FileStorage fs = new FileStorage("/var/bgbilling_doc", DOCUMENTS_PLUGIN_ID, con);
        // получаем файл с документа-формы
	BGServerFile shape = fs.getFileById(SHAPE_DOCUMENT_ID);
 
        //формируем ид договоров на которые мы будем копировать файл документа
	String sql = "select id from contract where fc=0";
	PreparedStatement ps = con.prepareStatement(sql);
	ResultSet rs = ps.executeQuery();
	while (rs.next()){
		int CID = rs.getInt(1);
                //создаем новый документ. 
		Document document = new Document();
		document.setCid(CID);
		document.setTitle("Договор");
		document.setUser(0);
		document.setType(DOCUMENTS_FILE_TYPE);
		document.setJournal(DOCUMENTS_JOURNAL_TYPE);
		document.setDate(shape.getDate());
		document.setComment("Редакция договора на 17.09.2012");
		dm.updateDocument("new", document);
                //получаем ид документа на новом договоре к которому мы в дальнейшем привесим файл
		int docId = document.getId();
 
                //создаем новый файл-документ, копируя в него параметры файла-документа формы
		BGServerFile mold = new BGServerFile();
		mold.setContractId(CID);
		mold.setOwnerId(docId);
		mold.setComment(shape.getComment());
		mold.setDate(shape.getDate());
		mold.setSize(shape.getSize());
		mold.setTitle(shape.getTitle());
		mold.setUserId(0);
		fs.updateFile(mold);
	}
}

Тема на форуме касательно работы с плагином через api - http://forum.bgbilling.ru/viewtopic.php?f=23&t=6186

Личные инструменты