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

Npay или Subscriptions
http://forum.bitel.ru/viewtopic.php?f=60&t=8770
Страница 1 из 2

Автор:  borisk [ 14 дек 2013, 19:52 ]
Заголовок сообщения:  Npay или Subscriptions

Добрый день!

Столкнулся с дилеммой. Начальство хочет некой свободы в абонплатах. Пока конечно относительной: месяц, квартал, год. И вроде бы все хорошо, можно использовать подписки, если бы не одно но. Нет, увы функционала "блокировка договора по недостатку средств". И что делать - на npay очень специфичный и написанные под конкретного заказчика квартальный режим, а subscription не блокирует договор. Господа, может все же можно довести какой-нибудь модуль до ума? Мне кажется, что у subscription большой потенциал и задумка хорошая, может прикрутить к нему возможность блокировки договора?

Автор:  skn [ 14 дек 2013, 22:52 ]
Заголовок сообщения:  Re: Npay или Subscriptions

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

Автор:  borisk [ 16 дек 2013, 10:11 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Прошу прощения за нескромный вопрос, а где об этом прочитать в документации?

Автор:  dimOn [ 16 дек 2013, 13:02 ]
Заголовок сообщения:  Re: Npay или Subscriptions

про модуль: http://bgbilling.ru/v6.0/doc/ch30.html
по классам и событиям (см. ru.bitel.bgbilling.modules.subscription.*): http://bgbilling.ru/v6.0/javadoc/index.html

Автор:  borisk [ 16 дек 2013, 13:27 ]
Заголовок сообщения:  Re: Npay или Subscriptions

По модулю то понятно. По классам - документации то как раз и нет, приходится строить догадки :)
В http://bgbilling.ru/v6.0/javadoc/ru/bitel/bgbilling/modules/subscription/server/event/package-summary.html "описаны" всего 3 события! Хотя судя по общему индексу, их больше.

Теперь собственно самый главный вопрос - а как мне пригодятся эти события? Описания которое из них и когда возникает нет. Вот практический вопрос - создаю я ежемесячную подписку. При ее активации получу SubscriptionActivateEvent? Когда заканчивается срок подписки получаем SubscriptionRegistrationPeriodEndEvent? Хорошо. Тогда автопродление подписки должно генерировать два события PeriodEnd и ActivateEvent? А как, в случае PeriodEnd узнать будет продляться подписка дальше или нет?

Автор:  skn [ 16 дек 2013, 16:51 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
При ее активации получу SubscriptionActivateEvent?


да

borisk писал(а):
Когда заканчивается срок подписки получаем SubscriptionRegistrationPeriodEndEvent?


да

borisk писал(а):
Тогда автопродление подписки должно генерировать два события PeriodEnd и ActivateEvent


да

borisk писал(а):
А как, в случае PeriodEnd узнать будет продляться подписка дальше или нет?


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

Автор:  borisk [ 16 дек 2013, 17:38 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Так ведь SubscriptionManager нет :( Получается по базе лазать? Или все же реализуете?

Автор:  skn [ 16 дек 2013, 18:58 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Так ведь SubscriptionManager нет :( Получается по базе лазать? Или все же реализуете?


см. SubscriptionUtils

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

Автор:  borisk [ 16 дек 2013, 21:05 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Мысль понял, спасибо, обдумаю.

Автор:  borisk [ 16 дек 2013, 21:07 ]
Заголовок сообщения:  Re: Npay или Subscriptions

skn писал(а):
см. SubscriptionUtils


Где смотреть? :) В доке не нашел такого класса.

Автор:  skn [ 16 дек 2013, 21:13 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
skn писал(а):
см. SubscriptionUtils


Где смотреть? :) В доке не нашел такого класса.


http://bgbilling.ru/v6.0/javadoc/ru/bit ... frame.html

Автор:  borisk [ 16 дек 2013, 22:41 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Совсем забыл немаловажный вопрос. А как у подписок обстоят дела с переобсчетами? Т. е. есть ли у них этот аналог Npay (зависимость наработки от статуса договора)?

Автор:  skn [ 16 дек 2013, 23:53 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Совсем забыл немаловажный вопрос. А как у подписок обстоят дела с переобсчетами? Т. е. есть ли у них этот аналог Npay (зависимость наработки от статуса договора)?


переобсчетов нету, по нескольким причинам
1) так как период подписки может быть произвольным, например год, и стоимость подписки снимается при ее активации, то что делать при переобсчете, править баланс годовой давности и изменять балансы всех месяцев до текущего?
2) подписки активируются только при положительном балансе, например имеем дневные подписки и по ошибке в тарифе указали стоимость 1 руб день вместо 10 руб.
У клиента с 1 по 15 число месяца активировалось 15 периодов и списалось 15 руб. Мы запускаем перерасчет... Что должно произойти? клиенту начилить 150 руб и загнать его в минус? или создать несколько периодов пока баланс положительный, а остальные периоды удалить? Но клиент в удаленные периоды пользовался услугой... К тому же при перерасчете на начало очередного периода мы не знаем какой баланс был на тот период (хватало ли денег на новый период)...

про зависимость наработки и статуса не понял.

Автор:  borisk [ 17 дек 2013, 09:45 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Я имел в виду пропорциональное начисление. Договор закрыт пол-месяца, значит только за пол-месяца и начисляем. Эх, и что же делать то. Нужен, по сути, механизм Npay, но с возможностью произвольных периодов subscriptions.

Автор:  skn [ 17 дек 2013, 13:08 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Я имел в виду пропорциональное начисление. Договор закрыт пол-месяца, значит только за пол-месяца и начисляем. Эх, и что же делать то. Нужен, по сути, механизм Npay, но с возможностью произвольных периодов subscriptions.


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

Автор:  borisk [ 17 дек 2013, 14:30 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Звучит здраво. Но тут сразу же следует предусмотреть вариант "безусловной" подписки. То есть не важно, закрыл ты ее до срока или нет, но сумма списалась вся. Ну и самый главный вопрос - а, собственно, когда планируется такая реализация? :)

P.S. И, наверное уже даже догадываюсь, что такие вопросы будут - а зависимость подписки от наработки в других модулях не планируется? Ибо если планировать модуль подписки как замену абонплатам, то это тоже понадобится.

Автор:  skn [ 17 дек 2013, 17:29 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Звучит здраво. Но тут сразу же следует предусмотреть вариант "безусловной" подписки. То есть не важно, закрыл ты ее до срока или нет, но сумма списалась вся. Ну и самый главный вопрос - а, собственно, когда планируется такая реализация? :)


1) насчет "безусловной" можно подумать... Там есть еще более сложные ситуации, например если провайдер дает скидки при оплате вперед за определенный период, а клиент разрывает договор раньше срока, вопрос должен ли провайдер возвращать неизрасходованную часть, а если должен то как ее расчитать.
2) по поводу сроков сложно сказать, механизм резервирования штатно есть начиная с 6.1, в 6.0 надо как то костылить, например с помощью перетираемых расходов... :-(

borisk писал(а):
P.S. И, наверное уже даже догадываюсь, что такие вопросы будут - а зависимость подписки от наработки в других модулях не планируется? Ибо если планировать модуль подписки как замену абонплатам, то это тоже понадобится.


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

Автор:  borisk [ 17 дек 2013, 19:07 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Я собственно и не решал, что модуль подписки должен быть вместо абонплаты. Тем более что ранее вы уже об этом писали. Собственно поэтому тему эту и завел, что мне, по сути нужна абонплата. Но модуль Npay в существующем виде мне не подходит. Вот я и начал искать альтернативы. Модуль подписки весьма инетересен, и может быть даже поможет решить мою конкретную задачу, но, вы правы, это не абонплаты. Пойду пообщаюсь в ветке npay, может там что-нибудь подскажут.

Автор:  borisk [ 11 май 2015, 14:24 ]
Заголовок сообщения:  Re: Npay или Subscriptions

И снова хочется вернуться к этой теме. Все так же пытаюсь применить subscriptions вместо npay. Есть определенные трудности. Уважаемые разработчики, может подскажете?

Самая главная трудность в том, что subscriptions не реагирует на состояние договора, как другие модули. То бишь для него единственный критерий это наличие средств. Для обхода этой ситуации (по консультации с вами в параллельной теме) был использован механизм резерва. Подписки у меня все заканчиваются на границе дня, поэтому был написан скрипт, анализирующий хватает ли средств для активации всех подписок на следующий день, и если не хватает, то договор переводится в статус "приостановлен" (для корректной работы других модулей) и сумма баланса переносится на резерв.
Написан обработчик события прихода платежа, который проверяет достаточно ли средств для активации всех подписок, и если да, меняет статус договора и возвращает деньги с резерва.
И вот тут кроется (на мой взгляд) подводный камень. Событие PaymentEvent возникает уже после того, как система выполнила все операции с балансом (и, imho, после того как вызвано событие ContractBalanceChangedEvent). А подписки (опять таки imho) реагируют именно на ContractBalanceChangedEvent??? Иначе как подписка активируется (если стоит флаг автопродления) в момент прихода средств? Т. е. может возникнуть ситуация, когда у нас для активации всех подписок требуется 100 рублей, но для активации одной из подписок достаточно 50 рублей. Пользователь положил на баланс 60 рублей и одна из подписок активировалась. Увы, мне же требуется чтобы все подписки активировались одной и той же датой.
Можете более подробно описать механизм активации подписок? Ибо я в тупике. Самый замечательный выход, конечно, если вы реализуете реагирование модуля subscriptions на состояние договора. Другой вариант - если бы существовало событие активации подписки возникающее _до_ ее реальной активации, и в этом событии мы могли бы отменять активацию.

Автор:  skn [ 12 май 2015, 01:58 ]
Заголовок сообщения:  Re: Npay или Subscriptions

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

Автор:  borisk [ 12 май 2015, 09:01 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Про одну подписку - однозначно не вариант.
Про автопродление - подумаю.

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

Автор:  borisk [ 12 май 2015, 09:12 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Просто ладно у меня на границе дня подписки заканчиваются, а если у кого-то вообще произвольные будут? IMHO должен быть какой-то сдерживающий фактор для подписок кроме баланса. И событие "запрос учетного периода" как в Inet мне видится лучшим вариантом.

Автор:  skn [ 13 май 2015, 00:32 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Просто ладно у меня на границе дня подписки заканчиваются, а если у кого-то вообще произвольные будут? IMHO должен быть какой-то сдерживающий фактор для подписок кроме баланса. И событие "запрос учетного периода" как в Inet мне видится лучшим вариантом.


запрос какого периода? подписка сама и является задающим периодом...

Автор:  borisk [ 13 май 2015, 11:21 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Погодите, существует событие SubscriptionActivateEvent, возникающее, как я понимаю в момент активации/продления подписки на очередной период. Но, насколько я знаю, для нас это событие исключительно информативное. А вот если бы мы могли им пользоваться по аналогии с InetAccountingPeriodActivateEvent, это было бы здорово.

Автор:  skn [ 13 май 2015, 18:34 ]
Заголовок сообщения:  Re: Npay или Subscriptions

вы бы описали задачу целиком, а так не понятно что и зачем хотите.

Автор:  borisk [ 13 май 2015, 21:18 ]
Заголовок сообщения:  Re: Npay или Subscriptions

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

Автор:  skn [ 14 май 2015, 03:45 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Абонплата одна?

Автор:  stark [ 14 май 2015, 13:06 ]
Заголовок сообщения:  Re: Npay или Subscriptions

borisk писал(а):
Так это продолжение темы. Ищем способ реализации "плавающей" абонплаты. То есть абонплата начилсяется в выбранный абонентом день. Если у абонента нет денег на счету, договор приостанавливается. При поступлении денег на счет датой начисления абонплаты становится это новое число и так по кругу. Деньги за услуги должны списываться сразу в полном объеме в день начисления абонплаты. Денежная компенсация невостребованных услуг не предусматривается.


Т.е вам нужно что-то вроде механизма дебетовых абонпат, но для подписок.

Автор:  borisk [ 14 май 2015, 13:18 ]
Заголовок сообщения:  Re: Npay или Subscriptions

Ну да, об этом и тред :) И вот всем подписки подходят под эту реализацию, кроме того, что их никак "не остановить" кроме как балансом. Вот и прошу какой-нибудь механизм для этого.

Автор:  borisk [ 14 май 2015, 13:21 ]
Заголовок сообщения:  Re: Npay или Subscriptions

skn писал(а):
Абонплата одна?

Нет, может быть несколько. Например за собственно услугу инета и + выделенный IP.
Но поведение у всех одно - все абонплаты стартуют и останавливаются синхронно, реагируя на статус договора.

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