Nesta solução, ensinaremos a como adicionar no fluxo um SCRIPT para que seja realizada a validação do CPF/CNPJ digitado pelo cliente no componente de  entrada de dados para que seja utilizado o resultado em uma condição.


1 - ADICIONAR O COMPONENTE DE SCRIPT 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.


2 - EDITE O COMPONENTE DE SCRIPT


Clique sobre o componente de SCRIPT e edite o mesmo. Irá abrir a tela a seguir:

- Em horários voce 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.

- Em nome coloque um nome apropriado para o componente. Ex. Teste de CPF/CNPJ

- Em parâmetros vamos colocar a variável "val" em minúsculo recebendo o conteúdo da variável "{{CPF_CNPJ}}" esta variavel 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.

- Em tipo de função escolha "customizável".

- Em "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.

- Em Customizável no código que aparece, troque a linha 2 toda pelo script abaixo:


     val = val.replace(/\D/g, ''); 
     if (val.length == 11) {

        var v1 = 0;
        var v2 = 0;
        var aux = false;

        for (var i = 1; val.length > i; i++) {
            if (val[i - 1] != val[i]) {
                aux = true;   
            }
        } 

        if (aux == false) {
            return 0; 
        } 

        for (var i = 0, p = 10; (val.length - 2) > i; i++, p--) {
            v1 += val[i] * p; 
        } 

        v1 = ((v1 * 10) % 11);
        if (v1 == 10) {
            v1 = 0; 
        }

        if (v1 != val[9]) {
            return 0; 
        } 
        for (var i = 0, p = 11; (val.length - 1) > i; i++, p--) {
            v2 += val[i] * p; 
        } 
        v2 = ((v2 * 10) % 11);
        if (v2 == 10) {
            v2 = 0; 
        }
        if (v2 != val[10]) {
            return 0; 
        } else {   
            return 1; 
        }
    } else if (val.length == 14) {
        var v1 = 0;
        var v2 = 0;
        var aux = false;
        for (var i = 1; val.length > i; i++) { 
            if (val[i - 1] != val[i]) {  
                aux = true;   
            } 
        } 
        if (aux == false) {  
            return 0; 
        }
        for (var i = 0, p1 = 5, p2 = 13; (val.length - 2) > i; i++, p1--, p2--) {
            if (p1 >= 2) {  
               v1 += val[i] * p1;  
            } else {  
                v1 += val[i] * p2;  
            } 
        } 
        v1 = (v1 % 11);
        if (v1 < 2) { 
            v1 = 0; 
        } else { 
            v1 = (11 - v1); 
        } 
        if (v1 != val[12]) {  
            return 0; 
        } 
        for (var i = 0, p1 = 6, p2 = 14; (val.length - 1) > i; i++, p1--, p2--) { 
            if (p1 >= 2) {  
                v2 += val[i] * p1;  
            } else {   
                v2 += val[i] * p2; 
            } 
        }
        v2 = (v2 % 11); 
        if (v2 < 2) {  
            v2 = 0;
        } else { 
            v2 = (11 - v2); 
        } 
        if (v2 != val[13]) {   
            return 0; 
        } else {  
            return 1; 
        }
    } else {
        return 0;
    }



Pronto o Script ficará conforme sa imagens abaixo:



Salve o mesmo.


3 - 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 "{{IS_CPF}}" que criamos no SCRIPT. Lembrando que a variável retorna "0" e "1". Tambem pode-se utilizar a variável em qualquer outro componente.

Veja a imagem:

Neste exemplo teremos dois comportamentos do Fluxo, o primeiro se o valor retornado for "0" de CPF/CNPJ inválido poderemos informar o cliente e seguir um fluxo.

O segundo que seria a Exeção "1" poderíamos colocar para prosseguir o fluxo sendo que recebemos "1" de CPF/CNPJ válido.


Qualquer dúvida não deixem de nos contactar.