forum.bitel.ru http://forum.bitel.ru/ |
|
Закрытие статуса NPay договоров по балансу http://forum.bitel.ru/viewtopic.php?f=22&t=6829 |
Страница 1 из 1 |
Автор: | Yarlan Zey [ 31 май 2012, 14:17 ] |
Заголовок сообщения: | Закрытие статуса NPay договоров по балансу |
ситуация: у человека баланс доходит до лимита - статус закрывается, шлюз блокируется "Недостаток средств для начисления абонплаты" человек тыкает кнопочку "разблокировать на два дня" - лимит временно понижается, статус активен два дня прошло - лимит вернулся в исходное положение, статус активен, деньги считаются, абонент негодует в общем, задача срабатывает, когда баланс близок к лимиту (т.е. следующее списание сделает баланс ниже лимита) но не срабатывает, когда баланс ниже лимита. планируется ли пересмотреть логику? bill вер. 5.1 сборка 253 от 05.04.2012 13:13:38 npay вер. 5.1 сборка 206 от 28.03.2012 09:16:57 |
Автор: | Cromeshnic [ 31 май 2012, 14:27 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Вообще, должно. Может у вас задача восстановления лимитов стоит после закрытия дебетовых договоров? |
Автор: | Yarlan Zey [ 31 май 2012, 14:35 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
![]() |
Автор: | Cromeshnic [ 31 май 2012, 15:07 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
А почему статус задачи = "не работает"? Цитата: Закрытие статусов договоров производится задачей планировщика Закрытие статуса NPay договоров по балансу запуск которой должен осуществляться в начале суток до переобсчёта абонентских плат. В начале суток. А у вас почему-то в 23:45 стоит - как оно вообще работает? о_О |
Автор: | Yarlan Zey [ 31 май 2012, 15:17 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Cromeshnic писал(а): А почему статус задачи = "не работает"? а это другая задача) Cromeshnic писал(а): В начале суток. А у вас почему-то в 23:45 стоит - как оно вообще работает? о_О ибо иначе за закрытый крайний день начисляется абонплата. я как всегда подглядел у скуба) у него так же |
Автор: | Yarlan Zey [ 01 июн 2012, 14:28 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
поговорите со мной) |
Автор: | Cromeshnic [ 01 июн 2012, 14:34 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Вы хотите поговорить об этом? |
Автор: | Yarlan Zey [ 01 июн 2012, 14:34 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
да:) очень тревожные чувства вызывает данная тема |
Автор: | Yarlan Zey [ 04 июн 2012, 11:45 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
я снова одинок( |
Автор: | skyb [ 05 июн 2012, 09:46 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
npay вер. 5.1 сборка 206 от 28.03.2012 09:16:57 мб апдейт? |
Автор: | Yarlan Zey [ 05 июн 2012, 09:54 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
нее. ничего толком не поменялось с того билда http://bgbilling.ru/v5.1/download/npay/fixed |
Автор: | stark [ 05 июн 2012, 15:35 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Yarlan Zey писал(а): Поставьте запуск задачи закрытия npay договоров сразу после окончания работы задачи восстановления лимитов и будет работать. Она вроде как и подразумевается что вначале дня должна блокировать чтобы за этот день абонка не снялась. |
Автор: | skyb [ 06 июн 2012, 05:13 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Yarlan Zey писал(а): Cromeshnic писал(а): В начале суток. А у вас почему-то в 23:45 стоит - как оно вообще работает? о_О ибо иначе за закрытый крайний день начисляется абонплата. я как всегда подглядел у скуба) у него так же А вот и нет, я думал действительно как у меня и не смотрел на скрин, приложил мой, делай так |
Автор: | Yarlan Zey [ 06 июн 2012, 08:24 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
stark писал(а): Поставьте запуск задачи закрытия npay договоров сразу после окончания работы задачи восстановления лимитов и будет работать. Она вроде как и подразумевается что вначале дня должна блокировать чтобы за этот день абонка не снялась. Спасибо. Буду наблюдать skyb писал(а): А вот и нет диверсант) |
Автор: | aiwbend [ 06 июн 2012, 09:16 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
а я такой скрипт делал на событие изменения лимита, приход платежа, удаления платежа и занесение расхода. Код: package ru.rta.bgbilling.kernel.contractstatus; import ru.bitel.bgbilling.kernel.event.Event; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.*; import java.util.Date; import java.util.Calendar; import ru.bitel.bgbilling.kernel.event.events.ContractStatusChangedEvent; import ru.bitel.bgbilling.kernel.event.*; import bitel.billing.server.contract.bean.*; public class StatusChange extends EventScriptBase { @Override public void onEvent( Event event, Setup setup, ConnectionSet connectionSet ) throws Exception { print ("Скрипт проверки статуса при добавлении, удалении прихода, при занесении расхода, при выставлении лимита."); Connection con = connectionSet.getConnection(); Calendar calendar = Calendar.getInstance(); int cid = event.getContractId(); BalanceUtils bu = new BalanceUtils( con ); ContractManager cman = new ContractManager( con ); Contract cn = cman.getContractById( cid ); ContractStatusManager contract_status_manager = new ContractStatusManager(con); ContractStatus status = contract_status_manager.getStatus(cid, new Date()); java.math.BigDecimal balance = bu.getBalance(new Date(), cid); java.math.BigDecimal limit = cn.getBalanceLimit(); long groups = cn.getGroups(); if (status == null) //если ContractStatus null ничего не делаем { return; } if (groups == 2 || groups == 128 || groups == 256) { print ("Эта группа договора не обрабатывается скриптом. " + "Группы договора: " + groups); return; } int contract_status = status.getStatus(); if (contract_status == 1 || contract_status == 2 || contract_status == 4 || contract_status == 5 || contract_status == 6){ print("Этому договору нет необходимости проверять статус."); } if (contract_status == 3) { if (balance.compareTo(limit) >= 0)//если Баланс больше или равен лимиту (сравнение >< не понимает BigDecimal, читать про compareTo ) { print ("Баланс больше лимита, разблокироваем." + "\n" + "Баланс: " + balance + " Лимит: " + limit + " Группа:" + groups); status.setContractId( cid ); status.setDateFrom(new Date()); status.setDateTo( null ); status.setStatus( 0 ); status.setComment( "Баланс больше или равен лимиту" ); contract_status_manager.changeStatus( status, 0, false ); EventProcessor.getInstance().publish(new ContractStatusChangedEvent(status, 0)); //вызываем событие смены статуса чтобы изменился статус шлюза } else { print ("Недостаточный баланс для разблокировки" + "\n" + "Баланс: " + balance + " Лимит: " + limit + " Группа:" + groups); } //print ("Статус договора: Закрыт" + contract_status); } if (contract_status == 0) { if (balance.compareTo(limit) < 0) { print ("Баланс меньше лимита, блокируем." + "\n" + "Баланс" + balance + " Лимит: " + limit + " Группа:" + groups); status.setContractId( cid ); status.setDateFrom(new Date()); status.setDateTo( null ); status.setStatus( 3 ); status.setComment( "Баланс меньше лимита" ); contract_status_manager.changeStatus( status, 0, false ); EventProcessor.getInstance().publish(new ContractStatusChangedEvent(status, 0));//вызываем событие смены статуса чтобы изменился статус шлюза } else { print ("Блокировка не требуется" + "\n" + "Баланс" + balance + " Лимит: " + limit + " Группа:" + groups); } //print ("Статус договора: Закрыт" + contract_status); } } } вроде работает все, нареканий не было... ... плохо вчитался, вам же для встроенного функционала режима дебетовых абонплат. |
Автор: | Yarlan Zey [ 06 июн 2012, 09:58 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
вот у нас тоже скрипт был, но решили использовать стандартные средства. привыкаем потихоньку... |
Автор: | survivor [ 18 июн 2013, 20:09 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
Встала аналогичная задача... не пойму один момент - допустим стоит задача "закрытие статуса NPay" в 00:05, а задача "начисления NPAY абонплат" как и полагается чуть позже в 00:15. Допустим тариф - один день=один рубль, снятие ежедневное. Тогда при наступлении нового дня, при отсутствии денег на счету, в 00:05 договор закроется. Это правильно. Но есть ньюанс. ![]() В этом случае, при создании абонента - деньги с него спишутся только на следующий день ночью в 00:15 и только за следующий день, а оставшуюся часть первого дня абонент будет работать бесплатно! Сейчас у меня задача "начисления NPAY абонплат" запускается каждую минуту и такой проблемы нет, но в этом случае некуда всунуть задачу "закрытие статуса NPay", которая должна отработать ДО первого начисления в этот день... Может выход - запускать каждый час? Тогда дарим всего час бесплатного интернета... Или я что-то не так понимаю? |
Автор: | Cromeshnic [ 19 июн 2013, 08:03 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
survivor писал(а): В этом случае, при создании абонента - деньги с него спишутся только на следующий день ночью в 00:15 и только за следующий день, а оставшуюся часть первого дня абонент будет работать бесплатно! Нет. Задача начисления абонплат полностью пересчитывает весь текущий месяц. Т.е. в данном случае за предыдущий день тоже начислит. survivor писал(а): Сейчас у меня задача "начисления NPAY абонплат" запускается каждую минуту и такой проблемы нет, но в этом случае некуда всунуть задачу "закрытие статуса NPay", которая должна отработать ДО первого начисления в этот день... Может выход - запускать каждый час? Тогда дарим всего час бесплатного интернета... Или я что-то не так понимаю? Ну во-первых, каждую минуту - слишком часто. Она сама может минут 40 работать. Во-вторых, даже если каждую минуту, то нужно не запускать её до завершения закрытия по абонплатам. Поставьте раз в пару часов и не парьтесь. Например "2,4,6,8,10,12,14,16,18,20,22" |
Автор: | survivor [ 28 авг 2013, 20:28 ] |
Заголовок сообщения: | Re: Закрытие статуса NPay договоров по балансу |
решил вернуться к этой теме, фича вновь понадобилась ![]() только как-то неудобно пользоваться ей. Допустим запускаю снятие наработки каждый четный час, а закрытие статуса - каждый нечетный. Тогда свежеподключившийся скажем в 15:30 абонент попадет на снятие наработки раньше чем на закрытие статуса и уйдет в минус. Я для себя вывел такую схему: -Снятие наработки в 23:30 каждый день -Снятие наработки в 00:30 каждое первое число (чтоб не тянуть до вечера) -Закрытие статуса каждый час. Но это все работает только с вручную подключаемыми оператором абонентами. У меня же есть такая схема: абонент изначально после создания находится в состоянии "приостановлен", а когда его скоммутируют, когда он включит свой модем, скрипт по первому успешному подключению переведет статус в активен, а npay снимет деньги от текущей даты. Хотел сделать чтобы при этом абонент не уходил в минус, а опять закрывался (штатными средствами. понятно что в своем скрипте проверку на баланс можно сделать), но похоже логика биллинга это не позволяет - ведь момент подключения может попасть на период между 23:00 и 23:30. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |