# Fórmula

Com o campo de fórmula, é possível fazer cálculos com valores dos campos disponíveis no formulário, além de utilizar valores fixos na composição da fórmula.

O campo de fórmula faz dois tipos de cálculos: com campos numéricos e com campos com data/hora. É na definição do campo que seleciona-se o tipo de cálculo.

### 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.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

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

### Máscara

É a forma que o sistema utiliza para mostrar ao usuário, o conteúdo do campo de texto. Isso facilita a visualização da informação por parte do usuário. Por exemplo, é muito fácil ver o telefone "(11) 98765-4321" do que "11987654321".

#### Tipo de máscara

Existe uma série de máscaras disponíveis no agilityflow.

##### Número

> Como criar um campo numérico?

Um número não deixa de ser um texto. Portanto, para criar um campo numérico basta criar um campo textbox e aplicar uma máscara de número.

- Tipo de Número  
      
    
    - Inteiro: o campo não aceita "," ou "." no seu conteúdo. Ao digitar um desses símbolos, o sistema ignora a digitação. Por exemplo, digitando "1,5", o sistema ignora a vírgula e preenche "15". Caso o usuário cole o valor "1,5541", o sistema ignora a vírgula e o conteúdo à direita da vírgula, aceitando o valor "1".
    - Moeda (Real): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (1 casa decimal): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (2 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (3 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (4 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (5 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;

### Definição da Fórmula

São as configurações para os cálculos.

#### Tipo de Cálculo

Ao escolher o tipo, serão mostrados os campos disponíveis para serem usados.

##### Fórmula Numérica

é possível fazer as 4 operações aritméticas (soma, subtração, divisão e multiplicação) nesse campo. Para isso, basta selecionar um ou mais campos com a máscara do tipo numérico e escrever a fórmula.

<div id="bkmrk-"><iframe allowfullscreen="allowfullscreen" frameborder="0" src="https://player.vimeo.com/video/316087003"></iframe>

</div>##### Fórmula por data/hora

Fórmula por data/hora: nessa opção, é possível subtrair um campo do tipo data/hora, por outro campo do tipo data/hora. Como resultado, é possível obter:

- Número de Dias
- Número de Meses
- Número de Anos
- Número de Semanas
- Número de Horas:Minutos

<p class="callout info">Para fórmula com datas, só é possível fazer a operação de subtração.</p>

#### Fórmula

É a composição da fórmula. Basta começar a digitar o nome dos campos que estão mostrados logo abaixo e compor a fórmula. Esses campos são mostrados, de acordo com a máscara dos demais campos disponíveis do formulário. Além dos campos, é possível fazer a utilização dos operadores matemáticos.

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

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.