Last active
September 30, 2016 03:21
-
-
Save rod-stuchi/951928b8772b00146e521ac54ab8073e to your computer and use it in GitHub Desktop.
Gerador CPF e CNPJ em Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//es2015 syntaxe | |
console.clear(); | |
String.prototype.repeat = String.prototype.repeat || function(n){ | |
return n<=1 ? this : (this + this.repeat(n-1)); | |
} | |
String.prototype.padLeft = function(char, length) { | |
return char.repeat(Math.max(0, length - this.length)) + this; | |
} | |
let random = (min, max, pad) => | |
(~~(Math.random() * (max - min) + min)) | |
.toString() | |
.padLeft((~~(Math.random() * (10))).toString(), pad); | |
function CPFGenerator(formated = false) { | |
let calculateDig = (precpf) => { | |
let len = precpf.length + 1; | |
let numbers = precpf.split('').map((n) => parseInt(n)); | |
let sum = ((arr) => { | |
let r = 0; | |
for (var i = len; i >= 2; i--) { | |
r += i * arr[len - i]; | |
} | |
return r; | |
})(numbers); | |
let mod = sum % 11; | |
let dig = mod < 2 ? 0 : 11 - mod; | |
return precpf + dig; | |
} | |
let format = (cpf) => { | |
let arr = cpf.split(''); | |
arr.splice(3, 0, "."); | |
arr.splice(7, 0, "."); | |
arr.splice(11, 0, "-"); | |
return arr.join(''); | |
} | |
let cpf = "".concat(random(1, 1000, 3), random(0, 1000, 3), random(0, 1000, 3)); | |
cpf = calculateDig(calculateDig(cpf)) | |
return formated ? format(cpf) : cpf; | |
} | |
function CPNJGenerator(formated = false) { | |
let calculateDig = (precnpj) => { | |
let arr = precnpj.split('').map((n) => parseInt(n)); | |
let len = arr.length; | |
let start = len == 12 ? 5 : 6; | |
let first = true; | |
let p = 0 | |
let sum = 0; | |
for (var i = start; i > 1; i--) { | |
sum += i * arr[p++] | |
if (i == 2 && first) { | |
i = 10; | |
first = false; | |
} | |
} | |
let mod = sum % 11; | |
let dig = mod < 2 ? 0 : 11 - mod; | |
return precnpj + dig; | |
} | |
let format = (cnpj) => { | |
let arr = cnpj.split(''); | |
arr.splice(2, 0, "."); | |
arr.splice(6, 0, "."); | |
arr.splice(10, 0, "/"); | |
arr.splice(15, 0, "-"); | |
return arr.join(''); | |
} | |
let cpnj = "".concat(random(0,100, 2), random(0, 1000, 3), random(0, 1000, 3)) + "000" + (random(1, 4, 0)); | |
cpnj = calculateDig(calculateDig(cpnj)) | |
return formated ? format(cpnj) : cpnj; | |
} | |
[...Array(10)].map((x, i) => { | |
console.log(CPFGenerator(true)) | |
}); | |
[...Array(10)].map((x, i) => { | |
console.log(CPNJGenerator(true)) | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment