create or replace PROCEDURE FCT_EXCLUIR_PARCELAS_FATURA (
    P_NRSEQCONTRATO IN FCT_CONTRATO.NRSEQCONTRATO%TYPE,
    P_NRORG         IN NUMBER
)
AS
  V_AGRUPAMENTO  FCT_AGRUPAMENTO.NRAGRUPAMENTO%TYPE;
  V_VRVENCIMENTO FCT_FATURACONT.VRVENCIMENTO%TYPE;
BEGIN
    -- VERIFICA SE O CONTRATO ESTÁ LIGADO A UM AGRUPAMENTO
    BEGIN 
      SELECT NRAGRUPAMENTO 
      INTO V_AGRUPAMENTO
      FROM FCT_RELACAGRUPAMENTOCONT 
      WHERE NRSEQCONTRATO = P_NRSEQCONTRATO;
    EXCEPTION WHEN NO_DATA_FOUND THEN
      V_AGRUPAMENTO := NULL;
    END;
    
    IF(V_AGRUPAMENTO IS NULL) THEN 
        DELETE FROM FCT_RELACAGRUPCONTFAT
        WHERE NRSEQCONTRATO = P_NRSEQCONTRATO
           AND NRORG        = P_NRORG;
        
        DELETE FROM FCT_ITFATURACONT
        WHERE NRSEQCONTRATO = P_NRSEQCONTRATO
          AND NRORG         = P_NRORG;
           
        DELETE FROM FCT_FATURACONT
        WHERE NRSEQCONTRATO   = P_NRSEQCONTRATO
          AND NRORG           = P_NRORG
          AND NRAPURACAO      IS NULL
          AND NRMEDICAOFATURA IS NULL;
           
        DELETE FROM FCT_MEDICAOFATURA
        WHERE NRSEQCONTRATO = P_NRSEQCONTRATO
          AND NRORG         = P_NRORG
          AND IDSITUACAO    = '1';
    ELSE
      FOR C_PARCAGRUP IN(SELECT PARCELA.NRFATURACONT, PARCELA.VRVENCIMENTO, PARCELA.NRORG
                          FROM FCT_FATURACONT PARCELA
                          INNER JOIN FCT_RELACAGRUPCONTFAT CONT
                            ON PARCELA.NRFATURACONT = CONT.NRFATURACONT
                            AND PARCELA.NRORG       = CONT.NRORG
                          WHERE CONT.NRSEQCONTRATO = P_NRSEQCONTRATO
                            AND PARCELA.NRORG      = P_NRORG
                            AND IDSITUACAO         = '1') LOOP
        SELECT SUM(VRVENCIMENTO) 
        INTO V_VRVENCIMENTO
        FROM FCT_ITFATURACONT
        WHERE NRSEQCONTRATO = P_NRSEQCONTRATO
          AND NRORG         = P_NRORG
          AND NRFATURACONT  = C_PARCAGRUP.NRFATURACONT;
        
        DELETE FROM FCT_RELACAGRUPCONTFAT
        WHERE NRFATURACONT  = C_PARCAGRUP.NRFATURACONT
           AND NRORG        = P_NRORG;
        
        DELETE FROM FCT_ITFATURACONT
        WHERE NRFATURACONT = C_PARCAGRUP.NRFATURACONT
          AND NRORG        = P_NRORG;
          
        IF(C_PARCAGRUP.VRVENCIMENTO - V_VRVENCIMENTO = 0) THEN
          DELETE FROM FCT_FATURACONT
          WHERE NRFATURACONT = C_PARCAGRUP.NRFATURACONT
          AND NRORG          = C_PARCAGRUP.NRORG;
        ELSE
          UPDATE FCT_FATURACONT
          SET VRVENCIMENTO = VRVENCIMENTO - V_VRVENCIMENTO
          WHERE NRFATURACONT = C_PARCAGRUP.NRFATURACONT
          AND NRORG          = C_PARCAGRUP.NRORG;
        END IF;
      END LOOP;
    END IF;

END;