SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPERFIL_NF_USUARIOS_B03I FOR TBPERFIL_NF_USUARIOS
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(4000);
DECLARE VARIABLE HISTORICO_USUARIO VARCHAR(4000);
DECLARE VARIABLE DESCRICAO_TIPO VARCHAR(400);
DECLARE VARIABLE ID_PERFIL VARCHAR(10);
DECLARE VARIABLE CODIGO_PERFIL INTEGER;
DECLARE VARIABLE DESCRICAO_PERFIL VARCHAR(1000);
BEGIN
   HISTORICO         = '';
   HISTORICO_USUARIO = '';

   ID_PERFIL         = COALESCE((SELECT FIRST 1 Z.ID FROM TBPERFIL Z WHERE Z.ID = NEW.PERFIL AND Z.TABELA = 'NF'),'');
   CODIGO_PERFIL     = COALESCE((SELECT FIRST 1 Z.CONTROLE FROM TBPERFIL Z WHERE Z.ID = NEW.PERFIL AND Z.TABELA = 'NF'),0);
   DESCRICAO_PERFIL  = COALESCE((SELECT FIRST 1 Z.DESCRICAO FROM TBPERFIL Z WHERE Z.ID = NEW.PERFIL AND Z.TABELA = 'NF'),'');
   IF(NEW.USUARIO_ID > 0) THEN
   BEGIN
       HISTORICO         = HISTORICO||' USUARIO: '||FN_LPAD(NEW.USUARIO_ID,4,0)||' INCLUIDO';
       HISTORICO_USUARIO = HISTORICO_USUARIO||' PERFIL NF: '||:ID_PERFIL||' - '||:DESCRICAO_PERFIL||' INCLUIDO';
   END

   IF(HISTORICO <> '') THEN
   BEGIN
       EXECUTE PROCEDURE SPI_HISTORICO('TBPERFIL', CODIGO_PERFIL, HISTORICO);
   END

   IF(:HISTORICO_USUARIO <> '') THEN
   BEGIN
       EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO', NEW.USUARIO_ID, :HISTORICO_USUARIO);
   END
END^

CREATE OR ALTER TRIGGER TTBPERFIL_NF_USUARIOS_B01D FOR TBPERFIL_NF_USUARIOS
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(4000);
DECLARE VARIABLE HISTORICO_USUARIO VARCHAR(4000);
DECLARE VARIABLE DESCRICAO_TIPO VARCHAR(400);   
DECLARE VARIABLE CODIGO_PERFIL INTEGER;
DECLARE VARIABLE ID_PERFIL VARCHAR(10);
DECLARE VARIABLE DESCRICAO_PERFIL VARCHAR(1000);
BEGIN
   :HISTORICO        = '';
   :HISTORICO_USUARIO= '';
   :ID_PERFIL        = COALESCE((SELECT FIRST 1 Z.ID FROM TBPERFIL Z WHERE Z.ID = OLD.PERFIL AND Z.TABELA = 'NF'),'');
   :CODIGO_PERFIL    = COALESCE((SELECT FIRST 1 Z.CONTROLE FROM TBPERFIL Z WHERE Z.ID = OLD.PERFIL AND Z.TABELA = 'NF'),0);
   :DESCRICAO_PERFIL = COALESCE((SELECT FIRST 1 Z.DESCRICAO FROM TBPERFIL Z WHERE Z.ID = OLD.PERFIL AND Z.TABELA = 'NF'),'');
   IF(OLD.USUARIO_ID > 0) THEN
   BEGIN
       :HISTORICO         = :HISTORICO||' USUARIO:'||FN_LPAD(OLD.USUARIO_ID,4,0)||' EXCLUIDO.';
       :HISTORICO_USUARIO = :HISTORICO_USUARIO||' PERFIL NF: '||:ID_PERFIL||' - '||:DESCRICAO_PERFIL||' EXCLUIDO.';
   END

   IF(:HISTORICO <> '') THEN
   BEGIN
       EXECUTE PROCEDURE SPI_HISTORICO('TBPERFIL', CODIGO_PERFIL, HISTORICO);
   END                                      

   IF(:HISTORICO_USUARIO <> '') THEN
   BEGIN
       EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO', OLD.USUARIO_ID, HISTORICO_USUARIO);
   END
END^

SET TERM ; ^

