Очередной раз поставили задачу печати простой "бумажки" где будет написано последний приход абонента , имя фамилия и т.п. (Модуль кеш че не предлагать).
Решил сделать через печать баланса в биллинге. Создал библиотеку скриптов print.
Накидал скрипт .
Код:
public String getTP(String s)
{
ctx = getContext();
con = ctx.con;
Date now = new Date();
ctm = new ContractTariffManager( con );
cm= new ContractManager(con);
TariffPlanManager tpm = new TariffPlanManager(con);
contract=cm.getContractByTitle(s);
date = new GregorianCalendar();
currentTariff = ctm.getContractTariff(contract.getId(), date );
tpid = currentTariff.getTariffPlanId();
tarif_title = tpm.getTariffPlan(tpid).getTitle();
con.close();
return tarif_title;
}
вызываю из contract_balance_detail_print.xsl
Код:
<xsl:value-of select="script:invoke('print','getTP',$title)"/>
Всё работает.
Но после каждой печати или сохранения в сервер статус добавляется новое актив соединение к базе и оно не закрывается.
Скрипт уже сократил до простого вывода тарифа.
BGBillingServer v 6.1.1094 / 09.09.2015 18:00:20