SET TERM ^ ;

CREATE OR ALTER trigger ttbremessa_b1d for tbremessa
active before delete position 1
AS
DECLARE VARIABLE ESTABELECIMENTO INTEGER;
DECLARE VARIABLE USUARIO_ID INTEGER;
DECLARE VARIABLE USUARIO_NOME VARCHAR(20);
DECLARE VARIABLE DESCR VARCHAR(100);
DECLARE VARIABLE FAMILIA_ID  INTEGER;
DECLARE VARIABLE FAM_USUARIO INTEGER;
DECLARE VARIABLE Loc VARCHAR(100);
BEGIN

   if (CURRENT_USER <> 'SYSDBA' and CURRENT_USER <> 'GC') Then
       Begin

       USUARIO_ID = Coalesce((Select First 1 U.Codigo From TbUsuario U Where U.USUARIO = CURRENT_USER and U.Status = '1'),0);

          if (:USUARIO_ID = 0) then
              BEGIN
                  Exception "..." 'USUÁRIO INATIVO OU NÃO LOCALIZADO: '||CURRENT_USER;
              END

        Estabelecimento = Coalesce((Select First 1 E.Estabelecimento_Codigo From TbUsuario_Estabelecimento E Where E.Usuario_Codigo = :USUARIO_ID),0);

        For
            SELECT FIRST 1
                COALESCE((SELECT FIRST 1 F.FAMILIA_ID FROM TBUSUARIO_FAMILIA F WHERE F.FAMILIA_ID = OLD.FAMILIA_CODIGO AND F.USUARIO_ID = :USUARIO_ID),0),
                IIF(:ESTABELECIMENTO>0,COALESCE((SELECT FIRST 1 E.ESTABELECIMENTO_CODIGO FROM TBUSUARIO_ESTABELECIMENTO E WHERE E.USUARIO_CODIGO = :USUARIO_ID AND E.ESTABELECIMENTO_CODIGO = OLD.ESTABELECIMENTO_CODIGO),0),-1)
            FROM
                RDB$DATABASE
        Into :FAM_USUARIO, :ESTABELECIMENTO
        Do
        Begin

          if (:ESTABELECIMENTO = 0) then
              BEGIN
                  Exception "..." 'USUÁRIO POSSUI PERMISSÃO PARA REALIZAR OPERAÇÕES NO ESTABELECIMENTO: '||
                  Old.Estabelecimento_Codigo||'-'||Coalesce((Select First 1 E.NomeFantasia From TbEstabelecimento E Where E.Codigo = Old.Estabelecimento_Codigo),'');
              END
          if (:FAM_USUARIO = 0) then
              BEGIN
                  Exception "..." 'USUARIO NAO POSSUI PERMISSAO PARA REALIZAR OPERACOES NA FAMILIA DE PRODUTO: '||
                  OLD.FAMILIA_CODIGO||'-'||Coalesce((Select First 1 F.Descricao From TbFamilia F Where F.Codigo = OLD.FAMILIA_CODIGO),'');
              END

        End
     End 

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbcaso_painel_b3iu for tbcaso_painel
active before insert or update position 3
AS
begin
    UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO)
                      VALUES (37000 + new.id, new.menu_grupo, new.menu_grupo, new.status, '11150/'||new.id, new.descricao)
                    MATCHING (CONTROLE);
end
^

SET TERM ; ^

