SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_painel_b01d for tbcaso_painel
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CASO_ID INTEGER;
BEGIN

    HISTORICO = '';


    :CASO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_REGISTRO A WHERE A.PAINEL_ID = OLD.ID), 0);
    IF (COALESCE(:CASO_ID, 0) > 0) THEN
    BEGIN
        EXCEPTION "..." 'JA EXISTEM CASOS VINCULADOS A ESTE PAINEL DE CASOS. EXCLUSAO NAO AUTORIZADA!';
    END


    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'REGISTRO EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_status_b01d for tbcaso_status
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CASO_ID INTEGER;
BEGIN

    HISTORICO = '';


    :CASO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_REGISTRO A WHERE A.PAINEL_ID = OLD.PAINEL_ID AND A.STATUS_ID = OLD.ID), 0);
    IF (COALESCE(:CASO_ID, 0) > 0) THEN
    BEGIN
        EXCEPTION "..." 'JA EXISTEM CASOS VINCULADOS A ESTE STATUS. EXCLUSAO NAO AUTORIZADA!';
    END


    IF(OLD.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'STATUS: '|| FN_LPAD(OLD.ID, 4, '0')||' - '||OLD.DESCRICAO ||' EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.PAINEL_ID, FN_ELIPSES(:HISTORICO,500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_b01d for tbcaso_motivo
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CASO_ID INTEGER;
BEGIN

    HISTORICO = '';


    :CASO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_REGISTRO A WHERE A.PAINEL_ID = OLD.PAINEL_ID AND A.MOTIVO_ID = OLD.ID), 0);
    IF (COALESCE(:CASO_ID, 0) > 0) THEN
    BEGIN
        EXCEPTION "..." 'JA EXISTEM CASOS VINCULADOS A ESTE MOTIVO. EXCLUSAO NAO AUTORIZADA!';
    END


    IF(OLD.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'MOTIVO: '|| FN_LPAD(OLD.ID,4,0)||' - '||OLD.DESCRICAO ||' EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_tipo_b01d for tbcaso_tipo
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PAINEL_ID INTEGER;
DECLARE VARIABLE MOTIVO VARCHAR(500);
DECLARE VARIABLE CASO_ID INTEGER;
BEGIN

    HISTORICO = '';
    MOTIVO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = OLD.MOTIVO_ID), '');

    :PAINEL_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_PAINEL A WHERE A.ID = (SELECT FIRST 1 B.PAINEL_ID FROM TBCASO_MOTIVO B WHERE B.ID = OLD.MOTIVO_ID)), 0);

    IF (COALESCE(:PAINEL_ID, 0) > 0) THEN
    BEGIN

        
        :CASO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_REGISTRO A WHERE A.PAINEL_ID = :PAINEL_ID AND A.TIPO_ID = OLD.ID), 0);
        IF (COALESCE(:CASO_ID, 0) > 0) THEN
        BEGIN
            EXCEPTION "..." 'JA EXISTEM CASOS VINCULADOS A ESTE TIPO. EXCLUSAO NAO AUTORIZADA!';
        END


        IF (OLD.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||' TIPO: '||FN_LPAD(OLD.ID, 4, '0')||' - '||OLD.DESCRICAO||', EXCLUIDO NO MOTIVO: '||MOTIVO;
        END

        IF (HISTORICO <> '') then
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', :PAINEL_ID, FN_ELIPSES(:HISTORICO, 500));
        END
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_origem_b01d for tbcaso_origem
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PAINEL_ID INTEGER;
DECLARE VARIABLE MOTIVO_ID INTEGER;
DECLARE VARIABLE TIPO VARCHAR(500);
DECLARE VARIABLE MOTIVO VARCHAR(500);
DECLARE VARIABLE CASO_ID INTEGER;
BEGIN

    HISTORICO = '';
    TIPO = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO FROM TBCASO_TIPO B WHERE B.ID = OLD.TIPO_ID), '');

    :PAINEL_ID = 0;
    :MOTIVO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_MOTIVO A WHERE A.ID = (SELECT FIRST 1 B.MOTIVO_ID FROM TBCASO_TIPO B WHERE B.ID = OLD.TIPO_ID)), 0);

    IF (COALESCE(:MOTIVO_ID, 0) > 0) THEN
    BEGIN
        MOTIVO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = :MOTIVO_ID), '');

        :PAINEL_ID = COALESCE((SELECT FIRST 1 A.PAINEL_ID FROM TBCASO_MOTIVO A WHERE A.ID = :MOTIVO_ID), 0);
    END

    IF (COALESCE(:PAINEL_ID, 0) > 0) THEN
    BEGIN

        
        :CASO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_REGISTRO A WHERE A.PAINEL_ID = :PAINEL_ID AND A.ORIGEM_ID = OLD.ID), 0);
        IF (COALESCE(:CASO_ID, 0) > 0) THEN
        BEGIN
            EXCEPTION "..." 'JA EXISTEM CASOS VINCULADOS A ESTA ORIGEM. EXCLUSAO NAO AUTORIZADA!';
        END


        IF (OLD.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||' ORIGEM: '||FN_LPAD(OLD.ID, 4, '0')||' - '||OLD.DESCRICAO||', EXCLUIDA NO TIPO: '||TIPO||' DO MOTIVO:'||MOTIVO;
        END

        IF (HISTORICO <> '') THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', :PAINEL_ID, FN_ELIPSES(:HISTORICO, 500));
        END
    END
END
^

SET TERM ; ^

