כלי ליצירת ואימות CUIT/CUIL ארגנטינאי
צור מספרי CUIT/CUIL ארגנטינאיים תקפים לצורך בדיקה או אימות של מספרים קיימים. כלי פשוט למפתחים העובדים עם מספרי זיהוי מס וביטוח לאומי בארגנטינה.
גנרטור CUIT/CUIL
הזן מספר DNI בן 8 ספרות או השתמש בגנרטור האקראי
CUIT/CUIL שנוצר
תיעוד
יוצר ומאמת CUIT/CUIL ארגנטינאי
מבוא
ה-CUIT (Clave Única de Identificación Tributaria) וה-CUIL (Clave Única de Identificación Laboral) הארגנטינאיים הם מספרי זיהוי ייחודיים המשמשים בארגנטינה למטרות מס ועסקים, בהתאמה. קודים אלה בני 11 ספרות חיוניים עבור יחידים ועסקים לפעול באופן חוקי בתוך המערכת הכלכלית הארגנטינאית. הכלי שלנו ליצירת ואימות CUIT/CUIL מספק דרך פשוטה ויעילה ליצור מספרי CUIT/CUIL תקפים למטרות בדיקה ולאמת מספרים קיימים כדי להבטיח שהם תואמים לפורמט הרשמי ולאלגוריתם האימות.
בין אם אתה מפתח בודק אפליקציות שמטפל במזהי מס ארגנטינאיים, מומחה QA מאמת את פונקציונליות המערכת, או פשוט צריך להבין כיצד פועלים מספרי זיהוי אלה, הכלי הזה מציע פתרון פשוט ללא מורכבויות מיותרות. הכלי כולל שתי פונקציות עיקריות: יוצר שמייצר מספרי CUIT/CUIL תקפים באקראי או בהתבסס על פרמטרים ספציפיים, ואימות שמאמת אם מספר CUIT/CUIL נתון עוקב אחר הפורמט הנכון וחוקי החישוב.
מבנה וחישוב CUIT/CUIL
הבנת הפורמט
מספר CUIT/CUIL תקף מורכב מ-11 ספרות המוצגות בדרך כלל בפורמט XX-XXXXXXXX-X:
-
קוד סוג (שתי הספרות הראשונות): מצביע על סוג הישות
- 20, 23, 24: גברים (CUIL)
- 27: נשים (CUIL)
- 30, 33, 34: חברות וארגונים (CUIT)
-
מספר DNI (8 הספרות האמצעיות): עבור יחידים, זהו מספר תעודת הזהות הלאומית שלהם (DNI), עם אפסות מובילות אם יש צורך כדי להגיע ל-8 ספרות. עבור חברות, זהו מספר ייחודי שהוקצה.
-
ספרת אימות (הספרה האחרונה): ספרת בדיקה המחושבת באמצעות אלגוריתם ספציפי כדי לאמת את המספר כולו.
חישוב ספרת האימות
ספרת האימות מחושבת באמצעות האלגוריתם הבא:
- קח את 10 הספרות הראשונות של ה-CUIT/CUIL (קוד סוג + DNI)
- הכפל כל ספרה במשקל התואם מהסדרה הזו: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
- סכום את כל המוצרים الناتלים
- חישב 11 פחות את השארית של הסכום מחולק ב-11
- אם התוצאה היא 11, ספרת האימות היא 0
- אם התוצאה היא 10, ספרת האימות היא 9
- אחרת, התוצאה היא ספרת האימות
מתמטית, ניתן לבטא זאת כך:
כאשר:
- היא ספרת האימות
- היא הספרה ה- של עשרת הספרות הראשונות
- הוא המשקל התואם מהסדרה [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
- מקרים מיוחדים: אם אז , אם אז
מדריך שלב אחר שלב
שימוש ביוצר
-
בחר בכרטיסיית "יוצר" בחלק העליון של ממשק הכלי.
-
בחר קוד סוג מתוך תפריט הנפתח:
- 20: גבר (CUIL)
- 23: עסק (CUIT)
- 24: עסק זמני (CUIT)
- 27: אישה (CUIL)
- 30: תאגיד (CUIT)
- 33: עמותה אזרחית (CUIT)
- 34: קרן (CUIT)
-
הזן מספר DNI (אופציונלי):
- הכנס מספר DNI בן 8 ספרות בשדה המיועד
- אם תעזוב ריק, הכלי ישתמש ב-DNI שנוצר באקראי
- אם תזין פחות מ-8 ספרות, המערכת תוסיף אפסות מובילות
-
צור DNI אקראי (אופציונלי):
- לחץ על כפתור "אקראי" כדי ליצור מספר DNI בן 8 ספרות באקראי
-
ראה את ה-CUIT/CUIL שנוצר:
- הכלי מציג אוטומטית CUIT/CUIL תקף בהתבסס על הקלטים שלך
- הפורמט יהיה XX-XXXXXXXX-X עם ספרת האימות הנכונה
-
העתק את התוצאה:
- לחץ על האייקון להעתקה כדי להעתיק את ה-CUIT/CUIL שנוצר ללוח שלך
- הודעת אישור תופיע כאשר ההעתקה הצליחה
שימוש במאמת
-
בחר בכרטיסיית "מאמת" בחלק העליון של ממשק הכלי.
-
הזן את ה-CUIT/CUIL לאימות:
- הכנס את ה-CUIT/CUIL בפורמט XX-XXXXXXXX-X
- הכלי יפרמט אוטומטית את הקלט שלך עם מקפים בזמן שאתה מקליד
- תוכל גם להזין את המספר ללא מקפים (XXXXXXXXXXX)
-
לחץ על כפתור "אמת":
- הכלי יבדוק את הפורמט, קוד הסוג וספרת האימות
-
ראה את תוצאת האימות:
- עבור מספרי CUIT/CUIL תקפים, תופיע הודעת הצלחה ירוקה
- עבור מספרים לא תקפים, הודעת שגיאה אדומה תסביר את הבעיה:
- פורמט לא תקף (חייב להיות XX-XXXXXXXX-X)
- קוד סוג לא תקף (חייב להיות אחד מ: 20, 23, 24, 27, 30, 33, 34)
- ספרת אימות לא תקפה
-
מידע נוסף:
- עבור מספרים תקפים, הכלי מציג פירוט של המרכיבים:
- קוד סוג ומשמעותו
- מספר DNI
- ספרת אימות
- עבור מספרים תקפים, הכלי מציג פירוט של המרכיבים:
מקרי שימוש
פיתוח ובדיקה
-
פיתוח תוכנה: צור מספרי CUIT/CUIL תקפים כדי לבדוק אפליקציות שמטפלות בזיהוי מס ארגנטינאי, כגון:
- פלטפורמות מסחר אלקטרוני
- תוכנות חשבונאות
- מערכות ניהול משאבי אנוש
- פורטלים לשירותי ממשלה
- אפליקציות בנקאיות
-
אוכלוסיית מסד נתונים: צור נתוני בדיקה מציאותיים עבור מערכות המאחסנות מידע על משתמשים ארגנטינאים, והבטח שהגבלות מסד הנתונים וחוקי האימות פועלים כראוי.
-
בדיקות אימות טפסים: בדוק את אימות הקלט עבור טפסי אינטרנט שאוספים מידע על CUIT/CUIL, ובדוק שהודעות שגיאה נכונות מופיעות עבור רשומות לא תקפות.
-
בדיקות API: צור מטענים תקפים עבור נקודות קצה של API שדורשות מספרי CUIT/CUIL, והבטח שהבדיקות שלך משתמשות בנתונים תקפים.
-
אוטומציה של QA: כלול את יצירת ה-CUIT/CUIL בתסריטי בדיקה אוטומטיים כדי ליצור מקרים בדיקה דינמיים במקום להשתמש בנתוני בדיקה סטטיים.
מטרות חינוכיות
-
לימוד אלגוריתמים לאימות: הבן כיצד פועלים אלגוריתמים של ספרת בדיקה בפועל על ידי צפייה בתהליך האימות של CUIT/CUIL בפעולה.
-
לימוד טכניקות אימות נתונים: השתמש כדוגמה חינוכית כאשר אתה מלמד טכניקות אימות טפסים למפתחים חדשים.
-
הבנת דרישות עסקיות ארגנטינאיות: למד על מערכת הזיהוי המשמשת בארגנטינה לפיתוח עסקי בינלאומי.
חלופות
בעוד שהכלי שלנו מספק דרך פשוטה ליצירה ואימות של מספרי CUIT/CUIL, ישנן גישות חלופיות שאתה עשוי לשקול:
-
אימות ממשלתי רשמי: עבור סביבות ייצור, תמיד אמת מספרי CUIT/CUIL מול מסד הנתונים הרשמי של AFIP (Administración Federal de Ingresos Públicos) כאשר זה אפשרי.
-
ספריות וחבילות: מספר שפות תכנות כוללות ספריות המיועדות במיוחד לאימות מזהי מס ארגנטינאיים:
- JavaScript: חבילת npm
validar-cuit
- PHP: ספריית
afip-php
- Python: חבילת
py-cuit
- JavaScript: חבילת npm
-
חישוב ידני: למטרות חינוכיות, תוכל לחשב את ספרת האימות באופן ידני באמצעות האלגוריתם המתואר לעיל.
-
שירותי אימות עסקיים מקיפים: עבור אפליקציות ארגוניות, שקול להשתמש בשירותי אימות מקיפים שאינם רק בודקים את הפורמט אלא גם מאמתים את קיומו ומצבו של היישות הקשורה ל-CUIT/CUIL.
היסטוריה של מערכת CUIT/CUIL
מערכת הזיהוי CUIT/CUIL בארגנטינה עברה התפתחויות משמעותיות מאז הקמתה:
מקורות ויישום
ה-CUIT (Clave Única de Identificación Tributaria) הוצג לראשונה בארגנטינה בשנות ה-70 כחלק מהמאמצים לחדש את מערכת גביית המסים. המנהל הפדרלי של הכנסות ציבוריות (AFIP) יישם את מזהה ייחודי זה כדי לעקוב אחר משלמי המסים בצורה יעילה יותר ולהפחית את ההתחמקות ממס.
ה-CUIL (Clave Única de Identificación Laboral) הוצג מאוחר יותר כדי לזהות במיוחד עובדים במערכת הביטוח הסוציאלי, תוך יצירת הבחנה בין זיהוי מס לזיהוי עבודה, תוך שמירה על פורמט אחיד.
התפתחות ודיגיטציה
בשנות ה-90, כאשר ארגנטינה עברה רפורמות כלכליות משמעותיות, מערכת ה-CUIT/CUIL הפכה לחשובה יותר ויותר לעקוב אחר פעילות כלכלית. המערכת הפכה לדיגיטלית יותר, ומערכות אימות מקוונות הוטמעו.
תחילת שנות ה-2000 ראתה את שילוב מערכת ה-CUIT/CUIL עם מגוון שירותי ממשלה דיגיטליים, מה שהפך אותה לרכיב חיוני ביוזמות הממשלתיות האלקטרוניות של ארגנטינה. תקופה זו גם ראתה את התקנון של אלגוריתם האימות והפורמט שעדיין בשימוש היום.
התפתחויות אחרונות
בשנים האחרונות, ה-AFIP שיפרה את תהליכי האימות והאבטחה עבור מספרי CUIT/CUIL, והטמיעה מערכות אימות מתקדמות יותר ושילבה אותן עם מסדי נתונים ממשלתיים אחרים. המערכת משחקת כיום תפקיד קרדינלי במאמצי ארגנטינה להילחם בהתחמקות ממס ולפורמל את הכלכלה.
היום, ה-CUIT/CUIL משמש לא רק למטרות מס ועבודה אלא גם למגוון רחב של פעילויות כולל בנקאות, עסקאות רכוש, שירותי ציבור ורכישות מקוונות, מה שהופך אותו למזהה חיוני עבור יחידים ועסקים הפועלים בארגנטינה.
דוגמאות קוד
Python
1def calculate_verification_digit(type_code, dni):
2 # המרה למחרוזת והבטחת DNI בן 8 ספרות עם אפסות מובילות
3 type_code_str = str(type_code)
4 dni_str = str(dni).zfill(8)
5
6 # שילוב קוד סוג ו-DNI
7 digits = type_code_str + dni_str
8
9 # משקלים עבור כל מיקום
10 weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
11
12 # חישוב סכום המוצרים
13 sum_products = sum(int(digits[i]) * weights[i] for i in range(10))
14
15 # חישוב ספרת האימות
16 verification_digit = 11 - (sum_products % 11)
17
18 # מקרים מיוחדים
19 if verification_digit == 11:
20 verification_digit = 0
21 elif verification_digit == 10:
22 verification_digit = 9
23
24 return verification_digit
25
26def generate_cuit_cuil(type_code, dni=None):
27 import random
28
29 # קודי סוג תקפים
30 valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
31
32 if type_code not in valid_type_codes:
33 raise ValueError(f"קוד סוג לא תקף. חייב להיות אחד מ: {valid_type_codes}")
34
35 # צור DNI אקראי אם לא סופק
36 if dni is None:
37 dni = random.randint(10000000, 99999999)
38
39 # חישוב ספרת האימות
40 verification_digit = calculate_verification_digit(type_code, dni)
41
42 # פורמט CUIT/CUIL
43 return f"{type_code}-{str(dni).zfill(8)}-{verification_digit}"
44
45def validate_cuit_cuil(cuit_cuil):
46 # הסרת מקפים אם קיימים
47 cuit_cuil_clean = cuit_cuil.replace("-", "")
48
49 # בדוק פורמט בסיסי
50 if not cuit_cuil_clean.isdigit() or len(cuit_cuil_clean) != 11:
51 return False, "פורמט לא תקף"
52
53 # חילוץ חלקים
54 type_code = int(cuit_cuil_clean[0:2])
55 dni = int(cuit_cuil_clean[2:10])
56 verification_digit = int(cuit_cuil_clean[10])
57
58 # אימות קוד סוג
59 valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
60 if type_code not in valid_type_codes:
61 return False, "קוד סוג לא תקף"
62
63 # חישוב והשוואת ספרת האימות
64 calculated_digit = calculate_verification_digit(type_code, dni)
65 if calculated_digit != verification_digit:
66 return False, "ספרת אימות לא תקפה"
67
68 return True, "CUIT/CUIL תקף"
69
70# דוגמת שימוש
71print(generate_cuit_cuil(20, 12345678)) # צור עבור DNI ספציפי
72print(generate_cuit_cuil(27)) # צור עם DNI אקראי
73print(validate_cuit_cuil("20-12345678-9")) # אמת CUIT/CUIL
74
JavaScript
1function calculateVerificationDigit(typeCode, dni) {
2 // המרה למחרוזת והבטחת DNI בן 8 ספרות עם אפסות מובילות
3 const typeCodeStr = typeCode.toString();
4 const dniStr = dni.toString().padStart(8, '0');
5
6 // שילוב קוד סוג ו-DNI
7 const digits = typeCodeStr + dniStr;
8
9 // משקלים עבור כל מיקום
10 const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
11
12 // חישוב סכום המוצרים
13 let sumProducts = 0;
14 for (let i = 0; i < 10; i++) {
15 sumProducts += parseInt(digits[i]) * weights[i];
16 }
17
18 // חישוב ספרת האימות
19 let verificationDigit = 11 - (sumProducts % 11);
20
21 // מקרים מיוחדים
22 if (verificationDigit === 11) {
23 verificationDigit = 0;
24 } else if (verificationDigit === 10) {
25 verificationDigit = 9;
26 }
27
28 return verificationDigit;
29}
30
31function generateCuitCuil(typeCode, dni) {
32 // קודי סוג תקפים
33 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
34
35 if (!validTypeCodes.includes(typeCode)) {
36 throw new Error(`קוד סוג לא תקף. חייב להיות אחד מ: ${validTypeCodes.join(', ')}`);
37 }
38
39 // צור DNI אקראי אם לא סופק
40 if (dni === undefined) {
41 dni = Math.floor(Math.random() * 90000000) + 10000000;
42 }
43
44 // חישוב ספרת האימות
45 const verificationDigit = calculateVerificationDigit(typeCode, dni);
46
47 // פורמט CUIT/CUIL
48 return `${typeCode}-${dni.toString().padStart(8, '0')}-${verificationDigit}`;
49}
50
51function validateCuitCuil(cuitCuil) {
52 // הסרת מקפים אם קיימים
53 const cuitCuilClean = cuitCuil.replace(/-/g, '');
54
55 // בדוק פורמט בסיסי
56 if (!/^\d{11}$/.test(cuitCuilClean)) {
57 return { isValid: false, errorMessage: 'פורמט לא תקף' };
58 }
59
60 // חילוץ חלקים
61 const typeCode = parseInt(cuitCuilClean.substring(0, 2));
62 const dni = parseInt(cuitCuilClean.substring(2, 10));
63 const verificationDigit = parseInt(cuitCuilClean.substring(10, 11));
64
65 // אימות קוד סוג
66 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
67 if (!validTypeCodes.includes(typeCode)) {
68 return { isValid: false, errorMessage: 'קוד סוג לא תקף' };
69 }
70
71 // חישוב והשוואת ספרת האימות
72 const calculatedDigit = calculateVerificationDigit(typeCode, dni);
73 if (calculatedDigit !== verificationDigit) {
74 return { isValid: false, errorMessage: 'ספרת אימות לא תקפה' };
75 }
76
77 return { isValid: true };
78}
79
80// דוגמת שימוש
81console.log(generateCuitCuil(20, 12345678)); // צור עבור DNI ספציפי
82console.log(generateCuitCuil(27)); // צור עם DNI אקראי
83console.log(validateCuitCuil("20-12345678-9")); // אמת CUIT/CUIL
84
Java
1import java.util.Arrays;
2import java.util.List;
3import java.util.Random;
4
5public class CuitCuilUtils {
6 private static final List<Integer> VALID_TYPE_CODES = Arrays.asList(20, 23, 24, 27, 30, 33, 34);
7 private static final int[] WEIGHTS = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2};
8
9 public static int calculateVerificationDigit(int typeCode, int dni) {
10 // המרה למחרוזת והבטחת DNI בן 8 ספרות עם אפסות מובילות
11 String typeCodeStr = String.valueOf(typeCode);
12 String dniStr = String.format("%08d", dni);
13
14 // שילוב קוד סוג ו-DNI
15 String digits = typeCodeStr + dniStr;
16
17 // חישוב סכום המוצרים
18 int sumProducts = 0;
19 for (int i = 0; i < 10; i++) {
20 sumProducts += Character.getNumericValue(digits.charAt(i)) * WEIGHTS[i];
21 }
22
23 // חישוב ספרת האימות
24 int verificationDigit = 11 - (sumProducts % 11);
25
26 // מקרים מיוחדים
27 if (verificationDigit == 11) {
28 verificationDigit = 0;
29 } else if (verificationDigit == 10) {
30 verificationDigit = 9;
31 }
32
33 return verificationDigit;
34 }
35
36 public static String generateCuitCuil(int typeCode, Integer dni) {
37 if (!VALID_TYPE_CODES.contains(typeCode)) {
38 throw new IllegalArgumentException("קוד סוג לא תקף. חייב להיות אחד מ: " + VALID_TYPE_CODES);
39 }
40
41 // צור DNI אקראי אם לא סופק
42 if (dni == null) {
43 Random random = new Random();
44 dni = 10000000 + random.nextInt(90000000);
45 }
46
47 // חישוב ספרת האימות
48 int verificationDigit = calculateVerificationDigit(typeCode, dni);
49
50 // פורמט CUIT/CUIL
51 return String.format("%d-%08d-%d", typeCode, dni, verificationDigit);
52 }
53
54 public static ValidationResult validateCuitCuil(String cuitCuil) {
55 // הסרת מקפים אם קיימים
56 String cuitCuilClean = cuitCuil.replace("-", "");
57
58 // בדוק פורמט בסיסי
59 if (!cuitCuilClean.matches("\\d{11}")) {
60 return new ValidationResult(false, "פורמט לא תקף");
61 }
62
63 // חילוץ חלקים
64 int typeCode = Integer.parseInt(cuitCuilClean.substring(0, 2));
65 int dni = Integer.parseInt(cuitCuilClean.substring(2, 10));
66 int verificationDigit = Integer.parseInt(cuitCuilClean.substring(10, 11));
67
68 // אימות קוד סוג
69 if (!VALID_TYPE_CODES.contains(typeCode)) {
70 return new ValidationResult(false, "קוד סוג לא תקף");
71 }
72
73 // חישוב והשוואת ספרת האימות
74 int calculatedDigit = calculateVerificationDigit(typeCode, dni);
75 if (calculatedDigit != verificationDigit) {
76 return new ValidationResult(false, "ספרת אימות לא תקפה");
77 }
78
79 return new ValidationResult(true, null);
80 }
81
82 public static class ValidationResult {
83 private final boolean isValid;
84 private final String errorMessage;
85
86 public ValidationResult(boolean isValid, String errorMessage) {
87 this.isValid = isValid;
88 this.errorMessage = errorMessage;
89 }
90
91 public boolean isValid() {
92 return isValid;
93 }
94
95 public String getErrorMessage() {
96 return errorMessage;
97 }
98 }
99
100 public static void main(String[] args) {
101 // דוגמת שימוש
102 System.out.println(generateCuitCuil(20, 12345678)); // צור עבור DNI ספציפי
103 System.out.println(generateCuitCuil(27, null)); // צור עם DNI אקראי
104 System.out.println(validateCuitCuil("20-12345678-9").isValid()); // אמת CUIT/CUIL
105 }
106}
107
PHP
1<?php
2
3function calculateVerificationDigit($typeCode, $dni) {
4 // המרה למחרוזת והבטחת DNI בן 8 ספרות עם אפסות מובילות
5 $typeCodeStr = (string)$typeCode;
6 $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT);
7
8 // שילוב קוד סוג ו-DNI
9 $digits = $typeCodeStr . $dniStr;
10
11 // משקלים עבור כל מיקום
12 $weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13
14 // חישוב סכום המוצרים
15 $sumProducts = 0;
16 for ($i = 0; $i < 10; $i++) {
17 $sumProducts += (int)$digits[$i] * $weights[$i];
18 }
19
20 // חישוב ספרת האימות
21 $verificationDigit = 11 - ($sumProducts % 11);
22
23 // מקרים מיוחדים
24 if ($verificationDigit == 11) {
25 $verificationDigit = 0;
26 } else if ($verificationDigit == 10) {
27 $verificationDigit = 9;
28 }
29
30 return $verificationDigit;
31}
32
33function generateCuitCuil($typeCode, $dni = null) {
34 // קודי סוג תקפים
35 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
36
37 if (!in_array($typeCode, $validTypeCodes)) {
38 throw new Exception("קוד סוג לא תקף. חייב להיות אחד מ: " . implode(', ', $validTypeCodes));
39 }
40
41 // צור DNI אקראי אם לא סופק
42 if ($dni === null) {
43 $dni = rand(10000000, 99999999);
44 }
45
46 // חישוב ספרת האימות
47 $verificationDigit = calculateVerificationDigit($typeCode, $dni);
48
49 // פורמט CUIT/CUIL
50 return sprintf("%d-%08d-%d", $typeCode, $dni, $verificationDigit);
51}
52
53function validateCuitCuil($cuitCuil) {
54 // הסרת מקפים אם קיימים
55 $cuitCuilClean = str_replace('-', '', $cuitCuil);
56
57 // בדוק פורמט בסיסי
58 if (!preg_match('/^\d{11}$/', $cuitCuilClean)) {
59 return ['isValid' => false, 'errorMessage' => 'פורמט לא תקף'];
60 }
61
62 // חילוץ חלקים
63 $typeCode = (int)substr($cuitCuilClean, 0, 2);
64 $dni = (int)substr($cuitCuilClean, 2, 8);
65 $verificationDigit = (int)substr($cuitCuilClean, 10, 1);
66
67 // אימות קוד סוג
68 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
69 if (!in_array($typeCode, $validTypeCodes)) {
70 return ['isValid' => false, 'errorMessage' => 'קוד סוג לא תקף'];
71 }
72
73 // חישוב והשוואת ספרת האימות
74 $calculatedDigit = calculateVerificationDigit($typeCode, $dni);
75 if ($calculatedDigit !== $verificationDigit) {
76 return ['isValid' => false, 'errorMessage' => 'ספרת אימות לא תקפה'];
77 }
78
79 return ['isValid' => true];
80}
81
82// דוגמת שימוש
83echo generateCuitCuil(20, 12345678) . "\n"; // צור עבור DNI ספציפי
84echo generateCuitCuil(27) . "\n"; // צור עם DNI אקראי
85var_dump(validateCuitCuil("20-12345678-9")); // אמת CUIT/CUIL
86?>
87
שאלות נפוצות
מה ההבדל בין CUIT ל-CUIL?
CUIT (Clave Única de Identificación Tributaria) משמש למטרות זיהוי מס ומוקצה הן ליחידים והן ליישויות משפטיות שצריכות לשלם מסים בארגנטינה. CUIL (Clave Única de Identificación Laboral) מיועד במיוחד לעובדים ומשמש למטרות עבודה וביטוח סוציאלי. בעוד שהם חולקים את אותו פורמט ואת אלגוריתם החישוב, הם משרתים מטרות מנהלתיות שונות.
אילו קודי סוג משמשים עבור יחידים ואילו עבור חברות?
עבור יחידים:
- 20, 23, 24: גברים (CUIL)
- 27: נשים (CUIL)
עבור חברות וארגונים:
- 30: תאגידים (CUIT)
- 33: עמותות אזרחיות (CUIT)
- 34: קרנות (CUIT)
כיצד מחושבת ספרת האימות?
ספרת האימות מחושבת באמצעות אלגוריתם סכום משוקלל. כל אחת מעשר הספרות הראשונות מוכפלת במשקל התואם (5, 4, 3, 2, 7, 6, 5, 4, 3, 2), והתוצאות מסוכמות. ספרת האימות היא 11 פחות השארית כאשר סכום זה מחולק ב-11. מקרים מיוחדים: אם התוצאה היא 11, ספרת האימות היא 0; אם התוצאה היא 10, ספרת האימות היא 9.
האם אני יכול להשתמש בכלי הזה כדי ליצור מספרי CUIT/CUIL רשמיים?
לא, הכלי הזה מיועד למטרות בדיקה וחינוך בלבד. המספרים שנוצרים הם תקפים מתמטית לפי אלגוריתם ה-CUIT/CUIL אך אינם רשומים באופן רשמי אצל רשויות המס הארגנטינאיות (AFIP). עבור רישום CUIT/CUIL רשמי, יחידים וחברות חייבים לעקוב אחר ההליכים החוקיים המתאימים דרך ה-AFIP.
מדוע האימות של CUIT/CUIL שלי נכשל למרות שהפורמט נראה תקין?
האימות יכול להיכשל ממספר סיבות:
- קוד הסוג אינו אחד מהקודים התקפים (20, 23, 24, 27, 30, 33, 34)
- ספרת האימות אינה תואמת לערך המחושב על פי האלגוריתם
- הפורמט אינו תקין (חייב להיות XX-XXXXXXXX-X)
- ישנם תווים שאינם מספריים בקלט (מלבד מקפים)
האם נדרשים מקפים במספרי CUIT/CUIL?
בעוד שמספרי CUIT/CUIL נכתבים ומוצגים בדרך כלל עם מקפים (XX-XXXXXXXX-X), המקפים אינם חלק מהמספר בפועל למטרות חישוב. המאמת שלנו מקבל גם את שני הפורמטים (עם או בלי מקפים) ויאמת כראוי כל פורמט.
האם יכול מספר CUIT/CUIL להיות פחות מ-8 ספרות בחלק ה-DNI?
לא, החלק של DNI חייב להיות תמיד בדיוק 8 ספרות. אם ה-DNI בפועל מכיל פחות ספרות, יש להוסיף אפסות מובילות כדי להגיע ל-8 ספרות. לדוגמה, אם מספר ה-DNI של מישהו הוא 1234567, ב-CUIT/CUIL הוא יוצג כ-01234567.
כיצד אני יכול לאמת אם CUIT/CUIL רשום באופן רשמי בארגנטינה?
כדי לאמת אם CUIT/CUIL רשום באופן רשמי ופעיל, עליך להשתמש באתר או בשירותים הרשמים של ה-AFIP (Administración Federal de Ingresos Públicos). הכלי שלנו מאמת רק את התקפות המתמטית של המספר, ולא את מצב הרישום הרשמי שלו.
האם אני יכול להשתמש בכלי הזה באפליקציה מסחרית שלי?
כן, אתה יכול לשלב את האלגוריתם והלוגיקה המוצגים בכלי הזה באפליקציות המסחריות שלך. אלגוריתם האימות של CUIT/CUIL הוא תקן ציבורי. עם זאת, עבור סביבות ייצור, אנו ממליצים ליישם טיפול בשגיאות נאות ולשקול אימות נוסף מול מקורות רשמיים כאשר זה הכרחי.
האם הכלי שומר על מספרי CUIT/CUIL שנוצרו או מאומתים?
לא, הכלי הזה אינו שומר על אף אחד מהמידע שהוזן או שנוצר. כל העיבוד מתבצע בצד הלקוח בדפדפן שלך, ולא נשלח או נשמר על השרתים שלנו. זה מבטיח את הפרטיות והאבטחה של כל מידע שאתה מכניס.
הפניות
-
AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." אתר רשמי. https://www.afip.gob.ar/
-
Ministerio de Trabajo, Empleo y Seguridad Social. "CUIL - Clave Única de Identificación Laboral." https://www.argentina.gob.ar/trabajo
-
ANSES (Administración Nacional de la Seguridad Social). "Obtener mi CUIL." https://www.anses.gob.ar/
-
Boletín Oficial de la República Argentina. "Resolución General AFIP 2854/2010: Procedimiento. Clave Única de Identificación Tributaria (C.U.I.T.)."
-
Código Fiscal de la República Argentina. "Identificación y Registro de Contribuyentes."
מוכן ליצור או לאמת מספרי CUIT/CUIL ארגנטינאיים? נסה את הכלי שלנו עכשיו ופשט את תהליך הבדיקה שלך!
משוב
לחץ על טוסט המשוב כדי להתחיל לתת משוב על כלי זה
כלים קשורים
גלה עוד כלים שעשויים להיות מועילים עבור זרימת העבודה שלך