CREATE OR REPLACE PROCEDURE ESTORNA_LANCAMENTO(
  P_CDLOTE IN CAPALOTE.CDLOTE%TYPE,
  P_NRLANCLOTE IN LANCLOTE.NRLANCLOTE%TYPE)
IS

BEGIN
   FOR C_LANCLOTE IN(
     SELECT CDLOTE, CDEMPRESA, NRSEQLANLOTE, NRLANCLOTE,
            CDCONTCTBL, CDHISTPADR, DTLANCLOTE, NRDOCULOTE, DSHISTLOTE,     
            VRLANCLOTE, IDLLOTCOME, CDLLOTCOME,CDREDUZIDO
       FROM LANCLOTE 
      WHERE (CDLOTE = P_CDLOTE)
        AND (NRLANCLOTE = P_NRLANCLOTE))LOOP
        
              
        NOVA_PARTIDA(C_LANCLOTE.CDEMPRESA,C_LANCLOTE.CDLOTE,C_LANCLOTE.DTLANCLOTE,C_LANCLOTE.NRLANCLOTE,C_LANCLOTE.CDCONTCTBL,
                     C_LANCLOTE.CDHISTPADR, C_LANCLOTE.DSHISTLOTE, C_LANCLOTE.VRLANCLOTE * -1, C_LANCLOTE.IDLLOTCOME, C_LANCLOTE.CDLLOTCOME,'','S');
        
       FOR C_RATECCUS IN(
          SELECT CDEMPRESA,CDLOTE, NRLANCLOTE, NRSEQLANLOTE,
                 CDFILIAL, CDCENTCUST, VRRATECCUS, DTCOMPRATECCUS
            FROM RATECCUS
           WHERE CDEMPRESA = C_LANCLOTE.CDEMPRESA
             AND CDLOTE = C_LANCLOTE.CDLOTE
             AND NRLANCLOTE = C_LANCLOTE.NRLANCLOTE
             AND NRSEQLANLOTE = C_LANCLOTE.NRSEQLANLOTE) LOOP
             
             RATEIO_PARTIDA(C_RATECCUS.CDEMPRESA, C_RATECCUS.CDLOTE, C_RATECCUS.DTCOMPRATECCUS, C_RATECCUS.NRLANCLOTE, C_RATECCUS.CDFILIAL,
                            C_RATECCUS.CDCENTCUST, C_RATECCUS.VRRATECCUS * -1); 
                     
             DELETE FROM RATECCUS 
              WHERE CDLOTE = C_RATECCUS.CDLOTE 
                AND NRLANCLOTE = C_RATECCUS.NRLANCLOTE
                AND NRSEQLANLOTE = C_RATECCUS.NRSEQLANLOTE;               
                            
       END LOOP;                     
          
        DELETE FROM LANCLOTE 
         WHERE CDLOTE = C_LANCLOTE.CDLOTE 
           AND NRLANCLOTE = C_LANCLOTE.NRLANCLOTE
           AND NRSEQLANLOTE = C_LANCLOTE.NRSEQLANLOTE;
   END LOOP;
END;   
/