BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 05:55

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: [6.2] Периоды подписки
СообщениеДобавлено: 23 апр 2015, 13:41 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Добрый день!

Создаю подписку (дневную):
Продолжительность 1 DAY
Задержка 0 SEC
Округление 1 DAY

Смысл - нужна подписка которая активироваться в 00:00 суток и заканчиваться в 23:59. Но, когда я смотрю в периоды подписки, то вижу начало 23.04.2015 00:00:00, окончание 24.04.2015 00:00:00. Это правильно? Я пытаюсь с этой подпиской работать в скрипте, и окончание в следующих сутках напрягает. Может я просто неправильно задал параметры подписки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 23 апр 2015, 15:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
если активироваться должна с 00 часов следующего дня, то задержка нужно поставить 1 DAY
алгоритм такой к моменту активации прибавляется Задержка и обнуляются все поля меньше поля Округление

окончание нормальное, период действует до указанного значения...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 23 апр 2015, 19:02 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Нет, активироваться должна мгновенно, в момент добавления. Но при этом должна действовать до конца дня. При повторной автоактивации - с 00:00 по 23:59.

И самый главный вопрос - моему скрипту надо знать когда закончится текущий период и начнется новый. И как мне тогда правильно сделать эту проверку? Думал через TimeUtils.dateBefore, но, получается, это неправильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 23 апр 2015, 19:16 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Нет, активироваться должна мгновенно, в момент добавления. Но при этом должна действовать до конца дня. При повторной автоактивации - с 00:00 по 23:59

такой режим не предусмотрен...
глупо как то выходит...
например если я активирую за пять минут до полночи, будет списано за пять минут как за целый день...
если вам надо дневной режим то проще использовать простые дневные абонплаты, этот модуль был как раз орентирован на те случаи когда период не привязан к календарным суткам и не равен им.

borisk писал(а):
И самый главный вопрос - моему скрипту надо знать когда закончится текущий период и начнется новый. И как мне тогда правильно сделать эту проверку? Думал через TimeUtils.dateBefore, но, получается, это неправильно?


когда закончиться текущий, это есть в учетном периоде, а когда начнется новый заранее не кто сказать не сможет (в идеале он начнется со следующей секунды, после окончания предыдущего...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 24 апр 2015, 00:40 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Вот почему для тарифной опции это не глупо, а для подписки глупо? :)
Да на самом деле я привел дневную подписку для примера. Идея - я как раз делаю замену модулю абонплат. Потому что учетные периоды в npay вы упорно не хотите реализовывать. Но смысл остается тем же, два дня, неделя, месяц - не важно. Возьмем идеальную ситуацию - у клиента всегда есть деньги на счету. Получается что подписка каждый раз будет сдвигаться на секунду? Или как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 24 апр 2015, 00:52 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Вот почему для тарифной опции это не глупо, а для подписки глупо? :)
Да на самом деле я привел дневную подписку для примера. Идея - я как раз делаю замену модулю абонплат. Потому что учетные периоды в npay вы упорно не хотите реализовывать. Но смысл остается тем же, два дня, неделя, месяц - не важно. Возьмем идеальную ситуацию - у клиента всегда есть деньги на счету. Получается что подписка каждый раз будет сдвигаться на секунду? Или как?


для меня подписка и опция отличаются... ( подписка - периодическая сущность, а опция - разовая )

по поводу сдвига, можете задать продолжительность подписки в секундах (например, количество секунд в сутках минус одна)
а начало периода сдвинуть на 1 MIN и округлить до суток


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 24 апр 2015, 00:56 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Хорошо, вопрос - окончание подписки в этом случае будет каким? 23:59:59 или все же 00:00:00 следующих суток?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 24 апр 2015, 04:10 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Хорошо, вопрос - окончание подписки в этом случае будет каким? 23:59:59 или все же 00:00:00 следующих суток?


сколько секунд укажите столько и будет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 24 апр 2015, 04:16 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Добрый день!

Создаю подписку (дневную):
Продолжительность 1 DAY
Задержка 0 SEC
Округление 1 DAY

Смысл - нужна подписка которая активироваться в 00:00 суток и заканчиваться в 23:59. Но, когда я смотрю в периоды подписки, то вижу начало 23.04.2015 00:00:00, окончание 24.04.2015 00:00:00. Это правильно? Я пытаюсь с этой подпиской работать в скрипте, и окончание в следующих сутках напрягает. Может я просто неправильно задал параметры подписки?


правильно,
если продолжительность задана в днях то 23+1=24
если хотите 23:59, то продолжительность задаете или в минутах 23*60+59=1439 или в секундах (23*60+59)*60=86340


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 10:12 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Вот опять возник вопрос по этой теме. Я все же пока решил оставить подписку как и было в топике:
Цитата:
Создаю подписку (дневную):
Продолжительность 1 DAY
Задержка 0 SEC
Округление 1 DAY


Если у подписки стоит автопродление, то она замечательно сама активируется дальше (см. картинку).
Отключаем автопродление и пытаемся активировать подписку вручную в 00:00 следующих суток (например пробовал сегодня, 25.05 в 00:00), получаем exception:
Цитата:
05-25/07:03:57 ERROR [event-proc-p-2-t-1] ScriptEventListener - java.util.concu
rrent.ExecutionException: java.lang.Exception: ru.bitel.bgbilling.common.BGExce
ption: Активация не возможна, так как на заданое время уже есть активный период
.

Код для ручной активации:
Цитата:
// Активируем все подписки
SubscriptionDao subDao = new SubscriptionDao(connection, SUBSCRIPTION_MID, User.USER_SERVER);
for(Subscription s : subs) {
su.subscriptionActivate(s, activationDate, SUBSCRIPTION_MID, User.USER_SERVER, subDao);
}


activationDate, естественно было 25.05.2015 00:00.
Как же так? Почему автоматически система активирует, а вручную не дает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 12:00 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
конец предыдущего и начало нового периода совпадают, поэтому и не дает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 15:01 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Ключевой вопрос был - почему автоматически система продляет, а вручную не дает :) Какой такой хитрый код у системы? Как же она обходит эту ситуацию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 15:10 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Не говоря уже о том, что subscriptionActivate требует в качестве параметра java.util.Date, у которой все методы уже deprecated.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 15:12 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Ключевой вопрос был - почему автоматически система продляет, а вручную не дает :) Какой такой хитрый код у системы? Как же она обходит эту ситуацию.


автоматическая подписка создает новую подписку со следующей секунды, а не с той с которой закончилась предыдущая как вы при ручном способе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 15:22 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
borisk писал(а):
Не говоря уже о том, что subscriptionActivate требует в качестве параметра java.util.Date, у которой все методы уже deprecated.


не все, а только те которые работали не корректно, без учета часовых поясов и других особенностей локального времени


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 21:04 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Может я не туда смотрю, но в JDK 1.7 остались:
Цитата:
Date()
Date(long)
after()
before()
clone()
compareTo()
equals()


Мне кажется для пользования классом этих функций маловато. То есть класс оставлен чисто как контейнер для совместимости. Все остальное deprecated, use Calendar or DateFormat.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 25 май 2015, 22:26 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Цитата:
но в JDK 1.7 остались:
Мне кажется для пользования классом этих функций маловато. То есть класс оставлен чисто как контейнер для совместимости.
Это примерно с JDK 1.1 т.е. с начала 90-х так. Date это по сути оболочка для численного timestamp, для этого оно и используется там где используется.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 26 май 2015, 10:54 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Все-таки мне не совсем понятно. Параметр initDate, передаваемый в subscriptionActivate - что это? Дата начала нового периода или просто дата возникновения события? Потому что опять у меня ночной скрипт не отработал без каких-либо явных причин. Запустил вручную - период создался 26.05.2015 00:00:00 - 27.05.2015 00:00:00, а вот дата создания 26.05.2015 00:00:01.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] Периоды подписки
СообщениеДобавлено: 26 май 2015, 17:57 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
initDate - дата от которой рассчитывается начало подписки


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

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


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

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


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

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