| Produto: | TOTVS Varejo Franquias e Redes
| ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Linha de Produto: | | ||||||||||||||||
| Segmento: | Varejo | ||||||||||||||||
| Módulo: | PDV OMNI - DESKTOP | ||||||||||||||||
| Função: | CONSULTA CONFIGURAÇÕES | ||||||||||||||||
| Ticket: | |||||||||||||||||
| Requisito/Story/Issue (informe o requisito relacionado) : | DVAROMNICK-745 |
Situação Atual: A tela de cadastro de "Motivos de Experiência de Uso" no PDV Central não possui paginação nativa. Atualmente, a grid carrega os registros baseada apenas nos filtros, exigindo que o usuário altere manualmente a quantidade de registros a serem exibidos para visualizar mais dados. Isso torna a navegação ineficiente, especialmente em cenários com grande volume de dados, e pode impactar a performance da renderização.
Além disso, foram identificados comportamentos instáveis na aplicação relacionados ao gerenciamento de threads na UI (travamentos) e exceções (ObjectDisposedException) no componente de Debouncer durante pesquisas rápidas, bem como erros de referência nula (NullReferenceException) na manipulação de entidades de domínio quando carregadas sem seus relacionamentos.
Requisito: Implementar paginação nativa (server-side) na listagem de motivos de experiência de uso, permitindo a navegação fluida entre as páginas (Próxima, Anterior, Primeira, Última) e respeitando os filtros aplicados. O sistema deve garantir performance adequada com grandes volumes de dados e manter a seleção de registros ao alterar filtros (reiniciando a paginação
...
)
...
.
Backend (Repositório e Domínio):
ObterListaMotivoExperienciaEQuantidadeAsync no MotivoExperienciaReadRepository. Este método suporta paginação (Skip/Take), ordenação primária e secundária (Then), filtro textual via ILike e retorna o total de registros para cálculo das páginas.ExperienciaUso e MotivoExperiencia foram refatoradas para inicializar as listas de relacionamento (ICollection) diretamente no construtor e tratar nulos nos getters/setters. Isso elimina o erro de NullReferenceException ao instanciar entidades sem carregar os objetos filhos.Frontend (Blazor e UI):
ExperienciaUso.razor foi reescrita para utilizar o componente TotvsPager. Foi adicionada lógica para alternar entre "Pager Numérico" e "Input", além de um seletor para definir a quantidade de "Resultados por página".Debouncer no campo de pesquisa por descrição. Isso evita requisições excessivas ao banco de dados enquanto o usuário digita.Debouncer.cs onde o CancellationTokenSource recebia Dispose indevidamente, causando exceções durante digitações rápidas..ForAwait() (que configura ConfigureAwait(false)) dentro do código da UI (.razor.cs), garantindo que as atualizações da interface ocorram na Thread correta e evitando travamentos.Footer) do componente TotvsFilter para padronização visual e melhor usabilidade.Legenda: No gif acima mostra a funcionalidade da página de cadastro de motivos de experiencia de uso com a implementação da paginação.
Não se aplica
...
Não se aplica
Refatoração da tabela para uso de TotvsPager com carregamento sob demanda.
Inclusão de controles de paginação (Primeira, Anterior, Próxima, Última), exibição de total de registros e páginas.
Persistência de filtros durante a navegação entre páginas.
Reset automático para a primeira página ao alterar filtros.
Adição de pesquisa textual com Debouncer, reduzindo chamadas excessivas ao backend.
Padronização visual do botão “Limpar Filtros” no rodapé dos filtros, impactando múltiplas telas.
Correção de falhas relacionadas ao ciclo de vida de tarefas assíncronas, evitando erros no console durante digitação rápida ou navegação.
...
Criação do método ObterListaMotivoExperienciaEQuantidadeAsync, suportando:
Paginação server-side.
Filtro textual com ILike.
Ordenação primária e secundária.
CancellationToken para cancelamento seguro de requisições.
Melhoria de performance com logs de tempo de execução (Stopwatch).
Refatoração estrutural para File-scoped Namespaces, sem impacto funcional.
Ajuste na inicialização de coleções em entidades de domínio, prevenindo NullReferenceException.
...
Debouncer: Correção crítica no gerenciamento de CancellationTokenSource, eliminando risco de ObjectDisposedException.
TotvsNumeric: Novo parâmetro Class para maior flexibilidade de customização visual.
TotvsFilter: Mudança de layout do botão “Limpar Filtros”, afetando outras telas que reutilizam o componente.
| PRODUTO | VERSÂO |
|---|---|
| TOTVS PDV Omni | 4.3.X.0 |
| Templatedocumentos |
|---|