BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 26 июн 2025, 15:26

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




Начать новую тему Ответить на тему  [ Сообщений: 30 ] 
Автор Сообщение
СообщениеДобавлено: 12 фев 2013, 13:57 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Каким образом различаются те, кто просрочил обещанный платеж, но все же оплатил и те, кто не оплатил свое понижение лимита вообще?
В contract_limit_manage.status статус, 0 - "лимит не погашен", 1 - "лимит частично погашен", 2 - "лимит погашен", 3 - "лимит просрочен."
3 - "лимит просрочен." - это те, у кого срок вышел, а как помечаются, те, кто после этого оплатил? Им назначается статус 2 - "лимит погашен" или они навсегда остаются в 3?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 фев 2013, 15:18 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Просрочен. И если просроченных кол-во достигает значения, заданного в конфиге параметром contract.limit.1.maxexpiredforblock
то этому юзеру блокируется возможность понижения лимита до ручной разблокировки менеджером.


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Код:
#максимальное количество не оплаченных(не возвратившихся) понижений
#при котором клиенту будет доступно понижение, при 0 клиент не сможет выполнять
#понижение до тех пор пока будет хотя бы одно не оплаченное
contract.limit.1.maxnotpayoffed=0
#максимальное количество частично оплаченных понижений
#при котором клиенту будет доступно понижение (0-1, частично оплаченное понижение
#может быть только одно)
contract.limit.1.maxpartialpayoffed=0
#количество просроченных платежей после последней разблокировки
#после которых доступ к понижению будет заблокирован
contract.limit.1.maxexpiredforblock=0


Как отличить тех, у кого наступило contract.limit.1.maxnotpayoffed от тех, у кого наступило contract.limit.1.maxexpiredforblock ?
Т.е. первые вообще не оплатили, а вторые оплатили, но позже обещанной даты.


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

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
ну они все когда нибудь оплатят, если хотят продолжать с вами работать...
какой смысл их как то помечать?


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Во-первых хотелось бы знать сколько таких. Сейчас строим графики количества по group by contract_limit_manage.status. И по ним не видно тех, кто опоздал с платежем, но все же оплатил.
Во-вторых как сделать так, что те кто оплатил в предыдущем месяце, смогли воспользоваться обещанным платежем в новом месяце, а те кто не оплатил - нет?
С текущими настройками, которые приведены выше, те, кто просрочил платеж, не имеют возможность воспользоваться управлением лимитом независимо от того оплатили они или нет. А если сделать ненулевой maxexpiredforblock, то это затронет и тех, кто не платил.


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

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
если клиент ДО СИХ ПОР не оплатил обещанный платеж значит у него до сих пор минус и он не работает, так какая разница в каком месяце это было?

Цитата:
"И по ним не видно тех, кто опоздал с платежем, но все же оплатил."

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

Цитата:
Во-вторых как сделать так, что те кто оплатил в предыдущем месяце, смогли воспользоваться обещанным платежем в новом месяце, а те кто не оплатил - нет?


написать скриптик который 1 числа будет выбирать клиентов со статусом "лимит просрочен" и балансом > 0 и менять им статус на "лимит погашен"


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
skn писал(а):
если клиент ДО СИХ ПОР не оплатил обещанный платеж значит у него до сих пор минус и он не работает, так какая разница в каком месяце это было?

Цитата:
"И по ним не видно тех, кто опоздал с платежем, но все же оплатил."

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


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

skn писал(а):
Цитата:
Во-вторых как сделать так, что те кто оплатил в предыдущем месяце, смогли воспользоваться обещанным платежем в новом месяце, а те кто не оплатил - нет?


написать скриптик который 1 числа будет выбирать клиентов со статусом "лимит просрочен" и балансом > 0 и менять им статус на "лимит погашен"


А может лучше добавить еще один статус "оплачен с опозданием" и переводить в него просроченные после оплаты?


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

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
afedorov писал(а):
А может лучше добавить еще один статус "оплачен с опозданием" и переводить в него просроченные после оплаты?


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

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


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
skn писал(а):
afedorov писал(а):
А может лучше добавить еще один статус "оплачен с опозданием" и переводить в него просроченные после оплаты?


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


В этот статус переводить из просроченных, если contract.status после очередного поступления денег станет 0. Частичная оплата не интересна вообще.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 фев 2013, 19:53 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
В конечном счёте хотелось бы получить вот что:
При поступлении платежа сумму платежа раскидывать не только по обещанным платежам со статусом 0 (лимит не погашен) и 1 (лимит частично погашен), но и со статусом 3 (лимит просрочен). Остаток обещанного платежа уменьшать на сумму поступившего платежа, и если он достигает нуля, то менять статус платежу на 2 (лимит погашен), а таблице contract_limit_manage_mode уменьшать счётчик на 1 и, если необходимо, mode на 0.

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

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
сейчас логика такая:
1) при приходе платежа см. если текущие обещанные платежи, если есть и сумма платежа больше или равна сумме обещанного, закрываем ощещанный платеж и ставим статус лимит погашен, возвращаем лимит
2) если при приходе сумма меньше активного обещанного платежа, меняем статус на частично погашен, если статус уже частично погашен сумируем платежи с даты обещанного платежа и сверяем суммы, если сумма перекрыла меняем статус на погашен и возвращаем лимит
3) когда приходит время отката лимта, возращаем лимит и ставим статус не погашен
4) если при приходе нет активных понижений лимита, то ни чего не делаем

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


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
можно и более простой вариант.
в п.4 если при приходе статус контракта переходит в активное состояние, и есть обещанный лимит в состоянии "просрочен"(а в этом случае он может быть только один), то менять статус у такого обещанного лимита на "погашен просроченный лимит".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2013, 03:10 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
а зачем вам статус такой если можно просто
1) выбираем всех клиентов у кого статус договора Заблокирован и лимит просрочен - это те кто "просрочил и не заплатил"
2) выбираем всех клиентов у кого статус договора Активен и лимит просрочен - это те кто "просрочил и погасил"


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

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Сейчас обнаружил следующую проблему: если лимит договора восстанавливается задачей восстановления лимитов (соответственно, обещанный платёж оказывается просроченным), то статус договора остаётся "Активен", а не "Закрыт", как ожидается. Соответственно, скрипт, который будет разблокировать возможность активации обещанного платежа, работать не будет, и графики мы тоже построить не сможем.
Это ошибка в конфигурации или так и задумано?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 фев 2013, 20:51 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
после востановления лимита, если клиент не пополнил баланс, у него он по идее будет отрицательный и его должно заблокировать при попытке воспользовываться услугами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 12:53 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
То, что абонент не сможет воспользоваться услугами - понятно. Статусы должны меняться или нет? Вы раньше давали советы, как графики строить и как разблокировать обещанный платёж, если после блокировки была оплата. Сейчас получается, что ваши советы не применимы.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Статусы напрямую не меняются при востановление лимита, должно кидаться событие измененение баланса, обработчик которого должен в том числе и менять статусы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 13:27 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Так почему не меняет?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
так а вы меняете?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 14:03 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Чего-то в списке событий для привязки дин. кода я не видел события "Изменение баланса". Собственно, кто должен обрабатывать это события и закрывать договор: дин. код или стандартный класс?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 18:17 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
vkulakov писал(а):
Чего-то в списке событий для привязки дин. кода я не видел события "Изменение баланса". Собственно, кто должен обрабатывать это события и закрывать договор: дин. код или стандартный класс?

На это событие не привязываются обработчики. Оно внутреннее, системное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 19:17 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Вы бы между собой уже разобрались... Кто должен менять статус договора при восстановлении лимита?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 19:53 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
В данный момент ни кто не меняет, не было такой задачи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2013, 20:05 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
vkulakov писал(а):
Сейчас обнаружил следующую проблему: если лимит договора восстанавливается задачей восстановления лимитов (соответственно, обещанный платёж оказывается просроченным), то статус договора остаётся "Активен", а не "Закрыт", как ожидается. Соответственно, скрипт, который будет разблокировать возможность активации обещанного платежа, работать не будет, и графики мы тоже построить не сможем.
Это ошибка в конфигурации или так и задумано?


Перевод в статус Закрыт выполняет соответствующая задача планировщика, и никто более. Вот срабатывает задача восстановления лимитов, далее следом идёт задача закрытия Npay договоров, дальше начисление абонплат. Вроде всё сходится. Доступ к услугам блокируется даже в Активном статусе при отрицательном балансе (меньше лимита).

Для себя я все эти игры с понижением лимитов решил реализовать так - блокировать возможность понижения если есть хотя бы один просроченный платеж и делать разблокировку по приходу платежа, если его хватает на положительный баланс. Таким образом получается что если юзер гасит понижение вовремя - то тут всё штатно (блокировки нет), а если не гасит - то сидит отключенным до тех пор, пока таки не оплатит (т.к. повторно нельзя понизить, заблокирован уже, хоть и минимум лимита позволяет), а как оплачивает - срабатывает скрипт разблокировки на событие Приход платежа.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 11:42 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Судя по документации http://bgbilling.ru/v5.2/doc/ch22s07.html, при выполнении задачи закрытия договоров не производится никаких действий, если уже начисленная наработка более или равна планируемой к начислению. Это показал и эксперимент. В нашем случае запуск задачи закрытия договоров не приводит к закрытию договора, т. к. при понижении лимита списывается полная наработка за месяц.
При навешивании скрипта на приход платежа уже нельзя ориентироваться на статус договора, чтобы сделать разблокировку. Пока единственный вариант, который я вижу - периодически запускать скрипт и, если баланс договора больше нуля, то разблокировать обещанный платёж. Но это не очень эффективно в плане расходования ресурсов.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 фев 2013, 15:07 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Куда-то все пропали...

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 фев 2013, 17:43 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
а чего вы ждете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 фев 2013, 13:51 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Единственный вариант решения нашей задачи периодически запускать скрипт и снимать блокировку с обещанного платежа, если баланс договора больше нуля. Правильно ли я понял?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 фев 2013, 15:38 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Если честно я так до конца и не понял в чем задача, а главное для каких целей она нужна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 фев 2013, 17:42 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
В общем, сделал задачу для планировщика, которая разблокирует отложенный платёж, если баланс договора больше нуля. Других подходящих способов не нашёл. То, что договор не закрывается при возвращении лимита считаю особенностью архитектуры биллинга.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

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


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

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


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

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