IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
           WHERE O.NAME = 'CONTABILIZA_PAG_BAIXA' AND
                 TYPE = 'P' 	                    AND
	              U.UID = O.UID                    AND
	              U.NAME = USER)
   DROP PROCEDURE CONTABILIZA_PAG_BAIXA
GO
                                                                                                                     
CREATE PROCEDURE CONTABILIZA_PAG_BAIXA(
   @P_NRLISTA                            VARCHAR(10))
AS
   DECLARE @V_CDLOTE                     VARCHAR(20);
   DECLARE @V_NRLANCLOTE                 VARCHAR(06);
                                                                                                                     
   DECLARE @V_CDHISTPADRCR               VARCHAR(04);
   DECLARE @V_DSHISTPADRCR               VARCHAR(200);
   DECLARE @V_CDHISTPADRADI              VARCHAR(04);
   DECLARE @V_DSHISTPADRADI              VARCHAR(200);
   DECLARE @V_CDHISTPADRTPB              VARCHAR(04);
   DECLARE @V_DSHISTPADRTPB              VARCHAR(200);
   DECLARE @V_CDHISTPADRAJ               VARCHAR(04);
   DECLARE @V_DSHISTPADRAJ               VARCHAR(200);
                                                                                                                     
   DECLARE @V_VRLANCPARTBOPAG            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, 05);
   DECLARE @V_VRAJBOLPAG                 NUMERIC(15, 05);
   DECLARE @V_VRAJBOLPAGAJUST            NUMERIC(15, 05);
   DECLARE @V_VRRESTORAT                 NUMERIC(15, 05);
   DECLARE @V_VRAJBOLRAT                 NUMERIC(15, 05);
   DECLARE @V_VRAJBOLRATAJUST            NUMERIC(15, 05);
   DECLARE @V_VRFATOCONV                 NUMERIC(15, 05);
   DECLARE @V_VALOR                      DOUBLE PRECISION;
   DECLARE @V_VALORAJUST                 DOUBLE PRECISION;
                                                                                                                     
   /* VARIAVEIS DO CURSOR C_BAIXA CURSOR */
   DECLARE @C_BAIXA_CDFILIAL             VARCHAR(04);
   DECLARE @C_BAIXA_NRBAIXAPAG           VARCHAR(10);
   DECLARE @C_BAIXA_CDEMPRESA            VARCHAR(02);
   DECLARE @C_BAIXA_NRCHEQUE             VARCHAR(06);
   DECLARE @C_BAIXA_DTBAIXAPAG           DATETIME;
   DECLARE @C_BAIXA_VRBAIXAPAG           DOUBLE PRECISION;
   DECLARE @C_BAIXA_VRBAIXAPAGAJUST      DOUBLE PRECISION;
   DECLARE @C_BAIXA_DSNOMCHEQUE          VARCHAR(40);
   DECLARE @C_BAIXA_CDTPBAIXAPAG         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_IDBAIXAUTILP         VARCHAR(01);
   DECLARE @C_BAIXA_NMTPBAIXAPAG         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_VRATUAPAG            DOUBLE PRECISION;
   DECLARE @C_CONTA_VRATUAPAGAJUST       DOUBLE PRECISION;
   DECLARE @C_CONTA_CDFORNECED           VARCHAR(21);
   DECLARE @C_CONTA_NRNOTAFISC           VARCHAR(20);
   DECLARE @C_CONTA_DTEMISSAO            DATETIME;
   DECLARE @C_CONTA_IDTPCTPAGAR          VARCHAR(01);
   DECLARE @C_CONTA_DSTPCTPAGAR          VARCHAR(40);
   DECLARE @C_CONTA_CDCONTCTBL           VARCHAR(20);
   DECLARE @C_CONTA_IDCTBTPCNTBPAG       VARCHAR(01);
   DECLARE @C_CONTA_CDCENTCUST           VARCHAR(04);
   DECLARE @C_CONTA_CDCENTCUSTAJUST      VARCHAR(04);
   DECLARE @C_CONTA_CDFILIRECE           VARCHAR(30);
   DECLARE @C_CONTA_VRNOTAFISC           DOUBLE PRECISION;
                                                                                                                     
   /* VARIAVEIS DO CURSOR C_AJUSTE */
   DECLARE @C_AJUSTE_DSAJUCTPAG          VARCHAR(40);
   DECLARE @C_AJUSTE_CDAJUCTPAG          VARCHAR(02);
   DECLARE @C_AJUSTE_VRAJBOLPAG          DOUBLE PRECISION;
   DECLARE @C_AJUSTE_VRAJBOLRAT          DOUBLE PRECISION;
   DECLARE @C_AJUSTE_CDFILIBPAG          VARCHAR(04);
   DECLARE @C_AJUSTE_NRLANBOLPAG         VARCHAR(10);
   DECLARE @C_AJUSTE_CDFILIAL            VARCHAR(04);
   DECLARE @C_AJUSTE_NRLANCTONF          VARCHAR(10);
   DECLARE @C_AJUSTE_CDFORNECED          VARCHAR(21);
   DECLARE @C_AJUSTE_CDFILIRECE          VARCHAR(30);
   DECLARE @C_AJUSTE_NRNOTAFISC          VARCHAR(20);
   DECLARE @C_AJUSTE_IDAJUCTPAG          VARCHAR(01);
   DECLARE @C_AJUSTE_IDCTBAJCTPAG        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_CDFIRATTPAJP        VARCHAR(04);
   DECLARE @C_RATEIO_CDFILIAL            VARCHAR(04);
   DECLARE @C_RATEIO_CDFILIALAJUST       VARCHAR(04);
   DECLARE @C_RATEIO_VRPERATTPAJP        DOUBLE PRECISION;
                                                                                                                     
   /* VARIAVEIS DO CURSOR C_BAIXA_EXC */
   DECLARE @C_BAIXA_EXC_CDFILIAL         VARCHAR(04);
   DECLARE @C_BAIXA_EXC_NRBAIXAPAG       VARCHAR(10);
   DECLARE @C_BAIXA_EXC_NRSEQPARTBOPAG   VARCHAR(10);
   DECLARE @C_BAIXA_EXC_NRLANCTBESTPAG   VARCHAR(30);
   DECLARE @C_BAIXA_EXC_CDCONTCTBL       VARCHAR(20);
   DECLARE @C_BAIXA_EXC_CDHISTPADR       VARCHAR(04);
   DECLARE @C_BAIXA_EXC_DSHISTPARTBOPAG  VARCHAR(200);
   DECLARE @C_BAIXA_EXC_VRLANCPARTBOPAG  DOUBLE PRECISION;
   DECLARE @C_BAIXA_EXC_IDLANCCOMEBOPAG  VARCHAR(01);
   DECLARE @C_BAIXA_EXC_CDCONTCOMEBOPAG  VARCHAR(30);
                                                                                                                     
   /* VARIAVEIS DO CURSOR C_RATEIO_EXC */
   DECLARE @C_RATEIO_EXC_CDFILIAL          VARCHAR(04);
   DECLARE @C_RATEIO_EXC_NRBAIXAPAG        VARCHAR(10);
   DECLARE @C_RATEIO_EXC_NRSEQPARTBOPAG    VARCHAR(10);
   DECLARE @C_RATEIO_EXC_CDFILCENTCUST     VARCHAR(04);
   DECLARE @C_RATEIO_EXC_CDCENTCUST        VARCHAR(04);
   DECLARE @C_RATEIO_EXC_VRRATEIOPABOPAG   DOUBLE PRECISION;
BEGIN
   EXEC EXCLUI_LANCCONTABIL '10', @P_NRLISTA;
                                                                                                                     
   DECLARE C_BAIXA CURSOR FOR
      SELECT BP.CDFILIAL, BP.NRBAIXAPAG, BP.CDEMPRESA, BP.NRCHEQUE,
             BP.DTBAIXAPAG, BP.VRBAIXAPAG, BP.DSNOMCHEQUE, BP.CDTPBAIXAPAG,
             CC.CDREDUCONT, CC.CDBANCO, CC.CDAGENCIA, CC.CDCONTCORR, CC.DSCONTCORR,
             CC.CDCONTCTBL, TBP.IDBAIXAUTILP, TBP.NMTPBAIXAPAG, E.CDCENTCUST, TBP.CDPADRCONTABIL
        FROM TIPOBAIXAPAG TBP, CONTCORR CC, EMPRESA E, BAIXAPAGA BP, LISTA L
       WHERE L.NRLISTA        = @P_NRLISTA
         AND BP.CDFILIAL      = SUBSTRING(L.CDLISTA, 01, 04)
         AND BP.NRBAIXAPAG    = SUBSTRING(L.CDLISTA, 05, 10)
         AND BP.CDTPBAIXAPAG  = TBP.CDTPBAIXAPAG
         AND CC.CDREDUCONT    = BP.CDREDUCONT
         AND TBP.IDCTBLBXPAG  = 'S'
         AND BP.IDSTATUSBPAG  = 'E'
         AND BP.NRLCTBBPAG    IS NULL
         AND BP.CDEMPRESA     = E.CDEMPRESA
         AND BP.VRBAIXAPAG    <> 0
         AND TBP.CDTPBAIXAPAG = BP.CDTPBAIXAPAG
       ORDER BY BP.CDFILIAL, BP.NRBAIXAPAG;
                                                                                                                     
   OPEN C_BAIXA;
   FETCH NEXT FROM C_BAIXA INTO @C_BAIXA_CDFILIAL,     @C_BAIXA_NRBAIXAPAG,   @C_BAIXA_CDEMPRESA,
                                @C_BAIXA_NRCHEQUE,     @C_BAIXA_DTBAIXAPAG,   @C_BAIXA_VRBAIXAPAG,
                                @C_BAIXA_DSNOMCHEQUE,  @C_BAIXA_CDTPBAIXAPAG, @C_BAIXA_CDREDUCONT,
                                @C_BAIXA_CDBANCO,      @C_BAIXA_CDAGENCIA,    @C_BAIXA_CDCONTCORR,
                                @C_BAIXA_DSCONTCORR,   @C_BAIXA_CDCONTCTBL,   @C_BAIXA_IDBAIXAUTILP,
                                @C_BAIXA_NMTPBAIXAPAG, @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, '10', '', '', @C_BAIXA_DTBAIXAPAG, @C_BAIXA_CDTPBAIXAPAG, '', 
                                @V_CDLOTE, @V_NRLANCLOTE;
                                                                                                                     
         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 = '10')
              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
                                                                                                                      
            EXEC GERA_LOTECONTABIL @C_BAIXA_CDEMPRESA, '10', '', '', @C_BAIXA_DTBAIXAPAG, @C_BAIXA_CDTPBAIXAPAG, '',
                                   @V_CDLOTE, @V_NRLANCLOTE;
            SET @V_NRLANCLOTE = RIGHT(REPLICATE('0', 6) + CONVERT(VARCHAR, (CONVERT(NUMERIC, @V_NRLANCLOTE) + 1)), 6);
                                                                                                                      
            SELECT @V_CDHISTPADRCR = H.CDHISTPADR, 
                   @V_DSHISTPADRCR = HP.DSHISTPADR
              FROM HISTINTEGRA H ,HISTPADR HP
             WHERE H.CDHISTPADR = HP.CDHISTPADR
               AND CDOPERACAO   = 'BXCRPG';
                                                                                                                      
            SELECT @V_CDHISTPADRADI = H.CDHISTPADR, 
                   @V_DSHISTPADRADI = HP.DSHISTPADR
              FROM HISTINTEGRA H ,HISTPADR HP
             WHERE H.CDHISTPADR = HP.CDHISTPADR
               AND CDOPERACAO   = 'BXPADI';
                                                                                                                      
            SELECT @V_CDHISTPADRTPB = HP.CDHISTPADR, 
                   @V_DSHISTPADRTPB = HP.DSHISTPADR
              FROM HISTPADR HP, TIPOBAIXAPAG TB
             WHERE TB.CDTPBAIXAPAG = @C_BAIXA_CDTPBAIXAPAG
               AND HP.CDHISTPADR   = TB.CDHISTPADR;
                                                                                                                      
            IF (@V_CDHISTPADRTPB IS NULL) BEGIN
               SELECT @V_CDHISTPADRTPB = H.CDHISTPADR, 
                      @V_DSHISTPADRTPB = HP.DSHISTPADR
                 FROM HISTINTEGRA H ,HISTPADR HP
                WHERE H.CDHISTPADR = HP.CDHISTPADR
                  AND CDOPERACAO   = 'BAIXAP';
            END;
                                                                                                                      
            IF (@C_BAIXA_IDBAIXAUTILP IN ('A','M')) BEGIN
               IF (@V_CDHISTPADRCR IS NULL) BEGIN
                  SET @V_CDHISTPADRCR = @V_CDHISTPADRTPB;
                  SET @V_DSHISTPADRCR = 'Cheque: ' + @C_BAIXA_NRCHEQUE;
               END;
            END
            ELSE BEGIN
               IF (@V_CDHISTPADRCR IS NULL) BEGIN
                  SET @V_CDHISTPADRCR = @V_CDHISTPADRTPB;
                  SET @V_DSHISTPADRCR = 'PAGTO: ' + @C_BAIXA_NMTPBAIXAPAG;
               END
               ELSE BEGIN
                  /*MONTA HISTORICO PADRAO*/
                  EXEC MONTA_HISTORICO @C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAPAG, @V_CDHISTPADRCR, '', @C_BAIXA_DTBAIXAPAG,
                                       '10', '', @V_DSHISTPADRCR;
               END;
            END;
                                                                                                                      
            IF (@C_PARTIDA_IDTPCONTAPART = '21') BEGIN
               SET @V_CDCONTCTBL = @C_BAIXA_CDCONTCTBL;
            END;
                                                                                                                      
            IF (@C_PARTIDA_IDTPVALORPART = '11') BEGIN
               SELECT @V_VRLANCPARTBOPAG = ISNULL(SUM(VRLANCPARTBOPAG),0)
                 FROM HISPARTBOLEXPAG
                WHERE CDFILIAL = @C_BAIXA_CDFILIAL
                  AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
                                                                                                                      
                 SET @V_VALOR = ROUND((@C_BAIXA_VRBAIXAPAG + @V_VRLANCPARTBOPAG), 2);
            END;
                                                                                                                      
            IF (@C_PARTIDA_IDCREDDEBCONTAB = 'C') BEGIN
               EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL, 
                                 @V_CDHISTPADRCR, @V_DSHISTPADRCR, @V_VALOR, 'B', @C_BAIXA_CDREDUCONT, '10', 
                                 @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
               SET @C_BAIXA_VRBAIXAPAGAJUST = ROUND((@C_BAIXA_VRBAIXAPAG + @V_VRLANCPARTBOPAG), 2);
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                                   @C_BAIXA_CDCENTCUST, @C_BAIXA_VRBAIXAPAGAJUST;
            END
            ELSE BEGIN
               SET @V_VALORAJUST = -@V_VALOR;
               EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                 @V_CDHISTPADRCR, @V_DSHISTPADRCR, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '10',
                                 @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
               SET @C_BAIXA_VRBAIXAPAGAJUST = -(ROUND((@C_BAIXA_VRBAIXAPAG + @V_VRLANCPARTBOPAG), 2));
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                                   @C_BAIXA_CDCENTCUST, @C_BAIXA_VRBAIXAPAGAJUST;
            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 CP.CDFILIAL, CP.NRLANCTONF, CP.VRATUAPAG, FO.CDFORNECED,
                   NF.NRNOTAFISC, NF.DTEMISSAO, TP.IDTPCTPAGAR, TP.DSTPCTPAGAR,
                   TP.CDCONTCTBL, TP.IDCTBTPCNTBPAG, FL.CDCENTCUST, NF.CDFILIRECE, NF.VRNOTAFISC
              FROM TIPOCTPAGAR TP, CONTAPAGAR  CP, BOLETPAGAR  BO,
                   FORNECEDOR  FO, NOTAFISCAL  NF, FILIAL FL
             WHERE TP.CDTPCTPAGAR  = CP.CDTPCTPAGAR
               AND BO.CDFILIBAIPAG = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG
               AND CP.CDFILIBPAG = BO.CDFILIAL
               AND CP.NRLANBOLPAG = BO.NRLANBOLPAG
               AND NF.CDFORNECED = FO.CDFORNECED
               AND NF.CDFILIAL = CP.CDFILIAL
               AND NF.NRLANCTONF = CP.NRLANCTONF
               AND NF.CDFILIRECE = FL.CDFILIAL
               AND CP.VRATUAPAG <> 0;
                                                                                                                      
         OPEN C_CONTA;
         FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,       @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAPAG,
                                      @C_CONTA_CDFORNECED,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                      @C_CONTA_IDTPCTPAGAR,    @C_CONTA_DSTPCTPAGAR, @C_CONTA_CDCONTCTBL,
                                      @C_CONTA_IDCTBTPCNTBPAG, @C_CONTA_CDCENTCUST,  @C_CONTA_CDFILIRECE,
                                      @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   = '14')
                   AND (IDTPMOVLOTEPACO = '10')
                 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 = '14') BEGIN
                    SET @V_CDCONTCTBL = @C_CONTA_CDCONTCTBL;
                 END
                 ELSE IF (@C_PARTIDA_IDTPCONTAPART = '00') BEGIN
                    EXEC CONTCTBL_FORNECEDOR @C_BAIXA_CDEMPRESA, '', 'E', @C_CONTA_CDFILIRECE, @C_CONTA_CDFORNECED,
                                             @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, '06', '', @V_DSHISTPADRTPB;
                                                                                                                      
                 IF (@C_PARTIDA_IDCREDDEBCONTAB = 'D') BEGIN
                    SET @V_VALORAJUST = (ROUND(@V_VALOR, 2) * (-1));
                    EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL, 
                                      @V_CDHISTPADRADI, @V_DSHISTPADRTPB, @V_VALORAJUST, 'F', @C_CONTA_CDFORNECED, '10',
                                      @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
                    /*INSERE RATEIO*/
                    SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST, @C_BAIXA_CDCENTCUST);
                    SET @V_VALORAJUST = ROUND(@V_VALOR, 2);
                    EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, 
                                        @C_CONTA_CDFILIRECE, @C_CONTA_CDCENTCUSTAJUST, @V_VALORAJUST;
                 END
                 ELSE BEGIN
                    SET @V_VALORAJUST = (ROUND(@V_VALOR, 2) * (-1));
                    EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                      @V_CDHISTPADRADI, @V_DSHISTPADRTPB, @V_VALORAJUST, 'F', @C_CONTA_CDFORNECED, '10',
                                      @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
                    /*INSERE RATEIO*/
                    SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST, @C_BAIXA_CDCENTCUST);
                    SET @V_VALORAJUST = ROUND(@V_VALOR, 2);
                    EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, 
                                        @C_CONTA_CDFILIRECE, @C_CONTA_CDCENTCUSTAJUST,@V_VALORAJUST;
                 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_VRATUAPAG,
                                         @C_CONTA_CDFORNECED,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                         @C_CONTA_IDTPCTPAGAR,    @C_CONTA_DSTPCTPAGAR, @C_CONTA_CDCONTCTBL,
                                         @C_CONTA_IDCTBTPCNTBPAG, @C_CONTA_CDCENTCUST,  @C_CONTA_CDFILIRECE,
                                         @C_CONTA_VRNOTAFISC;
         END;
         CLOSE C_CONTA;
         DEALLOCATE C_CONTA;
                                                                                                                      
         DECLARE C_AJUSTE CURSOR FOR
            SELECT TA.DSAJUCTPAG, AP.CDAJUCTPAG, AP.VRAJBOLPAG,
                   ROUND(AP.VRAJBOLPAG * ROUND(CP.VRATUAPAG/BO.VRBOLPAG, 3), 2) VRAJBOLRAT,
                   CP.CDFILIBPAG, BO.NRLANBOLPAG, CP.CDFILIAL, CP.NRLANCTONF, FO.CDFORNECED,
                   NF.CDFILIRECE, NF.NRNOTAFISC, TA.IDAJUCTPAG, TA.IDCTBAJCTPAG, NF.CDEMPRESA,
                   TA.CDCONTCTBL, FL.CDCENTCUST
              FROM TIPOAJPAGAR TA, AJBOLPAG AP, CONTAPAGAR CP,
                   FORNECEDOR FO, NOTAFISCAL NF, FILIAL FL, BOLETPAGAR BO
             WHERE BO.CDFILIBAIPAG = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAPAG   = @C_BAIXA_NRBAIXAPAG
               AND CP.CDFILIBPAG   = BO.CDFILIAL
               AND CP.NRLANBOLPAG  = BO.NRLANBOLPAG
               AND TA.CDAJUCTPAG   = AP.CDAJUCTPAG
               AND AP.CDFILIAL     = CP.CDFILIBPAG
               AND AP.NRLANBOLPAG  = CP.NRLANBOLPAG
               AND FO.CDFORNECED   = NF.CDFORNECED
               AND NF.CDFILIAL     = CP.CDFILIAL
               AND NF.NRLANCTONF   = CP.NRLANCTONF
               AND NF.CDFILIRECE   = FL.CDFILIAL
             ORDER BY CP.CDFILIBPAG, CP.NRLANBOLPAG, AP.CDAJUCTPAG;
                                                                                                                      
         OPEN C_AJUSTE;
         FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTPAG,   @C_AJUSTE_CDAJUCTPAG, @C_AJUSTE_VRAJBOLPAG,
                                       @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBPAG, @C_AJUSTE_NRLANBOLPAG,
                                       @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF, @C_AJUSTE_CDFORNECED,
                                       @C_AJUSTE_CDFILIRECE,   @C_AJUSTE_NRNOTAFISC, @C_AJUSTE_IDAJUCTPAG,
                                       @C_AJUSTE_IDCTBAJCTPAG, @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 (IDTPCONTAPART   = '19')
                  AND (IDTPMOVLOTEPACO = '10')
                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, TIPOAJPAGAR TA
                WHERE TA.CDAJUCTPAG = @C_AJUSTE_CDAJUCTPAG
                  AND HP.CDHISTPADR = TA.CDHISTPADR;
                                                                                                                       
                EXEC MONTA_HISTORICO @C_AJUSTE_CDFILIAL, @C_AJUSTE_NRLANCTONF, @V_CDHISTPADRAJ, @C_AJUSTE_NRNOTAFISC, 
                                     NULL, '06', @C_AJUSTE_CDAJUCTPAG, @V_DSHISTPADRAJ;
                                                                                                                      
                IF (@C_PARTIDA_IDTPCONTAPART = '19') BEGIN
                   SET @V_CDCONTCTBL = @C_AJUSTE_CDCONTCTBL;
                END
                ELSE IF (@C_PARTIDA_IDTPCONTAPART = '00') BEGIN
                   EXEC CONTCTBL_FORNECEDOR @C_BAIXA_CDEMPRESA, '', 'E', @C_AJUSTE_CDFILIRECE, @C_AJUSTE_CDFORNECED,
                                            @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
                END;
                                                                                                                      
                IF (@C_PARTIDA_IDTPVALORPART = '09') 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_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                     @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '10', 
                                     @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
                   SET @V_VRAJBOLRATAJUST = -(ROUND(@V_VRAJBOLRAT, 2));
                   EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_AJUSTE_CDFILIRECE,
                                       @C_AJUSTE_CDCENTCUST, @V_VRAJBOLRATAJUST;
                END
                ELSE BEGIN
                   SET @V_VALORAJUST = ROUND(@V_VALOR,2);
                   EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL,
                                     @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VALORAJUST, 'B', @C_BAIXA_CDREDUCONT, '10', 
                                     @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
                   SET @V_VRAJBOLRATAJUST = ROUND(@V_VRAJBOLRAT, 2);
                   EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE,
                                       @C_AJUSTE_CDFILIRECE, @C_AJUSTE_CDCENTCUST, @V_VRAJBOLRATAJUST;
                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_DSAJUCTPAG,   @C_AJUSTE_CDAJUCTPAG, @C_AJUSTE_VRAJBOLPAG,
                                          @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBPAG, @C_AJUSTE_NRLANBOLPAG,
                                          @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF, @C_AJUSTE_CDFORNECED,
                                          @C_AJUSTE_CDFILIRECE,   @C_AJUSTE_NRNOTAFISC, @C_AJUSTE_IDAJUCTPAG,
                                          @C_AJUSTE_IDCTBAJCTPAG, @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, '10', '', '', @C_BAIXA_DTBAIXAPAG, @C_BAIXA_CDTPBAIXAPAG, '', 
                                @V_CDLOTE, @V_NRLANCLOTE;
         SET @V_NRLANCLOTE = RIGHT(REPLICATE('0', 6) + CONVERT(VARCHAR, CONVERT(NUMERIC, @V_NRLANCLOTE) + 1), 6);
                                                                                                                      
         SELECT @V_CDHISTPADRCR = H.CDHISTPADR, 
                @V_DSHISTPADRCR = HP.DSHISTPADR
           FROM HISTINTEGRA H ,HISTPADR HP
          WHERE H.CDHISTPADR = HP.CDHISTPADR
            AND CDOPERACAO   = 'BXCRPG';
                                                                                                                      
         SELECT @V_CDHISTPADRADI = H.CDHISTPADR, 
                @V_DSHISTPADRADI = HP.DSHISTPADR
           FROM HISTINTEGRA H ,HISTPADR HP
          WHERE H.CDHISTPADR = HP.CDHISTPADR
            AND CDOPERACAO   = 'BXPADI';
                                                                                                                      
         SELECT @V_CDHISTPADRTPB = HP.CDHISTPADR, 
                @V_DSHISTPADRTPB = HP.DSHISTPADR
           FROM HISTPADR HP, TIPOBAIXAPAG TB
          WHERE TB.CDTPBAIXAPAG = @C_BAIXA_CDTPBAIXAPAG
            AND HP.CDHISTPADR   = TB.CDHISTPADR;
                                                                                                                      
         IF (@V_CDHISTPADRTPB IS NULL) BEGIN
            SELECT @V_CDHISTPADRTPB = H.CDHISTPADR, 
                   @V_DSHISTPADRTPB = HP.DSHISTPADR
              FROM HISTINTEGRA H ,HISTPADR HP
             WHERE H.CDHISTPADR = HP.CDHISTPADR
               AND CDOPERACAO   = 'BAIXAP';
         END;
                                                                                                                      
         IF (@C_BAIXA_IDBAIXAUTILP IN ('A','M')) BEGIN
            IF (@V_CDHISTPADRCR IS NULL) BEGIN
               SET @V_CDHISTPADRCR = @V_CDHISTPADRTPB;
               SET @V_DSHISTPADRCR = 'Cheque: ' + @C_BAIXA_NRCHEQUE;
            END;
         END
         ELSE BEGIN
            IF (@V_CDHISTPADRCR IS NULL) BEGIN
               SET @V_CDHISTPADRCR = @V_CDHISTPADRTPB;
               SET @V_DSHISTPADRCR = 'PAGTO: ' + @C_BAIXA_NMTPBAIXAPAG;
            END
            ELSE BEGIN
               /*MONTA HISTORICO PADRAO*/
               EXEC MONTA_HISTORICO @C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAPAG, @V_CDHISTPADRCR, '', @C_BAIXA_DTBAIXAPAG, 
                                    '10', '', @V_DSHISTPADRCR;
            END;
         END;
                                                                                                                      
         SELECT @V_VRLANCPARTBOPAG = ISNULL(SUM(VRLANCPARTBOPAG),0) * (-1)
           FROM HISPARTBOLEXPAG
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
                                                                                                                      
         /*INSERE PARTIDA DE CREDITO*/
         SET @C_BAIXA_VRBAIXAPAGAJUST = ROUND((@C_BAIXA_VRBAIXAPAG + @V_VRLANCPARTBOPAG), 2);
         EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_BAIXA_CDCONTCTBL,
                           @V_CDHISTPADRCR, @V_DSHISTPADRCR, @C_BAIXA_VRBAIXAPAGAJUST, 'B', @C_BAIXA_CDREDUCONT, '10',
                           @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
         /*INSERE RATEIO*/
         SET @C_BAIXA_VRBAIXAPAGAJUST = ROUND((@C_BAIXA_VRBAIXAPAG + @V_VRLANCPARTBOPAG), 2);
         EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_BAIXA_CDFILIAL,
                             @C_BAIXA_CDCENTCUST, @C_BAIXA_VRBAIXAPAGAJUST;
                                                                                                                      
         DECLARE C_CONTA CURSOR FOR
            SELECT CP.CDFILIAL, CP.NRLANCTONF, CP.VRATUAPAG, FO.CDFORNECED,
                   NF.NRNOTAFISC, NF.DTEMISSAO, TP.IDTPCTPAGAR, TP.DSTPCTPAGAR,
                   TP.CDCONTCTBL, TP.IDCTBTPCNTBPAG, FL.CDCENTCUST, NF.CDFILIRECE
              FROM TIPOCTPAGAR TP, CONTAPAGAR  CP, BOLETPAGAR  BO,
                   FORNECEDOR  FO, NOTAFISCAL  NF, FILIAL FL
             WHERE TP.CDTPCTPAGAR  = CP.CDTPCTPAGAR
               AND BO.CDFILIBAIPAG = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAPAG   = @C_BAIXA_NRBAIXAPAG
               AND CP.CDFILIBPAG   = BO.CDFILIAL
               AND CP.NRLANBOLPAG  = BO.NRLANBOLPAG
               AND NF.CDFORNECED   = FO.CDFORNECED
               AND NF.CDFILIAL     = CP.CDFILIAL
               AND NF.NRLANCTONF   = CP.NRLANCTONF
               AND NF.CDFILIRECE   = FL.CDFILIAL
               AND CP.VRATUAPAG    <> 0;
                                                                                                                      
         OPEN C_CONTA;
         FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,       @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAPAG,
                                      @C_CONTA_CDFORNECED,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                      @C_CONTA_IDTPCTPAGAR,    @C_CONTA_DSTPCTPAGAR, @C_CONTA_CDCONTCTBL,
                                      @C_CONTA_IDCTBTPCNTBPAG, @C_CONTA_CDCENTCUST,  @C_CONTA_CDFILIRECE,
                                      @C_CONTA_VRNOTAFISC;
                                                                                                                      
         WHILE (@@FETCH_STATUS = 0) BEGIN 
            IF (@C_CONTA_IDTPCTPAGAR = '2') BEGIN
               /*MONTA HISTORICO PADRAO*/
               EXEC MONTA_HISTORICO @C_CONTA_CDFILIAL, @C_CONTA_NRLANCTONF, @V_CDHISTPADRADI, @C_CONTA_NRNOTAFISC,
                                    @C_CONTA_DTEMISSAO, '06', '', @V_DSHISTPADRADI;
                                                                                                                      
               /*INSERE PARTIDA DE DEBITO*/
               SET @C_CONTA_VRATUAPAGAJUST = ((ROUND(@C_CONTA_VRATUAPAG, 2)) * (-1));
               EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_CONTA_CDCONTCTBL,
                                 @V_CDHISTPADRADI, @V_DSHISTPADRADI, @C_CONTA_VRATUAPAGAJUST, 'F', @C_CONTA_CDFORNECED,
                                 '10', @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
               /*INSERE RATEIO*/
               SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST,@C_BAIXA_CDCENTCUST);
               SET @C_CONTA_VRATUAPAGAJUST  = ((ROUND(@C_CONTA_VRATUAPAG, 2)) * (-1));
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_CONTA_CDFILIRECE,
                                   @C_CONTA_CDCENTCUSTAJUST, @C_CONTA_VRATUAPAGAJUST;
            END
            ELSE BEGIN
               IF (@C_CONTA_IDCTBTPCNTBPAG = 'S') BEGIN
                  SET @V_CDCONTCTBL = @C_CONTA_CDCONTCTBL;
               END
               ELSE BEGIN
                  EXEC CONTCTBL_FORNECEDOR @C_BAIXA_CDEMPRESA, '', 'E', @C_CONTA_CDFILIRECE, @C_CONTA_CDFORNECED,
                                           @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
               END;
                                                                                                                      
               /*MONTA HISTORICO PADRAO*/
               EXEC MONTA_HISTORICO @C_CONTA_CDFILIAL, @C_CONTA_NRLANCTONF, @V_CDHISTPADRTPB, @C_CONTA_NRNOTAFISC, 
                                    @C_CONTA_DTEMISSAO, '06', '', @V_DSHISTPADRTPB;
                                                                                                                      
               /*INSERE PARTIDA DE DEBITO*/
               SET @C_CONTA_VRATUAPAGAJUST = ((ROUND(@C_CONTA_VRATUAPAG,2)) * (-1));
               EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL, 
                                 @V_CDHISTPADRTPB, @V_DSHISTPADRTPB, @C_CONTA_VRATUAPAGAJUST, 'F', @C_CONTA_CDFORNECED, 
                                 '10', @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
               /*INSERE RATEIO*/
               SET @C_CONTA_CDCENTCUSTAJUST = ISNULL(@C_CONTA_CDCENTCUST,@C_BAIXA_CDCENTCUST);
               SET @C_CONTA_VRATUAPAGAJUST  = ((ROUND(@C_CONTA_VRATUAPAG, 2)) * (-1));
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_CONTA_CDFILIRECE,
                                   @C_CONTA_CDCENTCUSTAJUST, @C_CONTA_VRATUAPAGAJUST;
            END;
                                                                                                                      
            FETCH NEXT FROM C_CONTA INTO @C_CONTA_CDFILIAL,       @C_CONTA_NRLANCTONF,  @C_CONTA_VRATUAPAG,
                                         @C_CONTA_CDFORNECED,     @C_CONTA_NRNOTAFISC,  @C_CONTA_DTEMISSAO,
                                         @C_CONTA_IDTPCTPAGAR,    @C_CONTA_DSTPCTPAGAR, @C_CONTA_CDCONTCTBL,
                                         @C_CONTA_IDCTBTPCNTBPAG, @C_CONTA_CDCENTCUST,  @C_CONTA_CDFILIRECE,
                                         @C_CONTA_VRNOTAFISC;
         END;
         CLOSE C_CONTA;
         DEALLOCATE C_CONTA;
                                                                                                                      
         SET @V_CDCHAVE = 'X';
                                                                                                                      
         DECLARE C_AJUSTE CURSOR FOR 
            SELECT TA.DSAJUCTPAG, AP.CDAJUCTPAG, AP.VRAJBOLPAG,
                   ROUND(AP.VRAJBOLPAG * ROUND(CP.VRATUAPAG/BO.VRBOLPAG, 3), 2) VRAJBOLRAT,
                   CP.CDFILIBPAG, BO.NRLANBOLPAG, CP.CDFILIAL, CP.NRLANCTONF, FO.CDFORNECED,
                   NF.CDFILIRECE, NF.NRNOTAFISC, TA.IDAJUCTPAG, TA.IDCTBAJCTPAG, NF.CDEMPRESA,
                   TA.CDCONTCTBL, FL.CDCENTCUST
              FROM TIPOAJPAGAR TA, AJBOLPAG AP, CONTAPAGAR CP,
                   FORNECEDOR FO, NOTAFISCAL NF, FILIAL FL, BOLETPAGAR BO
             WHERE BO.CDFILIBAIPAG = @C_BAIXA_CDFILIAL
               AND BO.NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG
               AND CP.CDFILIBPAG = BO.CDFILIAL
               AND CP.NRLANBOLPAG = BO.NRLANBOLPAG
               AND TA.CDAJUCTPAG = AP.CDAJUCTPAG
               AND AP.CDFILIAL = CP.CDFILIBPAG
               AND AP.NRLANBOLPAG = CP.NRLANBOLPAG
               AND FO.CDFORNECED = NF.CDFORNECED
               AND NF.CDFILIAL = CP.CDFILIAL
               AND NF.NRLANCTONF = CP.NRLANCTONF
               AND NF.CDFILIRECE = FL.CDFILIAL
             ORDER BY CP.CDFILIBPAG, CP.NRLANBOLPAG, AP.CDAJUCTPAG;
                                                                                                                      
         OPEN C_AJUSTE;
         FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTPAG,   @C_AJUSTE_CDAJUCTPAG, @C_AJUSTE_VRAJBOLPAG,
                                       @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBPAG, @C_AJUSTE_NRLANBOLPAG,
                                       @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF, @C_AJUSTE_CDFORNECED,
                                       @C_AJUSTE_CDFILIRECE,   @C_AJUSTE_NRNOTAFISC, @C_AJUSTE_IDAJUCTPAG,
                                       @C_AJUSTE_IDCTBAJCTPAG, @C_AJUSTE_CDEMPRESA,  @C_AJUSTE_CDCONTCTBL,
                                       @C_AJUSTE_CDCENTCUST;
                                                                                                                      
         WHILE (@@FETCH_STATUS = 0) BEGIN 
                                                                                                                      
            IF (@V_CDCHAVE <> (@C_AJUSTE_CDFILIBPAG + @C_AJUSTE_NRLANBOLPAG + @C_AJUSTE_CDAJUCTPAG)) BEGIN
               SET @V_VRRESTOAJUS = @C_AJUSTE_VRAJBOLPAG;
               SET @V_CDCHAVE     = (@C_AJUSTE_CDFILIBPAG + @C_AJUSTE_NRLANBOLPAG + @C_AJUSTE_CDAJUCTPAG);
                                                                                                                      
               SELECT @V_NRCOUNT = COUNT(NRLANCTONF)
                 FROM CONTAPAGAR
                WHERE CDFILIBPAG  = @C_AJUSTE_CDFILIBPAG
                  AND NRLANBOLPAG = @C_AJUSTE_NRLANBOLPAG;
                                                                                                                      
               SET @V_NRPARTIDA = 1;
            END;
                                                                                                                      
            IF (@V_NRCOUNT = 1) BEGIN
               SET @V_VRAJBOLPAG  = @C_AJUSTE_VRAJBOLPAG;
               SET @V_VRRESTOAJUS = 0;
            END
            ELSE IF (@V_NRPARTIDA = @V_NRCOUNT) BEGIN
               SET @V_VRAJBOLPAG  = @V_VRRESTOAJUS;
               SET @V_VRRESTOAJUS = 0;
            END
            ELSE BEGIN
               SET @V_VRRESTOAJUS = (@V_VRRESTOAJUS - @C_AJUSTE_VRAJBOLRAT);
               SET @V_VRAJBOLPAG  = @C_AJUSTE_VRAJBOLRAT;
            END;
                                                                                                                      
            SELECT @V_CDHISTPADRAJ = HP.CDHISTPADR, 
                   @V_DSHISTPADRAJ = HP.DSHISTPADR
              FROM HISTPADR HP, TIPOAJPAGAR TA
             WHERE TA.CDAJUCTPAG = @C_AJUSTE_CDAJUCTPAG
               AND HP.CDHISTPADR = TA.CDHISTPADR;
                                                                                                                      
            IF (@C_AJUSTE_IDAJUCTPAG = '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,
                                 '06', @C_AJUSTE_CDAJUCTPAG, @V_DSHISTPADRAJ;
                                                                                                                      
            IF (@C_AJUSTE_IDCTBAJCTPAG = 'S') BEGIN
               SET @V_CDCONTCTBL = @C_AJUSTE_CDCONTCTBL;
            END
            ELSE BEGIN
               EXEC CONTCTBL_FORNECEDOR @C_BAIXA_CDEMPRESA, '', 'E', @C_AJUSTE_CDFILIRECE, @C_AJUSTE_CDFORNECED,
                                        @V_CDCONTCTBL, @V_CDCONTCTBL1, @V_CDCONTCTBL2, @V_CDHISTPADRAUX;
            END;
                                                                                                                      
            /*INSERE PARTIDA*/
            SET @V_VRAJBOLPAGAJUST = ROUND((@V_VRAJBOLPAG * @V_VRFATOCONV), 2);
            EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @V_CDCONTCTBL,
                              @V_CDHISTPADRAJ, @V_DSHISTPADRAJ, @V_VRAJBOLPAGAJUST, 'B', @C_BAIXA_CDREDUCONT, '10',
                              @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
            SET @V_NRPARTRAT  = 1;
            SET @V_VRRESTORAT = ROUND(@V_VRAJBOLPAG, 2);
            SET @V_VRAJBOLRAT = 0;
                                                                                                                      
            SELECT @V_NRCOUNTRAT = COUNT(*)
              FROM RATTPAJP
             WHERE CDAJUCTPAG = @C_AJUSTE_CDAJUCTPAG;
                                                                                                                      
            IF @V_NRCOUNTRAT = 0 BEGIN
               /*INSERE RATEIO*/
               SET @C_AJUSTE_CDCENTCUSTAJUST = ISNULL(@C_AJUSTE_CDCENTCUST, @C_BAIXA_CDCENTCUST);
               SET @V_VRAJBOLPAGAJUST = ROUND((@V_VRAJBOLPAG * @V_VRFATOCONV), 2);
               EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_AJUSTE_CDFILIRECE,
                                   @C_AJUSTE_CDCENTCUSTAJUST, @V_VRAJBOLPAGAJUST;
            END
            ELSE BEGIN
               DECLARE C_RATEIO CURSOR FOR
                  SELECT CDCENTCUST, CDFIRATTPAJP, CDFILIAL, VRPERATTPAJP
                    FROM RATTPAJP
                   WHERE CDAJUCTPAG = @C_AJUSTE_CDAJUCTPAG;
                                                                                                                      
               OPEN C_RATEIO;
               FETCH NEXT FROM C_RATEIO INTO @C_RATEIO_CDCENTCUST, @C_RATEIO_CDFIRATTPAJP, @C_RATEIO_CDFILIAL,
                                             @C_RATEIO_VRPERATTPAJP;
                                                                                                                      
               WHILE (@@FETCH_STATUS = 0) BEGIN
                  IF (@V_NRPARTRAT = @V_NRCOUNTRAT) BEGIN
                     SET @V_VRRESTORAT = @V_VRRESTORAT - ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJP / 100)),2);
                     SET @V_VRAJBOLRAT = ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJP / 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_VRPERATTPAJP / 100)),2);
                     SET @V_VRAJBOLRAT = ROUND((@C_AJUSTE_VRAJBOLRAT * (@C_RATEIO_VRPERATTPAJP / 100)),2);
                  END;
                                                                                                                      
                  SET @V_NRPARTRAT = @V_NRPARTRAT + 1;
                                                                                                                      
                  /*INSERE RATEIO*/
                  SET @C_RATEIO_CDFILIALAJUST = ISNULL(@C_RATEIO_CDFILIAL, @C_AJUSTE_CDFILIRECE);
                  SET @V_VRAJBOLRATAJUST      = ROUND((@V_VRAJBOLRAT * @V_VRFATOCONV), 2);
                  EXEC RATEIO_PARTIDA @C_AJUSTE_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, 
                                      @C_RATEIO_CDFILIALAJUST, @C_RATEIO_CDCENTCUST, @V_VRAJBOLRATAJUST;
                                                                                                                      
                  FETCH NEXT FROM C_RATEIO INTO @C_RATEIO_CDCENTCUST, @C_RATEIO_CDFIRATTPAJP, @C_RATEIO_CDFILIAL,
                                                @C_RATEIO_VRPERATTPAJP;
               END;
               CLOSE C_RATEIO;
               DEALLOCATE C_RATEIO;
            END;
                                                                                                                      
            SET @V_NRPARTIDA = @V_NRPARTIDA + 1;
                                                                                                                      
            FETCH NEXT FROM C_AJUSTE INTO @C_AJUSTE_DSAJUCTPAG,   @C_AJUSTE_CDAJUCTPAG, @C_AJUSTE_VRAJBOLPAG,
                                          @C_AJUSTE_VRAJBOLRAT,   @C_AJUSTE_CDFILIBPAG, @C_AJUSTE_NRLANBOLPAG,
                                          @C_AJUSTE_CDFILIAL,     @C_AJUSTE_NRLANCTONF, @C_AJUSTE_CDFORNECED,
                                          @C_AJUSTE_CDFILIRECE,   @C_AJUSTE_NRNOTAFISC, @C_AJUSTE_IDAJUCTPAG,
                                          @C_AJUSTE_IDCTBAJCTPAG, @C_AJUSTE_CDEMPRESA,  @C_AJUSTE_CDCONTCTBL,
                                          @C_AJUSTE_CDCENTCUST;
         END;
         CLOSE C_AJUSTE;
         DEALLOCATE C_AJUSTE;
                                                                                                                      
         DECLARE C_BAIXA_EXC CURSOR FOR 
            SELECT CDFILIAL, NRBAIXAPAG, NRSEQPARTBOPAG, NRLANCTBESTPAG,
                   CDCONTCTBL, CDHISTPADR, DSHISTPARTBOPAG, VRLANCPARTBOPAG,
                   IDLANCCOMEBOPAG, CDCONTCOMEBOPAG
              FROM HISPARTBOLEXPAG
             WHERE CDFILIAL = @C_BAIXA_CDFILIAL
               AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
                                                                                                                      
         OPEN C_BAIXA_EXC;
         FETCH NEXT FROM C_BAIXA_EXC INTO @C_BAIXA_EXC_CDFILIAL,        @C_BAIXA_EXC_NRBAIXAPAG,      @C_BAIXA_EXC_NRSEQPARTBOPAG,
                                          @C_BAIXA_EXC_NRLANCTBESTPAG,  @C_BAIXA_EXC_CDCONTCTBL,      @C_BAIXA_EXC_CDHISTPADR,
                                          @C_BAIXA_EXC_DSHISTPARTBOPAG, @C_BAIXA_EXC_VRLANCPARTBOPAG, @C_BAIXA_EXC_IDLANCCOMEBOPAG,
                                          @C_BAIXA_EXC_CDCONTCOMEBOPAG;
                                                                                                                      
         WHILE (@@FETCH_STATUS = 0) BEGIN
                                                                                                                      
            /*INSERE PARTIDA*/
            EXEC NOVA_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE , @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_BAIXA_EXC_CDCONTCTBL,
                              @C_BAIXA_EXC_CDHISTPADR, @C_BAIXA_EXC_DSHISTPARTBOPAG, @C_BAIXA_EXC_VRLANCPARTBOPAG,
                              @C_BAIXA_EXC_IDLANCCOMEBOPAG, @C_BAIXA_EXC_CDCONTCOMEBOPAG, '10', @C_BAIXA_NRBAIXAPAG, 'N';
                                                                                                                      
            DECLARE C_RATEIO_EXC CURSOR FOR 
               SELECT CDFILIAL, NRBAIXAPAG, NRSEQPARTBOPAG,
                      CDFILCENTCUST, CDCENTCUST, VRRATEIOPABOPAG
                 FROM HISRAPABOLEXPAG
                WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
                  AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
                                                                                                                      
            OPEN C_RATEIO_EXC;
            FETCH NEXT FROM C_RATEIO_EXC INTO @C_RATEIO_EXC_CDFILIAL,      @C_RATEIO_EXC_NRBAIXAPAG, @C_RATEIO_EXC_NRSEQPARTBOPAG,
                                              @C_RATEIO_EXC_CDFILCENTCUST, @C_RATEIO_EXC_CDCENTCUST, @C_RATEIO_EXC_VRRATEIOPABOPAG;
                                                                                                                      
            WHILE (@@FETCH_STATUS = 0) BEGIN
               /*INSERE RATEIO*/
               EXEC RATEIO_PARTIDA @C_BAIXA_CDEMPRESA, @V_CDLOTE, @C_BAIXA_DTBAIXAPAG, @V_NRLANCLOTE, @C_RATEIO_EXC_CDFILCENTCUST,
                                   @C_RATEIO_EXC_CDCENTCUST, @C_RATEIO_EXC_VRRATEIOPABOPAG;
                                                                                                                      
               FETCH NEXT FROM C_RATEIO_EXC INTO @C_RATEIO_EXC_CDFILIAL,       @C_RATEIO_EXC_NRBAIXAPAG, 
                                                 @C_RATEIO_EXC_NRSEQPARTBOPAG, @C_RATEIO_EXC_CDFILCENTCUST, 
                                                 @C_RATEIO_EXC_CDCENTCUST,     @C_RATEIO_EXC_VRRATEIOPABOPAG; 
            END;
            CLOSE C_RATEIO_EXC;
            DEALLOCATE C_RATEIO_EXC;
                                                                                                                      
            FETCH NEXT FROM C_BAIXA_EXC INTO @C_BAIXA_EXC_CDFILIAL,        @C_BAIXA_EXC_NRBAIXAPAG,      @C_BAIXA_EXC_NRSEQPARTBOPAG,
                                             @C_BAIXA_EXC_NRLANCTBESTPAG,  @C_BAIXA_EXC_CDCONTCTBL,      @C_BAIXA_EXC_CDHISTPADR,
                                             @C_BAIXA_EXC_DSHISTPARTBOPAG, @C_BAIXA_EXC_VRLANCPARTBOPAG, @C_BAIXA_EXC_IDLANCCOMEBOPAG,
                                             @C_BAIXA_EXC_CDCONTCOMEBOPAG;
         END;
         CLOSE C_BAIXA_EXC;
         DEALLOCATE C_BAIXA_EXC;
      END;
                                                                                                                      
      INSERT INTO RELACBPAGLANLOT
         (CDFILIAL, NRBAIXAPAG, CDEMPRESA, CDLOTE, NRLANCLOTE, NRSEQLANLOTE)
      VALUES
         (@C_BAIXA_CDFILIAL, @C_BAIXA_NRBAIXAPAG, @C_BAIXA_CDEMPRESA, @V_CDLOTE, @V_NRLANCLOTE, '00001');
                                                                                                                      
      IF (TEKNISA.CONFERE_PARTIDA(@C_BAIXA_CDEMPRESA, @V_CDLOTE, @V_NRLANCLOTE, @C_BAIXA_DTBAIXAPAG) = 'V') BEGIN
         UPDATE BAIXAPAGA
            SET IDSTATUSCTBPAG = 'C'
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
      END
      ELSE BEGIN
         UPDATE BAIXAPAGA
            SET IDSTATUSCTBPAG = 'E'
          WHERE CDFILIAL   = @C_BAIXA_CDFILIAL
            AND NRBAIXAPAG = @C_BAIXA_NRBAIXAPAG;
      END;
                                                                                                                      
      COMMIT;
                                                                                                                      
      FETCH NEXT FROM C_BAIXA INTO @C_BAIXA_CDFILIAL,     @C_BAIXA_NRBAIXAPAG,   @C_BAIXA_CDEMPRESA,
                                   @C_BAIXA_NRCHEQUE,     @C_BAIXA_DTBAIXAPAG,   @C_BAIXA_VRBAIXAPAG,
                                   @C_BAIXA_DSNOMCHEQUE,  @C_BAIXA_CDTPBAIXAPAG, @C_BAIXA_CDREDUCONT,
                                   @C_BAIXA_CDBANCO,      @C_BAIXA_CDAGENCIA,    @C_BAIXA_CDCONTCORR,
                                   @C_BAIXA_DSCONTCORR,   @C_BAIXA_CDCONTCTBL,   @C_BAIXA_IDBAIXAUTILP,
                                   @C_BAIXA_NMTPBAIXAPAG, @C_BAIXA_CDCENTCUST,   @C_BAIXA_CDPADRCONTABIL; 
   END;
   CLOSE C_BAIXA;
   DEALLOCATE C_BAIXA;
                                                                                                                      
   DELETE
     FROM LISTA
    WHERE NRLISTA = @P_NRLISTA;
END;
GO