Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

Bom dia pessoal, encontrei uma inconsistência na leitura do retorno de consulta detalhe do Santander (API) na unit ACBrBoletoRet_Santander_API.pas e queria propor o ajuste.

Cenário:

Na consulta detalhe (tpConsultaDetalhe), quando o título foi pago via PIX, o Santander devolve no bloco writeOffData o status = "BAIXADO" com writeOffDescription = "BAIXA DE PAGAMENTO VIA PIX". O código já trata isso reclassificando o estado para liquidado:

if (ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca = 'BAIXADO') and
   (LJSONObject.ValueExists('writeOffDescription')) and
   (LJSONObject.AsString['writeOffDescription'] = 'BAIXA DE PAGAMENTO VIA PIX') then
   ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca := 'LIQUIDADO';

O problema é que esse trecho altera só o EstadoTituloCobranca (texto). O CodigoEstadoTituloCobranca, porém, já tinha sido preenchido mais acima a partir do status original "BAIXADO", que via RetornaCodigoOcorrencia vira '09':

if (LSituacao = 'ATIVO')     then Result := '02'
else if (LSituacao = 'LIQUIDADO') then Result := '06'
else if (LSituacao = 'BAIXADO')   then Result := '09'
else Result := '99';

A linha de proteção logo abaixo não conserta, porque ela só atua quando o código está vazio:

if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then
   ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(...);

Como o código já estava '09', o EstaVazio dá falso e ele permanece '09'. Ou seja: o retorno fica com estado textual LIQUIDADO e código de ocorrência 09 (baixa) — divergentes. Quem consome o CodigoEstadoTituloCobranca (que é o campo canônico pra automação) trata um pagamento PIX como baixa genérica e o título não é dado como liquidado/pago.

O ajuste

Quando reclassifico o estado pra LIQUIDADO, preciso reclassificar o código junto, na mesma condição — não dá pra depender do EstaVazio porque o campo já vem preenchido. Troquei a linha única por um begin..end setando os dois:

if (ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca = 'BAIXADO') and
   (LJSONObject.ValueExists('writeOffDescription')) and
   (LJSONObject.AsString['writeOffDescription'] = 'BAIXA DE PAGAMENTO VIA PIX') then
begin
  ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca := 'LIQUIDADO';
  ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := '06';
end;

O '06' é exatamente o que o próprio RetornaCodigoOcorrencia('LIQUIDADO') devolveria, então mantém coerência com o resto da unit. Os dois campos passam a contar a mesma história: PIX pago → LIQUIDADO / 06.

Faz sentido pra subir? Abraço.

Segue anexo a modificação: ACBrBoletoRet_Santander_API.pas

  • Curtir 1
  • Larissa.Santos changed the title to [ACBR-9606] Santander API — baixa via PIX retorna estado "LIQUIDADO" mas código de ocorrência "09" (BAIXADO)

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