Ustvarite veljavne številke CNPJ v Braziliji in preverite obstoječe s tem preprostim orodjem, namenjenim razvijalcem in testerjem, ki delajo z brazilskimi poslovnimi ID-ji.
Ustvarite veljavno številko CNPJ za testne namene.
Preverite, ali je številka CNPJ veljavna.
Brazilian CNPJ (Cadastro Nacional da Pessoa Jurídica) je edinstvena identifikacijska številka, dodeljena podjetjem in pravnim osebam v Braziliji. Ta generator in validator za CNPJ ponuja preprost in učinkovit način za generiranje veljavnih številk CNPJ za testne namene in validacijo obstoječih številk CNPJ v skladu z uradnim brazilskim algoritmom. Ne glede na to, ali ste razvijalec, ki testira aplikacije, ki obravnavajo podatke o brazilskih podjetjih, strokovnjak za QA, ki ustvarja testne primere, ali kdorkoli, ki dela z informacijami o brazilskih podjetjih, ta orodje poenostavi postopek dela s številkami CNPJ.
V nasprotju z resničnimi številkami CNPJ, ki jih uradno izdaja brazilska zvezna davčna uprava (Receita Federal), so CNPJi, ki jih generira to orodje, matematično veljavni, vendar niso registrirani pri dejanskih podjetjih. To jih naredi popolne za testne scenarije, vzorčne podatke in razvojna okolja, kjer potrebujete pravilno oblikovane in veljavne številke CNPJ brez uporabe pravih poslovnih identifikatorjev.
CNPJ (Cadastro Nacional da Pessoa Jurídica) je 14-mestna identifikacijska številka, ki jo dodeli brazilska zvezna davčna uprava podjetjem in pravnim osebam. Služi kot brazilski ekvivalent številki registracije podjetja ali davčni ID. Vsako podjetje, ki legalno deluje v Braziliji, mora imeti CNPJ, ki se uporablja za:
CNPJ je bistven identifikator v brazilskem poslovnem ekosistemu in se pojavlja na uradnih dokumentih, pogodbah in finančnih evidencah.
Brazilski CNPJ se sestavlja iz 14 številk, običajno oblikovanih kot: XX.XXX.XXX/YYYY-ZZ
Struktura se razdeli na naslednje:
Na primer, pravilno oblikovan CNPJ bi lahko izgledal tako: 12.345.678/0001-95
Kontrolne številke (zadnji dve številki) se izračunajo z uporabo specifičnega matematičnega algoritma, ki potrjuje avtentičnost CNPJ. Ta algoritem zagotavlja, da naključno generirane številke ne morejo prestati validacije, ne da bi sledile pravilni metodi izračuna.
Algoritem za validacijo CNPJ uporablja tehtano izračunavanje za določitev kontrolnih številk. Tukaj je, kako deluje:
Da je CNPJ veljaven, morata se ujemati obe kontrolni številki s pričakovanimi vrednostmi.
Naše orodje za generator in validator CNPJ ponuja dve glavni funkciji: generiranje veljavnih CNPJ-jev in validacijo obstoječih številk CNPJ.
Za generiranje veljavnega CNPJ za testne namene:
Generirani CNPJ bo sledil vsem matematičnim pravilom validacije pravega CNPJ, vendar ni registriran pri brazilski zvezni davčni upravi.
Za preverjanje, ali je CNPJ matematično veljaven:
Validator preveri, ali CNPJ sledi pravilni obliki in ali se kontrolne številke ujemajo s pričakovanimi vrednostmi v skladu z validacijskim algoritmom.
To orodje za generator in validator CNPJ je še posebej uporabno v naslednjih scenarijih:
Medtem ko naše orodje ponuja preprosto, spletno rešitev za generiranje in validacijo CNPJ-jev, obstaja več alternativ, odvisno od vaših specifičnih potreb:
Za razvijalce, ki integrirajo validacijo CNPJ neposredno v aplikacije, je na voljo več knjižnic, specifičnih za jezike:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Te knjižnice pogosto nudijo dodatne funkcionalnosti, kot so oblikovanje, razčlenjevanje in validacija drugih brazilskih dokumentov.
Za aplikacije, ki zahtevajo validacijo brez izvajanja algoritma:
Za izobraževalne namene ali enkratne validacije lahko ročno uporabite algoritem:
Vendar pa je ročni izračun nagnjen k napakam in neučinkovit za redno uporabo.
Generator in validator CNPJ v tem orodju sta implementirana z uporabo JavaScript-a, kar omogoča hitro delovanje in delovanje povsem v vašem brskalniku brez pošiljanja vaših podatkov na strežnik. Tukaj je, kako delujejo osnovne funkcije:
1function generateCNPJ() {
2 // Naključno generirajte prvih 12 številk
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Izračunajte prvo kontrolno številko
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Izračunajte drugo kontrolno številko
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Oblikujte 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
1function validateCNPJ(cnpj) {
2 // Odstranite nenumerične znake
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Preverite, ali ima pravilno dolžino
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Preverite znane neveljavne vzorce (vse iste številke)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Pretvorite v tabelo številk
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Preverite prvo kontrolno številko
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Preverite drugo kontrolno številko
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
1function formatCNPJ(cnpj) {
2 // Odstranite nenumerične znake
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Oblika glede na dolžino
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
Te osnovne funkcije je mogoče implementirati v drugih programskih jezikih, ki sledijo isti logiki. Tukaj so primeri v Pythonu in Javi:
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 # Naključno generirajte prvih 12 številk
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Izračunajte prvo kontrolno številko
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Izračunajte drugo kontrolno številko
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Oblikujte 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 # Odstranite nenumerične znake
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Preverite dolžino
34 if len(cnpj) != 14:
35 return False
36
37 # Preverite, ali so vse številke enake
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Pretvorite v seznam številk
42 digits = [int(d) for d in cnpj]
43
44 # Validirajte prvo kontrolno številko
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Validirajte drugo kontrolno številko
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
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 // Naključno generirajte prvih 12 številk
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Izračunajte prvo kontrolno številko
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Izračunajte drugo kontrolno številko
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Oblikujte 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 // Odstranite nenumerične znake
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Preverite dolžino
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Preverite, ali so vse številke enake
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 // Pretvorite v tabelo številk
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 // Validirajte prvo kontrolno številko
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Validirajte drugo kontrolno številko
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Ko uporabljate to orodje za generator in validator CNPJ, upoštevajte naslednja upoštevanja:
CNPJ je nacionalna registracijska številka za podjetja in pravne osebe v Braziliji. Uporablja se za davčne namene, registracijo podjetij, odpiranje bančnih računov in identifikacijo podjetij v uradnih transakcijah.
Ne. CNPJi, generirani s tem orodjem, so matematično veljavni v skladu z algoritmom kontrolnih številk, vendar niso registrirani pri brazilski zvezni davčni upravi in ne pripadajo pravim podjetjem.
Ne. Da bi pridobili legitimni CNPJ za podjetje, se morate registrirati pri brazilski zvezni davčni upravi (Receita Federal) v skladu z uradnim postopkom. Generirani CNPJi so namenjeni samo za testne namene.
Za preverjanje, ali je CNPJ registriran na dejansko podjetje, morate poiskati v bazi podatkov brazilske zvezne davčne uprave. Naše orodje preverja le, ali je CNPJ matematično veljaven, ne pa, ali je uradno registriran.
CNPJi z vsemi istimi številkami (kot npr. 11.111.111/1111-11) so samodejno obravnavani kot neveljavni, tudi če matematično prestanejo algoritem kontrolnih številk. To je pravilo, ki ga je določila brazilska zvezna davčna uprava.
Ne. Vsa obdelava poteka v vašem brskalniku, in ne shranjujemo ali prenašamo nobenih CNPJ-jev, ki jih generirate ali validirate.
Trenutna različica orodja generira en CNPJ naenkrat. Za množično generiranje morda želite razmisliti o uporabi ene od programskih knjižnic, omenjenih v razdelku Alternativne Rešitve.
To je uradna oblika, ki jo zahtevajo brazilski organi. Specifično grupiranje pomaga identificirati različne komponente CNPJ, kot so osnovna številka in identifikator podružnice.
Algoritem za validacijo lahko implementirate v svojem najljubšem programskem jeziku z uporabo primerov kode, ki so navedeni v razdelku Tehnična Implementacija, ali uporabite eno od knjižnic, omenjenih v razdelku Alternativne Rešitve.
Da. Vladne entitete v Braziliji imajo specifične vzorce CNPJ. Na primer, zvezne vladne entitete pogosto začnejo s specifičnimi številkami. Naš generator ustvarja naključne CNPJe in ne generira specifičnih CNPJ-jev za vladne entitete.
Naše orodje za generator in validator CNPJ omogoča preprosto in učinkovito delo s temi identifikacijskimi številkami. Ne glede na to, ali testirate aplikacije, pripravljate vzorčne podatke ali validirate obstoječe CNPJe, to orodje nudi preprosto rešitev brez zapletenosti integracij API-jev ali naprednih konfiguracij.
Generirajte svoj prvi veljavni CNPJ zdaj ali validirajte obstoječega z uporabo našega preprostega vmesnika!
Odkrijte več orodij, ki bi lahko bila koristna za vaš delovni proces