Validação por Fórmula em Compras

Esta validação personalizada avalia uma regra que você escreve no momento de gravar uma compra. Se a condição for verdadeira, a compra é salva; se for falsa, a gravação é barrada com a mensagem de erro. Em compras, este é o único tipo de validador disponível.

Os atributos da fórmula começam por purchase — incluindo a coleção de parcelas purchase.purchase_bills. Consulte Fórmulas para a sintaxe e a lista de atributos.

Cadastrando

  1. No menu superior, clique na Engrenagem.
  2. Clique em Validações personalizadas.
  3. Escolha Compra.
  4. Clique em Incluir.
  5. Na galeria, selecione o modelo Fórmula personalizada.
  6. Preencha os campos e clique em Salvar.

Campos

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

  • Fórmula: a regra que decide se a compra pode ser gravada. Deve devolver verdadeiro para liberar e falso para barrar.
  • Mensagem de erro: o texto exibido quando a compra é barrada.

Exemplo: não permitir compra sem parcelas

Impede que uma compra seja gravada sem nenhuma parcela informada, evitando lançamentos incompletos que atrapalham a gestão financeira.

  • Fórmula:
{
  ">": [
    {
      "reduce": [
        { "values_of": ["purchase.purchase_bills", "expire_at"] },
        { "+": [1, { "var": "accumulator" }] }
      ]
    },
    0
  ]
}
  • Mensagem de erro: Ops: Faltou informar as parcelas

Como funciona: o values_of percorre as parcelas da compra (purchase_bills) coletando os valores de expire_at. O reduce conta quantas parcelas existem somando 1 a cada iteração. Se o resultado for maior que 0, há parcelas — a validação passa. Se for 0, nenhuma parcela foi informada e o sistema exibe a mensagem de erro.

Perguntas e respostas

1 - Minhas compras importadas automáticas não estão sendo salvas. O que pode ser?
R: Se o erro exibido é Ops: Faltou informar as parcelas, é provável que a validação de compra sem parcelas esteja bloqueando o processo porque o XML importado não inclui parcelas. Nesse caso, pode ser necessário configurar a validação para que ela não rode nessa etapa. Entre em contato com o nosso suporte para ajustar.