Script Validador de CPF/CNPJ

Modificado em Qua, 20 Mai na (o) 1:36 PM

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 SCRIPTDESCRIÇÃ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.




Clique Aqui e deixe seu Feedback!





Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo