Dica para relatórios de SLA – OTRS

Faz um bom tempo que não escrevo por aqui, mas vamos la.

Seguindo uma linha de dicas que venho escrevendo para facilitar nossa vida para criação dos relatórios para o OTRS vou falar hoje sobre os relatórios de SLA.

Existem três campos importantes para isso, ambos estão na tabela ticket.

escalation_update_time
escalation_response_time
escalation_solution_time

O que acontece é que esses campos estão no formato Unix Time

Então para converter.

use otrs;

select tn,
FROM_UNIXTIME(escalation_update_time),
FROM_UNIXTIME(escalation_response_time),
FROM_UNIXTIME(escalation_solution_time),
FROM_UNIXTIME(escalation_time)
from ticket
where ticket.tn=<TICKETNUMEBER>;

Quando você seleciona o SQL esses campos são preenchidos e quando o SLA é cumprido ele é zerado então o que fazer pra resolver esse problema.

CREATE TABLE IF NOT EXISTS `TEMPOS_SLA` (
`tn` varchar(50) NOT NULL,
`TEMPO_RESPOSTA` datetime NOT NULL,
`TEMPO_ATUALIZACAO` datetime NOT NULL,
`TEMPO_ENCERRAMENTO` datetime NOT NULL,
UNIQUE KEY `tn` (`tn`)
)
USE OTRS;
DELIMITER $$
DROP TRIGGER IF EXISTS `otrs`.`RegistrarSLA`$$
CREATE TRIGGER `RegistrarSLA` AFTER UPDATE ON `ticket`
FOR EACH ROW
BEGIN
IF NEW.escalation_update_time !=0 THEN
REPLACE INTO TEMPOS_SLA
(tn,TEMPO_RESPOSTA,TEMPO_ATUALIZACAO,TEMPO_ENCERRAMENTO)
SELECT t.tn, FROM_UNIXTIME(t.escalation_response_time),
FROM_UNIXTIME(t.escalation_update_time),
FROM_UNIXTIME(t.escalation_solution_time) FROM ticket t,ticket_state
ts,ticket_state_type tst WHERE t.tn=NEW.tn and t.ticket_state_id=ts.id and
tst.id=ts.type_id and tst.id!=3;
END IF;
END
$$
DELIMITER ;
A trigger foi baseada numa dica do “Leonardo Certuche”.

Agora é conta de mais e menos pra criar relatórios apresentáveis.

Em um próximo momento apresento algum modelo desse relatório.

Por hoje é isso pessoal.

14 comentários sobre “Dica para relatórios de SLA – OTRS

  1. Bom dia Jr, gostaria de tirar uma dúvida contigo sobre relatórios do OTRS. Não consigo extrair os relatório de quantidade de chamados por proprietário. Nos relatórios padrões do OTRS, não vejo a opção proprietário em nenhum tipo de relatório.

      • Opa Junior obrigado pelo retorno .Segue informações solicitadas .

        #tabela ticket

        +————————–+————–+——+—–+———+—————-+
        | Field | Type | Null | Key | Default | Extra |
        +————————–+————–+——+—–+———+—————-+
        | id | bigint(20) | NO | PRI | NULL | auto_increment |
        | tn | varchar(50) | NO | UNI | NULL | |
        | title | varchar(255) | YES | MUL | NULL | |
        | queue_id | int(11) | NO | MUL | NULL | |
        | ticket_lock_id | smallint(6) | NO | MUL | NULL | |
        | type_id | smallint(6) | YES | MUL | NULL | |
        | service_id | int(11) | YES | MUL | NULL | |
        | sla_id | int(11) | YES | MUL | NULL | |
        | user_id | int(11) | NO | MUL | NULL | |
        | responsible_user_id | int(11) | NO | MUL | NULL | |
        | ticket_priority_id | smallint(6) | NO | MUL | NULL | |
        | ticket_state_id | smallint(6) | NO | MUL | NULL | |
        | customer_id | varchar(150) | YES | MUL | NULL | |
        | customer_user_id | varchar(250) | YES | MUL | NULL | |
        | timeout | int(11) | NO | MUL | NULL | |
        | until_time | int(11) | NO | MUL | NULL | |
        | escalation_time | int(11) | NO | MUL | NULL | |
        | escalation_update_time | int(11) | NO | MUL | NULL | |
        | escalation_response_time | int(11) | NO | MUL | NULL | |
        | escalation_solution_time | int(11) | NO | MUL | NULL | |
        | archive_flag | smallint(6) | NO | MUL | 0 | |
        | create_time_unix | bigint(20) | NO | MUL | NULL | |
        | create_time | datetime | NO | MUL | NULL | |
        | create_by | int(11) | NO | MUL | NULL | |
        | change_time | datetime | NO | | NULL | |
        | change_by | int(11) | NO | MUL | NULL | |
        +————————–+————–+——+—–+———+—————-+

        # tabela TEMPOS_SLA

        +——————–+————-+——+—–+———+——-+
        | Field | Type | Null | Key | Default | Extra |
        +——————–+————-+——+—–+———+——-+
        | tn | varchar(50) | NO | PRI | NULL | |
        | TEMPO_RESPOSTA | datetime | NO | | NULL | |
        | TEMPO_ATUALIZACAO | datetime | NO | | NULL | |
        | TEMPO_ENCERRAMENTO | datetime | NO | | NULL | |
        +——————–+————-+——+—–+———+——-+

        # TRIGGER CRIADA

        | RegistrarSLA | UPDATE | ticket | BEGIN
        IF NEW.escalation_update_time !=0 THEN
        REPLACE INTO TEMPOS_SLA
        (tn,TEMPO_RESPOSTA,TEMPO_ATUALIZACAO,TEMPO_ENCERRAMENTO)
        SELECT t.tn, FROM_UNIXTIME(t.escalation_response_time),
        FROM_UNIXTIME(t.escalation_update_time),
        FROM_UNIXTIME(t.escalation_solution_time) FROM ticket t,ticket_state
        ts,ticket_state_type tst WHERE t.tn=NEW.tn and t.ticket_state_id=ts.id and
        tst.id=ts.type_id and tst.id!=3;
        END IF;
        END | AFTER | NULL | | root@localhost | latin1 | latin1_swedish_ci | utf8_general_ci |

  2. Ola! Preciso de ajuda. Uso OTRS 5 e ao tentar criar a Trigger aparece um erro “You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘DELIMITER $$
    CREATE TRIGGER `RegistrarSLA` AFTER UPDATE ON `ticket`
    FOR EACH ROW’ at line 1 ”

    O que precisa ser alterado?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.