Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Consultores
Postado

só está retornando um boleto?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)
27 minutos atrás, Juliomar Marchetti disse:

só está retornando um boleto?

Sim, apenas um boleto. Está sendo feita a consulta pelo Nosso Número, a Operação deve ser do tipo tpConsultaDetalhe. Só teria a possibilidade de retornar 2 ou mais boletos na Operação tpConsulta.

Para tpConsulta deve se usar ListaConsultaRetornoWeb e para tpConsultaDetalhe deve se usar ListaRetornoWeb.

image.png.b5abf9b777af8b7ff948ae4617495952.png

 

O JSON de retorno, que consta ACBrBoleto1.ListaRetornoWeb[0].JSON está correto. O problema são os valores do retorno no ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet, que não batem com os valores do JSON.

Edit1:

Eu consegui contornar o problema fazendo a leitura do JSON de retorno. Mas, acredito que possa ter alguma falha pois o componente não está sendo carregado com os valores do JSON.

 

      ACBrBoleto1.Configuracoes.WebService.Operacao := tpConsultaDetalhe;
      ACBrBoleto1.Enviar;

      JSONRetorno := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(ACBrBoleto1.ListaRetornoWeb[0].JSON), 0) as TJSONObject;

      vBoleto.ValorMoraJuros := StrToFloat(JSONRetorno.Get('valorJuroMoraTitulo').JsonValue.Value);  ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.ValorMoraJuros;
      vBoleto.PercentualMulta := StrToFloat(JSONRetorno.Get('percentualMultaTitulo').JsonValue.Value); //ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.PercentualMulta;

      vBoleto.DiasDeProtesto := StrToInt(JSONRetorno.Get('quantidadeDiaProtesto').JsonValue.Value); // ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.DiasDeProtesto;
      if vBoleto.DiasDeProtesto > 0 then
      begin
         vBoleto.CodigoNegativacao := cnProtestarCorrido;
         vBoleto.TipoDiasProtesto := diCorridos;
         vBoleto.DataProtesto := StrToDate(StringReplace(JSONRetorno.Get('dataProtestoTituloCobranca').JsonValue.Value, '.', '/', [rfReplaceAll])); // ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.DataProtesto;
      end;

      vBoleto.DataLimitePagto := StrToDate(StringReplace(JSONRetorno.Get('dataLimiteRecebimentoTitulo').JsonValue.Value, '.', '/', [rfReplaceAll])); // ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.DataLimitePagto;

      vBoleto.Sacado.SacadoAvalista.NomeAvalista := JSONRetorno.Get('nomeSacadorAvalistaTitulo').JsonValue.Value; // ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.SacadoAvalista.NomeAvalista;
      vBoleto.Sacado.SacadoAvalista.Pessoa := pJuridica;
      vBoleto.Sacado.SacadoAvalista.CNPJCPF := FormataCNPJ(AdicionaCharEsquerda(JSONRetorno.Get('numeroInscricaoSacadorAvalista').JsonValue.Value, 14, '0')); // FormataCNPJ(AdicionaCharEsquerda(ACBrBoleto1.ListaRetornoWeb[0].DadosRet.TituloRet.SacadoAvalista.CNPJCPF, 14, '0'));

 

Editado por Roberto Henrique Borges Machado
  • Consultores
Postado

Então depura o código e veja o local que atribui e o porque de não passar o correto

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
2 minutos atrás, Juliomar Marchetti disse:

Então depura o código e veja o local que atribui e o porque de não passar o correto

Claro, eu tentei debuggar para localizar onde é feito tal procedimento. Mas não obtive êxito.

image.thumb.png.093ac18b36bf8dfb954aa65bd04bb7ed.png

Em TRetornoEnvioREST.RetornoEnvio, o RetornoWeb não contem nenhuma informação. Os valores são atribuídos na chamada de LerRetorno.

image.png.eb63708b1207c7dec3871db7992c827e.png

Ao tentar debugar LerRetorno, entra em TListadeBoletos.GetObject, e não vamos para nenhum outro local. Na saída da GetObject o RetornoWeb já teve seus valores atribuídos, sendo que alguns deles, como no meu exemplo, estão com valores diferentes do JSON.

Postado
14 minutos atrás, Juliomar Marchetti disse:

Então depura o código e veja o local que atribui e o porque de não passar o correto

Bem, nada que uma boa noite de sono não ajude.

Eu fiz uma nova tentativa, consegui identificar onde o JSON é lido.

Encontrei o problema. Não está implementado os campos que quero acessar:

  • valorJuroMoraTitulo
  • percentualMultaTitulo
function TRetornoEnvio_BancoBrasil_API.LerRetorno(const ARetornoWS: TACBrBoletoRetornoWS): Boolean;
...
            ARetornoWS.DadosRet.TituloRet.ValorMoraJuros             := LJsonObject.AsFloat['valorJuroMoraRecebido'];
            ARetornoWS.DadosRet.TituloRet.PercentualMulta            := LJsonObject.AsFloat['valorMultaRecebido'];
...

O retorno pega os valores:

  • valorJuroMoraRecebido
  • valorMultaRecebido

Acredito que para solucionar teriam que ser criados dois novos campos em TACBrBoletoTituloRet = class, para receber também os valores de valorJuroMoraTitulo e percentualMultaTitulo de criação do título.

  • Consultores
Postado

Boa tarde.
nesse caso é só implementar, e testar. anexar as modificações aqui e aguardar para serem incorporadas ao SVN ou recusadas ou indicado uma forma melhor de tratar

  • Curtir 1

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
Em 25/07/2025 at 15:32, Juliomar Marchetti disse:

Boa tarde.
nesse caso é só implementar, e testar. anexar as modificações aqui e aguardar para serem incorporadas ao SVN ou recusadas ou indicado uma forma melhor de tratar

feat: adiciona novos campos ao retorno do Banco do Brasil na integração com o ACBrBoleto

Alterações em ACBrBoletoRetorno.pas:
- Adicionados novos campos privados e propriedades públicas:
  - PercentualMultaTitulo: Double
  - ValorJuroMoraTitulo: Currency
- Atualizados métodos de cópia de propriedades (`Assign`) para incluir os novos campos

Alterações em ACBrBoletoRet_BancoBrasil_API.pas:
- Mapeamento dos novos campos do JSON de resposta do Banco do Brasil:
  - DataLimitePagto ← dataLimiteRecebimentoTitulo
  - DiasDeProtesto ← quantidadeDiaProtesto
  - ValorJuroMoraTitulo ← valorJuroMoraTitulo
  - PercentualMultaTitulo ← percentualMultaTitulo
- Inclusão do mapeamento do sacador/avalista:
  - NomeAvalista ← nomeSacadorAvalistaTitulo
  - Pessoa ← códigoTipoInscricaoSacador (mapeado para pFisica/pJuridica)
  - CNPJCPF ← numeroInscricaoSacadorAvalista

Essas mudanças permitem capturar e armazenar mais informações relevantes dos títulos retornados pela API do Banco do Brasil.

ACBrBoletoRetorno.pas ACBrBoletoRet_BancoBrasil_API.pas

  • 2 semanas depois ...
  • Consultores
Postado

     3.2 - Não faça "bump" de forma excessiva (postar simplesmente para que um tópico vá para o topo da lista). Isso é considerado flooding.

Favor leia as regras do fórum.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 314 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.

The popup will be closed in 10 segundos...