Закрытие телефонных договоров

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 61: Строка 61:
}
}
-
< /source>
+
</source>

Текущая версия на 05:56, 17 января 2013

Пример скрипта блокировки телефонных шлюзов. Запускаем его 21го числа (где то в толщах закона о связи и правил предоставления услуг) и скрипт блокирует всех, у кого платежи за месяц не перекрыли долг на начало месяца (если на начало месяца был плюс - абонент не должник, естественно).

import bitel.billing.server.util.*;
import bitel.billing.server.contract.bean.*;
import java.math.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
import ru.bitel.bgbilling.modules.phone.server.bean.PhoneContractStatusManager;
import org.apache.log4j.Logger;
 
import ru.bitel.bgbilling.server.util.Setup;
 
public void main( setup, con, conSlave )
{
	s="";
	cm=new ContractManager(con);
	bu=new BalanceUtils(con);
	pcsm=new PhoneContractStatusManager(con, 3);
	//Находим договора, где есть услуги телефонии. У меня такие договора называются МТС
	rs=con.prepareStatement("select * from contract where title like '%МТС%' and pgid=1 and status!=3 and date2 is null").executeQuery();
	ContractStatusManager csm=new ContractStatusManager(con);
	while(rs.next()){
 
		cid=rs.getInt("id");
		contract=cm.getContractById(cid);	
		print("Договор: "+rs.getString("title"));
		print("Баланс на начало месяца: "+bu.getBalanceSumma1(new Date(), cid));
		BigDecimal start=new BigDecimal(0);
		BigDecimal payments=new BigDecimal(0);
 
		rs2=con.prepareStatement("select SUM(summa) from contract_payment where cid="+cid+" and dt>='2012-05-01' ").executeQuery();
		if(rs2.next()){
 
			if(rs2.getBigDecimal(1)!=null)
				payments=rs2.getBigDecimal(1);
			print("Платежи: "+payments);
		}
		if(payments.add(bu.getBalanceSumma1(new Date(), cid)).compareTo(BigDecimal.ZERO)<0){
			print("ЗАБЛОКИРОВАТЬ АБОНЕНТА!");
			s=s+"\n"+cid+":"+contract.getTitle()+":"+contract.getComment();
			status=new ContractStatus();
			status.setStatus(2);
			status.setComment("Баланс на начало месяца:"+start+", платежи за месяц: "+payments);
			status.setDateFrom(new java.util.Date());
			status.setContractId(contract.getId());
			csm.changeStatus(status, 0,true);
			//Т.к. телефония на субдоговоре
                        for(String subcid:rs.getString("sub_list").split(",")){
				print("Блокируем поддоговор:"+subcid);
				pcsm.changeContractStatus(Integer.parseInt(subcid), 1, 0);
			}
		}
 
		print("---");
	}
//Смотрим кого в итоге заблокировало
print(s);
}
Личные инструменты