BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Список шаблонов
СообщениеДобавлено: 22 апр 2013, 17:04 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Где-то была тема в которой спрашивалось как можно редактировать список шаблонов договоров, доступный при создании договоров.
Собственно ее я не нашел - поэтому пишу тут (запилю в вики, как потрачу на это чуть более чем 5 минут. Т.е. когда доберусь всерьез. Где будут сортировка в зависимости от групп пользователя и т.п. А сейчас просто отвлекся от работы, вспомнил про это и решил попробовать :))

В 5.2 версии можно писать свои экшны и заменять ими встроенные. На вики есть статья

По ней и будем делать.

Для примера напишем вот такое (признаюсь содрал из стандартного экшна)
Код:
package ru.xxx.test;

import java.sql.*;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.common.BGException;

public class GetPatternList
      extends bitel.billing.server.contract.action.ActionGetPatternList
{
   @Override
 public void doAction()
     throws SQLException, BGException
 {
     Element patterns = createElement(rootNode, "patterns");
     if(request.getParameter("nondef") == null)
         addListItem(patterns, "0", "\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E");
     String query = "SELECT id, title FROM contract_pattern WHERE title NOT LIKE '!%' ORDER BY title";
     Statement st = con.createStatement();
     ResultSet rs;
     for(rs = st.executeQuery(query); rs.next(); addListItem(patterns, rs.getString(1), rs.getString(2)));
     rs.close();
     st.close();
 }
}


В конфиге сервера добавляем строку
Код:
dynaction:contract.ActionGetPatternList=ru.xxx.test.GetPatternList


И все. При создании договора в список шаблонов доступных для выбора не попадут все шаблоны которые начинаются со знака !.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 22 апр 2013, 17:10 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
И кстати, по-моему, в той теме был вопрос как убрать шаблон "По умолчанию".
Достаточно просто удалить или закомментировать строки
Код:
// if(request.getParameter("nondef") == null)
     //    addListItem(patterns, "0", "\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E");

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 22 апр 2013, 17:13 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
А во. Нашел тему как раз по этому "По умолчанию" :)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 21 май 2013, 18:43 
Спасибо за направление, как делать.
Вот допилил показывать список шаблонов на основе фильтров, которые указываются в конфигах сервера и пользователя.
1) в конфигурации сервера увказываем список фильтров с id шаблонов, которые нужно показывать:
Код:
user.template.filter.1=1
user.template.filter.2=2
user.template.filter.3=1,2,3
Важно: id шаблонов указывать через "," - так как потом используется прямо в SQL (пока сделал так)
2) в конфигурации пользователя указываем нужный фильтр:
Код:
user.template.filterId=1
Важно: если фильтр не указать, то выведется пустой список шаблонов.
Мне так нужно было, для явного указания шаблонов для пользователей. Кому нужно - измените код.
Если указан user.template.filterId=0, то фильтр вообще не используется - выводит все шаблоны, включая шаблон "По умолчанию"
Ну и сам код:
Код:
package ru.bitel.bgbilling.modules.contract.action;

import java.sql.*;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.module.server.bean.UserManager;
import ru.bitel.bgbilling.server.util.UserMap;
import ru.bitel.common.Preferences;
import java.security.AccessController;
import javax.security.auth.Subject;
import bitel.billing.server.admin.bgsecure.bean.UserLoginModule.UserPrincipal;
import ru.bitel.bgbilling.server.util.Setup;

public class GetPatternList
      extends bitel.billing.server.contract.action.ActionGetPatternList
{
   @Override
 public void doAction()
     throws SQLException, BGException
 {
   //получаем id текущего пользователя
   Integer currentUserId = getCurrentUserId();
   //получаем ID фильтра шаблонов с конфигурации пользователя.
   int filterId = getTemplateFilterId( currentUserId );
   String SqlTemplateFilter = "";
   switch ( filterId )
   {
   case -1:
      {
      //вывод пустого списка шаблонов, если в конфиге не указан фильтр.
      log.debug("Custom TEMPLATES: filterId not set:" + filterId );
      SqlTemplateFilter = " WHERE id = -1 ";
      break;
      }
   case 0:
      {
      //вывод всех шаблонов - для администраторов.
      log.debug("Custom TEMPLATES: admin filterId=" + filterId );
      SqlTemplateFilter = " ";
      break;
      }
   default:
      {
      log.debug("Custom TEMPLATES: iserId=" + currentUserId + " filterId=" + filterId );
      //считывание фильтров шаблонов с конфигурации от 1 до 99
      String tmplIds = "";
      for (int t = 1; t < 100; t++)
             {
            tmplIds = this.setup.get("user.template.filter." + t, null);
         //вывод пустого списка шаблонов по умолчанию
         SqlTemplateFilter = " WHERE id = -1 ";
         //поиск IDs шаблонов договоров
         if ( t == filterId )
            {
            log.debug("Custom TEMPLATES: found tmplIds=" + tmplIds );
            SqlTemplateFilter = " WHERE id IN (" + tmplIds + ") ";
            break;
            }
         }
      }
   }

   //формирование списка шаблона договоров
     Element patterns = createElement(rootNode, "patterns");
   //вывод шаблона "по умолчанию" - включаем для Админов
   if ( filterId == 0 )
      {
        if(request.getParameter("nondef") == null)
            addListItem(patterns, "0", "\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E");
      }
   String query = "SELECT id, title FROM contract_pattern " + SqlTemplateFilter + " ORDER BY title";
   //log.debug("Custom TEMPLATES: sql=" + query );
     Statement st = con.createStatement();
     ResultSet rs;
     for(rs = st.executeQuery(query); rs.next(); addListItem(patterns, rs.getString(1), rs.getString(2)));
     rs.close();
     st.close();
 }

public int getTemplateFilterId (int userId)
    throws BGException
  {
    User user = UserMap.getUser(Integer.valueOf(userId));
    String user_config = user.getConfig();
    Preferences userConfig = new Preferences(user_config, "\r\n");
    int TemplateFilterId = userConfig.getInt("user.template.filterId", -1);
    return TemplateFilterId;
  }

public Integer getCurrentUserId()
   {
   Subject subject = Subject.getSubject( AccessController.getContext() );
   if( subject != null )
      {
         for( UserPrincipal userPrincipal : subject.getPrincipals( UserPrincipal.class ) )
         {
         return userPrincipal.getUser().getId();
         }
      }
   return null;
   }
}

Ну и не забываем в конфиге сервера переопределить action:
Код:
dynaction:contract.ActionGetPatternList=ru.bitel.bgbilling.modules.contract.action.GetPatternList


Последний раз редактировалось nik247 21 май 2013, 19:32, всего редактировалось 1 раз.

Вернуться к началу
  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 21 май 2013, 19:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Спасибо :)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 21 май 2013, 19:39 
Спасибо за розмещение на wiki.
Я внес одно изменение.
Если номера фильтров не попорядку, то не все фильтры обрабатывались - ограничил от 1 до 99:
Было:
Код:
//считывание фильтров шаблонов с конфигурации
String tmplIds = "";
for (int t = 1; tmplIds != null; t++)
Стало:
Код:
//считывание фильтров шаблонов с конфигурации от 1 до 99
String tmplIds = "";
for (int t = 1; t < 100; t++)

Можете на wiki изменить?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Список шаблонов
СообщениеДобавлено: 21 май 2013, 19:48 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Готово

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


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

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


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

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


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

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