Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Atual »

Sumário

1 Conceito

O Editor de Relatórios é uma ferramenta que possibilita criar e modificar os relatórios existentes no sistema. Com ele é possível criar a tela de parâmetros para o relatório e informar como o sistema deve buscar e demonstrar os dados do relatório.

Para a criação de relatórios no AutoSystem é indispensável um conhecimento básico de linguagem SQL.


2 Padrões para os modelos de Relatórios

As linhas do relatório devem conter no máximo 120 (cento e vinte) caracteres.


Tamanho dos campos (colunas)

  • código » devem ter 6 dígitos;
  • códigos de barra » devem ter 13 caracteres;
  • descrição(nome da pessoa, nome do produto, obs, etc…) » devem ter em torno de 25 caracteres porcentagem » devem ter no máximo 6 caracteres; (Ex.: 113,45);
  • valor » recomendável 12 caracteres quantidade » recomendável 10 caracteres;
  • data » sempre 8 ou 10 caracteres. (Ex.: 10/05/06, 10/05/2006).

Cabeçalho do relatório

  • todos os filtros da tela que forem obrigatórios deveram aparecer no cabeçalho do relatório. Estes filtros devem estar centralizados logo abaixo do nome do relatório

Texto de ajuda

  • SEMPRE colocar um texto sobre a descrição do relatório;
  • neste texto deve conter: o que contem o relatório, para que serve o relatório, descrição do funcionamento correto do relatório, etc…

Totalizadores

  • todas as colunas que trazem informações de quantidade e valor devem possuir um totalizador por quebra e um totalizador geral.


3 Tela

Na aba Tela é possível indicar que parâmetros serão solicitados ao usuário para a exibição do relatório. Todos os campos criados poderão ser utilizados mais tarde para construir a consulta SQL que irá criar o relatório.

Para definir que informações serão solicitadas para o usuário, deve ser utilizado o campo "Desenho da tela". Este campo deve ser preenchido com uma estrutura XML, semelhante a uma página HTML
Exemplo:


<quadro titulo="Parâmetros">
<procura id="empresa" modelo="empresa" />
<campo id="data" tipo="data" titulo="Data" />
</quadro>


Para incluir dois campos na mesma linha é necessário usar o parâmetro '<caixa'>:

<caixa>
<campo id="data_emis" modelo="periodo" titulo="Emissão entre"/>
<campo id="turno" tipo="numero" titulo="Turno" />
</caixa>


3.1 Tipos de Objetos de Tela

Abaixo, a relação de objetos que podem ser utilizados para construir uma tela de filtro para um relatório:


3.1.1 Procura

O tipo de campo procura permite que o usuário informe ou selecione um registro em uma tabela do banco de dados. É utilizado para quando se deseja informar um cliente, um produto, uma conta, um motivo de movimentação, etc.

A sintaxe da tag procura é:

<procura id="aaa" modelo="bbb" requerido="sim" valor_padrao="ccc" condicao="ddd"/>


Onde:

id

Nome do campo. Será utilizado posteriormente para montar a consulta SQL

modelo

Formato pré-definido de procura. Veja tabela a seguir

requerido

Indica se o campo deve ser preenchido pelo usuário

titulo

Titulo do objeto check

valor_padrao

Valor inicial do campo. Deve ser informada uma consulta SQL

condicao

Condição SQL para exibição dos registros


Modelos pré-definidos de procura:

empresa

Relação de Empresas (postos)

pessoa

Relação de todas as pessoas cadastradas

cliente

Relação de Clientes

funcionario

Relação de Funcionários

fornecedor

Relação de Fornecedores


usuario

Relação de Fornecedores

conta

Relação de Contas

produto

Relação de produtos

grupo_produto

Relação de Grupos de Produtos

grupo_pessoa

Relação de Grupos de Pessoas

deposito

Relação de Depósitos

motivo_movto

Relação de Motivos de Movimentação

cargo

Relação de Cargos

cst

Relação de CST's

tributacao

Relação de Tributação

subgrupo_produto

Relação de Subgrupo


Exemplo de procura com condição simples

Para exibir apenas contas que iniciam com 1.3.*:

<procura id="conta" modelo="conta" condicao="codigo like '1.3.%'" />


Também é possível colocarmos um valor de outro campo para a condição da procura, vejamos:


Exemplo de procura com condição dependente do valor de outro parâmetro

Para exibir apenas subgrupos de produto de um grupo de produto selecionado, ou exibir todos os subgrupos de produto se não houver grupo selecionado, deve-se fazer desta forma:

<procura id="grupo" modelo="grupo" titulo="Grupo" />
<procura id="subgrupo" modelo="subgrupo" condicao="(grupo = $grupo or $grupo is null)" titulo="Subgrupo" />


Exemplo de procura dinâmica

Para criar uma procura dinâmica, deverá ser informado o modelo com o valor "dinamico", uma tabela ou o SQL para buscar os registros, e também as chaves que serão utilizadas. Pode ser informado o nome das colunas também. As chaves devem ser no mínimo três, onde a primeira trata-se do valor a ser utilizado na origem de dados, o segundo e o terceiro serão as colunas exibidas e também o valor retornado a janela.

<quadro titulo="Parâmetros">
<procura id="cliente" modelo="cliente"/>
<procura id="pessoa" modelo="dinamico" sql="select * from pessoa" chaves="grid,codigo,nome,,tipo" titulo="Pessoa"/>
<procura id="uf" modelo="dinamico" tabela="unidade_federativa" chaves="codigo,sigla,nome" valor_padrao="select 42" titulo="UF"/>
<procura id="municipio" modelo="dinamico" sql="select m.codigo, m.nome, ms.uf from municipio m join micro_regiao mc on (m.micro_regiao=mc.codigo) join meso_regiao ms on (mc.meso_reg
<procura id="bico_abastecimento" modelo="dinamico" tabela="bico_abastecimento" chaves="codigo,bico,quantidade,preco_unit" titulo_colunas="Bico,Qtade,Preco" titulo="Bico Abast"/>
</quadro>


3.1.2 Campo 

O tipo de objeto campo permite que o usuário informe um número, uma data ou um texto livre qualquer.

A sintaxe da tag campo é:

<campo id="aaa" tipo="bbb" modelo="ccc" requerido="sim" valor_padrao="ddd" />


Onde:

id

Nome do campo. Será utilizado posteriormente para montar a consulta SQL

tipo

Tipo de dados do campo: numero, data ou valor

modelo

Formato pré-definido de campo. Veja tabela a seguir

titulo

Titulo do objeto check

requerido

Indica se o campo deve ser preenchido pelo usuário

valor_padrao

Valor inicial do campo. Deve ser informada uma consulta SQL

expandido

Indica se o campo deve ser mostrado expandido na tela, valor padrão "Não", exceto para campos tipo texto


Modelos pré-definidos de campo:

periodo

Exibe dois campos, um para a data inicial e outro para a final. Se o id do campo for vencto, por exemplo, estarão disponíveis na consulta SQL as variaveis vencto_ini e

vencto_fim

3.1.3 Check

O tipo de campo check permite que o usuário informe uma opção(SIM/NÃO).

A sintaxe da tag check é:

<check id="aaa" titulo="Permite clientes bloqueados" valor_padrao="select true" />


Onde:

id

Nome do campo. Será utilizado posteriormente para montar a consulta SQL

titulo

Titulo do objeto check

valor_padrao

Valor inicial do campo. Deve ser informada uma consulta SQL


3.1.4 Seleção

O tipo de campo selecao exibe uma lista que permite ao usuário selecionar a opção desejada.

A sintaxe da tag selecao é:

<selecao id="aaa" titulo="bbb" origem="ccc" requerido="sim" valor_padrao="ddd" />


Onde:

id

Nome do campo. Será utilizado posteriormente para montar a consulta SQL

origem

Consulta SQL que define o conteúdo da lista. Se retornar 2 colunas, a primeira será o valor do campo e a segunda o valor exibido

requerido

Indica se o campo tem seu preenchimento obrigatório. Caso não for obrigatório, haverá uma linha em branco como primeira opção da seleção

titulo

Titulo do campo

valor_padrao

Valor inicial do campo. Deve ser informada uma consulta SQL


Exemplos de origem

Lista de grupos de produtos:

SELECT grid, nome

FROM grupo_produto

ORDER BY nome


Lista genérica:

VALUES (1, 'Clientes em atraso'), (2, 'Clientes em dia'), (3, 'Todos os cliente')


Exemplos para "valor_padrao"

O parâmetros valor_padrao permite indicar uma sugestão para os campos tipo procura e campo. Neste parâmetro deve ser informada uma consulta SQL que retorne o valor a ser exibido.
A seguir, alguns exemplos de consultas:

Informação a ser exibida

Consulta SQL

Data atual

select current_date

Data ontem

select current_date - 1

Data amanhã

select current_date + 1

Inicio do mes atual

select to_char(current_date, 'YYYY-mm-01')::date

Final do mes atual

select to_char(current_date + interval '1 month', 'YYYY-mm-01')::date - 1

Conta "Valores a Receber"

select conta from conta_config where chave='VALORES A RECEBER'

Conta 1.3.01

select '1.3.01'

Empresa local

select empresa from empresa_local limit 1


Especialmente para campos onde "modelo" for "periodo", deve ser utilizado no parâmetro valor_padrao uma consulta SQL que retorne duas colunas. No exemplo a seguir uma consulta que retorna duas colunas com a data de hoje:

SELECT CURRENT_DATE, CURRENT_DATE


ou senão para retornar o início e o final do mês corrente:

SELECT to_char(CURRENT_DATE, 'YYYY-mm-01')::DATE, to_char(CURRENT_DATE + INTERVAL '1 month', 'YYYY-mm-01')::DATE - 1


4 Relatórios


4.1 Origem dos dados (SQL)

Esta é a sessão principal de um relatório, onde deve ser informada a consulta SQL utilizada para obter os dados do relatório. Para utilizar os campos da tela do relatório informe o caractere $ (cifrão) e o nome do campo.
Exemplo: se na tela existir um campo com id="empresa", informar $empresa para se referir ao conteúdo do campo:

SELECT codigo, nome FROM funcionario
WHERE (CASE WHEN $empresa IS NULL THEN TRUE ELSE empresa = $empresa END);


Ao processar a consulta SQL, caso o conteúdo informado pelo usuário para o campo empresa seja 1, a seguinte consulta será executada no banco de dados:


SELECT codigo, nome FROM funcionario WHERE empresa=1::int8


5 Condições Opcionais

Como regra do AutoSystem, quando um campo não é preenchido em um filtro significa que o filtro não deve ser aplicado. Para realizar esta operação em SQL, será necessário utilizar o comando CASE. O exemplo a seguir retorna uma lista de produtos, leva em conta que na tela foi definido um campo "procura" com "id" igual a grupo, que é opcional:


SELECT codigo, nome
FROM produto
WHERE (CASE $grupo IS NULL THEN TRUE ELSE grupo = $grupo END)


Os filtros para os tipos de dados em SQL são:


Inteiro:

(CASE WHEN $grupo IS NULL THEN TRUE ELSE grupo = $grupo END)


Texto:

(CASE WHEN $cidade = '' THEN TRUE ELSE cidade = $cidade END)


Data: 

(CASE WHEN $data IS NULL THEN TRUE ELSE DATA = $data END)


6 Gráficos

Para gerar gráficos é necessário que a consulta SQL retorne 2 colunas, sendo a primeira um texto e a segunda um valor, para a correta visualização do gráfico.

O nome padrão das colunas é Rótulo e Valor. Se quiser utilizar outro nome, o nome da coluna (no SQL) deve iniciar com nomecoluna_, o titulo será o que vier após o "_" (underline).

Para os gráficos de linhas, pode-se retornar uma consulta SQL com várias colunas, sendo a primeira um texto e as demais um valor. O nome da coluna será o mesmo retornado pelo SQL.


7 Visualização no Menu

Para que os relatórios desenvolvidos apareçam no menu principal do módulo Gerencial do AutoSystem, basta salvar o arquivo .xml na pasta "relatorio/custom" do AutoSystem. Caso existam relatórios salvos nesta pasta, um novo menu chamado "Relatórios" será exibido após o menu "Gráficos", constando todos os relatórios existentes. O nome de exibição será o que foi informado no campo Título do relatório.


8 Galeria SQL

Abaixo, exemplos de sentenças SQL utilizadas para obter dados diversos no sistema:

Venda por combustível

SELECT p.nome, SUM(l.quantidade) AS quantidade, SUM(l.valor) AS valor FROM produto p JOIN lancto l ON (p.grid=l.produto)
WHERE p.tipo='C' AND l.operacao='V' AND l.empresa=$empresa AND
l.data BETWEEN $data_ini AND $data_fim
GROUP BY p.nome;



  • Sem rótulos