GE - Como Fazer - Pesquisa Dinâmica
Voltar
Como Fazer > Utilidades/Diversos > Pesquisa Dinâmica
Índice
- 1 Pesquisa Dinâmica Desktop
- 1.1 Como montar a Pesquisa Dinâmica no CIGAM
- 1.2 Estrutura do arquivo XML
- 1.2.1 1. Cabeçalho XML
- 1.2.2 2. Comentário inicial - Parâmetros de sintaxe do banco de dados
- 1.2.3 3. Elemento <pesquisaPaginada>
- 1.2.4 4. Elemento <select>
- 1.2.4.1 ℹ️ Configurando para iniciar aberto em "Faixa" ou "Pesquisar"
- 1.2.4.2 ℹ️ Como configurar para navegar dentro dos cadastros
- 1.2.4.3 ℹ️ Como configurar o duplo clique na Pesquisa Dinâmica
- 1.2.4.4 ℹ️ Como configurar a mensagem de "Deseja carregar todos os registros para ir para a última página?"
- 1.2.5 5. Elemento <grid>
- 1.2.6 6. Elemento <lupa>
- 1.2.7 7. Elementos <faixa> e <filtros>
- 1.2.8 8. Elemento <mosaicos>
- 1.3 Como será iniciado a Pesquisa Dinâmica
- 1.4 Como visualizar em formato de mosaico na pesquisa dinâmica
- 1.5 Como utilizar uma fonte de dados em xml
- 1.6 Como configurar um valor inicial para um filtro
- 1.7 Como habilitar o limitador de registro
- 1.8 Como ordenar uma listagem
- 1.9 Como criar uma seleção de filtros dinâmicos
- 1.10 Atributo VALIDATE
- 1.11 Comando CONCAT na cláusula WHERE
- 1.12 Qual o comportamento dos botões na Pesquisa Dinâmica
- 1.13 Qual a função do atributo ATRIB na Pesquisa Dinâmica
- 2 Pesquisa Dinâmica Web
- 3 Modelos de Filtros
- 4 Como fazer o cadastro/alteração dos Modelos Pesquisa Dinâmica (Desktop e Web) e Modelos de Filtros
- 5 Manuais Referenciados
- 6 Versões
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.xmlCG02075_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
<?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).
2. Comentário inicial - Parâmetros de sintaxe do banco de dados
<!--
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.
3. Elemento <pesquisaPaginada>
<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 seleção, grid, modelos de impressão, filtros e mosaicos.
4. Elemento <select>
<pesquisaPaginada> <select paginacao="0" initFolder="P" > ... </select> </pesquisaPaginada>
- O elemento
<select>dentro de<pesquisaPaginada>define os parâmetros iniciais da consulta, além de conter a consulta SQL que será executada.paginacao="0"= controla a paginação no carregamento inicial (0 = sem paginação).initFolder=""= define a guia que será aberta inicialmente: "P" = Pesquisar, "F" = Faixa.acaoVisualizar=""= define a navegação ao usar o botão Visualizar: "L" = localizar, "F" = faixa.duploClick=""= define a ação ao dar duplo clique ou pressionar Enter: "V" = Visualizar, "M" = Modificar, "C" = Criar.sugerirCargaTotal=""= controla se a mensagem "Deseja carregar todos os registros para ir para a última página?" será exibida: "S" = sim, "N" = não.
- 💡 Importante:
- Dentro do
<select>, deve-se definir a consulta SQL completa, incluindoSELECT,FROM,WHEREe quaisquer joins ou subconsultas necessárias. O sistema irá processar essa consulta e exibir os resultados na tela da Pesquisa Dinâmica.
- Dentro do
ℹ️ 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
initFolderna tag<select>. Os valores válidos são:"P"→ Pesquisar"F"→ Faixa
- Exemplo configurando para iniciar na guia Pesquisar:
<pesquisaPaginada> <select paginacao="0" initFolder="P" > ... </select> </pesquisaPaginada>
- Exemplo configurando para iniciar na guia Faixa:
<pesquisaPaginada> <select paginacao="0" initFolder="F" > ... </select> </pesquisaPaginada>
- É 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
acaoVisualizarna 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
duploClickna 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.
- Habilitando a mensagem
- Para que a mensagem seja exibida, é necessário adicionar o parâmetro
sugerirCargaTotal="S"na tag<select>do modelo XML:
- Para que a mensagem seja exibida, é necessário adicionar o parâmetro
<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.
- Se o modelo utilizado não contiver esse parâmetro ou ele estiver definido como
5. Elemento <grid>
<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:
- Se houver divergência entre as colunas definidas no
ℹ️ Como personalizar os filtros de colunas dentro da Pesquisa Dinâmica
- O atributo
headerFilterdefine 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.
6. Elemento <lupa>
<pesquisaPaginada> <lupa> <modelo arquivo="CG02075_Empresas.rtf" /> <modelo arquivo="CG02075_Empresas_PF.rtf" tag="Pessoa" valor="Física" /> </lupa> </pesquisaPaginada>
- 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>
<pesquisaPaginada> <faixa nome="Pessoa" > ... </faixa> <faixa order="order by 3" > ... </faixa> <filtros order="order by 3" > ... </filtros> </pesquisaPaginada>
- Dentro de
<pesquisaPaginada>, os elementos<faixa>e<filtros>são usados para organizar e limitar os resultados da pesquisa dinâmica.- Faixa:
- Delimita ou agrupa registros conforme um critério específico.
- Pode ter um atributo
orderpara definir qual coluna doselectserá usada para ordenação.
- Filtros:
- Define critérios de filtragem para refinar os resultados.
- O atributo
orderfunciona da mesma forma que em<faixa>, indicando a coluna usada para ordenar.
ℹ️ Como ordenar uma faixa ou filtro
- 💡 Dica:
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 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"/> <item nome="UF" select="select distinct Codigo_estado as estado, Nome_estado from /*n1<GEESTADO>*/ {0} order by 2" where="e.Uf = '[estado]'" display="Nome_estado"/> </faixa> </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.
ℹ️ 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')
- SQL Server:
- 💡 Uso do
validate="DB"para compatibilidade- O atributo
validate="DB"permite que o mesmo XML funcione em diferentes bancos de dados, ajustando automaticamente a conversão de datas.
- O atributo
- 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>
8. Elemento <mosaicos>
<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.
- 1.
| 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.
- 2.
| 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
maxRenderpara 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.
- Se a quantidade de registros for maior que
- 1. Carregamento
- 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.
- Se o número de mosaicos ≤
- 2. Refinamento da pesquisa
- 3. Busca
- O filtro de busca atua apenas sobre os textos exibidos nos labels dos mosaicos.
- 3. Busca
- 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).
- 4. Seleção e ações
Como será iniciado a Pesquisa Dinâmica
Após a parametrização os filtros são apresentados conforme o xml vinculado. Ao selecionar um segundo filtro, o outro será fechado.
Como visualizar em formato de mosaico na pesquisa dinâmica
Dentro do xml poderá existir a tag “mosaicos” para definição dos mosaicos para os registros.
Se for encontrada essa tag no parser, estará visível na barra de topo um botão para alternar a exibição entre grid e mosaicos.
Cada registro irá renderizar um mosaico.
Na definição dos mosaicos, os atributos da tag principal definem o mosaico já as tag’s filhas definem as informações a serem colocadas dentro do mosaico.
<mosaicos width="400" height="160" color="204;204;255" maxRender="300" clickAction="M" allPages="false"> <label display="@Nome Completo" x="100" y="10" size="12" color="50;50;50" /> <label display="@Fantasia" x="101" y="36" size="10" color="50;50;50" /> <label display="Telefone:" x="100" y="60" size="8" color="63;72;204" /> <label display="@Fone" x="130" y="76" size="25" color="63;72;204" /> <picture file="Foto" x="5" y="5" width="90" height="90" circular="true" /> </mosaicos>
Atributos da tag “mosaicos”:
- “width” e “height” definem o tamanho do mosaico.
- “color” é informado com o RGB da cor desejada
- “maxRender” informa o número máximo de mosaicos que devem ser renderizados. Neste caso, se a consulta de registros retornar muitos registros, somente serão desenhados o número de mosaicos definidos nessa opção.
- “clickAction” define o evento padrão quando o mosaico for clicado. Os valores válidos são “M” e “V” para modificação e visualização respectivamente.
- “allPages” como “true” informa que antes de exibir os mosaicos deverá carregar todos os registros da pesquisa (equivalente a um click no botão “Última página”)
Tags filhas da tag “mosaicos”:
- “label”: escreve um label no mosaico. Essa tag tem os seguintes atributos:
- “display” é a informação que será escrita no label. Se começar com “@”, a informação será buscada na respectiva coluna da consulta que contém o dado. Do contrário, ou seja, se não iniciar com “@”, será escrito o valor informado.
- “x” e “y” são as coordenadas dentro do mosaico em que o label irá iniciar
- “size” é o tamanho da fonte para escrever o label
- “color” é a cor da fonte do texto que label será escrito
- “picture”: insere imagens no mosaico. Essa tag tem os seguintes atributos:
- “file” é o nome da coluna que contém o caminho do arquivo que contém a imagem
- “x” e “y” são as coordenadas dentro do mosaico em que a imagem irá iniciar
- “width” e “height” definem o tamanho da imagem
- “circular” se “true”, informa se a moldura da imagem deve ser circular. Do contrário, utiliza a moldura retangular.
Dica: O RGB das cores será informado por uma string separada por “;” (ponto é vírgula). Para visualizar o RGB de maneira simples e rápida poderá ser utilizado o Paint do Windows.
Funcionamento
Se o número de mosaicos for maior que o valor informado na tag “maxRender”, será renderizado esse número máximo e uma mensagem informativa será colocado no topo do container de mosaicos. Essa mesma regra vale caso um refinamento da pesquisa retorne um número de mosaicos maior que essa tag.
Se o número de mosaicos não for maior que o valor informado na tag “maxRender”, o refinamento da pesquisa poderá ser feito no textbox da parte superior da tela sendo que a busca é feita a cada caractere digitado.
Do contrário, ou seja, se o número de mosaicos for maior que o valor informado na tag “maxRender”, a busca será feita somente após teclar enter depois de digitar o valor no textbox.
O cuetext, que é o texto de background do textbox de pesquisa, informará quando é necessário teclar enter para aplicar o refinamento da pesquisa.
A pesquisa de refinamento irá considerar somente as informações que estão nos label’s dos mosaicos.
Ao clicar com o botão direito do mouse sobre o mosaico, esse será marcado e os botões de “Selecionar” “Visualizar” e “Modificar” serão ativados caso estivem visíveis. A marcação de mosaicos será individual, o que faz com que a marcação anterior seja desfeita quando marcar um novo.
Como utilizar uma fonte de dados em xml
Geralmente os dados da pesquisa irão vir de uma consulta de bancos de dados. Mesmo assim, para casos específicos, poderá ser utilizado o recurso que carrega as definições de colunas a partir de um arquivo .xsd e os dados de um arquivo .xml
Para utilização, na tag “select” não deve ser definida nenhuma instrução de banco de dados como valor e informar as tags “xml” e “xsd” como os nomes de arquivos respectivamente.
<pesquisaPaginada> <select paginacao="0" xml="f:\pp.xml" xsd="f:\pp.xsd" />
Diferentemente do modelo de Visão rápida, que o nome de arquivo deverá ser informado sem seu path completo, esses valores/nomes de arquivos deverão estar com seu nome completo pois eles provavelmente estarão numa pasta diferente do modelo pois sofrem alteração no seu conteúdo.
O atributo “userTempFolder” quando informado e com o valor “true” irá considerar que a localização dos arquivos xml e xsd será a pasta temporária do usuário no Windows.
Poderá ser conferido o valor dessa pasta através da variável de ambiente TEMP do Windows: WIN + R para abrir o Run e digitar %TEMP%.
O Windows abrirá o Windows Explorer posicionando na respectiva pasta.
Os arquivos xml e xsd seguem o padrão de exportação de DataSet’s do .Net Framework, e podem facilmente serem gerados pelos métodos WriteXml e WriteXmlSchecma da classe DataTable (fazer isso com um DataTable populado para facilitar a criação dos modelos).
Para a implementação das demais funcionalidades da pesquisa, deverá ser observado o seguinte:
- Sempre que fazer referência ao nome de um campo num filtro, não deverá ser usado o prefixo com a tabela/apelido do campo. Esse recurso é exclusivo de fontes de dados baseadas em instruções SQL.
- Os atributos usados nos filtros, como por exemplo “where” e “order by” continuam a ser suportados, mas vale a mesma regra de não usar prefixo conforme visto no item anterior.
- Nome de campos com espaço no meio do nome deverão ser informados com colchetes no início e fim. Exemplo “[nome da empresa]”. Essa é uma particularidade do recurso quando não se usa fonte de dados baseadas em instruções SQL.
- A paginação da fonte de dados xml sempre será completa, ou seja, todos os registros do xml serão carregados. Não há como ser eficiente nessa funcionalidade pois é necessário abrir o arquivo xml para ser parseado e nesse caso, já que conteúdo do arquivo já está em memória, basta “aproveitar” e trazer os registros para a grid.
- Não será dado suporte aos filtros por faixa que usam uma fonte de dados secundária (geralmente um sub-select ou uma outra consulta de bancos de dados) pois seria necessário ter dois ou mais xml’s com seus xsd’s para isso. Neste caso, não será tratado o preenchimento dos itens caso encontrada essa definição no modelo (sempre ficará com somente a opção “Todos”).
Na parte de filtros podemos incluir o zoom de campo, colocando o número da tabela e o número do seu campo correspondente.
Exemplo: zoom="[número da tabela];[número do campo]"
No cadastro de empresas ficaria nesse formato:
<filtros order="order by e.Cd_empresa"> <item nome="CNPJ/CPF" atrib="A" where="e.Cnpj_cpf like '%[value]%'" /> <item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'" /> <item nome="Empresa" atrib="A" where="e.Cd_empresa = '[value]'" zoom="2;1" /> </filtros>
O zoom de campo pode ser consultado através do xml que consta em: %CIGAM_INSTAL%Apoio/Geral/tabelas_cigam.xml
Como configurar um valor inicial para um filtro
Nos filtros podemos informar um valor inicial configurado através do atributo “init” onde o valor desse pode ser informado conforme o tipo de filtro.
Exemplo:
<item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'" init="MARIA" />
Para campos data é possível usar o comando [dataAtual] para setar a data atual no valor inicial e fazer cálculos baseados em dias.
Exemplo de aplicação da data atual diminuindo 365 dias, ou seja, irá considerar registros de um ano atrás:
<item nome="Aniversario" atrib="D" where="e.Dt_aniversario >= '[value]'" format="00/00/0000" init="[dataAtual] - 365" validate="DB" />
Como resultado terá os dados já filtrados na inicialização da pesquisa e o valor disponível no filtro para alteração.
Como habilitar o limitador de registro
[Versão 211104RC 1] Para implementar limitador de registros em uma pesquisa dinâmica é necessário informar a tag: limiteRegistros, conforme exemplo a seguir:
<pesquisaPaginada> <select paginacao="0" initFolder="P" limiteRegistros="100">
Como ordenar uma listagem
[Versão 221107Beta 1] Para realizar uma listagem em ordem alfabética de componentes que possuem acentuação, é necessário incluir NLSSORT no order by dentro do select na tag item.
<faixa order="order by 3">
<item nome="Divisão" select="select Divisao, Descricao_divis from /*nl<GEDIVISAO>*/ {0} order by NLSSORT(nome_coluna, 'NLS_SORT=LATIN_AI')
Essa alteração se faz necessária apenas para Oracle, ao realizá-la deve se incluir também uma pesquisa para SQL sem o NLSSORT, assim o mesmo modelo pode ser utilizado para os dois tipos de bancos.
Como criar uma seleção de filtros dinâmicos
[Versão 221107Beta 2]
Na opção Filtros Dinâmicos comando Ctrl + R dentro do grid na pesquisa dinâmica, é possível adicionar filtros para pesquisa no lado esquerdo.
É possível incluir um campo por vez, não sendo possível a seleção múltipla, caso seja necessária a remoção dos campos basta utilizar o botão Remover todos, ao fechar a pesquisa e abrir novamente a pesquisa retornará para seu estado padrão.
A partir da [Versão 221107.c 1] [Versão 230502 1] ao incluir um campo dos Filtros Dinâmicos do tipo numérico é possível informar decimais nesses campos. A partir dessa versão o sistema aceita 'virgula'.
Atributo VALIDATE
Quando o campo de NF tiver mais de 10 dígitos na pesquisa de NF da pesquisa dinâmica de lançamentos, deve ser configurado na tag filtros o atributo validate="A".
O atributo VALIDATE é uma validação para o que se informa no campo:
- Validate = “DB” (data) - para campos do tipo data;
- Validate = “N” (números) - apenas para NF com até 10 dígitos;
- Validate = “A” (alfa) - para NF com 10 ou 12 dígitos.
Para configurar o modelo financeiro deve-se localizar o arquivo "Lancamento.xml" dentro da pasta %CIGAM_INSTAL%Modelos\Pesquisas\Financeiro\.
Exemplo:
<filtros order="ORDER BY 2 DESC"> <item nome="NF" atrib="N" where="lc.Nf = '[value]'" format="999999999999" validate="A" />
Comando CONCAT na cláusula WHERE
É importante ressaltar que a utilização de concatenação na cláusula WHERE pode ter implicações de desempenho, pois pode afetar a capacidade do banco de dados de utilizar índices ou otimizar a consulta. Portanto, não recomendamos o uso desta forma.
Recomenda-se que as consultas utilizadas na Pesquisa Dinâmica/PD sejam elaboradas por usuários com conhecimento em Banco de Dados (BD), pois requer alguns cuidados que se não tomados, podem resultar em baixa performance.
Qual o comportamento dos botões na Pesquisa Dinâmica
[Versão 231002 1] As funcionalidades dos botões 'Visualizar', 'Modificar' e 'Criar' são as seguintes:
- Botão Visualizar:
- Ao ser acionado, abre o registro selecionado em modo "Pesquisar".
- Não permite a transição para o modo "Modificar".
- Não permite a transição para o modo "Criar".
- Entra em "range/faixa" sobre o registro selecionado, mas respeita o valor informado no modelo da Pesquisa Dinâmica, caso esteja definido no parâmetro 'acaoVisualizar', sendo L para "locate/localizar" e F para "range/faixa".
- Botão Modificar:
- Ao ser acionado, abre o registro selecionado em modo "Modificar".
- Permite a transição para o modo "Criar".
- Permite a transição para o modo "Pesquisar".
- Após modificar o registro e retornar à tela da Pesquisa Dinâmica, o sistema mantém o foco no registro anteriormente selecionado antes de acionar o botão 'Modificar'.
- Entra em "range/faixa" sobre o registro selecionado.
- IMPORTANTE: Ao passar para o modo "Criar", o novo registro estará fora do "range/faixa" e não será possível visualizá-lo imediatamente após a criação. Ele estará visível apenas ao retornar ao grid da Pesquisa Dinâmica. No entanto, caso esteja no modo "Criar", é possível fazer a transição de volta para o modo "Pesquisar", retornando ao registro previamente selecionado no grid da Pesquisa Dinâmica antes de acionar o botão "Modificar".
- Botão Criar:
- Ao ser acionado, abre o registro selecionado em modo "Criar".
- Permite a transição para o modo "Modificar".
- Permite a transição para o modo "Pesquisar".
- Após criar um registro e retornar à tela da Pesquisa Dinâmica, o cursor/linha selecionada será posicionado no início do grid.
- Ao criar um registro e retornar à tela da Pesquisa Dinâmica, o novo registro será exibido no grid da PD. Sua posição no grid será determinada pelo "Order by" definido no modelo da PD, e a linha de seleção localizada no topo do grid.
Qual a função do atributo ATRIB na Pesquisa Dinâmica
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 pesquisa dinâmica.
O atributo ATRIB deve ser utilizado para definir o tipo de dado que poderá ser colocado no campo. Quando utilizado como filtro de texto, retorna ou atribui o tipo de dado:
- atrib="A" = é um dado alfa. Possibilita informar um conjunto de caracteres com caracteres alfabéticos (A-Z) e numerais (0-9);
Exemplo:
<filtros order="order by 3"> <item nome="Nome" atrib="A" where="e.Nome_completo like '%[value]%'"/>
- atrib="D" = é um dado date. Possibilita informar uma data específica;
Exemplo:
<filtros order="order by 3"> <item nome="Aniversario" atrib="D" where="e.Dt_aniversario >= '[value]'" format="00/00/0000" init="[dataAtual]" validate="DB" />
- atrib="L" = é um dado Booleano/Checkbox. Possibilita marcar verdadeiro ou falso seu valor;
Exemplo:
<item nome="Aglutinar Saldo" atrib="L" paramName="AglutinaSaldo" />
- atrib="N" = é um dado numérico. Possibilita informar um conjunto de numerais (0-9) decimais, podendo incluir negativos [Versão 231002 2]
Exemplo:
<filtros order="order by 2 desc"> <item nome="Valor" atrib="N" where="lc.Valor = '[value]'" />
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”.
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":
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]
- Veja as chaves disponíveis para os portais:
- 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:
- 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:
- 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”:
- 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:
- 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:
- 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”:
- 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:
- 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="*"/>
- 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”:
- 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:
Ao montar o modelo corretamente e realizar o cadastro do perfil do usuário, a PD Web será exibida automaticamente.
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.
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.
- 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.
- 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”:
- 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:
- 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:
- 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.
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.
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”.
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.
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".
- 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">
- 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).
- 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">
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.
- 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.
- 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.
- Se o “filter” não é informado, a pesquisa por novos registros é desativada.
- 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”.
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:
- 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>
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”.
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.
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.
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.
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:
- ‘GE - AM - 2174 - Endereço web de atualizações CIGAM’;
- Essa configuração deve ter o endereço a ser extraído e dentro dela deve constar:
- 1 - Pasta modelos/relatórios
- 2 - Um arquivo lista_relatórios.txt
- 3 - Modelo de Relatório com nome público e descrição descompactado.
- Essa configuração deve ter o endereço a ser extraído e dentro dela deve constar:
- ‘GE - AM - 2175 - Usuário para acesso de atualizações CIGAM’;
- ‘GE - AM - 2176 - Senha para acesso de atualizações CIGAM’.
Ao baixar do Disco Virtual, criam-se imediatamente uma pasta e um modelo, com comportamento semelhante à busca padrão.
Manuais Referenciados
Versões
Versão 211104RC
- ↑ Liberado a partir da OS 373456/330.
Versão 221107 Beta
Versão 221107 Patch 'c'
- ↑ Liberado a partir da OS 801551/2
Versão 230502
- ↑ Liberado a partir da OS 801551/2
Versão 231002
Versão 231002.d
- ↑ Liberado a partir da OS 373456/676.








