CREATE OR ALTER TRIGGER TBJUSTIFICATIVA_B01I FOR TBJUSTIFICATIVA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBJUSTIFICATIVA,1);
END;

CREATE TABLE TBJUSTIFICATIVA_GRUPO (
    ID INTEGER NOT NULL,
    FLAG VARCHAR(50) NOT NULL,
    DESCRICAO VARCHAR(200));

ALTER TABLE TBJUSTIFICATIVA_GRUPO
ADD CONSTRAINT PK_TBJUSTIFICATIVA_GRUPO
PRIMARY KEY (ID);

CREATE SEQUENCE GTBJUSTIFICATIVA_GRUPO;

SET GENERATOR GTBJUSTIFICATIVA_GRUPO TO 1;

CREATE TRIGGER TTBJUSTIFICATIVA_GRUPO_B01I FOR TBJUSTIFICATIVA_GRUPO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBJUSTIFICATIVA_GRUPO,1);
END;

CREATE TRIGGER TTBJUSTIFICATIVA_GRUPO_B02I FOR TBJUSTIFICATIVA_GRUPO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',NEW.ID, HISTORICO);
    END
end;

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

    HISTORICO = '';

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',NEW.ID, HISTORICO);
    END
end;

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

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',old.ID, HISTORICO);
    END
end;

CREATE TRIGGER TTBJUSTIFICATIVA_GRUPO_B03I FOR TBJUSTIFICATIVA_GRUPO
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable FLAG_A int;
BEGIN
   FLAG_A = coalesce((SELECT COUNT (FLAG) FROM TBJUSTIFICATIVA_GRUPO
       WHERE FLAG = NEW.FLAG),0) ;

    IF (FLAG_A > 0) THEN
    BEGIN
        EXCEPTION "..." 'Erro: Flag já existente, não é possível repetir Flags';
    END
end;

CREATE TRIGGER TTBJUSTIFICATIVA_B02I FOR TBJUSTIFICATIVA
ACTIVE BEFORE INSERT POSITION 0
AS
   DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Item Incluido:'||new.ID;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',(SELECT T.ID FROM TBJUSTIFICATIVA_GRUPO T WHERE FLAG = NEW.FLAG), HISTORICO);
    END
end;

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

    HISTORICO = '';

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

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

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

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

    IF ( OLD.FALG_DESCRICAO <> NEW.FALG_DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||',Flag Descricao:'|| OLD.FALG_DESCRICAO||'->'||NEW.FALG_DESCRICAO;
    END

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

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

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

    IF ( OLD.NOTIFICAR_EMAIL <> NEW.NOTIFICAR_EMAIL) THEN
    BEGIN
        HISTORICO = HISTORICO||',Notificar Email:'|| OLD.NOTIFICAR_EMAIL||'->'||NEW.NOTIFICAR_EMAIL;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',(SELECT T.ID FROM TBJUSTIFICATIVA_GRUPO T WHERE FLAG = NEW.FLAG),'Item:'||OLD.ID||' '||HISTORICO);
    END
end;

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

    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Item Excluido:'||OLD.ID;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBJUSTIFICATIVA_GRUPO',(SELECT T.ID FROM TBJUSTIFICATIVA_GRUPO T WHERE FLAG = OLD.FLAG), HISTORICO);
    END
end;





