Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Boa tarde. 

Estou com uma dúvida no método LerRetorno da unit ACBrBoletoRet_Santander_API.  Estou testando boletos pagos com MULTA, onde o valor pago é maior que o valor original do boleto.  Nos testes com boletos pagos pelo código de barras, o retorno é processado corretamente e o valor pago vem correto. Nos boletos pagos com o qrcode, via pix, o valor pago, quando existe a multa, volta com o valor original do boleto, e não vem o valor pago com multa. Vou colocar um pedaço do json de retorno como exemplo.

    {
        "_pageable": {
            "_moreElements": false
        },
        "_content": [
            {
                "returnCode": "000 - Consulta realizada com sucesso",
                "documentNumber": "05441657000108",
                "beneficiaryCode": 45485,
                "bankNumber": 15290,
                "clientNumber": "00478162A",
                "dueDate": "2025-05-20",
                "nominalValue": 483.01,
                "issueDate": "2025-04-22",
                "participantCode": "",
                "status": "Baixado",
                "statusComplement": "Via Pagamento Pix",
                "interestValue": 0.0,
                "discountValue": 0.0,
                "deductionValue": 0.0,
                "paidValue": 492.83
            }
        ]
    },

Essa é a parte que volta o valor com multa e esse bloco não está sendo lido na function LerRetorno. Abaixo a parte do código de deveria ser corretamente o paidValue mas não está lendo: ( debugando o LExisteBankSlip é true, e o nindiceobj fica com o valor 1, que é exatamente esse bloco acima q coloquei do json, mas o paidvalue está dentro de um _content e isso não está no bloco de código .

                     if LExisteBankSlip then
                         nIndiceOBJ := strtoint(IfThen(LTotalObjetos>1,'1','0'))
                      else
                         nIndiceOBJ := 0;
                      LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ];
                      if nIndiceOBJ = 0 then
                      begin
                        ARetornoWS.DadosRet.TituloRet.NossoNumero                 := LJSONObject.AsString['bankNumber'];
                        ARetornoWS.DadosRet.TituloRet.SeuNumero                   := LJSONObject.AsString['clientNumber'];
                        if ARetornoWS.DadosRet.TituloRet.Vencimento = 0 then
                         ARetornoWS.DadosRet.TituloRet.Vencimento                  := StringToDateTimeDef(LJSONObject.AsString['dueDate'], 0, 'yyyy-mm-dd');
                        if ARetornoWS.DadosRet.TituloRet.DataDocumento = 0 then
                         ARetornoWS.DadosRet.TituloRet.DataDocumento               := StringToDateTimeDef(LJSONObject.AsString['issueDate'], 0, 'yyyy-mm-dd');
                        if ARetornoWS.DadosRet.TituloRet.ValorDocumento = 0 then
                         ARetornoWS.DadosRet.TituloRet.ValorDocumento              := LJSONObject.AsFloat['nominalValue'];
                        if NaoEstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then
                         ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);
                      end;

                      if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then
                       ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);

                      ARetornoWS.DadosRet.TituloRet.ValorDesconto               := LJSONObject.AsFloat['discountValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorPago                   := LJSONObject.AsFloat['paidValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorMoraJuros              := LJSONObject.AsFloat['interestValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorAbatimento             := LJSONObject.AsFloat['deductionValue'];

No caso do boleto pago com codigo de barras, o valor está em outra parte do json e a função busca corretamente. A leitura do valor pago está nesse bloco abaixo para o boleto pago com código de barras:

 //settlementData consulta para pegar data do pagamento
                      if (LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].Count > 0) then
                      begin
                        if LJsonArray.ItemAsJSONObject[nIndiceOBJ].ValueExists('settlementData') then
                        begin
                          LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].ItemAsJSONObject[0];
                          if ARetornoWS.DadosRet.TituloRet.DataCredito = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataCredito := StringToDateTimeDef(LJSONObject.AsString['settlementCreditDate'], 0, 'yyyy-mm-dd');
                          if ARetornoWS.DadosRet.TituloRet.DataMovimento = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataMovimento := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd');
                          if ARetornoWS.DadosRet.TituloRet.DataBaixa = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataBaixa := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd');
                           ARetornoWS.DadosRet.TituloRet.ValorPago := LJSONObject.AsCurrency['settlementCreditedValue'];
                          if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then
                            ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);
                          if EstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then
                           ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca := LJSONObject.AsString['status'];
                          ARetornoWS.DadosRet.TituloRet.ValorTarifa :=  LJSONObject.AsFloat['settlementDutyValue'];
                        end;
                      end;

Preciso de uma ajuda, alguém já passou por isso? 

  • Consultores
Postado

habilita o log detalhado do componente e olhar o json que retorna pra ver se vem essa informação e só não está sendo passado ao componente

 

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

Ele volta sim, peguei a parte do log que retorna o valor correto pago com multa:

30/05/25 10:59:06:800 - Retorno Envio: TBoletoW_Santander_API
30/05/25 10:59:06:800 - C digo do Envio: 200 1.1 OK
30/05/25 10:59:06:801 - Retorno Envio: {"_pageable":{"_moreElements":false},"_content":[{"returnCode":"000 - Consulta realizada com sucesso","documentNumber":"05441657000108","beneficiaryCode":45485,"bankNumber":15290,"clientNumber":"00478162A","dueDate":"2025-05-20","nominalValue":483.01,"issueDate":"2025-04-22","participantCode":"","status":"Baixado","statusComplement":"Via Pagamento Pix","interestValue":0.00,"discountValue":0.00,"deductionValue":0.00,"paidValue":492.83}]}

  • Consultores
Postado
6 minutos atrás, marciamagall disse:

Ele volta sim, peguei a parte do log que retorna o valor correto pago com multa:

30/05/25 10:59:06:800 - Retorno Envio: TBoletoW_Santander_API
30/05/25 10:59:06:800 - C digo do Envio: 200 1.1 OK
30/05/25 10:59:06:801 - Retorno Envio: {"_pageable":{"_moreElements":false},"_content":[{"returnCode":"000 - Consulta realizada com sucesso","documentNumber":"05441657000108","beneficiaryCode":45485,"bankNumber":15290,"clientNumber":"00478162A","dueDate":"2025-05-20","nominalValue":483.01,"issueDate":"2025-04-22","participantCode":"","status":"Baixado","statusComplement":"Via Pagamento Pix","interestValue":0.00,"discountValue":0.00,"deductionValue":0.00,"paidValue":492.83}]}

Legal agora é abrir a unit modificar, testar e trazer que subimos ao svn

 

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 !!

  • Consultores
Postado

Bom dia,

Criada a TK-7156 para avaliação.

Obrigado pela contribuição.

image.png

Alexandre de Paula
Gerente de Projetos
Ajude o Projeto ACBr crescer - Assine o Clube PRO                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

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