BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 03:17

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 20 янв 2011, 20:53 
Не в сети

Зарегистрирован: 04 дек 2006, 21:55
Сообщения: 150
Карма: 0
Необходимо определить размер абонплаты у конкретного пользователя.

Беру из 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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Выкладывайте скрин тарифа открытого, полный код скрипта в части получения абонплаты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 янв 2011, 14:16 
Не в сети

Зарегистрирован: 04 дек 2006, 21:55
Сообщения: 150
Карма: 0
Код:
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:


Вложения:
st.gif
st.gif [ 8.1 КБ | Просмотров: 3694 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 янв 2011, 12:54 
Не в сети

Зарегистрирован: 04 дек 2006, 21:55
Сообщения: 150
Карма: 0
up


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 янв 2011, 13:02 
Не в сети

Зарегистрирован: 04 дек 2006, 21:55
Сообщения: 150
Карма: 0
Вопрос к разработчикам:

Приведенный в wiki пример кода - работает правильно и ошибка у меня? или в 5.1 что-то изменилось, и данный код не работает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2011, 12:24 
Не в сети

Зарегистрирован: 04 дек 2006, 21:55
Сообщения: 150
Карма: 0
up


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.037s | 31 Queries | GZIP : On ]