UNPKG

@satheshsat/angular-cnpj

Version:

CNPJ generator and validator

63 lines 8.3 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class CnpjService { constructor() { } validate(cnpj) { if (!cnpj) return false; cnpj = cnpj.toString().replace(/\D+/g, ''); // Valida tamanho if (+cnpj.length !== 14) return false; // Valida primeiro dígito verificador for (var i = 0, j = 5, soma = 0; i < 12; i++) { soma += cnpj[i] * j; j = (+j === 2) ? 9 : j - 1; } var resto = soma % 11; if (+cnpj[12] !== +(resto < 2 ? 0 : 11 - resto)) return false; // Valida segundo dígito verificador for (i = 0, j = 6, soma = 0; i < 13; i++) { soma += cnpj[i] * j; j = (+j === 2) ? 9 : j - 1; } resto = soma % 11; return +cnpj[13] === +(resto < 2 ? 0 : 11 - resto); } generate() { var cnpj = '' + Math.floor(10000000 + Math.random() * 90000000) + '0001'; var reverseCnpj = cnpj.toString().split('').reverse(); var d1 = 0, d2 = 0; for (var i = 0; i < reverseCnpj.length; i++) { if ((i + 2) < 10) d1 += reverseCnpj[i] * (2 + i); else d1 += reverseCnpj[i] * (2 + i - 8); if ((i + 3) < 10) d2 += reverseCnpj[i] * (3 + i); else d2 += reverseCnpj[i] * (3 + i - 8); } d1 = 11 - (this.mod(d1, 11)); if (d1 >= 10) d1 = 0; d2 += d1 * 2; d2 = 11 - (this.mod(d2, 11)); if (d2 >= 10) d2 = 0; return '' + cnpj + d1 + d2; } mod(dividendo, divisor) { return Math.round(dividendo - (Math.floor(dividendo / divisor) * divisor)); } } CnpjService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CnpjService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); CnpjService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CnpjService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CnpjService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY25wai5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY25wai9zcmMvbGliL2NucGouc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sV0FBVztJQUV0QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRLENBQUMsSUFBUztRQUNoQixJQUFHLENBQUMsSUFBSTtZQUNKLE9BQU8sS0FBSyxDQUFDO1FBRWpCLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRTtZQUNyQixPQUFPLEtBQUssQ0FBQztRQUNmLHFDQUFxQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDNUM7WUFDRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO1FBQ0gsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUM7UUFDZixvQ0FBb0M7UUFDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUN4QztZQUNFLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7UUFDRCxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUMsTUFBTSxDQUFDO1FBQ3JFLElBQUksV0FBVyxHQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0QsSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLENBQUM7UUFDZCxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUVyQyxJQUFHLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLEVBQUU7Z0JBQ1QsRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBRTNCLEVBQUUsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9CLElBQUcsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsRUFBRTtnQkFDVCxFQUFFLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFFM0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFFLENBQUUsQ0FBQztRQUNqQyxJQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ1gsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNULEVBQUUsSUFBRSxFQUFFLEdBQUMsQ0FBQyxDQUFDO1FBRVQsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBRSxDQUFFLENBQUM7UUFDakMsSUFBSyxFQUFFLElBQUksRUFBRTtZQUNYLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVCxPQUFPLEVBQUUsR0FBQyxJQUFJLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsR0FBRyxDQUFFLFNBQWlCLEVBQUUsT0FBZTtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUUsU0FBUyxHQUFHLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBRSxTQUFTLEdBQUcsT0FBTyxDQUFFLEdBQUcsT0FBTyxDQUFFLENBQUUsQ0FBQztJQUNyRixDQUFDOzt5R0E1RFUsV0FBVzs2R0FBWCxXQUFXLGNBRlYsTUFBTTs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ25walNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgdmFsaWRhdGUoY25wajogYW55KXtcbiAgICBpZighY25wailcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY25waiA9IGNucGoudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEQrL2csICcnKTtcbiAgICAvLyBWYWxpZGEgdGFtYW5ob1xuICAgIGlmICgrY25wai5sZW5ndGggIT09IDE0KVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFZhbGlkYSBwcmltZWlybyBkw61naXRvIHZlcmlmaWNhZG9yXG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSA1LCBzb21hID0gMDsgaSA8IDEyOyBpKyspXG4gICAge1xuICAgICAgc29tYSArPSBjbnBqW2ldICogajtcbiAgICAgIGogPSAoK2ogPT09IDIpID8gOSA6IGogLSAxO1xuICAgICAgfVxuICAgIHZhciByZXN0byA9IHNvbWEgJSAxMTtcbiAgICBpZiAoK2NucGpbMTJdICE9PSArKHJlc3RvIDwgMiA/IDAgOiAxMSAtIHJlc3RvKSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBWYWxpZGEgc2VndW5kbyBkw61naXRvIHZlcmlmaWNhZG9yXG4gICAgZm9yIChpID0gMCwgaiA9IDYsIHNvbWEgPSAwOyBpIDwgMTM7IGkrKylcbiAgICB7XG4gICAgICBzb21hICs9IGNucGpbaV0gKiBqO1xuICAgICAgaiA9ICgraiA9PT0gMikgPyA5IDogaiAtIDE7XG4gICAgfVxuICAgIHJlc3RvID0gc29tYSAlIDExO1xuICAgIHJldHVybiArY25walsxM10gPT09ICsocmVzdG8gPCAyID8gMCA6IDExIC0gcmVzdG8pO1xuICB9XG5cbiAgZ2VuZXJhdGUoKXtcbiAgICB2YXIgY25waiA9ICcnK01hdGguZmxvb3IoMTAwMDAwMDAgKyBNYXRoLnJhbmRvbSgpICogOTAwMDAwMDApKycwMDAxJztcbiAgICB2YXIgcmV2ZXJzZUNucGo6IGFueSA9IGNucGoudG9TdHJpbmcoKS5zcGxpdCgnJykucmV2ZXJzZSgpO1xuICAgIHZhciBkMT0wLGQyPTA7XG4gICAgZm9yKHZhciBpPTA7IGk8cmV2ZXJzZUNucGoubGVuZ3RoOyBpKyspe1xuICBcbiAgICAgIGlmKChpKzIpPDEwKVxuICAgICAgICBkMSArPSByZXZlcnNlQ25waltpXSooMitpKTtcbiAgICAgIGVsc2VcbiAgICAgICAgZDEgKz0gcmV2ZXJzZUNucGpbaV0qKDIraS04KTtcbiAgXG4gICAgICBpZigoaSszKTwxMClcbiAgICAgICAgZDIgKz0gcmV2ZXJzZUNucGpbaV0qKDMraSk7XG4gICAgICBlbHNlXG4gICAgICAgIGQyICs9IHJldmVyc2VDbnBqW2ldKigzK2ktOCk7XG4gICAgfVxuICAgIGQxID0gMTEgLSAoIHRoaXMubW9kKCBkMSwgMTEgKSApO1xuICAgIGlmICggZDEgPj0gMTAgKSBcbiAgICAgIGQxID0gMDtcbiAgICBkMis9ZDEqMjtcbiAgXG4gICAgZDIgPSAxMSAtICggdGhpcy5tb2QoIGQyLCAxMSApICk7XG4gICAgaWYgKCBkMiA+PSAxMCApIFxuICAgICAgZDIgPSAwO1xuICAgIHJldHVybiAnJytjbnBqK2QxK2QyO1xuICB9XG5cbiAgbW9kKCBkaXZpZGVuZG86IG51bWJlciwgZGl2aXNvcjogbnVtYmVyICkge1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoIGRpdmlkZW5kbyAtICggTWF0aC5mbG9vciggZGl2aWRlbmRvIC8gZGl2aXNvciApICogZGl2aXNvciApICk7XG4gIH1cbn1cbiJdfQ==