IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
           WHERE O.NAME = 'ESTORNA_LANCAMENTO' AND
                 TYPE = 'P' 	         AND
	              U.UID = O.UID      AND
	              U.NAME = USER)
DROP PROCEDURE ESTORNA_LANCAMENTO
GO
                                                                               
CREATE PROCEDURE ESTORNA_LANCAMENTO(
  @P_CDLOTE       VARCHAR(20),
  @P_NRLANCLOTE   VARCHAR(06))
                                                                               
AS
BEGIN
   /* VARIAVEIS DO CURSOR C_LANCLOTE */
   DECLARE @C_LANCLOTE_CDLOTE              VARCHAR(20);
   DECLARE @C_LANCLOTE_CDEMPRESA           VARCHAR(02);
   DECLARE @C_LANCLOTE_NRSEQLANLOTE        VARCHAR(05);
   DECLARE @C_LANCLOTE_NRLANCLOTE          VARCHAR(06);
   DECLARE @C_LANCLOTE_CDCONTCTBL          VARCHAR(20);
   DECLARE @C_LANCLOTE_CDHISTPADR          VARCHAR(04);
   DECLARE @C_LANCLOTE_DTLANCLOTE          DATETIME;
   DECLARE @C_LANCLOTE_NRDOCULOTE          VARCHAR(20);
   DECLARE @C_LANCLOTE_DSHISTLOTE          VARCHAR(200);
   DECLARE @C_LANCLOTE_VRLANCLOTE          DOUBLE PRECISION;
   DECLARE @C_LANCLOTE_VRLANCLOTEAJUST     DOUBLE PRECISION;
   DECLARE @C_LANCLOTE_IDLLOTCOME          VARCHAR(01);
   DECLARE @C_LANCLOTE_CDLLOTCOME          VARCHAR(21);
   DECLARE @C_LANCLOTE_CDREDUZIDO          VARCHAR(20);
                                                                               
   /* VARIAVEIS DO CURSOR C_RATECCUS */
   DECLARE @C_RATECCUS_CDEMPRESA           VARCHAR(02);
   DECLARE @C_RATECCUS_CDLOTE              VARCHAR(20);
   DECLARE @C_RATECCUS_NRLANCLOTE          VARCHAR(06);
   DECLARE @C_RATECCUS_NRSEQLANLOTE        VARCHAR(05);
   DECLARE @C_RATECCUS_CDFILIAL            VARCHAR(04);
   DECLARE @C_RATECCUS_CDCENTCUST          VARCHAR(04);
   DECLARE @C_RATECCUS_VRRATECCUS          DOUBLE PRECISION;
   DECLARE @C_RATECCUS_VRRATECCUSAJUST     DOUBLE PRECISION;
   DECLARE @C_RATECCUS_DTCOMPRATECCUS      DATETIME;                                                                               
                                                                               
                                                                               	
   DECLARE C_LANCLOTE CURSOR FOR 
     SELECT CDLOTE, CDEMPRESA, NRSEQLANLOTE, NRLANCLOTE,
            CDCONTCTBL, CDHISTPADR, DTLANCLOTE, NRDOCULOTE, DSHISTLOTE,     
            VRLANCLOTE, IDLLOTCOME, CDLLOTCOME,CDREDUZIDO
       FROM LANCLOTE 
      WHERE (CDLOTE     = @P_CDLOTE)
        AND (NRLANCLOTE = @P_NRLANCLOTE);
                                                                                                                 
   OPEN C_LANCLOTE;
   FETCH NEXT FROM C_LANCLOTE INTO @C_LANCLOTE_CDLOTE,     @C_LANCLOTE_CDEMPRESA,  @C_LANCLOTE_NRSEQLANLOTE, @C_LANCLOTE_NRLANCLOTE,
                                   @C_LANCLOTE_CDCONTCTBL, @C_LANCLOTE_CDHISTPADR, @C_LANCLOTE_DTLANCLOTE,   @C_LANCLOTE_NRDOCULOTE,
                                   @C_LANCLOTE_DSHISTLOTE, @C_LANCLOTE_VRLANCLOTE, @C_LANCLOTE_IDLLOTCOME,   @C_LANCLOTE_CDLLOTCOME,
                                   @C_LANCLOTE_CDREDUZIDO;
                                                                                                        
   WHILE (@@FETCH_STATUS = 0) BEGIN     
                                                                                                                    
       SET  @C_LANCLOTE_VRLANCLOTEAJUST = (@C_LANCLOTE_VRLANCLOTE * -1);
       EXEC 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_VRLANCLOTEAJUST, @C_LANCLOTE_IDLLOTCOME,
                         @C_LANCLOTE_CDLLOTCOME, '', 'S';
        
       DECLARE C_RATECCUS CURSOR FOR
          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;
                                                                                                                 
       OPEN C_RATECCUS;
       FETCH NEXT FROM C_RATECCUS INTO @C_RATECCUS_CDEMPRESA, @C_RATECCUS_CDLOTE,     @C_RATECCUS_NRLANCLOTE, @C_RATECCUS_NRSEQLANLOTE,
                                       @C_RATECCUS_CDFILIAL,  @C_RATECCUS_CDCENTCUST, @C_RATECCUS_VRRATECCUS, @C_RATECCUS_DTCOMPRATECCUS;
                                                                                                        
       WHILE (@@FETCH_STATUS = 0) BEGIN     
                                                                                                                    
             SET @C_RATECCUS_VRRATECCUSAJUST = (@C_RATECCUS_VRRATECCUS * -1);
             EXEC RATEIO_PARTIDA @C_RATECCUS_CDEMPRESA, @C_RATECCUS_CDLOTE, @C_RATECCUS_DTCOMPRATECCUS, @C_RATECCUS_NRLANCLOTE,
                                 @C_RATECCUS_CDFILIAL, @C_RATECCUS_CDCENTCUST, @C_RATECCUS_VRRATECCUSAJUST; 
                                                                                                                    
             DELETE FROM RATECCUS 
              WHERE CDLOTE       = @C_RATECCUS_CDLOTE 
                AND NRLANCLOTE   = @C_RATECCUS_NRLANCLOTE
                AND NRSEQLANLOTE = @C_RATECCUS_NRSEQLANLOTE;               
                                                                                                       
             FETCH NEXT FROM C_RATECCUS INTO @C_RATECCUS_CDEMPRESA, @C_RATECCUS_CDLOTE,     @C_RATECCUS_NRLANCLOTE, @C_RATECCUS_NRSEQLANLOTE,
                                             @C_RATECCUS_CDFILIAL,  @C_RATECCUS_CDCENTCUST, @C_RATECCUS_VRRATECCUS, @C_RATECCUS_DTCOMPRATECCUS;
       END;                     
          
       DELETE FROM LANCLOTE 
        WHERE CDLOTE = @C_LANCLOTE_CDLOTE 
          AND NRLANCLOTE = @C_LANCLOTE_NRLANCLOTE
          AND NRSEQLANLOTE = @C_LANCLOTE_NRSEQLANLOTE;
                                                                                                                     
       FETCH NEXT FROM C_LANCLOTE INTO @C_LANCLOTE_CDLOTE,     @C_LANCLOTE_CDEMPRESA,  @C_LANCLOTE_NRSEQLANLOTE, @C_LANCLOTE_NRLANCLOTE,
                                       @C_LANCLOTE_CDCONTCTBL, @C_LANCLOTE_CDHISTPADR, @C_LANCLOTE_DTLANCLOTE,   @C_LANCLOTE_NRDOCULOTE,
                                       @C_LANCLOTE_DSHISTLOTE, @C_LANCLOTE_VRLANCLOTE, @C_LANCLOTE_IDLLOTCOME,   @C_LANCLOTE_CDLLOTCOME,
                                       @C_LANCLOTE_CDREDUZIDO;
   END;
END 
GO