BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 05 июл 2025, 17:56

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
СообщениеДобавлено: 25 ноя 2015, 18:37 
Не в сети

Зарегистрирован: 30 ноя 2010, 14:22
Сообщения: 118
Карма: 0
Доброго дня...
В Данный момент лимиты в ЛК выглядят так
Изображение
Это не удобно при списание Абонентской платы авансом за месяц в начале месяца. (абоненту нужно знать сумму которая спишется с него по ТП.)
Как сделать чтобы абонент выбирал только количество дней.. а лимит будет выставляться 100500
допустим указанный в параметре
Код:
contract.limit.1.maxsumm=


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Как вариант, просто поле сделать hidden и value указать тоже что и contract.limit.1.maxsumm, а minsumm=maxsumm.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 ноя 2015, 12:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Амир, а можно каким-либо скриптом устанавливать этот maxsumm?
Ну на событие какое-нибудь повесить или т.п.?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 ноя 2015, 12:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Phricker писал(а):
Амир, а можно каким-либо скриптом устанавливать этот maxsumm?
Ну на событие какое-нибудь повесить или т.п.?

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

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 ноя 2015, 12:44 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Переписать не проблема, скажите только что переписать. Я последние три дня ипусь с одной хренью, и мозг на что-то другое не отвлекается.

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

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 ноя 2015, 12:46 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Так то да, пишешь
Код:
<td><input type="hidden" name="summ" size="6" value=${dataMap['contractLimitParameters'].maxSumm}></input></td>

и нет проблем.
Но это такое решение не очень.

Где-то кстати обсуждалось, что кто-то написал эту страницу просто с одной кнопкой понизить лимит.
И все. Само вычисляет сумму, дни и т.п. Чтобы не заморачивать пользователя.
У опсосов ты же не выбираешь сумму или дни.
Тебе дают на 3 дня сумму зависящую от твоих платежей за последний месяц (билайн), или у МТСа ты можешь выбрать сумму но тебе так же дают на 3 (или 5) дней. При этом я должен гадать какой же у меня тарифный план чтобы не прогадать с суммой.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 ноя 2015, 12:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Кстати вот
/summon vkulakov
Поделитесь реализацией пожалста :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2015, 06:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
даже удивился ))))

dynaction:contract.web.ActionContractLimit=ru.skyb.scripts.action.ActionContractLimit


Код:
package ru.skyb.scripts.action;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import bitel.billing.server.contract.bean.BalanceUtils;
import bitel.billing.server.ActionResultContentType;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.LimitManager;
import bitel.billing.server.contract.bean.LimitManager.ContractLimitParameters;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.bgbilling.kernel.event.events.ContractLimitUserLow;
import ru.bitel.bgbilling.kernel.event.events.LimitChangedEvent;
import ru.bitel.bgbilling.kernel.event.events.system.SystemLimitChangedEvent;
import bitel.billing.common.TimeUtils;
import ru.bitel.common.Utils;

public class ActionContractLimit
   extends bitel.billing.server.contract.action.web.ActionContractLimit
{

   private ContractLimitParameters clp = null;
   @Override
    public void doAction()
       throws SQLException, BGException
   {
      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() );
          }
       }
}

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2015, 18:06 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Угу.
В правильном направлении направил.

Вопрос к разрабам.
В LimitManager есть переменные.
Код:
public static class ContractLimitParameters {
        public final long groups;
        public final int maxNotPayoffed;
        public final int maxPartialPayoffed;
        public final int maxExpiredForBlock;
        public final int minDays;
        public final int maxDays;
        public final BigDecimal minSumm;
        public final BigDecimal maxSumm;
        public final BigDecimal minLimit;

И из своего класса их невозможно переопределить (что в принципе логично ага)
Изображение

Но хотелось бы какой-то обратной связи со страницей.
Т.е. если я в своем классе переопределяю сумму лимита в размере тарифного плана, например, или же в сумму необходимую модулю NPAY для активации договора, то хотелось бы на странице вывести что нибудь типа "Ваш лимит будет понижен на N рублей строком на N дней".
И переопределить это в clp я не могу.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2015, 20:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Что-то к концу пятницы не соображаю уже.
Можно пример?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2015, 21:35 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Phricker писал(а):
Что-то к концу пятницы не соображаю уже.
Можно пример?


Код:
clp = lm.getContractLimitParameters( setup, contract );
clp = new ContractLimitParameters( clp.groups, clp.maxNotPayoffed, clp.maxPartialPayoffed, clp.maxExpiredForBlock, clp.minDays, clp.maxDays, new BigDecimal( 100 ), new BigDecimal( 100 ), clp.minLimit );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2015, 00:57 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Угу, так точно.
Благодарю!
Изображение

В понедельник будет что пилить.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


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

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


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

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


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

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