Автоматическое связывание атрибутов модуля Bill с параметрами договора при создании нового договора
Материал из BiTel WiKi
(Различия между версиями)
Murano (Обсуждение | вклад) (Новая страница: «== '''Динамичекий код скрипта, подписывающегося на глобальное событие "Договор создан".''' == …») |
Murano (Обсуждение | вклад) (/* Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора. Связываение производится независимо от того, есть ли модуль Bi) |
||
Строка 2: | Строка 2: | ||
- | + | <p>Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора. Связываение производится независимо от того, есть ли модуль Bill на договоре или нет. Если модуль абоненту добавится когда-либо, то связка атрибутов будет подключена автоматически.</p> | |
+ | |||
+ | <source lang="java"> | ||
+ | /** | ||
+ | * Скрипт для автоматического связывания атрибутов модуля | ||
+ | * Bill (реквизитов) с параметрами договора при событии "Договор создан". | ||
+ | * | ||
+ | * @author Oleg Altynnikov (Murano) | ||
+ | * @link https://www.hitbit.ru | ||
+ | * | ||
+ | * @version 1.0.2 | ||
+ | * | ||
+ | */ | ||
+ | |||
+ | 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 org.apache.log4j.Logger; | ||
+ | |||
+ | 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 | ||
+ | { | ||
+ | // Set bill module ID | ||
+ | private final static String 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(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </source> |
Версия 10:57, 5 сентября 2019
Динамичекий код скрипта, подписывающегося на глобальное событие "Договор создан".
Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора. Связываение производится независимо от того, есть ли модуль Bill на договоре или нет. Если модуль абоненту добавится когда-либо, то связка атрибутов будет подключена автоматически.
/** * Скрипт для автоматического связывания атрибутов модуля * Bill (реквизитов) с параметрами договора при событии "Договор создан". * * @author Oleg Altynnikov (Murano) * @link https://www.hitbit.ru * * @version 1.0.2 * */ 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 org.apache.log4j.Logger; 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 { // Set bill module ID private final static String 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(); } } }