# Formulários Relacionados

Basicamente, um formulário relacionado é um formulário dentro de outro formulário.

> Como criar um formulário relacionado?

Para criar um formulário relacionado, você deve criar um [formulário](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/chapter/formul%C3%A1rios "Formulários") comum, como qualquer outro. Além disso é necessário adicionar dois componentes adicionais:

- Ativar a opção de relacionamento com outros formulários:  
      
    ![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551110874990.png)
    
      
    Na definição básica do formulário, deve-se ativar a opção "*Pode ser usado como tabela filha de um outro formulário (Tabela de Formulário Relacionado)*". A opção "Abrir apenas através de um formulário pai", inibe que esse formulário seja aberto da maneira convencional, permitindo apenas que ele seja aberto através de outro formulário.
- Criar um campo de relacionamento com o formulário Pai:  
      
    Isso é fundamental para exista a relação entre os dois formulários. Para isso, é necessário criar um campo de autocompletar ou lista de seleção, com uma fonte dinâmica de dados, usando o formulário pai como fonte. Feito isso, escolhe-se um campo para que seja mostrado (de preferência o campo com maior importância desse formulário) e marca-se as seguintes duas opções:  
    
    - Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai: essa opção deve ser marcada, para que o sistema automaticamente preencha essa opção. como esse formulário, vai ser aberto através do formulário pai, o preenchimento fica sendo automático e transparente para o usuário.
    - Esconder campo quando o formulário for aberto através do formulário pai (opcional): como esse campo vai ser preenchido automaticamente pelo formulário, podemos ocultar quando o formulário for aberto pelo formulário pai.

No exemplo abaixo, temos um formulário chamado Clientes, que é um cadastro de pessoas jurídicas. Para cada cadastro, queremos incluir N contatos com nomes de pessoas físicas que trabalham nessa empresa.

Para fazer isso, criamos um formulário chamado Contatos. Nas definições básicas desse formulário, marcamos a opção "*Pode ser usado como tabela filha de um outro formulário (Tabela de Formulário Relacionado)*". Além dos campos necessários para o cadastro dos contatos, criamos um campo chamado Relacionamento\_Clientes, que é o campo que vai se relacionar com o formulário *Clientes* (formulário Pai). A configuração desse campo fica assim:

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551188642189.png)

Quando o formulário filho está configurado dessa forma, ele fica disponível para ser adicionado no formulário pai:

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551188621161.png)

O uso é transparente para o usuário, não percebendo essa amarração entre os formulários.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/319870425" width="760"></iframe>

Abaixo, as demais configurações de um formulário relacionado:

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Ordenação manual organizada pelo próprio usuário através de Arrastar e Soltar (Drag and Drop)

Permite ao usuário, ordenar as entradas do formulário relacionado.

[![reordenar_lista.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/reordenar_lista.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/reordenar_lista.gif)

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/332437405" width="760"></iframe>

### Customização da Lista

Essas opções, permitem configurar aspectos da lista do formulário relacionado que serão exibidos

#### Coluna Visível

Caso não seja necessário, uma ou mais colunas podem ser ocultadas da visualização dentro do formulário pai. Isso ajuda na organização dos dados que são mostrados na tela.

##### Prefixo

Adiciona um texto opcional antes do conteúdo do campo.

##### Sufixo

Adicional um texto opcional após o conteúdo do campo.

##### Informação no Rodapé

No rodapé, é possível exibir uma informação extra, baseada nos campos numéricos do formulário relacionado. São elas:

- Soma da Coluna  
    Faz a soma de todos os valores dessa coluna e exibe o total.
- Média da Coluna  
    Faz a média de todos os valores dessa coluna e exibe o resultado.  
      
    Caso uma dessas opções seja selecionada, é preciso selecionar uma [máscara](http://wiki.agilityflow.io/link/38#bkmrk-m%E3%A1scara) para o rodapé.  
    
    - Moeda (Real)
    - Decimal (1 casa decimal)
    - Decimal (2 casas decimais)
    - Decimal (3 casas decimais)
    - Decimal (4 casas decimais)
    - Decimal (5 casas decimais)

### Lista do formulário que podem ser apresentadas como Sub Lista

Caso o formulário relacionado, contenha outro formulário relacionado, essas opções serão apresentadas.

#### Já abrir com as Sub Lista expandidas

O formulário relacionado que pertence a esse, será apresentado com a lista expandida. Essa configuração dá a opção do usuário definir o comportamento padrão. Isso é útil, caso hajam muitos dados, e nem todos precisam estar visíveis no primeiro momento, deixando a leitura do formulário mais simples.

#### Sub Lista visível

Aqui o usuário seleciona quais formulários relacionados devem estar visíveis.

### Apresentar nessa tabela de dados apenas os dados que foram cadastrados através desse campo da tela

Essa opção permite ao usuário mostrar apenas os dados cadastrados através do formulário pai, e não os registros cadastrados pelo formulário filho, mesmo que quando feito, tenha sido colocado o relacionamento com algum registro do formulário pai.