כלי ליצירת ואימות CNPJ ברזילאי לבדיקות
צור מספרי CNPJ ברזילאיים תקפים ואמת מספרים קיימים עם הכלי הפשוט הזה שנועד למפתחים ובודקים העובדים עם מזהי עסקים ברזילאיים.
מחולל ומאמת CNPJ ברזילאי
מחולל CNPJ
צור מספר CNPJ ברזילאי תקף למטרות בדיקה.
מאמת CNPJ
בדוק אם מספר CNPJ ברזילאי תקף.
תיעוד
כלי ליצירת ואימות CNPJ ברזילאי
מבוא
ה- CNPJ (Cadastro Nacional da Pessoa Jurídica) הברזילאי הוא מספר זיהוי ייחודי המוקצה לעסקים ולישויות משפטיות בברזיל. כלי זה ליצירת ואימות CNPJ ברזילאי מספק דרך פשוטה ויעילה ליצירת מספרי CNPJ תקפים למטרות בדיקה ולאימות מספרי CNPJ קיימים בהתאם לאלגוריתם הרשמי הברזילאי. בין אם אתה מפתח הבודק יישומים המטפלים בנתוני עסקים ברזילאיים, איש QA יוצר מקרים לבדיקות, או כל אחד שעובד עם מידע על חברות ברזילאיות, כלי זה מפשט את התהליך של עבודה עם מספרי CNPJ.
בניגוד למספרי CNPJ אמיתיים המונפקים על ידי רשות המסים הברזילאית (Receita Federal), ה-CNPJs המיוצרים על ידי כלי זה תקפים מתמטית אך אינם רשומים לחברות אמיתיות. זה הופך אותם למושלמים לתרחישי בדיקה, נתוני דוגמה וסביבות פיתוח שבהן אתה זקוק למספרי CNPJ מעוצבים כראוי ותקפים מבלי להשתמש בזיהוי עסקי אמיתי.
מהו CNPJ?
CNPJ (Cadastro Nacional da Pessoa Jurídica) הוא מספר זיהוי בן 14 ספרות המוקצה לעסקים ולישויות משפטיות על ידי רשות המסים הברזילאית. הוא משמש כאקווולנט הברזילאי למספר רישום חברה או מספר זיהוי מס. כל עסק הפועל באופן חוקי בברזיל חייב להיות לו CNPJ, המשמש עבור:
- דיווח מס וציות
- רישום עסק מול סוכנויות ממשלתיות
- פתיחת חשבונות בנק
- הנפקת חשבוניות וקבלות
- השתתפות במכרזים ממשלתיים
- ייבוא וייצוא סחורות
ה-CNPJ הוא מזהה חיוני במערכת העסקית של ברזיל ומופיע במסמכים רשמיים, חוזים ורשומות פיננסיות.
מבנה ועיצוב CNPJ
CNPJ ברזילאי מורכב מ-14 ספרות, בדרך כלל מעוצב כך: XX.XXX.XXX/YYYY-ZZ
המבנה מתפרק כך:
- 8 הספרות הראשונות (XX.XXX.XXX): מספר הבסיס המוקצה לחברה
- 4 ספרות לאחר הסלש (YYYY): מזהה סניף (0001 עבור המטה, מספרים אחרים עבור סניפים)
- 2 הספרות האחרונות (ZZ): ספרות בדיקה לאימות
לדוגמה, CNPJ מעוצב כראוי עשוי להיראות כך: 12.345.678/0001-95
ספרות הבדיקה (המספרים האחרונים) מחושבות באמצעות אלגוריתם מתמטי ספציפי המוודא שהמספרים שנוצרו באקראי אינם יכולים לעבור אימות מבלי לעקוב אחר שיטת החישוב הנכונה.
כיצד עובד אימות CNPJ
אלגוריתם האימות של CNPJ משתמש בחישוב משוקלל כדי לקבוע את ספרות הבדיקה. כך זה עובד:
חישוב ספרת הבדיקה הראשונה
- הכפל כל אחת מ-12 הספרות הראשונות בסדרת משקלות: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- סכום התוצאות של הכפלות אלה
- חישוב השארית של סכום זה מחולק ב-11
- אם השארית קטנה מ-2, ספרת הבדיקה הראשונה היא 0; אחרת, היא 11 פחות השארית
חישוב ספרת הבדיקה השנייה
- הכפל כל אחת מ-13 הספרות הראשונות (כולל את ספרת הבדיקה הראשונה) בסדרת משקלות: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
- סכום התוצאות של הכפלות אלה
- חישוב השארית של סכום זה מחולק ב-11
- אם השארית קטנה מ-2, ספרת הבדיקה השנייה היא 0; אחרת, היא 11 פחות השארית
כדי ש-CNPJ יהיה תקף, שתי ספרות הבדיקה חייבות להתאים לערכים המחושבים.
כיצד להשתמש בכלי זה
כלי זה ליצירת ואימות CNPJ ברזילאי מציע שתי פונקציות עיקריות: יצירת CNPJs תקפים ואימות מספרי CNPJ קיימים.
יצירת CNPJ
כדי ליצור CNPJ תקף למטרות בדיקה:
- נווט אל סעיף "יוצר CNPJ" של הכלי
- לחץ על כפתור "צור CNPJ"
- CNPJ תקף מתמטי יופיע בתצוגה המעוצבת
- השתמש בכפתור "העתק" כדי להעתיק את ה-CNPJ שנוצר ללוח שלך
ה-CNPJ שנוצר יעמוד בכללי האימות המתמטיים של CNPJ אמיתי אך אינו רשום עם רשות המסים הברזילאית.
אימות CNPJ
כדי לבדוק אם CNPJ הוא תקף מתמטית:
- נווט אל סעיף "מאמת CNPJ" של הכלי
- הזן את ה-CNPJ שברצונך לאמת בשדה הקלט
- הכלי מקבל CNPJs עם או בלי עיצוב (נקודות, סלשים ומקפים)
- לחץ על כפתור "אמת"
- הכלי יציג אם ה-CNPJ תקף או לא תקף בהתאם לאלגוריתם ספרת הבדיקה
המאמת בודק אם ה-CNPJ עומד בפורמט הנכון ואם ספרות הבדיקה תואמות לערכים הצפויים בהתאם לאלגוריתם האימות.
מקרים לשימוש
כלי זה ליצירת ואימות CNPJ ברזילאי שימושי במיוחד בתרחישים הבאים:
פיתוח תוכנה ובדיקות
- יצירת נתוני בדיקה: יצירת CNPJs תקפים למילוי מסדי נתונים לבדיקה מבלי להשתמש בזיהויים עסקיים אמיתיים
- בדיקות יחידה: אימות פונקציות טיפול ב-CNPJ בקוד שלך עם דוגמאות ידועות תקפות ולא תקפות
- בדיקות QA: יצירת מקרים לבדיקות עבור טפסים וממשקים הדורשים קלט CNPJ
- בדיקות אינטגרציה: בדוק מערכות המחליפות נתונים עם שירותי ממשלה ברזילאיים או מוסדות פיננסיים
חינוך והדרכה
- לימוד פורמט CNPJ: להבין כיצד מזהי עסקים ברזילאיים בנויים
- לימוד אלגוריתמים: לבחון כיצד עובד אימות ספרת הבדיקה בפועל
- טכניקות אימות נתונים: ללמוד דוגמאות מהעולם האמיתי של דרישות אימות נתונים
עיבוד נתונים
- ניקוי נתונים: לאמת CNPJs בנתונים קיימים כדי לזהות טעויות פוטנציאליות
- אימות טפסים: ליישם אימות בצד הלקוח או בצד השרת עבור קלטי CNPJ
- אנונימיזציה של נתונים: להחליף CNPJs אמיתיים באלה שנוצרו תקפים כאשר מכינים מערכי נתונים לניתוח
עסקים בינלאומיים
- הכנה לכניסה לשוק: להבין את דרישות הזיהוי העסקי בברזיל
- הכנת מסמכים: להבטיח עיצוב נכון כאשר מכינים מסמכים עסקיים עבור ברזיל
- בדיקת ציות: לאמת שמספרי CNPJ שנאספו לפחות תקפים מתמטית
חלופות
בעוד שהכלי שלנו מספק פתרון פשוט, מבוסס דפדפן ליצירה ואימות CNPJs, ישנן מספר חלופות בהתאם לצרכים הספציפיים שלך:
ספריות תכנות
עבור מפתחים המשלבים אימות CNPJ ישירות לתוך יישומים, ישנן מספר ספריות בשפות ספציפיות:
- 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
ספריות אלו מספקות לעיתים קרובות פונקציות נוספות כמו עיצוב, ניתוח ואימות של מסמכים ברזילאיים אחרים.
שירותי API
עבור יישומים הדורשים אימות מבלי ליישם את האלגוריתם:
- APIs ממשלתיים ברזילאיים (דורש רישום)
- שירותי API מסחריים הכוללים בדיקות CNPJ
- שירותי מידע עסקי המאמתים מול בסיס הנתונים הרשמי
חישוב ידני
למטרות חינוכיות או לאימות חד פעמי, ניתן ליישם את האלגוריתם ידנית:
- חלץ את 12 הספרות הראשונות של ה-CNPJ
- בצע את חישובי המשקל כפי שמתואר קודם
- השווה את ספרות הבדיקה המחושבות עם ספרות הבדיקה האמיתיות
עם זאת, חישוב ידני עלול להיות רגיש לטעויות ואינו יעיל לשימוש רגיל.
יישום טכני
היוצר והמאמת CNPJ בכלי זה מיושמים באמצעות JavaScript, מה שהופך אותו למהיר ויכול לפעול לחלוטין בדפדפן שלך מבלי לשלוח את הנתונים שלך לשרת. כך פועלות הפונקציות המרכזיות:
אלגוריתם יצירת CNPJ
1function generateCNPJ() {
2 // צור את 12 הספרות הראשונות באקראי
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // חישוב ספרת הבדיקה הראשונה
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // חישוב ספרת הבדיקה השנייה
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // עיצוב ה-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
אלגוריתם אימות CNPJ
1function validateCNPJ(cnpj) {
2 // הסר תווים שאינם מספרים
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // בדוק אם יש לו אורך נכון
6 if (cleanCNPJ.length !== 14) return false;
7
8 // בדוק דפוסים לא תקפים ידועים (כל הספרות זהות)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // המרת למערך של ספרות
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // בדוק את ספרת הבדיקה הראשונה
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // בדוק את ספרת הבדיקה השנייה
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
פונקציית עיצוב CNPJ
1function formatCNPJ(cnpj) {
2 // הסר תווים שאינם מספרים
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // עיצוב לפי אורך
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
הפונקציות המרכזיות הללו יכולות להתממשק בשפות תכנות אחרות בעקבות אותה לוגיקה. הנה דוגמאות ב-Python וב-Java:
יישום ב-Python
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 # צור 12 ספרות ראשונות באקראי
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # חישוב ספרת הבדיקה הראשונה
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # חישוב ספרת הבדיקה השנייה
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # עיצוב ה-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 # הסר תווים שאינם מספרים
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # בדוק אורך
34 if len(cnpj) != 14:
35 return False
36
37 # בדוק אם כל הספרות זהות
38 if len(set(cnpj)) == 1:
39 return False
40
41 # המרת למערך של מספרים
42 digits = [int(d) for d in cnpj]
43
44 # אימות ספרת הבדיקה הראשונה
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # אימות ספרת הבדיקה השנייה
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
יישום ב-Java
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 // צור 12 ספרות ראשונות באקראי
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // חישוב ספרת הבדיקה הראשונה
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // חישוב ספרת הבדיקה השנייה
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // עיצוב ה-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 // הסר תווים שאינם מספרים
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // בדוק אורך
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // בדוק אם כל הספרות זהות
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 // המרת למערך של מספרים
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 // אימות ספרת הבדיקה הראשונה
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // אימות ספרת הבדיקה השנייה
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
שיקולים חשובים
בעת השימוש בכלי ליצירת ואימות CNPJ זה, יש לשקול את השיקולים הבאים:
שיקולים משפטיים ואתיים
- לא למטרות הונאה: CNPJs שנוצרו לא צריכים לשמש למטרות הונאה או ייצוג שקרי
- רק לבדיקה: CNPJs אלה מיועדים רק למטרות בדיקה ופיתוח
- לא רשומים: CNPJs שנוצרו אינם רשומים עם רשות המסים הברזילאית
- אין תוקף בעולם האמיתי: הם לא יכולים לשמש לרישום עסקי או למטרות מס
מגבלות טכניות
- אין מידע עסקי: CNPJs שנוצרו אינם מכילים קודי מגזר אמיתיים או מידע על מיקום
- אין אימות מול מאגרי נתונים: המאמת בודק רק את תקפות המתמטית, לא את מצב הרישום
- וריאציות בעיצוב: בעוד שהכלי מטפל בווריאציות עיצוב נפוצות, כמה מערכות עשויות לדרוש פורמטים ספציפיים
שיקולי אבטחה
- עיבוד בצד הלקוח: כל העיבוד מתרחש בדפדפן שלך; אין נתונים שנשלחים לשרתים
- אין אחסון נתונים: CNPJs שנוצרו לא נשמרים ולא נרשמים
- אין נתונים אישיים: הכלי לא מטפל או מעבד שום מידע אישי
שאלות נפוצות
מהו השימוש ב-CNPJ בברזיל?
CNPJ הוא מספר הרישום הלאומי עבור עסקים ויישויות משפטיות בברזיל. הוא משמש למטרות מס, רישום עסק, פתיחת חשבונות בנק, וזיהוי חברות בעסקאות רשמיות.
האם ה-CNPJs שנוצרים על ידי כלי זה הם אמיתיים?
לא. ה-CNPJs שנוצרים על ידי כלי זה תקפים מתמטית בהתאם לאלגוריתם ספרת הבדיקה, אך הם אינם רשומים עם רשות המסים הברזילאית ואינם שייכים לחברות אמיתיות.
האם אני יכול להשתמש ב-CNPJs שנוצרו עבור העסק שלי?
לא. כדי לקבל CNPJ לגיטימי עבור עסק, עליך להירשם עם רשות המסים הברזילאית (Receita Federal) בהתאם לתהליך הרשמי. CNPJs שנוצרו מיועדים רק למטרות בדיקה.
כיצד אני יכול לדעת אם CNPJ שייך לחברה אמיתית?
כדי לאמת אם CNPJ רשום לחברה אמיתית, עליך לפנות למסד הנתונים של רשות המסים הברזילאית. הכלי שלנו בודק רק אם CNPJ תקף מתמטית, לא אם הוא רשום באופן רשמי.
מדוע המאמת דוחה CNPJ עם כל הספרות זהות?
CNPJs עם כל הספרות זהות (כמו 11.111.111/1111-11) נחשבים אוטומטית לא תקפים, גם אם הם עולים בקנה אחד עם האלגוריתם של ספרת הבדיקה. זו כלל שהוקם על ידי רשות המסים הברזילאית.
האם הכלי שומר את ה-CNPJs שאני מייצר או מאמת?
לא. כל העיבוד מתרחש בדפדפן שלך, ואנחנו לא שומרים או מעבירים שום CNPJs שאתה מייצר או מאמת.
האם אני יכול ליצור מספר CNPJs בבת אחת?
הגרסה הנוכחית של הכלי יוצרת CNPJ אחד בכל פעם. עבור יצירה המונית, ייתכן שתרצה לשקול להשתמש באחת מהספריות המוזכרות בסעיף החלופות.
מדוע הפורמט XX.XXX.XXX/XXXX-XX חשוב?
זהו הפורמט הרשמי הנדרש על ידי הרשויות הברזילאיות. הקבוצות הספציפיות עוזרות לזהות רכיבים שונים של ה-CNPJ, כגון מספר הבסיס ומזהה הסניף.
כיצד אני מאמת CNPJ בתכנות?
אתה יכול לממש את אלגוריתם האימות בשפת התכנות המועדפת עליך באמצעות הקוד שהוצג בסעיף היישום הטכני, או להשתמש באחת מהספריות המוזכרות בסעיף החלופות.
האם יש CNPJs מיוחדים ליישויות ממשלתיות?
כן. ליישויות ממשלתיות בברזיל יש דפוסי CNPJ ספציפיים. לדוגמה, ישויות ממשלתיות פדרליות לעיתים קרובות מתחילות עם ספרות ספציפיות. היוצר שלנו יוצר CNPJs אקראיים ואינו יוצר במיוחד CNPJs של ישויות ממשלתיות.
הפניות
- רשות המסים הברזילאית (Receita Federal do Brasil) - אתר רשמי
- "CNPJ - Cadastro Nacional da Pessoa Jurídica" - ויקיפדיה
- הקוד האזרחי הברזילאי (חוק מס' 10.406/2002) - מסגרת משפטית ליישויות עסקיות בברזיל
- הוראת ניהול רישום עסקי ברזילאי (IN RFB מס' 1863/2018) - תקנות על רישום CNPJ
נסה את זה עכשיו
כלי זה ליצירת ואימות CNPJ ברזילאי הופך את העבודה עם מספרי הזיהוי הללו לפשוטה ויעילה. בין אם אתה בודק יישומים, מכין נתוני דוגמה, או מאמת CNPJs קיימים, כלי זה מספק פתרון פשוט ללא המורכבות של אינטגרציות API או קונפיגורציות מתקדמות.
צור את ה-CNPJ התקף הראשון שלך עכשיו או אמת אחד קיים באמצעות הממשק הפשוט שלנו!
משוב
לחץ על טוסט המשוב כדי להתחיל לתת משוב על כלי זה
כלים קשורים
גלה עוד כלים שעשויים להיות מועילים עבור זרימת העבודה שלך