Настройка колонки в дайджесте

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
Борис
OTRS Новобранец
Сообщения: 59
Зарегистрирован: 15 сен 2016, 18:00

Настройка колонки в дайджесте

Сообщение Борис » 04 мар 2019, 16:02

Добрый день.

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

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

Re: Настройка колонки в дайджесте

Сообщение alexus » 04 мар 2019, 16:59

Добрый день!

Настроить - нет, нужна доработка, чтобы вытащить это время.
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

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

Борис
OTRS Новобранец
Сообщения: 59
Зарегистрирован: 15 сен 2016, 18:00

Re: Настройка колонки в дайджесте

Сообщение Борис » 04 мар 2019, 17:06

alexus писал(а):
04 мар 2019, 16:59
Добрый день!

Настроить - нет, нужна доработка, чтобы вытащить это время.
Благодарю!

alex.t
OTRS Новобранец
Сообщения: 17
Зарегистрирован: 29 апр 2018, 09:26
Поблагодарили: 1 раз

Re: Настройка колонки в дайджесте

Сообщение alex.t » 23 авг 2019, 22:08

Добрый день!

Вот решение Вашего вопроса:

1. Создаем динамическое поле с типом текст, имя обязательно укажите "DateFix", название можно любое.
2. Создаем файл TAA4OTRS_DateFix.pm, со следующим содержимым и копируем файл в папку Kernel/System/Ticket/Event :

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

package Kernel::System::Ticket::Event::TAA4OTRS_DateFix;

use strict;
use warnings;
use utf8;

our @ObjectDependencies = (
    'Kernel::System::Ticket',
);

sub new {
    my ( $Type, %Param ) = @_;

    my $Self = {};
    bless( $Self, $Type );

    return $Self;
}

sub Run {
    my ( $Self, %Param ) = @_;

    for ( qw( Data Event Config ) ) 
    {
        if ( !$Param{$_} ) 
        {
            $Kernel::OM->Get('Kernel::System::Log')->Log(
                Priority => 'error',
                Message  => "TAA4OTRS_DateFix: Need $_!"
            );
            return;
        }
    }

    if ( !$Param{Data}->{TicketID} ) 
    {
        $Kernel::OM->Get('Kernel::System::Log')->Log(
            Priority => 'error',
            Message  => "TAA4OTRS_DateFix: Need TicketID in Data!"
        );
        return;
    }
    

    my %Ticket = $Kernel::OM->Get('Kernel::System::Ticket')->TicketGet(
        TicketID      => $Param{Data}->{TicketID},
        DynamicFields => 0,    
        UserID        => 1,
    );

    if ( $Ticket{State} eq $Param{Config}->{State} )
    {
        my $DynamicField = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( Name => 'DateFix' );     

        if ( !$DynamicField ) 
        {
            $Kernel::OM->Get('Kernel::System::Log')->Log(
                Priority => 'error',
                Message  => "TAA4OTRS_DateFix: Dynamic field 'DateFix' not defined!",
            );
            return;
        }

        my $TimeObject = $Kernel::OM->Get('Kernel::System::Time');

        my ($Sec, $Min, $Hour, $Day, $Month, $Year, $WeekDay) = $TimeObject->SystemTime2Date(
            SystemTime => $TimeObject->SystemTime(),
        );

        $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->ValueSet(
            DynamicFieldConfig => $DynamicField,
            ObjectID           => $Param{Data}->{TicketID},
            Value              => "$Day.$Month.$Year $Hour:$Min", # Указываем формат времени дд.мм.гггг чч:мм. При необходимости порядок можно сменить. 
            UserID             => 1,
        )
    }

    return 1;
}

1;
3. Создаем файл TAA4OTRS_DateFix.xml, со следующим содержимым и копируем файл в папку Kernel/Config/Files, тут <Item Key="State">Решено</Item>, в место "Решено", укажите состояние которое будем отслеживать:

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

<?xml version="1.0" encoding="utf-8"?>
<otrs_config version="1.0" init="Application">
    <ConfigItem Name="Ticket::EventModulePost###TAA4OTRS_DateFix" Required="0" Valid="1">
        <Description Translatable="1">Фиксация даты перевода тикета в состояние указанное в State.</Description>
        <Group>Ticket</Group>
        <SubGroup>Core::Ticket</SubGroup>
        <Setting>
            <Hash>
                <Item Key="Module">Kernel::System::Ticket::Event::TAA4OTRS_DateFix</Item>
                <Item Key="Event">TicketStateUpdate</Item>
                <Item Key="State">Решено</Item>
            </Hash>
        </Setting>
    </ConfigItem>
</otrs_config>   
4. В конфигурации Ticket → Frontend::Agent::Dashboard, находим DashboardBackend###0130-TicketOpen (для открытых заявок), в DefaultColumns добавляем строку ключ DynamicField_DateFix, значение 1. При необходимости поле можно вывести в любой вид где можно выводить динамическое поле.

Все готово, теперь при переводе заявки в нужное состояние, зафиксируется дата в динамическом поле.

Лень было упаковать в установочный пакет, если не разберетесь пишите, упакую. :?

Работает в 5 версии OTRS
Последний раз редактировалось alex.t 25 авг 2019, 18:24, всего редактировалось 1 раз.

Ответить