Validação de Cliente Inadimplente

Esta validação personalizada barra a gravação de uma venda quando o cliente tem valores vencidos e em aberto no financeiro. É um validador pronto, sem necessidade de fórmula, e o seu comportamento é ajustado por dois campos.

Cadastrando

  1. No menu superior, clique na Engrenagem.
  2. Clique em Validações personalizadas.
  3. Escolha Venda.
  4. Clique em Incluir.
  5. Na galeria, selecione o modelo Cliente inadimplente.
  6. Ajuste os campos abaixo e clique em Salvar.

Campos

Além dos campos comuns a toda validação, este validador tem dois campos próprios:

  • Valor mínimo de dívida para bloqueio: o valor a partir do qual a venda é barrada. Enquanto o total em aberto do cliente não ultrapassar esse valor, a venda passa. Deixe 0 para barrar qualquer valor em atraso.
  • Dias de tolerância após o vencimento: o período de carência depois do vencimento. Só entram na conta os títulos vencidos há mais dias do que o informado aqui. Com 0, o título conta já no dia seguinte ao vencimento.

Exemplo: com valor mínimo de R$ 100,00 e tolerância de 5 dias, a venda é barrada apenas quando o cliente acumula mais de R$ 100,00 em títulos vencidos há mais de 5 dias.

Barrar só quando o pagamento for Boleto

Dá para restringir a inadimplência a um meio de pagamento específico, deixando passar dinheiro, PIX ou cartão e barrando só quando houver Boleto. Combine este validador com um critério de execução por fórmula:

  1. No campo Execução, escolha critério específico, selecione o atributo Destinatário e alterne o modo de valor de atributo para fórmula. Cole o JSON abaixo, substituindo ID_DO_BOLETO pelo ID real do meio de pagamento Boleto da licença (visível na URL em Engrenagem → Meios de pagamento):
{
  "if": [
    {
      "some": [
        { "values_of": ["invoice.invoice_bills", "paymenttype_id"] },
        { "==": [{ "var": ".paymenttype_id" }, ID_DO_BOLETO] }
      ]
    },
    { "attr": "invoice.recipient_id" },
    0
  ]
}

Se a licença tiver mais de um cadastro de Boleto (ex.: "Boleto à vista" e "Boleto 30 dias"), substitua o == por in com a lista de IDs:

{ "in": [{ "var": ".paymenttype_id" }, [ID1, ID2, ID3]] }

Como funciona: o some verifica se alguma parcela da venda tem o meio de pagamento Boleto. Se sim, o if devolve o próprio recipient_id da venda — a comparação vira recipient_id == recipient_id, que é verdadeiro, e a validação de inadimplência roda. Se não houver parcela em Boleto, o if devolve 0, a comparação falha e a validação é ignorada.

Barrar a emissão de nota para cliente inadimplente

Dá para bloquear a emissão de nota fiscal de clientes inadimplentes configurando a validação para rodar quando a venda entrar na etapa imediatamente anterior à emissão. Como as validações personalizadas rodam no momento da gravação da venda e a autorização da NF-e acontece depois, o bloqueio impede que a venda avance no quadro antes de a nota ser gerada.

Para isso, use o campo Execução com um critério específico baseado na etapa do quadro.

Bloquear diretamente no momento de autorizar não é possível porque as validações personalizadas só rodam na gravação da venda, e a autorização da NF-e é uma ação separada, posterior à gravação.

Perguntas e respostas

1 - Quero que alguém do financeiro consiga liberar a venda mesmo assim. É possível? R: Sim. No campo Execução, monte um critério que pule a validação para os usuários autorizados. Veja o exemplo em Validações personalizadas.