Создание копий документа на договорах
Материал из BiTel WiKi
Версия от 08:21, 18 сентября 2012; Aardvark (Обсуждение | вклад)
Копирование файла с одного договора на другие
Глобальный скрипт позволяет создать копии документа на договорах с уже загруженного в систему документа.
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