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

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

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

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

К сожалению данный скрипт не работает, так как на текущий момент плагин по своей структуре не разрешает ссылаться на один файл из разных Документов.


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

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

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