-- TBCASO_VISUALIZACAO_CONF (INCLUSÃO VINCULADA A TBCASO_PAINEL)

DROP TRIGGER TBCASO_VISUALIZACAO_CONF_BI;

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_VISUALIZACAO_CONF_B01I FOR TBCASO_VISUALIZACAO_CONF
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBCASO_VISUALIZACAO_CONF,1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VISUALIZACAO_CONF_B01U FOR TBCASO_VISUALIZACAO_CONF
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

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

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

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

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

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

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

SET TERM ; ^

ALTER TABLE TBCASO_VISUALIZACAO_CONF ALTER ID SET NOT NULL;

ALTER TABLE TBCASO_VISUALIZACAO_CONF ADD UNIQUE (ID);

-- TBCASO_PAINEL (Trigger de exclusão de itens da TBCASO_VISUALIZACAO_CONF) E TB_CASO_PAINEL_CONF (Trigger de exclusão de visualização vinculada a um campo)

SET TERM ^ ;

CREATE TRIGGER TTBCASO_PAINEL_B02D FOR TBCASO_PAINEL
ACTIVE BEFORE DELETE POSITION 1
AS
BEGIN
   IF(OLD.ID > 0) THEN
   BEGIN
      DELETE FROM TBCASO_VISUALIZACAO_CONF V WHERE V.PAINEL_ID = OLD.ID;
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_PAINEL_CONF_B02D FOR TBCASO_PAINEL_CONF
ACTIVE BEFORE DELETE POSITION 1
AS
BEGIN
   IF(OLD.ID > 0) THEN
   BEGIN
      DELETE FROM TBCASO_PAINEL_CONF_ITENS I WHERE I.CAMPO_ID = OLD.ID;
      DELETE FROM TBCASO_CAMPO_DEPENDENCIA D WHERE D.CAMPO_ID = OLD.ID;
      DELETE FROM TBCASO_CAMPO_CONSULTA C WHERE C.CAMPO_ID = OLD.ID;
      DELETE FROM TBCASO_VISUALIZACAO_CAMPO V WHERE V.CAMPO_ID = OLD.ID;
   END
END
^

SET TERM ; ^

-- TBCASO_VISUALIZACAO_CAMPO

DROP TRIGGER TBCASO_VISUALIZACAO_CAMPO_BI;

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_VISUALIZACAO_CAMPO_B01I FOR TBCASO_VISUALIZACAO_CAMPO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBCASO_VISUALIZACAO_CAMPO,1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VISUALIZACAO_CAMPO_B02I FOR TBCASO_VISUALIZACAO_CAMPO
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'VISUAL: '||FN_LPAD(NEW.ID,4,0)||' INCLUIDA';
    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VISUALIZACAO_CAMPO_B01U FOR TBCASO_VISUALIZACAO_CAMPO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

HISTORICO = '';

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

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

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

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

IF(HISTORICO <> '') THEN
   BEGIN
     HISTORICO = 'VISUAL:'||FN_LPAD(NEW.ID,4,0)||' ALTERADA'||HISTORICO;
     EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VISUALIZACAO_CAMPO_B01D FOR TBCASO_VISUALIZACAO_CAMPO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'VISUAL: '||FN_LPAD(OLD.ID,4,0)||' EXCLUIDA';
    END

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

SET TERM ; ^

-- TBCASO_VALIDACAO

DROP TRIGGER TBCASO_VALIDACAO_BI;

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_VALIDACAO_B01I FOR TBCASO_VALIDACAO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBCASO_VALIDACAO,1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VALIDACAO_B02I FOR TBCASO_VALIDACAO
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'VALID: '||FN_LPAD(NEW.ID,4,0)||' INCLUIDA';
    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER TTBCASO_VALIDACAO_B01U FOR TBCASO_VALIDACAO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

HISTORICO = '';

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

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

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

IF(HISTORICO <> '') THEN
   BEGIN
     HISTORICO = 'VALID:'||FN_LPAD(NEW.ID,4,0)||' ALTERADA'||HISTORICO;
     EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_VALIDACAO_B01D FOR TBCASO_VALIDACAO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'VALID: '||FN_LPAD(OLD.ID,4,0)||' EXCLUIDA';
    END

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

SET TERM ; ^

