добавить столбец с именем клиента(С)

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

Модератор: ykolesnikov

Ответить
mukexa
OTRS Новобранец
Сообщения: 148
Зарегистрирован: 30 апр 2013, 19:08
Откуда: Украина, Киев.
Поблагодарили: 1 раз

добавить столбец с именем клиента(С)

Сообщение mukexa » 20 июн 2013, 22:00

Собственно это лишь небольшое дополнение к теме(сообщениям пользователя "lelikflegma"): http://forums.otterhub.org/viewtopic.ph ... d2e#p55313
Тут описано как добавить имя компании в таблицу списка клиентов и в поиск.
1. $Data{UserCompanyName} = $Row[17]; 17 - это номер столбца в запросе, считаем с нуля. Почему акцентирую внимание, он(номер) сдвинется если будем добавлять в МАР масив новые поля.
UPD_19082013: лучше вообще использовать вот такой формат:
$Data{UserCompanyName} = $Row[$MapCounter+1];
тогда вообще можно не обращать внимание на изменения в МАР масиве.

2. Касается поиска. Автор строк оставил формат "по-умолчанию" результат поиска в заявке(всплывающее окно):
Остался один минус - при автопоиске выдаются результаты в виде:
"Иван Иванов 00000001" <email@email.com> (ivan.ivanov)
Т.е. название компании не отображается. Не могу расковырять где форматируется результат запроса (я подозреваю что это делается уже яваскриптами и AJAX-ом...). Запрос используется тот же самый, из Kernel/System/CustomerUser/DB.pm подпрограмма CustomerSearch, можно в запросе в SELECT добавить название компании и подставить в результат автопоиска...
Немножко раскрутил это дело, так как для меня актуально.
Парсер строки частично(а может и весь) находится в файле "Core.Agent.CustomerSearch.js", по крайней мере строка

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

label: this.CustomerValue [b]+ " (" + this.CustomerKey + ")"[/b],
формирует вид "Иван Иванов 00000001" <email@email.com> + (login)
Хотя для меня логин в результатах и не нужен, но этот файл трогать не стал(особо не мешает).
Далее разбираем первую часть "Иван Иванов 00000001" <email@email.com>.
Разделим строку еще на две части "Иван Иванов 00000001" и <email@email.com>.
Смотрим строку CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'], в Defaults.pm(правим тут или в Config.pm, кто как читает документацию :) ). Изменяя названия полей изменяем отображение результата.
"email" есть разделителем на две части.
Рассмотрим два варианта размещения айдишки(customer_id):
CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email' ] - "Иван Иванов 00000001" <email@email.com> (login)
CustomerUserListFields => ['login', 'first_name', 'last_name', 'email', 'customer_id' ] - "Иван Иванов" <email@email.com 00000001> (login)
Убираем "email" из строки:
CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id'] - Иван Иванов 00000001 (login)
Подбираем информацию которая Вам нужна, мне актуальна строка "Имя компании - Заголовок клиента (login)". Логин, как уже говорил остался потому как не охота править ява скрипты.
Но у нас остаётся вопрос с именем компании в результате.
файл Kernel/System/CustomerUser/DB.pm
подпрограмма CustomerSearch
строка
my $SQL = "SELECT $Self->{CustomerKey} ";
заменяем на
my $SQL = "SELECT $Self->{CustomerTable}.$Self->{CustomerKey} ";
только заменяем на:

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

my $SQL = "SELECT $Self->{CustomerTable}.$Self->{CustomerKey}, CONCAT('', ".$Self->{ConfigObject}->Get('CustomerCompany')->{Params}->{Table}.".name, ' - ' )";
В итоге получил то что хотел:
Снимок.PNG
Снимок.PNG (9.48 КБ) 7874 просмотра
Удачи!

З.Ы. Ссылочка на небольшое обсуждение этой темы и много интересного: viewtopic.php?f=2&t=1809
Последний раз редактировалось mukexa 19 авг 2013, 21:40, всего редактировалось 2 раза.
OTRS 5s, Ubuntu 12.04

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: добавить столбец с именем клиента(С)

Сообщение alexus » 21 июн 2013, 13:28

..... и после обновления системы все ваши доработки идут лесом 8-) !

Потому что файлы DB.pm и Defaults.pm меняются на новые. Про Config.pm Вы, конечно, написали, но такие "шутки" могут людям боком выйти. Лучше сразу писать, правильно как надо!
Все измененные модули надо помещать в /Custom/Kernel/и-тут-полный-путь-повторяющий-путь-к оригинальному-файлу-модуля. Многие до этого момента в документации по разработке не доходят. Или проходят мимо. Видимо, уже все ясно и просто и зачем все эти глупости читать...

Пост, конечно, отличный, нет вопросов, спасибо огромное, но моменты, которые я указал, стоит поправить, чтобы не делать начинающим читателям подставы!
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

mukexa
OTRS Новобранец
Сообщения: 148
Зарегистрирован: 30 апр 2013, 19:08
Откуда: Украина, Киев.
Поблагодарили: 1 раз

Re: добавить столбец с именем клиента(С)

Сообщение mukexa » 21 июн 2013, 16:09

Дык внизу поста ссылочка на наше обсуждение сего вопроса, потому и оставил как есть :oops: . Вроде как это(Custom) вообще заслуживает отдельной темы и в каждом "Howtos" вставить ссылку на неё ). Такие "шутки" побуждают в человеке интерес читать документацию, как по мне. Лично я бы полез читать, чтобы узнать какая разница где править )
Да и правильно написанное не есть гарантия того, что сделают правильно. Не Вам ли знать ) В дальнейшем, если будет чего интересного, постараюсь описывать процесс полностью.
Спасибо за наставления!
OTRS 5s, Ubuntu 12.04

Ответить