GE - Como Fazer - Pesquisa Dinâmica

De CIGAM WIKI

Voltar

Como Fazer > Utilidades/Diversos > Pesquisa Dinâmica

Índice

Pesquisa Dinâmica Desktop

A Pesquisa Dinâmica Desktop no CIGAM é uma funcionalidade projetada para facilitar a busca e filtragem de informações diretamente na tela do sistema, sem a necessidade de abrir relatórios complexos ou exportar dados manualmente. Ela é especialmente útil para usuários que precisam localizar registros de forma rápida e eficiente, otimizando o tempo e garantindo maior precisão nas informações consultadas.

Disponível a partir da versão CIGAM 11, a funcionalidade permite, a partir de um modelo pré-cadastrado em XML, realizar consultas dinâmicas, aplicando filtros por campos macros e/ou por faixas, conforme a necessidade.

De forma detalhada, a Pesquisa Dinâmica Desktop oferece:

  • Filtrar dados em tempo real: digite palavras-chave ou critérios específicos e veja os resultados instantaneamente, agilizando a localização de registros, mesmo em grandes volumes de dados.
  • Personalizar colunas e resultados: escolha quais campos quer visualizar, altere a ordem das colunas e destaque as informações mais relevantes.
  • Aplicar múltiplos critérios de pesquisa: combine filtros como datas, status, centros de custo, clientes, produtos ou outros parâmetros, permitindo consultas detalhadas e precisas.
  • Agilizar a tomada de decisão: ao acessar rapidamente os dados relevantes, o usuário consegue tomar decisões mais seguras e ágeis.
  • Exportação rápida e flexível: os resultados podem ser exportados para Excel, PDF ou outros formatos, facilitando análises externas e compartilhamento de informações.
  • Aumento da produtividade: reduz o tempo gasto na busca e filtragem, contribuindo para processos mais eficientes e controle mais preciso sobre os dados do sistema.

Na tela da Pesquisa Dinâmica, estão disponíveis quatro principais ações:

  • Visão rápida - Exibe informações resumidas do modelo configurado.
  • Visualizar - Abre a tela em modo de consulta para o item selecionado.
  • Modificar - Abre a tela em modo de edição para o item selecionado.
  • Criar - Abre a tela em modo de criação de um novo modelo.

Para mais detalhes sobre o funcionamento de cada botão, consulte a página Comportamento dos botões na Pesquisa Dinâmica.

Como montar a Pesquisa Dinâmica no CIGAM

Para utilizar a Pesquisa Dinâmica, a empresa precisa ter dois arquivos modelo:

  • Um arquivo XML, que define os campos e filtros da pesquisa.
  • Um arquivo RTF, que será usado na visão rápida para exibir os resultados de forma resumida.

Esses arquivos devem estar na pasta: %CIGAM_INSTAL%Modelos\Pesquisas\

📂 Exemplo de arquivos:

  • CG02075_Empresas.xml
  • CG02075_Empresas.rtf

⚠️ Dica: Veja como informar esses arquivos dentro do arquivo XML usando o Elemento lupa.

Estrutura do arquivo XML

O arquivo XML apresentado segue uma organização típica de configuração ou definição de tela no sistema, contendo tanto comentários explicativos quanto elementos funcionais que controlam o comportamento da pesquisa.

1. Cabeçalho XML

Define informações fundamentais sobre o documento XML, incluindo a versão do padrão utilizado, a codificação de caracteres e a independência do arquivo.

  <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
  • Define a versão do XML utilizada (1.0).
  • Informa que a codificação é UTF-8.
  • O atributo standalone="no" indica que o documento pode depender de definições externas (como DTD ou schemas).

Voltar ao início

2. Comentário inicial - Parâmetros de sintaxe do banco de dados

Documenta as diferenças de sintaxe entre MSSQL e Oracle, fornecendo códigos de referência que podem ser aplicados em consultas parametrizadas. Serve como guia para adaptação automática de instruções SQL pelo CIGAM, garantindo que consultas criadas para múltiplos bancos de dados sejam executadas corretamente, independentemente do sistema de gerenciamento utilizado. Além disso, funciona como documentação interna do XML, sem ser processada pelo sistema.

  <!--
  Parâmetros de sintaxe do banco de dados:
  {#}  MSSQL           Oracle
  {0}  with (nolock)   (branco)
  ...
  -->
Esse bloco está comentado e não é processado pelo sistema. Serve para documentar diferenças de sintaxe entre MSSQL e Oracle, utilizando códigos {0}, {1}, etc. que podem ser aplicados em consultas parametrizadas. Indica quais palavras-chave ou funções usar em cada banco.
Ao criar o arquivo XML da Pesquisa Dinâmica, alguns códigos especiais ajudam a adaptar a consulta para diferentes bancos de dados (por exemplo, SQL Server ou Oracle). Esses códigos funcionam como “atalhos”, que o CIGAM interpreta e substitui automaticamente conforme o banco utilizado.
Código MSSQL Oracle Descrição
{0} with (nolock) (em branco) Evita bloqueio de registros durante a leitura
{1} top 1 (em branco) Retorna apenas o primeiro registro
{2} %DBUSUARIO%. (em branco) Refere-se ao nome do usuário do banco
{3} + || Concatenação de textos ou valores
{4} substring substr Extrai parte de um texto
{5} (em branco) from dual Usado em consultas sem tabela principal
{6} (em branco) and rownum = 1 Retorna apenas um registro
{7} cast( utl_raw.cast_to_varchar2( Converte tipos de dados
{8} as varchar(max)) ) Fecha a conversão
{9} Comentado (em branco) Texto comentado (ignorado na execução)
{10} (em branco) Comentado Texto comentado (ignorado na execução)
{11} /* (em branco) Início de comentário em bloco
{12} */ (em branco) Fim de comentário em bloco
{13} (em branco) /* Início de comentário em bloco (formato Oracle)
{14} (em branco) */ Fim de comentário em bloco (formato Oracle)
💡 Importante: Use os códigos exatamente como estão para garantir que a pesquisa funcione tanto no SQL Server quanto no Oracle sem precisar criar dois arquivos diferentes.

Voltar ao início

3. Elemento <pesquisaPaginada>

Define a estrutura principal da Pesquisa Dinâmica, organizando a exibição dos dados de forma paginada e centralizando todas as configurações da pesquisa, como consultas, filtros, grids e visualizações adicionais.

  <pesquisaPaginada>
  ...
  </pesquisaPaginada>
  • É o elemento raiz funcional do documento.
  • Indica que os dados exibidos serão carregados de forma paginada (em partes, não todos de uma vez).
  • Contém a definição de select, grid, lupa, faixa, filtros e mosaicos.

4. Elemento <select>

Define os parâmetros iniciais da consulta da Pesquisa Dinâmica, incluindo fonte de dados, comportamento da interface e limites de registros, permitindo controle total sobre como os dados são carregados, exibidos e navegados pelo usuário.

  <pesquisaPaginada>
     <select
        paginacao="0" <!-- Controla a paginação no carregamento inicial -->
        initFolder="P" <!-- Define a guia que será aberta inicialmente -->
        acaoVisualizar="L" <!-- Define a navegação ao usar o botão Visualizar -->
        duploClick="V" <!-- Define a ação ao dar duplo clique ou pressionar Enter -->
        sugerirCargaTotal="S" <!-- Controla se a mensagem "Deseja carregar ..." será exibida -->
        xml="F:\PP.xml" <!-- Caminho para o arquivo XML contendo os dados. -->
        xsd="F:\PP.xsd" <!-- Caminho para o arquivo XSD com definição das colunas. -->
        userTempFolder="true" <!-- Indica se os arquivos XML/XSD estão na pasta temporária do usuário. -->
        limiteRegistros="100" <!-- Define o número máximo de registros retornados pela consulta -->
     >
     ...
     </select>
  </pesquisaPaginada>
O elemento <select> dentro de <pesquisaPaginada> define os parâmetros iniciais da consulta e pode conter a consulta SQL, ou, alternativamente, uma fonte de dados XML/XSD.
💡 Importante:
  • A consulta SQL deve estar completa dentro do <select>.
  • Sempre incluir SELECT, FROM, WHERE e quaisquer joins ou subconsultas necessários.
  • O sistema irá processar essa consulta e exibir os resultados na tela da Pesquisa Dinâmica.
⚠️ Observação sobre uso de CONCAT na cláusula WHERE
  • A utilização de concatenação (CONCAT ou ||) diretamente na cláusula WHERE pode impactar negativamente a performance da consulta. Isso ocorre porque:
  • Pode impedir o uso de índices.
  • Reduz a capacidade do otimizador do banco de dados de gerar um plano de execução eficiente.
Recomendação:
Evite concatenar colunas dentro do WHERE. Sempre que possível, reescreva a condição utilizando comparações diretas, permitindo que índices sejam utilizados.
👨‍💻 Boas práticas
  • As consultas para a Pesquisa Dinâmica devem ser elaboradas por usuários com conhecimento em Banco de Dados (BD).
  • Otimize sempre pensando em performance, principalmente em bases com grande volume de dados.
  • Teste as consultas no banco antes de implementá-las no XML.

Configurando para iniciar aberto em "Faixa" ou "Pesquisar"

ℹ️ Dentro do arquivo XML, é possível selecionar qual guia iniciará aberta na tela da Pesquisa Dinâmica.
Para isso, deve-se utilizar o atributo initFolder na tag <select>. Os valores válidos são:
Pesquisar
  • "P" → Pesquisar
  • "F" → Faixa
Exemplo configurando para iniciar na guia Pesquisar:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P" >
     ...
     </select>
  </pesquisaPaginada>
Faixa
Exemplo configurando para iniciar na guia Faixa:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="F" >
     ...
     </select>
  </pesquisaPaginada>

Como configurar para navegar dentro dos cadastros

ℹ️ É possível navegar entre os cadastros usando as teclas "Page Up" e "Page Down" no CIGAM11. O comportamento pode ser parametrizado através do atributo acaoVisualizar na tag <select>:
  • "L" → Locate / Localizar
  • "F" → Range / Faixa
Exemplo:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P" acaoVisualizar="L" >
     ...
     </select>
  </pesquisaPaginada>
Observação:
Esse atributo está disponível apenas para o botão <Visualizar>. Caso não esteja informado, ao clicar no botão <Visualizar>, o sistema entrará automaticamente em range/faixa sobre o registro selecionado.

Como configurar o duplo clique na Pesquisa Dinâmica

ℹ️ O duplo clique em um registro listado, assim como a tecla Enter, pode ser parametrizado para definir o modo de abertura do registro.
O comportamento é definido através do atributo duploClick na tag <select>. Valores possíveis:
  • "V" → Visualizar
  • "M" → Modificar
  • "C" → Criar
Exemplo:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P" duploClick="M" >
     ...
     </select>
  </pesquisaPaginada>

Como configurar a mensagem de "Deseja carregar todos os registros para ir para a última página?"

ℹ️ A partir da [Versão 231002.d 1], a mensagem "Deseja carregar todos os registros para ir para a última página?" não será exibida automaticamente após a consulta com filtros.


PD mensagemUltimaPag.jpg


Habilitando a mensagem
Para que a mensagem seja exibida, é necessário adicionar o parâmetro sugerirCargaTotal="S" na tag <select> do modelo XML:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P" sugerirCargaTotal="S" >
     ...
     </select>
  </pesquisaPaginada>
Observação:
  • Se o modelo utilizado não contiver esse parâmetro ou ele estiver definido como "N", a mensagem não será exibida.
  • Independente do uso do parâmetro, a mensagem será exibida sempre que os botões "Última página" ou "Olap" forem utilizados.
PD botaoUltimaPag.jpg

Como utilizar uma fonte de dados em xml

ℹ️ Para casos específicos, os dados podem vir de arquivos XML/XSD em vez de uma consulta SQL.
Para utilização, na tag <select> não deve ser definida nenhuma instrução de banco de dados como valor e informar os atributos xml e xsd como os nomes de arquivos respectivamente.
  <pesquisaPaginada>
     <select paginacao="0" xml="F:\PP.xml" xsd="F:\PP.xsd" userTempFolder="true" />
     ...
     </select>
  </pesquisaPaginada>
  • xml → arquivo XML com os dados
  • xsd → arquivo XSD com a definição das colunas
  • userTempFolder="true" → indica que os arquivos estão na pasta temporária do usuário (%TEMP%)
💡 Diferente da visão rápida, aqui é necessário informar o caminho completo do arquivo, pois ele pode estar em pasta diferente do modelo XML.
🔹 Regras ao utilizar XML/XSD como fonte
  1. Não usar prefixo de tabela nos campos de filtros.
  2. Atributos de filtros como where e order by continuam suportados, mas sem prefixos.
  3. Campos com espaços devem ser colocados entre colchetes. Ex. [nome da empresa].
  4. A paginação sempre será completa, pois todos os registros do XML são carregados em memória.
  5. Filtros por faixa que dependam de sub-selects ou fontes secundárias não são suportados.
  6. Zoom em campos pode ser configurado via zoom="[número da tabela];[número do campo]".
  7. Consulta de zoom pode ser encontrada em %CIGAM_INSTAL%Apoio/Geral/tabelas_cigam.xml.
  <pesquisaPaginada>
     <filtros order="order by e.Cd_empresa">
        <item nome="Empresa" atrib="A" where="e.Cd_empresa = '[value]'" zoom="2;1" />
     </filtros>
  </pesquisaPaginada>
🔹 Detalhes sobre userTempFolder="true"
Quando informado com o valor "true", o sistema considera que a localização dos arquivos XML e XSD será a pasta temporária do usuário no Windows.
Para identificar essa pasta:
  1. Pressione WIN + R para abrir a caixa Executar.
  2. Digite %TEMP% e pressione Enter.
  3. O Windows Explorer abrirá diretamente na pasta temporária.
Os arquivos XML e XSD devem seguir o padrão de exportação de DataSet do .NET Framework e podem ser facilmente gerados usando os métodos:
  • WriteXml
  • WriteXmlSchema
💡 Dica:
Para facilitar a criação dos modelos, gere os arquivos a partir de um DataTable já populado, assim a estrutura e dados ficam prontos para testes.

Como habilitar o limitador de registro

ℹ️ [Versão 211104 RC 1] Ao utilizar limiteRegistros, o sistema retorna no máximo a quantidade informada, mesmo que a consulta SQL traga mais resultados. Isso é útil para melhorar o desempenho e evitar sobrecarga no carregamento inicial.
Exemplo:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P" limiteRegistros="100" >
     ...
     </select>
  </pesquisaPaginada>

Voltar ao início

5. Elemento <grid>

Define a grade de exibição dos resultados na Pesquisa Dinâmica, controlando quais colunas serão apresentadas e como cada dado será formatado.

  <pesquisaPaginada>
     <grid>
     ...
     </grid>
  </pesquisaPaginada>
O elemento <grid> dentro de <pesquisaPaginada> representa a grade de resultados da pesquisa.
O conteúdo e a formatação podem ser definidos diretamente dentro dele.
💡 Importante: Todas as colunas que são selecionadas na área de <select> do modelo de pesquisa dinâmica precisam obrigatoriamente constar na área do <grid> do modelo, garantindo consistência entre a consulta e a exibição.
Exemplo de estrutura do <select>:
  <pesquisaPaginada>
     <select paginacao="0" initFolder="P">
        SELECT 
        i.Id_integracao as "Id integração",
        i.Dt_integracao as "Integração",
        {2}CGFC_SECONDS_TO_TIME(i.Hr_integracao,4) as "Hr integração"
        FROM /*nl<GEINTEGRADORLOG>*/ i {0}
        LEFT JOIN /*nl<GEUSUARIO>*/  u {0} on
        i.usu_integracao = u.Cd_usuario
     </select>
  </pesquisaPaginada>
Exemplo correspondente do <grid>:
  <pesquisaPaginada>
     <grid>
        <item nome="Id integração" headerFilter="Y" columnWidth="100" />
        <item nome="Integração" headerFilter="Y" columnWidth="100" />
        <item nome="Hr integração" headerFilter="Y" columnWidth="100" />
     </grid>
  </pesquisaPaginada>
Validação de consistência:
Se houver divergência entre as colunas definidas no <select> e as definidas no <grid>, a seguinte mensagem será exibida ao usuário:
Mensagem da Pesquisa Dinâmica

Como personalizar os filtros de colunas dentro da Pesquisa Dinâmica

ℹ️ O atributo headerFilter define a disponibilidade de filtros para os resultados exibidos em uma coluna específica:
  • "Y" = Permite que o usuário aplique filtros aos resultados exibidos nessa coluna.
  • "N" = Os filtros de coluna não são mostrados, resultando em uma exibição direta dos dados.
Exemplo de configuração:
  <pesquisaPaginada>
     <grid>
        <item nome="Nome" headerFilter="Y" />
        <item nome="Fantasia" headerFilter="N" />
        <item nome="Município" headerFilter="Y" />
        <item nome="CEP format="00000-000" />
     </grid>
  </pesquisaPaginada>
💡 Observação:
O filtro de coluna é aplicado apenas aos registros carregados na tela. Para filtrar todos os registros disponíveis, é necessário clicar no ícone 'Última página', garantindo que todos os dados sejam carregados antes de aplicar o filtro. Essa abordagem assegura que nenhuma informação relevante seja deixada de fora, proporcionando resultados mais completos e precisos para o usuário.
Filtro de Coluna

Voltar ao início

6. Elemento <lupa>

Define os modelos de visão rápida usados para exibir informações detalhadas ou resumidas de um registro na Pesquisa Dinâmica.

  <pesquisaPaginada>
     <lupa>
        <modelo arquivo="CG02075_Empresas.rtf" />
        <modelo arquivo="CG02075_Empresas_PF.rtf" tag="Pessoa" valor="Física" />
     </lupa>
  </pesquisaPaginada>
Visão rápida


O elemento <lupa> permite definir o caminho do arquivo de visão rápida que será utilizado para exibir informações resumidas ou detalhadas de um registro ao usuário.
💡 Importante: É possível apontar mais de um modelo de arquivo de visão rápida, separando-os conforme a necessidade.


7. Elementos <faixa> e <filtros>

Permitem agrupar, ordenar e filtrar os registros exibidos na Pesquisa Dinâmica, oferecendo ao usuário maior controle sobre os resultados.

  <pesquisaPaginada>
     <faixa nome="Pessoa" >
     ...
     </faixa>
  
     <faixa order="order by 3" >
     ...
     </faixa>
  
     <filtros order="order by 3" >
     ...
     </filtros>
  </pesquisaPaginada>
Faixa
Dentro de <pesquisaPaginada>, os elementos <faixa> e <filtros> são usados para organizar e limitar os resultados da pesquisa dinâmica.
🔹 <faixa>
  • Função: delimita ou agrupa registros conforme um critério.
  • Atributo order: define a coluna pela qual os registros serão ordenados.
  • order by 1 → ordena pela primeira coluna do SELECT.
  • order by 2 → ordena pela segunda coluna, e assim por diante.



📌 Exemplo de faixa ordenada:
  <pesquisaPaginada>
     <faixa nome="Pessoa">
         <item nome="Todos" order="order by 3" />
         <item nome="Física" where="e.Pessoa = 1" order="order by 3" />
         <item nome="Jurídica" where="e.Pessoa = 0" order="order by 3" />
     </faixa>
  
     <faixa order="order by 3" >
         <item nome="Divisão" 
            select="select Divisao, Descricao_divis from /*n1<GEDIVISAO>*/ {0} order by 2" 
            where="e.Divisao = '[divisao]'" 
            display="Descricao_divis"/>
     </faixa>
  </pesquisaPaginada>
Pesquisar
🔹 <filtros>
  • Função: define critérios para filtrar os resultados.
  • Atributo order: funciona como no <faixa> (ordenação pela posição da coluna).
📌 Exemplo de filtro simples:
  <pesquisaPaginada>
     <filtros order="order by 3" >
        <item nome="CNPJ/CPF" atrib="A" where="e.Cnpj_cpf like '[value]%'" />
        <item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'" />
     </filtros>
  </pesquisaPaginada>

Como ordenar uma listagem

ℹ️ [Versão 221107Beta 1] Em alguns casos, especialmente quando se deseja ordenar alfabeticamente dados que possuem acentuação, é necessário um tratamento especial para que o resultado não seja afetado por diferenças de acentos ou caracteres especiais.
Ordenação com acentuação no Oracle
Para Oracle, utilize o NLSSORT no order by dentro do atributo select da tag <item>:
  <pesquisaPaginada>
     <faixa order="order by 3" >
         <item nome="Divisão" select="select Divisao, Descricao_divis from /*nl<GEDIVISAO>*/ {0} 
            order by {11}NLSSORT(Descricao_divis, 'NLS_SORT=LATIN_AI'){12} {13}2{14}
            where="e.Divisao = '[divisao]'" display="Descricao_divis" " />
     </faixa>
  </pesquisaPaginada>
Explicação dos parâmetros:
  • Oracle: executa NLSSORT(Descricao_divis, 'NLS_SORT=LATIN_AI') e ignora o 2 comentado.
  • MSSQL: ignora o NLSSORT comentado e ordena pela segunda coluna (2) do select.
Compatibilidade entre bancos de dados
Usando esse modelo, um único XML funciona tanto para Oracle quanto para MSSQL:
  • Oracle → ordena alfabeticamente ignorando acentos.
  • MSSQL → ordena pela posição da coluna, sem gerar erro de função inexistente.

Como utilizar dados nos filtros

  • O valor do filtro deve ser usado exatamente como informado pelo usuário.
  • Para variações de sintaxe conforme o banco de dados, deverá ser considerado também que somente o valor do filtro será dinâmico. Por exemplo:
  • Se o filtro for do tipo alpha, coloque o valor entre aspas na consulta SQL.
  • Para variações de sintaxe conforme o banco de dados, deverá ser considerado também que somente o valor do filtro será dinâmico. Por exemplo:
  • Se o filtro for do tipo data, respeite a sintaxe de cada banco:
  • SQL Server: Convert(datetime,'[value]',103)
  • Oracle: To_date('[value]', 'dd/MM/yyyy')

Compatibilidade entre bancos de dados

ℹ️ O atributo validate="DB" permite que o mesmo XML funcione em diferentes bancos de dados, ajustando automaticamente a conversão de datas.
📌 Exemplo de filtro de data compatível:
 <pesquisaPaginada>
   <filtros order="order by" >
     <item nome="Vencimento" atrib="A" where="lc.Dt_vencimento = '[value]'" format="00/00/0000" validate="DB" />
   </filtros>
 </pesquisaPaginada>

Como configurar um valor inicial para um filtro

ℹ️ O valor inicial pode ser configurado com o atributo init, de acordo com o tipo de filtro.
Tipo de filtro Exemplo de `init` Resultado inicial
Alpha (texto) "MARIA" Campo já vem preenchido com "MARIA"
Data atual "[dataAtual]" Campo já vem preenchido com a data do dia
Data relativa "[dataAtual] - 365" Data de 1 ano atrás
📌 Exemplo com texto fixo: Ao abrir a pesquisa, o filtro já vem preenchido com "MARIA".
  <pesquisaPaginada>
     <filtros order="order by" >
        <item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'" init="MARIA" />
     </filtros>
  </pesquisaPaginada>
📌 Exemplo com data relativa: Considera registros a partir de um ano atrás e já abre com essa data preenchida no filtro.
  <pesquisaPaginada>
     <filtros order="order by" >
        <item nome="Aniversario" atrib="D" where="e.Dt_aniversario >= '[value]'" format="00/00/0000"
        init="[dataAtual] - 365" validate="DB" /> 
     </filtros>
  </pesquisaPaginada>

Como personalizar/definir um valor inicial para os filtros do tipo lista

  • Por padrão, o valor inicial é "Todos", que é o valor default.
  • Não é possível alterar o valor inicial diretamente no XML.
Filtro Pesquisa Dinâmica

Qual a função do atributo VALIDATE

ℹ️ Controla a validação dos valores informados no filtro.
Quando, na pesquisa de NF da "Pesquisa Dinâmica de Lançamentos", o campo de NF tiver mais de 10 dígitos, configure na tag <filtros> o atributo validate="A".
Para configurar o modelo financeiro, localize o arquivo %CIGAM_INSTAL%Modelos\Pesquisas\Financeiro\"Lancamento.xml".
Valores possíveis do atributo validate:
  • DB → Valida como data (date).
  • N → Valida como número (apenas NF com até 10 dígitos).
  • A → Valida como alfanumérico (NF com 10 ou 12 dígitos).
📌 Exemplo - NF com 12 dígitos:
  <pesquisaPaginada>
     <filtros order="ORDER BY 2 DESC" >
        <item nome="NF" atrib="N" where="lc.Nf = '[value]'" format="999999999999" validate="A" />
     </filtros>
  </pesquisaPaginada>

Qual a função do atributo ATRIB

ℹ️ Define o tipo de dado aceito no campo. Quando utilizado como filtro de texto, retorna ou atribui o tipo de dado:
📌 Exemplo atrib="A" (dado alfa).
Possibilita informar um conjunto de caracteres com caracteres alfabéticos (A-Z) e numerais (0-9).
  <pesquisaPaginada>
     <filtros order="order by 3" >
        <item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'" />
     </filtros>
  </pesquisaPaginada>
📌 Exemplo atrib="D" (dado date).
Possibilita informar uma data específica.
  <pesquisaPaginada>
     <filtros order="order by 3" >
        <item nome="Aniversario" atrib="D" where="e.Dt_aniversario >= '[value]'" format="00/00/0000" 
        init="[dataAtual]" validate="DB" />
     </filtros>
  </pesquisaPaginada>
📌 Exemplo atrib="L" (dado Booleano/Checkbox).
Possibilita marcar verdadeiro ou falso seu valor.
  <pesquisaPaginada>
     <filtros order="order by 3" >
        <item nome="Aglutinar Saldo" atrib="L" paramName="AglutinaSaldo" />
     </filtros>
  </pesquisaPaginada>
📌 Exemplo atrib="N" (dado numérico).
Possibilita informar um conjunto de numerais (0-9) decimais, podendo incluir negativos [Versão 231002 1]
  <pesquisaPaginada>
     <filtros order="order by 2 desc" >
        <item nome="Valor" atrib="N" where="lc.Valor = '[value]'" />
     </filtros>
  </pesquisaPaginada>

Voltar ao início

8. Elemento <mosaicos>

Exibe os registros da Pesquisa Dinâmica em formato de mosaicos ou cards, oferecendo uma visualização intuitiva e organizada para destacar informações de forma prática.

  <pesquisaPaginada>
     <mosaicos width="500" height="160" color="48;125;162" maxRender="300" clickAction="M" allPages="false" >
     ...
     </mosaicos>
  </pesquisaPaginada>
O elemento <mosaicos> configura a exibição dos registros no formato mosaico (cards/blocos) na Pesquisa Dinâmica.
Quando essa tag existe no XML, o parser exibirá na barra superior um botão para alternar entre visualização em grid e visualização em mosaico.
Cada registro da consulta é renderizado como um mosaico.
Os atributos da tag principal definem o layout geral, enquanto as tags filhas especificam o conteúdo interno do mosaico.
📌 Exemplo de uso:
  <pesquisaPaginada>
     <mosaicos width="500" height="160" color="48;125;162" maxRender="300" clickAction="M" allPages="false" >
        <label display="Nome completo:" x="100" y="10" size="12" color="255;255;255" />
        <label display="@Nome" x="100" y="30" size="14" color="255;255;255" />
        <label display="@Fantasia" x="100" y="56" size="14" color="255;255;255" />
        <label display="Telefone:" x="100" y="90" size="12" color="255;255;255" />
        <label display="@Fone" x="100" y="100" size="25" color="250;250;250" />
        <picture file="Foto" x="5" y="5" width="90" height="90" circular="true" />
     </mosaicos>
  </pesquisaPaginada>
Atributos da tag <mosaicos>:
Atributo Descrição
width Largura do mosaico (em px).
height Altura do mosaico (em px).
color Cor de fundo do mosaico no formato RGB separado por ;. Ex.: "204;204;255".
maxRender Quantidade máxima de mosaicos renderizados na tela.
clickAction Ação ao clicar no mosaico: "M" para modificar ou "V" para visualizar.
allPages "true" para carregar todos os registros antes de exibir mosaicos (equivalente a clicar no botão Última página). "false" carrega apenas a página atual.
Tags filhas de <mosaicos>
1. <label>
Exibe texto dentro do mosaico.
Atributo Descrição
display Texto exibido. Se começar com @, pega o valor da coluna da consulta.
x, y Posição do texto no mosaico.
size Tamanho da fonte.
color Cor do texto no formato RGB ("R;G;B").
2. <picture>
Exibe imagens no mosaico.
Atributo Descrição
file Nome da coluna da consulta que contém o caminho da imagem.
x, y Posição da imagem no mosaico.
width, height Tamanho da imagem (em px).
circular "true" para moldura circular, "false" para moldura retangular.
💡 Dicas
  • Para encontrar valores RGB rapidamente, use o Paint do Windows ou qualquer editor de imagens.
  • Utilize maxRender para evitar lentidão ao carregar grandes volumes de dados.
  • O texto de busca (cuetext) indica se é necessário pressionar Enter para aplicar o filtro.
Funcionamento do mosaico
1. Carregamento
  • Se a quantidade de registros for maior que maxRender, apenas esse número será exibido e uma mensagem será mostrada no topo. Ex. Exibindo os primeiros 300 registros
  • Se allPages="true", todos os registros serão carregados antes de montar os mosaicos.
2. Refinamento da pesquisa
  • Se o número de mosaicos ≤ maxRender, a pesquisa é aplicada a cada caractere digitado no campo de busca.
  • Se o número de mosaicos > maxRender, é necessário pressionar Enter para aplicar o filtro.
3. Busca
  • O filtro de busca atua apenas sobre os textos exibidos nos labels dos mosaicos.
4. Seleção e ações
  • Clique com o botão direito para selecionar um mosaico.
  • Os botões Selecionar, Visualizar e Modificar são ativados para o mosaico marcado.
  • A seleção é individual (ao selecionar um novo mosaico, o anterior é desmarcado).

Voltar ao início

Como a Pesquisa Dinâmica é iniciada

Após a parametrização, os filtros são carregados conforme definido no XML vinculado. Ao selecionar um novo filtro, o filtro anteriormente aberto é automaticamente fechado, garantindo que apenas um filtro permaneça ativo por vez.

Como criar uma seleção de filtros dinâmicos

ℹ️ [Versão 221107Beta 2]
A Pesquisa Dinâmica disponibiliza a funcionalidade Filtros Dinâmicos, acionada pelo comando Ctrl + R dentro do grid. Esta funcionalidade permite a inclusão de filtros temporários no painel lateral esquerdo, proporcionando maior flexibilidade na seleção de informações sem alterar o modelo base definido no XML.
  • Inclusão de campos: somente um campo pode ser adicionado por vez.
  • Remoção de campos: a exclusão dos filtros adicionados deve ser realizada por meio do botão Remover todos.
  • Restauração do estado inicial: ao encerrar e reabrir a Pesquisa Dinâmica, os filtros retornam ao estado original, conforme definido no XML.
Observações relativas a campos numéricos
ℹ️ [Versão 221107.c 1] [Versão 230502 1]
A partir destas versões, os filtros dinâmicos do tipo numérico permitem a inserção de valores decimais, sendo aceita a utilização da vírgula como separador decimal.


Filtros Dinâmicos


💡 Consulte também: Como adicionar filtros temporários na Pesquisa Dinâmica

Comportamento dos botões na Pesquisa Dinâmica

[Versão 231002 2] As funcionalidades dos botões Visualizar, Modificar e Criar na Pesquisa Dinâmica são descritas a seguir:

Botão Visualizar
  • Abre o registro selecionado em modo "Pesquisar".
  • Não permite a transição para os modos "Modificar" ou "Criar".
  • Ao ser acionado, entra em range/faixa sobre o registro selecionado, respeitando o valor definido no parâmetro acaoVisualizar do modelo da Pesquisa Dinâmica:
  • L → Locate / Localizar
  • F → Range / Faixa
Botão Modificar
  • Abre o registro selecionado em modo "Modificar".
  • Permite transições para os modos "Criar" e "Pesquisar".
  • Ao retornar à tela da Pesquisa Dinâmica após a modificação, o sistema mantém o foco no registro previamente selecionado antes de acionar o botão Modificar.
  • Entra em range/faixa sobre o registro selecionado.
  • Importante: Ao criar um novo registro a partir do modo "Modificar", este estará fora do range/faixa e não será visualizado imediatamente. O registro será exibido apenas ao retornar ao grid da Pesquisa Dinâmica. Caso esteja no modo "Criar", é possível retornar ao modo "Pesquisar", mantendo o foco no registro previamente selecionado.
Botão Criar
  • Abre o registro selecionado em modo "Criar".
  • Permite transições para os modos "Modificar" e "Pesquisar".
  • Após a criação de um registro, o cursor será posicionado no início do grid da Pesquisa Dinâmica.
  • O novo registro será exibido no grid conforme a ordenação definida pelo Order by do modelo, com a linha de seleção localizada no topo do grid.

Voltar ao início

Pesquisa Dinâmica Web

A Pesquisa Dinâmica Web tem como objetivo levar às aplicações Web as funcionalidades presentes na Pesquisa Dinâmica Cigam Desktop.
Os filtros utilizados para realizar a pesquisa são definidos no arquivo XML, seguindo a lógica de tratamento de busca e criação da lista dos filtros usada no Cigam Desktop, porém acrescentando o elemento <web>.

Como cadastrar a pesquisa dinâmica web

O cadastro do modelo será feito mantendo o padrão já existente para os modelos de Pesquisas, do Olap e dos Filtros, através do perfil do usuário.
Veja mais informação no tópico “4. Como fazer o cadastro/alteração dos Modelos Pesquisa Dinâmica (Desktop e Web) e Modelos de Filtros”.

Como montar a pesquisa dinâmica para utilização na WEB

Para a criação do arquivo XML da PD Web, os mesmos elementos usados para a PD desktop serão aplicados, junto ao acréscimo do elemento <web>. Mais informações podem ser obtidas em “1. Pesquisa Dinâmica Desktop”.

Modelo Pesquisa


O elemento <web>, terá os seguintes atributos:

  • O atributo "paginacao", possibilita o controle de paginação da consulta, permitindo a exibição da quantidade selecionada de registros por página. Se esta propriedade não for informada no modelo XML, o valor padrão aplicado é de "10".
  <web paginacao="5" construtorPesquisa="S">


  • O atributo "construtorPesquisa" permite habilitar ou desabilitar a funcionalidade “Construtor de Pesquisa” da PD Web. Por padrão, ele estará habilitado, com valor "S"; no entanto, para desativá-lo, é necessário definir esse parâmetro como "N".
  <web paginacao="5" construtorPesquisa="S">
A seguir se apresenta uma imagem do "Construtor de Pesquisa":


Modelo Pesquisa


Dentro do elemento <web> é criada uma seção <botoes>, onde cada botão é definido através de um “<item>” com os seguintes atributos:

  • O atributo "nome" recebe um valor que será usado como o nome do botão a ser exibido na tela.
  • O atributo "login" define se o token de autenticação será enviado automaticamente na solicitação da URL, possibilitando a realização do login sem interação manual no portal ou na URL acessada. Para ativar o login automático, deve-se atribuir o valor "S" ao atributo. Caso contrário, utilize o valor "N". Se o atributo não for informado, o valor padrão será "N", indicando que o login automático não será realizado.
  <item nome="Criar" visivel="S" login="S" url="~/ge/pessoa/cadastro" campos="Empresa,Fantasia" />	


  • O atributo "visivel" define se o botão será exibido ou não na tela. Para tornar o botão visível, deve-se atribuir o valor "S"; caso contrário, o valor deve ser "N".
  <item nome="Criar" visivel="S" url="~/ge/pessoa/cadastro" campos="Empresa,Fantasia" />	


  • O atributo “url” recebe o endereço da URL que deverá ser acionada quando o botão for pressionado. A Pesquisa Dinâmica terá comportamentos diferentes conforme a URL informada, veja os exemplos abaixo:
  <item nome="Criar" visivel="S" url="~/ge/pessoa/cadastro" campos="Empresa,Fantasia" />	
  • Caso seja necessário informar um portal diferente para o acesso, é possível utilizar uma chave dinâmica em vez de uma URL fixa. Isso elimina a necessidade de criar um modelo específico para cada base, permitindo maior flexibilidade. Por exemplo:
Se estiver na Pesquisa Dinâmica no Portal Indústria e desejar redirecionar para o Portal CRM ao clicar em um botão, basta utilizar a chave dinâmica correspondente ao portal. Essas chaves serão montadas automaticamente com base nas configurações de ambiente: 3159 (UrlSiteBase) e 3160 (UrlSiteComplemento):
<item nome="Criar" visivel="S" login="S" url="[PORTAL_CRM]/ge/pessoa/cadastro/c/"  />
Ao pressionar o botão, a chave dinâmica [PORTAL_CRM] será automaticamente substituída pelo endereço configurado no ambiente. Assim, o sistema fará o redirecionamento para a URL completa.
  • Veja as chaves disponíveis para os portais:
    • [PORTAL_APROVACOES]
    • [PORTAL_CIGAM]
    • [PORTAL_CLIENTE]
    • [PORTAL_CRM]
    • [PORTAL_ERP]
    • [PORTAL_FORNECEDOR]
    • [PORTAL_REPRESENTANTE]
    • [PORTAL_SERVICOS]
    • [PORTAL_VAREJO]
    • [PORTAL_CLIENTESERVICOS]
    • [PORTAL_COMPRAS]
    • [PORTAL_FINANCEIRO]
    • [PORTAL_INDUSTRIA]
    • [PORTAL_RH]
    • [BI]
    • [API]
    • [PESQUISA_DINAMICA]
  • Quando a URL iniciar com o caractere “~”, isso sinaliza que seu uso é interno à aplicação ou portal em funcionamento. Então ocorrerá um redirecionamento automático, no qual o caractere será substituído pelo endereço da aplicação.
Observe o exemplo a seguir: <item nome="Criar" visivel="S" url="~/ge/pessoa/cadastro" />. Quando pressionado, o botão fará a substituição automática do caractere “~” por “cigam-web8:14620/portalvarejo/”, correspondente ao endereço atual de exemplo do portal em execução. E posteriormente, ocorrerá o redirecionamento com o endereço completo. Veja o resultado na imagem abaixo:


Url Interna


  • Se a URL iniciar com “http://” ou “https://”, essa indicação implica que o destino da URL é externo à aplicação ou portal atual, ou seja, fora do contexto em execução. Isso resultará na abertura do endereço especificado na “url” em uma nova guia do navegador. Considere o exemplo a seguir: <item nome="Cigam" visivel="S" url="www.cigam.com.br" />. Então, assim que o botão correspondente for acionado, uma nova guia será aberta automaticamente, contendo o conteúdo da “url” informada. Veja esse exemplo na imagem abaixo:


Url Externa


  • Quando for necessário fornecer um valor específico como parte da rota de um endereço, como um código de empresa para executar uma operação de alteração no cadastro, pode-se empregar o formato “/[Campo]” para indicar qual campo será enviado nessa rota. Para que isso funcione adequadamente, é igualmente necessário informar o campo corresponde no atributo “campos”. Para compreender melhor esse conceito, vejamos o exemplo: <item nome="Modificar" visivel="S" url="~/ge/pessoa/cadastro/m/[Empresa]" campos="Empresa" />.
Neste contexto, o usuário selecionou a empresa “Cigam Software de Gestão”:


Cadastro Empresa


E ao acionar o botão “Modificar”, o sistema realizará a substituição do marcador “[Empresa]” presente no atributo “url” pelo valor contido na coluna “Empresa” do atributo “campos”, que, neste exemplo, é “000001”. Consequentemente, ocorrerá o redirecionamento com o endereço informado realizando essa substituição:


Cadastro Empresa


  • Quando não houver uma URL especificada para o atributo “url”, o botão será desativado, resultando em sua inoperância. Uma mensagem de erro será exibida para indicar essa condição, como ilustrado na imagem a seguir:


Url Não Informada


  • O atributo "campos" é responsável por enviar os campos e seus respectivos valores através dos parâmetros de URL, especificado pelo atributo “url”.
  <item nome="Criar" visivel="S" url="~/ge/pessoa/cadastro" campos="Empresa,Fantasia" />	
Neste exemplo, o usuário optou por selecionar o registro cuja empresa é “Cigam Software de Gestão”, e sua coluna “Empresa” tem o valor “000001” e, a coluna “Fantasia” com o valor “CIGAM”:


Modelo Pesquisa


Quando o botão “Criar” for clicado, a URL “~/ge/pessoa/cadastro” será invocada, passando as informações de “Empresa” e “Fantasia” como parâmetros:


Modelo Pesquisa


Observação: Se for preciso enviar todos os campos como parâmetros na URL, basta inserir um asterisco (“*”) no atributo “campos”. Veja o exemplo a seguir: <item nome="Cigam" visivel="S" url="www.cigam.com.br" campos="*"/>


Modelo Pesquisa


  • O atributo "parametros" efetuará o envio de uma requisição (POST) para a URL indicada, transmitindo o conteúdo do atributo “campos” como parâmetros de URL. Isso, como já foi demonstrado. No entanto, essa ação ocorrerá agora por meio de um método “POST”, com os valores derivados do atributo “parametros”, com as credenciais do “Usuario” que se encontra autenticado na aplicação. Para realizar isso, é necessário fornecer o formato “parâmetro” + “:” + “valor”. Caso haja mais de um parâmetro, utilize a vírgula (“,”) como separador. Confira o exemplo abaixo:
  <item nome="BI" visivel="S" url="cigam-web8:17530/BI/api/Integrador/ObterUrlIntegracao" 	 campos="Empresa" parametros="IdDashboard:d41dcb3f-bc4f-4b16-9dfe-7cf10f1a8888" />
Neste exemplo, ao pressionar o botão “BI”, uma requisição será enviada para o sistema de BI. Essa solicitação incluirá a empresa “Cigam Software de Gestão” como um parâmetro na URL. Além disso, será enviado como variáveis (data), as informações do código do usuário atualmente logado no sistema, bem como os parâmetros especificados no atributo “parametros”:


BI


Como resultado, o BI responderá com uma nova URL contendo o painel desejado, que, por sua vez, será aberto em uma nova guia do navegador:


BI


Ao montar o modelo corretamente e realizar o cadastro do perfil do usuário, a PD Web será exibida automaticamente.

Modelo Pesquisa


Importante: Lembrando que para a Pesquisa Dinâmica Web será permitido somente a exibição de até 1000 registros. Esse controle se faz necessário pois existe uma limitação da capacidade de armazenamento na sessão web.

Voltar ao início

Botões fixos na pesquisa dinâmica web

Os botões fixos sempre estarão habilitados, independente da configuração do modelo XML. Eles são os seguintes: “ᐳ", para carregar os próximos registros; "⨠", para carregar todos os registros; "Exportar" para exportar os dados; e “︾” para mostrar os filtros habilitados no Modelo da Pesquisa.

Modelo Pesquisa


  • O botão "Exportar" realiza a exportação de todos os registros que estão carregados na tela. Uma variedade de formatos de arquivos diferentes está disponível para a exportação, incluindo CSV, Planilha, PDF e JSON. Basta selecionar o formato desejado para concluir a operação.


Modelo Pesquisa


Selecionando o formato desejado, um arquivo é gerado na pasta de Downloads do navegador, tendo o mesmo nome do arquivo XML (modelo de pesquisa) para a geração do arquivo de exportação. No exemplo a seguir foi selecionado “CSV”:


Modelo Pesquisa


  • O botão “︾”, quando clicado, exibirá os filtros dinâmicos disponíveis para restringir os registros da tabela, de acordo com os valores inseridos nos campos. Esses campos de filtragem são apresentados com base na configuração prévia estabelecida no Modelo de Pesquisa (XML), através da tag <filtros>. Confira o exemplo abaixo:


Filtros


Uma vez ativado o botão, os filtros serão apresentados e os botões “Confirmar” (para aplicar a restrição da pesquisa) e “Limpar” (para redefinir os campos) serão habilitados:


Filtros Habilitados


No exemplo a seguir, o campo “Nome” foi filtrado com o valor “Cigam Software de Gestão” e, após pressionar o botão “Confirmar”, somente as empresas cujo nome corresponde ao filtro serão exibidas.


Filtro Ativo


Voltar ao início

Modelos de Filtros

Modelos de filtros de relatórios é uma funcionalidade da Pesquisa Dinâmica (PD) na qual permite criar um modelo no formato XML com as definições para montagem da tela de preenchimento de filtros e execução do relatório.
Essa opção está disponível para relatórios que geram arquivos de saída, preferencialmente no formato PDF, geralmente obtidos através de relatórios personalizados do Magic (Merge). Também é possível que outros formatos de arquivos sejam entregues por essa solução, bastando apenas que seja gerado na CDN.
É muito importante, definir um nome sugestivo para o modelo de modo que se possa identificar o que tal relatório processa. Esse nome será usado em todas as camadas que serão implementadas.

Voltar ao início

Criando o Modelo de Filtro

A criação e cadastro do modelo será feito mantendo o padrão já existente para os modelos de Pesquisas, do Olap e da PD Desktop, através do perfil do usuário.
Veja mais informação no tópico “4. Como fazer o cadastro/alteração dos Modelos Pesquisa Dinâmica (Desktop e Web) e Modelos de Filtros”.

Modelo Pesquisa


Como padrão, são utilizados apenas os principais filtros na Web, porém são fornecidos em cada um dos respectivos modelos de filtros o restante dos filtros disponíveis em forma de comentário para que o usuário possa incluir conforme suas necessidades.

Modelo Pesquisa


O elemento <filtros> existente para a PD Desktop, também será utilizado na funcionalidade de modelos de filtros. Além de alguns adicionais:

  • O atributo "empty" verifica se a modal de confirmação será exibida quando todos os campos estiverem em branco. Por padrão, este valor sempre virá como "N", permitindo que a modal seja exibida. Caso não seja informado, este continuará como o padrão "N", e para desativar a modal, deve-se ajustar o parâmetro como "Y".
  <filtros order="1" empty="N" model="Y">


Modelo Pesquisa


  • O atributo “model” verifica se o relatório é do tipo personalizado/merge ou não. Seus valores podem ser “N” para desabilitar o cadastro de modelos (usado para relatórios do tipo Gráfico), ou “Y” para ativar os modelos de impressão (engrenagem).
  <filtros order="1" empty="N" model="Y">


Modelo Pesquisa


O elemento <filtros> possui filtros individuais, cada um representado por um elemento <item>, contendo os atributos de tipo e parâmetro que incluirão todos os elementos já existentes da PD Desktop, com a diferença dos seguintes elementos:

  • O atributo “atrib” recebeu uma atualização que adiciona um novo formato de dado, o tipo “L”, permitindo que funcione como um Booleano/Checkbox. Assim, esse recurso possibilita marcar verdadeiro ou falso seu valor.
  <item nome="Aglutinar Saldo" atrib="L" paramName="AglutinaSaldo" />


  • O atributo "init" é utilizado para definir um valor inicial que será carregado automaticamente ao abrir um relatório. O valor deve ser informado de acordo com o tipo de filtro. No exemplo abaixo, o filtro é do tipo alfanumérico e o valor inicial definido é "01". Qualquer valor alfanumérico pode ser utilizado:
<item nome="Unidade de Negócio Inicial" atrib="A" paramName="UnidadeNegocioInicial" init="01" />
Nos filtros do tipo data, é possível utilizar comandos dinâmicos para preencher automaticamente os valores, facilitando a configuração dos parâmetros. Os comandos disponíveis são:
  • [DataAtual] – insere automaticamente a data atual.
  • [InicioMesAtual] – define a data do primeiro dia do mês atual.
  • [FinalMesAtual] – define a data do último dia do mês atual.
Também é possível realizar operações de soma ou subtração de dias com esses comandos. Por exemplo:
  • [DataAtual] - 7 – retorna a data de sete dias atrás.
  • [FinalMesAtual] + 3 – retorna a data três dias após o final do mês atual.
<item nome="Período Inicial" atrib="D" paramName="DataEmissaoInicial" init="[DataAtual] - 90" />
Além disso, é possível carregar valores diretamente de configurações do sistema. Para isso, utilize o seguinte formato:
  • [Config(NúmeroConfiguração)] – substitui o comando pelo valor associado à configuração informada.
<item nome="Unidade de Negócio Inicial" atrib="A" paramName="UnidadeNegocioInicial" init="[Config(21)]" />


  • O atributo "paramName" deve ser exatamente igual ao nome do parâmetro especificado no método da API que controla a execução do relatório. Todos os filtros já possuem nomenclaturas apropriadas para seus respectivos <item>.
  <item nome="Aglutinar Saldo" atrib="L" paramName="AglutinaSaldo" />


  • O atributo “zoom” terá um comportamento diferente da PD Desktop, onde será responsável por abrir uma modal (lupa), contendo os valores carregados de acordo com o método estabelecido pela API que foi atribuída ao campo. A forma de montar essa estrutura deve ser a seguinte: “/api/<area>/<controller>/<metodo>”. Por exemplo, a chamada da API para buscar as unidades de negócio cadastradas deverá ser realizada por meio da seguinte estrutura: “/api/genericos/ge/UnidadeNegocio/Buscar”.
Este atributo oferece três opções de filtros OData: 'top', 'select' e 'filter'. Cada um destes traz seus próprios comportamentos e padrões:
  • O “top” pode ser usado para qualquer valor desejado, sem limites. Porém, quanto mais registros houver, maior será o tempo de espera para que a modal abra. Se esse campo for deixado em branco, o valor padrão de 1000 será usado.
  • O “select” pode ser usado para indicar quais colunas serão exibidas na modal. Quando não for especificada nenhuma coluna, a coluna "Código" será mostrada como padrão na modal.
  • O “filter” quando informado, irá habilitar o botão de pesquisa que irá atualizar os registros de acordo com o que foi pesquisado/filtrado, criando uma requisição e carregando os valores atualizados. Desta forma, a pesquisa não mais se limitará aos 1000 registros padrão (ou valor escolhido) do modelo.
Se o “filter” não é informado, a pesquisa por novos registros é desativada.


A seguir está um exemplo de URL que inclui todos os parâmetros de filtro disponíveis:

  <item nome="Unidade de Negócio Inicial" atrib="A" paramName="UnidadeNegocioInicial"   zoom="/api/genericos/ge/UnidadeNegocio/Buscar?$top=1000&$select=Codigo,Nome,Fantasia&$filter=contains(Nome,[value])"   columnName="Código,Nome,Fantasia" />


Ao montar corretamente o atributo "zoom", uma modal será exibida de acordo com o endereço URL especificado:

Modelo Pesquisa


  • O atributo "columnName" deverá ser usado caso o atributo "zoom" esteja especificado, contendo o ‘select’ do OData. É obrigatório especificar o nome desejado para cada coluna respectivamente, separado por vírgulas e sem espaços em branco.
  <item nome="Unidade de Negócio Inicial" atrib="A" paramName="UnidadeNegocioInicial" zoom="/api/genericos/ge/UnidadeNegocio/Buscar?$top=1000&$select=Codigo,Nome,Fantasia&$filter=contains(Nome,[value])" columnName="Código,Nome,Fantasia" />


  • O atributo “range” deve ser usado quando se deseja criar um ‘input’ do tipo ComboBox. Os itens devem ser separados por vírgulas sem espaço em branco, como por exemplo:
  <item nome="Situação Item Pedido" atrib="A" paramName="SituacaoItemPedido" range="Todos,Pendente,Aberto,Entregue,Liquidado,Cancelado" />  


O valor que será enviado à API é a primeira letra de cada item. Portanto, se o "Todos" for selecionado, será enviado “T” para API.
Quando necessário enviar valores diferentes do que os exibidos, deve ser informado primeiramente o valor que deverá ser enviado. Depois disso, utilize o símbolo de hífen "-", como separador entre este valor e o que deverá ser exibido. Veja exemplo abaixo:
  <item nome="Situação Item Pedido" atrib="A" paramName="SituacaoItemPedido" range=" -Todos,NF-Nota Fiscal" />


Significando que, caso seja selecionado "Todos", será enviado um caractere em branco para a API, e caso seja selecionado "Nota Fiscal", será enviado "NF".

O elemento <web> existente para a PD Web, também será utilizado na funcionalidade de modelos de filtros. Para isso, deverá ser informado dentro do elemento <api> um elemento <controller>, no qual o atributo “endPoint” conterá o endereço da API que irá processar o relatório. Para uso com a API do CIGAM deverá ser usado só o caminho do relatório dentro da API, sem o endereço do servidor.

  <web>  
     <api>
     <controller endPoint="api/comercial/fa/pedido/ImprimirPedidosControle" />   
     </api>    
  </web>   

Voltar ao início

Emissão de relatórios nos portais CIGAM

Abaixo temos um vídeo explicando todo processo dos relatórios nos portais, incluindo os modelos de filtros, funcionalidades e parametrizações:

Como fazer o cadastro/alteração dos Modelos Pesquisa Dinâmica (Desktop e Web) e Modelos de Filtros

Os modelos criados inicialmente (originais) estão disponíveis na pasta %CIGAM_INSTAL%Modelos\Pesquisas\, para a Pesquisa Dinâmica e %CIGAM_INSTAL%Modelos\Filtros\, para os Modelos de Filtros.
Esses modelos podem ser facilmente adaptados e modificados conforme a necessidade de cada usuário. Se necessário, os usuários podem realizar essas alterações no 'Perfil de Usuário'. Veja item 4.2 “Como realizar a criação/alteração dos modelos”.

Quais as parametrizações necessárias para os modelos

É necessário que para poder usufruir do recurso o acesso seja pelo CIGAM11, caso contrário a visualização da funcionalidade não será a mesma.
Para que os acessos aos programas do Cigam funcionem corretamente é indicado que seja criado os modelos para o usuário em branco, sendo assim todos os usuários poderão visualizar o mesmo modelo, podendo ir implementando futuramente para usuários específicos se assim se fizer necessário.
No entanto, se não houver nenhum cadastro realizado, e o usuário tente acessar o recurso, seja Relatório ou Pesquisa Dinâmica, um cadastro automático dos modelos com usuário em branco será realizado. Veja item 4.3 “Como funciona a criação automática dos modelos”.

Voltar ao início

Como realizar a criação/alteração dos modelos

Todos os modelos deverão ser criados na pasta %CIGAM_INSTAL%Modelos\, dentre eles, os filtros deverão ser armazenados em \Filtros\<Módulo>\<NomePublico_DescritivoDeIdentificação.xml> e as pesquisas em \Pesquisas\<Módulo>\<NomePublico_DescritivoDeIdentificação.xml>.
Para criar/alterar um modelo para um determinado usuário é necessário acessar o programa de ‘Perfil de usuário’, no topo superior direito do CIGAM.
Ao clicar em Editar perfil é possível acessar a tela das configurações, podendo assim então vincular/modificar os modelos para o usuário. Caso o usuário tenha direito de ‘GERENTE DE SISTEMA’, esse poderá modificar os modelos dos demais usuários.

Modelo Pesquisa


Ao clicar em Modelos - ‘Pesquisas’, ‘Filtros’ ou ‘Olap’, podemos modificar/vincular os modelos para usuários específicos ou para o usuário em branco, podemos também filtrar no campo ‘Programa’ todos os programas, ou um específico conforme a implementação da pesquisa dinâmica, o campo ‘Usuário’ só terá a exibição da opção Todos quando o usuário logado tiver o direito de ‘GERENTE DE SISTEMA’.

Ao informar o modelo quando estiver criando, os demais campos serão preenchidos automaticamente, para o usuário logado. Caso o usuário tenha direito de Gerente de Sistema, esse poderá vincular uma pesquisa para cada usuário ou então fazer o vínculo para o usuário em branco, neste caso o modelo estará disponível para todos os usuários que não tiverem um modelo próprio marcado como padrão.

Neste exemplo, foi criado um Modelo de Filtro, para o usuário logado.

Modelo Pesquisa


Orientações: É indicado que ao vincular um modelo a um determinado usuário permaneça marcado o campo Padrão, para que o usuário ao acessar o conteúdo abra automaticamente sem que este necessite escolher ou indicar uma pesquisa.

Voltar ao início

Como funciona a criação automática dos modelos

A criação automática é possível quando no %CIGAM_INSTAL%, possuímos a pasta Modelos\Pesquisas\<Módulo>\"NomePublico_Descricao" e/ou Modelos\Filtros\<Módulo>\"NomePublico_Descricao". Com isso, ao abrir um programa que possua a chamada da pesquisa dinâmica ou relatório, é realizado o cadastro automaticamente.
Outra situação que ocorre na busca automática é quando não há presença da pasta dos modelos no %CIGAM_INSTAL%. Neste caso, a busca automática só pode ser realizada se o ambiente estiver configurado para conexão com o Disco Virtual.
Para acontecer essa busca de Modelos via Disco Virtual, é necessário que as seguintes configurações sejam informadas:

Ao baixar do Disco Virtual, criam-se imediatamente uma pasta e um modelo, com comportamento semelhante à busca padrão.

Disco Virtual

Voltar ao início

Manuais Referenciados

Versões

Versão 211104 RC

  1. Liberado a partir da OS 373456/330.

Versão 221107 Beta

  1. Liberado a partir da OS 778096/37
  2. Liberado a partir da OS 373456/357

Versão 221107 Patch 'c'

  1. Liberado a partir da OS 801551/2

Versão 230502

  1. Liberado a partir da OS 801551/2

Versão 231002

  1. Liberado a partir da OS 822627/4.
  2. Liberado a partir da OS 789385/1.

Versão 231002.d

  1. Liberado a partir da OS 373456/676.