| 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
...
.
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
Telas Impactadas:
Cadastro de Motivos de Experiência de Uso: Impacto alto. Alteração completa na forma de listagem e pesquisa de dados.
Cadastro de Motivos de Desconto: Impacto baixo. Apenas reposicionamento do botão "Limpar Filtros".
Monitoramento de Cargas: Impacto baixo. Apenas reposicionamento do botão "Limpar Filtros".
Relatórios (Pedidos, Vendas, Vendas Perdidas): Impacto baixo. Apenas reposicionamento do botão "Limpar Filtros".
Impacto Técnico:
Performance: Melhoria significativa no tempo de carregamento da tela de Motivos de Experiência, pois agora o sistema trafega apenas a página solicitada ao invés de grandes coleções de dados.
Estabilidade: A correção no Debouncer e nas Entidades previne crashes da aplicação (erros 500 ou desconexão do Blazor) que ocorriam em cenários específicos de navegação e busca.
Banco de Dados: Novas queries geradas pelo Entity Framework incluirão cláusulas OFFSET e FETCH (ou LIMIT), reduzindo o I/O no banco de dados.
Compatibilidade:
Não há quebra de contrato de API pública externa, pois as alterações foram concentradas nos serviços de aplicação e DTOs internos do módulo. As exportações de dados devem ser revalidadas para garantir que consideram o filtro aplicado e não apenas a página visualizada.
| PRODUTO | VERSÂO |
|---|---|
| TOTVS PDV Omni | 4.3.X.0 |
| Templatedocumentos |
|---|