cosmobots
Search…
Validar CNPJ
Olá Cosmonauta, nesse tutorial vamos explicar sobre como retornar uma mensagem ao usuário quando ele informar o CNPJ incorreto e permitir que ele preencha novamente com o CNPJ correto.
1- Para isso, crie uma mensagem que pergunte o CNPJ do usuário e salve a resposta como context.cnpj:
Caso não tenha esse campo em sua lista de opções crie um novo campo.
3- Crie uma etapa javaScript e insira o seguinte código:
//
// Verifica se o usuario digitou um CNPJ válido
//
function cnpjValidation(value) {
if (!value) return false
// Aceita receber o valor como string, número ou array com todos os dígitos
const isString = typeof value === 'string'
const validTypes = isString || Number.isInteger(value) || Array.isArray(value)
// Elimina valor em formato inválido
if (!validTypes) return false
// Filtro inicial para entradas do tipo string
if (isString) {
// Limita ao máximo de 18 caracteres, para CNPJ formatado
if (value.length > 18) return false
// Teste Regex para veificar se é uma string apenas dígitos válida
const digitsOnly = /^\d{14}$/.test(value)
// Teste Regex para verificar se é uma string formatada válida
const validFormat = /^\d{2}.\d{3}.\d{3}\/\d{4}-\d{2}$/.test(value)
// Se o formato é válido, usa um truque para seguir o fluxo da validação
if (digitsOnly || validFormat) true
// Se não, retorna inválido
else return false
}
// Guarda um array com todos os dígitos do valor
const match = value.toString().match(/\d/g)
const numbers = Array.isArray(match) ? match.map(Number) : []
// Valida a quantidade de dígitos
if (numbers.length !== 14) return false
// Elimina inválidos com todos os dígitos iguais
const items = [...new Set(numbers)]
if (items.length === 1) return false
// Cálculo validador
const calc = (x) => {
const slice = numbers.slice(0, x)
let factor = x - 7
let sum = 0
for (let i = x; i >= 1; i--) {
const n = slice[x - i]
sum += n * factor--
if (factor < 2) factor = 9
}
const result = 11 - (sum % 11)
return result > 9 ? 0 : result
}
// Separa os 2 últimos dígitos de verificadores
const digits = numbers.slice(12)
// Valida 1o. dígito verificador
const digit0 = calc(12)
if (digit0 !== digits[0]) return false
// Valida 2o. dígito verificador
const digit1 = calc(13)
return digit1 === digits[1]
}
var cnpj=context.cnpj
console.log(cnpjValidation(cnpj))
if(cnpjValidation(cnpj)===true){
context.resposta="ok"}
else{
context.resposta="nok"
}
4- Crie um Filtro, e no filtro coloque a seguinte condição e salve:
5- Do lado não do filtro, insira a mensagem que deve ser enviada ao usuário caso ele informe o CNPJ incorreto:
6- Depois crie uma etapa existente e direcione novamente a etapa que pergunta o CNPJ.
7- Prontinho, se o CNPJ do usuário estiver incorreto ele vai receber a mensagem informando.
Copy link