João Vitor Bogo Postado 30 Junho Postado 30 Junho 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 1
Consultores Larissa.Santos Postado 7 Julho Consultores Postado 7 Julho Bom dia, @João Vitor Bogo! Foi criada a tarefa ACBR-9606 para avaliação. Obrigada pela contribuição!
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora