Validações personalizadas

Validação personalizada é uma funcionalidade que te permite criar regras específicas, garantindo que os dados inseridos em um documento estejam corretos e completos.

Essa ferramenta permite que você tenha algumas validações no momento da gravação de um documento, seja ele de venda, produção, pessoa ou produto. Essas validações são predeterminadas, você pode tanto usar as que já temos prontas quanto criar as suas próprias. O cadastro está disponível para todos os usuários que têm acesso às configurações do sistema.

Cadastrando Validações personalizadas

Para cadastrar, acesse o menu de Engrenagem = ConfiguraçõesValidações personalizadas. Você poderá escolher em qual local do sistema deseja ter a validação: Pessoa, Compra, Produção, Produto ou Venda. Após isso clique em Incluir.

O sistema irá mostrar uma galeria de validações com alguns templates, selecione o que melhor se encaixa na sua necessidade, faça alterações se for necessário e clique em salvar.

Cadastrando Validação Personalizada

Campos das Validações Personalizadas

Dependendo do template que você escolher, o sistema pode mostrar mais ou menos campos:

  • Nome: informe um apelido para a sua validação. Isso não muda nada para o sistema, é apenas um nome ilustrativo. No geral o sistema já sugere um bom nome, mas você pode alterar como desejar.

  • Execução: indica se a validação sempre roda ou só em um critério específico. O critério específico é uma comparação com três partes — atributo, operador e valor — e só o valor aceita fórmula. Para regras que não cabem nessa forma simples (por exemplo, "só rodar quando alguma parcela for Boleto"), veja Critério de execução com fórmula.

  • Fórmula: o validador por fórmula é o mais versátil de todos. Você pode tanto começar do zero quanto implementar sua própria fórmula. O sistema oferece vários templates que utilizam este validador, variando apenas a fórmula do mesmo.

  • Mensagem de erro: essa mensagem é a que será apresentada para o usuário. Se a validação não disponibilizar tal campo, significa que o validador utilizará uma mensagem padrão.

  • Finalidade: esse campo serve para descrever o motivo daquela validação ter sido criada. Uma descrição clara ajuda outros usuários a entender esta validação, se ela ainda é útil ou se deve ser excluída.

  • Registro arquivado: se você não quer que uma determinada validação seja executada, é possível excluí-la ou somente arquivá-la. Digamos que a desativação seja temporária, neste caso, faz mais sentido apenas arquivar.

Campos das validações personalizadas

Critério de execução com fórmula

Quando um critério simples de atributo-operador-valor não dá conta — por exemplo, quando você precisa navegar em coleções ou combinar várias condições — dá pra usar um truque: escolha um atributo qualquer da entidade (como Destinatário, em vendas) com operador igual a, e na fórmula do valor faça um if que devolve o próprio atributo quando a regra é verdadeira, ou um valor que nunca vai bater (como 0) quando é falsa.

Exemplo: uma validação que só deve rodar quando alguma parcela da venda é Boleto (suponha id 5398 do meio de pagamento).

  • Atributo: Destinatário
  • Operador: igual a
  • Valor (fórmula):
{
  "if": [
    {
      "some": [
        { "values_of": ["invoice.invoice_bills", "paymenttype_id"] },
        { "==": [{ "var": ".paymenttype_id" }, 5398] }
      ]
    },
    { "attr": "invoice.recipient_id" },
    0
  ]
}

Como funciona: quando tem parcela em Boleto, o if devolve o próprio recipient_id → a comparação vira recipient_id == recipient_id → verdadeira → a validação roda. Sem Boleto, o if devolve 0recipient_id == 0 → falsa → a validação é pulada.

Troque o 5398 pelo id real do meio de pagamento Boleto da licença (ele aparece na URL do registro em Engrenagem → Meios de pagamento). Se tem mais de um cadastro com nome Boleto, troque o == por in com a lista de ids:

{ "in": [{ "var": ".paymenttype_id" }, [5398, 5399, 5400]] }

Validações personalizadas em Vendas

Dentro das Validações personalizadas em Vendas temos algumas possibilidades:

  1. Não permitir que uma venda seja gravada se o total dela for menor do que um determinado valor.
  2. Valida se cada item da venda está sendo vendido acima da quantidade mínima estipulada.
  3. Um usuário não conseguir salvar uma venda se nela não houver parcelas informadas.
  4. A venda ser gravada apenas se o estoque for o sufiente para atendê-la. Esse validador também mostra quais os itens problemáticos. Esse validador só funcionará para as vendas que são de saída, que a finalidade seja normal e que a venda e a etapa estejam marcadas para movimentar o estoque
  5. Barrar vendas para um cliente que possui valores em atraso no financeiro. Você pode definir após quantos dias de atraso a venda será barrada.
  6. Não salvar a venda se nela houver produtos duplicados.
  7. Não menos importante, você pode usar a sua criatividade e criar suas próprias validações personalizadas usando as fórmulas do Fácil123! Essas fórmulas podem ser na venda como um todo ou aplicada a cada item da venda.

Validações personalizadas em Vendas

Validações personalizadas em Produção

Na produção temos as seguintes validações:

  1. A produção apenas ser gravada se houver estoque de matéria-prima o suficiente para atender àquela produção. Este validador também mostra quais os itens problemáticos.
  2. Não salvar a produção se nela houver produtos duplicados.
  3. Com as fórmulas você pode criar suas próprias validações personalizadas! Essas fórmulas podem ser na produção como um todo ou aplicada a cada item da venda.

Validações personalizadas em Produção

Validações personalizadas em Pessoas, Produtos e Compras

Por enquanto, Pessoas, Produtos e Compras só possuem a opção de validação com fórmula. Mas já dá pra fazer coisas muito legais, como por exemplo, obrigar o preenchimento de um determinado campo caso a pessoa seja um cliente.

Validações personalizadas em Pessoas, Produtos e Compras

Perguntas e respostas

1 - Eu quero que um usuário específico possa fazer coisas que a validação proíbe. É possível?
R: Sim, é possível habilitar opção na validação que informa se algum usuário pode "escapar" dessa validação. Ou então você pode dizer apenas para quais usuários a validação deve funcionar. Por exemplo, você pode ter uma validação que avalia crédito e barre vendas que ultrapassem o limite, porém você tem uma pessoa no financeiro que pode liberar vendas acima do limite. Nesse caso, você pode criar um critério na validação que diz que ela só funciona se o usuário não for um usuário específico.