Á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

...

.

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

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.

07. VERSÃO

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

Templatedocumentos