### Conceitos Diversos

Layout FLOW

- Classificação: permite setar quebra de página para as classificações existentes.

- Grupos:

o Não é permitido um grupo ao lado do outro, apenas um abaixo do outro (validação). A ordem dos grupos deve ser salva em um atributo “seqüência”.

o Relacionados: não é permitido adicionar “campos” e “editores” em grupos relacionados.

- Cálculos / Totais

o Permitir calcular / totalizar pela classificação [Geral].

o Permite calcular / totalizar na mesma tabela (representar no editor, permitindo manipular as propriedades do cálculo / total) apenas para grupos múltiplos “Column-Label”.

o Se a representação do cálculo / total não couber na mesma linha, imprimir primeiramente os totais e na próxima linha os cálculos.

o Um cálculo só poderá ser representado na mesma tabela se não existir nenhum total para a mesma classificação que seja representada em grupo separado.

Layout FORM

- Classificação: Quebra de página obrigatória e calculada. A classificação principal da última tabela com relacionamento “PAI” do primeiro bloco deve possuir quebra de página = Sim. As outras classificações não poderão setar quebra de página.

- Grupo:

o Não é permitido que grupos múltiplos sejam do tipo “Side Label”.

o Múltiplo: o número de linhas deve ser representado no editor.

o Criação: é permitido criar totalizações / cálculos de uma mesma classificação em grupos diferentes.

- Cálculos / Totais: Não é permitido calcular / totalizar pela classificação [Geral].

- Campos: a opção “Exibir – Sempre / Primeiro / Último” não se aplica para formulários (sempre desabilitado).

- Query

o Permitido apenas dois níveis

o Nos blocos do segundo nível não é permitido que a tabela principal possua uma relação de EACH com outra tabela (apenas FIRST / LAST).

- Classificação

o Para cada tabela, é possível ter apenas uma classificação principal, ao qual será possível efetuar totalizações / cálculos (é a última classificação definida).

o As demais classificações são secundárias, utilizadas apenas para ordenação dos registros.

Exemplo 01 – OK

Tabela | Tabela Relac | Relação | Nível | Bloco | Quebra Página
Cliente | - | - | 1 | 1 | Não
Pedidos | Cliente | Pai | 1 | 1 | Sim
Itens Pedido | Pedido | Pai | 2 | 2 | Não
Títulos | Pedido | Pai | 2 | 3 | Não

Obs.: a última tabela “EACH” do primeiro nível necessita de quebra de página por registro.

Exemplo 02 – Não permitido

Tabela | Tabela Relac | Relação | Nível | Bloco
Cliente | - | - | 1 | 1
Pedido | Cliente | Pai | 2 | 2
Itens Pedido | Pedido | Pai | 2 | 2
Contatos Cliente | Cliente | Pai | 2 | 3

- O exemplo está incorreto pelo fato de que no bloco 2 do segundo nível, não é permitido que a tabela principal ORDER possui uma relação EACH (pai) com ORDER-LINE.

Exemplo 03 – Solução para necessidade do exemplo 02.

Tabela | Tabela Relac | Relação | Nível | Bloco | Quebra Página
Pedido | - | - | 1 | 1 | Sim
Cliente | Pedido | Filho | 1 | 1 | Não
Itens Pedido | Pedido | Pai | 2 | 2 | Não
Contatos Cliente | Cliente | Pai | 2 | 3 | Não

Obs.: a última tabela “EACH” do primeiro nível necessita de quebra de página por registro.

Para identificar manualmente qual a tabela que possui quebra de página, basta identificar qual a tabela que representa exatamente um registro por página.

- Exemplo 01 / 03: Cada página imprimirá um único Pedido. Um cliente poderá estar em várias páginas (vários pedidos).

Exemplo 04 – Solução 2 para necessidade do exemplo 02.

Tabela | Tabela Relac | Relação | Nível | Bloco | Quebra Página
Cliente | - | - | 1 | 1 | Não
Pedido | Cliente | Pai | 1 | 1 | Sim
Itens Pedido | Pedido | Pai | 2 | 2 | Não
Buffer-Cliente | Pedido | Filho | 1 | 1 | Não
Contatos Cliente | Buffer-Cliente | Pai | 2 | 3 | Não

Obs.: a última tabela “EACH” do primeiro nível necessita de quebra de página por registro.

Esboço Telas / Relatórios:

Observação: os modelos de relatórios representados abaixo foram levantados na fase de requisitos, identificando alguns casos onde devem ser atendidos pela nova release do DV. A definição e alteração das telas (interface) do DV serão detalhadas em uma Engenharia de OS separada.

- Relatório Flow – Listagem de 1 grupo de dados (column-label)

o Estrutura

§ Grupo cabeçalho (opcional)

§ Grupo para inserção dos textos / Campos

· Column-label

o Total Tabela (opcional)

§ Grupo Total (opcional)

§ Grupo rodapé (opcional)

o Observações

§ Limitação de tamanho XSL-FO (Page-Sequence)

o Exemplo

§ Classificação: Cliente / Pedido / Item (Obrigatório)

· Repetição Cliente (Sim / Não)

· Repetição Pedido (Sim / Não)

§ SubTotais (Obrigatório)

· Cliente (apenas Total Tipo Tabela)

· Pedido (apenas Total Tipo Tabela)

| # DataAtual |  | # Nome Empresa |  |  | # Página |
| Nome Cliente | Pedido | Descrição Item | Vlr Unitário | Qtde | Total |
| xxxxxxxxxxxxxxxxxx | 999.999 | xxxxxxxxxxxxxxxxx | 999.999.999,99 | >>>9 | 999.999.999,99 |
|  |  |  |  | <MAX> | <TOTAL> |
|  |  |  |  | QTDE MAX: | >>>>>>9 |
|  |  |  |  | TOTAL: | 999.999.999,99 |
| #MsgRodape |  |  |  | #HoraAtual |

- Relatório Flow – Listagem de 1 grupo de dados (side-labels)

o Estrutura

§ Grupo cabeçalho (opcional)

§ Grupo para inserção dos textos / Campos

· Side-Label

o Quebra Página (opcional)

§ Grupo Total (opcional)

§ Grupo rodapé (opcional)

o Observações

§ Limitação de tamanho XSL-FO (Page-Sequence)

o Exemplo

§ Classificação: Cliente / Pedido / Item

· Repetição Cliente (Sim / Não)

· Repetição Pedido (Sim / Não)

§ SubTotais

· Cliente (apenas Total Tipo Tabela?)

· Pedido (apenas Total Tipo Tabela?)

| # DataAtual |  | # Nome Empresa |  |  | # Página |
|  | Nome Cliente: | xxxxxxxxxx | Pedido: | 999.999 |  |
|  | Descrição Item: | xxxxxxxxxxxxxxxx |  |  |  |
|  | Valor Unitário: | 999.999.999,99 |  |  |  |
|  | Quantidade: | >>>9 |  |  |  |
|  | Total: | 999.999.999,99 |  |  |  |
|  |  |  |  | QTDE MAX: | >>>>>>9 |
|  |  |  |  | TOTAL: | 999.999.999,99 |
| #MsgRodape |  |  |  | #HoraAtual |

- Relatório Flow – Listagem de 2 ou mais grupos de dados

o Estrutura

§ Grupo cabeçalho (opcional)

§ N Grupos para inserção dos textos / Campos

· Column-label

· Side-Label

· Misto

§ N Grupos Totais (opcional)

§ Grupo rodapé (opcional)

| # DataAtual |  | # Nome Empresa |  |  | # Página |
| Nome Cliente: | xxxxxxxxxxxxxx | Endereço: | xxxxxxxxxxxxx |
| Nr. Pedido: | 999.999 |  | Vendedor: | xxxxxxxxxxxxx |
| Descrição Item |  |  | Vlr Unitário | Qtde | Total |
| xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | 999.999.999,99 | >>>9 | 999.999.999,99 |
|  |  |  |  | <MAX> | <TOTAL> |
|  |  |  |  | QTDE MAX: | >>>>>>9 |
|  |  |  |  | TOTAL PEDIDO: | 999.999.999,99 |
| Título | Parcela | Data Emissão | Dt Vencimento |  | Total |
| xxxxxxxxxxxxxxxxxx | >9 | 99/99/9999 | 99/99/9999 |  | 999.999.999,99 |
|  |  |  |  |  | <MAX> |
|  |  |  |  |  | <TOTAL> |
|  |  |  |  | PARCELA MAX: | >>>>>>9 |
|  |  |  |  | TOTAL TITULOS: | 999.999.999,99 |
|  | #MensagemRodape |  | #HoraAtual |

- Relatório Form – 1 grupo de dados (Column-label / Side-label)

o Estrutura

§ Semelhante ao Flow

· Sem Opção de Total Tabela

· Sem Opção de Sub-Totais

§ Side-label

· Quebra de Página automática por registro

- Relatório Form – 2 ou mais Grupos de dados

o Estrutura

§ Grupo cabeçalho (opcional)

§ N Grupos para textos / campos (Side-Labels)

§ N Grupos para inserção dos textos / campos (com repetição)

§ N Grupos Totais (opcional)

§ Grupo rodapé (opcional)

o Características

§ Repetição do grupo único em caso de quebra de página (opcional)

§ Verificar quando existem 2 ou mais grupos múltiplos (quebra de página)

| # DataAtual |  | # Nome Empresa |  |  |  | # Página |  |
| Nome Cliente: | xxxxxxxxxxxxxx |  |  |  | Endereço: | xxxxxxxxxxxxx |
| Nr. Pedido: | 999.999 |  |  |  |  | Vendedor: | xxxxxxxxxxxxx |
| Descrição Item | Vlr Unitário | Qtde | Total |  | Título | Parc | Vencto | Total |
| xxxxxxxxxxxxx | 999.999,99 | >>>9 | 999.999,99 |  | xxxxxxxxxx | >9 | 99/99/9999 | 999.999,99 |
|  |  |  |  |  |  |  |  | <MAX> |
|  |  | <MAX> | <TOTAL> |  |  |  |  | <TOTAL> |
|  |  | QTDE MAX: | >>>>>>9 |  |  |  | PARCELA MAX: | >>>>>>9 |
|  |  | TOTAL PEDIDO: | 999.999,99 |  |  |  | TOTAL TITULOS: | ######### |
|  | #MensagemRodape |  |  |  |  | #HoraAtual |  |

Classificação

A classificação não será utilizada para relatórios gráficos. Dessa forma, não será possível gerar classificações para a mesma (a opção deve ser desabilitada).

Propriedades dos Objetos

Verificar planilha de propriedades x Objetos.

## Definição da Página de Parâmetros

Trata-se de um formato pré definido de página utilizado para anexar ao relatório gerado os parâmetros (Seleção, variáveis,etc) utilizados na execução do mesmo. Basicamente o novo formato para esta página será como demonstrado abaixo:

Datasul Datasul S.A Teste de Parâmetros 01/02/2003 – 07:45:00

#### VARIÁVEL | VALOR
Variável temporária | teste

### PARÂMETROS

### SELEÇÃO

## CAMPO | ## VALOR INICIAL | ## VALOR FINAL
Cust-num | 1 | 10
Order-num | 0 | 99999
Ordered | 01/01/60 | 21/12/99

IMPRESSÃO

Destino : Terminal - c:\tmp\testeab.pdf

Execução: On-line

Layout: Padrão

Usuário: sop

1. Regras de Negócio: Segue abaixo um descritivo dos componentes necessários para a confecção de relatórios gráficos gerados pelo DataViewer, detectados na análise de requisitos:

a) Relatório

Cada programa definido no DataViewer é considerado um relatório. Até a release DV 2.03, cada classificação estava obrigatoriamente relacionada a um relatório. Dessa forma, uma listagem cuja necessidade é listar uma determinada informação por código ou por descrição, era necessária a construção de dois relatórios (cada relatório possuía apenas um layout a ser definido).

Para a release DV 2.04, cada relatório poderá ter um ou mais layouts relacionados a ele. Dessa forma, o layout desejado passa a ser uma informação parametrizada no relatório (.W) gerado pelo DV. Com isso, será possível construir um único programa “.W” para imprimir uma listagem por código ou por descrição (cada layout possuirá a classificação desejada).

Cada relatório possuirá a seguinte estrutura:

- Query

- Layout’s

- Seleção (semelhante a existente na release DV 2.03)

- Parâmetros (semelhante a existente na release DV 2.03)

b) Query

É um conjunto de itens (tabelas / totalizações) que representam a ordem e a relação com os demais itens da query. A query é uma informação relacionada ao relatório, sendo que a mesma será utilizada para todos os layout’s disponíveis.

Características da Query:

- Item

o Tabelas

o Totalizadores

- Relacionamentos (para itens do tipo Tabela)

o Pai x Filho (pode ter quebra de níveis)

o Tabela Estrangeira (mesmo nível)

c) Layout

É uma possibilidade (forma) de visualização de um relatório. Cada layout de um relatório poderá ter as suas próprias definições da impressão, utilizando a mesma query.

# Características do Layout

- Tamanho da página: pré-definidos (A3, A4, ...) e customizado

- Definição das Margens

- Orientação: retrato / paisagem

- Unidades de medida: pixel, milímetros, polegadas

- Classificação (única por layout), relacionada a estrutura da Query.

- Para cada layout será gerado um .XML que será utilizado pela biblioteca de funções

- Tipo Layout:

o Flow

§ Não possui posicionamento vertical fixo (limitado).

§ Listagem de grupos é seqüencial (a impressão é seqüencial).

o Form

§ Posicionamento fixo (quebra de página obrigatória)

§ Possibilidade de adicionar N grupos múltiplos lado a lado

§ A impressão não é seqüencial, necessariamente.

§ Permite imprimir objetos do tipo “Formulário”

d) Grupos

É um recurso utilizado pelo usuário para definir um conjunto de informações diferenciadas, em níveis distintos.

## Características do Grupo

- É um objeto com representação visível na edição de layout’s (frame)

- Conceitos

o Repetição (definição interna)

§ Grupos Múltiplos: Grupos de dados (tabelas) da Query definidos no último nível da estrutura

§ Grupo Simples: demais grupos de dados (tabelas) da Query que possuem nós filhos

o Tipos

§ Cabeçalho – Textos e Constantes do DV pré-processadas (Nr. Página / Data, etc.)

§ Rodapé – Textos e Constantes do DV pré-processadas (Nr. Página / Data, etc.)

§ Dados da Tabela

§ Total

o Posicionamento

§ Column-label (identifica a necessidade de usar Table no XSL-FO)

§ Side-label

- Características Adicionais conforme Tipo Layout

o Flow

§ Quebra de página por grupo (Sim / Não)

§ Possibilidade de totalização na própria tabela (mesmo grupo)

o Form

§ Quebra de Página

· Total à Imprime apenas na última página, quando acabar os itens múltiplos

· Grupo Simples à sempre repete os dados

· Número de linhas é solicitado ao usuário (representar graficamente no editor)

o Bordas (Tabela): indica se imprime as bordas da tabela ou não

o Grade (Tabela): indica se imprime a grade da tabela ou não

o Espaçamento

o Texto / Campos são pertencentes ao mesmo grupo (mesmo com column-labels)

- Classificação

o Cada grupo possui a sua classificação, podendo ser através de um ou mais atributos

o Para cada atributo da classificação, é possível efetuar sub-totais

e) Campos / Textos

### São objetos utilizados para representar campos de tabela, valores fixos, campos calculados, etc.

Características dos Campos/Objetos

- Posicionamento: coordenada X, Y

- Tamanho

o Largura (pode ser definido pelo Formato x Estilo Fonte)

o Altura (calculado automaticamente pelo Estilo da Fonte)

- Alinhamento Horizontal

o esquerda

o direita

o centro

- Gerenciador de Estilos: Permitir a combinação de cores / fontes para posterior reaproveitamento.

o Cores: Cor de Fundo / Frente

o Fontes: Tipo, Tamanho, Negrito, Itálico,...

- Quebra automática (editores) – é necessário verificar a viabilidade em XSL-FO

- Formato

- Condições para impressão: permitir criar uma condição para indicar se determinado campo será impresso ou não

- Condições para determinar uma propriedade (Exemplo: Cor à X > 10 = Vermelho; Cor à X <= 10, Azul) – ligados a estilos

- Possui Rótulo: se determinado objeto possui rótulo ou não

- Formulário: indica se o objeto faz parte do formulário ou não (caso faça parte, será parametrizado no layout de os objetos pertencentes ao formulário serão impressos).

f) Retângulos

#### Características dos retângulos

- Posicionamento

- Tamanho

- Cor

- Bordas Arredondadas

- Preenchido

- Tracejado

- Espessura

- Formulário: indica se o objeto faz parte do formulário ou não (caso faça parte, será parametrizado no layout de os objetos pertencentes ao formulário serão impressos).

g) Linhas

###### Características das linhas

- Posicionamento

- Tamanho

- Cor

- Horizontal / Vertical (apenas para Form)

- Formulário: indica se o objeto faz parte do formulário ou não (caso faça parte, será parametrizado no layout de os objetos pertencentes ao formulário serão impressos).

h) Imagem

###### Características da Imagem

- Localização imagem

o Caminho Fixo

o Valor Atributo / Variável

- Tamanho

- Posicionamento

- Formulário: indica se o objeto faz parte do formulário ou não (caso faça parte, será parametrizado no layout de os objetos pertencentes ao formulário serão impressos).

i) Características Adicionais do DV 2.04

a. Templates

b. Wizards

c. Código de Barras

d. Biblioteca de Funções: a impressão dos objetos será feita através de uma biblioteca de funções que será executada através de métodos chamados pelo relatório (RP.P) gerado pelo DV 2.04. Além disso, a biblioteca fará a leitura do layout correspondente e será responsável pela geração do arquivo FO. Segue abaixo algumas características da Biblioteca:

o Na execução do relatório, a BF terá que carregar o layout correspondente.

o Os métodos utilizados pelo relatório gerado terão sua composição simplificada, não necessitando parametrizar todas as informações de um objeto quando for necessário, visto que as mesmas serão carregadas pela BF inicialmente.

o Para o usuário do DV, existirá algumas limitações sobre a customização do relatório, não permitindo alterar o posicionamento dos objetos através da edição do fonte do relatório (será necessário editar o layout através do DV). Através de fonte livre, será possível:

§ Alterar as cores

§ Definir se imprime ou não um objeto

§ Alterar o valor a ser impresso em um campo

| Topo |

ttulotabela