| Produto: | |
|---|---|
| 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). Também é necessário corrigir os bugs críticos de estabilidade (entidades e threading) e padronizar a localização dos botões de ação nos filtros para melhorar a usabilidade.
Backend (Repositório e Domínio):
Nova Consulta Paginada: Implementado o método 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.
Correção de Entidades: As classes 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.
Namespaces: Refatoração de diversas classes de Domínio e Aplicação para utilizar File-scoped Namespaces.
Frontend (Blazor e UI):
Paginação: A tabela da tela 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".
Pesquisa Otimizada: Implementado o uso de Debouncer no campo de pesquisa por descrição. Isso evita requisições excessivas ao banco de dados enquanto o usuário digita.
Correção no Debouncer: Corrigido um bug crítico na classe Debouncer.cs onde o CancellationTokenSource recebia Dispose indevidamente, causando exceções durante digitações rápidas.
Correção de Threading: Removida a chamada .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.
Padronização Visual: O botão "Limpar Filtros" foi movido para o rodapé (Footer) do componente TotvsFilter para padronização visual e melhor usabilidade.
Não se aplica
Não se aplica