ALTER TABLE TBCASO_ACAO_ENCERRAMENTO
    ADD MOTIVO_ID INTEGER,
    ADD TIPO_ID INTEGER,
    ADD ORIGEM_ID INTEGER;

COMMENT ON COLUMN TBCASO_ACAO_ENCERRAMENTO.MOTIVO_ID IS
'ID do Motivo que será utilizado na geração do novo caso';

COMMENT ON COLUMN TBCASO_ACAO_ENCERRAMENTO.TIPO_ID IS
'ID do Tipo que será utilizado na geração do novo caso';

COMMENT ON COLUMN TBCASO_ACAO_ENCERRAMENTO.ORIGEM_ID IS
'ID da Origem que será utilizada na geração do novo caso';

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

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_acao_encerramento_b01u for tbcaso_acao_encerramento
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_NEW_PAINEL VARCHAR(500);
DECLARE VARIABLE NEW_NEW_PAINEL VARCHAR(500);
DECLARE VARIABLE OLD_MOTIVO VARCHAR(500);
DECLARE VARIABLE NEW_MOTIVO VARCHAR(500);
DECLARE VARIABLE OLD_TIPO VARCHAR(500);
DECLARE VARIABLE NEW_TIPO VARCHAR(500);
DECLARE VARIABLE OLD_ORIGEM VARCHAR(500);
DECLARE VARIABLE NEW_ORIGEM VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_NEW_PAINEL = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.TITULO FROM TBCASO_PAINEL A WHERE A.ID = OLD.NEW_PAINEL_ID), '');
    NEW_NEW_PAINEL = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.TITULO FROM TBCASO_PAINEL A WHERE A.ID = NEW.NEW_PAINEL_ID), '');

    OLD_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBCASO_MOTIVO B WHERE B.ID = OLD.MOTIVO_ID), '');
    NEW_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBCASO_MOTIVO B WHERE B.ID = NEW.MOTIVO_ID), '');
    OLD_TIPO    = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBCASO_TIPO C WHERE C.ID = OLD.TIPO_ID), '');
    NEW_TIPO    = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 4, '0')||' - '||C.DESCRICAO FROM TBCASO_TIPO C WHERE C.ID = OLD.TIPO_ID), '');
    OLD_ORIGEM  = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBCASO_ORIGEM D WHERE D.ID = OLD.ORIGEM_ID), '');
    NEW_ORIGEM  = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO FROM TBCASO_ORIGEM D WHERE D.ID = OLD.ORIGEM_ID), '');

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

    IF (OLD.NEW_PAINEL_ID <> NEW.NEW_PAINEL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' PAINEL DESTINO:'||OLD_NEW_PAINEL||'->'||NEW_NEW_PAINEL;
    END

    IF (OLD.MOTIVO_ID <> NEW.MOTIVO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOTIVO:'||OLD_MOTIVO||'->'||NEW_MOTIVO;
    END

    IF (OLD.TIPO_ID <> NEW.TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO:'||OLD_TIPO||'->'||NEW_TIPO;
    END

    IF (OLD.ORIGEM_ID <> NEW.ORIGEM_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' ORIGEM:'||OLD_ORIGEM||'->'||NEW_ORIGEM;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'PROCEDIMENTO '||FN_LPAD(OLD.ID, 4, '0')||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.PAINEL_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

