BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 11 дек 2009, 17:01 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
Итак простая задача смены тарифа через веб, моментально превратилась для меня в tarpit, когда стало необходимо применять новый тариф со дня +1 конец существующего учётного периода модуля Dialup.

Казалось бы всё просто. Перехватываем из ChangeTariffByTaskEvent FromDate меняем её на день +1 конец учётного периода и всё шоколадно. Так?

Оказалось всё не так просто. Последний день учётного периода можно получить (другого метода я просто не нашёл) из OpenPeriodRequestEvent getPeriodEnd...

Возникает вопрос, какую сущность надо дёргать чтобы в переменной получить этот самый день конца учётного периода?

Что читать куды бечь...
паника-паника-паника.

Можно конечно еще через GetChangeTariffDatesEvent setDateList поставить нужные нам даты учётного периода, но вот вопрос блин где ж и как ж их таки взять.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2009, 17:48 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
http://dbinfo.bitel.ru/
Как минимум дату окончания последнего периода можно взять в таблице calculate_period_{mid}


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

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
Проблема решилась через CalculatePeriodManager и GetChangeTariffDatesEvent следующим образом:
Код:
import bitel.billing.server.dialup.bean.event.*;
import bitel.billing.server.dialup.bean.*;
import bitel.billing.common.*;
import java.util.*;

cid = event.getContractID();
cpm = new CalculatePeriodManager(con, 3);
num = cpm.getPeriodList(cid);
numsize = num.size() - 1;
date = cpm.getPeriodList(cid).get(numsize).getEnd().getTime();
date = (Date)date.clone();
date.setDate(date.getDate()+1 );
list = new ArrayList();
list.add(date);

event.setDateList(list);


Единственное, что напрягает в данном случае это deprecated методы setDate и getDate. Но GetChangeTariffDatesEvent.setDateList(), работает с java.util.Date, поэтому от этого пока никуда не уйти, пока не перепишут метод или моё ява-фу не наберет еще пару уровней.

Администратор, спасибо, но брать для скрипта параметр из sql запроса это по-моему слегка громоздко.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 17:32 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
Код:
import bitel.billing.server.dialup.bean.event.*;
import bitel.billing.server.dialup.bean.*;
import bitel.billing.common.*;
import java.util.*;

tu = new TimeUtils();
cid = event.getContractID();
cpm = new CalculatePeriodManager(con, 3);
num = cpm.getPeriodList(cid);
numsize = num.size() - 1;
print("Size:"+ numsize);
print("End period:"+cpm.getPeriodList(cid).get(numsize).getEnd().getTime());
date = cpm.getPeriodList(cid).get(numsize).getEnd().getTime();
date = (Date)date.clone();
date = tu.convertDateToCalendar(date);
date = tu.getNextDay(date);
date = tu.convertCalendarToDate(date);
list = new ArrayList();
list.add(date);

event.setDateList(list);

Благодаря множественным подсказкам таки ушел от неправильных переменных.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 18:11 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
aardvark писал(а):
Код:
cid = event.getContractID();
cpm = new CalculatePeriodManager(con, 3);
num = cpm.getPeriodList(cid);
numsize = num.size() - 1;

а м.б. стоит добавить что-то в духе этого:
Код:
if (num.size() =< 0) {
    weDontHaveRadiusPeriod();
} else {
    numsize = num.size() - 1; // берем последний элемент списка
}

а то ведь у клиента может и не быть периодов вообще


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 дек 2009, 12:37 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
snark угу надо. Пока такие скрипты(где нет учетного периода) вышибает эксепшенами.
И в принципе обычного ретурна после сравнения должно хватить в этом случае.


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

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


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

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


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

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