GE - Como Fazer - Pesquisa Dinâmica

De CIGAM WIKI
Revisão de 17h41min de 24 de outubro de 2024 por Camila.Oliveira (discussão | contribs) (Como configurar a mensagem de "Deseja carregar todos os registros para ir para a última página?" na Pesquisa Dinâmica)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Voltar

Como Fazer > Utilidades/Diversos > Pesquisa Dinâmica

Índice

Pesquisa Dinâmica Desktop

Com a proposta de otimizar e facilitar as pesquisas do CIGAM, foi desenvolvido uma nova tela na versão do CIGAM11. Assim, a partir de um modelo pré-cadastrado em XML, será possível utilizar a pesquisa dinâmica. Na pesquisa dinâmica será possível criar filtros com campos macros e/ou por faixas. Nesta tela de pesquisa existem 4 funcionalidades disponíveis:

  1. Visão rápida - Mostra algumas informações conforme o modelo configurado.
  2. Visualizar - Abre a tela em modo de consulta no item selecionado.
  3. Modificar - Abre a tela em modo modificar no item selecionado.
  4. Criar - Abre a tela em modo de criação.

Para saber mais sobre o comportamento de cada botão, acesse Comportamento dos botões na Pesquisa Dinâmica.

Como montar a pesquisa dinâmica para utilização no CIGAM

A empresa deverá possuir um arquivo modelo xml e também um arquivo modelo rtf para a visão rápida, dentro da pasta %CIGAM_INSTAL%Modelos\Pesquisas\.
Exemplo:

 CG02075_Empresas.xml
 CG02075_Empresas.rtf

Para a montagem da pesquisa dinâmica é necessário montar o select com os filtros dos campos desejados considerando na montagem no xml os seguintes parâmetros:

 Parâmetros de sintaxe do banco de dados:
 
 {#}  MSSQL                          Oracle
 {0}  with (nolock)                  (branco)
 {1}  top 1                          (branco)
 {2}  %DBUSUARIO%.                   (branco)
 {3}  +                              ||
 {4}  substring                      substr
 {5}  (branco)                       from dual
 {6}  (branco)                       and rownum = 1
 {7}  cast(                          utl_raw.cast_to_varchar2(
 {8}  as varchar(max))               )
 {9}  Comentado            	     (branco)
 {10} (branco)               	     Comentado
 {11} /*               	             (branco)
 {12} */               	             (branco)
 {13} (branco)               	     /*
 {14} (branco)               	     */


Dentro do modelo XML deve ser apontado o caminho do modelo para a visão rápida. Pode ser apontado mais de um caminho, conforme o exemplo a seguir:

 <lupa>
 <modelo arquivo="CG02075_Empresas.rtf" />
 <modelo arquivo="CG02075_Empresas_PF.rtf" tag="Pessoa" valor="Física" />
 </lupa>

Voltar ao início

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.

Voltar ao início

Como configurar para iniciar aberto em faixa ou pesquisar

Dentro do arquivo xml poderá ser selecionado qual guia iniciará aberta.

Para isso, poderá ser definido o atributo “initFolder” na tag “select”. Os valores válidos para essa tag serão “P” e “F” para Pesquisar e Faixa respectivamente:

 <pesquisaPaginada>
 <select paginacao="0" initFolder="P">

Voltar ao início

Como configurar para navegar dentro dos cadastros

É possível navegar entre os cadastros através das teclas "Page Up" e "Page Down" no CIGAM11, podendo parametrizar o atributo acaoVisualizar como L para "locate/localizar" ou F para "range/faixa".

Para isso, devemos adicionar o atributo acaoVisualizar="L" na tag “select” do arquivo XML da Pesquisa Dinâmica:

 <pesquisaPaginada>
 <select paginacao="0" initFolder="P" acaoVisualizar="L">

Observação: Esse atributo está disponível apenas para o botão <Visualizar>. Caso esse atributo não esteja informado no modelo, ao clicar no botão <Visualizar> irá entrar em "range/faixa" sobre o registro selecionado.

Voltar ao início

Como configurar o duplo clique na Pesquisa Dinâmica

O duplo clique sobre um dos registros listados pela Pesquisa Dinâmica, bem como o uso da tecla 'Enter', pode ser parametrizado para definir o modo de abertura do registro. Este comportamento pode ser definido através do atributo “duploClick” na tag “select” e os valores possíveis são “V”, “M” e “C”, respectivamente, para Visualizar, Modificar e Criar. Exemplo:

 <pesquisaPaginada>
 <select paginacao="0" initFolder="P" duploClick="M">

Voltar ao início

Como configurar a mensagem de "Deseja carregar todos os registros para ir para a última página?" na Pesquisa Dinâmica

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á mais exibida na Pesquisa Dinâmica após a consulta com filtros.

PD mensagemUltimaPag.jpg


Para habilitar a mensagem, é necessário editar o modelo informando o seguinte parâmetro sugerirCargaTotal="S"

Exemplo:

 <pesquisaPaginada>
 <select paginacao="0" initFolder="P" sugerirCargaTotal="S">

Observação: Se o modelo utilizado não contiver esse parâmetro ou se ele estiver definido como "N", a mensagem não será exibida.

Importante: 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

Voltar ao início

Como Utilizar dados nos filtros

Os dados de filtros deverão ser utilizados da maneira que são informados pelo usuário. Se um filtro tem uma formatação, tal formatação deve ser considerada no local que será usado. Por exemplo, se um filtro é do tipo alpha, na consulta Sql deverá ser colocado o valor desse filtro entre aspas.
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 um filtro é do tipo data, sem a formatação no padrão DateToDbString, a instrução Sql deverá ser diferente para Sql Server e Oracle, tal como Convert(datetime,'[value]',103) ou To_date('[value]', 'dd/MM/yyyy') respectivamente.
No mesmo exemplo citado antes, para poder manter o mesmo modelo de pesquisa para ambos os bancos de dados, tais variações poderiam ser substituídas pelo uso da opção “DB” no atributo “validate” do filtro do tipo data.

 <filtros order="order by">
 <item nome="Vencimento" atrib="A" where="lc.Dt_vencimento = '[value]'" format="00/00/0000" validate="DB" />
 </filtros>

Voltar ao início

Como ordenar um filtro

Podemos indicar por qual campo do select os dados serão ordenados para ser exibidos. Para isso, dentro do xml é possível colocar o order by 1 dentro do select na tag item. O número junto no order by indica a coluna do select que irá ser ordenada.

 <faixa order="order by 3">
 <item nome="Divisão" select="select Divisao, Descricao_divis from /*nl<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 /*nl<GEESTADO>*/ {0} order by 2" where="e.Uf = '[estado]'" display="Nome_estado"/>
 </faixa>

Voltar ao início

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

O valor inicial vem sempre definido como 'Todos' pois é o valor default, e não é possível fazer essa personalização.

Filtro Pesquisa Dinâmica


Voltar ao início

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.

Voltar ao início

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

Voltar ao início

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.

Voltar ao início

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">

Voltar ao início

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.

Voltar ao início

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.

Filtros Dinâmicos


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

Voltar ao início

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" />

Voltar ao início

Montagem da estrutura do grid da Pesquisa Dinâmica

Todas as colunas que são selecionadas na área de select do modelo de pesquisa dinâmica precisam obrigatoriamente constar na área do grid no modelo, visando a consistência do mesmo.

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

Em caso de divergência dessas duas sessões do modelo a seguinte mensagem irá ser disparada ao usuário:

Mensagem da Pesquisa Dinâmica

Voltar ao início

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.

Quando "headerFilter" é definido como "Y", os usuários têm a capacidade de aplicar filtros aos resultados exibidos nessa coluna, permitindo um refinamento da visualização.
Por outro lado, quando "headerFilter" é configurado como "N", os filtros de coluna não são mostrados aos usuários, resultando em uma exibição direta dos dados sem opções de filtragem específicas para essa coluna.

 <grid>
   <item nome="Nome" headerFilter="Y" />
   <item nome="Fantasia" headerFilter="N" />
   <item nome="Município" headerFilter="Y" />
   <item nome="CEP" format="00000-000" />
 </grid>

O filtro de coluna é aplicado sobre os registros carregados em tela, proporcionando uma maneira eficaz de refinar os resultados exibidos. Para realizar uma filtragem abrangente que englobe todos os registros disponíveis, o procedimento envolve clicar no ícone 'Última página'. Ao fazer isso, todos os registros serão carregados de forma completa, permitindo a aplicação precisa do filtro desejado. Essa abordagem assegura que nenhuma informação relevante seja deixada de fora do processo de filtragem, resultando em análises mais completas e resultados mais precisos para o usuário. Portanto, a combinação da funcionalidade do filtro de coluna com a ação de carregar todos os registros através do ícone 'Última página' se revela crucial para uma utilização eficiente e abrangente do sistema.

Filtro de Coluna

Voltar ao início

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.

Voltar ao início

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.

Voltar ao início

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="A"


  • 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="D"


  • atrib="L" = é um dado Booleano/Checkbox. Possibilita marcar verdadeiro ou falso seu valor;

Exemplo:

 <item nome="Aglutinar Saldo" atrib="L" paramName="AglutinaSaldo" />


atrib="L"


  • 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]'" />


atrib="N"

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.
  <item nome="Criar" visivel="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" />	
  • 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 "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 211104RC

  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 789385/1.
  2. Liberado a partir da OS 822627/4.

Versão 231002.d

  1. Liberado a partir da OS 373456/676.