ALTER TABLE TBPCM_REGISTRO_CHAMADO_MSG
    ADD TIPO_MENSAGEM CHAR(1) CHARACTER SET UTF8 COLLATE UTF8;

COMMENT ON COLUMN TBPCM_REGISTRO_CHAMADO_MSG.TIPO_MENSAGEM IS
'0 - Postagem;
1 - Anotação;';

SET TERM ^ ;

CREATE OR ALTER trigger ttbpcm_registro_cha_msg_b01u for tbpcm_registro_chamado_msg
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_USUARIO VARCHAR(500);
DECLARE VARIABLE NEW_USUARIO VARCHAR(500);
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), '');

    IF (OLD.MENSAGEM <> NEW.MENSAGEM) THEN
    BEGIN
        HISTORICO = HISTORICO||' CORPO DA MENSAGEM ALTERADA';
    END

    IF (OLD.DATAHORA_ENV <> NEW.DATAHORA_ENV) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.ENVIO:'||FORMATDATETIME_S(OLD.DATAHORA_ENV)||'->'||FORMATDATETIME_S(NEW.DATAHORA_ENV);
    END

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'MENSAGEM:'||FN_LPAD(OLD.ID, 4, '0')||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPCM_REGISTRO_CHAMADO', OLD.REGISTRO_CHAMADO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

