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, compra, 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
- No menu superior, clique na Engrenagem.
- Clique em Validações personalizadas.
- Escolha em qual local deseja ter a validação: Pessoa, Compra, Produção, Produto ou Venda.
- Clique em Incluir.
- Na galeria de templates, selecione o que melhor se encaixa na sua necessidade e faça as alterações necessárias.
- Clique em Salvar.

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.

Antes de criar uma validação
Informações importantes antes de construir sua validação:
- Não detecta se um campo foi alterado. A fórmula sempre vê o valor atual do campo, nunca o valor anterior. Não é possível criar uma regra do tipo "bloquear se o campo X mudou de valor".
- Não bloqueia a autorização fiscal de NF-e. As validações personalizadas rodam no momento de gravar o documento, não durante o processo de autorização junto à SEFAZ.
- Funciona normalmente no PDV. As validações de venda também disparam no fluxo do Ponto de Venda, do mesmo jeito que na tela padrão de vendas.
- Funciona também em pedidos de integrações. As validações de venda disparam nos pedidos que chegam pelo Mercos, pelas lojas virtuais e pela API. Quando a validação barra, o pedido não entra no Fácil123. No Mercos, o erro aparece nos Logs das Integrações. Nas lojas virtuais, ele fica no próprio pedido, na tela de importação de pedidos, que continua pendente. Pela API, a mensagem volta na resposta da chamada.
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 0 → recipient_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]] }
Veja mais padrões de fórmula para casos comuns em Fórmulas de validações personalizadas.
Desativando uma validação personalizada
Se você não quiser que uma validação continue sendo executada, pode arquivá-la ou excluí-la. A diferença é que arquivar é reversível — a validação fica desativada mas pode ser reativada a qualquer momento. Excluir é permanente: a validação é removida e, se precisar dela novamente, será necessário criar uma nova do zero.
Arquivando uma validação personalizada
- No menu superior, clique na Engrenagem.
- Clique em Validações personalizadas.
- Localize a validação desejada.
- Clique nos três pontinhos e selecione Editar.
- Ative a opção Registro arquivado.
- Clique em Salvar.
A validação ficará desativada e não será mais executada. Para reativá-la, basta desmarcar a opção Registro arquivado e salvar novamente.

Excluindo uma validação personalizada
- No menu superior, clique na Engrenagem.
- Clique em Validações personalizadas.
- Localize a validação desejada.
- Clique nos três pontinhos e selecione Excluir.
A validação será removida permanentemente. Caso precise utilizá-la novamente, será necessário criar uma nova do zero.

Perguntas e respostas
1 - É possível criar validações para transação financeira?
R: Não. No momento, as validações personalizadas estão disponíveis para Venda, Compra, Produção, Produto e Pessoa.
2 - 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.