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/ |