Configuração dos Campos Detalhes sobre como customizar os campos de um formulário, de acordo com a sua necessidade. Textbox O campo textbox é o tipo de campo mais usado no agilityflow. Isso é devido à sua versatilidade graças às inúmeras máscaras disponíveis. Apesar do nome, é com o campo textbox que iremos armazenar números também. Ao criar um campo textbox no formulário, é solicitado escolher um grupo de informações e informar um nome de apresentação. Caso seja necessário, as configurações abaixo, estão disponíveis para o campo: Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. Tipo Para o campo textbox, é possível definir um subtipo. São eles: Campo de Texto Simples É o tipo padrão. Permite que o usuário insira qualquer tipo de informação de texto, em uma linha única. Campo de Texto Multi Linha Similar ao Campo de Texto Simples, porém, com mais de uma linha. Ao selecionar essa opção, é possível escolher quantas linhas ficarão visíveis ao usuário. Campo com criptografia MD5 (Ex: Senha) Funciona para armazenar textos, que ao digitados, serem ocultados tendo seus caracteres substituídos. Ao selecionar esse subtipo, não é possível definir uma máscara . Campo Auto Numérico (Número Sequencial preenchido automaticamente) Nesse campo, o próprio agilityflow preenche o campo com um número sequencial. Esse valor, começa em 1 e vai se somando conforme se criam novos registros do formulá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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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: Preenchimento Padrão O preenchimento padrão, permite ao sistema, sugerir o preenchimento do campo. Isso é útil, quando o usuário, na maioria das vezes, vai preencher esse campo da mesma forma. Isso economiza o tempo do usuário no preenchimento das informações. Mesmo que haja definido um preenchimento padrão, o campo fica disponível para que o usuário altere esse valor. Preencher Quando Nessa opção, o usuário define em que momento o sistema faz o preenchimento padrão do campo. São duas opções: No carregamento inicial (On PageLoad) Ao abrir o formulário, o campo já é preenchido automaticamente.  Na alteração do valor de um determinado campo (On Change) O campo não é preenchido com o valor padrão, até que um campo seja alterado. É possível definir qual campo ao ser alterado, será o gatilho para o preenchimento padrão. Valor Padrão É o valor que será preenchido por padrão nesse campo. 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; CPF Insere "." e "-" de acordo com o CPF brasileiro. Esse campo, apenas separa os dígitos e não faz validação se o CPF é válido ou não. Pra isso, é necessário incluir uma validação . CNPJ Insere "." e "-" de acordo com o CNPJ brasileiro. Esse campo, apenas separa os dígitos e não faz validação se o CNPJ é válido ou não. Pra isso, é necessário incluir uma validação . CEP Insere "-", separando o número de acordo com o formato do CEP brasileiro. Para buscar o CEP automaticamente na base dos correios e preencher os campos de endereço, verifique o tutorial aqui nesse link Máscara Customizada A máscara customizada, permite o usuário crie sua própria máscara. O agilityflow, utiliza a biblioteca Inputmask do javascript, criada por Robin Herbots. A documentação completa pode ser acessada no github . Você só precisa ler essa documentação, caso opte por fazer uma customização avançada. Tipo de Customização Básica: é um forma fácil de criar uma máscara não existente no agilityflow. A sintaxe utilizada é a seguinte: 9: caractere numérico (de "0" a "9"); a: caractere alfabético (de "a" a "z"); A: caractere alfabético (de "A" a "Z"); *: caractere alfanumérico (todos acima); []: quando usado, identifica um caractere opcional; \\: Par usar um dos caracteres acima como caractere e não como sintaxe; Exemplos: Máscara Entrada Resultado (99) 9999[9]-9999 12123451234 (12) 12345-1234 (99) 9999[9]-9999 121234-1234 (12) 1234-1234 [9-]AAA-999 5ahg123 5-AHG-123 [9-]aaa-999 ahg123 ahg123 +999-\\9 123 +123-9 Avançada: você pode usar todos os recursos da biblioteca Inputmask. A documentação completa pode ser acessada no github . Máscara com 'Regular Expression' Utiliza o padrão de expressões regulares, que é um padrão utilizado em programação para identificar cadeias de caracteres. Caso haja necessidade de formatar seu texto, procure saber mais sobre esse padrão, já que ele é extremamente completo, no que diz respeito a identificar textos. Telefone: País + DDD + Cel/Tel Brasil Sinal de "+", espaço, código do país com dois dígitos, espaço, código de área com dois dígitos entre parêntesis, espaço, telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato. Ex: +55 (11) 98765-4321 ou +55 (81) 4321-1234 Telefone: DDD + Cel/Tel Brasil Código de área com dois dígitos entre parêntesis, espaço, telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato. Ex: (11) 98765-4321 ou (81) 4321-1234 Telefone: Cel/Tel Brasil Telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato. Ex: 98765-4321 ou 4321-1234 Como configurar um campo de data? Data e hora no formato dd/mm/yyyy hh:mm Formato de data onde o ano tem 4 dígitos, seguido de hora sem os segundos. O sistema não aceita entrada que não tenha esse formato. Ex: 18/01/1981 23:52 Data e hora (Com Segundos) no formato dd/mm/yyyy hh:mm:ss Formato de data onde o ano tem 4 dígitos, seguido de hora com os segundos. O sistema não aceita entrada que não tenha esse formato. Ex: 18/01/1981 23:52:13 Data sem hora no formato dd/mm/yyyy Formato de data onde o ano tem 4 dígitos. O sistema não aceita entrada que não tenha esse formato. Ex: 18/01/1981 Como configurar um campo de hora? Hora no formato hh:mm Horário, sem os segundos. O sistema não aceita entrada que não tenha esse formato. Ex: 19:37 Hora (Com Segundos) no formato hh:mm:ss Horário, com os segundos. O sistema não aceita entrada que não tenha esse formato. Ex: 19:37:22 Tamanho máximo de Preenchimento Com esse campo é possível limitar o número máximo de caracteres a ser preenchido nesse campo. Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Obrigatório Como deixar um campo obrigatório? Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Valor do campo deve ser único em relação a todos os registros O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário. Valor do campo deve ser único em relação ao formulário PAI Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho. Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento. Abaixo, um vídeo explica essas 3 últimas opções:   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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.             Label Dinâmica Label Dinâmica é um campo de texto não editável, que é preenchido através de outro campo. Esse campo é muito útil, quando se tem um campo de lista de seleção (ou pesquisa com auto-completar) com uma fonte dinâmica e há a necessidade mostrar outros campos do formulário usado como fonte por esse campo. No exemplo abaixo, o formulário tem uma lista de seleção de clientes. Os outros dois campos, são label dinâmicas com informações do formulário de cliente. Ao mudar o campo de lista de seleção, a label dinâmica é preenchida automaticamente. Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. 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: Preenchimento da Label Dinâmica Aqui, estão as opções principais de configurações para a label dinâmica. Preencher a label dinâmica ao alterar o campo Nessa opção, apenas os campos Lista de Seleção com lista dinâmica, ou o campo Pesquisa com Auto Completar serão mostrados aqui. É esse campo que, ao ser alterado, preencherá a label dinâmica. Campo de apresentação (Base de dados) É o campo do formulário usado como fonte na lista de seleção (ou pesquisa com auto completar) será usado para o preenchimento. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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.         Upload Esse campo é utilizado para o envio de arquivos. Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. 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: Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Extensão Permitida É possível adicionar uma lista branca, com as extensões permitidas. Extensão não permitida É possível adicionar uma lista negra, com as extensões não permitidas. Validação Customizada Tipo de Validação Upload de no máximo X itens: é possível definir um limite de arquivos; Upload no mínimo X itens: é possível definir um mínimo de arquivos; Upload exatamente X itens: é possível definir uma quantidade específica de arquivos; Validar a partir da etapa Em formulários com etapas, é possível estabelecer que uma validação será aplicada em alguma(s) etapa(s). Para isso, basta selecionar a etapa no campo "validar a partir da etapa". 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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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.             Lista de seleção (Combo) Esse campo, permite que o usuário escolha uma opção pré-determinada.  Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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:   Origem dos Dados Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados. Origem dos Itens São duas as possibilidades: 1. Lista Dinâmica (Utilização recomendada) :  Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido. 2. Lista Estática:  O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as queries .   Sugerimos que o campo de Lista de seleção (combo) não seja usado quando há muitas itens pois todas as opções desse campo são lidas quando a página é carregada. Se houver muitos itens, o carregamento da página pode ser afetado. Para esses casos, usar o campo Pesquisa com auto completar.   Configuração de uma Lista Dinâmica Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica. Abra a tela de edição do campo e clique na aba Origem dos Dados Campos para preenchimento: Origem dos dados Defina como "Lista Dinâmica" Quando os dados serão carregados? Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras. No carregamento inicial (On PageLoad):   Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente. Na alteração do valor de um determinado campo (On Change):  As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma condição na base de dados . Qual será a Base de dados É o formulário que servirá de fonte para a Lista Dinâmica. Campo de apresentação (Base de dados) Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo Qual será a Base de dados . Ordenar os itens pelo campo A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados? Prioridade Alta Baixa Média Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta). Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma: Prioridade Ordem Alta 3 Baixa 2 Média 1 Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta). Condição na Base de Dados Na condição, pode-se escolher um dos campos da  Base de dados  para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário. Caso esse formulário possa ser usado como tabela filha de outro formulário, essas duas opções são habilitadas: Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai Caso esse formulário possa ser incluído como filho de um formulário pai, ative essa opção e selecione qual formulário que preencherá automaticamente esse campo. Para mais detalhes sobre esse funcionamento, veja detalhes na configuração de Formulários Relacionados . Esconder campo quando o formulário for aberto através do formulário pai Quando esse formulário estiver incluído em um formulário pai, ative essa opção para que esse campo fique oculto, mesmo que esteja configurado para ser exibido na tela.     Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Como deixar um campo obrigatório? Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Valor do campo deve ser único em relação a todos os registros O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário. Valor do campo deve ser único em relação ao formulário PAI Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho. Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento. Abaixo, um vídeo explica essas 3 últimas opções:   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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         Pesquisa com auto completar Esse campo, é muito similar ao campo Lista de Seleção e permite que o usuário escolha uma opção pré-determinada.  Abaixo é possível comparar ambos campos, com a mesma fonte dinâmica de dados: Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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:   Origem dos Dados Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados. Origem dos Itens São duas as possibilidades: 1. Lista Dinâmica (Utilização recomendada) :  Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido. 2. Lista Estática:  O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as queries .   Configuração de uma Lista Dinâmica Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica. Abra a tela de edição do campo e clique na aba Origem dos Dados Campos para preenchimento: Origem dos dados Defina como "Lista Dinâmica" Quando os dados serão carregados? Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras. No carregamento inicial (On PageLoad):   Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente. Na alteração do valor de um determinado campo (On Change):  As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma condição na base de dados . Qual será a Base de dados É o formulário que servirá de fonte para a Lista Dinâmica. Campo de apresentação (Base de dados) Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo Qual será a Base de dados . Ordenar os itens pelo campo A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados? Prioridade Alta Baixa Média Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta). Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma: Prioridade Ordem Alta 3 Baixa 2 Média 1 Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta). Condição na Base de Dados Na condição, pode-se escolher um dos campos da  Base de dados  para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.   O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Pesquisa com Auto completar. O processo de configuração e o comportamento é idêntico. Caso esse formulário possa ser usado como tabela filha de outro formulário, essas duas opções são habilitadas: Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai Caso esse formulário possa ser incluído como filho de um formulário pai, ative essa opção e selecione qual formulário que preencherá automaticamente esse campo. Para mais detalhes sobre esse funcionamento, veja detalhes na configuração de Formulários Relacionados . Esconder campo quando o formulário for aberto através do formulário pai Quando esse formulário estiver incluído em um formulário pai, ative essa opção para que esse campo fique oculto, mesmo que esteja configurado para ser exibido na tela.     Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Como deixar um campo obrigatório? Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Valor do campo deve ser único em relação a todos os registros O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário. Valor do campo deve ser único em relação ao formulário PAI Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho. Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento. Abaixo, um vídeo explica essas 3 últimas opções:   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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         Checkbox (Único) Esse campo permite o usuário responder a uma pergunta cuja resposta tem duas opções.  Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. Texto ao lado do Checkbox Nesse campo, é possível definir o texto quando o campo está marcado, e quando o campo está desmarcado. O texto escolhido quando o campo está marcado, será mostrado na tela, enquanto o texto do campo quando está desmarcado, apenas será mostrado na listagem e no filtro de dados. Quando marcado Texto a ser exibido ao lado do campo. Quando estiver marcado, esse texto será mostrado na listagem de dados. Quando desmarcado Esse texto não será exibido quando estiver desmarcado, mas será mostrado na listagem de dados. 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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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: Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Como deixar um campo obrigatório? Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. 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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         Lista aberta com escolha única (Radio) Esse campo é muito similar ao tipo Lista de Seleção , mudando apenas a forma como é apresentado. Abaixo, um exemplo do campo radio (Lista aberta com escolha única): Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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:   Origem dos Dados Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados. Origem dos Itens São duas as possibilidades: 1. Lista Dinâmica (Utilização recomendada) :  Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido. 2. Lista Estática:  O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as queries .   Configuração de uma Lista Dinâmica Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica. Abra a tela de edição do campo e clique na aba Origem dos Dados Campos para preenchimento: Origem dos dados Defina como "Lista Dinâmica" Quando os dados serão carregados? Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras. No carregamento inicial (On PageLoad):   Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente. Na alteração do valor de um determinado campo (On Change):  As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma condição na base de dados . Qual será a Base de dados É o formulário que servirá de fonte para a Lista Dinâmica. Campo de apresentação (Base de dados) Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo Qual será a Base de dados . Ordenar os itens pelo campo A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados? Prioridade Alta Baixa Média Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta). Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma: Prioridade Ordem Alta 3 Baixa 2 Média 1 Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta). Condição na Base de Dados Na condição, pode-se escolher um dos campos da  Base de dados  para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.   O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Lista aberta com escolha única (Radio). O processo de configuração e o comportamento é idêntico.   Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Como deixar um campo obrigatório? Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Valor do campo deve ser único em relação a todos os registros O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário. Valor do campo deve ser único em relação ao formulário PAI Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho. Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento. Abaixo, um vídeo explica essas 3 últimas opções:   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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         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  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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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: 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. 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 Para fórmula com datas, só é possível fazer a operação de subtração. 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. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         Campo com Múltipla Escolha Apesar do visual um pouco diferente, tem comportamento similar ao campo checkbox , mas permite a escolha de mais de uma opção. Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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.  Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema. 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:   Origem dos Dados Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados. Origem dos Itens São duas as possibilidades: 1. Lista Dinâmica (Utilização recomendada) :  Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido. 2. Lista Estática:  O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as queries .   Configuração de uma Lista Dinâmica Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica. Abra a tela de edição do campo e clique na aba Origem dos Dados Campos para preenchimento: Origem dos dados Defina como "Lista Dinâmica" Quando os dados serão carregados? Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras. No carregamento inicial (On PageLoad):   Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente. Na alteração do valor de um determinado campo (On Change):  As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma condição na base de dados . Qual será a Base de dados É o formulário que servirá de fonte para a Lista Dinâmica. Campo de apresentação (Base de dados) Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo Qual será a Base de dados . Ordenar os itens pelo campo A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados? Prioridade Alta Baixa Média Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta). Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma: Prioridade Ordem Alta 3 Baixa 2 Média 1 Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta). Condição na Base de Dados Na condição, pode-se escolher um dos campos da  Base de dados  para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário. O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Campo com Múltipla Escolha. O processo de configuração e o comportamento é idêntico.     Validação Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento. Como deixar um campo obrigatório? Obrigatório Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções: Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível? Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja invisível .  Obrigatório a partir da etapa Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo. Tipo de Validação Para o campo com múltipla escolha, é possível fazer uma validação relativo à quantidade de itens marcados. Selecionar no máximo X itens: define um limite máximo de itens marcados; Selecionar no mínimo X itens: define um limite mínimo de itens marcados; Selecionar exatamente X itens: define um número exato de itens marcados; 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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 sobre essa opção.         Botão Customizado Caso seja necessário uma ação no formulário que não exista no agilityflow, é possível criar um botão. Esse botão, executa um código  javascript  personalizado, que deve ser criado pelo usuário. Para a configuração desse campo, é necessário conhecimento de javascript , já que qualquer ação com esse botão é 100% customizada.  Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. 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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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 A parte mais importante do botão customizado é a programação em javascript. É com ela que o botão será capaz de executar alguma ação no formulário. Com a customização em Javascript, as possibilidade são inúmeras. Qualquer que seja o código javascript, ele pode ser usado aqui. Exemplo de código Posso abrir o WhatsApp pelo agilityflow? No exemplo abaixo, o botão customizado está configurado para abrir o WhatsApp Web e iniciar uma conversa com o número cadastrado no formulário. var fone = $("#telefone").val(); if (fone !== null) fone = fone.replaceAll(/\(/,"").replaceAll(/\)/,"").replaceAll(/-/,"").replaceAll(/ /,""); window.open("https://web.whatsapp.com/send?phone="+fone); Explicando o código var fone = $("#telefone").val(); Obtém-se o valor do campo telefone, e o armazena na variável chamada fone . Note que esse nome é exatamente o nome definidos na configuração  Coluna Banco de dados (SQL) . if (fone !== null) fone = fone.replaceAll(/\(/,"").replaceAll(/\)/,"").replaceAll(/-/,"").replaceAll(/ /,""); Nesse ponto, checa se o valor é nulo. Caso não seja, limpa o número, removendo parêntesis e hifens. window.open("https://web.whatsapp.com/send?phone="+fone); window.open("https://web.whatsapp.com/send?phone="+fone); Abre-se uma nova janela, passando o valor da variável fone na URL.           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 comum, como qualquer outro. Além disso é necessário adicionar dois componentes adicionais: Ativar a opção de relacionamento com outros formulários: 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: Quando o formulário filho está configurado dessa forma, ele fica disponível para ser adicionado no formulário pai:  O uso é transparente para o usuário, não percebendo essa amarração entre os formulários. 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  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. 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 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.                 Componentes CsHtml Para acessar os detalhes desse conteúdo, clique aqui .                                                                                                                       Label com Query SQL Label com Query SQL é um campo de texto não editável, que é preenchido através de uma Query SQL definida por você. Esse campo é muito útil, quando se tem um campo de lista de seleção (ou pesquisa com auto-completar) com uma fonte dinâmica e há a necessidade mostrar outros campos do formulário usado como fonte por esse campo. Também pode ser útil para gerar um SUM, AVG e outras funções do SQL. No exemplo abaixo, o formulário tem uma lista de seleção de clientes. Os outros dois campos, são Label com Query SQL com informações do formulário de cliente.       Ao mudar o campo de lista de seleção, a label com Query SQL é preenchida automaticamente. Tabela de dados customizada através de programação: Query SQL, C#, HTML e CSS Para acessar os detalhes desse conteúdo,  clique aqui . Campo de Assinatura O campo de assinatura, permite que um usuário "desenhe" sua assinatura através do dedo (no celular) ou do mouse (no computador), ao final essa assinatura se transformará em uma imagem. Grupo de informações Dentro das configurações, é possível alterar o  grupo de informação  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. 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 Ativar Deixa o campo disponível para inserção de dados. É o estado padrão do campo. Inativar Deixa o campo indisponível para inserção de dados. 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: Comparação por valor Comparação por outro campo For igual a É igual ao campo For maior ou igual a É diferente do campo For menor ou igual a    For maior que   For menor que   For diferente de   Conter   Não conter   É possível adicionar mais de um condição na mesma regra. 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.