CREATE OR ALTER TRIGGER TTBNFE_B5D_01 FOR TBNFE
ACTIVE BEFORE DELETE POSITION 5
AS
DECLARE VARIABLE CONTADOR INTEGER;
DECLARE VARIABLE CONTADOR_DEVOLUCAO INTEGER;
BEGIN

    CONTADOR_DEVOLUCAO = COALESCE((SELECT FIRST 1 B.ID FROM TBPDV_DEVOLUCAO_TROCA B WHERE B.NFE_DEVOLUCAO = OLD.CONTROLE),0);

    IF(:CONTADOR_DEVOLUCAO > 0)THEN
    BEGIN
      /*EXCLUIR DEVOLUÇÕES VINCULADAS AO DOCUMENTO*/
      UPDATE TBPDV_DEVOLUCAO_TROCA B SET B.NFE_DEVOLUCAO = 0 WHERE B.ID = :CONTADOR_DEVOLUCAO;
    END

    FOR
    
    SELECT FIRST 1 A.NFE_ID
      FROM TBNF_DEVOLUCAO A
     WHERE A.ESTABELECIMENTO_ID = OLD.ESTABELECIMENTO_CODIGO
       AND A.NFE_ID = OLD.CONTROLE
       AND A.NFS_ID = 0
       AND (COALESCE(A.LANCAMENTO_ID,0) > 0 OR COALESCE(A.PARCELAMENTO_ID,0) > 0)
    
    INTO :CONTADOR
    DO
    BEGIN
    
     IF (CONTADOR > 0) THEN
        BEGIN
        EXCEPTION "..." 'ATENÇÃO, JÁ EXISTEM ABATIMENTOS EM PARCELAS VINCULADAS A ESSA DEVOLUÇÃO, EXCLUSÃO CANCELADA!  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
        END
    
    END


    /*ECLUIR DEVOLUCOES MANUAIS OU AUTOMATICAS DA NOTA*/
    DELETE FROM TBNF_DEVOLUCAO A
      WHERE A.ESTABELECIMENTO_ID = OLD.ESTABELECIMENTO_CODIGO
      AND A.NFE_ID = OLD.CONTROLE
      AND A.NFS_ID = 0
      AND (COALESCE(A.LANCAMENTO_ID,0) = 0 OR COALESCE(A.PARCELAMENTO_ID,0) = 0);
END^
