Автоматическое связывание атрибутов модуля 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 и параметры договора должны предварительно

быть созданы, иначе, в процессе работы с биллингом, Вы рискуете получить ошибки!

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