forum.bitel.ru http://forum.bitel.ru/ |
|
Определение размера абонентской платы http://forum.bitel.ru/viewtopic.php?f=19&t=5014 |
Страница 1 из 1 |
Автор: | lacost [ 20 янв 2011, 20:53 ] |
Заголовок сообщения: | Определение размера абонентской платы |
Необходимо определить размер абонплаты у конкретного пользователя. Беру из wiki пример http://wiki.bgbilling.ru/index.php/%D0% ... 1%82%D1%8B Фрагмент скрипта, для определения размера абонентской платы по определенной услуге. API тарифов значительно поменялось для Npay в версии 5.0 рабочий вариант Сразу ошибка в конструкторе NPayTariffContext надо так: NPayTariffContext ctx = new NPayTariffContext( setup.getModuleSetup( mid ), con, mid, startMonth, endMonth, startMonth, String.valueOf(cid), String.valueOf(sid) ); (не совсем уверен в последнем параметре. нужен он или нет?) - Дальше вроде компилится - но результат не считает. возвращает req.toString()=accepted => false Прошу разработчиков подсказать - что изменилось в 5.1 что перестал работать данный скрипт. |
Автор: | Администратор [ 21 янв 2011, 11:42 ] |
Заголовок сообщения: | Re: Определение размера абонентской платы |
Выкладывайте скрин тарифа открытого, полный код скрипта в части получения абонплаты. |
Автор: | lacost [ 21 янв 2011, 14:16 ] | ||
Заголовок сообщения: | Re: Определение размера абонентской платы | ||
Код: 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:
|
Автор: | lacost [ 26 янв 2011, 12:54 ] |
Заголовок сообщения: | Re: Определение размера абонентской платы |
up |
Автор: | lacost [ 31 янв 2011, 13:02 ] |
Заголовок сообщения: | Re: Определение размера абонентской платы |
Вопрос к разработчикам: Приведенный в wiki пример кода - работает правильно и ошибка у меня? или в 5.1 что-то изменилось, и данный код не работает? |
Автор: | lacost [ 07 фев 2011, 12:24 ] |
Заголовок сообщения: | Re: Определение размера абонентской платы |
up |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |