dobrado

Validação de CPF/CNPJ + Máscara

May 22nd, 2018
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   _validateField () {
  2.     // Esconde o teclado
  3.     Keyboard.dismiss()
  4.     if (this.state.cpfCnpj && this.state.cpfCnpj.length === 11 && this._validateCPF()) {
  5.       // Verifica se o campo de CNPJ esta preenchido
  6.       // Verifica se o campo de CPF tem o mínimo de caracteres de um CPF
  7.       // Valida se o CPF é válido
  8.       this._handleLogin()
  9.     } else if (this.state.cpfCnpj && this.state.cpfCnpj.length === 14 && this._validateCNPJ()) {
  10.       // Verifica se o campo de CNPJ esta preenchido
  11.       // Verifica se o campo de CNPJ tem o mínimo de caracteres de um CNPJ
  12.       // Valida se o CNPJ é válido
  13.       this._handleLogin()
  14.     } else {
  15.       this._toastError('CPF/CNPJ Inválido')
  16.     }
  17.   }
  18.  
  19.   _validateCPF() {
  20.     // Função para validar o CPF
  21.     // Inspirado em: www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/funcoes.js
  22.  
  23.     const strCPF = this.state.cpfCnpj
  24.     let Soma;
  25.     let Resto;
  26.     Soma = 0;
  27.  
  28.     if (!strCPF.length === 14) {
  29.       this._toastError('CPF Inválido')
  30.       return false
  31.     }
  32.  
  33.     for (i = 1; i <= 9; i++) {
  34.       Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (11 - i);
  35.       Resto = (Soma * 10) % 11;
  36.     }
  37.  
  38.     if ((Resto === 10) || (Resto === 11)) {
  39.       Resto = 0
  40.     }
  41.  
  42.     if (Resto != parseInt(strCPF.substring(9, 10))) {
  43.       this._toastError('CPF Inválido')
  44.       return false
  45.     }
  46.     Soma = 0;
  47.  
  48.     for (i = 1; i <= 10; i++) {
  49.       Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (12 - i);
  50.       Resto = (Soma * 10) % 11;
  51.     }
  52.  
  53.     if ((Resto === 10) || (Resto === 11)) {
  54.       Resto = 0;
  55.     }
  56.  
  57.     if (Resto != parseInt(strCPF.substring(10, 11))) {
  58.       this._toastError('CPF Inválido')
  59.       return false
  60.     }
  61.     return true
  62.   }
  63.  
  64.   _validateCNPJ() {
  65.     // Função para validar o CNPJ
  66.     // Inspirado em: http://www.geradorcnpj.com/javascript-validar-cnpj.htm
  67.     const cnpj = this.state.cpfCnpj.replace(/[^\d]+/g,'')
  68.  
  69.     if(!cnpj.length === 14) {
  70.       this._toastError('CPF Inválido')
  71.       return false
  72.     }
  73.  
  74.  
  75.     let tamanho = cnpj.length - 2
  76.     let numeros = cnpj.substring(0,tamanho)
  77.     let digitos = cnpj.substring(tamanho)
  78.     let soma = 0
  79.     let pos = tamanho - 7
  80.  
  81.     for (i = tamanho; i >= 1; i--) {
  82.       soma += numeros.charAt(tamanho - i) * pos--
  83.       if (pos < 2) {
  84.         pos = 9
  85.       }
  86.     }
  87.     resultado = soma % 11 < 2 ? 0 : 11 - soma % 11
  88.     if (resultado != digitos.charAt(0)) {
  89.       this._toastError('CPF Inválido')
  90.       return false
  91.     }
  92.          
  93.     tamanho = tamanho + 1
  94.     numeros = cnpj.substring(0,tamanho)
  95.     soma = 0
  96.     pos = tamanho - 7
  97.     for (i = tamanho; i >= 1; i--) {
  98.       soma += numeros.charAt(tamanho - i) * pos--;
  99.       if (pos < 2) {
  100.         pos = 9
  101.       }
  102.     }
  103.     resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
  104.     if (resultado != digitos.charAt(1)) {
  105.       this._toastError('CPF Inválido')
  106.       return false
  107.     }
  108.  
  109.     return true
  110.   }
Advertisement
Add Comment
Please, Sign In to add comment