Автоматическое связывание атрибутов модуля Bill с параметрами договора при создании нового договора
Материал из BiTel WiKi
(Различия между версиями)
Murano (Обсуждение | вклад) (/* Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора. Связываение производится независимо от того, есть ли модуль Bi) |
Murano (Обсуждение | вклад) |
||
(5 промежуточных версий не показаны.) | |||
Строка 2: | Строка 2: | ||
- | <p>Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора. Связываение производится независимо от того, есть ли модуль Bill на договоре или нет. Если модуль абоненту добавится когда-либо, то связка атрибутов будет подключена автоматически.</p> | + | <p>Скрипт выполняет связывание атрибутов модуля Bill с параметрами договора.</p> |
+ | <p>Связываение производится независимо от того, есть ли модуль Bill на договоре или нет.</p> | ||
+ | <p>Если модуль абоненту добавится когда-либо, то связка атрибутов будет подключена автоматически.</p> | ||
<source lang="java"> | <source lang="java"> | ||
Строка 12: | Строка 14: | ||
* @link https://www.hitbit.ru | * @link https://www.hitbit.ru | ||
* | * | ||
- | * @version 1.0. | + | * @version 1.0.5 |
* | * | ||
*/ | */ | ||
Строка 26: | Строка 28: | ||
import java.util.Iterator; | import java.util.Iterator; | ||
import java.util.Set; | import java.util.Set; | ||
- | |||
import ru.bitel.bgbilling.kernel.event.Event; | import ru.bitel.bgbilling.kernel.event.Event; | ||
Строка 36: | Строка 37: | ||
public class AttrParamsLinker | public class AttrParamsLinker | ||
- | extends EventScriptBase | + | extends EventScriptBase { |
- | { | + | |
- | // | + | // ID модуля Bill |
- | private final static | + | private final static int MID = 4; |
@Override | @Override | ||
Строка 65: | Строка 66: | ||
Date dateFrom = contract.getDateFrom(); | Date dateFrom = contract.getDateFrom(); | ||
SimpleDateFormat simpleDateFrom = new SimpleDateFormat("yyyy-MM-dd"); | SimpleDateFormat simpleDateFrom = new SimpleDateFormat("yyyy-MM-dd"); | ||
- | String stringDateFrom= simpleDateFrom.format(dateFrom); | + | String stringDateFrom = simpleDateFrom.format(dateFrom); |
Set<Map.Entry<String, String>> entrySet = attrMap.entrySet(); | Set<Map.Entry<String, String>> entrySet = attrMap.entrySet(); | ||
Iterator<Map.Entry<String, String>> itr = entrySet.iterator(); | Iterator<Map.Entry<String, String>> itr = entrySet.iterator(); | ||
- | while (itr.hasNext()) { | + | while(itr.hasNext()) { |
Map.Entry<String, String> entry = itr.next(); | Map.Entry<String, String> entry = itr.next(); | ||
String key = entry.getKey(); | String key = entry.getKey(); | ||
Строка 83: | Строка 84: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | '''<p>Важно помнить, что указываемые в массиве атрибуты модуля Bill и параметры договора должны предварительно</p>''' | ||
+ | '''<p>быть созданы, иначе, в процессе работы с биллингом, Вы рискуете получить ошибки!</p>''' |
Текущая версия на 15:08, 5 сентября 2019
Динамичекий код скрипта, подписывающегося на глобальное событие "Договор создан".
Скрипт выполняет связывание атрибутов модуля 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 и параметры договора должны предварительно
быть созданы, иначе, в процессе работы с биллингом, Вы рискуете получить ошибки!