Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 796 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia, estou gerando o arquivo remessa do banco itau e tinha gerado ele sem Multa e Juros e estava funcionando perfeitamente,

quando implementei o Juros e Multa e enviando ao banco no arquivo retorno veio com a seguinte mensagem : entrada inválida.

Reparei um arquivo para o outro e vi que o mesmo ficou diferente o Layout, gostaria de saber o que posso estar fazendo de errado.

em anexo o arquivo com erro e o arquivo correto.

Abaixo o jeito que implementei.

Observação: CNAB400

Configuração do componente :

ACBrBoleto1.Banco.TipoCobranca:=RetornaTipoCobrancaAcBr(dblConf.KeyValue);
ACBrBoleto1.ListadeBoletos.Clear;

 ACBrBoleto1.LayoutRemessa         := TACBrLayoutRemessa(cbxCNAB.itemindex);
 ACBrBoleto1.ACBrBoletoFC.DirLogo  := ExtractFilePath(copy(QCobreBemXCAMINHO_LOGOTIPO_EMPRESA_CBX.AsString,1,Length(QCobreBemXCAMINHO_LOGOTIPO_EMPRESA_CBX.AsString)));

 ACBrBoleto1.ACBrBoletoFC.Filtro   := fiNenhum;
 ACBrBoleto1.ACBrBoletoFC.LayOut   := lPadrao;

  ACBrBoleto1.Banco.Numero          := QCobreBemXNUM_BANCO_COBREBEMX.Value;
  ACBrBoleto1.Cedente.CodigoCedente := StringReplace(QCobreBemXCOD_CEDENTE_COBREBEMX.AsString,'-','',[rfReplaceAll]);

  agenciaDigito:=Split(QCobreBemXAGENCIA_COBREBEMX.Value, '-');

  ACBrBoleto1.Cedente.Agencia       := agenciaDigito[0];
  if (Length(agenciaDigito)>1) then
    ACBrBoleto1.Cedente.AgenciaDigito := agenciaDigito[1];

  contaDigito:=Split(QCobreBemXCONTA_CORRENTE_COBREBEMX.Value, '-');

  ACBrBoleto1.Cedente.Conta         := contaDigito[0];
  if (Length(contaDigito)>1) then
    ACBrBoleto1.Cedente.ContaDigito   := contaDigito[1];

  if (trim(QCobreBemXCONVENIO.AsString)<>'') then
    ACBrBoleto1.Cedente.Convenio := QCobreBemXCONVENIO.AsString;

  ACBrBoleto1.Cedente.Nome          := QCobreBemXNOME_CEDENTE_COBREBEMX.AsString;
  ACBrBoleto1.Cedente.Logradouro    := QEmpresaNOSSOENDER.AsString+', '+QEmpresaNUMERO_ENDERECO.AsString;
  ACBrBoleto1.Cedente.Bairro        := QEmpresaNOSSOBAIRRO.AsString;
  ACBrBoleto1.Cedente.Cidade        := QEmpresaNOSSACIDADE.AsString;
  ACBrBoleto1.Cedente.CEP           := QEmpresaNOSSOCEP.AsString;
  ACBrBoleto1.Cedente.Telefone      := QEmpresaFONE1.AsString;
  ACBrBoleto1.Cedente.UF            := QEmpresaNOSSOUF.Value;
  ACBrBoleto1.DirArqRemessa         := QCobreBemXCAMINHO_ARQUIVO_REMESSA_CBX.AsString;
  ACBrBoleto1.NomeArqRemessa        :=  'IT' + FormatDateTime('hhmmss', Now) + '.REM';
  ACBrBoleto1.Cedente.CNPJCPF       :=  QEmpresaCNPJ.AsString;

  if (QCobreBemXNUM_BANCO_COBREBEMX.AsInteger=33) then
  begin
    ACBrBoleto1.Cedente.Modalidade := RetornarCarteiraNoBanco(lkpCarteira.KeyValue);
  end;

 

Geração do Titulo

 

carteiraNoBanco:=RetornarCarteiraNoBanco(lkpCarteira.KeyValue);
  if (trim(carteiraNoBanco)='') then
  begin
    MessageDlg('Favor preencher o campo "Carteira no Banco" no cadastro de tipo de cobrança para que seja possível visualizar boletos.', mtInformation, [mbOk], 0);
    Exit;
  end;


  try
    cdsPadrao.DisableControls;

    cdsPadrao.First;
    while not(cdsPadrao.Eof) do
    begin
      if (cdsPadraoSELECIONADO.AsInteger=1) then
      begin

        Titulo := ACBrBoleto1.CriarTituloNaLista;
        Valor_Documento := 0;
        Valor_Juros     := 0;

        Valor_Documento := (cdsPadraoVALOR_BOLETA.Value - cdsPadraoDESCONTO.asFloat + QCobreBemXVALOR_TARIFA_BANCARIA_CBX.AsFloat);

        if QCobreBemXPERCENTUAL_JUROS_COBREBEMX.asFloat > 0 then        
           Valor_Juros     :=  Valor_Documento * QCobreBemXPERCENTUAL_JUROS_COBREBEMX.asFloat / 100;

        with Titulo do
        begin
          Vencimento        := cdsPadraoDT_VENCIMENTO_BOLETA.Value;
          DataDocumento     := cdsPadraoDT_EMISSAO_BOLETA.Value;
          NumeroDocumento   := cdsPadraoCOD_BOLETA.Value;
          EspecieDoc        := QCobreBemXLAYOUT_TIPO_DOCUMENTO_CBX.Value;
          DataProcessamento := Now;
          NossoNumero       := RetornaNossoNumeroAreceb(cdsPadraoCOD_BOLETA.Value, DblEmpresa.KeyValue);
          Carteira          := trim(carteiraNoBanco);
          ValorDocumento    := Valor_Documento;
          Sacado.NomeSacado := cdsPadraoNOME_SACADO.Value;
          Sacado.CNPJCPF    := cdsPadraoCNPJ_CPF_SACADO.Value;
          Sacado.Logradouro := cdsPadraoENDERECO_SACADO.Value;
          Sacado.Bairro     := cdsPadraoBAIRRO_SACADO.Value;
          Sacado.Cidade     := cdsPadraoCIDADE_SACADO.Value;
          Sacado.UF         := cdsPadraoESTADO_SACADO.Value;
          Sacado.CEP        := cdsPadraoCEP_SACADO.Value;
          ValorMoraJuros    :=   Valor_Juros;// cdsPadraoJUROS_BOLETA.Value;
          if QCobreBemXPercentual_Multa_CobreBemX.AsFloat > 0 then
             PercentualMulta   := QCobreBemXPercentual_Multa_CobreBemX.AsFloat;
          DataMoraJuros     := cdsPadraoDT_VENCIMENTO_BOLETA.Value + 1;

          Mensagem.Text     := cdsPadraoHISTORICO_BOLETA.AsString;
          OcorrenciaOriginal.Tipo := toRemessaRegistrar;//    toRemessaBaixar;
        end;

      end;

      cdsPadrao.Next;
    end;

  finally
    cdsPadrao.EnableControls;
  end;
 

Desde já Agradeço a ajuda.

 

 

IT142828.REM IT164205-erro.REM

Postado

Isso aqui não está errado?

 

 ACBrBoleto1.Cedente.Agencia       := agenciaDigito[0];  << somente uma posição ?
  if (Length(agenciaDigito)>1) then
    ACBrBoleto1.Cedente.AgenciaDigito := agenciaDigito[1]; << ??

  contaDigito:=Split(QCobreBemXCONTA_CORRENTE_COBREBEMX.Value, '-');

  ACBrBoleto1.Cedente.Conta         := contaDigito[0]; << ??
  if (Length(contaDigito)>1) then
    ACBrBoleto1.Cedente.ContaDigito   := contaDigito[1];

 

ou isso é vetor assim: agenciadigito[1..2] of string ?

Postado

quando gera a segunda linha, indica que voce informa multa e juros em percentual.

Atente para esse bloco no fonte do acbr

           //Registro Complemento Detalhe - Multa
                   if PercentualMulta > 0 then
                   begin
                     inc( iSequencia );
                     wLinhaMulta:= '2'                                              + // Tipo de registro - 2 OPCIONAL – COMPLEMENTO DETALHE - MULTA
                                   IfThen(MultaValorFixo,'1','2')                   + // Cocidgo da Multa 1- Cobrar Multa Valor Fixo / 2- Percentual / 0-Não cobrar multa
                                   ifThen((DataMulta > 0),
                                           FormatDateTime('ddmmyyyy',  DataMulta),
                                           Poem_Zeros('',8))                        + // Data da Multa 9(008)
                                   IntToStrZero( round(PercentualMulta * 100 ), 13) + // Valor/Percentual 9(013)
                                   space(371)                                       + // Complemento
                                   IntToStrZero(iSequencia , 6);                      // Sequencial

                     aRemessa.Add(UpperCase(wLinhaMulta));
                   end;
 

Postado

                                   IfThen(MultaValorFixo,'1','2')                   + // Cocidgo da Multa 1- Cobrar Multa Valor Fixo / 2- Percentual / 0-Não cobrar multa

Juros, vc escolhe, entre ser percentual ou valor, voce colocou os 2 ali...

olha como eu faço.;

 

Titulo := FuncBoleto.ACBrBoleto.CriarTituloNaLista;

TFuncBoleto.AtribuirDadosAoTitulo(Titulo,
                IBQryServBanc,
                IBDSPai.FieldByName('DATA_BOR').AsDateTime,
                IBDSPai.FieldByName('REM_OCORRENCIA_BOR').AsInteger,
                IBDSReceber.FieldByName('DOCUMENTO_REC').AsString,
                IBDSReceber.FieldByName('BOLETO_REC').AsString, //
                IBDSReceber.FieldByName('DV_BOLETO_REC').AsString,
                IBDSReceber.FieldByName('VENCIMENTO_REC').AsDateTime,
                1, 1,
                IBDSReceber.FieldByName('EMPRESA_REC').AsInteger,
                IBDSReceber.FieldByName('TIPO').AsString,
                IBDSReceber.FieldByName('CODIGO_REC').AsLargeInt,
                IBDSReceber.FieldByName('AI_AGRUP_BOLETO_REC').AsLargeInt,
                (IBDSReceber.FieldByName('VALOR_REC').AsCurrency +
                    IBDSReceber.FieldByName('BOLETO_VLR_COBRADO_REC').AsCurrency),
                IBDSReceber.FieldByName('FISJUR_CLI').AsString,
                CnpjCpf,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_CLI').AsString),
                IBDSReceber.FieldByName('NUM_ENDERECO_CLI').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOMCID').AsString),
                IBDSReceber.FieldByName('ESTCID').AsString,
                TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_CLI').AsString),
                IBDSReceber.FieldByName('EMAIL_COBRANCA_CLI').AsString,
                IBDSReceber.FieldByName('TELEFONE_CLI').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_AVALISTA').AsString),
                CnpjCpfAvalista,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_AVALISTA').AsString),
                IBDSReceber.FieldByName('NUM_END_AVALISTA').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_AVALISTA').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_AVALISTA').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CID_AVALISTA').AsString),
                IBDSReceber.FieldByName('UF_CID_AVALISTA').AsString,
                TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_AVALISTA').AsString),
                IBDSReceber.FieldByName('EMAIL_AVALISTA').AsString,
                IBDSReceber.FieldByName('TELEFONE_AVALISTA').AsString,
                IBDSReceber.FieldByName('IE_AVALISTA').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('TEXTO_LIVRE_BOLETO_REC').AsString));

 

              { inicio tratamento de juros/multa/desconto }

              Titulo.ValorDesconto  := 0;
              Titulo.CodigoDesconto := cdSemDesconto; // , cdValorFixo
              Titulo.TipoDesconto   := tdNaoConcederDesconto;

              if (IBDSReceber.FieldByName('CONCEDER_DESCONTO_ATE_REC').AsString = 'S') and
                ((IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency > 0) or
                  (IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency > 0)) then
              begin
                { tdNaoConcederDesconto,
                  tdValorFixoAteDataInformada,
                  tdPercentualAteDataInformada,
                  tdValorAntecipacaoDiaCorrido,
                  tdValorAntecipacaoDiaUtil,
                  tdPercentualSobreValorNominalDiaCorrido,
                  tdPercentualSobreValorNominalDiaUtil,
                  tdCancelamentoDesconto); }

                if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'P' then
                begin
                  Titulo.ValorDesconto := IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency;
                  Titulo.TipoDesconto  := tdPercentualAteDataInformada;
                end
                else if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'V' then
                begin
                  Titulo.ValorDesconto := IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency;
                  Titulo.TipoDesconto  := tdValorFixoAteDataInformada;
                end;

                if Titulo.ValorDesconto > 0 then
                begin
                  Titulo.CodigoDesconto := cdValorFixo;
                  Titulo.DataDesconto   := IBDSReceber.FieldByName('CONSIDERAR_DESC_ATE_REC').AsDateTime;
                end;
              end;

              Titulo.DataMoraJuros := Titulo.Vencimento + 1;
              Titulo.DataMulta     := Titulo.Vencimento + 1;

              Titulo.CodigoMoraJuros := cjIsento; // cjValorDia, cjTaxaMensal,

              // indicação de multa, valor fixo só se for por valor
              Titulo.MultaValorFixo := (IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F');
              if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'P' then
              begin
                Titulo.PercentualMulta := IBDSReceber.FieldByName('PERC_MULTA_BOLETO_REC').AsCurrency;
                Titulo.CodigoMulta     := cmPercentual;
              end
              else if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F' then
              begin
                if IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency > 0 then
                  Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency
                else
                  Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_CALC_REC').AsCurrency;
                Titulo.CodigoMulta       := cmValorFixo;
              end;

              { Santander
                1 = Valor por dia - Informar no campo o valor/dia a mora a ser cobrada.
                2 = Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso.
                3 = Isento
                4 = Utilizar comissão permanência do Banco por dia de atraso
                5 = Tolerância valor por dia (cobrar juros a partir de)
                6 = Tolerância taxa mensal (cobrar juros a partir de) * Para o código igual 4, o campo “taxa mensal” não deverá conter informação.
              }

              { Juro:

                0-Isento (Usado p/Banco)
                1-Valor por Dia (Usado p/Banco)
                2-Taxa Mensal (Usado p/Banco)
                3-Valor Mensal (Usado p/Banco)
                4-Taxa Diaria
                V-Valor (Usado p/Pag Fácil)
                P-Percentual (Usado p/Pag Fácil)
              }

              if IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString <> '' then
                Titulo.CodigoMora := IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString;

              // Indicacao de mora de juros      cjValorDia, cjTaxaMensal, cjIsento, cjValorMensal, cjTaxaDiaria
              if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '1' then
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjValorDia;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '2' then // taxa mensal
              begin
                // 'JURO_CALC_MES_FIN' > valor por mes
                // santander 33
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjTaxaMensal;

                CorrigirTaxaMensalBanco33 := true;
                PercentualJurosUsado      := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '3' then // Valor Mensal
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjValorMensal;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '4' then // taxa diaria
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency / 30;
                Titulo.ValorMoraJuros  := TFuncoesNumero.RoundDCurrency(Titulo.ValorMoraJuros, 2);
                Titulo.CodigoMoraJuros := cjTaxaDiaria;
              end;

 

-----------------------------

class procedure TFuncBoleto.AtribuirDadosAoTitulo(
  var ATituloNaLista             : TACBrTitulo;
  AQryServico                    : TDataSet;
  ADataEmissaoTituloDataDocumento: TDate; Rem_Ocorrencia_Remban: Integer;
  ADocumentoRec                  : string;
  ANumeroSlip, ADVSlip           : string; AVencimento: TDate; ATotalParcelas, AParcela: Integer;
  AEmpresaRec                    : Integer;
  ATipoAgrupamento               : string;
  AAutoIncRec                    : Int64;
  AAutoIncAgrupamento            : Int64;
  AValor                         : Currency;
  AFisicaJuridica, ACnpjCpf, ANome, AEndereco, ANumeroEndereco,
  AComplementoEndereco, ABairro, ACidade, AUF, ACEP, AEmail, ATelefone,
  AAvalista, ACnpjCpfAvalista,
  ALogradouroAvalista,
  ANumeroEnderecoAvalista,
  AComplementoAvalista,
  ABairroAvalista,
  ACidadeAvalista,
  AUFAvalista,
  ACepAvalista,
  AEmailAvalista,
  ATelefoneAvalista,
  AInscricaoNrAvalista,
  AObsTextoCedente: string
  );
var
  L: Integer;
begin
  ATituloNaLista.EspecieDoc := AQryServico.FieldByName('ESPECIE_DOCUMENTO_SER').AsString;
  // banco inter 77
  ATituloNaLista.UsoBanco := AQryServico.FieldByName('USO_BANCO_SER').AsString;

  if AQryServico.FieldByName('ACEITE_SER').AsString = 'S' then
    ATituloNaLista.Aceite := atSim
  else
    ATituloNaLista.Aceite := atNao;

  ATituloNaLista.LocalPagamento := AQryServico.FieldByName('LOCAL_PAGAMENTO_SER').AsString;

  if AQryServico.FieldByName('TIPODOCUMENTO_SER').AsInteger = 2 then
    ATituloNaLista.TipoImpressao := tipCarne
  else
    ATituloNaLista.TipoImpressao := tipNormal;

  // ATituloNaLista.Moeda := QryServico.FieldByName('MOEDA_SER').AsString;
  ATituloNaLista.Carteira := AQryServico.FieldByName('CARTEIRA_SER').AsString;

  if AQryServico.FieldByName('RESPONSABILIDADE_ENVIO_SER').AsInteger = 1 then
    ATituloNaLista.CarteiraEnvio := tceBanco
  else // 0 zero
    ATituloNaLista.CarteiraEnvio := tceCedente; // read fCarteiraEnvio write fCarteiraEnvio default tceCedente;

  ATituloNaLista.TotalParcelas        := ATotalParcelas;
  ATituloNaLista.Parcela              := AParcela;
  ATituloNaLista.DataAbatimento       := 0;
  ATituloNaLista.DataBaixa            := 0;
  ATituloNaLista.DataCredito          := 0;
  ATituloNaLista.DataDesconto         := 0;
  ATituloNaLista.DataMoraJuros        := 0;
  ATituloNaLista.DataOcorrencia       := 0;
  ATituloNaLista.DataProtesto         := 0;
  ATituloNaLista.PercentualMulta      := 0;
  ATituloNaLista.ValorAbatimento      := 0;
  ATituloNaLista.ValorDesconto        := 0;
  ATituloNaLista.ValorDespesaCobranca := 0;
  ATituloNaLista.ValorIOF             := 0;
  ATituloNaLista.ValorMoraJuros       := 0;
  ATituloNaLista.ValorOutrasDespesas  := 0;
  ATituloNaLista.ValorOutrosCreditos  := 0;
  ATituloNaLista.MultaValorFixo       := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F');
  ATituloNaLista.DataDocumento        := ADataEmissaoTituloDataDocumento;
  ATituloNaLista.DataProcessamento    := Now;
  ATituloNaLista.NossoNumero          := ANumeroSlip; // Não pode somar o DV aqui
  ATituloNaLista.Vencimento           := AVencimento;
  ATituloNaLista.NumeroDocumento      := ADocumentoRec;

  ATituloNaLista.DescricaoMotivoRejeicaoComando.Clear;
  ATituloNaLista.MotivoRejeicaoComando.Clear;

  if (ATituloNaLista.ACBrBoleto.Banco.Numero = 104) and
    (ATituloNaLista.ACBrBoleto.LayoutRemessa = c240) then // caixa - nojento - 19
    ATituloNaLista.NumeroDocumento := ATituloNaLista.ACBrBoleto.Banco.MontarCampoNossoNumero(ATituloNaLista);

  if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then
  begin
    ATituloNaLista.DataProtesto := AVencimento + AQryServico.FieldByName('REM_PROTESTAR_APOS_XDIAS_SER').AsInteger;

    ATituloNaLista.TipoDiasProtesto := diCorridos; // , diUteis
  end
  else
  begin
    ATituloNaLista.DataProtesto     := 0;
    ATituloNaLista.TipoDiasProtesto := diUteis;
  end;

  // baixar
  if AQryServico.FieldByName('REM_BAIXAR_DEVOLVER_SER').AsInteger = 1 then
  begin
    ATituloNaLista.DataBaixa       := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger;
    ATituloNaLista.DataLimitePagto := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger;
  end
  else
  begin
    ATituloNaLista.DataBaixa := 0;
  end;

  ATituloNaLista.SeuNumero := TFuncBoleto.GerarSeuNumeroAML(
    (AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = 'S'),
    AEmpresaRec, AAutoIncRec, AAutoIncAgrupamento);

  (*
    0=Registrar remessa        {Gerar primeira remessa}
    1=Baixar                   {Pedido de Baixa}
    2=Conceder Abatimento      {Concessão de Abatimento}
    3=Cancelar Abatimento      {Cancelamento de Abatimento concedido}
    4=Alterar Vencimento       {Alteração de vencimento}
    5=Alterar Numero Controle  {Alteração de seu número}
    6=Protestar                {Pedido de protesto}
    7=Cancelar Instrucao Protesto Baixa {Sustar protesto e baixar}
    8=Cancelar Instrucao Protesto   {Sustar protesto e manter na carteira}
    9=Outras Ocorrencias {Alteração de Outros Dados}
  *)

  case Rem_Ocorrencia_Remban of
    0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar;
    1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar;
    2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento;
    3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento;
    4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento;
    5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle;
    6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar;
    7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa;
    8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto;
    9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes;
  else
    Raise Exception.Create('Código de ocorrência: ' + Rem_Ocorrencia_Remban.ToString + ' inválida.');
  end;

  ATituloNaLista.ValorDocumento := AValor;

  if AFisicaJuridica = 'J' then
    ATituloNaLista.Sacado.Pessoa := pJuridica
  else if AFisicaJuridica = 'F' then
    ATituloNaLista.Sacado.Pessoa := pFisica
  else
    ATituloNaLista.Sacado.Pessoa := pOutras;

  ATituloNaLista.Sacado.CNPJCPF     := ACnpjCpf;
  ATituloNaLista.Sacado.NomeSacado  := ANome;
  ATituloNaLista.Sacado.Logradouro  := AEndereco;
  ATituloNaLista.Sacado.Complemento := AComplementoEndereco;
  ATituloNaLista.Sacado.Numero      := ANumeroEndereco;
  ATituloNaLista.Sacado.Bairro      := ABairro;
  ATituloNaLista.Sacado.CEP         := ACEP;
  ATituloNaLista.Sacado.Cidade      := ACidade;
  ATituloNaLista.Sacado.UF          := AUF;
  ATituloNaLista.Sacado.Email       := AEmail;
  ATituloNaLista.Sacado.Fone        := ATelefone;

  // Avalista
  L := Length(TFuncoesString.SoNumero(ACnpjCpfAvalista));

  if (L > 0) and (L <= 11) then
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pFisica
  else if L > 11 then
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pJuridica
  else
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pNenhum; // santanter, deu erro 

  ATituloNaLista.Sacado.Avalista                    := AAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.CNPJCPF      := ACnpjCpfAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.NomeAvalista := AAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Logradouro   := ALogradouroAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Numero       := ANumeroEnderecoAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Complemento  := AComplementoAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Bairro       := ABairroAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Cidade       := ACidadeAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.UF           := AUFAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.CEP          := ACepAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Email        := AEmailAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Fone         := ATelefoneAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.InscricaoNr  := AInscricaoNrAvalista;

  ATituloNaLista.Mensagem.Text    := AObsTextoCedente;
  ATituloNaLista.Informativo.Text := '';

  // Não pode passar, senao vai como valor para remessa, posicao 157 a 158 no cnab400 sicoob
  ATituloNaLista.Instrucao1 := '';
  ATituloNaLista.Instrucao2 := '';
  ATituloNaLista.Instrucao3 := '';
end;

 

Sugestão, olhar na pasta do componente, particularidades, nem tudo que se vê, pode usar para o banco em questão.

\ACBr2wc\Fontes\ACBrBoleto\Particularidades.pdf

Postado
Em 17/09/2022 at 11:53, Antonio Gomes disse:

IBQryServBanc

Bom dia, se eu entendi bem eu fiz assim:

 

Juros:   

          if Valor_Juros > 0 then
          begin
             CodigoMora      := '1';
             ValorMoraJuros  := Valor_Juros;
             CodigoMoraJuros := cjValorDia;
             DataMoraJuros   := Vencimento + 1;

          end;

 

Multa:
          if QCobreBemXPercentual_Multa_CobreBemX.AsFloat > 0 then
          begin
            // PercentualMulta := QCobreBemXPercentual_Multa_CobreBemX.AsFloat;
            // CodigoMulta     := cmPercentual;
            // DataMulta       := Vencimento + 1;
             MultaValorFixo  := true;
             PercentualMulta := 10;
             CodigoMulta     := cmValorFixo;
             DataMulta       := Vencimento + 1;
          end;

 

Quando comento a multa o arquivo  não pula uma linha.]

me desculpa mas é a primeira vez que faço boleto 

o banco é Itaú .

O que pode estar errado nesse código, na visualização aparece certinho, mas no arquivo remessa ele solta uma linha.

em anexo o arquivo com somente Juros e sem Multa e o arquivo com Juros e Multa.

Desde já agradeço.

IT085153.REM IT175932_Juros.REM

  • Moderadores
Postado

Sempre anexem os códigos não colém pois fica ruim para ler

Em 17/09/2022 at 11:53, Antonio Gomes disse:

                                   IfThen(MultaValorFixo,'1','2')                   + // Cocidgo da Multa 1- Cobrar Multa Valor Fixo / 2- Percentual / 0-Não cobrar multa

Juros, vc escolhe, entre ser percentual ou valor, voce colocou os 2 ali...

olha como eu faço.;

 

Titulo := FuncBoleto.ACBrBoleto.CriarTituloNaLista;

TFuncBoleto.AtribuirDadosAoTitulo(Titulo,
                IBQryServBanc,
                IBDSPai.FieldByName('DATA_BOR').AsDateTime,
                IBDSPai.FieldByName('REM_OCORRENCIA_BOR').AsInteger,
                IBDSReceber.FieldByName('DOCUMENTO_REC').AsString,
                IBDSReceber.FieldByName('BOLETO_REC').AsString, //
                IBDSReceber.FieldByName('DV_BOLETO_REC').AsString,
                IBDSReceber.FieldByName('VENCIMENTO_REC').AsDateTime,
                1, 1,
                IBDSReceber.FieldByName('EMPRESA_REC').AsInteger,
                IBDSReceber.FieldByName('TIPO').AsString,
                IBDSReceber.FieldByName('CODIGO_REC').AsLargeInt,
                IBDSReceber.FieldByName('AI_AGRUP_BOLETO_REC').AsLargeInt,
                (IBDSReceber.FieldByName('VALOR_REC').AsCurrency +
                    IBDSReceber.FieldByName('BOLETO_VLR_COBRADO_REC').AsCurrency),
                IBDSReceber.FieldByName('FISJUR_CLI').AsString,
                CnpjCpf,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_CLI').AsString),
                IBDSReceber.FieldByName('NUM_ENDERECO_CLI').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_CLI').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOMCID').AsString),
                IBDSReceber.FieldByName('ESTCID').AsString,
                TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_CLI').AsString),
                IBDSReceber.FieldByName('EMAIL_COBRANCA_CLI').AsString,
                IBDSReceber.FieldByName('TELEFONE_CLI').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_AVALISTA').AsString),
                CnpjCpfAvalista,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_AVALISTA').AsString),
                IBDSReceber.FieldByName('NUM_END_AVALISTA').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_AVALISTA').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_AVALISTA').AsString),
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CID_AVALISTA').AsString),
                IBDSReceber.FieldByName('UF_CID_AVALISTA').AsString,
                TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_AVALISTA').AsString),
                IBDSReceber.FieldByName('EMAIL_AVALISTA').AsString,
                IBDSReceber.FieldByName('TELEFONE_AVALISTA').AsString,
                IBDSReceber.FieldByName('IE_AVALISTA').AsString,
                TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('TEXTO_LIVRE_BOLETO_REC').AsString));

 

              { inicio tratamento de juros/multa/desconto }

              Titulo.ValorDesconto  := 0;
              Titulo.CodigoDesconto := cdSemDesconto; // , cdValorFixo
              Titulo.TipoDesconto   := tdNaoConcederDesconto;

              if (IBDSReceber.FieldByName('CONCEDER_DESCONTO_ATE_REC').AsString = 'S') and
                ((IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency > 0) or
                  (IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency > 0)) then
              begin
                { tdNaoConcederDesconto,
                  tdValorFixoAteDataInformada,
                  tdPercentualAteDataInformada,
                  tdValorAntecipacaoDiaCorrido,
                  tdValorAntecipacaoDiaUtil,
                  tdPercentualSobreValorNominalDiaCorrido,
                  tdPercentualSobreValorNominalDiaUtil,
                  tdCancelamentoDesconto); }

                if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'P' then
                begin
                  Titulo.ValorDesconto := IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency;
                  Titulo.TipoDesconto  := tdPercentualAteDataInformada;
                end
                else if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'V' then
                begin
                  Titulo.ValorDesconto := IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency;
                  Titulo.TipoDesconto  := tdValorFixoAteDataInformada;
                end;

                if Titulo.ValorDesconto > 0 then
                begin
                  Titulo.CodigoDesconto := cdValorFixo;
                  Titulo.DataDesconto   := IBDSReceber.FieldByName('CONSIDERAR_DESC_ATE_REC').AsDateTime;
                end;
              end;

              Titulo.DataMoraJuros := Titulo.Vencimento + 1;
              Titulo.DataMulta     := Titulo.Vencimento + 1;

              Titulo.CodigoMoraJuros := cjIsento; // cjValorDia, cjTaxaMensal,

              // indicação de multa, valor fixo só se for por valor
              Titulo.MultaValorFixo := (IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F');
              if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'P' then
              begin
                Titulo.PercentualMulta := IBDSReceber.FieldByName('PERC_MULTA_BOLETO_REC').AsCurrency;
                Titulo.CodigoMulta     := cmPercentual;
              end
              else if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F' then
              begin
                if IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency > 0 then
                  Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency
                else
                  Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_CALC_REC').AsCurrency;
                Titulo.CodigoMulta       := cmValorFixo;
              end;

              { Santander
                1 = Valor por dia - Informar no campo o valor/dia a mora a ser cobrada.
                2 = Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso.
                3 = Isento
                4 = Utilizar comissão permanência do Banco por dia de atraso
                5 = Tolerância valor por dia (cobrar juros a partir de)
                6 = Tolerância taxa mensal (cobrar juros a partir de) * Para o código igual 4, o campo “taxa mensal” não deverá conter informação.
              }

              { Juro:

                0-Isento (Usado p/Banco)
                1-Valor por Dia (Usado p/Banco)
                2-Taxa Mensal (Usado p/Banco)
                3-Valor Mensal (Usado p/Banco)
                4-Taxa Diaria
                V-Valor (Usado p/Pag Fácil)
                P-Percentual (Usado p/Pag Fácil)
              }

              if IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString <> '' then
                Titulo.CodigoMora := IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString;

              // Indicacao de mora de juros      cjValorDia, cjTaxaMensal, cjIsento, cjValorMensal, cjTaxaDiaria
              if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '1' then
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjValorDia;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '2' then // taxa mensal
              begin
                // 'JURO_CALC_MES_FIN' > valor por mes
                // santander 33
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjTaxaMensal;

                CorrigirTaxaMensalBanco33 := true;
                PercentualJurosUsado      := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '3' then // Valor Mensal
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency;
                Titulo.CodigoMoraJuros := cjValorMensal;
              end
              else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '4' then // taxa diaria
              begin
                Titulo.ValorMoraJuros  := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency / 30;
                Titulo.ValorMoraJuros  := TFuncoesNumero.RoundDCurrency(Titulo.ValorMoraJuros, 2);
                Titulo.CodigoMoraJuros := cjTaxaDiaria;
              end;

 

-----------------------------

class procedure TFuncBoleto.AtribuirDadosAoTitulo(
  var ATituloNaLista             : TACBrTitulo;
  AQryServico                    : TDataSet;
  ADataEmissaoTituloDataDocumento: TDate; Rem_Ocorrencia_Remban: Integer;
  ADocumentoRec                  : string;
  ANumeroSlip, ADVSlip           : string; AVencimento: TDate; ATotalParcelas, AParcela: Integer;
  AEmpresaRec                    : Integer;
  ATipoAgrupamento               : string;
  AAutoIncRec                    : Int64;
  AAutoIncAgrupamento            : Int64;
  AValor                         : Currency;
  AFisicaJuridica, ACnpjCpf, ANome, AEndereco, ANumeroEndereco,
  AComplementoEndereco, ABairro, ACidade, AUF, ACEP, AEmail, ATelefone,
  AAvalista, ACnpjCpfAvalista,
  ALogradouroAvalista,
  ANumeroEnderecoAvalista,
  AComplementoAvalista,
  ABairroAvalista,
  ACidadeAvalista,
  AUFAvalista,
  ACepAvalista,
  AEmailAvalista,
  ATelefoneAvalista,
  AInscricaoNrAvalista,
  AObsTextoCedente: string
  );
var
  L: Integer;
begin
  ATituloNaLista.EspecieDoc := AQryServico.FieldByName('ESPECIE_DOCUMENTO_SER').AsString;
  // banco inter 77
  ATituloNaLista.UsoBanco := AQryServico.FieldByName('USO_BANCO_SER').AsString;

  if AQryServico.FieldByName('ACEITE_SER').AsString = 'S' then
    ATituloNaLista.Aceite := atSim
  else
    ATituloNaLista.Aceite := atNao;

  ATituloNaLista.LocalPagamento := AQryServico.FieldByName('LOCAL_PAGAMENTO_SER').AsString;

  if AQryServico.FieldByName('TIPODOCUMENTO_SER').AsInteger = 2 then
    ATituloNaLista.TipoImpressao := tipCarne
  else
    ATituloNaLista.TipoImpressao := tipNormal;

  // ATituloNaLista.Moeda := QryServico.FieldByName('MOEDA_SER').AsString;
  ATituloNaLista.Carteira := AQryServico.FieldByName('CARTEIRA_SER').AsString;

  if AQryServico.FieldByName('RESPONSABILIDADE_ENVIO_SER').AsInteger = 1 then
    ATituloNaLista.CarteiraEnvio := tceBanco
  else // 0 zero
    ATituloNaLista.CarteiraEnvio := tceCedente; // read fCarteiraEnvio write fCarteiraEnvio default tceCedente;

  ATituloNaLista.TotalParcelas        := ATotalParcelas;
  ATituloNaLista.Parcela              := AParcela;
  ATituloNaLista.DataAbatimento       := 0;
  ATituloNaLista.DataBaixa            := 0;
  ATituloNaLista.DataCredito          := 0;
  ATituloNaLista.DataDesconto         := 0;
  ATituloNaLista.DataMoraJuros        := 0;
  ATituloNaLista.DataOcorrencia       := 0;
  ATituloNaLista.DataProtesto         := 0;
  ATituloNaLista.PercentualMulta      := 0;
  ATituloNaLista.ValorAbatimento      := 0;
  ATituloNaLista.ValorDesconto        := 0;
  ATituloNaLista.ValorDespesaCobranca := 0;
  ATituloNaLista.ValorIOF             := 0;
  ATituloNaLista.ValorMoraJuros       := 0;
  ATituloNaLista.ValorOutrasDespesas  := 0;
  ATituloNaLista.ValorOutrosCreditos  := 0;
  ATituloNaLista.MultaValorFixo       := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F');
  ATituloNaLista.DataDocumento        := ADataEmissaoTituloDataDocumento;
  ATituloNaLista.DataProcessamento    := Now;
  ATituloNaLista.NossoNumero          := ANumeroSlip; // Não pode somar o DV aqui
  ATituloNaLista.Vencimento           := AVencimento;
  ATituloNaLista.NumeroDocumento      := ADocumentoRec;

  ATituloNaLista.DescricaoMotivoRejeicaoComando.Clear;
  ATituloNaLista.MotivoRejeicaoComando.Clear;

  if (ATituloNaLista.ACBrBoleto.Banco.Numero = 104) and
    (ATituloNaLista.ACBrBoleto.LayoutRemessa = c240) then // caixa - nojento - 19
    ATituloNaLista.NumeroDocumento := ATituloNaLista.ACBrBoleto.Banco.MontarCampoNossoNumero(ATituloNaLista);

  if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then
  begin
    ATituloNaLista.DataProtesto := AVencimento + AQryServico.FieldByName('REM_PROTESTAR_APOS_XDIAS_SER').AsInteger;

    ATituloNaLista.TipoDiasProtesto := diCorridos; // , diUteis
  end
  else
  begin
    ATituloNaLista.DataProtesto     := 0;
    ATituloNaLista.TipoDiasProtesto := diUteis;
  end;

  // baixar
  if AQryServico.FieldByName('REM_BAIXAR_DEVOLVER_SER').AsInteger = 1 then
  begin
    ATituloNaLista.DataBaixa       := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger;
    ATituloNaLista.DataLimitePagto := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger;
  end
  else
  begin
    ATituloNaLista.DataBaixa := 0;
  end;

  ATituloNaLista.SeuNumero := TFuncBoleto.GerarSeuNumeroAML(
    (AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = 'S'),
    AEmpresaRec, AAutoIncRec, AAutoIncAgrupamento);

  (*
    0=Registrar remessa        {Gerar primeira remessa}
    1=Baixar                   {Pedido de Baixa}
    2=Conceder Abatimento      {Concessão de Abatimento}
    3=Cancelar Abatimento      {Cancelamento de Abatimento concedido}
    4=Alterar Vencimento       {Alteração de vencimento}
    5=Alterar Numero Controle  {Alteração de seu número}
    6=Protestar                {Pedido de protesto}
    7=Cancelar Instrucao Protesto Baixa {Sustar protesto e baixar}
    8=Cancelar Instrucao Protesto   {Sustar protesto e manter na carteira}
    9=Outras Ocorrencias {Alteração de Outros Dados}
  *)

  case Rem_Ocorrencia_Remban of
    0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar;
    1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar;
    2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento;
    3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento;
    4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento;
    5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle;
    6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar;
    7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa;
    8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto;
    9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes;
  else
    Raise Exception.Create('Código de ocorrência: ' + Rem_Ocorrencia_Remban.ToString + ' inválida.');
  end;

  ATituloNaLista.ValorDocumento := AValor;

  if AFisicaJuridica = 'J' then
    ATituloNaLista.Sacado.Pessoa := pJuridica
  else if AFisicaJuridica = 'F' then
    ATituloNaLista.Sacado.Pessoa := pFisica
  else
    ATituloNaLista.Sacado.Pessoa := pOutras;

  ATituloNaLista.Sacado.CNPJCPF     := ACnpjCpf;
  ATituloNaLista.Sacado.NomeSacado  := ANome;
  ATituloNaLista.Sacado.Logradouro  := AEndereco;
  ATituloNaLista.Sacado.Complemento := AComplementoEndereco;
  ATituloNaLista.Sacado.Numero      := ANumeroEndereco;
  ATituloNaLista.Sacado.Bairro      := ABairro;
  ATituloNaLista.Sacado.CEP         := ACEP;
  ATituloNaLista.Sacado.Cidade      := ACidade;
  ATituloNaLista.Sacado.UF          := AUF;
  ATituloNaLista.Sacado.Email       := AEmail;
  ATituloNaLista.Sacado.Fone        := ATelefone;

  // Avalista
  L := Length(TFuncoesString.SoNumero(ACnpjCpfAvalista));

  if (L > 0) and (L <= 11) then
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pFisica
  else if L > 11 then
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pJuridica
  else
    ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pNenhum; // santanter, deu erro 

  ATituloNaLista.Sacado.Avalista                    := AAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.CNPJCPF      := ACnpjCpfAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.NomeAvalista := AAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Logradouro   := ALogradouroAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Numero       := ANumeroEnderecoAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Complemento  := AComplementoAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Bairro       := ABairroAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Cidade       := ACidadeAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.UF           := AUFAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.CEP          := ACepAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Email        := AEmailAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.Fone         := ATelefoneAvalista;
  ATituloNaLista.Sacado.SacadoAvalista.InscricaoNr  := AInscricaoNrAvalista;

  ATituloNaLista.Mensagem.Text    := AObsTextoCedente;
  ATituloNaLista.Informativo.Text := '';

  // Não pode passar, senao vai como valor para remessa, posicao 157 a 158 no cnab400 sicoob
  ATituloNaLista.Instrucao1 := '';
  ATituloNaLista.Instrucao2 := '';
  ATituloNaLista.Instrucao3 := '';
end;

 

Sugestão, olhar na pasta do componente, particularidades, nem tudo que se vê, pode usar para o banco em questão.

\ACBr2wc\Fontes\ACBrBoleto\Particularidades.pdf

 

  • Haha 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Bom dia, acho que estou confundindo, me parece que quando tem multa ele gera um registro detalhe certo? e estou achando que pulou de linha.

Só não sei o porquê o banco rejeitou o arquivo

 

        i f Valor_Juros > 0 then
          begin
             CodigoMora      := '1';
             ValorMoraJuros  := Valor_Juros;
             CodigoMoraJuros := cjValorDia;
             DataMoraJuros   := Vencimento + 1;

          end;


         if QCobreBemXPercentual_Multa_CobreBemX.AsFloat > 0 then
          begin
             PercentualMulta := QCobreBemXPercentual_Multa_CobreBemX.AsFloat;
             CodigoMulta     := cmPercentual;
             DataMulta       := Vencimento + 1;
          end;

 

Agradeço, sou novo em gerar boleto.

  • Este tópico foi criado há 796 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.