Ir para conteúdo
  • Cadastre-se

dev botao

Correção da Implementação da operação tpConsultaDetalhe, API V2 do Sicredi


Ver Solução Respondido por I3 SISTEMAS,
  • Este tópico foi criado há 404 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Olá pessoal!

foi Implementado a operação tpConsultaDetalhe para o Banco Sicredi API V2.

porem tem um erro na classe que impede de retorna algumas informação da liquidação por não cai na condição CodigoEstadoTituloCobranca = 6

são elas:

ARetornoWS.DadosRet.TituloRet.ValorPago      
ARetornoWS.DadosRet.TituloRet.ValorMoraJuros 
ARetornoWS.DadosRet.TituloRet.ValorAbatimento
ARetornoWS.DadosRet.TituloRet.DataBaixa      
ARetornoWS.DadosRet.TituloRet.ValorDesconto  

veja o trecho dos fontes ACBrBoletoRet_Sicredi_APIV2 na linha 166

function TRetornoEnvio_Sicredi_APIV2.LerRetorno(const ARetornoWS: TACBrBoletoRetornoWS): Boolean;
.
.
.
 if UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) = ('LIQUIDADO') then
                  ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := '6';
                //Multa/Juros
                ARetornoWS.DadosRet.TituloRet.PercentualMulta        := aJson.Values['valorMulta'].AsNumber;
                ARetornoWS.DadosRet.TituloRet.ValorAbatimento        := aJson.Values['abatimento'].AsNumber;
                ARetornoWS.DadosRet.TituloRet.ValorMoraJuros         := aJson.Values['juros'].AsNumber;
                ARetornoWS.DadosRet.TituloRet.DiasDeProtesto         := aJson.Values['diasProtesto'].AsInteger;
                ARetornoWS.DadosRet.TituloRet.TxId                   := aJson.Values['txId'].AsString;
                ARetornoWS.DadosRet.TituloRet.EMV                    := aJson.Values['codigoQrCode'].AsString;
                ARetornoWS.DadosRet.TituloRet.PercentualMulta        := aJson.Values['valorMulta'].AsNumber;
                if ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca = '6' then
                begin
                   ARetornoWS.DadosRet.TituloRet.ValorPago              := AJson.Values['dadosLiquidacao'].AsObject.Values['valor'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.ValorMoraJuros         := AJson.Values['dadosLiquidacao'].AsObject.Values['juros'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.ValorAbatimento        := AJson.Values['dadosLiquidacao'].AsObject.Values['abatimento'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.DataBaixa              := DateSicreditoDateTime(AJson.Values['dadosLiquidacao'].AsObject.Values['data'].AsString);
                   ARetornoWS.DadosRet.TituloRet.ValorDesconto          := AJson.Values['dadosLiquidacao'].AsObject.Values['desconto'].AsNumber;
                end;  
  

 

solicito a alteração dos fontes do ACBrBoletoRet_Sicredi_APIV2 na linha 166 

de: if UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) = ('LIQUIDADO') then

para: if UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca).Contains(UpperCase('LIQUIDADO')) then

para solucionar o caso.

segue arquivo JSON do retorno em anexo.

 

 

 

ARQUIVO JSON RETORNO SICREDI.txt

  • Consultores
Postado

Bom dia @I3 SISTEMAS,
Se possível anexe a unit com as alterações que você realizou, isso ajuda bastante na nossa avaliação.
Obrigado

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

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

 

 

  • Consultores
Postado

Obrigado!

Criada a TK-4260 para avaliar a contribuição!

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

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

 

 

  • Membros Pro
  • Solution
Postado

Opa tem outra correção a fazer quando é um boleto de baixa por solicitação está pegando a campo data da baixa errado.

foi alterado para pega correto 

//alteração
if ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca = '7' then
begin
ARetornoWS.DadosRet.TituloRet.DataBaixa              := DateSicreditoDateTime(aJson.Values['dataBaixa'].AsString);
end;

segue fontes alterado e arquivo com Json do retorno

ARQUIVO JSON SICREDI BAIXA.txt ACBrBoletoRet_Sicredi_APIV2.pas

  • Curtir 1
  • Consultores
Postado
2 horas atrás, I3 SISTEMAS disse:

Opa tem outra correção a fazer quando é um boleto de baixa por solicitação está pegando a campo data da baixa errado.

Obrigado mais uma vez. Quando a contribuição for analisada já vemos todas alterações junto.

 

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

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

 

 

  • 2 meses depois ...
  • Membros Pro
Postado
Em 31/07/2023 at 12:01, I3 SISTEMAS disse:

Opa tem outra correção a fazer quando é um boleto de baixa por solicitação está pegando a campo data da baixa errado.

foi alterado para pega correto 

//alteração
if ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca = '7' then
begin
ARetornoWS.DadosRet.TituloRet.DataBaixa              := DateSicreditoDateTime(aJson.Values['dataBaixa'].AsString);
end;

segue fontes alterado e arquivo com Json do retorno

ARQUIVO JSON SICREDI BAIXA.txt 1 kB · 3 downloads ACBrBoletoRet_Sicredi_APIV2.pas 20.01 kB · 2 downloads

Pessoal boa tarde! foi solicitado essa altera alteração aqui porem a correção não foi realizada corretamente por parte de vocês.

fiz os testes aqui e a função usada na manutenção não é satisfatória peço a correção, caso queira podem acessa minha maquina e analisa o caso, já tinha feito todos os testes em produção agora vou ter que voltar para meus fontes corrigidos.

minha alteração foi usa:     if UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca).Contains(UpperCase('LIQUIDADO')) then
  foi colocado: if (Pos(UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca),'LIQUIDADO') > 0) then      

mas não funcionar, fico a disposição para qualquer informação.

erro ao pega informações estado do boleto.png

  • Membros Pro
Postado

Estamos com a mesma situação aqui @Daniel InfoCotidiano

O que ocorre é que no retorno o campo situacao está vindo como 'LIQUIDADO COMPE'.

                //Situação/Código da situação.
                ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca    := UpperCase(aJson.Values['situacao'].asString);

Assim não entra na validação para atribuir o código 6

                if (Pos(UpperCase(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca),'LIQUIDADO') > 0) then
                  ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := '6';

 

  • Membros Pro
Postado (editado)

Obrigado pelo retorno @Daniel InfoCotidiano

Para mim está ocorrendo erro nesse bloco, ao passar o valor para o campo ARetornoWS.DadosRet.TituloRet.HoraBaixa

                if ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca = '6' then
                begin
                   ARetornoWS.DadosRet.TituloRet.ValorPago              := AJson.Values['dadosLiquidacao'].AsObject.Values['valor'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.ValorMoraJuros         := AJson.Values['dadosLiquidacao'].AsObject.Values['juros'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.ValorAbatimento        := AJson.Values['dadosLiquidacao'].AsObject.Values['abatimento'].AsNumber;
                   ARetornoWS.DadosRet.TituloRet.DataBaixa              := DateSicreditoDateTime(AJson.Values['dadosLiquidacao'].AsObject.Values['data'].AsString);
                   ARetornoWS.DadosRet.TituloRet.HoraBaixa              := TimeSicreditoDateTime(aJson.Values['dadosLiquidacao'].AsString);
                   ARetornoWS.DadosRet.TituloRet.ValorDesconto          := AJson.Values['dadosLiquidacao'].AsObject.Values['desconto'].AsNumber;
                end;

Erro:

raised exception class Exception with message '<TJsonValue>"dadosLiquidacao" value type error: jvObject to jvString'.

JSON de como veio o retorno:

{
    "linhaDigitavel": "74891122221013830167507418991076191340000002500",
    "codigoBarras": "74891913400000025001122210138301670741899107",
    "carteira": "SIMPLES",
    "seuNumero": "10138",
    "nossoNumero": "222101383",
    "pagador": {
        "codigo": "081JX",
        "documento": "08203491000180",
        "nome": "ADEMIR HIPPLER"
    },
    "dataEmissao": "2022-10-03",
    "dataVencimento": "2022-10-10",
    "valorNominal": 25,
    "situacao": "LIQUIDADO COMPE",
    "multa": 2,
    "abatimento": 0,
    "tipoJuros": "B - PERCENTUAL",
    "juros": 0.5,
    "diasProtesto": 0,
    "validadeAposVencimento": 180,
    "diasNegativacao": 0,
    "tipoDesconto": "B - PERCENTUAL",
    "descontoAntecipacao": 0,
    "dadosLiquidacao": {
        "data": "2022-10-08T01:45:50-03:00",
        "valor": 25,
        "multa": 0,
        "abatimento": 0,
        "juros": 0,
        "desconto": 0
    },
    "descontos": []
}

 

Editado por C4Dev
  • Consultores
Postado

@C4Dev
Estava falando com o time, como não temos credenciais para testar, vou te mandar a unit vc pode realizar os testes para nós por favor.
ACBrBoletoRet_Sicredi_APIV2.pas
 

Após salvar execute um Build ou rode o instalador.
Aguardo um feedback

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Este tópico foi criado há 404 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...