Приостановление договора клиентом через WEB
Материал из BiTel WiKi
Скрипт должен реагировать на события "Получение списка доп. действий для WEB статистики" и "Обработка доп. действия для договора"
- Приостанавливает договор со следующего дня, возобновляет с текущего.
- Не позволяет менять статусы чаще, чем раз в 5 дней.
- Присылает письмо о смене статуса.
import bitel.billing.server.contract.bean.*; import bitel.billing.server.util.*; import bitel.billing.common.*; import ru.bitel.bgbilling.common.*; public void onEvent( event, setup, con, conSlave ) { cid = event.getContractID(); cm = new ContractManager( con ); cstm = new ContractStatusManager( con ); tu = new TimeUtils(); print(event.toString()); contract = cm.getContractByID( cid ); status = cstm.getStatus(cid, event.getGenerateTime()); if( contract == null ) { error( "Contract not found!" ); return; } print(contract.getFc()); if(event.getTypeID() == 12) { // Получение списка действий if(contract.getFc() == 0) // Только для физ. лиц { print("Status: "+status.getStatus()+" from "+tu.convertCalendarToDateString(status.getDate1())); if (status.getStatus() == 0 && tu.daysDelta(status.getDate1(), event.getGenerateTime()) >=5) event.addAction(1, "Приостановление договора с текущего дня"); else if (status.getStatus() == 4 && tu.daysDelta(status.getDate1(), event.getGenerateTime()) >=5) event.addAction(2, "Возобновление договора с текущего дня"); } } if (event.getTypeID() == 16) { // Выполнение действия print(event.getActionId()); if (event.getActionId() == 1) { print("Changing status to suspended"); suspendDate = event.getGenerateTime(); suspendDate.roll(Calendar.DAY_OF_YEAR, 1); newStatus = new ContractStatus(); newStatus.setContractId(cid); newStatus.setStatus(4); newStatus.setDate1(suspendDate); newStatus.setComment("Установлено клиентом через WEB-статистику"); cstm.changeStatus(newStatus, 0); msg = "Договор "+contract.getTitle()+" ["+contract.getComment()+"] приостановлен с "+tu.convertCalendarToDateString(suspendDate); event.addReport(msg+"\r\nВы сможете возобновить договор не ранее, чем через 5 дней"); mail = new MailMsg(setup); mail.sendMessage("billmaster@example.com", "Приостановление "+contract.getTitle(), msg); } else if (event.getActionId() == 2) { print("Changing status to active"); newStatus = new ContractStatus(); newStatus.setContractId(cid); newStatus.setStatus(0); newStatus.setDate1(event.getGenerateTime()); newStatus.setComment("Установлено клиентом через WEB-статистику"); cstm.changeStatus(newStatus, 0); msg = "Договор "+contract.getTitle()+" ["+contract.getComment()+"] возобновлён с "+tu.convertCalendarToDateString(event.getGenerateTime()); event.addReport(msg+"\r\nВы сможете приостановить договор не ранее, чем через 5 дней"); mail = new MailMsg(setup); mail.sendMessage("billmaster@example.com", "Возобновление "+contract.getTitle(), msg); } } }