Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


01. DADOS GERAIS

Produto:

TOTVS Varejo Franquias e Redes

Solucoes_totvs
Solucao

Solucoes_totvs_cross
SolucaoCross

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

 

Linhas_totvs
Franquias e Redes

Segmento:

Varejo 

Segmentos_totvs
Segmento

Módulo:PDV OMNI - DESKTOP
Função:CONSULTA CONFIGURAÇÕES
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :DVAROMNICK-745


02. 
SITUAÇÃO/REQUISITO

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

...

)

...

.

03. SOLUÇÃO

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.

Image Added

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.

04. DEMAIS INFORMAÇÕES

Não se aplica

05. ASSUNTOS RELACIONADOS

...

Não se aplica

06. ANÁLISE DE IMPACTO

Impacto no Frontend (PDV Central)

    • 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.

...

Impacto no Backend

    • 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.

...

Impacto em Componentes Compartilhados

    • 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.

07. VERSÃO

PRODUTOVERSÂO
TOTVS PDV Omni4.3.X.0

Templatedocumentos