Автоматическое связывание атрибутов модуля Bill с параметрами договора при создании нового договора
Материал из BiTel WiKi
Динамичекий код скрипта, подписывающегося на глобальное событие "Договор создан".
Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора.
Связываение производится независимо от того, есть ли модуль Bill на договоре или нет.
Если модуль абоненту добавится когда-либо, то связка атрибутов будет подключена автоматически.
/** * Скрипт для автоматического связывания атрибутов модуля * Bill (реквизитов) с параметрами договора при событии "Договор создан". * * @author Oleg Altynnikov (Murano) * @link https://www.hitbit.ru * * @version 1.0.5 * */ package ru.linkray.bill; import java.sql.Connection; import java.sql.PreparedStatement; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Iterator; import java.util.Set; import ru.bitel.bgbilling.kernel.event.Event; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import bitel.billing.server.contract.bean.ContractManager; import bitel.billing.server.contract.bean.Contract; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; public class AttrParamsLinker extends EventScriptBase { // ID модуля Bill private final static int MID = 4; @Override public void onEvent(Event event, Setup setup, ConnectionSet set) throws Exception { Map<String, String> attrMap = new HashMap(); // Массив параметров, связывающих атрибуты модуля Bill // с параметрами договора. Указывается слева название атрибута // модуля, права макрос с ID параметра. attrMap.put("inn", "$macroContractParamPref:21"); // ИНН attrMap.put("kpp", "$macroContractParamPref:22"); // КПП attrMap.put("ogrn", "$macroContractParamPref:23"); // ОГРН attrMap.put("bank", "$macroContractParamPref:25"); // Название банка attrMap.put("bik", "$macroContractParamPref:24"); // БИК attrMap.put("account", "$macroContractParamPref:27"); // Р/сч. attrMap.put("corr_account", "$macroContractParamPref:26"); // К/сч. attrMap.put("org_name", "$macroContractParamPref:7"); // Наименование организации Connection conn = set.getConnection(); int cid = event.getContractId(); ContractManager cm = new ContractManager(conn); Contract contract = cm.getContractById(cid); Date dateFrom = contract.getDateFrom(); SimpleDateFormat simpleDateFrom = new SimpleDateFormat("yyyy-MM-dd"); String stringDateFrom = simpleDateFrom.format(dateFrom); Set<Map.Entry<String, String>> entrySet = attrMap.entrySet(); Iterator<Map.Entry<String, String>> itr = entrySet.iterator(); while(itr.hasNext()) { Map.Entry<String, String> entry = itr.next(); String key = entry.getKey(); String value = entry.getValue(); String query = "INSERT INTO bill_attribute_" + MID + " (id, cid, name, value, start, end) VALUES ('', " + cid + ", '" + key + "', '" + value + "', '" + stringDateFrom + "', null);"; PreparedStatement ps = conn.prepareStatement(query); ps.execute(); ps.close(); } } }
Важно помнить, что указываемые в массиве атрибуты модуля Bill и параметры договора должны предварительно
быть созданы, иначе, в процессе работы с биллингом, Вы рискуете получить ошибки!