Определение размера абонентской платы

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 40: Строка 40:
         break;
         break;
     }
     }
-
}
 
-
</source>
 
-
 
-
Для 5.0
 
-
 
-
<source lang="java">
 
-
import java.sql.Connection;
 
-
import java.util.Calendar;
 
-
import java.util.Collections;
 
-
import java.util.GregorianCalendar;
 
-
 
-
import bitel.billing.common.TimeUtils;
 
-
 
-
import ru.bitel.bgbilling.kernel.tariff.tree.server.TariffModuleTree;
 
-
import ru.bitel.bgbilling.kernel.tariff.tree.server.TariffTreeBuilder;
 
-
import ru.bitel.bgbilling.kernel.tariff.tree.server.TariffTreeSet;
 
-
import ru.bitel.bgbilling.modules.npay.tariff.server.NPayTariffContext;
 
-
import ru.bitel.bgbilling.modules.npay.tariff.server.NPayTariffRequest;
 
-
import ru.bitel.bgbilling.modules.npay.tariff.server.NPayTariffRequest.NPayServiceCost;
 
-
import ru.bitel.bgbilling.server.util.Setup;
 
-
 
-
// код договора
 
-
cid = 455;
 
-
// на какой момент смотреть тариф
 
-
time = new GregorianCalendar();
 
-
// код услуги
 
-
sid = 79;
 
-
// код экземпляра модуля
 
-
mid = 66;
 
-
 
-
Calendar startMonth = TimeUtils.getStartMonth( time );
 
-
Calendar endMonth = TimeUtils.getEndMonth( time );
 
-
 
-
int daysInMonth = startMonth.getActualMaximum( Calendar.DAY_OF_MONTH );
 
-
 
-
NPayTariffContext ctx = new NPayTariffContext( Setup.getSetup().getModuleSetup( mid ), con, mid,
 
-
                                              startMonth, endMonth, String.valueOf( cid ), null );
 
-
 
-
TariffTreeSet result = TariffTreeBuilder.getInstance().getRealtimeTariffTreeSet( con, cid, startMonth, "npay", mid, 0, 0 );
 
-
 
-
for( TariffModuleTree tariffPeriod : result.getTreeList( time ) )
 
-
{
 
-
NPayTariffRequest req = new NPayTariffRequest( mid, cid, sid );
 
-
req.setInfoEnable( true );
 
-
req.setConnection( con );
 
-
req.setAccountingMonthDays( daysInMonth );
 
-
// эта дата нужна, если режимы тарификации помещены в период
 
-
req.setTime( startMonth );
 
-
 
-
req.setServiceCost( sid, Collections.singletonList( new NPayServiceCost( sid, startMonth, endMonth, startMonth, endMonth, 1 ) ) );
 
-
 
-
tariffPeriod.execute( req, ctx );
 
-
 
-
if( req.isAccepted() )
 
-
{
 
-
for( NPayServiceCost cost : req.getServiceCost().get( sid ) )
 
-
{
 
-
if( cost.cost != null )
 
-
{
 
-
print( cost );
 
-
break;
 
-
}
 
-
}
 
-
}
 
}
}
</source>
</source>

Версия 11:03, 11 мая 2010

Фрагмент скрипта, для определения размера абонентской платы по определенной услуге.

Работает при простых абонплатах.

import java.sql.*;
import java.util.*;
 
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
 
// код договора
cid = 455;
// на какой момент смотреть тариф
time = new GregorianCalendar();
// код услуги
sid = 79;
// код экземпляра модуля
mid = 66;
 
tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, time, "npay", mid, true );
// перебор тарифов в порядке позиций сначала персональных, потом глобальных
for( TariffModuleTree tree : tts.getTreeList( time ) )
{
    req = new TariffRequest();
    req.setRequestParam( "action", "calculate" );
    req.setRequestParam( "sid", sid );
    // считаем как будто абонплата подключена весь месяц   
    req.setRequestParam( "month_days", 1 );            
    req.setRequestParam( "period_days", 1 );
 
    tree.processRequest( req );
 
    cost = (Float)req.getResponseParam( "cost" );                
    if( req.wasAccepted() &&
        cost != null )
    {
        print( cost );
        break;
    }
}
Личные инструменты