forum.bitel.ru
http://forum.bitel.ru/

Дебетовые абонплаты
http://forum.bitel.ru/viewtopic.php?f=16&t=10378
Страница 1 из 1

Автор:  SeGa [ 07 апр 2015, 08:15 ]
Заголовок сообщения:  Дебетовые абонплаты

Имеем дебетовый супердоговор на который поступаю платежи абонентов, на нем нет никаких модулей, так же имеем дебетовый субдоговора с зависимым балансом на. На субдоговоре висит модуль абонплаты и интернет, если у абонента баланс меньше 0 - модуль интернет ставит статус отключен по балансу в модуле интерент, но на этот договор не действует событие в планировщике Закрытие статуса NPay договоров по балансу. Если создать отдельный договор не имеющий не субдоговоров, не супердоговора - планировщик отрабатывает нормально. Так и должно быть или это косяк? Если так и должно быть, то как можно сменить статус субдоговора по балансу?

Автор:  stark [ 07 апр 2015, 16:45 ]
Заголовок сообщения:  Re: Дебетовые абонплаты

Код:
#при открытии статуса супердоговора  открывать статусы зависимых договоров(1-открывать, 0 - не открывать).
debet.npay.processDependentSub=0


В доке пока этого нет.

Автор:  SeGa [ 07 апр 2015, 17:17 ]
Заголовок сообщения:  Re: Дебетовые абонплаты

stark писал(а):
Код:
#при открытии статуса супердоговора  открывать статусы зависимых договоров(1-открывать, 0 - не открывать).
debet.npay.processDependentSub=0


В доке пока этого нет.

Спасибо, но это точно то что нужно? Оно дает закрывать договора по событию Закрытие статуса NPay договоров по балансу, а то судя по комментарию оно наоборот открывает :)
Я решил свою проблему глобальным скриптом(Может кому пригодится)
Код:
import java.sql.*;
import java.util.*;
import java.math.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
import ru.bitel.bgbilling.kernel.event.*;

public void main( setup, con, conSlave )
{
   ContractStatusManager contract_status_manager  = new ContractStatusManager( con );
   String sql = "SELECT id FROM contract where mode=1 and status=0";
   PreparedStatement ps = con.prepareStatement( sql );
   ResultSet rs = ps.executeQuery();
   while(rs.next())
   {
      int cid = rs.getInt( 1 );
      Calendar DateNow = Calendar.getInstance();
      BalanceUtils bu = new BalanceUtils( con );
      contract_balance = bu.getBalance (DateNow.getTime(), cid);
      
      if (contract_balance.compareTo( new BigDecimal("0.00") )<= 0)
      {
      
      print("cid: "+cid+" Contract_Balance: "+contract_balance);
         // суспендим договор
         ContractStatus status = new ContractStatus();
         status.setContractId( cid );
         status.setDateFrom( DateNow.getTime() );
         status.setDateTo( null );
         status.setStatus(3);
         status.setComment( "Недостаточно средств" );
         contract_status_manager.changeStatus( status, 0 );
      }
      else
      {
         print ("Normal");
      }
   }
}

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/