ADICIONAR O COMPONENTE NO FLUXO
Entre na edição do Fluxo e adicione o componente de SCRIPT conforme a figura abaixo:

Observem que o componente de SCRIPT deve ficar posicionado após o componente de entrada de dados.
O COMPONENTE DE SCRIPT
Clique sobre o componente de SCRIPT e edite o mesmo. Irá abrir a tela a seguir:

- Horários: você pode utilizar o horário que o SCRIPT vai estar ativo no fluxo. Não é necessário pois sempre que acontecer a entrada de dados queremos que ele execute então é pressuposto;
- Nome: coloque um nome apropriado para o componente. Ex. Teste de CPF/CNPJ;
- Parâmetros: colocar a variável "val" em minúsculo recebendo o conteúdo da variável "{{CPF_CNPJ}}" esta variável muda de acordo com a utilizada na entrada de dados. Aqui estamos dizendo que "val" vai receber o que estiver sido digitado em {{CPF_CNPJ}} para ser utilizado no script;
- Tipo de função: escolha "customizável";
- Retorno da função: crie uma nova variável para ser utilizada na condição do fluxo. No exemplo valos criar a {{IS_CPF_CNPJ}} mas pode ser qualquer uma a escolha desde que identifique para ser utilizado depois. Este retorno da função vai receber "0" quando um CPF/CNPJ for inválido, e "1" quando o CPF/CNPJ for válido.

- Customizável: roque a linha 2 toda pelo script abaixo:
(val) => {
val = val.replace(/[^\da-zA-Z]/g, '').toUpperCase();
/*
=========================================
CPF
=========================================
*/
if (val.length == 11 && /^\d+$/.test(val)) {
var v1 = 0;
var v2 = 0;
var aux = false;
for (var i = 1; i < val.length; i++) {
if (val[i - 1] != val[i]) {
aux = true;
}
}
if (aux == false) {
return 'INVALIDO';
}
for (var i = 0, p = 10; i < 9; i++, p--) {
v1 += parseInt(val[i]) * p;
}
v1 = ((v1 * 10) % 11);
if (v1 == 10) {
v1 = 0;
}
if (v1 != val[9]) {
return 'INVALIDO';
}
for (var i = 0, p = 11; i < 10; i++, p--) {
v2 += parseInt(val[i]) * p;
}
v2 = ((v2 * 10) % 11);
if (v2 == 10) {
v2 = 0;
}
if (v2 != val[10]) {
return 'INVALIDO';
}
return 'CPF';
}
/*
=========================================
CNPJ NUMÉRICO / ALFANUMÉRICO
=========================================
*/
else if (val.length == 14) {
var aux = false;
for (var i = 1; i < val.length; i++) {
if (val[i - 1] != val[i]) {
aux = true;
}
}
if (aux == false) {
return 'INVALIDO';
}
var pesos = [6,5,4,3,2,9,8,7,6,5,4,3,2];
var base = val.substring(0, 12);
var soma1 = 0;
var soma2 = 0;
for (var i = 0; i < 12; i++) {
var c = base.charAt(i);
/*
0-9 => 0-9
A-Z => 17-42
*/
var valor = c.charCodeAt(0) - 48;
soma1 += valor * pesos[i + 1];
soma2 += valor * pesos[i];
}
var dv1 = soma1 % 11;
if (dv1 < 2) {
dv1 = 0;
} else {
dv1 = 11 - dv1;
}
soma2 += dv1 * pesos[12];
var dv2 = soma2 % 11;
if (dv2 < 2) {
dv2 = 0;
} else {
dv2 = 11 - dv2;
}
if (dv1 != val[12] || dv2 != val[13]) {
return 'INVALIDO';
}
/*
=========================================
IDENTIFICA TIPO CNPJ
=========================================
*/
if (/^\d+$/.test(base)) {
return 'CNPJ_NUMERICO';
} else {
return 'CNPJ_ALFANUMERICO';
}
}
return 'INVALIDO';
}Pronto o Script ficará conforme as imagens abaixo:

Basta clicar em "Salvar" para armazenar a inclusão.

ADICIONE UM COMPONENTE DE CONDIÇÃO NO FLUXO
Agora que o SCRIPT está criado podemos adicionar um componente de condição para testarmos o valor retornado na variável criada "{{RESPOSTA}}" que criamos no SCRIPT.
O Script retorna as seguintes respostas:
| RESPOSTA SCRIPT | DESCRIÇÃO |
CPF | CPF válido |
| CNPJ_NUMERICO | CNPJ tradicional válido |
| CNPJ_ALFANUMERICO | CNPJ alfanumérico válido |
INVALIDO | Documento inválido |
Abaixo o modelo da condição criada para tratar a resposta:

Neste exemplo teremos 3 comportamentos do Fluxo:
- Se o valor retornado for "CPF", ele é um CPF válido;
- Se o valor retornado for "CNPJ_NUMERICO" ou "CNPJ_ALFANUMERICO", ele é um CNPJ válido;
- Se o valor retornado for "INVALIDO", trata-se de um dado que não segue o padrão de um CPF, CNPJ numérico ou alfanumérico.
Em anexo o modelo básico do fluxo para ser importado no sistema do Wide Chat para testes.
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo