BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 26 апр 2008, 13:03 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 13:06 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 16:40 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Ок. Тогда можно ли сделать так, чтоб первого числа каждого месяца модуль абонплат снимал сумму абонплаты, если не получилось, то пробовать еще раз через час/сутки. И пока он не снимет эту сумму, услуга не будет предоставлена?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 16:57 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Если сделаете по схеме с учетным периодом, то снимать будет не в начале месяца, а по первому входу. Вы же сами сказали, что если не входил, то снимать не нужно. А в начале месяца как узнать будет он входить или нет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 17:37 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Наличие входа уже не так важно. Пусть всегда снимает, или пишет письмо что в следующем месяце не будет пользоваться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 апр 2008, 13:18 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Если наличие входа не важно - просто поставьте ему абонку 1000 рублей и сделайте тариф что 1000 Мб бесплатно, а далее по цене. Стандартное решение..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 апр 2008, 09:38 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
А модуль абонплат просто снимает нужную сумму и всё тут? Т.е. не смотрит, положительный там баланс или отрицательный?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 май 2008, 00:09 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Ответьте пожалуйста, это очень важно!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 май 2008, 17:24 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Да, просто снимает. Баланс - явление сиюминутное.
А как произвести, например, переначисление абонплат за месяц, невозможно ведь сказать в какой момент был какой баланс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 май 2008, 09:19 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 май 2008, 14:18 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 май 2008, 09:53 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Могу я оплатить Ваше время на создание этих скриптов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 май 2008, 14:20 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Никто из форумчан не возьмется? У нас плохо со временем. Но если никого больше не найдете - пишите billing@bitel.ru, сделаем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 16:43 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
На данный момент добавлен ли нужный для первоначальной задачи функционал или же всё также скриптами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 17:24 
Не в сети

Зарегистрирован: 17 дек 2006, 02:49
Сообщения: 121
Откуда: Из ЛИСа
Карма: 1
Не хотелось бы скриптами.... По опыту знаю, что скриптами не стабильно очень!
Надо уговаривать добавить функционал. Может скинемся?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 май 2009, 01:56 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Вполне может :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 май 2009, 16:02 
Не в сети

Зарегистрирован: 02 окт 2008, 17:09
Сообщения: 89
Карма: 9
Если тема интересна могу выложить скрипты, которые работают у нас в соответствии со схемой:

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 май 2009, 16:53 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Очень интересно. Выложите пожалуйста. Желательно с краткой аннотацией что к чему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 май 2009, 19:49 
Не в сети

Зарегистрирован: 02 окт 2008, 17:09
Сообщения: 89
Карма: 9
Выложил в WiKi


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 май 2009, 21:00 
Не в сети

Зарегистрирован: 07 фев 2007, 01:18
Сообщения: 84
Карма: 0
Спасибо огромное, буду разбираться


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

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Подскажите, пожалуйста, а может данные скрипты требуют какой-то дополнительной настройки? Прикрутил я их к одному пробному договору (модуль Диалап), настроил в планировщике задач, как и было оговорено. В тарифном плане было настроено поддерево абонентских плат. Но несмотря на отсутствие средств на счету планировщик отказывается приостанавливать договор.
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.

_________________
Arbeit macht frei


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

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
вывод шедулера
Код:
Checking port 9066...
Port is free starting the applicalion...
Starting TEProccessManager on 9066
Creating socket on 9066
Executing status

_________________
Arbeit macht frei


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
В скрипте скрипт сопоставлен событию Таймер? В договоре скрипт указан? В логах выполнения скрипта в договоре что есть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 сен 2009, 23:35 
Не в сети

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Все указанные условия выполняются. В логах выполнения скриптов события этих скриптов указаны.

_________________
Arbeit macht frei


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 сен 2009, 23:51 
Не в сети

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Код:
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:

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

_________________
Arbeit macht frei


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 сен 2009, 16:55 
Не в сети

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Логи выполнения -
Код:
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).

_________________
Arbeit macht frei


Последний раз редактировалось akubik 24 сен 2009, 03:07, всего редактировалось 1 раз.

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

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Если кто не понял
mid: 4
mid: 4
mid: 1
...
- это вывод номеров модулей услуг для данного договора. По крайней мере то, что выдает getContractServiceList(). Хотя там должна быть услуга модуля N-Pay (у меня №6).

_________________
Arbeit macht frei


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2009, 03:01 
Не в сети

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Почему-то скрипт выдает совершенно идентичные списки услуг для абсолютно разных договоров, с разными наборами модулей и услуг. Хотя по документации все должно работать правильно и везде применялись необходимые функции.

Код:
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()]

_________________
Arbeit macht frei


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

Зарегистрирован: 15 авг 2009, 21:04
Сообщения: 41
Откуда: Казахстан
Карма: 10
Ответит хоть кто-нибудь?

_________________
Arbeit macht frei


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

Зарегистрирован: 02 окт 2008, 17:09
Сообщения: 89
Карма: 9
В версии 4.6 изменился принцип работы с услугами модуля NPay - требуется корректировка скрипта. Постараюсь выложить на выходных скрипт для 4.6.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2  След.

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


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

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


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

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