Ao consumir a API do Sankhya para consulta em massa de parceiros (entidade Parceiro / TGFPAR) utilizando o serviço CRUDServiceProvider.loadRecords, podem ocorrer inconsistências na listagem completa dos registros.
Os principais sintomas observados são:
Alguns parceiros não são retornados na consulta completa, mesmo sem a aplicação de filtros
Registros duplicados entre diferentes páginas da paginação
Em alguns cenários, o mesmo código de parceiro é retornado mais de uma vez, associado a nomes diferentes, gerando inconsistência nos dados exibidos ou processados por integrações.
Esse comportamento ocorre principalmente quando a consulta utiliza paginação (offsetPage) para percorrer todas as páginas da entidade.
Procedimento
Para corrigir o comportamento, podem ser adotadas duas abordagens, conforme a necessidade do cenário:
Opção 1: Ajuste da requisição da API
Remova ou altere o atributo, definindo-o como
false ou eliminando-o da requisição.
"ignoreCalculatedFields": "true"
Garanta que a requisição utilize um ordenamento explícito e determinístico, preferencialmente:
"orderByExpression": "CODPARC ASC"
Essa abordagem evita problemas de paginação, duplicidade de registros e inconsistências nos dados retornados pela API.
Opção 2: Revisão de campos calculados da entidade
Identifique os campos calculados configurados na entidade Parceiro (TGFPAR);
Avalie se esses campos fazem uso de:
Subqueries;
Funções agregadas;
Relacionamentos que possam gerar múltiplos registros;
Caso identifique esses cenários, ajuste, simplifique ou remova temporariamente os campos calculados.
Após a revisão, mantenha o uso do atributo abaixo em cenários que demandem melhor performance, desde que a paginação dos dados permaneça consistente.
"ignoreCalculatedFields": "true"
Essa abordagem é recomendada quando o desempenho da API é um fator crítico e há a necessidade de manter a exclusão de campos calculados, sem comprometer a consistência dos dados retornados.
CAUSA:
O comportamento ocorre devido à combinação entre consultas paginadas, ordenação implícita ou inexistente e o uso do atributo ignoreCalculatedFields = true em entidades que possuem campos calculados.
Nesses casos, o atributo pode alterar a forma como o dataset é montado e ordenado internamente pela API, comprometendo o controle da paginação e a consistência dos registros retornados, ocasionando:
Registros ausentes na paginação completa
Registros duplicados em páginas diferentes
Retorno do mesmo código de parceiro com informações divergentes, como nomes distintos
Esse cenário não está relacionado a falhas de cadastro ou à aplicação de filtros, mas sim à forma como a API processa entidades com campos calculados em consultas paginadas.
Embora o cenário possa afetar outras entidades, o problema é mais recorrente na entidade Parceiro (TGFPAR).
Comentários
0 comentário
Escreva seu comentário aqui
Por favor, entre para comentar.