Advertisement
r_martins

Validação JavaScript CPF e CNPJ Magento 1.x

Aug 12th, 2018
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Validation.add('validate-cpfcnpj', 'CPF/CNPJ inválido.', function(v){
  2.     return validateCPF(v) || validateCNPJ(v);
  3. });
  4.  
  5. function validateCPF(strCPF) {
  6.     var sum;
  7.     var rest;
  8.     sum = 0;
  9.     if (strCPF == "00000000000") return false;
  10.  
  11.     for (i=1; i<=9; i++) sum = sum + parseInt(strCPF.substring(i-1, i)) * (11 - i);
  12.     rest = (sum * 10) % 11;
  13.  
  14.     if ((rest == 10) || (rest == 11))  rest = 0;
  15.     if (rest != parseInt(strCPF.substring(9, 10)) ) return false;
  16.  
  17.     sum = 0;
  18.     for (i = 1; i <= 10; i++) sum = sum + parseInt(strCPF.substring(i-1, i)) * (12 - i);
  19.     rest = (sum * 10) % 11;
  20.  
  21.     if ((rest == 10) || (rest == 11))  rest = 0;
  22.     if (rest != parseInt(strCPF.substring(10, 11) ) ) return false;
  23.     return true;
  24. }
  25.  
  26. function validateCNPJ(cnpj) {
  27.  
  28.     cnpj = cnpj.replace(/[^\d]+/g,'');
  29.  
  30.     if(cnpj == '') return false;
  31.  
  32.     if (cnpj.length != 14)
  33.         return false;
  34.  
  35.     // Known invalid CNPJ list
  36.     if (cnpj == "00000000000000" ||
  37.         cnpj == "11111111111111" ||
  38.         cnpj == "22222222222222" ||
  39.         cnpj == "33333333333333" ||
  40.         cnpj == "44444444444444" ||
  41.         cnpj == "55555555555555" ||
  42.         cnpj == "66666666666666" ||
  43.         cnpj == "77777777777777" ||
  44.         cnpj == "88888888888888" ||
  45.         cnpj == "99999999999999")
  46.         return false;
  47.  
  48.     // Validate Verifier Digit
  49.     size = cnpj.length - 2
  50.     numbers = cnpj.substring(0,size);
  51.     digits = cnpj.substring(size);
  52.     sum = 0;
  53.     pos = size - 7;
  54.     for (i = size; i >= 1; i--) {
  55.         sum += numbers.charAt(size - i) * pos--;
  56.         if (pos < 2)
  57.             pos = 9;
  58.     }
  59.     result = sum % 11 < 2 ? 0 : 11 - sum % 11;
  60.     if (result != digits.charAt(0))
  61.         return false;
  62.  
  63.     size = size + 1;
  64.     numbers = cnpj.substring(0,size);
  65.     sum = 0;
  66.     pos = size - 7;
  67.     for (i = size; i >= 1; i--) {
  68.         sum += numbers.charAt(size - i) * pos--;
  69.         if (pos < 2)
  70.             pos = 9;
  71.     }
  72.     result = sum % 11 < 2 ? 0 : 11 - sum % 11;
  73.     if (result != digits.charAt(1))
  74.         return false;
  75.  
  76.     return true;
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement