Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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

...

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

...

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.

...

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;