"Компании клиента", модификация показа по умолчанию.

Только для готовых решений! Пожалуйста, не используйте для вопросов и обсуждений!

Модератор: ykolesnikov

Ответить
Creative
OTRS Новобранец
Сообщения: 132
Зарегистрирован: 22 июн 2011, 14:33
Откуда: Татарстан, Альметьевск

"Компании клиента", модификация показа по умолчанию.

Сообщение Creative » 12 окт 2012, 11:16

По умолчанию, при открытии модуля администрирования списка компаний, вместо списка компаний выводится сообщение о необходимости указать параметры поиска.
По условиям задачи требуется при открытии модуля выводить все компании занесённые в систему.

Наиболее простое решение данной задачи реализается при помощи доработки модуля администрирования списка компаний.

Берём (за основу) AdminCustomerCompany.pm (естественно если не хотим проблем дальше, все доработки делаем на custom копии).

Находим в нём процедуру Overview, отвечающую за вывод списков.
В ней говорим, что если в процедуру не передан параметр поиска, то по умолчанию используем значение параметра равное "*"

Исходное

Код: Выделить всё

my $Search = $Self->{ParamObject}->GetParam( Param => 'Search' ) || '';
Изменённое

Код: Выделить всё

my $Search = $Self->{ParamObject}->GetParam( Param => 'Search' ) || '*';
Получаем на выходе. Если текстовое поле на форме поиска в блоке "Действия" пустое, то показываются все компании.

Есть ещё одно улучшение поиска которое можно сделать.
Не уверен что все с этим столкнулись, но по крайней мере я столкнулся.

В моей сборке по умолчанию оказалась следующая ситуация. При поиске по списку клиентов поиск прекрасно производился по вхождению в любой части используемых для поиска полей. А вот при поиске по списку компании обязательно надо было указывать именно часть от начала до какой либо позиции.

Переносим в Config.pm описание маппинга компаний.
Берём следующий блок

Код: Выделить всё

 # company unique id
        CustomerCompanyKey          => 'customer_id',
        CustomerCompanyValid        => 'valid_id',
        CustomerCompanyListFields   => [ 'customer_id', 'name' ],
        CustomerCompanySearchFields => ['customer_id', 'name'],
        CustomerCompanySearchPrefix => '',
        CustomerCompanySearchSuffix => '*',
        CustomerCompanySearchListLimit => 250,
        Map                       => [

# var, frontend, storage, shown (1=alwa...................
И, как многие уже догадались, меняем параметр CustomerCompanySearchPrefix.

Код: Выделить всё

CustomerCompanySearchPrefix => '*',
В итоге получаем поиск по вхождению в любой части искомой строки из указанных в CustomerCompanySearchFields полей.

Решение реализовано на базе OTRS 3.1.4; ITSM 3.1.6
Мозг человека обычно загружен лишь на 10% своей мощности, остальное - резерв для операционной системы.

OTRS 3.1.4; ITSM 3.1.6; Ubuntu Server 12.04 LTS
Андрей Ананьев

Ответить