Приостановление договора клиентом через 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);
		}
	}
}
Личные инструменты