forum.bitel.ru
http://forum.bitel.ru/

BGBS: Стоимость АП по текущему тарифу абонента
http://forum.bitel.ru/viewtopic.php?f=16&t=6753
Страница 1 из 1

Автор:  mikos [ 04 май 2012, 22:22 ]
Заголовок сообщения:  BGBS: Стоимость АП по текущему тарифу абонента

Добрый день.
Периодически натыкаюсь на моменты, когда вроде бы рабочая функция, считает размер АП не так как обычно.
К примеру вот такая функция расчета стоимости месячной АП абонента:

Код:
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


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

Автор:  stark [ 05 май 2012, 10:27 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

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

bonus_summ=16.63[/code]

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


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

Автор:  mikos [ 05 май 2012, 12:21 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

То есть, каклькулятор при месячных тарифах расчитывает стоимость ОДНОГО дня, а не месяца? Потому как я уже писал, что сталкивался с тем, что данный скрипт выдает сумму то за месяц в сумме, то за день.

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

Автор:  Yarlan Zey [ 05 май 2012, 13:14 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

а может у вас разные тарифы? с подневной и помесячной абонплатой? у вас во всех тарифах раз в день списание?

Автор:  mikos [ 05 май 2012, 14:14 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

У меня все тарифы с ПОМЕСЯЧНЫМ списанием.

Автор:  Yarlan Zey [ 05 май 2012, 14:49 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

скрин дерева тарифов где все нормально и где показывается дневная можно?

Автор:  mikos [ 10 май 2012, 17:38 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

Расчет был произведен указанным образом viewtopic.php?f=16&t=6753#p52238 на тарифе скрин которого прилагаю. Все тарифы с месячными списанием пропорционально периоду.

Автор:  skyb [ 10 май 2012, 17:41 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

mikos определяется месячная АП по тарифу???
можно полный код?

Автор:  mikos [ 10 май 2012, 17:48 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

Так этот код из первого поста и используется. Ничего нового при расчете - только эта функция.

Автор:  mikos [ 10 май 2012, 17:51 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

skyb писал(а):
mikos определяется месячная АП по тарифу???
можно полный код?

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

Автор:  skyb [ 10 май 2012, 17:56 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

mikos
skyb писал(а):
можно полный код?

Автор:  mikos [ 10 май 2012, 18:04 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

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("Недостаточный первоначальный платеж. Бонус не начисляется!");
      }

Автор:  skyb [ 10 май 2012, 18:11 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

тоесть определение абонплаты по ТП всеголишь bonus_summ = getCost(setup,cid); О_о чет нето О-о

Автор:  mikos [ 10 май 2012, 18:22 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

Ну почему же не то? Вызывается функция, которой передаем 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;
}

Автор:  skyb [ 10 май 2012, 18:26 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

mikos дык почему и просил полностью код, мене просто необходимо определить АП по ТП, все не могу, а где в этом коде упоминание о ТП? чтоб знать, нужно получить в переменную для каждого tarifftree свою сумму АП =)

Автор:  mikos [ 10 май 2012, 18:38 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

Так у договора есть ведь привязанный ТП. Вот по нему и определяется.
Есть мысли почему оно расчитывает при таком ТП величину за 1 день, вместо месяца?

Автор:  stark [ 12 май 2012, 12:52 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

А что со статусам договора в это период ? Они не менялись? сам тариф никак не менялся? Есть ощущение что насчитали вначеле за 29 дней , потом что-то поменялось например статус и насчитали уже за 30 дней . Поэтому разница получилась в один день

Автор:  mikos [ 12 май 2012, 17:08 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

Возможно. Но как так вышло не понятно.
Статусы прилагаю в аттаче. А тариф этот был с 03.04.2012, то есть не самого начала месяца. Это единственный тариф.
Абонплата стоит с 04.04.2012.

Автор:  stark [ 14 май 2012, 11:34 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

а наработка какая была по абонплатам ? и какая была на момент запуска скрипта ?

Автор:  Brodayga [ 25 май 2012, 15:15 ]
Заголовок сообщения:  Re: BGBS: Стоимость АП по текущему тарифу абонента

mikos писал(а):
Возможно. Но как так вышло не понятно.
Статусы прилагаю в аттаче. А тариф этот был с 03.04.2012, то есть не самого начала месяца. Это единственный тариф.
Абонплата стоит с 04.04.2012.

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

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/