Задача стоит аналогичная описанной в статье
"Дебетовые абонплаты. Снятие штрафа за разблокировку.".
А именно, если абонент не пользовался интернетом в течении двух и более месяцев, и при этом не писал заявление на приостановку услуг, для продолжения пользования интернетом ему необходимо заплатить штраф в размере одной абонентской платы за простой, а также обычную абонплату за текущий месяц.
т.к. приведенный выше скрипт устарел, я решил его немного изменить. Я хочу перед разблокировкой договора проверять движение средств на договоре с помощью функции getLastBalanceMonth (т.е. получить последний месяц, где было движение средств). Если два и более месяца не было движений, то к договору необходимо добавить RSCM услугу "Аренда линии".
Цитата:
Может вам проще написать глобальный скрипт и запускать его по планировщику.
такой вариант я использовать не хочу, т.к. в данном случае очень сложно предусмотреть все ньюансы.
на данный момент я представляю (но не уверен, что такое возможно) реализацию описанного механизма следующим образом:
на событии "Запрос доп.расхода для открытия договора" проверять необходимость добавления услуги "Аренда линии".
на событии "После открытия договора по платежу" добавлять при необходимости RSCM услугу "Аренда линии"
Существует ли между двумя описанными событиями связь?
В скрипте из ссылки заметил такую вещь:
event.setSumma( summa ); может через этот параметр получится передать в событие "После открытия договора по платежу" информацию о необходимости добавления RSCM услуги "Аренда линии"?
Код:
2. В скрипте поведения создайте функцию, обрабатывающую событие Запрос доп. расхода для открытия договора. Определите сумму минимальной предоплаты для каждого из тарифов.
includeBGBS( "bgbs://ru.bitel.bgbilling.kernel.script.common.bean.ScriptLibrary/npay_debet" );
public void onEvent( event, setup, con, conSlave )
{
unlockInfo = getUnlockInfo( event.getContractID(), conSlave );
if( unlockInfo == null )
{
error( "Error take unlock info" );
return;
}
summa = unlockInfo.summa;
print( "Cost for unlock: " + summa );
// здесь можно определить "довесок" в зависимости от кода тарифного дерева
// код дерева можно получить выбором любого узла тарифного дерева и нажатием Ctrl+i, tree => <код дерева>
if( unlockInfo.treeId == 226 )
{
summa = summa.add( new BigDecimal( "11.20" ) );
print( "Add summa to " + summa + " by tariffTreeId" );
}
event.setSumma( summa );
}
Понимаю, что задача не стандартная, если мне поможете, буду очень благодарен!