IF EXISTS(SELECT NAME /* 08 Filial nao cadastrada */
          FROM SYSOBJECTS
          WHERE NAME = 'LIBERA_LOTE' AND TYPE = 'P')
  DROP PROCEDURE LIBERA_LOTE
  GO
CREATE PROCEDURE LIBERA_LOTE
   @P_CDEMPRESA  VARCHAR(02),                 
   @P_CDLOTE     VARCHAR(20),
   @P_NRLANC     VARCHAR(12),
   @P_CDOPERADOR VARCHAR(12)

AS

DECLARE @V_NRLANCLOTE VARCHAR(06);
DECLARE @V_NRLANCCONT VARCHAR(12);
DECLARE @V_IDCONTGERE VARCHAR(01);
DECLARE @V_IDCONTCOME VARCHAR(01);

DECLARE @LOTE_NRLANCLOTE   VARCHAR(06);
DECLARE @LOTE_NRSEQLANLOTE VARCHAR(05);
DECLARE @LOTE_CDCONTCTBL   VARCHAR(20);
DECLARE @LOTE_CDHISTPADR   VARCHAR(04);
DECLARE @LOTE_DTLANCLOTE   DATETIME;
DECLARE @LOTE_NRDOCULOTE   VARCHAR(20);
DECLARE @LOTE_DSHISTLOTE   VARCHAR(60);
DECLARE @LOTE_VRLANCLOTE   NUMERIC(16, 2);
DECLARE @LOTE_IDLLOTCOME   VARCHAR(01);
DECLARE @LOTE_CDLLOTCOME   VARCHAR(21);
DECLARE @LOTE_IDTPLANCLOTE VARCHAR(01);
DECLARE @V_IDLANCINTE      VARCHAR(01);

BEGIN

   SET @V_NRLANCCONT = CONVERT(VARCHAR, CONVERT(NUMERIC, @P_NRLANC));
   SET @V_NRLANCLOTE = '0';

   SELECT @V_IDCONTGERE = MAX(IDCONTGERE),
          @V_IDCONTCOME = MAX(IDCONTCOME)
   FROM CONTOPECTBL
   WHERE (CONTOPECTBL.CDEMPRESA = @P_CDEMPRESA);

   DECLARE LOTE CURSOR FOR
      SELECT NRLANCLOTE, NRSEQLANLOTE, CDCONTCTBL, CDHISTPADR, DTLANCLOTE,
             NRDOCULOTE, DSHISTLOTE,   VRLANCLOTE,
             CASE IDLLOTCOME WHEN '' THEN NULL ELSE IDLLOTCOME END IDLLOTCOME, 
	     CASE CDLLOTCOME WHEN '' THEN NULL ELSE CDLLOTCOME END CDLLOTCOME, IDTPLANCLOTE
      FROM LANCLOTE
		WHERE (LANCLOTE.CDEMPRESA = @P_CDEMPRESA) AND
            (LANCLOTE.CDLOTE    = @P_CDLOTE)
      ORDER BY  NRLANCLOTE, NRSEQLANLOTE;

   OPEN LOTE;
   FETCH NEXT FROM LOTE INTO @LOTE_NRLANCLOTE, @LOTE_NRSEQLANLOTE, @LOTE_CDCONTCTBL, @LOTE_CDHISTPADR, @LOTE_DTLANCLOTE,
                             @LOTE_NRDOCULOTE, @LOTE_DSHISTLOTE,   @LOTE_VRLANCLOTE, @LOTE_IDLLOTCOME, @LOTE_CDLLOTCOME,
                             @LOTE_IDTPLANCLOTE

   WHILE (@@FETCH_STATUS = 0) BEGIN
      IF (@V_NRLANCLOTE <> @LOTE_NRLANCLOTE) BEGIN
         SET @V_NRLANCCONT = CONVERT(VARCHAR, CONVERT(NUMERIC, @V_NRLANCCONT) + 1);
      END;

      IF @LOTE_IDTPLANCLOTE = 'T' BEGIN
         SET @V_IDLANCINTE = 'T';
      END
      ELSE BEGIN
         SET @V_IDLANCINTE = 'L';
      END;


      INSERT INTO LANCCONT
         (CDEMPRESA,  NRLANCCONT,  NRSEQLANC,   CDCONTCTBL, CDHISTPADR,
          DTLANCCONT, CDDOCUCONT,  IDTIPOLANC,  DSHISTLANC, VRLANCAMENT,
          IDLANCCOME, CDCONTCOME,  IDLANCSALDO, IDLANCINTE, IDLANCMANI,
          CDOPERINS,  DTULTATULAN, IDSALDLANCO, IDSALDLANGE)
      VALUES
         (@P_CDEMPRESA, @V_NRLANCCONT, @LOTE_NRSEQLANLOTE, @LOTE_CDCONTCTBL,
          @LOTE_CDHISTPADR, @LOTE_DTLANCLOTE, @LOTE_NRDOCULOTE, 'C',
          @LOTE_DSHISTLOTE, @LOTE_VRLANCLOTE, @LOTE_IDLLOTCOME,
          @LOTE_CDLLOTCOME, 'N',@V_IDLANCINTE,'N', @P_CDOPERADOR, GETDATE(), 'N', 'N');

      UPDATE LANCLOTE
      SET LANCLOTE.NRLANCDEFI = @V_NRLANCCONT,
          LANCLOTE.NRSEQUDEFI = LANCLOTE.NRSEQLANLOTE
      WHERE (LANCLOTE.CDEMPRESA    = @P_CDEMPRESA)     AND
            (LANCLOTE.CDLOTE       = @P_CDLOTE)        AND
            (LANCLOTE.NRLANCLOTE   = @LOTE_NRLANCLOTE) AND
            (LANCLOTE.NRSEQLANLOTE = @LOTE_NRSEQLANLOTE);

      INSERT INTO LANCCCUSTO
         (CDEMPRESA, NRLANCCONT, NRSEQLANC, CDFILIAL, CDCENTCUST, VRLANCCUST, DTCOMPCUSTO)
      (SELECT @P_CDEMPRESA, @V_NRLANCCONT, @LOTE_NRSEQLANLOTE,
              RATECCUS.CDFILIAL, RATECCUS.CDCENTCUST, RATECCUS.VRRATECCUS, RATECCUS.DTCOMPRATECCUS
       FROM RATECCUS
       WHERE (RATECCUS.CDEMPRESA    = @P_CDEMPRESA)     AND
             (RATECCUS.CDLOTE       = @P_CDLOTE)        AND
             (RATECCUS.NRLANCLOTE   = @LOTE_NRLANCLOTE) AND
             (RATECCUS.NRSEQLANLOTE = @LOTE_NRSEQLANLOTE) );

      SET @V_NRLANCLOTE = @LOTE_NRLANCLOTE;

      FETCH NEXT FROM LOTE INTO @LOTE_NRLANCLOTE, @LOTE_NRSEQLANLOTE, @LOTE_CDCONTCTBL, @LOTE_CDHISTPADR, @LOTE_DTLANCLOTE,
                                @LOTE_NRDOCULOTE, @LOTE_DSHISTLOTE,   @LOTE_VRLANCLOTE, @LOTE_IDLLOTCOME, @LOTE_CDLLOTCOME,
                                @LOTE_IDTPLANCLOTE
   END;
   CLOSE LOTE;
   DEALLOCATE LOTE;

   UPDATE CAPALOTE
   SET CAPALOTE.IDLOTE = 'L'
   WHERE (CAPALOTE.CDEMPRESA = @P_CDEMPRESA) AND
         (CAPALOTE.CDLOTE    = @P_CDLOTE);

END;
GO



-- VERSAO --
EXEC ATUVEROBJ 'LIBERA_LOTE','5.42.xxx';
GO

