CUIT/CUIL جنریٹر اور ویلیڈیٹر | ارجنٹائن ٹیکس شناخت ٹول
درست ارجنٹائن CUIT/CUIL ٹیسٹ نمبر تیار کریں یا موجودہ نمبروں کی توثیق کریں۔ ڈویلپرز کے لیے مفت آن لائن ٹول جو AFIP کے مطابق توثیق کے ساتھ ٹیکس آئی ڈی اور پے رول سسٹم کی جانچ کرتا ہے۔
CUIT/CUIL جنریٹر
8 ارقام کا DNI نمبر درج کریں یا بے ترتیب جنریٹر استعمال کریں
بے ترتیب تخلیق کردہ DNI استعمال کر رہا ہے
دستاویزات
آرجنٹائن CUIT/CUIL جنریٹر اور ویلیڈیٹر
تعارف
ارجنٹائن کے ٹیکس اور محنت کے نظام میں، آپ مسلسل دو اہم شناخت کنندہ نمبروں سے ملاقات کریں گے: CUIT (کلاوے یونیکا ڈی آئی ڈنٹیفیکاسیون ٹریبیوٹاریا) اور CUIL (کلاوے یونیکا ڈی آئی ڈنٹیفیکاسیون لیبورل)۔ CUIT کو ان کاروباروں اور افراد کے ٹیکس کی شناخت کے طور پر سمجھیں جو ٹیکس ادا کرتے ہیں، جبکہ CUIL سماجی سلامتی کے نظام میں کارکنوں کی شناخت کرتا ہے۔ دونوں 11 ارقام کے فارمیٹ اور تصدیق کے الگورتھم کا استعمال کرتے ہیں، جو ان نمبروں کو ہینڈل کرنے والے ایپلی کیشنز کو آزمانے کو خاص طور پر اہم بناتا ہے۔
ارجنٹائن کے مارکیٹ کے لیے سافٹ ویئر ترقی دیتے وقت، آپ کو درست ٹیسٹ ڈیٹا کی ضرورت ہوتی ہے۔ یہی وہ جگہ ہے جہاں یہ ٹول کام آتا ہے۔ آپ ٹیسٹنگ کے لیے حقیقی ذاتی معلومات کا استعمال کیے بغیر ریاضی کی لحاظ سے درست CUIT/CUIL نمبر تخلیق کر سکتے ہیں، یا موجودہ نمبروں کی توثیق کر سکتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ وہ AFIP کے سرکاری الگورتھم کے مطابق ہیں۔ جو خاص طور پر مفید ہے وہ یہ ہے کہ ٹول جنریشن کے پہلو (آن ڈیمانڈ درست نمبر بنانا) اور توثیق کے پہلو (فارمیٹ کی خرابیوں، غلط قسم کے کوڈز، اور غلط تصدیق کے ارقام کو پکڑنا) دونوں کو ہینڈل کرتا ہے۔
CUIT/CUIL کی ساخت اور حساب
فارمیٹ کو سمجھنا
ایک درست CUIT/CUIL نمبر 11 ارقام پر مشتمل ہوتا ہے جو عام طور پر XX-XXXXXXXX-X فارمیٹ میں ظاہر کیا جاتا ہے۔ یہاں اس کی تفصیل ہے:
-
قسم کوڈ (پہلے 2 ارقام): ادارے کی قسم کی نشاندہی کرتا ہے
- 20, 23, 24: مردانہ افراد (CUIL)
- 27: خواتین (CUIL)
- 30, 33, 34: کمپنیاں اور تنظیمیں (CUIT)
-
DNI نمبر (درمیانی 8 ارقام): افراد کے لیے، یہ ان کا قومی شناختی دستاویز نمبر (DNI) ہے۔ ایک عام غلطی: اگر اصل DNI میں 8 ارقام سے کم ہیں، تو آپ کو اس کے آگے صفر لگانے ہوں گے۔ مثال کے طور پر، DNI 1234567 CUIT/CUIL میں 01234567 بن جاتا ہے۔ کمپنیوں کو اس کے بجائے ایک منفرد تخصیص شدہ نمبر ملتا ہے۔
-
توثیقی ڈیجٹ (آخری ڈیجٹ): یہ چیک ڈیجٹ پورے نمبر کو ایک ویٹڈ الگورتھم کے ذریعے توثیق کرتا ہے۔ اگر یہ ڈیجٹ حساب سے میل نہیں کھاتا، تو پورا CUIT/CUIL غلط ہوتا ہے - یہ ایک ایسی چیز ہے جو اکثر ڈویلپرز کو آزمائشی ڈیٹا بنانے میں پکڑ لیتی ہے۔
توثیقی ڈیجٹ کا حساب
توثیقی ڈیجٹ ایک موڈولو-11 ویٹڈ الگورتھم استعمال کرتا ہے۔ یہاں اس کا طریقہ ہے:
- CUIT/CUIL کے پہلے 10 ارقام لیں (قسم کوڈ + DNI)
- ہر ڈیجٹ کو اس کے متناسب ویٹ سے ضرب دیں: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
- تمام مضروبات کا جمع کریں
- حساب کریں: 11 منہا (جمع موڈولو 11)
- کنارے کے معاملات کو ہینڈل کریں: اگر نتیجہ 11 ہے تو 0 استعمال کریں؛ اگر 10 ہے تو 9 استعمال کریں
لوگ سب سے زیادہ جن چیزوں میں الجھ جاتے ہیں وہ ہیں مرحلہ 5 میں کنارے کے معاملات۔ جب ٹیسٹ کر رہے ہوں، تو آپ کبھی کبھی 10 یا 11 کا نتیجہ حاصل کریں گے، اور اس بات کو بھول جانا کہ ان کو 9 اور 0 میں تبدیل کیا جائے توثیق کی خرابی کا سبب بنتا ہے جسے ڈیبگ کرنا مشکل ہو سکتا ہے اگر آپ اس قاعدے سے واقف نہیں ہیں۔
ریاضی کی زبان میں، اسے اس طرح بیان کیا جا سکتا ہے:
جہاں:
- توثیقی ڈیجٹ ہے
- پہلے 10 ارقام کا -واں ڈیجٹ ہے
- [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 نمبر درج کریں (اختیاری):
- فراہم کردہ فیلڈ میں 8 ارقام کا DNI نمبر ڈالیں
- اگر خالی چھوڑا جائے تو، ٹول بے ترتیب طور پر تخلیق کردہ DNI استعمال کرے گا
- اگر آپ 8 سے کم ارقام درج کرتے ہیں، سسٹم صفر سے شروع کرتے ہوئے پوری کرے گا
-
بے ترتیب DNI تخلیق کریں (اختیاری):
- بے ترتیب 8 ارقام کا DNI نمبر تخلیق کرنے کے لیے "بے ترتیب" بٹن پر کلک کریں
-
تخلیق کردہ CUIT/CUIL دیکھیں:
- ٹول خودکار طور پر آپ کے ان پٹ کی بنیاد پر ایک درست CUIT/CUIL ڈسپلے کرے گا
- فارمیٹ XX-XXXXXXXX-X ہوگا درست تصدیقی ڈیجٹ کے ساتھ
-
نتیجہ کاپی کریں:
- تخلیق کردہ CUIT/CUIL کو کلپ بورڈ پر کاپی کرنے کے لیے کاپی آئیکن پر کلک کریں
- کاپی کامیاب ہونے پر تصدیقی پیغام ظاہر ہوگا
ویلیڈیٹر کا استعمال
-
ٹول انٹرفیس کے اوپر "ویلیڈیٹر" ٹیب کو منتخب کریں۔
-
ویلیڈیٹ کرنے کے لیے CUIT/CUIL درج کریں:
- XX-XXXXXXXX-X فارمیٹ میں CUIT/CUIL ڈالیں
- ٹول آپ کے ان پٹ کو ٹائپ کرتے ہی خود بخود ہائفن کے ساتھ فارمیٹ کرے گا
- آپ بغیر ہائفن کے بھی نمبر درج کر سکتے ہیں (XXXXXXXXXXX)
-
"ویلیڈیٹ" بٹن پر کلک کریں:
- ٹول فارمیٹ، ٹائپ کوڈ، اور تصدیقی ڈیجٹ کی جانچ کرے گا
-
ویلیڈیشن کا نتیجہ دیکھیں:
- درست CUIT/CUIL نمبروں کے لیے، سبز کامیابی کا پیغام ظاہر ہوگا
- غلط نمبروں کے لیے، سرخ خطا کا پیغام وضاحت کرے گا:
- غلط فارمیٹ (XX-XXXXXXXX-X ہونا چاہیے)
- غلط ٹائپ کوڈ (20، 23، 24، 27، 30، 33، 34 میں سے ایک ہونا چاہیے)
- غلط تصدیقی ڈیجٹ
-
اضافی معلومات:
- درست نمبروں کے لیے، ٹول اجزاء کا تجزیہ ظاہر کرے گا:
- ٹائپ کوڈ اور اس کا مطلب
- DNI نمبر
- تصدیقی ڈیجٹ
- درست نمبروں کے لیے، ٹول اجزاء کا تجزیہ ظاہر کرے گا:
عام غلطیاں اور بہترین طریقہ کار
CUIT/CUIL توثیق کے ساتھ اپنی ایپلی کیشنز میں کام کرتے وقت، ان عام پیچیدگیوں پر نظر رکھیں:
صفر-پیڈنگ کی مسائل: سب سے عام بگ جس سے میں مقابلہ کرتا ہوں، وہ ہے سامنے کے صفر کے ساتھ DNI نمبر۔ جب کوئی DNI "1234567" درج کرتا ہے، تو آپ کے کوڈ کو اسے CUIT/CUIL تعمیر کے لیے "01234567" کے طور پر سمجھنا چاہیے۔ بہت سی تنفیذیں پروسیسنگ کے لیے انٹیجر میں تبدیل کرتی ہیں، جو سامنے کے صفر کو ہٹا دیتی ہیں۔ اس کے بجائے مناسب پیڈنگ کے ساتھ سٹرنگ آپریشنز کا استعمال کریں۔
قسم کوڈ الجھن: تمام دو ہجے کے نمبر درست قسم کوڈ نہیں ہوتے۔ صرف 20، 23، 24، 27، 30، 33، 34 کام کرتے ہیں۔ میں نے سسٹمز دیکھے ہیں جو کسی بھی دو ہجے کے سابقہ کو قبول کرتے ہیں، جس سے "درست نظر آنے والے" نمبر جیسے 21-12345678-X بنتے ہیں جو AFIP توثیق میں ناکام ہوتے ہیں۔ توثیقی ہجے کی گنتی سے پہلے ہمیشہ قسم کوڈ کی توثیق کریں۔
جنس کے فرض: قسم کوڈ 20 (مرد) اور 27 (عورت) تبادلہ نہیں کیا جا سکتا۔ اگر آپ جنسیاتی ڈیٹا کی بنیاد پر CUILs خود بخود تخلیق کر رہے ہیں، تو یقینی بنائیں کہ آپ کا قسم کوڈ RENAPER (ارجنٹائن کے قومی رجسٹری) میں درج اصل جنس سے میل کھاتا ہے۔ بے میلی حکومتی خدمات کے ساتھ استعمال کرتے وقت ردی کا سبب بنتی ہے۔
ہائفن ہینڈلنگ: کچھ تنفیذیں ہائفن کی ضرورت رکھتی ہیں جبکہ دوسری انہیں مسترد کرتی ہیں۔ بہترین طریقہ کار: ان پٹ فیلڈز میں دونوں فارمیٹ قبول کریں (ہائفن کے ساتھ یا بغیر)، توثیق سے پہلے ہائفن ہٹائیں، ڈیٹا بیس میں غیر ہائفن والا ورژن ذخیرہ کریں، اور صرف ڈسپلے کے مقاصد کے لیے ہائفن شامل کریں۔
غائب توثیق: الگورتھم توثیق فارمیٹ کی خرابیوں کو پکڑتی ہے لیکن یہ تصدیق نہیں کرتی کہ CUIT/CUIL رجسٹرڈ ہے۔ پروڈکشن میں، پہلے فارمیٹ کی توثیق کریں (تیز)، پھر AFIP کے ڈیٹا بیس کے خلاف تصدیق کریں (سست لیکن مجاز)۔ یہ دو مرحلے والا نقطہ نظر فوری طور پر ٹائپنگ کی غلطیوں کو پکڑتا ہے جبکہ اب بھی یہ یقینی بناتا ہے کہ نمبر حقیقی ہے۔
کنارے کی صورت حال کی جانچ: ہمیشہ توثیقی ہجوں کے ساتھ 0 اور 9 کی جانچ کریں - یہ الگورتھم میں خاص صورتوں سے نتیجہ نکلتا ہے۔ صفر سے شروع ہونے والے DNIs کی بھی جانچ کریں تاکہ یہ یقینی بنایا جا سکے کہ آپ کی پیڈنگ کی منطق صحیح کام کر رہی ہے۔
استعمال کی صورتیں اور عملی اطبیقات
ڈویلپمنٹ اور جانچ
سافٹ ویئر ڈویلپمنٹ: جب ارجنٹائن کے مارکیٹ کے لیے ایپلیکیشنز بنا رہے ہوں، تو آپ کو ایسا ٹیسٹ ڈیٹا درکار ہوگا جو بغیر حقیقی صارف کی معلومات کے توثیق سے گزر جائے۔ یہاں یہ اہم ہو جاتا ہے:
- ای-کامرس پلیٹ فارمز: ادائیگی پروسیسر اور انوائسنگ سسٹم درست CUIT/CUIL نمبروں کی مطالبہ کرتے ہیں۔ لوڈ ٹیسٹنگ کے دوران، آپ کو ریalistic صارف رجسٹریشن کی نقل و حرکت کرنے کے لیے ہزاروں درست نمبروں کی ضرورت ہو سکتی ہے۔
- اکاؤنٹنگ سافٹ ویئر: ٹیکس رپورٹنگ ماڈیول AFIP میں جمع کرانے سے پہلے CUIT/CUIL فارمیٹ کی توثیق کرتے ہیں۔ ان توثیق کے اصولوں کو جانچنے کے لیے ایسے نمبروں کی ضرورت ہوتی ہے جو چیک ڈیجٹ الگورتھم سے گزر جائیں۔
- HR مینجمنٹ سسٹم: پے رول پروسیسنگ اور سماجی سلامتی کے تحفظات درست CUIL نمبروں پر انحصار کرتے ہیں۔ ایک عام منظر: آپ ملازم شمولیت کے بہاؤ کی جانچ کر رہے ہیں اور یہ تصدیق کرنا چاہتے ہیں کہ غیر درست CUILs مناسب غلطی کے پیغامات کو متحرک کرتے ہیں۔
- بینکنگ ایپلیکیشنز: KYC (کسٹمر کو جانیں) عمل اکاؤنٹ کھولنے کے حصے کے طور پر CUIT/CUIL کی توثیق کرتے ہیں۔ میرے تجربے میں، قسم کوڈ کے بے میل ہونے جیسے کنارے کے معاملات اکثر انٹیگریشن ٹیسٹنگ کے دوران سطح پر آتے ہیں۔
ڈیٹا بیس کی آبادی: جب ٹیسٹ ڈیٹا بیس کو بیج کر رہے ہوں، تو الگورتھمک طور پر درست CUIT/CUIL نمبروں کا استعمال کرنا یہ یقینی بناتا ہے کہ آپ کے ڈیٹا بیس کی پابندیاں اور ٹرگر توقع کے مطابق کام کر رہے ہیں۔ یہ خاص طور پر اہم ہے جب ڈیٹا منتقلی اسکرپٹس یا ETL عمل کی جانچ کر رہے ہوں جو شناخت کے نمبروں کی توثیق کرتے ہیں۔
فارم توثیق کی جانچ: خوش مزاج راستے اور غلطی کی صورتوں دونوں کی جانچ کریں۔ کامیاب جمع کرانے کی تصدیق کرنے کے لیے درست نمبر تیار کریں، پھر توثیق کے ڈیجٹ کو تبدیل کریں تاکہ یہ یقینی بنایا جا سکے کہ آپ کا فرنٹ اینڈ اور بیک اینڈ توثیق غلطی کو اس سے پہلے پکڑ لے کہ وہ آپ کے ڈیٹا بیس تک پہنچے۔
API جانچ: انٹیگریشن ٹیسٹ میں درخواست کے پیلوڈ میں درست CUIT/CUIL نمبروں کا استعمال کرنا چاہیے۔ یہ جھوٹے منفی نتائج کو روکتا ہے جہاں ٹیسٹ غلط ٹیسٹ ڈیٹا کی وجہ سے ناکام ہوتے ہیں بجائے اصل API منطق میں خرابیوں کے۔
QA خودکار: پیرامیٹرائزڈ ٹیسٹ ڈائنامک CUIT/CUIL جنریشن سے فائدہ اٹھاتے ہیں۔ ہارڈ کوڈ کردہ ٹیسٹ اقدار کی بجائے جو ٹیسٹ چلانے کے درمیان متصادم ہو سکتی ہیں، ہر ٹیسٹ چلانے کے لیے تازہ درست نمبر تیار کریں۔
تعلیمی مقاصد
[باقی مواد اسی طرح ترجمہ کیا جائے گا]
CUIT/CUIL سسٹم کی تاریخ
ارجنٹائن میں CUIT/CUIL شناختی سسٹم نے اپنی ابتدا سے لے کر اب تک اہم ترقی کی ہے:
ابتدائی مراحل اور نفاذ
CUIT (کلیو یونیکا ڈی آئیڈنٹیفیکیشن ٹریبیوٹاریا) کو پہلی بار 1970 کے دہائی میں ارجنٹائن میں ٹیکس وصولی سسٹم کو جدید بنانے کی کوششوں کے حصے کے طور پر متعارف کرایا گیا۔ وفاقی عوامی آمدنی کی انتظامیہ (AFIP) نے اس منفرد شناخت کو ٹیکس دہندگان کو زیادہ مؤثر طریقے سے ٹریک کرنے اور ٹیکس سے بچنے کو کم کرنے کے لیے نافذ کیا۔
CUIL (کلیو یونیکا ڈی آئیڈنٹیفیکیشن لیبورل) کو بعد میں سماجی سلامتی سسٹم میں مزدوروں کی خاص شناخت کے لیے متعارف کرایا گیا، جس سے ٹیکس شناخت اور مزدوری شناخت کے درمیان فرق پیدا ہوا جبکہ ایک مستحکم فارمیٹ برقرار رکھا گیا۔
ترقی اور ڈیجیٹائلائزیشن
1990 کے دہائی میں، جب ارجنٹائن اہم معاشی اصلاحات سے گزر رہا تھا، CUIT/CUIL سسٹم معاشی سرگرمی کو ٹریک کرنے میں اہم ہوتا گیا۔ سسٹم کو مزید ڈیجیٹائل بنایا گیا اور آن لائن تصدیقی سسٹم نافذ کیے گئے۔
ابتدائی 2000 کے دور میں CUIT/CUIL سسٹم کو مختلف ڈیجیٹل حکومتی خدمات کے ساتھ ضم کیا گیا، جس سے یہ ارجنٹائن کی ای-حکومت کی تشکبات کا ایک ضروری جزو بن گیا۔ اس دور میں تصدیقی الگورتھم اور فارمیٹ کو معیاری بھی بنایا گیا جو آج بھی استعمال میں ہے۔
حالیہ ترقیاں
حال کے سالوں میں، AFIP نے CUIT/CUIL نمبروں کے لیے سلامتی اور تصدیقی عمل کو بہتر بنایا ہے، زیادہ پیچیدہ تصدیقی سسٹم نافذ کیے ہیں اور انہیں دیگر حکومتی ڈیٹا بیس کے ساتھ ضم کیا ہے۔ یہ سسٹم اب ارجنٹائن کی ٹیکس سے بچنے اور معیشت کو فارمل کرنے کی کوششوں میں اہم کردار ادا کر رہا ہے۔
آج، CUIT/CUIL کو نہ صرف ٹیکس اور روزگار کے مقاصد کے لیے بلکہ بینکنگ، جائیداد کی لین دین، یوٹیلیٹی خدمات اور آن لائن خریداری سمیت مختلف سرگرمیوں کے لیے استعمال کیا جاتا ہے، جس سے یہ ارجنٹائن میں افراد اور کاروباروں کے لیے ایک ضروری شناخت بن گیا ہے۔
پیاده کاری پر غور
جب اپنے سسٹم میں CUIT/CUIL کی توثیق کو نافذ کر رہے ہیں، ان تکنیکی پہلوؤں پر غور کریں:
الگورتھم کی استحکام: موجودہ CUIT/CUIL کی توثیق الگورتھم 1990 کے دوران سے اپنی معیاری سازی کے بعد سے لاتغیر رہی ہے۔ AFIP کی تکنیکی دستاویزات کے مطابق، موڈولو-11 کے وزنی چیک ڈیجٹ کا طریقہ ریزولوشن جنرل 2854/2010 اور اس کے بعد کے ضوابط میں کوڈ کیا گیا ہے۔ یہ استحکام کا مطلب ہے کہ پیاده کاریوں کو شاذ و نادر ہی اپ ڈیٹ کی ضرورت ہوتی ہے، لیکن آپ کو کسی بھی قانونی تبدیلی کے لیے AFIP کے اعلانات پر نظر رکھنی چاہیے۔
کارکردگی کی بہتر سازی: توثیق الگورتھم کمپیوٹیشنل طور پر سستا ہے - صرف 10 ضرب، ایک اضافہ، اور ایک موڈولو آپریشن۔ اعلیٰ تھروپٹ سسٹم جو فی سیکنڈ ہزاروں توثیقات پر کام کرتے ہیں، وہاں بوٹل نیک عام طور پر AFIP کے ڈیٹا بیس کے خلاف توثیق کرتے وقت نیٹ ورک کی لیٹنسی ہوتی ہے، الگورتھم خود نہیں۔ AFIP کی توثیق کے نتائج کو مناسب TTLs (عام طور پر 24 گھنٹے) کے ساتھ کیشنگ کرنے پر غور کریں تاکہ تازگی اور کارکردگی کے درمیان توازن قائم کیا جا سکے۔
کریکٹر انکوڈنگ: جب بیرونی ذرائع (PDFs، اسکین کردہ دستاویزات، ویب سکریپنگ) سے CUIT/CUIL ڈیٹا پر کام کر رہے ہوں، کریکٹر انکوڈنگ کے مسائل پر نظر رکھیں۔ ہائفن ایک em dash (U+2014)، en dash (U+2013)، یا منفی نشان (U+2212) کی صورت میں ظاہر ہو سکتا ہے بجائے معیاری ہائفن-منس (U+002D) کے۔ غلط منفی نتائج سے بچنے کے لیے ان کو توثیق سے پہلے معیاری بنائیں۔
بین الاقوامی سازی: اگر آپ کی ایپلیکیشن متعدد لاطینی امریکی مارکیٹوں کی خدمت کرتی ہے، تو نوٹ کریں کہ ارجنٹائن کا CUIT/CUIL موڈولو-11 کو خاص وزن کے ساتھ استعمال کرتا ہے، جبکہ چلی کا RUT موڈولو-11 کو مختلف وزن کے ساتھ، اور برازیل کا CPF/CNPJ موڈولو-11 کو ایک اور الگ پیٹرن کے ساتھ استعمال کرتا ہے۔ یہ مت سمجھیں کہ الگورتھم ایک جیسے ہیں - ہر ملک کے سسٹم کے الگ الگ قواعد ہیں۔ چیک ڈیجٹ الگورتھم کی وسیع تر فہم کے لیے، ISO/IEC 7064 معیار دیکھیں جو مختلف موڈولو پر مبنی توثیق اسکیموں کو فارمل کرتا ہے۔
ڈیٹا بیس اسٹوریج: CUIT/CUIL نمبروں کو بغیر ہائفن کے فکسڈ لمبائی CHAR(11) یا BIGINT کے طور پر اسٹور کریں اگر آپ کا ڈیٹا بیس بغیر درستگی کے 11 ڈیجٹ کے انٹیجر کی حمایت کرتا ہے۔ ایک چیک کنسٹرینٹ شامل کریں جو ڈیٹا بیس کی سطح پر توثیق کے ڈیجٹ کی توثیق کرتا ہے۔ صارفین کے 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}
107PHP
<?php function calculateVerificationDigit($typeCode, $dni) { // سٹرنگ میں تبدیل کریں اور DNI کو 8 ڈیجٹس کے ساتھ لیڈنگ زیرو کے ساتھ یقینی بنائیں $typeCodeStr = (string)$typeCode; $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT); // ٹائپ ## اکثر پوچھے جانے والے سوالات ### CUIT اور CUIL میں کیا فرق ہے؟ یہاں عملی امتیاز ہے: **CUIT** (کلیو یونیکا دی اینٹیفیکیشن ٹریبیوٹاریا) ٹیکس دہندگان کی شناخت کرتا ہے - افراد اور کاروبار جو AFIP کے ساتھ ٹیکس جمع کراتے ہیں۔ **CUIL** (کلیو یونیکا دی اینٹیفیکیشن لیبورل) ملازمت اور ریٹائرمنٹ کے مقاصد کے لیے سماجی سلامتی نظام میں کارکنوں کی شناخت کرتا ہے۔ عملی طور پر، بہت سے افراد کے پاس CUIL (اپنی پہلی نوکری سے) اور بعد میں CUIT (اگر وہ خود روزگار ہو جاتے ہیں یا کاروبار شروع کرتے ہیں) ہو سکتا ہے۔ نمبر ایک جیسی فارمیٹنگ اور حساب کے قواعد استعمال کرتے ہیں، اس لیے توثیق کے نقطہ نظر سے، آپ ان کو ایک جیسے طریقے سے سنبھالتے ہیں۔ امتیاز انتظامی مقاصد کے لیے اہم ہے: پے رول سسٹم عام طور پر CUIL کے ساتھ کام کرتے ہیں، جبکہ انوائسنگ اور ٹیکس سسٹم CUIT استعمال کرتے ہیں۔ ### افراد اور کمپنیوں کے لیے کون سے قسم کے کوڈ استعمال کیے جاتے ہیں؟ افراد کے لیے: - 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 استعمال کریں۔ یہ خاص صورتیں اس لیے موجود ہیں کیونکہ توثیقی ڈیجٹ ایک ڈیجٹ (0-9) ہونا چاہیے۔ یہ ایک موڈولو-11 چیک ڈیجٹ الگورتھم ہے، جو ISBN-10 کوڈز اور دنیا بھر کے دیگر شناخت سسٹموں میں استعمال ہوتا ہے۔ ### کیا میں اس ٹول کو حقیقی، سرکاری CUIT/CUIL نمبر بنانے کے لیے استعمال کر سکتا ہوں؟ نہیں - یہ ٹول ریاضی کی لحاظ سے درست ٹیسٹ ڈیٹا تیار کرتا ہے، لیکن نمبر AFIP کے ساتھ سرکاری طور پر رجسٹر نہیں ہیں۔ اسے لوہن الگورتھم کا استعمال کرکے ویلڈ کریڈٹ کارڈ نمبر بنانے کی طرح سمجھیں: یہ فارمیٹ کی توثیق پاس کرتا ہے، لیکن کسی حقیقی اکاؤنٹ سے جڑا نہیں ہے۔ سرکاری CUIT/CUIL رجسٹریشن کے لیے، افراد کو اپنے DNI کے ساتھ AFIP میں جانا ہوگا، جبکہ کاروبار کو کارپوریٹ رجسٹریشن کی کارروائی مکمل کرنی ہوگی۔ ٹول صرف ترقیاتی، ٹیسٹنگ اور تعلیمی استعمال کے لیے ہے جہاں آپ کو ایسا ڈیٹا درکار ہو جو حقیقی شناخت کے نمبروں کے ساتھ تصادم نہ کرے۔ (باقی مواد کا ترجمہ اسی طرح جاری رہے گا...) ## حوالے 1. اے ایف آئی پی (وفاقی عوامی آمدنی انتظامیہ). "CUIT/CUIL/CDI." سرکاری ویب سائٹ. [https://www.afip.gob.ar/](https://www.afip.gob.ar/) 2. محنت، روزگار اور سماجی سلامتی وزارت. "CUIL - محنت کی واحد شناختی کلید." [https://www.argentina.gob.ar/trabajo](https://www.argentina.gob.ar/trabajo) 3. اے این ایس ای ایس (قومی سماجی سلامتی انتظامیہ). "میری CUIL حاصل کریں." [https://www.anses.gob.ar/](https://www.anses.gob.ar/) 4. ارجنٹائن جمہوریہ کا سرکاری بلیٹن. "عمومی قرارداد اے ایف آئی پی 2854/2010: طریقہ کار۔ واحد ٹیکس شناختی کلید (C.U.I.T.)." 5. ارجنٹائن جمہوریہ کا مالی ضابطہ. "ٹیکس دہندگان کی شناخت اور رجسٹریشن." --- چاہے آپ انوائسنگ سسٹم بنا رہے ہیں، ملازم آن بورڈنگ فلوز کی جانچ کر رہے ہیں، یا توثیق کے الگورتھم کے بارے میں سیکھ رہے ہیں، یہ ٹول CUIT/CUIL کی تخلیق اور توثیق فراہم کرتا ہے جس کی آپ کو ضرورت ہے۔ الگورتھمی توثیق سے گزرنے والا ٹیسٹ ڈیٹا تخلیق کریں، ڈیٹا بیس میں آنے سے پہلے نمبروں کی تصدیق کریں، یا عملی طور پر چیک ڈیجٹ الگورتھم کے کام کرنے کا طریقہ دریافت کریں۔