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