🛠️

Whiz Tools

Build • Create • Innovate

ارجنٹائن کا CUIT/CUIL جنریٹر اور ویلیڈیٹر ٹول

آزمائش کے لیے درست ارجنٹائن کے CUIT/CUIL نمبر تیار کریں یا موجودہ نمبر کی توثیق کریں۔ ارجنٹائن کے ٹیکس اور مزدوری کی شناختی نمبروں کے ساتھ کام کرنے والے ڈویلپرز کے لیے سادہ ٹول۔

CUIT/CUIL جنریٹر

8 ہندسوں کا DNI نمبر درج کریں یا تصادفی جنریٹر استعمال کریں

بنایا گیا 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:

  1. قسم کا کوڈ (پہلے 2 ہندسے): ادارے کی قسم کی نشاندہی کرتا ہے

    • 20، 23، 24: مرد افراد (CUIL)
    • 27: خواتین افراد (CUIL)
    • 30، 33، 34: کمپنیاں اور تنظیمیں (CUIT)
  2. DNI نمبر (درمیانی 8 ہندسے): افراد کے لیے، یہ ان کا قومی شناختی دستاویز نمبر (DNI) ہوتا ہے، اگر ضرورت ہو تو 8 ہندسوں تک پہنچنے کے لیے آگے صفر کے ساتھ بھرا جاتا ہے۔ کمپنیوں کے لیے، یہ ایک منفرد تفویض کردہ نمبر ہوتا ہے۔

  3. تصدیقی ہندسہ (آخری ہندسہ): ایک چیک ہندسہ جو ایک مخصوص الگورڈم کا استعمال کرتے ہوئے حساب کیا جاتا ہے تاکہ پورے نمبر کی تصدیق کی جا سکے۔

تصدیقی ہندسہ کا حساب

تصدیقی ہندسہ درج ذیل الگورڈم کا استعمال کرتے ہوئے حساب کیا جاتا ہے:

  1. CUIT/CUIL کے پہلے 10 ہندسوں کو لیں (قسم کا کوڈ + DNI)
  2. ہر ہندسے کو اس تسلسل سے متعلق وزن سے ضرب دیں: 5، 4، 3، 2، 7، 6، 5، 4، 3، 2
  3. تمام حاصل کردہ مصنوعات کا مجموعہ لیں
  4. 11 میں سے اس مجموعے کے باقی کو 11 سے تقسیم کرنے کے بعد حاصل کردہ باقی کو نکالیں
  5. اگر نتیجہ 11 ہے تو تصدیقی ہندسہ 0 ہے
  6. اگر نتیجہ 10 ہے تو تصدیقی ہندسہ 9 ہے
  7. بصورت دیگر، نتیجہ تصدیقی ہندسہ ہے

ریاضی کے لحاظ سے، یہ اس طرح بیان کیا جا سکتا ہے:

VD=11((i=110di×wi)mod11)VD = 11 - ((\sum_{i=1}^{10} d_i \times w_i) \bmod 11)

جہاں:

  • VDVD تصدیقی ہندسہ ہے
  • did_i پہلے 10 ہندسوں کا ii-واں ہندسہ ہے
  • wiw_i اس تسلسل سے متعلق وزن ہے [5، 4، 3، 2، 7، 6، 5، 4، 3، 2]
  • خاص کیس: اگر VD=11VD = 11 تو VD=0VD = 0، اگر VD=10VD = 10 تو VD=9VD = 9

مرحلہ وار رہنما

جنریٹر کا استعمال

  1. ٹول انٹرفیس کے اوپر "جنریٹر" ٹیب کا انتخاب کریں۔

  2. ڈراپ ڈاؤن مینو سے ایک قسم کا کوڈ منتخب کریں:

    • 20: مرد (CUIL)
    • 23: کاروبار (CUIT)
    • 24: عارضی کاروبار (CUIT)
    • 27: خواتین (CUIL)
    • 30: کارپوریٹ (CUIT)
    • 33: شہری ایسوسی ایشن (CUIT)
    • 34: بنیاد (CUIT)
  3. ایک DNI نمبر درج کریں (اختیاری):

    • فراہم کردہ فیلڈ میں 8 ہندسوں کا DNI نمبر درج کریں
    • اگر خالی چھوڑ دیا جائے تو ٹول بے ترتیب طور پر پیدا کردہ DNI استعمال کرے گا
    • اگر آپ 8 ہندسوں سے کم درج کرتے ہیں تو نظام آگے صفر کے ساتھ بھرے گا
  4. بے ترتیب DNI پیدا کریں (اختیاری):

    • بے ترتیب 8 ہندسوں کا DNI نمبر پیدا کرنے کے لیے "بے ترتیب" بٹن پر کلک کریں
  5. جنریٹ کردہ CUIT/CUIL دیکھیں:

    • ٹول آپ کی مدخلات کی بنیاد پر ایک درست CUIT/CUIL کو خود بخود دکھاتا ہے
    • شکل XX-XXXXXXXX-X ہوگی جس میں صحیح تصدیقی ہندسہ ہوگا
  6. نتیجہ کاپی کریں:

    • جنریٹ کردہ CUIT/CUIL کو اپنے کلپ بورڈ پر کاپی کرنے کے لیے کاپی آئیکن پر کلک کریں
    • کامیابی سے کاپی ہونے پر ایک تصدیقی پیغام ظاہر ہوگا

ویلیڈیٹر کا استعمال

  1. ٹول انٹرفیس کے اوپر "ویلیڈیٹر" ٹیب کا انتخاب کریں۔

  2. تصدیق کرنے کے لیے CUIT/CUIL درج کریں:

    • CUIT/CUIL کو شکل XX-XXXXXXXX-X میں درج کریں
    • ٹول آپ کے داخل کردہ متن کو ٹائپ کرتے وقت خود بخود ہائفنز کے ساتھ فارمیٹ کرے گا
    • آپ ہائفنز کے بغیر بھی نمبر درج کر سکتے ہیں (XXXXXXXXXXX)
  3. "ویلیڈیٹ" بٹن پر کلک کریں:

    • ٹول شکل، قسم کے کوڈ، اور تصدیقی ہندسہ کی جانچ کرے گا
  4. تصدیق کے نتیجے کو دیکھیں:

    • درست CUIT/CUIL نمبروں کے لیے، ایک سبز کامیابی کا پیغام ظاہر ہوگا
    • غلط نمبروں کے لیے، ایک سرخ غلطی کا پیغام مسئلے کی وضاحت کرے گا:
      • غلط شکل (یہ XX-XXXXXXXX-X ہونا چاہیے)
      • غلط قسم کا کوڈ (یہ ہونا چاہیے: 20، 23، 24، 27، 30، 33، 34)
      • غلط تصدیقی ہندسہ
  5. اضافی معلومات:

    • درست نمبروں کے لیے، ٹول اجزاء کی تفصیل دکھاتا ہے:
      • قسم کا کوڈ اور اس کا مطلب
      • DNI نمبر
      • تصدیقی ہندسہ

استعمال کے کیسز

ترقی اور جانچ

  1. سافٹ ویئر کی ترقی: ارجنٹائن کے ٹیکس کی شناخت کو سنبھالنے والی ایپلیکیشنز کی جانچ کے لیے درست CUIT/CUIL نمبروں کو جنریٹ کریں، جیسے:

    • ای کامرس پلیٹ فارم
    • اکاؤنٹنگ سافٹ ویئر
    • HR مینجمنٹ سسٹمز
    • حکومت کی خدمات کے پورٹلز
    • بینکنگ ایپلیکیشنز
  2. ڈیٹا بیس کی آبادی: ان نظاموں کے لیے حقیقت پسندانہ ٹیسٹ ڈیٹا بنائیں جو ارجنٹائن کے صارف کی معلومات کو ذخیرہ کرتے ہیں، یہ یقینی بناتے ہوئے کہ ڈیٹا بیس کی پابندیاں اور تصدیقی قواعد درست طریقے سے کام کرتے ہیں۔

  3. فارم کی تصدیق کی جانچ: ویب فارم کی ان پٹ کی تصدیق کی جانچ کریں جو CUIT/CUIL معلومات جمع کرتی ہیں، یہ تصدیق کرتے ہوئے کہ غلط اندراجات کے لیے مناسب غلطی کے پیغامات ظاہر ہوتے ہیں۔

  4. API کی جانچ: API کے اختتامی نکات کے لیے درست پیلوڈز جنریٹ کریں جو CUIT/CUIL نمبروں کی ضرورت ہوتی ہے، یہ یقینی بناتے ہوئے کہ آپ کے انضمام کی جانچ درست ڈیٹا کا استعمال کرتی ہے۔

  5. QA خودکار: خودکار ٹیسٹ اسکرپٹس میں CUIT/CUIL کی تخلیق کو شامل کریں تاکہ متحرک ٹیسٹ کیسز بنائے جا سکیں بجائے اس کے کہ جامد ٹیسٹ ڈیٹا کا استعمال کیا جائے۔

تعلیمی مقاصد

  1. تصدیق کے الگورڈمز کا سیکھنا: یہ سمجھیں کہ چیک ہندسہ الگورڈمز عملی طور پر کیسے کام کرتے ہیں جب CUIT/CUIL کی تصدیق کے عمل کو دیکھتے ہیں۔

  2. ڈیٹا کی تصدیق کی تعلیم دینا: نئے ڈویلپرز کو فارم کی تصدیق کی تکنیک سکھانے کے لیے ایک تعلیمی مثال کے طور پر استعمال کریں۔

  3. ارجنٹائن کے کاروباری تقاضوں کو سمجھنا: بین الاقوامی کاروباری ترقی کے لیے ارجنٹائن میں استعمال ہونے والے شناختی نظام کے بارے میں سیکھیں۔

متبادل

جبکہ ہمارا ٹول CUIT/CUIL نمبروں کو جنریٹ اور ویلیڈیٹ کرنے کا ایک سادہ طریقہ فراہم کرتا ہے، آپ کچھ متبادل طریقے بھی غور کر سکتے ہیں:

  1. سرکاری حکومت کی تصدیق: پروڈکشن کے ماحول میں، ہمیشہ ممکنہ طور پر CUIT/CUIL نمبروں کی تصدیق کریں سرکاری AFIP (Administración Federal de Ingresos Públicos) ڈیٹا بیس کے خلاف۔

  2. لائبریریاں اور پیکجز: کئی پروگرامنگ زبانوں میں خاص طور پر ارجنٹائن کے ٹیکس آئی ڈی کی تصدیق کے لیے لائبریریاں موجود ہیں:

    • جاوا اسکرپٹ: validar-cuit npm پیکیج
    • پی ایچ پی: afip-php لائبریری
    • پائتھن: py-cuit پیکیج
  3. ہاتھ سے حساب: تعلیمی مقاصد کے لیے، آپ اوپر بیان کردہ الگورڈم کا استعمال کرتے ہوئے تصدیقی ہندسہ کو ہاتھ سے حساب کر سکتے ہیں۔

  4. جامع کاروباری تصدیق کی خدمات: انٹرپرائز ایپلیکیشنز کے لیے، جامع تصدیق کی خدمات کا استعمال کرنے پر غور کریں جو صرف شکل کی جانچ نہیں کرتی بلکہ CUIT/CUIL سے منسلک ادارے کی موجودگی اور حیثیت کی تصدیق بھی کرتی ہیں۔

CUIT/CUIL نظام کی تاریخ

ارجنٹائن میں CUIT/CUIL شناختی نظام کی ابتدا سے لے کر اب تک اہم تبدیلیاں آئی ہیں:

آغاز اور نفاذ

CUIT (Clave Única de Identificación Tributaria) کو پہلی بار 1970 کی دہائی میں ارجنٹائن میں متعارف کرایا گیا تھا تاکہ ٹیکس جمع کرنے کے نظام کو جدید بنایا جا سکے۔ وفاقی آمدنی کی انتظامیہ (AFIP) نے اس منفرد شناخت کنندہ کو ٹیکس دہندگان کو زیادہ مؤثر طریقے سے ٹریک کرنے اور ٹیکس چوری کو کم کرنے کے لیے نافذ کیا۔

CUIL (Clave Única de Identificación Laboral) بعد میں متعارف کرایا گیا تاکہ خاص طور پر سماجی تحفظ کے نظام میں کارکنوں کی شناخت کی جا سکے، ٹیکس کی شناخت اور مزدور کی شناخت کے درمیان ایک امتیاز پیدا کرتے ہوئے جبکہ ایک مستقل شکل برقرار رکھی۔

ترقی اور ڈیجیٹائزیشن

1990 کی دہائی میں، جیسے جیسے ارجنٹائن نے اہم اقتصادی اصلاحات کیں، CUIT/CUIL نظام اقتصادی سرگرمیوں کی نگرانی کے لیے زیادہ اہم ہوتا گیا۔ نظام کو مزید ڈیجیٹل کیا گیا، اور آن لائن تصدیق کے نظام کو نافذ کیا گیا۔

2000 کی دہائی کے اوائل میں، CUIT/CUIL نظام کو مختلف ڈیجیٹل حکومت کی خدمات کے ساتھ مربوط کیا گیا، جس نے اسے ارجنٹائن کی ای-گورنمنٹ کی پہل کا ایک لازمی جزو بنا دیا۔ اس دور میں اس تصدیقی الگورڈم اور شکل کے معیاری بنانے میں بھی مدد ملی جو آج بھی استعمال میں ہے۔

حالیہ ترقیات

حال ہی میں، AFIP نے CUIT/CUIL نمبروں کے لیے سیکیورٹی اور تصدیق کے عمل کو بڑھایا ہے، مزید جدید تصدیقی نظام نافذ کیے ہیں اور انہیں دیگر حکومت کے ڈیٹا بیس کے ساتھ مربوط کیا ہے۔ یہ نظام اب ارجنٹائن کی ٹیکس چوری سے لڑنے اور معیشت کو باقاعدہ بنانے کی کوششوں میں ایک اہم کردار ادا کرتا ہے۔

آج، CUIT/CUIL نہ صرف ٹیکس اور روزگار کے مقاصد کے لیے استعمال ہوتا ہے بلکہ بینکنگ، جائیداد کے لین دین، یوٹیلیٹی خدمات، اور آن لائن خریداری سمیت وسیع پیمانے پر سرگرمیوں کے لیے ایک لازمی شناخت کنندہ بن گیا ہے، جو ارجنٹائن میں کام کرنے والے افراد اور کاروباروں کے لیے ضروری ہے۔

کوڈ کے نمونے

پائتھن

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

جاوا اسکرپٹ

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

جاوا

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

پی ایچ پی

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)

تصدیقی ہندسہ کیسے حساب کیا جاتا ہے؟

تصدیقی ہندسہ ایک وزنی مجموعہ الگورڈم کا استعمال کرتے ہوئے حساب کیا جاتا ہے۔ پہلے 10 ہندسوں میں سے ہر ایک کو ایک متعلقہ وزن (5، 4، 3، 2، 7، 6، 5، 4، 3، 2) سے ضرب دیا جاتا ہے، اور نتائج کا مجموعہ لیا جاتا ہے۔ تصدیقی ہندسہ 11 میں سے اس مجموعے کے باقی کو 11 سے تقسیم کرنے کے بعد حاصل کردہ باقی کو نکال کر حاصل کیا جاتا ہے۔ خاص کیس: اگر نتیجہ 11 ہے تو تصدیقی ہندسہ 0 ہے؛ اگر نتیجہ 10 ہے تو تصدیقی ہندسہ 9 ہے۔

کیا میں اس ٹول کو حقیقی، سرکاری CUIT/CUIL نمبروں کو جنریٹ کرنے کے لیے استعمال کر سکتا ہوں؟

نہیں، یہ ٹول ٹیسٹنگ اور تعلیمی مقاصد کے لیے بنایا گیا ہے۔ جنریٹ کردہ نمبر ریاضی کے لحاظ سے درست ہیں لیکن یہ ارجنٹائن کے ٹیکس حکام (AFIP) کے ساتھ سرکاری طور پر رجسٹرڈ نہیں ہیں۔ حقیقی CUIT/CUIL رجسٹریشن کے لیے، افراد اور کمپنیوں کو AFIP کے ذریعے مناسب قانونی طریقہ کار پر عمل کرنا ہوگا۔

میرے CUIT/CUIL کی تصدیق کیوں ناکام ہوتی ہے جب کہ شکل درست لگتی ہے؟

تصدیق کئی وجوہات کی بنا پر ناکام ہو سکتی ہے:

  1. قسم کا کوڈ درست کوڈز میں سے نہیں ہے (20، 23، 24، 27، 30، 33، 34)
  2. تصدیقی ہندسہ حساب کردہ قیمت سے میل نہیں کھاتا
  3. شکل غلط ہے (یہ XX-XXXXXXXX-X ہونی چاہیے)
  4. ان پٹ میں غیر عددی کردار ہیں (ہائفنز کے علاوہ)

کیا CUIT/CUIL نمبروں میں ہائفنز کی ضرورت ہے؟

جبکہ CUIT/CUIL نمبروں کو عام طور پر ہائفنز کے ساتھ لکھا اور دکھایا جاتا ہے (XX-XXXXXXXX-X)، ہائفنز اصل نمبر کا حصہ نہیں ہیں۔ ہمارا ویلیڈیٹر دونوں شکلوں (ہائفنز کے ساتھ یا بغیر) کو قبول کرتا ہے اور صحیح طریقے سے کسی بھی شکل کی تصدیق کرے گا۔

کیا CUIT/CUIL نمبر میں DNI کے حصے میں 8 ہندسے سے کم ہو سکتے ہیں؟

نہیں، 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 نمبروں میں سے کوئی بھی معلومات ذخیرہ کرتا ہے؟

نہیں، یہ ٹول کسی بھی داخل کردہ یا جنریٹ کردہ معلومات کو ذخیرہ نہیں کرتا۔ تمام پروسیسنگ آپ کے براؤزر میں کلائنٹ سائیڈ پر کی جاتی ہے، اور کوئی بھی ڈیٹا ہمارے سرورز پر بھیجا یا ذخیرہ نہیں کیا جاتا۔ یہ آپ کی داخل کردہ کسی بھی معلومات کی رازداری اور سیکیورٹی کو یقینی بناتا ہے۔

حوالہ جات

  1. AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." سرکاری ویب سائٹ. https://www.afip.gob.ar/

  2. وزارت محنت، روزگار اور سماجی تحفظ. "CUIL - Clave Única de Identificación Laboral." https://www.argentina.gob.ar/trabajo

  3. ANSES (Administración Nacional de la Seguridad Social). "میری CUIL حاصل کریں۔" https://www.anses.gob.ar/

  4. ارجنٹائن کی سرکاری گزٹ. "AFIP کی عمومی قرارداد 2854/2010: طریقہ کار۔ کلید واحد شناختی ٹیکس (C.U.I.T.)."

  5. ارجنٹائن کے وفاقی قانون کا کوڈ. "شناخت اور ٹیکس دہندگان کا اندراج۔"


کیا آپ ارجنٹائن کے CUIT/CUIL نمبروں کو جنریٹ یا ویلیڈیٹ کرنے کے لیے تیار ہیں؟ ابھی ہمارا ٹول آزمائیں اور اپنے ٹیسٹنگ کے عمل کو آسان بنائیں!