...
As linhas do relatório devem conter no máximo 120 (cento e vinte) caracteres.
Tamanho dos campos (colunas) |
|
Cabeçalho do relatório |
|
Texto de ajuda |
|
Totalizadores |
|
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 |
...
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:
...
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" /> |
---|
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"
...
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 |
---|
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.
...
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) |
---|