BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
СообщениеДобавлено: 04 май 2012, 22:22 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Добрый день.
Периодически натыкаюсь на моменты, когда вроде бы рабочая функция, считает размер АП не так как обычно.
К примеру вот такая функция расчета стоимости месячной АП абонента:

Код:
private double getCost(setup, int cid)
{
      Calendar dt = new GregorianCalendar();
      dt.add(Calendar.MONTH,1);   
      dt.set(Calendar.DAY_OF_MONTH ,dt.getActualMaximum(Calendar.DAY_OF_MONTH));
      Calculator calculator = new Calculator();
      print(TimeUtils.convertCalendarToDateString(dt));
      calculator.setExecutingTime(dt);
      calculator.setPreCalc();
      calculator.initTask(setup, 0, "mid=2");
      calculator.setCids(""+cid);
      print("cid="+cid);
      calculator.startTask();
      print ("isCalcErrors="+calculator.isCalcErrors());
      BigDecimal planAccount = BigDecimal.ZERO;
      if (!calculator.isCalcErrors()) {
        Map planAccountMap = calculator.getCostCache().getContractAccounts();
        planAccount =ru.bitel.common.Utils.maskNull((BigDecimal)planAccountMap.get(cid));
        //print(planAccount);
      }

   res =planAccount.doubleValue();
   return  res;
}


Должна возвращать размер АП за месяц, но периодически возвращает размер АП за 1 день. Тариф один и тот же - с помесячным списание пропорционально периоду.

Вот лог использования данной функции (АП = 499р/мес):

Код:
OUT:
isValidAction=true
Flag=null
2012-06-30
cid=3522
isCalcErrors=false
bonus_summ=16.63


Почему? И самое главное - как однозначно посчитать величину месячной АП в соответствии с тарифом абонента?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 10:27 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mikos писал(а):
Вот лог использования данной функции (АП = 499р/мес):

bonus_summ=16.63[/code]

Почему? И самое главное - как однозначно посчитать величину месячной АП в соответствии с тарифом абонента?


499р/30=16,63. Что не так ? Кстати не вижу в скрипте где у вас выводиться bonus_summ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 12:21 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
То есть, каклькулятор при месячных тарифах расчитывает стоимость ОДНОГО дня, а не месяца? Потому как я уже писал, что сталкивался с тем, что данный скрипт выдает сумму то за месяц в сумме, то за день.

PS: На bonus_summ не обращайте внимание. Оно формируется в соответствии с выводом данной функции getCost(setup, int cid)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 13:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
а может у вас разные тарифы? с подневной и помесячной абонплатой? у вас во всех тарифах раз в день списание?

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
У меня все тарифы с ПОМЕСЯЧНЫМ списанием.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2012, 14:49 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
скрин дерева тарифов где все нормально и где показывается дневная можно?

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Расчет был произведен указанным образом viewtopic.php?f=16&t=6753#p52238 на тарифе скрин которого прилагаю. Все тарифы с месячными списанием пропорционально периоду.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 17:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
mikos определяется месячная АП по тарифу???
можно полный код?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 17:48 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Так этот код из первого поста и используется. Ничего нового при расчете - только эта функция.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 17:51 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
skyb писал(а):
mikos определяется месячная АП по тарифу???
можно полный код?

Да, определяется величина АП за месяц.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 17:56 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
mikos
skyb писал(а):
можно полный код?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:04 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
skyb писал(а):
mikos
skyb писал(а):
можно полный код?


Код:
      // вычисляем бонус... равный стоимости месячного тарифа
      bonus_summ = getCost(setup,cid);
      print("bonus_summ=" + bonus_summ + "\n");
      // проверяем сумму платежа
      p = event.getPayment();
      BigDecimal paySumma = p.getSumma();
      print("paySumma="+paySumma);
      // зачисляем бонус только на платеж как минимум равный стоимости тарифа
      if ( paySumma >= bonus_summ ) {
         // Заносим сумму bonus_summ на счет абоненту
            print( "Add bonus " + bonus_summ + "р. for next month" );
         doPayment2( con, cid, PAYMENT_TYPE_BONUS, bonus_summ, DateNow, "Второй месяц в подарок");
         // Отмечаемся, для предотвращения повторного использования
         cpu.setFlagParam(cid,PARAM_FLAG,true);
      } else {
         print("Недостаточный первоначальный платеж. Бонус не начисляется!");
      }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:11 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
тоесть определение абонплаты по ТП всеголишь bonus_summ = getCost(setup,cid); О_о чет нето О-о

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:22 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Ну почему же не то? Вызывается функция, которой передаем cid, которая должна выдать величину АП за текущий месяц. Эта сумма и является бонусом. Но вместо размера АП за месяц, получаем почему-то размер АП за 1 день. Именно это я и пытаюсь понять.

Вот функция из первого поста.

Код:
private double getCost(setup, int cid)
{
      Calendar dt = new GregorianCalendar();
      dt.add(Calendar.MONTH,1);   
      dt.set(Calendar.DAY_OF_MONTH ,dt.getActualMaximum(Calendar.DAY_OF_MONTH));
      Calculator calculator = new Calculator();
      print(TimeUtils.convertCalendarToDateString(dt));
      calculator.setExecutingTime(dt);
      calculator.setPreCalc();
      calculator.initTask(setup, 0, "mid=2");
      calculator.setCids(""+cid);
      print("cid="+cid);
      calculator.startTask();
      print ("isCalcErrors="+calculator.isCalcErrors());
      BigDecimal planAccount = BigDecimal.ZERO;
      if (!calculator.isCalcErrors()) {
        Map planAccountMap = calculator.getCostCache().getContractAccounts();
        planAccount =ru.bitel.common.Utils.maskNull((BigDecimal)planAccountMap.get(cid));
        //print(planAccount);
      }

   res =planAccount.doubleValue();
   return  res;
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:26 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
mikos дык почему и просил полностью код, мене просто необходимо определить АП по ТП, все не могу, а где в этом коде упоминание о ТП? чтоб знать, нужно получить в переменную для каждого tarifftree свою сумму АП =)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:38 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Так у договора есть ведь привязанный ТП. Вот по нему и определяется.
Есть мысли почему оно расчитывает при таком ТП величину за 1 день, вместо месяца?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 май 2012, 12:52 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
А что со статусам договора в это период ? Они не менялись? сам тариф никак не менялся? Есть ощущение что насчитали вначеле за 29 дней , потом что-то поменялось например статус и насчитали уже за 30 дней . Поэтому разница получилась в один день


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 май 2012, 17:08 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Возможно. Но как так вышло не понятно.
Статусы прилагаю в аттаче. А тариф этот был с 03.04.2012, то есть не самого начала месяца. Это единственный тариф.
Абонплата стоит с 04.04.2012.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 май 2012, 11:34 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
а наработка какая была по абонплатам ? и какая была на момент запуска скрипта ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 май 2012, 15:15 
Не в сети
Клиент

Зарегистрирован: 28 окт 2008, 20:10
Сообщения: 259
Откуда: Махачкала
Карма: 6
mikos писал(а):
Возможно. Но как так вышло не понятно.
Статусы прилагаю в аттаче. А тариф этот был с 03.04.2012, то есть не самого начала месяца. Это единственный тариф.
Абонплата стоит с 04.04.2012.

Сам столкнулся
http://forum.bgbilling.ru/viewtopic.php?p=44876#p44876


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

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


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

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


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

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