KEPLIN Docs

Agrupamentos, gráficos e subrelatórios

Agrupar por um campo com cabeçalho e rodapé próprios, somar com agregados, desenhar gráficos no papel e embeber um relatório dentro de outro.

Uma banda de detalhe sozinha só sabe imprimir uma linha por registo. O que transforma uma listagem num documento são três peças: os agrupamentos, que partem a lista em blocos com título e total; os gráficos, que resumem o que a lista diz; e os subrelatórios, que trazem para dentro do documento um conjunto de dados completamente diferente.

Continuamos no relatório Oportunidades por conta da app Gestão de Clientes.

Agrupamentos

Um agrupamento parte a lista sempre que o valor de um campo muda. Cada nível traz duas bandas próprias: um cabeçalho, que sai quando o valor muda, e um rodapé, que sai quando o valor acaba.

É isto que faz o documento "cada conta, com as oportunidades dela por baixo e o total no fim".

Criar um agrupamento

  1. Na coluna da esquerda, clica no + da secção Agrupamentos.
  2. Selecciona a banda Cabeçalho: … que apareceu na superfície de desenho.
  3. No painel da direita, na secção Agrupamento, escolhe o Campo.

As propriedades de um agrupamento
As propriedades de um agrupamento

Propriedade O que faz
Campo "Campo do conjunto principal cujo valor define o grupo. As linhas são ordenadas por ele." Aceita caminhos com ponto para navegar relações: conta.nome.
Ordem Crescente ou Decrescente.
Repetir cabeçalho "Quando o grupo passa para a página seguinte, o cabeçalho dele sai outra vez no topo."
Página nova por grupo "Cada grupo começa numa página só dele." É o que se liga para imprimir uma factura por folha.

As bandas de grupo aparecem na superfície de desenho encaixadas à volta do detalhe, com uma indentação que mostra a que nível pertencem. Podes ter quantos níveis quiseres — por ano, depois por cliente, depois por factura.

Dica

Um campo dentro de um cabeçalho de grupo lê a primeira linha do grupo. É isso que faz o nome da conta aparecer por cima das oportunidades dela. Fora das bandas de grupo (no cabeçalho do relatório, por exemplo) não há linha nenhuma e o campo sai vazio.

Totais com o Agregado

O elemento Agregado é uma conta feita pelo motor: Soma, Média, Contagem, Mínimo ou Máximo sobre um campo de um conjunto.

Onde o pões decide o que ele conta:

Onde está O que soma
No rodapé de um grupo Só as linhas daquele grupo — o total daquela conta.
No rodapé do relatório Todas as linhas — o total geral.
Na banda de detalhe, sobre um conjunto ligado Só as linhas daquela linha — o total daquela factura.

Na Contagem, o campo pode ficar vazio: conta linhas, não valores.

Gráficos

Um gráfico no papel usa o mesmo motor e as mesmas opções do widget de gráfico dos ecrãs. No PDF é desenhado no servidor e entra em vector, não como imagem — um gráfico rasterizado ficaria borrado ao imprimir ou ao ampliar.

O rodapé do relatório com o gráfico e o total geral
O rodapé do relatório com o gráfico e o total geral

Arrasta Gráfico da paleta para uma banda e configura-o:

As propriedades de um gráfico
As propriedades de um gráfico

Propriedade Notas
Tipo de gráfico Barras, Linha, Área, Tarte / Donut, Dispersão, Radar, Funil, Gauge (medidor) ou Mapa de calor.
Conjunto de dados De onde vêm as linhas. Vazio usa o conjunto principal.
Campo de categoria (eixo X / fatias) "Campo que define o eixo horizontal (ou as fatias)."
Campos de valor "Campos numéricos a desenhar. Sem campo de série, cada um é uma série." Acrescentam-se em Acrescentar valor.
Campo de série (agrupamento) "Campo que separa as séries. Com ele, pivota-se pelo primeiro campo de valor."
Legenda e Posição da legenda Topo, Fundo, Esquerda ou Direita.
Valores nos pontos Escreve o número em cima de cada barra ou ponto.

Conforme o tipo, aparecem ainda Empilhado, Linhas suaves, Horizontal e Raio interior do donut (%).

No exemplo, o gráfico do Rodapé do relatório tem categoria fase e valor valor: uma barra por fase do pipeline, com a soma dos negócios de cada uma.

Nota

Um gráfico numa banda de grupo desenha os dados daquele grupo — um gráfico por conta. Numa banda de detalhe desenharia um gráfico por linha impressa, o que quase nunca é o que se quer.

Subrelatórios

Um subrelatório é outro relatório desenhado dentro deste. Serve para o que o agrupamento não faz: o agrupamento parte um conjunto; o subrelatório traz outro inteiro.

O caso clássico: numa conta-corrente, as facturas em aberto e os pagamentos — duas listas de tabelas diferentes na mesma folha. No nosso exemplo, o cabeçalho de cada conta traz a lista de contactos dela, antes das oportunidades.

O cabeçalho do grupo com um subrelatório lá dentro
O cabeçalho do grupo com um subrelatório lá dentro

Desenhar o filho

O relatório embebido é um relatório normal, com vida própria — abre-se, desenha-se e pré-visualiza-se como qualquer outro. A diferença é que declara parâmetros para receber o contexto de quem o embebe.

O relatório Contactos da conta, o filho deste exemplo
O relatório Contactos da conta, o filho deste exemplo

No exemplo, Contactos da conta tem um parâmetro conta (Número, obrigatório) e o conjunto de dados dele filtra conta_id por esse parâmetro. As bandas que não interessam num documento embebido — cabeçalho de página, rodapés — ficam desligadas.

Embeber

  1. Arrasta Subrelatório da paleta para um cabeçalho, um rodapé ou uma banda de grupo.
  2. Em Escolhe o relatório, escolhe o filho.
  3. Para cada parâmetro dele, diz de onde vem: Campo da linha (lê o campo da linha onde o subrelatório está) ou Valor fixo.

Atenção

Um subrelatório não pode estar na banda de detalhe, e isso é impedido, não avisado: "faria uma consulta por cada linha impressa" — mil facturas, mil idas à base. Põe-no num cabeçalho, num rodapé ou numa banda de grupo, onde as ocorrências são poucas.

Repetições com os mesmos parâmetros partilham a leitura, por isso um subrelatório no cabeçalho de grupo custa uma consulta por grupo, não por linha.

Códigos de barras e imagens

Dois elementos que completam um documento de negócio:

Código de barras — o valor pode vir de um campo (o normal numa factura) ou ser fixo:

Campo Notas
Tipo Code 128 aceita texto e números. EAN-13 são 12 ou 13 dígitos e verifica o dígito de controlo. QR aceita qualquer texto — é o das facturas.
Campo "Campo com o valor a codificar. Vazio usa o valor fixo abaixo."
Valor fixo Usado só quando não há campo escolhido.
Mostrar o valor Imprime o valor por baixo das barras (não se aplica ao QR).

Imagem — a Origem escolhe de onde vem:

Origem O que se preenche
Ficheiro da app Um ficheiro carregado na app (por exemplo icons/logo.svg).
Endereço Um URL.
Campo dos dados "Campo com a imagem: URL, caminho no assets, ou o binário em base64."

O Ajuste decide o que acontece quando a imagem não tem a forma da caixa: Caber, Preencher ou Esticar.

Perguntas frequentes

O grupo não agrupa nada — sai tudo seguido. O campo do agrupamento tem de ser do conjunto principal, e as linhas são ordenadas por ele. Se o campo estiver vazio em muitas linhas, elas caem todas no mesmo grupo.

O total do grupo está a somar tudo. O agregado está fora da banda do grupo. Põe-no no rodapé desse grupo — é a posição que define o âmbito da conta.

O gráfico sai em branco no PDF mas vê-se no desenho. Na superfície de desenho, um gráfico sem dados mostra uma amostra de exemplo. No PDF só há o que os dados derem: confirma o Conjunto de dados, o Campo de categoria e que há pelo menos um Campo de valor escolhido.

Posso pôr um subrelatório dentro de outro subrelatório? Sim, com a mesma regra: nunca na banda de detalhe. Mas pensa duas vezes — dois níveis de embebimento tornam o documento difícil de prever, e muitas vezes o que se queria era mais um nível de agrupamento.