Generator i validator CNPJ-a za Brazil za testiranje
Generišite važeće brazilske CNPJ brojeve i validirajte postojeće pomoću ovog jednostavnog alata dizajniranog za programere i testere koji rade sa brazilski poslovnim identifikatorima.
Generator i Validator za Brazilian CNPJ
Generator CNPJ
Generišite važeći brazilski CNPJ broj za testiranje.
Validator CNPJ
Proverite da li je brazilski CNPJ broj važeći.
Dokumentacija
Generator i Validator CNPJ-a za Brazil
Uvod
CNPJ (Cadastro Nacional da Pessoa Jurídica) je jedinstveni identifikacioni broj koji se dodeljuje preduzećima i pravnim licima u Brazilu. Ovaj alat za generisanje i validaciju CNPJ-a pruža jednostavan i efikasan način za generisanje validnih CNPJ brojeva u svrhe testiranja i validaciju postojećih CNPJ brojeva prema zvaničnom brazilskom algoritmu. Bilo da ste programer koji testira aplikacije koje obrađuju podatke o brazilskim preduzećima, QA profesionalac koji kreira test slučajeve, ili bilo ko ko radi sa informacijama o brazilskim kompanijama, ovaj alat pojednostavljuje proces rada sa CNPJ brojevima.
Za razliku od pravih CNPJ brojeva koji se zvanično izdaju od strane Brazilske federacije (Receita Federal), CNPJ-ovi generisani ovim alatom su matematički validni, ali nisu registrovani na stvarne kompanije. Ovo ih čini savršenim za testne scenarije, uzorke podataka i razvojna okruženja gde su potrebni pravilno formatirani i validni CNPJ brojevi bez korišćenja pravih identifikatora preduzeća.
Šta je CNPJ?
CNPJ (Cadastro Nacional da Pessoa Jurídica) je 14-cifreni identifikacioni broj koji dodeljuje Brazilska federacija preduzećima i pravnim licima. On služi kao brazilski ekvivalent broju registracije preduzeća ili poreskom identifikatoru. Svako preduzeće koje legalno posluje u Brazilu mora imati CNPJ, koji se koristi za:
- Izveštavanje i usklađenost sa porezima
- Registraciju preduzeća kod vladinih agencija
- Otvaranje bankovnih računa
- Izdavanje faktura i računa
- Učešće u vladinim tenderima
- Uvoz i izvoz dobara
CNPJ je osnovni identifikator u brazilskom poslovnom ekosistemu i pojavljuje se na zvaničnim dokumentima, ugovorima i finansijskim izveštajima.
Struktura i Format CNPJ-a
Brazilski CNPJ se sastoji od 14 cifara, obično formatiranih kao: XX.XXX.XXX/YYYY-ZZ
Struktura se deli na sledeći način:
- Prvih 8 cifara (XX.XXX.XXX): Osnovni broj dodeljen kompaniji
- 4 cifre nakon kose crte (YYYY): Identifikator podružnice (0001 za glavnu kancelariju, drugi brojevi za podružnice)
- Poslednje 2 cifre (ZZ): Proverne cifre za validaciju
Na primer, pravilno formatiran CNPJ može izgledati ovako: 12.345.678/0001-95
Proverne cifre (poslednje dve cifre) se izračunavaju koristeći specifični matematički algoritam koji validira autentičnost CNPJ-a. Ovaj algoritam osigurava da nasumično generisani brojevi ne mogu proći validaciju bez praćenja pravilne metode izračunavanja.
Kako funkcioniše validacija CNPJ-a
Algoritam za validaciju CNPJ-a koristi ponderisanu kalkulaciju za određivanje provernih cifara. Evo kako to funkcioniše:
Prva Proverna Cifra
- Pomnožite svaku od prvih 12 cifara sa redosledom težina: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Saberite rezultate ovih množenja
- Izračunajte ostatak ovog zbira podeljenog sa 11
- Ako je ostatak manji od 2, prva proverna cifra je 0; inače, to je 11 minus ostatak
Druga Proverna Cifra
- Pomnožite svaku od prvih 13 cifara (uključujući prvu provernu cifru) sa redosledom težina: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- Saberite rezultate ovih množenja
- Izračunajte ostatak ovog zbira podeljenog sa 11
- Ako je ostatak manji od 2, druga proverna cifra je 0; inače, to je 11 minus ostatak
Da bi CNPJ bio validan, obe proverne cifre moraju odgovarati izračunatim vrednostima.
Kako koristiti ovaj alat
Naš alat za generisanje i validaciju CNPJ-a nudi dve glavne funkcije: generisanje validnih CNPJ-a i validaciju postojećih CNPJ brojeva.
Generisanje CNPJ-a
Da biste generisali validan CNPJ u svrhe testiranja:
- Idite na odeljak "Generator CNPJ" alata
- Kliknite na dugme "Generiši CNPJ"
- Matematički validan CNPJ će se pojaviti u formatiranom prikazu
- Koristite dugme "Kopiraj" da biste kopirali generisani CNPJ u svoj međuspremnik
Generisani CNPJ će pratiti sve matematičke validacione pravila pravog CNPJ-a, ali nije registrovan kod Brazilske federacije.
Validacija CNPJ-a
Da biste proverili da li je CNPJ matematički validan:
- Idite na odeljak "Validator CNPJ" alata
- Unesite CNPJ koji želite da validirate u ulazno polje
- Alat prihvata CNPJ-eve sa ili bez formatiranja (tačaka, kose crte i crtica)
- Kliknite na dugme "Validiraj"
- Alat će prikazati da li je CNPJ validan ili nevalidan na osnovu algoritma provernih cifara
Validator proverava da li CNPJ prati ispravan format i da li proverne cifre odgovaraju očekivanim vrednostima prema validacionom algoritmu.
Slučajevi korišćenja
Ovaj alat za generisanje i validaciju CNPJ-a je posebno koristan u sledećim scenarijima:
Razvoj Softvera i Testiranje
- Kreiranje Test Podataka: Generišite validne CNPJ-eve za popunjavanje test baza podataka bez korišćenja pravih identifikatora kompanija
- Jedinično Testiranje: Validirajte funkcije obrade CNPJ-a u vašem kodu sa poznatim validnim i nevalidnim primerima
- QA Testiranje: Kreirajte test slučajeve za forme i interfejse koji zahtevaju unos CNPJ-a
- Integraciono Testiranje: Testirajte sisteme koji razmenjuju podatke sa brazilskim vladinim službama ili finansijskim institucijama
Obrazovanje i Obuka
- Učenje Formata CNPJ-a: Razumite kako su strukturirani brazilski identifikatori preduzeća
- Studija Algoritama: Istražite kako funkcioniše validacija provernih cifara u praksi
- Tehnike Validacije Podataka: Istražite stvarne primere zahteva za validaciju podataka
Obrada Podataka
- Čišćenje Podataka: Validirajte CNPJ-eve u postojećim skupovima podataka kako biste identifikovali potencijalne greške
- Validacija Formi: Implementirajte validaciju na strani klijenta ili servera za unose CNPJ-a
- Anonimizacija Podataka: Zamenite prave CNPJ-eve generisanim kada pripremate skupove podataka za analizu
Međunarodno Poslovanje
- Priprema za Ulazak na Tržište: Razumite zahteve za identifikaciju preduzeća u Brazilu
- Priprema Dokumenata: Osigurajte ispravno formatiranje prilikom pripreme poslovnih dokumenata za Brazil
- Provera Usklađenosti: Proverite da li su prikupljeni CNPJ-evi barem matematički validni
Alternativa
Dok naš alat pruža jednostavno rešenje zasnovano na pretraživaču za generisanje i validaciju CNPJ-a, postoji nekoliko alternativa u zavisnosti od vaših specifičnih potreba:
Biblioteke za Programiranje
Za programere koji integrišu validaciju CNPJ-a direktno u aplikacije, dostupne su nekoliko biblioteka specifičnih za jezike:
- JavaScript:
cpf_cnpj.js
,validator.js
- Python:
python-cnpj
,validate-docbr
- PHP:
brazilianutils
,respect/validation
- Java:
caelum-stella
,commons-validator
- Ruby:
cpf_cnpj
,brazilian-rails
Ove biblioteke često pružaju dodatnu funkcionalnost kao što su formatiranje, parsiranje i validacija drugih brazilskih dokumenata.
API Usluge
Za aplikacije koje zahtevaju validaciju bez implementacije algoritma:
- Brazilski vladini API-ji (zahteva registraciju)
- Komercijalni API-ji za validaciju koji uključuju proveru CNPJ-a
- Usluge informacija o preduzećima koje validiraju prema zvaničnoj bazi podataka
Ručno Izračunavanje
Za obrazovne svrhe ili jednokratne validacije, možete ručno primeniti algoritam:
- Izdvojite prvih 12 cifara CNPJ-a
- Izvršite ponderisane kalkulacije kao što je opisano ranije
- Uporedite izračunate proverne cifre sa stvarnim provernim ciframa
Međutim, ručno izračunavanje je sklono greškama i neefikasno za redovnu upotrebu.
Tehnička Implementacija
Generator i validator CNPJ-a u ovom alatu su implementirani koristeći JavaScript, što ga čini brzim i sposobnim za rad isključivo u vašem pretraživaču bez slanja vaših podataka na server. Evo kako funkcionišu osnovne funkcije:
Algoritam za Generisanje CNPJ-a
1function generateCNPJ() {
2 // Generiši prvih 12 cifara nasumično
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Izračunaj prvu provernu cifru
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Izračunaj drugu provernu cifru
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Formatiraj CNPJ
14 return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18 const weights = digits.length < 13
19 ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
20 : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21
22 const sum = digits.reduce((acc, digit, index) => {
23 return acc + digit * weights[index];
24 }, 0);
25
26 const remainder = sum % 11;
27 return remainder < 2 ? 0 : 11 - remainder;
28}
29
Algoritam za Validaciju CNPJ-a
1function validateCNPJ(cnpj) {
2 // Ukloni ne-numeričke karaktere
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Proveri da li ima ispravnu dužinu
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Proveri poznate nevalidne obrasce (svi isti cifre)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Pretvori u niz cifara
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Proveri prvu provernu cifru
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Proveri drugu provernu cifru
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
Funkcija za Formatiranje CNPJ-a
1function formatCNPJ(cnpj) {
2 // Ukloni ne-numeričke karaktere
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formatiraj prema dužini
6 if (cleanCNPJ.length <= 2) {
7 return cleanCNPJ;
8 } else if (cleanCNPJ.length <= 5) {
9 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10 } else if (cleanCNPJ.length <= 8) {
11 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12 } else if (cleanCNPJ.length <= 12) {
13 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14 } else {
15 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16 }
17}
18
Ove osnovne funkcije mogu biti implementirane u drugim programskim jezicima prateći istu logiku. Evo primera u Pythonu i Javi:
Python Implementacija
1import random
2
3def calculate_check_digit(digits):
4 weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5
6 total = 0
7 for i in range(len(digits)):
8 total += digits[i] * weights[i]
9
10 remainder = total % 11
11 return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14 # Generiši prvih 12 cifara nasumično
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Izračunaj prvu provernu cifru
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Izračunaj drugu provernu cifru
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Formatiraj CNPJ
26 cnpj = ''.join(map(str, digits))
27 return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30 # Ukloni ne-numeričke karaktere
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Proveri dužinu
34 if len(cnpj) != 14:
35 return False
36
37 # Proveri da li su svi cifre iste
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Pretvori u niz cifara
42 digits = [int(d) for d in cnpj]
43
44 # Validiraj prvu provernu cifru
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Validiraj drugu provernu cifru
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
Java Implementacija
1import java.util.Random;
2
3public class CNPJUtils {
4
5 public static String generateCNPJ() {
6 Random random = new Random();
7 int[] digits = new int[14];
8
9 // Generiši prvih 12 cifara nasumično
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Izračunaj prvu provernu cifru
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Izračunaj drugu provernu cifru
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Formatiraj CNPJ
21 return String.format("%02d.%03d.%03d/%04d-%02d",
22 digits[0] * 10 + digits[1],
23 digits[2] * 100 + digits[3] * 10 + digits[4],
24 digits[5] * 100 + digits[6] * 10 + digits[7],
25 digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26 digits[12] * 10 + digits[13]);
27 }
28
29 private static int calculateCheckDigit(int[] digits, int length) {
30 int[] weights = length < 13
31 ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32 : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33
34 int sum = 0;
35 for (int i = 0; i < length; i++) {
36 sum += digits[i] * weights[i];
37 }
38
39 int remainder = sum % 11;
40 return remainder < 2 ? 0 : 11 - remainder;
41 }
42
43 public static boolean validateCNPJ(String cnpj) {
44 // Ukloni ne-numeričke karaktere
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Proveri dužinu
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Proveri da li su svi cifre iste
53 boolean allDigitsSame = true;
54 for (int i = 1; i < cnpj.length(); i++) {
55 if (cnpj.charAt(i) != cnpj.charAt(0)) {
56 allDigitsSame = false;
57 break;
58 }
59 }
60 if (allDigitsSame) {
61 return false;
62 }
63
64 // Pretvori u niz cifara
65 int[] digits = new int[14];
66 for (int i = 0; i < 14; i++) {
67 digits[i] = Character.getNumericValue(cnpj.charAt(i));
68 }
69
70 // Validiraj prvu provernu cifru
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Validiraj drugu provernu cifru
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Važne Napomene
Kada koristite ovaj alat za generisanje i validaciju CNPJ-a, imajte na umu sledeće napomene:
Pravni i Eticki Aspekti
- Nije za Prevaru: Generisani CNPJ-evi nikada ne bi trebalo da se koriste u prevarantske svrhe ili obmanu
- Samo za Testiranje: Ovi CNPJ-evi su samo za svrhe testiranja i razvoja
- Nisu Registrovani: Generisani CNPJ-evi su matematički validni, ali nisu registrovani kod brazilskih vlasti
- Nema Stvarnu Validnost: Ne mogu se koristiti za stvarnu registraciju preduzeća ili poreske svrhe
Tehničke Ograničenja
- Nema Informacija o Preduzećima: Generisani CNPJ-evi ne sadrže stvarne kodove sektora preduzeća ili informacije o lokaciji
- Nema Provere Baze Podataka: Validator proverava samo matematičku validnost, ne status registracije
- Različiti Formati: Iako alat obrađuje uobičajene varijacije formatiranja, neki sistemi mogu zahtevati specifične formate
Bezbednosna Razmatranja
- Obrada na Klijentskoj Strani: Sva obrada se vrši u vašem pretraživaču; nijedni podaci se ne šalju na servere
- Nema Čuvanja Podataka: Generisani CNPJ-evi se ne čuvaju ili beleže
- Nema Ličnih Podataka: Alat ne obrađuje ili ne rukuje nijednim ličnim informacijama
Često Postavljana Pitanja
Čemu služi CNPJ u Brazilu?
CNPJ je nacionalni registracioni broj za preduzeća i pravna lica u Brazilu. Koristi se za poreske svrhe, registraciju preduzeća, otvaranje bankovnih računa i identifikaciju kompanija u zvaničnim transakcijama.
Da li su CNPJ-evi generisani ovim alatom pravi?
Ne. CNPJ-evi generisani ovim alatom su matematički validni prema algoritmu provernih cifara, ali nisu registrovani kod Brazilske federacije i ne pripadaju stvarnim kompanijama.
Mogu li koristiti generisane CNPJ-eve za svoje preduzeće?
Ne. Da biste dobili legitimni CNPJ za preduzeće, morate se registrovati kod Brazilske federacije (Receita Federal) prateći zvanični proces. Generisani CNPJ-evi su samo za svrhe testiranja.
Kako mogu da proverim da li CNPJ pripada stvarnoj kompaniji?
Da biste proverili da li je CNPJ registrovan na stvarnu kompaniju, potrebno je da konsultujete bazu podataka Brazilske federacije. Naš alat samo proverava da li je CNPJ matematički validan, a ne da li je zvanično registrovan.
Zašto validator odbacuje CNPJ sa svim istim ciframa?
CNPJ-evi sa svim istim ciframa (kao što su 11.111.111/1111-11) automatski se smatraju nevalidnim, čak i ako matematički prolaze algoritam provernih cifara. Ovo je pravilo koje je uspostavila Brazilska federacija.
Da li alat čuva CNPJ-eve koje generišem ili validiram?
Ne. Sva obrada se vrši u vašem pretraživaču, i ne čuvamo ili prenosimo nijedne CNPJ-eve koje generišete ili validirate.
Mogu li generisati više CNPJ-eva odjednom?
Trenutna verzija alata generiše jedan CNPJ odjednom. Za masovno generisanje, možda biste želeli da razmotrite korišćenje jedne od biblioteka koje su pomenute u odeljku Alternativa.
Zašto je format XX.XXX.XXX/XXXX-XX važan?
Ovo je zvanični format koji zahtevaju brazilske vlasti. Specifično grupisanje pomaže u identifikaciji različitih komponenti CNPJ-a, kao što su osnovni broj i identifikator podružnice.
Kako da validiram CNPJ programatski?
Možete implementirati algoritam za validaciju u vašem omiljenom programskom jeziku koristeći primere koda navedene u odeljku Tehnička Implementacija, ili koristiti jednu od biblioteka pomenutih u odeljku Alternativa.
Da li postoje posebni CNPJ-evi za vladine entitete?
Da. Vladini entiteti u Brazilu imaju specifične obrasce CNPJ-a. Na primer, federalni vladini entiteti često počinju sa specifičnim ciframa. Naš generator stvara nasumične CNPJ-eve i ne generiše specifične CNPJ-eve za vladine entitete.
Reference
- Brazilska federacija (Receita Federal do Brasil) - Zvanična Web Stranica
- "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Vikipedija
- Brazilski Građanski Zakonik (Zakon br. 10.406/2002) - Pravni okvir za pravna lica u Brazilu
- Normativna Uredba o Registraciji Preduzeća u Brazilu (IN RFB br. 1863/2018) - Propisi o registraciji CNPJ-a
Isprobajte Sada
Naš alat za generisanje i validaciju CNPJ-a čini rad sa ovim identifikacionim brojevima jednostavnim i efikasnim. Bilo da testirate aplikacije, pripremate uzorke podataka ili validirate postojeće CNPJ-eve, ovaj alat pruža jednostavno rešenje bez složenosti integracija API-ja ili naprednih konfiguracija.
Generišite svoj prvi validan CNPJ sada ili validirajte postojeći koristeći naš jednostavan interfejs!
Povratne informacije
Kliknite na obaveštenje o povratnim informacijama da biste započeli davanje povratnih informacija o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni tok