Skip to content

Instantly share code, notes, and snippets.

@rod-stuchi
Last active September 30, 2016 03:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rod-stuchi/951928b8772b00146e521ac54ab8073e to your computer and use it in GitHub Desktop.
Save rod-stuchi/951928b8772b00146e521ac54ab8073e to your computer and use it in GitHub Desktop.
Gerador CPF e CNPJ em Javascript
//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