Unda nambari halali za CNPJ za Brazil na kuthibitisha zile zilizopo kwa kutumia chombo hiki rahisi kilichoundwa kwa ajili ya waendelezaji na wapimaji wanaofanya kazi na vitambulisho vya biashara vya Brazil.
Zalisha nambari halali ya CNPJ ya Brazil kwa madhumuni ya mtihani.
Angalia ikiwa nambari ya CNPJ ya Brazil ni halali.
CNPJ ya Brazil (Cadastro Nacional da Pessoa JurĂdica) ni nambari ya kipekee ya utambulisho inayotolewa kwa biashara na taasisi za kisheria nchini Brazil. Chombo hiki cha kizazi na uthibitishaji wa CNPJ cha Brazil kinatoa njia rahisi na yenye ufanisi ya kuzalisha nambari halali za CNPJ kwa madhumuni ya majaribio na kuthibitisha nambari za CNPJ zilizopo kulingana na algoriti rasmi ya Brazil. Iwe wewe ni mende wa programu akifanya majaribio ya programu zinazoshughulikia data za biashara za Brazil, mtaalamu wa QA akitengeneza kesi za majaribio, au mtu yeyote anayefanya kazi na taarifa za kampuni za Brazil, chombo hiki kinarahisisha mchakato wa kufanya kazi na nambari za CNPJ.
Tofauti na nambari halisi za CNPJ ambazo zinatolewa rasmi na Huduma ya Mapato ya Shirikisho la Brazil (Receita Federal), CNPJs zinazozalishwa na chombo hiki ni halali kimaadili lakini hazijasajiliwa kwa kampuni halisi. Hii inafanya kuwa bora kwa hali za majaribio, data za mfano, na mazingira ya maendeleo ambapo unahitaji nambari za CNPJ zilizoundwa vizuri na halali bila kutumia vitambulisho halisi vya biashara.
CNPJ (Cadastro Nacional da Pessoa JurĂdica) ni nambari ya utambulisho ya tarakimu 14 inayotolewa kwa biashara na taasisi za kisheria na Huduma ya Mapato ya Shirikisho la Brazil. Inatumika kama sawa na nambari ya usajili wa kampuni au ID ya kodi nchini Brazil. Kila biashara inayofanya kazi kisheria nchini Brazil lazima iwe na CNPJ, ambayo inatumika kwa:
CNPJ ni kitambulisho muhimu katika mfumo wa biashara wa Brazil na kinaonekana kwenye nyaraka rasmi, mikataba, na rekodi za kifedha.
CNPJ ya Brazil ina tarakimu 14, ambayo kawaida ina muundo kama: XX.XXX.XXX/YYYY-ZZ
Muundo huu unagawanyika kama ifuatavyo:
Kwa mfano, CNPJ iliyoandikwa vizuri inaweza kuonekana kama: 12.345.678/0001-95
Tarakimu za uthibitishaji (nambari mbili za mwisho) zinahesabiwa kwa kutumia algoriti maalum ya kihesabu ambayo inathibitisha uhalali wa CNPJ. Algoriti hii inahakikisha kwamba nambari zinazozalishwa kwa bahati mbaya haziwezi kupita uthibitishaji bila kufuata njia sahihi ya hesabu.
Algoriti ya uthibitishaji wa CNPJ inatumia hesabu yenye uzito ili kubaini tarakimu za uthibitishaji. Hapa kuna jinsi inavyofanya kazi:
Ili CNPJ iwe halali, tarakimu zote mbili za uthibitishaji zinapaswa kulingana na thamani zilizohesabiwa.
Chombo chetu cha Kizazi na Uthibitishaji wa CNPJ cha Brazil kinatoa kazi mbili kuu: kuzalisha CNPJs halali na kuthibitisha nambari za CNPJ zilizopo.
Ili kuzalisha CNPJ halali kwa madhumuni ya majaribio:
CNPJ iliyozalishwa itafuata sheria zote za uthibitishaji wa kihesabu za CNPJ halisi lakini haijasajiliwa na Huduma ya Mapato ya Shirikisho la Brazil.
Ili kuangalia ikiwa CNPJ ni halali kimaadili:
Mthibitishaji anachunguza ikiwa CNPJ inafuata muundo sahihi na ikiwa tarakimu za uthibitishaji zinalingana na thamani zinazotarajiwa kulingana na algoriti ya uthibitishaji.
Chombo hiki cha kizazi na uthibitishaji wa CNPJ cha Brazil ni muhimu sana katika hali zifuatazo:
Ingawa chombo chetu kinatoa suluhisho rahisi, chombo cha kivinjari kwa kuzalisha na kuthibitisha CNPJs, kuna mbadala kadhaa kulingana na mahitaji yako maalum:
Kwa waendelezaji wanaounganisha uthibitishaji wa CNPJ moja kwa moja katika maombi, maktaba kadhaa za lugha maalum zinapatikana:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Maktaba hizi mara nyingi hutoa kazi za ziada kama vile muundo, uchambuzi, na uthibitishaji wa nyaraka nyingine za Brazil.
Kwa maombi yanayohitaji uthibitishaji bila kutekeleza algoriti:
Kwa madhumuni ya elimu au uthibitishaji wa mara moja, unaweza kutekeleza algoriti kwa mikono:
Hata hivyo, hesabu ya mikono inaweza kuwa na makosa na sio bora kwa matumizi ya kawaida.
Chombo cha kizazi na uthibitishaji wa CNPJ katika chombo hiki kimeandikwa kwa kutumia JavaScript, na kufanya iwe haraka na yenye uwezo wa kufanya kazi kabisa katika kivinjari chako bila kutuma data yako kwa seva. Hapa kuna jinsi kazi kuu zinavyofanya kazi:
1function generateCNPJ() {
2 // Zalisha tarakimu 12 za kwanza kwa bahati nasibu
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Hesabu tarakimu ya kwanza ya uthibitishaji
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Hesabu tarakimu ya pili ya uthibitishaji
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Fanya muundo wa 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 // Ondoa alama zisizo za nambari
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Angalia ikiwa ina urefu sahihi
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Angalia mifumo isiyo halali inayojulikana (tarakimu zote sawa)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Geuza kuwa orodha ya tarakimu
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Thibitisha tarakimu ya uthibitishaji ya kwanza
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Thibitisha tarakimu ya uthibitishaji ya pili
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 // Ondoa alama zisizo za nambari
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Fanya muundo kulingana na urefu
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
Mifano hii ya msingi inaweza kutekelezwa katika lugha nyingine za programu kufuata mantiki ile ile. Hapa kuna mifano katika Python na Java:
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 # Zalisha tarakimu 12 za kwanza kwa bahati nasibu
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Hesabu tarakimu ya kwanza ya uthibitishaji
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Hesabu tarakimu ya pili ya uthibitishaji
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Fanya muundo wa 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 # Ondoa alama zisizo za nambari
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Angalia urefu
34 if len(cnpj) != 14:
35 return False
36
37 # Angalia ikiwa tarakimu zote ni sawa
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Geuza kuwa orodha ya tarakimu
42 digits = [int(d) for d in cnpj]
43
44 # Thibitisha tarakimu ya uthibitishaji ya kwanza
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Thibitisha tarakimu ya uthibitishaji ya pili
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 // Zalisha tarakimu 12 za kwanza kwa bahati nasibu
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Hesabu tarakimu ya kwanza ya uthibitishaji
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Hesabu tarakimu ya pili ya uthibitishaji
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Fanya muundo wa 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 // Ondoa alama zisizo za nambari
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Angalia urefu
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Angalia ikiwa tarakimu zote ni sawa
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 // Geuza kuwa orodha ya tarakimu
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 // Thibitisha tarakimu ya uthibitishaji ya kwanza
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Thibitisha tarakimu ya uthibitishaji ya pili
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Unapotumia chombo hiki cha kizazi na uthibitishaji wa CNPJ, zingatia mambo yafuatayo:
CNPJ ni nambari ya usajili wa kitaifa kwa biashara na taasisi za kisheria nchini Brazil. Inatumika kwa madhumuni ya kodi, usajili wa biashara, kufungua akaunti za benki, na kutambulisha kampuni katika shughuli rasmi.
Hapana. CNPJs zilizozalishwa na chombo hiki ni halali kimaadili kulingana na algoriti ya tarakimu za uthibitishaji, lakini hazijasajiliwa na Huduma ya Mapato ya Shirikisho la Brazil na hazihusiani na kampuni halisi.
Hapana. Ili kupata CNPJ halali kwa biashara, lazima usajili na Huduma ya Mapato ya Shirikisho la Brazil (Receita Federal) kufuata mchakato rasmi. CNPJs zilizozalishwa ni kwa madhumuni ya majaribio pekee.
Ili kuthibitisha ikiwa CNPJ imesajiliwa kwa kampuni halisi, unahitaji kutafuta katika hifadhidata ya Huduma ya Mapato ya Shirikisho la Brazil. Chombo chetu kinathibitisha tu ikiwa CNPJ ni halali kimaadili, sio ikiwa imeandikishwa rasmi.
CNPJs zenye tarakimu zote sawa (kama 11.111.111/1111-11) zinaonekana kuwa si halali, hata kama zinapita algoriti ya tarakimu za uthibitishaji. Hii ni sheria iliyowekwa na Huduma ya Mapato ya Shirikisho la Brazil.
Hapana. Mchakato wote unafanyika katika kivinjari chako, na hatuhifadhi au kuhamasisha yoyote ya CNPJs unazozalisha au kuthibitisha.
Toleo la sasa la chombo kinazalisha CNPJ moja kwa wakati mmoja. Kwa uzalishaji wa wingi, unaweza kufikiria kutumia mojawapo ya maktaba za programu zilizotajwa katika sehemu ya Mbadala.
Huu ni muundo rasmi unaohitajika na mamlaka ya Brazil. Kukusanya kwa njia maalum husaidia kutambua vipengele tofauti vya CNPJ, kama vile nambari ya msingi na kitambulisho cha tawi.
Unaweza kutekeleza algoriti ya uthibitishaji katika lugha yako ya programu unayopendelea kwa kutumia mifano iliyotolewa katika sehemu ya Utekelezaji wa Kitaalamu, au tumia mojawapo ya maktaba zilizotajwa katika sehemu ya Mbadala.
Ndio. Taasisi za serikali nchini Brazil zina mifumo maalum ya CNPJ. Kwa mfano, taasisi za serikali za shirikisho mara nyingi huanza na tarakimu maalum. Kizazi chetu kinaunda CNPJs za bahati nasibu na hakizalishi CNPJs za taasisi za serikali.
Chombo chetu cha Kizazi na Uthibitishaji wa CNPJ cha Brazil kinafanya kazi na nambari hizi za utambulisho kuwa rahisi na yenye ufanisi. Iwe unajaribu programu, unajiandaa data za mfano, au unathibitisha CNPJs zilizopo, chombo hiki kinatoa suluhisho rahisi bila ugumu wa uunganisho wa API au mipangilio ya juu.
Zalisha CNPJ yako ya kwanza halali sasa au uthibitisha moja iliyopo kwa kutumia kiolesura chetu rahisi!
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi