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

Ежемесячное снятие абонентки + блокировка
http://forum.bitel.ru/viewtopic.php?f=16&t=1056
Страница 1 из 2

Автор:  L-ZiX [ 26 апр 2008, 13:03 ]
Заголовок сообщения:  Ежемесячное снятие абонентки + блокировка

Здравствуйте!
Есть тариф доступ в интернет по ADSL - 1000р. с включенным трафиком 1000мб к примеру. Надо настроить так, чтобы перед подключением билинг проверял, снималась ли в этом месяце абонентка или нет, если нет - снять, если да - проверять, исчерпаны ли 1000мб в этом месяце, если нет - пустить, если да, смотреть - есть ли на балансе дополнительные средства на оплату трафика сверх лимита. Причем снятие абонентки должно идти перед подключением, т.к. если клиент месяц не пользовался услугой, то ничего снимать с него не надо.
Реально?

Автор:  Администратор [ 28 апр 2008, 13:06 ]
Заголовок сообщения: 

Данным модулем функционал не реализуем. Можно только сделать снятие абонплаты по факту входа клиента, но тогда человек после первого входа уйдет в минус.
Но можно в DialUp модуле сделать скрипт открытия учетного периода, чтобы он сажал расход.
Здесь есть пример, но там договор UNLIM..
http://wiki.bgbilling.ru/index.php/%D0% ... reeBSD_MPD
А вам нужно период открывать до конца месяца. Ну и тарифном плане: первые 1000 Мб за учетный период - 0 руб, последующие - по сколько-то там..

Автор:  L-ZiX [ 28 апр 2008, 16:40 ]
Заголовок сообщения: 

Ок. Тогда можно ли сделать так, чтоб первого числа каждого месяца модуль абонплат снимал сумму абонплаты, если не получилось, то пробовать еще раз через час/сутки. И пока он не снимет эту сумму, услуга не будет предоставлена?

Автор:  Администратор [ 28 апр 2008, 16:57 ]
Заголовок сообщения: 

Если сделаете по схеме с учетным периодом, то снимать будет не в начале месяца, а по первому входу. Вы же сами сказали, что если не входил, то снимать не нужно. А в начале месяца как узнать будет он входить или нет?

Автор:  L-ZiX [ 28 апр 2008, 17:37 ]
Заголовок сообщения: 

Наличие входа уже не так важно. Пусть всегда снимает, или пишет письмо что в следующем месяце не будет пользоваться.

Автор:  Администратор [ 29 апр 2008, 13:18 ]
Заголовок сообщения: 

Если наличие входа не важно - просто поставьте ему абонку 1000 рублей и сделайте тариф что 1000 Мб бесплатно, а далее по цене. Стандартное решение..

Автор:  L-ZiX [ 30 апр 2008, 09:38 ]
Заголовок сообщения: 

А модуль абонплат просто снимает нужную сумму и всё тут? Т.е. не смотрит, положительный там баланс или отрицательный?

Автор:  L-ZiX [ 12 май 2008, 00:09 ]
Заголовок сообщения: 

Ответьте пожалуйста, это очень важно!

Автор:  Администратор [ 12 май 2008, 17:24 ]
Заголовок сообщения: 

Да, просто снимает. Баланс - явление сиюминутное.
А как произвести, например, переначисление абонплат за месяц, невозможно ведь сказать в какой момент был какой баланс.

Автор:  L-ZiX [ 14 май 2008, 09:19 ]
Заголовок сообщения: 

Согласен с Вами. Но разве сложно сделать проверку наличия снимаемой суммы перед снятием? И если нет ей, значит блокировать модуль в договоре, за который снимается абонплата. Почему так не сделать?
Просто я не хочу следить за договорами или еще как-то влиять. Нет денег 1 числа - отключение услуги. Как пополнил баланс - появилась услуга. И планировщик к этому делу прикрутить на каждый час, пусть проверяет, не закинули ли денег. У нас же применяется модуль карточек, всё автоматизировано. Поэтому - поэтому.

Автор:  Администратор [ 14 май 2008, 14:18 ]
Заголовок сообщения: 

Вы можете реализовать данный функционал скриптами:
1) На событие таймера, генерируемое в начале месяца приделайте обработчик, проверяющий баланс и, например, списывающий расход, если баланс достаточен. Если нет - пусть блокирует логин.
2) На событие платежа приделайте обработчик, разблокирующий логин, если поступивших средств достаточно на абонплату. Ну и сразу списывающий его.
От модуля абонплат вообще откажитесь - заносите расход.
Проверку баланса в модуле абонплат делать не будем, т.к. это нелогично.

Автор:  L-ZiX [ 15 май 2008, 09:53 ]
Заголовок сообщения: 

Могу я оплатить Ваше время на создание этих скриптов?

Автор:  Администратор [ 16 май 2008, 14:20 ]
Заголовок сообщения: 

Никто из форумчан не возьмется? У нас плохо со временем. Но если никого больше не найдете - пишите billing@bitel.ru, сделаем.

Автор:  L-ZiX [ 25 май 2009, 16:43 ]
Заголовок сообщения: 

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

Автор:  ЛИС [ 25 май 2009, 17:24 ]
Заголовок сообщения: 

Не хотелось бы скриптами.... По опыту знаю, что скриптами не стабильно очень!
Надо уговаривать добавить функционал. Может скинемся?)

Автор:  L-ZiX [ 26 май 2009, 01:56 ]
Заголовок сообщения: 

Вполне может :)

Автор:  corban [ 26 май 2009, 16:02 ]
Заголовок сообщения: 

Если тема интересна могу выложить скрипты, которые работают у нас в соответствии со схемой:

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

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

Автор:  L-ZiX [ 26 май 2009, 16:53 ]
Заголовок сообщения: 

Очень интересно. Выложите пожалуйста. Желательно с краткой аннотацией что к чему.

Автор:  corban [ 26 май 2009, 19:49 ]
Заголовок сообщения: 

Выложил в WiKi

Автор:  L-ZiX [ 26 май 2009, 21:00 ]
Заголовок сообщения: 

Спасибо огромное, буду разбираться

Автор:  akubik [ 21 сен 2009, 00:44 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Подскажите, пожалуйста, а может данные скрипты требуют какой-то дополнительной настройки? Прикрутил я их к одному пробному договору (модуль Диалап), настроил в планировщике задач, как и было оговорено. В тарифном плане было настроено поддерево абонентских плат. Но несмотря на отсутствие средств на счету планировщик отказывается приостанавливать договор.
error.log совершенно чист, в script.log ошибок так же не обнаружено. status выдает следующее -
Код:
billing:/usr/local/BGBillingServer # ./scheduler_status.sh
Sending 'status' on 127.0.0.1:9066
Result: TaskExecuter working
Started: 21.09.2009 00:23:56    Uptime: 0 d 00:03:58
Memory total: 5 177 344; max: 266 403 840; free: 1 827 352
Trees in cache: 0
Connections pool to Master status Idle: 3; Active: 0; maxActive: 300; maxIdle: 20


логи шедулера
Код:
09-21/00:35:02  INFO [main] DefaultServerSetup - Init DB connection pools
09-21/00:35:03  INFO [main] DefaultServerSetup - Init trash pools..
09-21/00:35:03  INFO [main] TaskExecuter - Start TaskExecuter
09-21/00:35:04  INFO [Thread-5] TaskExecuter - TaskExecuter => reloadTasks()
09-21/00:35:04  INFO [Thread-5] TaskExecuter - Task: bitel.billing.server.script.TimerEventGenerate
09-21/00:35:04  INFO [Thread-5] TaskExecuter - Task: bitel.billing.server.npay.Calculator
09-21/00:35:04  INFO [Thread-5] TaskExecuter - Starting periodic taks ID: 2 bitel.billing.server.script.TimerEventGenerate
09-21/00:35:04  INFO [Thread-5] TaskExecuter - Starting periodic taks ID: 3 bitel.billing.server.npay.Calculator
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 166; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-2] Calculator - Calculate current month
09-21/00:35:04  INFO [pool-2-thread-2] Setup - Load config for mid=6
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 848; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 806; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 788; module: 0; type: 3
09-21/00:35:04  INFO [Thread-12] TaskExecuter - TaskExecuter => reloadTasks()
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 817; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 690; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 529; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 819; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 772; module: 0; type: 3
09-21/00:35:04  INFO [Thread-12] TaskExecuter - Task: bitel.billing.server.script.TimerEventGenerate
09-21/00:35:04  INFO [Thread-12] TaskExecuter - Task: bitel.billing.server.npay.Calculator
09-21/00:35:04  INFO [Thread-12] TaskExecuter - TaskExecuter => reloadTasks()
09-21/00:35:04  INFO [pool-2-thread-2] Calculator - Memory total: 5 177 344; max: 266 403 840; free: 2 232 744
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 640; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 629; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-2] Calculator - Setting balances for independ and subs..
09-21/00:35:04  INFO [Thread-12] TaskExecuter - Task: bitel.billing.server.script.TimerEventGenerate
09-21/00:35:04  INFO [Thread-12] TaskExecuter - Task: bitel.billing.server.npay.Calculator
09-21/00:35:04  INFO [pool-2-thread-1] EventProcessor - Add event to queue Event bitel.billing.server.script.bean.event.TimerEvent cid: 168; module: 0; type: 3
09-21/00:35:04  INFO [pool-2-thread-2] Calculator - Task finished time=219 ms.

Автор:  akubik [ 21 сен 2009, 00:45 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

вывод шедулера
Код:
Checking port 9066...
Port is free starting the applicalion...
Starting TEProccessManager on 9066
Creating socket on 9066
Executing status

Автор:  Администратор [ 22 сен 2009, 12:37 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

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

Автор:  akubik [ 22 сен 2009, 23:35 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Все указанные условия выполняются. В логах выполнения скриптов события этих скриптов указаны.

Автор:  akubik [ 22 сен 2009, 23:51 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Код:
GENERATE_TIME: 22.09.09 23:40:04
EXECUTION_STOP_TIME: 22.09.09 23:40:06
PROCESS_TIME: 53

OUT:
StatusContract.getStatus():0


ERROR:


EXCEPTIONS:


WARNINGS:

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

Автор:  akubik [ 23 сен 2009, 16:55 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Логи выполнения -
Код:
OUT:
cid:2235
StatusContract.getStatus():0
contract_groups = 2
balance = 0.0
limit = 0.0
fbm = 1; bm = 1
sid:1
mid:1
sid:7
mid:1
sid:9
mid:1
sid:10
mid:4
sid:11
mid:4
sid:12
mid:4
sid:2
mid:2
totalCost = 0
??? OK!
ERROR:
EXCEPTIONS:
WARNINGS:
Function [id:4; title:Приостановка договоров]: using deprecated method [public float bitel.billing.server.contract.bean.BalanceUtils.getBalance(java.util.Calendar,int)]
Function [id:4; title:Приостановка договоров]: using deprecated method [public float bitel.billing.server.contract.bean.Contract.getLimit()]



Почему-то в списке модулей в скрипте выводятся совершенно левые номера модулей и услуг. На самом деле в договоре присутствуют только два модуля: 4(Dial-Up) && 6(N-Pay).

Автор:  akubik [ 23 сен 2009, 21:58 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Если кто не понял
mid: 4
mid: 4
mid: 1
...
- это вывод номеров модулей услуг для данного договора. По крайней мере то, что выдает getContractServiceList(). Хотя там должна быть услуга модуля N-Pay (у меня №6).

Автор:  akubik [ 24 сен 2009, 03:01 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

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

Код:
OUT:
cid:2220
StatusContract.getStatus():0
contract_groups = 4
balance = 0.0
limit = 0.0
fbm = 1; bm = 1
sid:7
mid:1
sid:9
mid:1
sid:10
mid:4
sid:11
mid:4
sid:12
mid:4
sid:2
mid:2
sid:1
mid:1
totalCost = 0
??? OK!
ERROR:
EXCEPTIONS:
WARNINGS:
Function [id:4; title:Приостановка договоров]: using deprecated method [public float bitel.billing.server.contract.bean.BalanceUtils.getBalance(java.util.Calendar,int)]
Function [id:4; title:Приостановка договоров]: using deprecated method [public float bitel.billing.server.contract.bean.Contract.getLimit()]

Автор:  akubik [ 24 сен 2009, 14:12 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

Ответит хоть кто-нибудь?

Автор:  corban [ 24 сен 2009, 16:17 ]
Заголовок сообщения:  Re: Ежемесячное снятие абонентки + блокировка

В версии 4.6 изменился принцип работы с услугами модуля NPay - требуется корректировка скрипта. Постараюсь выложить на выходных скрипт для 4.6.

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