ALTER TABLE TBPCM_REGISTRO_CHAMADO
    ADD ORIGEM CHAR(1) CHARACTER SET UTF8 COLLATE UTF8;

COMMENT ON COLUMN TBPCM_REGISTRO_CHAMADO.ORIGEM IS
'Origem do Chamado.

1 - GC;
2 - WHATSAPP;
3 - APLICATIVO;

(Obs.: Será utilizado para diferenciar o local de criação do chamado - plataforma utilizada)';

/********************************************************************************************/
/********************************************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbpcm_registro_chamado_b01u for tbpcm_registro_chamado
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_USUARIO VARCHAR(500);
DECLARE VARIABLE NEW_USUARIO VARCHAR(500);
DECLARE VARIABLE OLD_SETOR VARCHAR(500);
DECLARE VARIABLE NEW_SETOR VARCHAR(500); 
DECLARE VARIABLE OLD_CHAMADO_TIPO VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_TIPO VARCHAR(500);
DECLARE VARIABLE OLD_CHAMADO_CATEGORIA VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_CATEGORIA VARCHAR(500);
DECLARE VARIABLE OLD_CHAMADO_SUBCATEGORIA VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_SUBCATEGORIA VARCHAR(500);
DECLARE VARIABLE OLD_EQUIPAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_EQUIPAMENTO VARCHAR(500);
DECLARE VARIABLE OLD_OPERADOR_AT VARCHAR(500);
DECLARE VARIABLE NEW_OPERADOR_AT VARCHAR(500);
DECLARE VARIABLE OLD_OPERADOR_FI VARCHAR(500);
DECLARE VARIABLE NEW_OPERADOR_FI VARCHAR(500);
DECLARE VARIABLE OLD_USER_SOLICIT VARCHAR(500);
DECLARE VARIABLE NEW_USER_SOLICIT VARCHAR(500);

DECLARE VARIABLE USER_OP INTEGER;
BEGIN

    HISTORICO = '';
    OLD_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.USUARIO FROM TBUSUARIO A WHERE A.CODIGO = OLD.USUARIO_ID), '');
    NEW_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.USUARIO FROM TBUSUARIO A WHERE A.CODIGO = NEW.USUARIO_ID), '');
    OLD_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBPCM_SETOR B WHERE B.ID = OLD.SETOR_ID), '');
    NEW_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBPCM_SETOR B WHERE B.ID = NEW.SETOR_ID), '');
    OLD_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBPCM_CHAMADO_TIPO C WHERE C.ID = OLD.CHAMADO_TIPO_ID), '');
    NEW_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBPCM_CHAMADO_TIPO C WHERE C.ID = NEW.CHAMADO_TIPO_ID), '');
    OLD_CHAMADO_CATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA D WHERE D.ID = OLD.CHAMADO_CATEGORIA_ID), '');
    NEW_CHAMADO_CATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA D WHERE D.ID = NEW.CHAMADO_CATEGORIA_ID), '');
    OLD_CHAMADO_SUBCATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO FROM TBPCM_CHAMADO_SUBCATEGORIA E WHERE E.ID = OLD.CHAMADO_SUBCATEGORIA_ID), '');
    NEW_CHAMADO_SUBCATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO FROM TBPCM_CHAMADO_SUBCATEGORIA E WHERE E.ID = NEW.CHAMADO_SUBCATEGORIA_ID), '');
    OLD_EQUIPAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 7, '0')||' - '||F.DESCRICAO FROM TBPATRIMONIO F WHERE F.ID = OLD.EQUIPAMENTO_ID), '');
    NEW_EQUIPAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 7, '0')||' - '||F.DESCRICAO FROM TBPATRIMONIO F WHERE F.ID = NEW.EQUIPAMENTO_ID), '');
    OLD_OPERADOR_AT = COALESCE((SELECT FIRST 1 FN_LPAD(I.CODIGO, 4, '0')||' - '||I.USUARIO FROM TBPCM_SETOR_OPERADOR G LEFT JOIN TBUSUARIO I ON I.CODIGO = G.USUARIO_ID WHERE G.ID = OLD.OPERADOR_FINALIZACAO), '');
    NEW_OPERADOR_AT = COALESCE((SELECT FIRST 1 FN_LPAD(I.CODIGO, 4, '0')||' - '||I.USUARIO FROM TBPCM_SETOR_OPERADOR G LEFT JOIN TBUSUARIO I ON I.CODIGO = G.USUARIO_ID WHERE G.ID = NEW.OPERADOR_FINALIZACAO), '');
    OLD_OPERADOR_FI = COALESCE((SELECT FIRST 1 FN_LPAD(J.CODIGO, 4, '0')||' - '||J.USUARIO FROM TBPCM_SETOR_OPERADOR H LEFT JOIN TBUSUARIO J ON J.CODIGO = H.USUARIO_ID WHERE H.ID = OLD.OPERADOR_FINALIZACAO), '');
    NEW_OPERADOR_FI = COALESCE((SELECT FIRST 1 FN_LPAD(J.CODIGO, 4, '0')||' - '||J.USUARIO FROM TBPCM_SETOR_OPERADOR H LEFT JOIN TBUSUARIO J ON J.CODIGO = H.USUARIO_ID WHERE H.ID = NEW.OPERADOR_FINALIZACAO), '');
    OLD_USER_SOLICIT = COALESCE((SELECT FIRST 1 FN_LPAD(K.CODIGO, 4, '0')||' - '||K.USUARIO FROM TBUSUARIO K WHERE K.CODIGO = OLD.USUARIO_SOLICITANTE_ID), '');
    NEW_USER_SOLICIT = COALESCE((SELECT FIRST 1 FN_LPAD(K.CODIGO, 4, '0')||' - '||K.USUARIO FROM TBUSUARIO K WHERE K.CODIGO = NEW.USUARIO_SOLICITANTE_ID), '');

    USER_OP = COALESCE((SELECT FIRST 1 T.ID FROM TBPCM_SETOR_OPERADOR T WHERE T.USUARIO_ID = FN_CURRENT_USER_ID() AND T.SETOR_ID = OLD.SETOR_ID), 0);

    IF (OLD.STATUS > 0 AND USER_OP = 0) THEN
    BEGIN
        IF ( (OLD.STATUS = 5) OR (OLD.STATUS = 6) ) THEN
        BEGIN
            IF (OLD.STATUS = 5) THEN
            BEGIN
                EXCEPTION "..." 'CHAMADO ATENDIDO. ALTERAÇÃO NÃO AUTORIZADA!';
            END
    
            IF (OLD.STATUS = 6) THEN
            BEGIN
                EXCEPTION "..." 'CHAMADO CANCELADO. ALTERAÇÃO NÃO AUTORIZADA!';
            END
        END
    
        IF ( (OLD.SETOR_ID <> NEW.SETOR_ID) OR (OLD.URGENCIA <> NEW.URGENCIA) OR (OLD.SOLICITANTE_NOME <> NEW.SOLICITANTE_NOME) OR (OLD.SOLICITANTE_SETOR <> NEW.SOLICITANTE_SETOR) OR (OLD.SOLICITANTE_CARGO <> NEW.SOLICITANTE_CARGO) OR (OLD.CHAMADO_TIPO_ID <> NEW.CHAMADO_TIPO_ID) OR (OLD.CHAMADO_CATEGORIA_ID <> NEW.CHAMADO_CATEGORIA_ID) OR (OLD.CHAMADO_SUBCATEGORIA_ID <> NEW.CHAMADO_SUBCATEGORIA_ID) OR (OLD.EQUIPAMENTO_ID <> NEW.EQUIPAMENTO_ID) OR (OLD.DESCRICAO <> NEW.DESCRICAO) ) THEN
        BEGIN
            EXCEPTION "..." 'O CHAMADO:'||FN_LPAD(OLD.ID, 4, '0')||' APRESENTA SITUAÇÃO:'||IIF(OLD.STATUS = 0, 'ABERTO', IIF(OLD.STATUS = 1, 'EM ATENDIMENTO', IIF(OLD.STATUS = 2, 'AGUARDANDO INFORMAÇÕES DE TERCEIROS', IIF(OLD.STATUS = 3, 'AGUARDANDO INFORMAÇÕES DO SOLICITANTE', IIF(OLD.STATUS = 4, 'ATENDIMENTO PAUSADO', IIF(OLD.STATUS = 5, 'ATENDIDO', IIF(OLD.STATUS = 6, 'FECHADO', '')))))))||'. ALTERAÇÃO NÃO AUTORIZADA!';
        END
    END

    IF (OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
    END

    IF (OLD.USUARIO_ID <> NEW.USUARIO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' USUARIO:'||OLD_USUARIO||'->'||NEW_USUARIO;
    END

    IF (OLD.SETOR_ID <> NEW.SETOR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' SETOR:'||OLD_SETOR||'->'||NEW_SETOR;
    END

    IF (OLD.USUARIO_SOLICITANTE_ID <> NEW.USUARIO_SOLICITANTE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' SOLICIT.USUARIO:'||OLD_USER_SOLICIT||'->'||NEW_USER_SOLICIT;
    END

    IF (OLD.SOLICITANTE_NOME <> NEW.SOLICITANTE_NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||' SOLIC.NOME:'||OLD.SOLICITANTE_NOME||'->'||NEW.SOLICITANTE_NOME;
    END

    IF (OLD.SOLICITANTE_SETOR <> NEW.SOLICITANTE_SETOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' SOLIC.SETOR:'||OLD.SOLICITANTE_SETOR||'->'||NEW.SOLICITANTE_SETOR;
    END

    IF (OLD.SOLICITANTE_CARGO <> NEW.SOLICITANTE_CARGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' SOLIC.CARGO:'||OLD.SOLICITANTE_CARGO||'->'||NEW.SOLICITANTE_CARGO;
    END

    IF (OLD.SOLICITANTE_CONTATO <> NEW.SOLICITANTE_CONTATO) THEN
    BEGIN
        HISTORICO = HISTORICO||' INFORMACOES DE CONTATO DO SOLICITANTE ALTERADAS';
    END

    IF (OLD.CHAMADO_TIPO_ID <> NEW.CHAMADO_TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' OCORR.TIPO:'||OLD_CHAMADO_TIPO||'->'||NEW_CHAMADO_TIPO;
    END

    IF (OLD.CHAMADO_CATEGORIA_ID <> NEW.CHAMADO_CATEGORIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' OCORR.CAT.:'||OLD_CHAMADO_CATEGORIA||'->'||NEW_CHAMADO_CATEGORIA;
    END

    IF (OLD.CHAMADO_SUBCATEGORIA_ID <> NEW.CHAMADO_SUBCATEGORIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' OCORR.SUBCAT.:'||OLD_CHAMADO_SUBCATEGORIA||'->'||NEW_CHAMADO_SUBCATEGORIA;
    END

    IF (OLD.PRIORIDADE <> NEW.PRIORIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' PRIORIDADE:'||OLD.PRIORIDADE||'->'||NEW.PRIORIDADE;
    END

    IF (OLD.URGENCIA <> NEW.URGENCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||' URGENCIA:'||OLD.URGENCIA||'->'||NEW.URGENCIA;
    END

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESCRICAO DO PROBLEMA ALTERADA';
    END

    IF (OLD.EQUIPAMENTO_ID <> NEW.EQUIPAMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' EQUIPAMENTO:'||OLD_EQUIPAMENTO||'->'||NEW_EQUIPAMENTO;
    END

    IF (OLD.DATAHORA_REG <> NEW.DATAHORA_REG) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA REG:'||FORMATDATETIME_S(OLD.DATAHORA_REG)||'->'||FORMATDATETIME_S(NEW.DATAHORA_REG);
    END

    IF (OLD.DATAHORA_PREVISAO_RESP <> NEW.DATAHORA_PREVISAO_RESP) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA PREV.RESP:'||FORMATDATETIME_S(OLD.DATAHORA_PREVISAO_RESP)||'->'||FORMATDATETIME_S(NEW.DATAHORA_PREVISAO_RESP);
    END

    IF (OLD.DATAHORA_PREVISAO_SOLU <> NEW.DATAHORA_PREVISAO_SOLU) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA PREV.SOLU:'||FORMATDATETIME_S(OLD.DATAHORA_PREVISAO_SOLU)||'->'||FORMATDATETIME_S(NEW.DATAHORA_PREVISAO_SOLU);
    END

    IF (OLD.DATAHORA_CHAMADO <> NEW.DATAHORA_CHAMADO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA CHAMADO:'||FORMATDATETIME_S(OLD.DATAHORA_CHAMADO)||'->'||FORMATDATETIME_S(NEW.DATAHORA_CHAMADO);
    END

    IF (OLD.DATAHORA_FINALIZADO <> NEW.DATAHORA_FINALIZADO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA FINALIZADO:'||FORMATDATETIME_S(OLD.DATAHORA_FINALIZADO)||'->'||FORMATDATETIME_S(NEW.DATAHORA_FINALIZADO);
    END

    IF (OLD.DATAHORA_ATENDIMENTO <> NEW.DATAHORA_ATENDIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA ATENDIMENTO:'||FORMATDATETIME_S(OLD.DATAHORA_ATENDIMENTO)||'->'||FORMATDATETIME_S(NEW.DATAHORA_ATENDIMENTO);
    END

    IF (OLD.DATAHORA_SOLUCAO <> NEW.DATAHORA_SOLUCAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA/HORA SOLUCAO:'||FORMATDATETIME_S(OLD.DATAHORA_SOLUCAO)||'->'||FORMATDATETIME_S(NEW.DATAHORA_SOLUCAO);
    END

    IF (OLD.OPERADOR_ATENDIMENTO <> NEW.OPERADOR_ATENDIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OPERADOR ATEND:'||OLD_OPERADOR_AT||'->'||NEW_OPERADOR_AT;
    END

    IF (OLD.OPERADOR_FINALIZACAO <> NEW.OPERADOR_FINALIZACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OPERADOR FINAL:'||OLD_OPERADOR_FI||'->'||NEW_OPERADOR_FI;
    END

    IF (OLD.EQUIPAMENTO_SEM_CADASTRO <> NEW.EQUIPAMENTO_SEM_CADASTRO) THEN
    BEGIN
        HISTORICO = HISTORICO||' EQUIP.SEM CAD.:'||OLD.EQUIPAMENTO_SEM_CADASTRO||'->'||NEW.EQUIPAMENTO_SEM_CADASTRO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPCM_REGISTRO_CHAMADO', OLD.ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbpcm_registro_chamado_b04u for tbpcm_registro_chamado
active before update position 3
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OP_SETOR INTEGER;
DECLARE VARIABLE MENSAGEM VARCHAR(500);

DECLARE VARIABLE OLD_SETOR VARCHAR(500);
DECLARE VARIABLE NEW_SETOR VARCHAR(500);
DECLARE VARIABLE OLD_USER_SOLICIT VARCHAR(500);
DECLARE VARIABLE NEW_USER_SOLICIT VARCHAR(500);
DECLARE VARIABLE OLD_CHAMADO_TIPO VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_TIPO VARCHAR(500);
DECLARE VARIABLE OLD_CHAMADO_CATEGORIA VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_CATEGORIA VARCHAR(500);
DECLARE VARIABLE OLD_CHAMADO_SUBCATEGORIA VARCHAR(500);
DECLARE VARIABLE NEW_CHAMADO_SUBCATEGORIA VARCHAR(500);
DECLARE VARIABLE OLD_EQUIPAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_EQUIPAMENTO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.SETOR_ID <> NEW.SETOR_ID) THEN
    BEGIN
        OLD_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBPCM_SETOR B WHERE B.ID = OLD.SETOR_ID), '');
        NEW_SETOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBPCM_SETOR B WHERE B.ID = NEW.SETOR_ID), '');

        HISTORICO = HISTORICO||'<br> <strong>Setor: </strong>'||OLD_SETOR||'->'||NEW_SETOR;
    END

    IF (OLD.USUARIO_SOLICITANTE_ID <> NEW.USUARIO_SOLICITANTE_ID) THEN
    BEGIN
        OLD_USER_SOLICIT = COALESCE((SELECT FIRST 1 FN_LPAD(K.CODIGO, 4, '0')||' - '||K.USUARIO FROM TBUSUARIO K WHERE K.CODIGO = OLD.USUARIO_SOLICITANTE_ID), '');
        NEW_USER_SOLICIT = COALESCE((SELECT FIRST 1 FN_LPAD(K.CODIGO, 4, '0')||' - '||K.USUARIO FROM TBUSUARIO K WHERE K.CODIGO = NEW.USUARIO_SOLICITANTE_ID), '');

        HISTORICO = HISTORICO||'<br> <strong>Usuário Solicitante: </strong>'||OLD_USER_SOLICIT||'->'||NEW_USER_SOLICIT;
    END

    IF (OLD.SOLICITANTE_NOME <> NEW.SOLICITANTE_NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Nome: </strong>'||OLD.SOLICITANTE_NOME||'->'||NEW.SOLICITANTE_NOME;
    END

    IF (OLD.SOLICITANTE_SETOR <> NEW.SOLICITANTE_SETOR) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Setor: </strong>'||OLD.SOLICITANTE_SETOR||'->'||NEW.SOLICITANTE_SETOR;
    END

    IF (OLD.SOLICITANTE_CARGO <> NEW.SOLICITANTE_CARGO) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Cargo: </strong>'||OLD.SOLICITANTE_CARGO||'->'||NEW.SOLICITANTE_CARGO;
    END

    IF (OLD.CHAMADO_TIPO_ID <> NEW.CHAMADO_TIPO_ID) THEN
    BEGIN
        OLD_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBPCM_CHAMADO_TIPO C WHERE C.ID = OLD.CHAMADO_TIPO_ID), '');
        NEW_CHAMADO_TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBPCM_CHAMADO_TIPO C WHERE C.ID = NEW.CHAMADO_TIPO_ID), '');
    
        HISTORICO = HISTORICO||'<br> <strong>Tipo de Chamado: </strong>'||OLD_CHAMADO_TIPO||'->'||NEW_CHAMADO_TIPO;
    END

    IF (OLD.CHAMADO_CATEGORIA_ID <> NEW.CHAMADO_CATEGORIA_ID) THEN
    BEGIN
        OLD_CHAMADO_CATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA D WHERE D.ID = OLD.CHAMADO_CATEGORIA_ID), '');
        NEW_CHAMADO_CATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA D WHERE D.ID = NEW.CHAMADO_CATEGORIA_ID), '');
    
        HISTORICO = HISTORICO||'<br> <strong>Categoria: </strong>'||OLD_CHAMADO_CATEGORIA||'->'||NEW_CHAMADO_CATEGORIA;
    END

    IF (OLD.CHAMADO_SUBCATEGORIA_ID <> NEW.CHAMADO_SUBCATEGORIA_ID) THEN
    BEGIN
        OLD_CHAMADO_SUBCATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO FROM TBPCM_CHAMADO_SUBCATEGORIA E WHERE E.ID = OLD.CHAMADO_SUBCATEGORIA_ID), '');
        NEW_CHAMADO_SUBCATEGORIA = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO FROM TBPCM_CHAMADO_SUBCATEGORIA E WHERE E.ID = NEW.CHAMADO_SUBCATEGORIA_ID), '');
    
        HISTORICO = HISTORICO||'<br> <strong>Subcategoria: </strong>'||OLD_CHAMADO_SUBCATEGORIA||'->'||NEW_CHAMADO_SUBCATEGORIA;
    END

    IF (OLD.PRIORIDADE <> NEW.PRIORIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Prioridade: </strong>'||IIF(OLD.PRIORIDADE = 1, 'Normal', IIF(OLD.PRIORIDADE = 2, 'Alta', IIF(OLD.PRIORIDADE = 3, 'Crítica', '')))||'->'||IIF(NEW.PRIORIDADE = 1, 'Normal', IIF(NEW.PRIORIDADE = 2, 'Alta', IIF(NEW.PRIORIDADE = 3, 'Crítica', '')));
    END

    IF (OLD.URGENCIA <> NEW.URGENCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Urgência: </strong>'||IIF(OLD.URGENCIA = '0', 'Desmarcado', 'Marcado')||'->'||IIF(NEW.URGENCIA = '0', 'Desmarcado', 'Marcado');
    END

    IF (OLD.EQUIPAMENTO_ID <> NEW.EQUIPAMENTO_ID) THEN
    BEGIN
        OLD_EQUIPAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 7, '0')||' - '||F.DESCRICAO FROM TBPATRIMONIO F WHERE F.ID = OLD.EQUIPAMENTO_ID), '');
        NEW_EQUIPAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 7, '0')||' - '||F.DESCRICAO FROM TBPATRIMONIO F WHERE F.ID = NEW.EQUIPAMENTO_ID), '');
    
        HISTORICO = HISTORICO||'<br> <strong>Equipamento: </strong>'||OLD_EQUIPAMENTO||'->'||NEW_EQUIPAMENTO;
    END

    IF (OLD.EQUIPAMENTO_SEM_CADASTRO <> NEW.EQUIPAMENTO_SEM_CADASTRO) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Equipamento sem Cadastro: </strong>'||IIF(OLD.EQUIPAMENTO_SEM_CADASTRO = '0', 'Desmarcado', 'Marcado')||'->'||IIF(NEW.EQUIPAMENTO_SEM_CADASTRO = '0', 'Desmarcado', 'Marcado');
    END

    IF (OLD.SOLICITANTE_CONTATO <> NEW.SOLICITANTE_CONTATO) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br><br> As informações de <strong>contato </strong>foram alteradas!';
    END

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||'<br> <strong>Descrição </strong>do problema foi alterada!';
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN

        OP_SETOR = COALESCE((SELECT FIRST 1 T.ID FROM TBPCM_SETOR_OPERADOR T WHERE T.USUARIO_ID = FN_CURRENT_USER_ID() AND T.SETOR_ID = OLD.SETOR_ID), 0);
        MENSAGEM = 'Informações do Chamado Alteradas: <br> '||FN_ELIPSES(HISTORICO, 500);
    
        IF (OLD.STATUS > 0 AND OP_SETOR > 0) THEN
        BEGIN
    
            INSERT INTO TBPCM_REGISTRO_CHAMADO_MSG (REGISTRO_CHAMADO_ID, MENSAGEM, DATAHORA_ENV, USUARIO_ID, REMETENTE, STATUS_CHAMADO, TIPO_MENSAGEM)
                VALUES (NEW.ID, :MENSAGEM, CURRENT_TIMESTAMP, FN_CURRENT_USER_ID(), '2', OLD.STATUS, '2');
    
        END
    END
END
^

SET TERM ; ^

