SET TERM ^ ;

CREATE OR ALTER trigger ttboperacao_b04d for tboperacao
active before delete position 0
AS
DECLARE VARIABLE OPERACAO_CODIGO VARCHAR(3);
BEGIN
    -- NOTA FISCAL SAIDA
    FOR
      SELECT FIRST 1
        OPERACAO_CODIGO
      FROM TBNFS_ITEM NS
      WHERE NS.OPERACAO_CODIGO = OLD.CODIGO
      AND OLD.TIPO = 'S'

    INTO
    :OPERACAO_CODIGO
    DO BEGIN
        EXCEPTION "..."'OPERAÇÃO NÃO PODE SER EXCLUIDA, POIS JÁ ESTÁ SENDO UTILIZADA NO SISTEMA';
    END
     -- NOTA FISCAL ENTRADA
    FOR
      SELECT FIRST 1
        OPERACAO_CODIGO
      FROM TBNFE_ITEM  NE
      WHERE NE.OPERACAO_CODIGO = OLD.CODIGO
      AND OLD.TIPO = 'E'

    INTO
    :OPERACAO_CODIGO
    DO BEGIN
        EXCEPTION "..."'OPERAÇÃO NÃO PODE SER EXCLUIDA, POIS JÁ ESTÁ SENDO UTILIZADA NO SISTEMA';
    END

    -- PRODUTO
    FOR
      SELECT FIRST 1
        OPERACAO_CODIGO
      FROM TBPRODUTO_OPERACAO_CONTABIL   P
      WHERE P.OPERACAO_CODIGO = OLD.CODIGO

    INTO
    :OPERACAO_CODIGO
    DO BEGIN
        EXCEPTION "..."'OPERAÇÃO NÃO PODE SER EXCLUIDA, POIS JÁ ESTÁ SENDO UTILIZADA NO SISTEMA';
    END
    -- ESTOQUE
    FOR
      SELECT FIRST 1
        OPERACAO_CODIGO
      FROM TBESTOQUE_TRANSACAO_ITEM    E
      WHERE E.OPERACAO_CODIGO = OLD.CODIGO

    INTO
    :OPERACAO_CODIGO
    DO BEGIN
        EXCEPTION "..."'OPERAÇÃO NÃO PODE SER EXCLUIDA, POIS JÁ ESTÁ SENDO UTILIZADA NO SISTEMA';
    END
     -- OC
    FOR
      SELECT FIRST 1
        OPERACAO_CODIGO
      FROM TBOC_ITEM   NE
      WHERE NE.OPERACAO_CODIGO = OLD.CODIGO
      AND OLD.TIPO = 'E'

    INTO
    :OPERACAO_CODIGO
    DO BEGIN
        EXCEPTION "..."'OPERAÇÃO NÃO PODE SER EXCLUIDA, POIS JÁ ESTÁ SENDO UTILIZADA NO SISTEMA';
    END


  IF(OLD.CODIGO <> '' AND OLD.CODIGO IS NOT NULL) THEN
   BEGIN
      DELETE FROM TBOPERACAO_VINCULO_CFOP     WHERE OPERACAO_CODIGO = OLD.CODIGO;
      DELETE FROM TBOPERACAO_VINCULO_CONTABIL WHERE OPERACAO_CODIGO = OLD.CODIGO;
   END
END
^

SET TERM ; ^

