Wott писал(а):
Я что-то роюсь в поиске и никак не могу однозначно понять как решить стандартную проблему:
Есть зависимые субдоговора,некоторые с арендной платой.
По запросу абонента приостанавливаем отдельные субдоговора на разные периоды - на неделю в будущем например или прямо сейчас до запроса на включение и так далее. Абонплата корректно не снимается в период приостановки. Все работает.
Есть должники, которые отключаются по балансу супердоговора вручную через монитор или скриптом по расписанию.
Есть скрипт на приход платежа, который включает супердоговор если соответствующий баланс положительный.
Все работает, но проблема в том что перетирается статус субдоговора "приостановлен" при выключении и включении супердоговора. Надо что бы установленный период статуса "приостановлен" при всех изменения супердоговора оставался неизменным. Как это сделать в 5.1 ?
Нагородить скриптов с отменой дефолтной логики, разделяя периоды и статусы, что бы "приостановлен" остался неизменным ?
проверять наследуется ли статус от супера, например смотреть есть ли пришедший статус на супере плюсминус минута ?
Или приоритеты для статусов работают в новых версиях ?
Или еще как ?
у меня сделано вот так (отключаются супердоговор установкой статуса отключен). Статус отключен на субдоговор опр типа (где висит этот скрипт поведения) не проходит. Можно сделать так чтобы проверял не newStatus как у меня а originalStatus...
Код:
import bitel.billing.server.util.*;
import java.sql.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.bean.event.*;
import bitel.billing.server.contract.bean.ContractStatusManager.ContractStatusManager4Script;
public void onEvent( event1, setup, con, conSlave )
{
ContractSetStatusLogicEvent event = (ContractSetStatusLogicEvent)event1;
print( "do change status!" );
// старый статус
ContractStatus status = event.getStatus1();
// Приходящий статус
ContractStatus newStatus = event.getStatus2();
// Самый что ни на есть оригинальный статус
ContractStatus originalStatus = event.getOriginalStatus();
if(newStatus.getStatus()==2)
{
print ("Disable overwrite");
newStatus.setDateTo(TimeUtils.getPrevDay(newStatus.getDateFrom()));
event.setProcessed( true );
return;
}
return;
}
ну и плюс в конфиге
Код:
use.event.set.status.logic=1