CREATE OR ALTER trigger ttbavaliacao_des_resp_b1u for tbavaliacao_des_resposta
active before update position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable descricao_formacao_antiga varchar(500);
declare variable descricao_formacao_nova varchar(500);
BEGIN

    HISTORICO = '';

    IF (OLD.AVALIACAO_DES_RESP_BASE_ID <> NEW.AVALIACAO_DES_RESP_BASE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' BASE:'||OLD.AVALIACAO_DES_RESP_BASE_ID||'->'||NEW.AVALIACAO_DES_RESP_BASE_ID;
    END
    
    IF (OLD.COLABORADOR_ID <> NEW.COLABORADOR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' COL:'||OLD.COLABORADOR_ID||'->'||NEW.COLABORADOR_ID;
    END

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

    IF (OLD.COLABORADOR_CARGO_ID <> NEW.COLABORADOR_CARGO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' COL CARGO ID:'||OLD.COLABORADOR_CARGO_ID||'->'||NEW.COLABORADOR_CARGO_ID;
    END

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

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

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

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

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

    IF (OLD.PONTUACAO_TOTAL_FATOR <> NEW.PONTUACAO_TOTAL_FATOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' PONT TOT FTR:'|| CAST(OLD.PONTUACAO_TOTAL_FATOR AS NUMERIC(15, 2))||'->'||CAST(NEW.PONTUACAO_TOTAL_FATOR AS NUMERIC(15, 2));
    END

    IF (OLD.PONTUACAO_MEDIA_FATOR <> NEW.PONTUACAO_MEDIA_FATOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' PONT MED FTR:'||CAST(OLD.PONTUACAO_MEDIA_FATOR AS NUMERIC(15, 2))||'->'||CAST(NEW.PONTUACAO_MEDIA_FATOR AS NUMERIC(15, 2));
    END

    IF (OLD.FORMACAO_ESCOLHIDA_ID <> NEW.FORMACAO_ESCOLHIDA_ID) THEN
    BEGIN
        select TRIM(T.ponto) FROM TBAVALIACAO_DES_FORMACAO T WHERE T.id = OLD.FORMACAO_ESCOLHIDA_ID into descricao_formacao_antiga;
        select TRIM(T.ponto) FROM TBAVALIACAO_DES_FORMACAO T WHERE T.id = NEW.FORMACAO_ESCOLHIDA_ID into descricao_formacao_nova;
        HISTORICO = HISTORICO||' FORM ESC:'||descricao_formacao_antiga||'->'||descricao_formacao_nova;
    END

    IF (OLD.RESULTADO_FINAL_RESUMO <> NEW.RESULTADO_FINAL_RESUMO) THEN
    BEGIN
        HISTORICO = HISTORICO||' RES FIN RES:'||CAST(OLD.RESULTADO_FINAL_RESUMO AS NUMERIC(15, 2))||'->'||CAST(NEW.RESULTADO_FINAL_RESUMO AS NUMERIC(15, 2));
    END

    IF (OLD.META_MEDIA_GERAL <> NEW.META_MEDIA_GERAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' META:'||CAST(OLD.META_MEDIA_GERAL AS NUMERIC(15, 2))||'->'||CAST(NEW.META_MEDIA_GERAL AS NUMERIC(15, 2));
    END

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

    IF (HISTORICO <> '') THEN
    BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
       'TBAVALIACAO_DES_RESPOSTA', OLD.ID,
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);
    END
END;