IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
            WHERE O.NAME = 'CONTABILIZA_REC_BAIXA' AND
                  TYPE = 'P' 	                     AND
	               U.UID = O.UID                    AND
	               U.NAME = USER)
   DROP PROCEDURE CONTABILIZA_REC_BAIXA
GO
                                                                                                                       
CREATE PROCEDURE CONTABILIZA_REC_BAIXA(
   @P_NRLISTA                         VARCHAR(10))
AS
   DECLARE @V_CDLOTE                  VARCHAR(20);
   DECLARE @V_NRLANCLOTE              VARCHAR(06);
                                                                                                                       
   DECLARE @V_CDHISTPADRDB            VARCHAR(04);
   DECLARE @V_DSHISTPADRDB            VARCHAR(200);
   DECLARE @V_CDHISTPADRTPB           VARCHAR(04);
   DECLARE @V_DSHISTPADRTPB           VARCHAR(200);
   DECLARE @V_CDHISTPADRAJ            VARCHAR(04);
   DECLARE @V_DSHISTPADRAJ            VARCHAR(200);
                                                                                                                       
   DECLARE @V_VRLANCPARTBOREC         DOUBLE PRECISION;
   DECLARE @V_CDCONTCTBL              VARCHAR(20);
   DECLARE @V_CDCONTCTBL1             VARCHAR(20);
   DECLARE @V_CDCONTCTBL2             VARCHAR(20);
   DECLARE @V_CDHISTPADRAUX           VARCHAR(04);
                                                                                                                       
   DECLARE @V_NRPARTIDA               INTEGER;
   DECLARE @V_NRCOUNT                 INTEGER;
   DECLARE @V_NRPARTRAT               INTEGER;
   DECLARE @V_NRCOUNTRAT              INTEGER;
                                                                                                                       
   DECLARE @V_CDCHAVE                 VARCHAR(16);
                                                                                                                       
   DECLARE @V_VRRESTOAJUS             NUMERIC(15,5);
   DECLARE @V_VRAJBOLREC              NUMERIC(15,5);
   DECLARE @V_VRAJBOLRECAJUST         NUMERIC(15,5);
   DECLARE @V_VRRESTORAT              NUMERIC(15,5);
   DECLARE @V_VRAJBOLRATAJUST         NUMERIC(15,5);
   DECLARE @V_VRAJBOLRAT              NUMERIC(15,5);
   DECLARE @V_VRFATOCONV              NUMERIC(15,5);
   DECLARE @V_VALOR                   DOUBLE PRECISION;
   DECLARE @V_VALORAJUST              DOUBLE PRECISION;
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_BAIXA */
   DECLARE @C_BAIXA_CDFILIAL          VARCHAR(04);
   DECLARE @C_BAIXA_NRBAIXAREC        VARCHAR(10);
   DECLARE @C_BAIXA_CDEMPRESA         VARCHAR(02);
   DECLARE @C_BAIXA_DTBAIXAREC        DATETIME;
   DECLARE @C_BAIXA_VRBAIXAREC        DOUBLE PRECISION;
   DECLARE @C_BAIXA_VRBAIXARECAJUST   DOUBLE PRECISION;
   DECLARE @C_BAIXA_CDTPBAIXAREC      VARCHAR(02);
   DECLARE @C_BAIXA_CDREDUCONT        VARCHAR(03);
   DECLARE @C_BAIXA_CDBANCO           VARCHAR(03);
   DECLARE @C_BAIXA_CDAGENCIA         VARCHAR(05);
   DECLARE @C_BAIXA_CDCONTCORR        VARCHAR(10);
   DECLARE @C_BAIXA_DSCONTCORR        VARCHAR(20);
   DECLARE @C_BAIXA_CDCONTCTBL        VARCHAR(20);
   DECLARE @C_BAIXA_NMTPBAIXAREC      VARCHAR(50);
   DECLARE @C_BAIXA_CDCENTCUST        VARCHAR(04);
   DECLARE @C_BAIXA_CDPADRCONTABIL    VARCHAR(05);
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_PARTIDA */
   DECLARE @C_PARTIDA_IDTPPARTCONTAB     VARCHAR(01);
   DECLARE @C_PARTIDA_CDCONTCTBL         VARCHAR(20);
   DECLARE @C_PARTIDA_IDTPCONTAPART      VARCHAR(02);
   DECLARE @C_PARTIDA_IDCREDDEBCONTAB    VARCHAR(01);
   DECLARE @C_PARTIDA_IDTPVALORPART      VARCHAR(02);
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_CONTA */
   DECLARE @C_CONTA_CDFILIAL             VARCHAR(04);
   DECLARE @C_CONTA_NRLANCTONF           VARCHAR(10);
   DECLARE @C_CONTA_VRATUAREC            DOUBLE PRECISION;
   DECLARE @C_CONTA_VRATUARECAJUST       DOUBLE PRECISION;
   DECLARE @C_CONTA_CDCLIENTE            VARCHAR(21);
   DECLARE @C_CONTA_NRNOTAFISC           VARCHAR(20);
   DECLARE @C_CONTA_DTEMISSAO            DATETIME;
   DECLARE @C_CONTA_IDTPCTRECEBER        VARCHAR(01);
   DECLARE @C_CONTA_DSTPCTRECEB          VARCHAR(40);
   DECLARE @C_CONTA_CDCONTCTBL           VARCHAR(20);
   DECLARE @C_CONTA_CDCENTCUST           VARCHAR(04);
   DECLARE @C_CONTA_CDCENTCUSTAJUST      VARCHAR(04);
   DECLARE @C_CONTA_CDFILIEMIT           VARCHAR(04);
   DECLARE @C_CONTA_VRNOTAFISC           DOUBLE PRECISION;
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_AJUSTE */
   DECLARE @C_AJUSTE_DSAJUCTREC          VARCHAR(40);
   DECLARE @C_AJUSTE_CDAJUCTREC          VARCHAR(02);
   DECLARE @C_AJUSTE_VRAJBOLREC          DOUBLE PRECISION;
   DECLARE @C_AJUSTE_VRAJBOLRAT          DOUBLE PRECISION;
   DECLARE @C_AJUSTE_CDFILIBOLREC        VARCHAR(04);
   DECLARE @C_AJUSTE_NRLANBOLREC         VARCHAR(10);
   DECLARE @C_AJUSTE_CDFILIAL            VARCHAR(04);
   DECLARE @C_AJUSTE_NRLANCTONF          VARCHAR(10);
   DECLARE @C_AJUSTE_CDCLIENTE           VARCHAR(21);
   DECLARE @C_AJUSTE_CDFILIEMIT          VARCHAR(04);
   DECLARE @C_AJUSTE_NRNOTAFISC          VARCHAR(20);
   DECLARE @C_AJUSTE_IDAJUCTREC          VARCHAR(01);
   DECLARE @C_AJUSTE_IDCTBAJCTREC        VARCHAR(01);
   DECLARE @C_AJUSTE_CDEMPRESA           VARCHAR(02);
   DECLARE @C_AJUSTE_CDCONTCTBL          VARCHAR(20);
   DECLARE @C_AJUSTE_CDCENTCUST          VARCHAR(04);
   DECLARE @C_AJUSTE_CDCENTCUSTAJUST     VARCHAR(04);
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_RATEIO */
   DECLARE @C_RATEIO_CDCENTCUST          VARCHAR(04);
   DECLARE @C_RATEIO_CDFIRATTPAJR        VARCHAR(04);
   DECLARE @C_RATEIO_CDFILIAL            VARCHAR(04);
   DECLARE @C_RATEIO_CDFILIALAJUST       VARCHAR(04);
   DECLARE @C_RATEIO_VRPERATTPAJR        DOUBLE PRECISION;
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_BAIXA_EXC */
   DECLARE @C_BAIXA_EXC_CDFILIAL         VARCHAR(04);
   DECLARE @C_BAIXA_EXC_NRBAIXAREC       VARCHAR(10);
   DECLARE @C_BAIXA_EXC_NRSEQPARTBOREC   VARCHAR(10);
   DECLARE @C_BAIXA_EXC_NRLANCTBESTREC   VARCHAR(30);
   DECLARE @C_BAIXA_EXC_CDCONTCTBL       VARCHAR(20);
   DECLARE @C_BAIXA_EXC_CDHISTPADR       VARCHAR(04);
   DECLARE @C_BAIXA_EXC_DSHISTPARTBOREC  VARCHAR(200);
   DECLARE @C_BAIXA_EXC_VRLANCPARTBOREC  DOUBLE PRECISION;
   DECLARE @C_BAIXA_EXC_IDLANCCOMEBOREC  VARCHAR(01);
   DECLARE @C_BAIXA_EXC_CDCONTCOMEBOREC  VARCHAR(30);
                                                                                                                       
   /* VARIAVEIS DO CURSOR C_RATEIO_EXC */
   DECLARE @C_RATEIO_EXC_CDFILIAL        VARCHAR(04);
   DECLARE @C_RATEIO_EXC_NRBAIXAREC      VARCHAR(10);
   DECLARE @C_RATEIO_EXC_NRSEQPARTBOREC  VARCHAR(10);
   DECLARE @C_RATEIO_EXC_CDFILCENTCUST   VARCHAR(04);
   DECLARE @C_RATEIO_EXC_CDCENTCUST      VARCHAR(04);
   DECLARE @C_RATEIO_EXC_VRRATEIOPABOREC DOUBLE PRECISION;
BEGIN
   EXEC EXCLUI_LANCCONTABIL '11', @P_NRLISTA;
                                                                                                                       
   DECLARE C_BAIXA CURSOR FOR 
      SELECT BR.CDFILIAL, BR.NRBAIXAREC, BR.CDEMPRESA,
             BR.DTBAIXAREC, BR.VRBAIXAREC, BR.CDTPBAIXAREC,
             CC.CDREDUCONT, CC.CDBANCO, CC.CDAGENCIA, CC.CDCONTCORR, CC.DSCONTCORR,
             CC.CDCONTCTBL, TBR.NMTPBAIXAREC, E.CDCENTCUST,TBR.CDPADRCONTABIL
        FROM TIPOBAIXAREC TBR, CONTCORR CC, EMPRESA E, BAIXARECEBIDA BR, LISTA L
       WHERE L.NRLISTA       = @P_NRLISTA
         AND BR.CDFILIAL     = SUBSTRING(L.CDLISTA, 01, 04)
         AND BR.NRBAIXAREC   = SUBSTRING(L.CDLISTA, 05, 10)
         AND BR.CDTPBAIXAREC = TBR.CDTPBAIXAREC
         AND CC.CDREDUCONT   = BR.CDREDUCONT
         AND TBR.IDCTBLBXREC = 'S'
         AND BR.IDSTATUSBREC = 'E'
         AND BR.NRLCTBBREC   IS NULL
         AND BR.CDEMPRESA    = E.CDEMPRESA
         AND BR.VRBAIXAREC   <> 0
       ORDER BY BR.CDFILIAL, BR.NRBAIXAREC;
                                                                                                                       
   OPEN C_BAIXA;
   FETCH NEXT FROM C_BAIXA INTO @C_BAIXA_CDFILIAL,     @C_BAIXA_NRBAIXAREC, @C_BAIXA_CDEMPRESA,
                                @C_BAIXA_DTBAIXAREC,   @C_BAIXA_VRBAIXAREC, @C_BAIXA_CDTPBAIXAREC,
                                @C_BAIXA_CDREDUCONT,   @C_BAIXA_CDBANCO,    @C_BAIXA_CDAGENCIA,
                                @C_BAIXA_CDCONTCORR,   @C_BAIXA_DSCONTCORR, @C_BAIXA_CDCONTCTBL,
                                @C_BAIXA_NMTPBAIXAREC, @C_BAIXA_CDCENTCUST, @C_BAIXA_CDPADRCONTABIL;
                                                                                                                       
   WHILE (@@FETCH_STATUS = 0) BEGIN
      IF (@C_BAIXA_CDPADRCONTABIL IS NOT NULL) BEGIN
                                                                                                                       
         EXEC GERA_LOTECONTABIL @C_BAIXA_CDEMPRESA, '11', '', '', @C_BAIXA_DTBAIXAREC, @C_BAIXA_CDTPBAIXAREC, '',
                                @V_CDLOTE, @V_NRLANCLOTE;
         SET @V_NRLANCLOTE = RIGHT(REPLICATE('0', 6) + CONVERT(VARCHAR, CONVERT(NUMERIC, @V_NRLANCLOTE) + 1), 6);
                                                                                                                       
         DECLARE C_PARTIDA CURSOR FOR
            SELECT P.IDTPPARTCONTAB, P.CDCONTCTBL, P.IDTPCONTAPART, P.IDCREDDEBCONTAB, P.IDTPVALORPART
              FROM PARTIDACONTABIL P
             WHERE P.CDPADRCONTABIL = @C_BAIXA_CDPADRCONTABIL
               AND (IDTPCONTAPART   = '21')
               AND (IDTPMOVLOTEPACO = '11')
             ORDER BY P.NRORDPARTCONTAB;
                                                                                                                       
         OPEN C_PARTIDA;
         FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                        @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
            SELECT @V_CDHISTPADRDB = H.CDHISTPADR, 
                   @V_DSHISTPADRDB = HP.DSHISTPADR
              FROM HISTINTEGRA H ,HISTPADR HP
             WHERE H.CDHISTPADR = HP.CDHISTPADR
               AND CDOPERACAO = 'BXDBRE';
                                                                                                                       
            SELECT @V_CDHISTPADRTPB = HP.CDHISTPADR, 
                   @V_DSHISTPADRTPB = HP.DSHISTPADR
              FROM HISTPADR HP, TIPOBAIXAREC TB
             WHERE TB.CDTPBAIXAREC = @C_BAIXA_CDTPBAIXAREC
               AND HP.CDHISTPADR = TB.CDHISTPADR;
                                                                                                                       
            IF (@V_CDHISTPADRDB IS NULL) BEGIN
               SET @V_CDHISTPADRDB = @V_CDHISTPADRTPB;
               SET @V_DSHISTPADRDB = 'RECEBIMENTO: ' + @C_BAIXA_NMTPBAIXAREC;
            END
            ELSE BEGIN
               /*MONTA HISTORICO PADRAO*/
               EXEC MONTA_HISTORICO @C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAREC, @V_CDHISTPADRDB, '', @C_BAIXA_DTBAIXAREC,
                                    '11', '', @V_DSHISTPADRDB;
            END;
                                                                                                                       
            IF (@C_PARTIDA_IDTPCONTAPART = '21') BEGIN
               SET @V_CDCONTCTBL = @C_BAIXA_CDCONTCTBL;
            END;
                                                                                                                       
            IF (@C_PARTIDA_IDTPVALORPART = '11') BEGIN
               SELECT @V_VRLANCPARTBOREC = ISNULL(SUM(VRLANCPARTBOREC),0) * (-1)
                 FROM HISPARTBOLEXREC
                WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
                  AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
                                                                                                                       
               SET @V_VALOR = ROUND((@C_BAIXA_VRBAIXAREC + @V_VRLANCPARTBOREC), 2);
            END;
                                                                                                                       
            IF (@C_PARTIDA_IDCREDDEBCONTAB = 'D') BEGIN
                SET @V_VALORAJUST = -(@V_VALOR);
                EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                  @V_CDHISTPADRDB, @V_DSHISTPADRDB, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '11', 
                                  @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                SET @V_VALORAJUST = -(@V_VALOR);
                EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                                    @C_BAIXA_CDCENTCUST, @V_VALORAJUST;
            END 
            ELSE BEGIN
                EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                  @V_CDHISTPADRDB, @V_DSHISTPADRDB, @V_VALOR, 'B', @C_BAIXA_CDREDUCONT, '11',
                                  @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                                    @C_BAIXA_CDCENTCUST, @V_VALOR;
            END;
                                                                                                                       
            FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                           @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
         END;
         CLOSE C_PARTIDA;
         DEALLOCATE C_PARTIDA;
                                                                                                                       
         DECLARE C_CONTA CURSOR FOR
            SELECT CR.CDFILIAL, CR.NRLANCTONF, CR.VRATUAREC, CL.CDCLIENTE,
                   NF.NRNOTAFISC, NF.DTEMISSAO, TR.IDTPCTRECEBER, TR.DSTPCTRECEB,
                   TR.CDCONTCTBL, FL.CDCENTCUST, NF.CDFILIEMIT, NF.VRNOTAFISC
              FROM TIPOCTRECEBER TR, CONTARECEBER  CR, BOLETRECEBER  BO,
                   CLIENTE CL, NOTAFISCAL  NF, FILIAL FL
             WHERE TR.CDTPCTRECEB  = CR.CDTPCTRECEB
               AND BO.CDFILIBAIREC = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAREC   = @C_BAIXA_NRBAIXAREC
               AND CR.CDFILIBOLREC = BO.CDFILIAL
               AND CR.NRLANBOLREC  = BO.NRLANBOLREC
               AND NF.CDCLIENTE    = CL.CDCLIENTE
               AND NF.CDFILIAL     = CR.CDFILIAL
               AND NF.NRLANCTONF   = CR.NRLANCTONF
               AND NF.CDFILIEMIT   = FL.CDFILIAL
               AND CR.VRATUAREC    <> 0;
                                                                                                                       
         OPEN C_CONTA;
         FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,      @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAREC,
                                      @C_CONTA_CDCLIENTE,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                      @C_CONTA_IDTPCTRECEBER, @C_CONTA_DSTPCTRECEB, @C_CONTA_CDCONTCTBL,
                                      @C_CONTA_CDCENTCUST,    @C_CONTA_CDFILIEMIT,  @C_CONTA_VRNOTAFISC;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
             DECLARE C_PARTIDA CURSOR FOR
                SELECT P.IDTPPARTCONTAB, P.CDCONTCTBL, P.IDTPCONTAPART, P.IDCREDDEBCONTAB, P.IDTPVALORPART
                  FROM PARTIDACONTABIL P
                 WHERE P.CDPADRCONTABIL = @C_BAIXA_CDPADRCONTABIL
                   AND ((IDTPCONTAPART   = '15') OR (IDTPCONTAPART = '01'))
                   AND (IDTPMOVLOTEPACO = '11')
                 ORDER BY P.NRORDPARTCONTAB;
                                                                                                                       
             OPEN C_PARTIDA;
             FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                            @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
                                                                                                                       
             WHILE (@@FETCH_STATUS = 0) BEGIN
                 IF (@C_PARTIDA_IDTPCONTAPART = '15') BEGIN
                    SET @V_CDCONTCTBL = @C_CONTA_CDCONTCTBL;
                 END
                 ELSE IF (@C_PARTIDA_IDTPCONTAPART = '01') BEGIN
                    EXEC CONTCTBL_CLIENTE @C_BAIXA_CDEMPRESA, '', 'S', @C_CONTA_CDFILIEMIT, @C_CONTA_CDCLIENTE,
                                          @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
                 END;
                                                                                                                       
                 IF (@C_PARTIDA_IDTPVALORPART = '00') BEGIN
                    SET @V_VALOR = @C_CONTA_VRNOTAFISC;
                 END;
                                                                                                                       
                 EXEC MONTA_HISTORICO @C_CONTA_CDFILIAL, @C_CONTA_NRLANCTONF, @V_CDHISTPADRTPB, @C_CONTA_NRNOTAFISC, 
                                      @C_CONTA_DTEMISSAO, '07', '', @V_DSHISTPADRTPB;
                                                                                                                       
                 IF (@C_PARTIDA_IDCREDDEBCONTAB = 'D') BEGIN
                    SET @V_VALORAJUST = ROUND(-(@V_VALOR), 2);
                    EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                      @V_CDHISTPADRTPB, @V_DSHISTPADRTPB, @V_VALORAJUST, 'C', @C_CONTA_CDCLIENTE, '11',
                                      @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                    SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST,@C_BAIXA_CDCENTCUST);
                    SET @C_CONTA_VRATUARECAJUST  = -(ROUND(@C_CONTA_VRATUAREC, 2));
                    EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, 
                                        @C_CONTA_CDFILIEMIT, @C_CONTA_CDCENTCUSTAJUST, @C_CONTA_VRATUARECAJUST;
                 END
                 ELSE BEGIN
                    SET @V_VALORAJUST = ROUND(@V_VALOR, 2);
                    EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                      @V_CDHISTPADRTPB, @V_DSHISTPADRTPB, @V_VALORAJUST, 'C', @C_CONTA_CDCLIENTE,
                                      '11', @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                    SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST,@C_BAIXA_CDCENTCUST);
                    SET @C_CONTA_VRATUARECAJUST  = ROUND(@C_CONTA_VRATUAREC, 2);
                    EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, 
                                        @C_CONTA_CDFILIEMIT, @C_CONTA_CDCENTCUSTAJUST, @C_CONTA_VRATUARECAJUST;
                 END;
                                                                                                                       
                 FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                                @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
            END;
            CLOSE C_PARTIDA;
            DEALLOCATE C_PARTIDA;
                                                                                                                       
            FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,      @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAREC,
                                         @C_CONTA_CDCLIENTE,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                         @C_CONTA_IDTPCTRECEBER, @C_CONTA_DSTPCTRECEB, @C_CONTA_CDCONTCTBL,
                                         @C_CONTA_CDCENTCUST,    @C_CONTA_CDFILIEMIT,  @C_CONTA_VRNOTAFISC
         END;
         CLOSE C_CONTA;
         DEALLOCATE C_CONTA;
                                                                                                                       
         DECLARE C_AJUSTE CURSOR FOR
            SELECT TA.DSAJUCTREC, AR.CDAJUCTREC, AR.VRAJBOLREC,
                   ROUND(AR.VRAJBOLREC * ROUND(CR.VRATUAREC/BO.VRBOLREC, 3), 2) VRAJBOLRAT,
                   CR.CDFILIBOLREC, BO.NRLANBOLREC, CR.CDFILIAL, CR.NRLANCTONF, CL.CDCLIENTE,
                   NF.CDFILIEMIT, NF.NRNOTAFISC, TA.IDAJUCTREC, TA.IDCTBAJCTREC, NF.CDEMPRESA,
                   TA.CDCONTCTBL, FL.CDCENTCUST
              FROM TIPOAJRECEBER TA, AJBOLREC AR, CONTARECEBER CR,
                   CLIENTE CL, NOTAFISCAL NF, FILIAL FL, BOLETRECEBER BO
             WHERE BO.CDFILIBAIREC = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAREC = @C_BAIXA_NRBAIXAREC
               AND CR.CDFILIBOLREC = BO.CDFILIAL
               AND CR.NRLANBOLREC = BO.NRLANBOLREC
               AND TA.CDAJUCTREC = AR.CDAJUCTREC
               AND AR.CDFILIAL = CR.CDFILIBOLREC
               AND AR.NRLANBOLREC = CR.NRLANBOLREC
               AND CL.CDCLIENTE = NF.CDCLIENTE
               AND NF.CDFILIAL = CR.CDFILIAL
               AND NF.NRLANCTONF = CR.NRLANCTONF
               AND NF.CDFILIEMIT = FL.CDFILIAL
             ORDER BY CR.CDFILIBOLREC, CR.NRLANBOLREC, AR.CDAJUCTREC;
                                                                                                                       
         OPEN C_AJUSTE;
         FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTREC,   @C_AJUSTE_CDAJUCTREC,   @C_AJUSTE_VRAJBOLREC,
                                       @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBOLREC, @C_AJUSTE_NRLANBOLREC,
                                       @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF,   @C_AJUSTE_CDCLIENTE,
                                       @C_AJUSTE_CDFILIEMIT,   @C_AJUSTE_NRNOTAFISC,   @C_AJUSTE_IDAJUCTREC,
                                       @C_AJUSTE_IDCTBAJCTREC, @C_AJUSTE_CDEMPRESA,    @C_AJUSTE_CDCONTCTBL,
                                       @C_AJUSTE_CDCENTCUST;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
            DECLARE C_PARTIDA CURSOR FOR
               SELECT P.IDTPPARTCONTAB,
                      P.CDCONTCTBL, P.IDTPCONTAPART, P.IDCREDDEBCONTAB, P.IDTPVALORPART
                 FROM PARTIDACONTABIL P
                WHERE P.CDPADRCONTABIL = @C_BAIXA_CDPADRCONTABIL
                  AND (IDTPVALORPART = '06')
                  AND (IDTPMOVLOTEPACO = '11')
                ORDER BY P.NRORDPARTCONTAB;
                                                                                                                       
            OPEN C_PARTIDA;
            FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                           @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
                                                                                                                       
            WHILE (@@FETCH_STATUS = 0) BEGIN
               SELECT @V_CDHISTPADRAJ = HP.CDHISTPADR, 
                      @V_DSHISTPADRAJ = HP.DSHISTPADR
                 FROM HISTPADR HP, TIPOAJRECEBER TA
                WHERE TA.CDAJUCTREC = @C_AJUSTE_CDAJUCTREC
                  AND HP.CDHISTPADR = TA.CDHISTPADR;
                                                                                                                       
               EXEC MONTA_HISTORICO @C_AJUSTE_CDFILIAL, @C_AJUSTE_NRLANCTONF, @V_CDHISTPADRAJ, @C_AJUSTE_NRNOTAFISC,
                                    NULL, '07', @C_AJUSTE_CDAJUCTREC, @V_DSHISTPADRAJ;
                                                                                                                       
               IF (@C_PARTIDA_IDTPCONTAPART = '20') BEGIN
                  SET @V_CDCONTCTBL = @C_AJUSTE_CDCONTCTBL;
               END
               ELSE IF (@C_PARTIDA_IDTPCONTAPART = '01') BEGIN
                  EXEC CONTCTBL_CLIENTE @C_BAIXA_CDEMPRESA, '', 'S', @C_AJUSTE_CDFILIEMIT, @C_AJUSTE_CDCLIENTE,
                                        @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
               END;
                                                                                                                       
               IF (@C_PARTIDA_IDTPVALORPART = '06') BEGIN
                  SET @V_VALOR = @C_AJUSTE_VRAJBOLRAT;
               END;
                                                                                                                       
               IF (@C_PARTIDA_IDCREDDEBCONTAB = 'D') BEGIN
                  SET @V_VALORAJUST = -(ROUND(@V_VALOR, 2));
                  EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                    @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '11',
                                    @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                  SET @C_AJUSTE_CDCENTCUSTAJUST = ISNULL(@C_AJUSTE_CDCENTCUST, @C_BAIXA_CDCENTCUST);
                  SET @V_VRAJBOLRECAJUST = -(ROUND(@V_VRAJBOLREC, 2));
                  EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE,
                                      @C_AJUSTE_CDFILIEMIT, @C_AJUSTE_CDCENTCUSTAJUST, @V_VRAJBOLRECAJUST;
               END
               ELSE BEGIN
                  SET @V_VALORAJUST = ROUND(@V_VALOR, 2);
                  EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                    @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '11',
                                    @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
                  SET @C_AJUSTE_CDCENTCUSTAJUST = ISNULL(@C_AJUSTE_CDCENTCUST, @C_BAIXA_CDCENTCUST);
                  SET @V_VRAJBOLRECAJUST = ROUND(@V_VRAJBOLREC, 2);
                  EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, 
                                      @C_AJUSTE_CDFILIEMIT, @C_AJUSTE_CDCENTCUSTAJUST, @V_VRAJBOLRECAJUST;
               END;
                                                                                                                       
              FETCH NEXT FROM C_PARTIDA INTO @C_PARTIDA_IDTPPARTCONTAB,  @C_PARTIDA_CDCONTCTBL, @C_PARTIDA_IDTPCONTAPART,
                                             @C_PARTIDA_IDCREDDEBCONTAB, @C_PARTIDA_IDTPVALORPART;
            END;
            CLOSE C_PARTIDA;
            DEALLOCATE C_PARTIDA;
                                                                                                                       
            FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTREC,   @C_AJUSTE_CDAJUCTREC,   @C_AJUSTE_VRAJBOLREC,
                                          @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBOLREC, @C_AJUSTE_NRLANBOLREC,
                                          @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF,   @C_AJUSTE_CDCLIENTE,
                                          @C_AJUSTE_CDFILIEMIT,   @C_AJUSTE_NRNOTAFISC,   @C_AJUSTE_IDAJUCTREC,
                                          @C_AJUSTE_IDCTBAJCTREC, @C_AJUSTE_CDEMPRESA,    @C_AJUSTE_CDCONTCTBL,
                                          @C_AJUSTE_CDCENTCUST;
         END;
         CLOSE C_AJUSTE;
         DEALLOCATE C_AJUSTE;
      END
      ELSE BEGIN
         EXEC GERA_LOTECONTABIL @C_BAIXA_CDEMPRESA, '11', '', '', @C_BAIXA_DTBAIXAREC, @C_BAIXA_CDTPBAIXAREC, '',
                                @V_CDLOTE, @V_NRLANCLOTE;
         SET @V_NRLANCLOTE = RIGHT(REPLICATE('0', 6) + CONVERT(VARCHAR, CONVERT(NUMERIC, @V_NRLANCLOTE) + 1), 6);
                                                                                                                       
         SELECT @V_CDHISTPADRDB = H.CDHISTPADR, 
                @V_DSHISTPADRDB = HP.DSHISTPADR
           FROM HISTINTEGRA H ,HISTPADR HP
          WHERE H.CDHISTPADR = HP.CDHISTPADR
            AND CDOPERACAO = 'BXDBRE';
                                                                                                                       
         SELECT @V_CDHISTPADRTPB = HP.CDHISTPADR, 
                @V_DSHISTPADRTPB = HP.DSHISTPADR
           FROM HISTPADR HP, TIPOBAIXAREC TB
          WHERE TB.CDTPBAIXAREC = @C_BAIXA_CDTPBAIXAREC
            AND HP.CDHISTPADR = TB.CDHISTPADR;
                                                                                                                       
         IF (@V_CDHISTPADRDB IS NULL) BEGIN
            SET @V_CDHISTPADRDB = @V_CDHISTPADRTPB;
            SET @V_DSHISTPADRDB = 'RECEBIMENTO: ' + @C_BAIXA_NMTPBAIXAREC;
         END
         ELSE BEGIN
            /*MONTA HISTORICO PADRAO*/
            EXEC MONTA_HISTORICO @C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAREC, @V_CDHISTPADRDB, '', @C_BAIXA_DTBAIXAREC, '11',
                                 '', @V_DSHISTPADRDB;
         END;
                                                                                                                       
         SELECT @V_VRLANCPARTBOREC = ISNULL(SUM(VRLANCPARTBOREC),0) * (-1)
           FROM HISPARTBOLEXREC
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
                                                                                                                       
         /*INSERE PARTIDA DE DEBITO*/
         SET @C_BAIXA_VRBAIXARECAJUST = (ROUND((@C_BAIXA_VRBAIXAREC + @V_VRLANCPARTBOREC), 2) * (-1));
         EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_BAIXA_CDCONTCTBL,
                           @V_CDHISTPADRDB, @V_DSHISTPADRDB, @C_BAIXA_VRBAIXARECAJUST, 'B', @C_BAIXA_CDREDUCONT, '11', 
                           @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
         /*INSERE RATEIO*/
         SET @C_BAIXA_VRBAIXARECAJUST = (ROUND((@C_BAIXA_VRBAIXAREC + @V_VRLANCPARTBOREC), 2) * (-1));
         EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                             @C_BAIXA_CDCENTCUST, @C_BAIXA_VRBAIXARECAJUST;
                                                                                                                       
         DECLARE C_CONTA CURSOR FOR
            SELECT CR.CDFILIAL, CR.NRLANCTONF, CR.VRATUAREC, CL.CDCLIENTE,
                   NF.NRNOTAFISC, NF.DTEMISSAO, TR.IDTPCTRECEBER, TR.DSTPCTRECEB,
                   TR.CDCONTCTBL, FL.CDCENTCUST, NF.CDFILIEMIT
              FROM TIPOCTRECEBER TR, CONTARECEBER  CR, BOLETRECEBER  BO,
                   CLIENTE CL, NOTAFISCAL  NF, FILIAL FL
             WHERE TR.CDTPCTRECEB  = CR.CDTPCTRECEB
               AND BO.CDFILIBAIREC = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAREC   = @C_BAIXA_NRBAIXAREC
               AND CR.CDFILIBOLREC = BO.CDFILIAL
               AND CR.NRLANBOLREC  = BO.NRLANBOLREC
               AND NF.CDCLIENTE    = CL.CDCLIENTE
               AND NF.CDFILIAL     = CR.CDFILIAL
               AND NF.NRLANCTONF   = CR.NRLANCTONF
               AND NF.CDFILIEMIT   = FL.CDFILIAL
               AND CR.VRATUAREC    <> 0;
                                                                                                                       
         OPEN C_CONTA;
         FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,      @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAREC,
                                      @C_CONTA_CDCLIENTE,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                      @C_CONTA_IDTPCTRECEBER, @C_CONTA_DSTPCTRECEB, @C_CONTA_CDCONTCTBL,
                                      @C_CONTA_CDCENTCUST,    @C_CONTA_CDFILIEMIT;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
            EXEC CONTCTBL_CLIENTE @C_BAIXA_CDEMPRESA, '', 'S', @C_CONTA_CDFILIEMIT, @C_CONTA_CDCLIENTE, @V_CDCONTCTBL,
                                  @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
                                                                                                                       
            /*MONTA HISTORICO PADRAO*/
            EXEC MONTA_HISTORICO @C_CONTA_CDFILIAL, @C_CONTA_NRLANCTONF, @V_CDHISTPADRTPB, @C_CONTA_NRNOTAFISC,
                                 @C_CONTA_DTEMISSAO, '07', '', @V_DSHISTPADRTPB;
                                                                                                                       
            /*INSERE PARTIDA DE CREDITO*/
            SET @C_CONTA_VRATUARECAJUST = ROUND(@C_CONTA_VRATUAREC, 2);
            EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL, 
                              @V_CDHISTPADRTPB, @V_DSHISTPADRTPB, @C_CONTA_VRATUARECAJUST, 'C', @C_CONTA_CDCLIENTE, '11',
                              @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
            /*INSERE RATEIO*/
            SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST,@C_BAIXA_CDCENTCUST);
            SET @C_CONTA_VRATUARECAJUST  = (ROUND(@C_CONTA_VRATUAREC, 2) * (-1));
            EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_CONTA_CDFILIEMIT,
                                @C_CONTA_CDCENTCUSTAJUST, @C_CONTA_VRATUARECAJUST;
                                                                                                                       
            FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,      @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAREC,
                                         @C_CONTA_CDCLIENTE,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                         @C_CONTA_IDTPCTRECEBER, @C_CONTA_DSTPCTRECEB, @C_CONTA_CDCONTCTBL,
                                         @C_CONTA_CDCENTCUST,    @C_CONTA_CDFILIEMIT;
         END;
         CLOSE C_CONTA;
         DEALLOCATE C_CONTA;
                                                                                                                       
         SET @V_CDCHAVE = 'X';
                                                                                                                       
         DECLARE C_AJUSTE CURSOR FOR 
            SELECT TA.DSAJUCTREC, AR.CDAJUCTREC, AR.VRAJBOLREC,
                   ROUND(AR.VRAJBOLREC * ROUND(CR.VRATUAREC/BO.VRBOLREC, 3), 2) VRAJBOLRAT,
                   CR.CDFILIBOLREC, BO.NRLANBOLREC, CR.CDFILIAL, CR.NRLANCTONF, CL.CDCLIENTE,
                   NF.CDFILIEMIT, NF.NRNOTAFISC, TA.IDAJUCTREC, TA.IDCTBAJCTREC, NF.CDEMPRESA,
                   TA.CDCONTCTBL, FL.CDCENTCUST
              FROM TIPOAJRECEBER TA, AJBOLREC AR, CONTARECEBER CR,
                   CLIENTE CL, NOTAFISCAL NF, FILIAL FL, BOLETRECEBER BO
             WHERE BO.CDFILIBAIREC = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAREC   = @C_BAIXA_NRBAIXAREC
               AND CR.CDFILIBOLREC = BO.CDFILIAL
               AND CR.NRLANBOLREC  = BO.NRLANBOLREC
               AND TA.CDAJUCTREC   = AR.CDAJUCTREC
               AND AR.CDFILIAL     = CR.CDFILIBOLREC
               AND AR.NRLANBOLREC  = CR.NRLANBOLREC
               AND CL.CDCLIENTE    = NF.CDCLIENTE
               AND NF.CDFILIAL     = CR.CDFILIAL
               AND NF.NRLANCTONF   = CR.NRLANCTONF
               AND NF.CDFILIEMIT   = FL.CDFILIAL
             ORDER BY CR.CDFILIBOLREC, CR.NRLANBOLREC, AR.CDAJUCTREC;
                                                                                                                       
         OPEN C_AJUSTE;
         FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTREC,   @C_AJUSTE_CDAJUCTREC,   @C_AJUSTE_VRAJBOLREC,
                                       @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBOLREC, @C_AJUSTE_NRLANBOLREC,
                                       @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF,   @C_AJUSTE_CDCLIENTE,
                                       @C_AJUSTE_CDFILIEMIT,   @C_AJUSTE_NRNOTAFISC,   @C_AJUSTE_IDAJUCTREC,
                                       @C_AJUSTE_IDCTBAJCTREC, @C_AJUSTE_CDEMPRESA,    @C_AJUSTE_CDCONTCTBL,
                                       @C_AJUSTE_CDCENTCUST;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
            IF (@V_CDCHAVE <> (@C_AJUSTE_CDFILIBOLREC + @C_AJUSTE_NRLANBOLREC + @C_AJUSTE_CDAJUCTREC)) BEGIN
               SET @V_VRRESTOAJUS = @C_AJUSTE_VRAJBOLREC;
               SET @V_CDCHAVE = (@C_AJUSTE_CDFILIBOLREC + @C_AJUSTE_NRLANBOLREC + @C_AJUSTE_CDAJUCTREC);
                                                                                                                       
               SELECT @V_NRCOUNT = COUNT(NRLANCTONF)
                 FROM CONTARECEBER
                WHERE CDFILIBOLREC = @C_AJUSTE_CDFILIBOLREC
                  AND NRLANBOLREC  = @C_AJUSTE_NRLANBOLREC;
                                                                                                                       
               SET @V_NRPARTIDA = 1;
            END;
                                                                                                                       
            IF (@V_NRCOUNT = 1) BEGIN
               SET @V_VRAJBOLREC  = @C_AJUSTE_VRAJBOLREC;
               SET @V_VRRESTOAJUS = 0;
            END
            ELSE IF (@V_NRPARTIDA = @V_NRCOUNT) BEGIN
               SET @V_VRAJBOLREC  = @V_VRRESTOAJUS;
               SET @V_VRRESTOAJUS = 0;
            END
            ELSE BEGIN
               SET @V_VRRESTOAJUS = (@V_VRRESTOAJUS - @C_AJUSTE_VRAJBOLRAT);
               SET @V_VRAJBOLREC  = @C_AJUSTE_VRAJBOLRAT;
            END;
                                                                                                                       
            SELECT @V_CDHISTPADRAJ = HP.CDHISTPADR, 
                   @V_DSHISTPADRAJ = HP.DSHISTPADR
              FROM HISTPADR HP, TIPOAJRECEBER TA
             WHERE TA.CDAJUCTREC = @C_AJUSTE_CDAJUCTREC
               AND HP.CDHISTPADR = TA.CDHISTPADR;
                                                                                                                       
            IF (@C_AJUSTE_IDAJUCTREC = 'D') BEGIN
               SET @V_VRFATOCONV = -1;
            END
            ELSE BEGIN
               SET @V_VRFATOCONV = 1;
            END;
                                                                                                                       
            /*MONTA HISTORICO PADRAO*/
            EXEC MONTA_HISTORICO @C_AJUSTE_CDFILIAL, @C_AJUSTE_NRLANCTONF, @V_CDHISTPADRAJ, @C_AJUSTE_NRNOTAFISC, NULL,
                                 '07', @C_AJUSTE_CDAJUCTREC, @V_DSHISTPADRAJ;
                                                                                                                       
            IF (@C_AJUSTE_IDCTBAJCTREC = 'S') BEGIN
               SET @V_CDCONTCTBL = @C_AJUSTE_CDCONTCTBL;
            END
            ELSE BEGIN
               EXEC CONTCTBL_CLIENTE @C_BAIXA_CDEMPRESA, '', 'S', @C_AJUSTE_CDFILIEMIT, @C_AJUSTE_CDCLIENTE, 
                                     @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
            END;
                                                                                                                       
            /*INSERE PARTIDA*/
            SET @V_VRAJBOLRECAJUST = ROUND(@V_VRAJBOLREC * @V_VRFATOCONV, 2);
            EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @V_CDCONTCTBL,
                              @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VRAJBOLRECAJUST, 'B', @C_BAIXA_CDREDUCONT, 
                              '11', @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
            SET @V_NRPARTRAT  = 1;
            SET @V_VRRESTORAT = ROUND(@V_VRAJBOLREC, 2);
            SET @V_VRAJBOLRAT = 0;
                                                                                                                       
            SELECT @V_NRCOUNTRAT = COUNT(*)
              FROM RATTPAJR
             WHERE CDAJUCTREC = @C_AJUSTE_CDAJUCTREC;
                                                                                                                       
            IF (@V_NRCOUNTRAT = 0) BEGIN
               /*INSERE RATEIO*/
               SET @C_AJUSTE_CDCENTCUSTAJUST = ISNULL(@C_AJUSTE_CDCENTCUST, @C_BAIXA_CDCENTCUST);
               SET @V_VRAJBOLRECAJUST = ROUND((@V_VRAJBOLREC * @V_VRFATOCONV), 2)
               EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, 
                                   @C_AJUSTE_CDFILIEMIT, @C_AJUSTE_CDCENTCUSTAJUST, @V_VRAJBOLRECAJUST;
            END
            ELSE BEGIN
               DECLARE C_RATEIO CURSOR FOR 
                  SELECT CDCENTCUST, CDFIRATTPAJR, CDFILIAL, VRPERATTPAJR
                    FROM RATTPAJR
                   WHERE CDAJUCTREC = @C_AJUSTE_CDAJUCTREC;
                                                                                                                       
               OPEN C_RATEIO;
               FETCH NEXT FROM C_RATEIO INTO @C_RATEIO_CDCENTCUST, @C_RATEIO_CDFIRATTPAJR, @C_RATEIO_CDFILIAL,
                                             @C_RATEIO_VRPERATTPAJR;
                                                                                                                       
               WHILE (@@FETCH_STATUS = 0) BEGIN
                                                                                                                       
                  IF (@V_NRPARTRAT = @V_NRCOUNTRAT) BEGIN
                     SET @V_VRRESTORAT = @V_VRRESTORAT - (ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJR / 100)), 2));
                     SET @V_VRAJBOLRAT = ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJR / 100)), 2);
                                                                                                                       
                     IF (@V_VRRESTORAT <> 0) BEGIN
                        SET @V_VRAJBOLRAT = (@V_VRAJBOLRAT + @V_VRRESTORAT);
                     END;
                  END
                  ELSE BEGIN
                     SET @V_VRRESTORAT = @V_VRRESTORAT - (ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJR / 100)),2));
                     SET @V_VRAJBOLRAT = ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJR / 100)), 2);
                  END;
                                                                                                                       
                  SET @V_NRPARTRAT = @V_NRPARTRAT + 1;
                                                                                                                       
                  /*INSERE RATEIO*/
                  SET @C_RATEIO_CDFILIALAJUST = ISNULL(@C_RATEIO_CDFILIAL, @C_AJUSTE_CDFILIEMIT);
                  SET @V_VRAJBOLRATAJUST = ROUND(@V_VRAJBOLRAT * @V_VRFATOCONV,2);
                  EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE,
                                      @C_RATEIO_CDFILIALAJUST, @C_RATEIO_CDCENTCUST, @V_VRAJBOLRATAJUST;
                                                                                                                       
                  FETCH NEXT FROM C_RATEIO INTO @C_RATEIO_CDCENTCUST, @C_RATEIO_CDFIRATTPAJR, @C_RATEIO_CDFILIAL,
                                                @C_RATEIO_VRPERATTPAJR;
               END;
               CLOSE C_RATEIO;
               DEALLOCATE C_RATEIO;
            END;
            SET @V_NRPARTIDA = @V_NRPARTIDA + 1;
                                                                                                                       
            FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTREC,   @C_AJUSTE_CDAJUCTREC,   @C_AJUSTE_VRAJBOLREC,
                                          @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBOLREC, @C_AJUSTE_NRLANBOLREC,
                                          @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF,   @C_AJUSTE_CDCLIENTE,
                                          @C_AJUSTE_CDFILIEMIT,   @C_AJUSTE_NRNOTAFISC,   @C_AJUSTE_IDAJUCTREC,
                                          @C_AJUSTE_IDCTBAJCTREC, @C_AJUSTE_CDEMPRESA,    @C_AJUSTE_CDCONTCTBL,
                                          @C_AJUSTE_CDCENTCUST;
         END;
         CLOSE C_AJUSTE;
         DEALLOCATE C_AJUSTE;
                                                                                                                       
         DECLARE C_BAIXA_EXC CURSOR FOR
            SELECT CDFILIAL, NRBAIXAREC, NRSEQPARTBOREC, NRLANCTBESTREC,
                   CDCONTCTBL, CDHISTPADR, DSHISTPARTBOREC, VRLANCPARTBOREC,
                   IDLANCCOMEBOREC, CDCONTCOMEBOREC
              FROM HISPARTBOLEXREC
             WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
               AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
                                                                                                                       
         OPEN C_BAIXA_EXC;
         FETCH NEXT FROM C_BAIXA_EXC INTO @C_BAIXA_EXC_CDFILIAL,        @C_BAIXA_EXC_NRBAIXAREC,      @C_BAIXA_EXC_NRSEQPARTBOREC,
                                          @C_BAIXA_EXC_NRLANCTBESTREC,  @C_BAIXA_EXC_CDCONTCTBL,      @C_BAIXA_EXC_CDHISTPADR,
                                          @C_BAIXA_EXC_DSHISTPARTBOREC, @C_BAIXA_EXC_VRLANCPARTBOREC, @C_BAIXA_EXC_IDLANCCOMEBOREC,
                                          @C_BAIXA_EXC_CDCONTCOMEBOREC;
                                                                                                                       
         WHILE (@@FETCH_STATUS = 0) BEGIN
            /*INSERE PARTIDA*/
            EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE, @C_BAIXA_EXC_CDCONTCTBL,
                              @C_BAIXA_EXC_CDHISTPADR, @C_BAIXA_EXC_DSHISTPARTBOREC, @C_BAIXA_EXC_VRLANCPARTBOREC,
                              @C_BAIXA_EXC_IDLANCCOMEBOREC, @C_BAIXA_EXC_CDCONTCOMEBOREC, '11', @C_BAIXA_NRBAIXAREC, 'N';
                                                                                                                       
            DECLARE C_RATEIO_EXC CURSOR FOR 
               SELECT CDFILIAL, NRBAIXAREC, NRSEQPARTBOREC,
                      CDFILCENTCUST, CDCENTCUST, VRRATEIOPABOREC
                 FROM HISRAPABOLEXREC
                WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
                  AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
                                                                                                                       
            OPEN C_RATEIO_EXC;
            FETCH NEXT FROM C_RATEIO_EXC INTO @C_RATEIO_EXC_CDFILIAL,      @C_RATEIO_EXC_NRBAIXAREC, @C_RATEIO_EXC_NRSEQPARTBOREC,
                                              @C_RATEIO_EXC_CDFILCENTCUST, @C_RATEIO_EXC_CDCENTCUST, @C_RATEIO_EXC_VRRATEIOPABOREC;
                                                                                                                       
            WHILE (@@FETCH_STATUS = 0) BEGIN
               /*INSERE RATEIO*/
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAREC, @V_NRLANCLOTE,
                                   @C_RATEIO_EXC_CDFILCENTCUST, @C_RATEIO_EXC_CDCENTCUST, @C_RATEIO_EXC_VRRATEIOPABOREC;
                                                                                                                      
               FETCH NEXT FROM C_RATEIO_EXC INTO @C_RATEIO_EXC_CDFILIAL,       @C_RATEIO_EXC_NRBAIXAREC,
                                                 @C_RATEIO_EXC_NRSEQPARTBOREC, @C_RATEIO_EXC_CDFILCENTCUST, 
                                                 @C_RATEIO_EXC_CDCENTCUST,     @C_RATEIO_EXC_VRRATEIOPABOREC;
            END;
            CLOSE C_RATEIO_EXC;
            DEALLOCATE C_RATEIO_EXC;
                                                                                                                      
            FETCH NEXT FROM C_BAIXA_EXC INTO @C_BAIXA_EXC_CDFILIAL,        @C_BAIXA_EXC_NRBAIXAREC,      @C_BAIXA_EXC_NRSEQPARTBOREC,
                                             @C_BAIXA_EXC_NRLANCTBESTREC,  @C_BAIXA_EXC_CDCONTCTBL,      @C_BAIXA_EXC_CDHISTPADR,
                                             @C_BAIXA_EXC_DSHISTPARTBOREC, @C_BAIXA_EXC_VRLANCPARTBOREC, @C_BAIXA_EXC_IDLANCCOMEBOREC,
                                             @C_BAIXA_EXC_CDCONTCOMEBOREC;
         END;
         CLOSE C_BAIXA_EXC;
         DEALLOCATE C_BAIXA_EXC;
      END;
                                                                                                                      
      INSERT INTO RELACBRECLANLOT
         (CDFILIAL, NRBAIXAREC, CDEMPRESA, CDLOTE, NRLANCLOTE, NRSEQLANLOTE)
      VALUES
         (@C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAREC, @C_BAIXA_CDEMPRESA, @V_CDLOTE, @V_NRLANCLOTE, '00001');
                                                                                                                      
      IF (TEKNISA.CONFERE_PARTIDA(@C_BAIXA_CDEMPRESA, @V_CDLOTE, @V_NRLANCLOTE, @C_BAIXA_DTBAIXAREC) = 'V') BEGIN
         UPDATE BAIXARECEBIDA
            SET IDSTATUSCTBREC = 'C'
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
      END
      ELSE BEGIN
         UPDATE BAIXARECEBIDA
            SET IDSTATUSCTBREC = 'E'
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAREC = @C_BAIXA_NRBAIXAREC;
      END;
                                                                                                                      
      COMMIT;
                                                                                                                      
      FETCH NEXT FROM C_BAIXA INTO @C_BAIXA_CDFILIAL,     @C_BAIXA_NRBAIXAREC, @C_BAIXA_CDEMPRESA,
                                   @C_BAIXA_DTBAIXAREC,   @C_BAIXA_VRBAIXAREC, @C_BAIXA_CDTPBAIXAREC,
                                   @C_BAIXA_CDREDUCONT,   @C_BAIXA_CDBANCO,    @C_BAIXA_CDAGENCIA,
                                   @C_BAIXA_CDCONTCORR,   @C_BAIXA_DSCONTCORR, @C_BAIXA_CDCONTCTBL,
                                   @C_BAIXA_NMTPBAIXAREC, @C_BAIXA_CDCENTCUST, @C_BAIXA_CDPADRCONTABIL;
   END;
   CLOSE C_BAIXA;
   DEALLOCATE C_BAIXA;

   DELETE FROM LISTA
    WHERE NRLISTA = @P_NRLISTA;
END;
GO