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

Управление статусом из ЛК
http://forum.bitel.ru/viewtopic.php?f=22&t=10119
Страница 1 из 1

Автор:  PavelGloba [ 27 янв 2015, 18:04 ]
Заголовок сообщения:  Управление статусом из ЛК

В bgbilling довольно хорошо реализовано управление лимитом. Можно для разных групп договоров настроить различное количество разрешенных дней, порог лимита, стоймость и т.п. А вот как конфигурировать управление статусом я не нашел вообще. Возможно ли реализовать сложные условия для разных групп договоров, не залезая при этом в код? Например такие:
1 группа:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа
2 группа:
- возможность приостановки обслуживания минимум на месяц, максимум на 3 месяца со снятием ежемесячной абонентской платы 50% от тарифа

Автор:  PavelGloba [ 02 фев 2015, 15:47 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Anyone?

Автор:  stark [ 02 фев 2015, 15:53 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

PavelGloba писал(а):
В bgbilling довольно хорошо реализовано управление лимитом. Можно для разных групп договоров настроить различное количество разрешенных дней, порог лимита, стоймость и т.п. А вот как конфигурировать управление статусом я не нашел вообще. Возможно ли реализовать сложные условия для разных групп договоров, не залезая при этом в код? Например такие:
1 группа:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа
2 группа:
- возможность приостановки обслуживания минимум на месяц, максимум на 3 месяца со снятием ежемесячной абонентской платы 50% от тарифа



Штаного решения нет, можно заложить некоторую логику смены статуса в обработчике события смены статуса . Не давать там менять и т.п .

Автор:  stark [ 02 фев 2015, 15:55 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Есть еще событие "получение списка дат при смене статуса договора".

Автор:  Dima_M [ 02 фев 2015, 21:59 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Тоже очень интересен подобный функционал. А именно ограничение времени приостановки. Скажем, минимум на 7 суток.

Автор:  dimOn [ 02 фев 2015, 22:35 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Всё решается событиями вышеперечисленными.

Автор:  PavelGloba [ 03 фев 2015, 13:04 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Как по мне, должно быть штатное решение. Подобный функционал есть в биллинге у большенства операторов связи. Можно расчитывать на подобный функционал в ближайшем будущем?

Автор:  stark [ 03 фев 2015, 13:17 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

PavelGloba писал(а):
Как по мне, должно быть штатное решение. Подобный функционал есть в биллинге у большенства операторов связи. Можно расчитывать на подобный функционал в ближайшем будущем?



Какой функционал именно штатный ?
1.
Цитата:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа

2
Цитата:
- возможность приостановки обслуживания минимум на месяц, максимум на 3 месяца со снятием ежемесячной абонентской платы 50% от тарифа


3. Возможность запретить приостановку статуса всем проживающим по улице Красноводсткая чаще чем один раз в 5 месяцев.

4. При приостановке статуса снимать 37% от абонплаты.

5. Не давать приостанавливать статус тем кто у кого средний остаток на счете за последний год меньше 100 рублей .

И можно придумать еще много условий . Мы можем нагородить какие-то настройки, но зачем , если это можно решить скриптом . Всегда найдется кто-то, кто придумает какие-то еще условия, о которых мы понятия не имели . Если сами не можете решить проблему с помощью скрипта, то обратись к нам или кому-то(тут на форуме некторые предлагают свои услуги) кто сможет помочь.

Автор:  dimOn [ 03 фев 2015, 13:22 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Цитата:
Подобный функционал есть в биллинге у большенства операторов связи.
А скриптами у них можно?
PavelGloba писал(а):
Можно расчитывать на подобный функционал в ближайшем будущем?
Нет

Автор:  Phricker [ 03 фев 2015, 13:39 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

stark писал(а):
1.
Цитата:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа


Мне на 14 дней надо и максимум на 2 месяца.
Спасибо. Пожалуйста.

Автор:  skyb [ 03 фев 2015, 13:44 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

а я экшен переписал =)

Автор:  dimOn [ 03 фев 2015, 13:47 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Phricker писал(а):
stark писал(а):
1.
Цитата:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа


Мне на 14 дней надо и максимум на 2 месяца.
Спасибо. Пожалуйста.

нет нет, а это уже не штатное решение :umnik:

Автор:  PavelGloba [ 03 фев 2015, 14:10 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Такие же возможности, как в управлении лимитом.

Автор:  dimOn [ 03 фев 2015, 14:34 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

И как вы собираетесь внести в настройки аналогичной куцести свои пожелания вида:
Цитата:
- возможность приостановки обслуживания минимум на 7 суток, максимум на 3 месяца не чаще раза в месяц; в дальнейшем снимается ежесуточная плата в размере 10% от тарифа
Цитата:
- возможность приостановки обслуживания минимум на месяц, максимум на 3 месяца со снятием ежемесячной абонентской платы 50% от тарифа
да ещё и остальные
Цитата:
сложные условия для разных групп договоров
и чего-то там ещё.
1. какой в этом смысл?
2. вы понимаете, что настройки, позволяющие задать подобное, будут много сложнее, чем 10 строк кода скрипта?

Автор:  PavelGloba [ 03 фев 2015, 14:47 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Достаточно min-maxdays и группы. Остальное всё действительно слишком индивидуально, не надо к этому, пожалуйста, больше цепляться. Разбивка по разным группам должна быть априори, ИМХО.

Автор:  Dima_M [ 03 фев 2015, 18:05 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

skyb писал(а):
а я экшен переписал =)

Может быть в вики пример решения выложить, если написали его?

Автор:  skyb [ 04 фев 2015, 12:43 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Dima_M писал(а):
skyb писал(а):
а я экшен переписал =)

Может быть в вики пример решения выложить, если написали его?

да я и не против, но вот времени чет нет пока на это, там просто не только переписка, там настройка, смена самой веб морды, кнопки

Автор:  skyb [ 06 фев 2015, 08:32 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Статус чет найти не могу, но вот с лимитом как я поиграл
Код:
      String action = request.getParameter("act");
      request.setAttribute( "contentType", ActionResultContentType.jsp );
      java.util.Date currentDate = new java.util.Date();
      //BigDecimal summ = getBigDecimalParameter( "summ", BigDecimal.ZERO );
      BigDecimal summ = new BigDecimal(1000);
      LimitManager lm = new LimitManager( con );
      ContractManager cm = new ContractManager( con );
        Contract contract = cm.getContractById( cid );
      BalanceUtils bu = new BalanceUtils (con);
      String query = " SELECT date1 FROM contract WHERE id = " + cid;
      PreparedStatement contractPs = con.prepareStatement( query );
      ResultSet contractRs = contractPs.executeQuery();

/*      else if( contract.getBalanceLimit().subtract( summ ).compareTo( clp.minLimit ) < 0 )
         {
            throw new BGMessageException( "Понижение лимита ниже " + Utils.formatBigDecimalSumm( clp.minLimit ) + " невозможно." );
         }
*/
      reloadClp( lm, contract );
      //if( clp != null && summ.compareTo( BigDecimal.ZERO ) > 0 && contract.getBalanceMode() == Contract.DEBET_BALANCE_MODE )
      if( clp != null && "Взять платеж".equals(action) && contract.getBalanceMode() == Contract.DEBET_BALANCE_MODE )
         {
         while ( contractRs.next() )
            {
               Date date = contractRs.getDate( 1 );
               
                 int mounth = TimeUtils.monthsDelta(date, currentDate);
/*
*Больше месяца - день
*Больше трех - три
*Больше пол года - пять
*/
               if (bu.getBalance(currentDate, cid).compareTo(  new BigDecimal(0) ) >= 0)
               {
                if (mounth == 0)
                  {
                   
                   System.out.println("While sql " + date + " mounth " + mounth + " currentDate " + currentDate);
                  throw new BGMessageException( "Обещанный платеж можно брать только через месяц" );
                                    
                  }
                 if (mounth >= 1 && mounth < 3)
                    {
                        lm.lowLimit( cid, summ, 1 );

                          contract = cm.getContractById( cid );
                         
                          context.publishAfterCommit( new ContractLimitUserLow( userID, cid, summ, 1 ) );
                          context.publishAfterCommit( new SystemLimitChangedEvent( cid, contract.getBalanceLimit()) );
                          context.publishAfterCommit( new LimitChangedEvent( cid, contract.getBalanceLimit()) );
                         
                          reloadClp( lm, contract );
                          System.out.println("While sql " + date + " mounth " + mounth + " currentDate " + currentDate);
                    }
                 if (mounth >= 3 && mounth < 6)
                    {
                        lm.lowLimit( cid, summ, 3 );

                          contract = cm.getContractById( cid );
                         
                          context.publishAfterCommit( new ContractLimitUserLow( userID, cid, summ, 3 ) );
                          context.publishAfterCommit( new SystemLimitChangedEvent( cid, contract.getBalanceLimit()) );
                          context.publishAfterCommit( new LimitChangedEvent( cid, contract.getBalanceLimit()) );
                         
                          reloadClp( lm, contract );
                          System.out.println("While sql " + date + " mounth " + mounth + " currentDate " + currentDate);
                    }
                 if (mounth >= 6)
                    {
                        lm.lowLimit( cid, summ, 5 );

                          contract = cm.getContractById( cid );
                         
                          context.publishAfterCommit( new ContractLimitUserLow( userID, cid, summ, 5 ) );
                          context.publishAfterCommit( new SystemLimitChangedEvent( cid, contract.getBalanceLimit()) );
                          context.publishAfterCommit( new LimitChangedEvent( cid, contract.getBalanceLimit()) );
                         
                          reloadClp( lm, contract );
                          System.out.println("While sql " + date + " mounth " + mounth + " currentDate " + currentDate);
                    }      
               }      
            else
               {
                throw new BGMessageException( "Понижение лимита при отрицательном балансе невозможно." );
               }
            }
         
         contractPs.close();
         contractRs.close();
         
         }

      super.doAction();

   }
   
   private void reloadClp( LimitManager lm, Contract contract )
           throws BGException
       {
          try
          {
             clp = null;
             clp = lm.getContractLimitParameters( setup, contract );
          }
          catch( BGMessageException e )
          {
             setMsg( e.getMessage() );
          }
       }
}

Автор:  stark [ 06 фев 2015, 11:39 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

skyb писал(а):
Статус чет найти не могу, но вот с лимитом как я поиграл


Предлагаю рассмотреть возможность использования "else if" в вашем коде. Так было бы более понятно и исключает ошибку того, что сработает 2 условия сразу.

Автор:  dimOn [ 06 фев 2015, 12:01 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Если речь про if (mounth >= 1 && mounth < 3) итд, то я в таком случае заведомо неперекрывающихся условий тоже не стал бы else ставить для как раз логичности и наглядности

Автор:  Fate [ 30 янв 2017, 19:34 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Коллеги, а ничего по управлению статусом не допилили?

Например - разрешить блокироваться только один раз в месяц?

Автор:  dimOn [ 30 янв 2017, 23:05 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

а чего тут допиливать? всё делается скриптами

Автор:  MySTeRious [ 31 янв 2017, 12:11 ]
Заголовок сообщения:  Re: Управление статусом из ЛК

Fate писал(а):
Коллеги, а ничего по управлению статусом не допилили?

Например - разрешить блокироваться только один раз в месяц?


Если нужны скрипты - пишите в личку.

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