Код:
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;
public void main(setup, con, conSlave) {
// код договора
cid = 796;
// на какой момент смотреть тариф
time = new GregorianCalendar();
// код услуги
sid = 79;
// код экземпляра модуля
mid = 7;
Calendar startMonth = TimeUtils.getStartMonth( time );
Calendar endMonth = TimeUtils.getEndMonth( time );
int daysInMonth = startMonth.getActualMaximum( Calendar.DAY_OF_MONTH );
NPayTariffContext ctx = new NPayTariffContext( setup.getModuleSetup( mid ), con, mid, startMonth, endMonth, startMonth, String.valueOf(cid), String.valueOf(sid) );
//public NPayTariffContext(ModuleSetup moduleSetup, Connection con, int mid, Calendar startMonth, Calendar endMonth, Calendar currentDay, String cids, String serviceList)
TariffTreeSet result = TariffTreeBuilder.getInstance().getRealtimeTariffTreeSet( con, cid, startMonth, "npay", mid, 0, 0 );
for( TariffModuleTree tariffPeriod : result.getTreeList( time ) ) {
print ("tariffPeriod=" + tariffPeriod);
print("mid=" + tariffPeriod.getMid());
print("module=" + tariffPeriod.getModule());
print("treeId=" + tariffPeriod.getTreeId());
NPayTariffRequest req = new NPayTariffRequest( mid, cid, 0); //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 ) ) );
print ("before:: req.toString()=" + req);
code = tariffPeriod.execute( req, ctx );
if(req.getErrors().length()>0) {
print("req.errors() = " + req.getErrors());
}
print ("after:: req.toString()=" + req);
if( req.isAccepted() ) {
for( NPayServiceCost cost : req.getServiceCost().get( sid ) ) {
if( cost.cost != null ) {
print( cost );
break;
}
}
}
}
}
результат:
Код:
COMPLETE_TIME: 21.01.11 11:15:37
PROCESS_TIME: 37
OUT:
tariffPeriod=ru.bitel.bgbilling.kernel.tariff.tree.server.TariffModuleTree@4e2095[Unlocked]
mid=7
module=npay
treeId=12
before:: req.toString()=accepted => false
PARAMS: mid: 7; cid: 796
NPayServiceCost [serviceId: 79; date1: 01.01.2011; date2: 31.01.2011; serviceStart: 01.01.2011; serviceEnd: 31.01.2011; accountingPeriodDays: 31; amount: 1; cost: null; addCost: null; periodAmount: null; monthAmount: null]
HIST:
after:: req.toString()=accepted => false
PARAMS: mid: 7; cid: 796
NPayServiceCost [serviceId: 79; date1: 01.01.2011; date2: 31.01.2011; serviceStart: 01.01.2011; serviceEnd: 31.01.2011; accountingPeriodDays: 31; amount: 1; cost: null; addCost: null; periodAmount: null; monthAmount: null]
HIST: