পরীক্ষার জন্য বৈধ আর্জেন্টিনার CUIT/CUIL নম্বর তৈরি করুন অথবা বিদ্যমান নম্বরগুলি যাচাই করুন। আর্জেন্টিনার কর এবং শ্রম শনাক্তকরণ নম্বরগুলির সাথে কাজ করা ডেভেলপারদের জন্য একটি সহজ টুল।
8 ডিজিটের DNI নম্বর প্রবেশ করুন অথবা র্যান্ডম জেনারেটর ব্যবহার করুন
আর্জেন্টিনার CUIT (Clave Única de Identificación Tributaria) এবং CUIL (Clave Única de Identificación Laboral) হল অনন্য শনাক্তকরণ সংখ্যা যা আর্জেন্টিনায় কর এবং কর্মসংস্থান উদ্দেশ্যে ব্যবহৃত হয়। এই ১১-সংখ্যার কোডগুলি ব্যক্তিদের এবং ব্যবসাগুলিকে আর্জেন্টিনার অর্থনৈতিক ব্যবস্থার মধ্যে আইনগতভাবে কাজ করতে অপরিহার্য। আমাদের CUIT/CUIL জেনারেটর এবং ভ্যালিডেটর টুলটি পরীক্ষার উদ্দেশ্যে বৈধ CUIT/CUIL সংখ্যা তৈরি করার এবং বিদ্যমান সংখ্যাগুলির বৈধতা যাচাই করার একটি সহজ, কার্যকর উপায় প্রদান করে যাতে সেগুলি অফিসিয়াল ফরম্যাট এবং যাচাইকরণ অ্যালগরিদমের সাথে সঙ্গতিপূর্ণ হয়।
আপনি একজন ডেভেলপার যিনি আর্জেন্টিনার ট্যাক্স আইডি পরিচালনা করা অ্যাপ্লিকেশনগুলি পরীক্ষা করছেন, একজন QA বিশেষজ্ঞ যিনি সিস্টেমের কার্যকারিতা যাচাই করছেন, অথবা আপনি কেবল জানতে চান যে এই শনাক্তকরণ সংখ্যা কীভাবে কাজ করে, এই টুলটি অপ্রয়োজনীয় জটিলতা ছাড়াই একটি সরল সমাধান অফার করে। টুলটিতে দুটি প্রধান ফাংশন রয়েছে: একটি জেনারেটর যা নির্দিষ্ট পরামিতি বা এলোমেলোভাবে বৈধ CUIT/CUIL সংখ্যা তৈরি করে এবং একটি ভ্যালিডেটর যা যাচাই করে যে একটি নির্দিষ্ট CUIT/CUIL সংখ্যা সঠিক ফরম্যাট এবং গণনার নিয়ম অনুসরণ করে কিনা।
একটি বৈধ CUIT/CUIL সংখ্যা ১১টি সংখ্যার সমন্বয়ে গঠিত যা সাধারণত XX-XXXXXXXX-X ফরম্যাটে প্রদর্শিত হয়:
টাইপ কোড (প্রথম ২ সংখ্যা): সত্তার প্রকার নির্দেশ করে
DNI সংখ্যা (মধ্যের ৮ সংখ্যা): ব্যক্তিদের জন্য, এটি তাদের জাতীয় পরিচয়পত্রের সংখ্যা (DNI), যদি প্রয়োজন হয় তবে ৮ সংখ্যায় পৌঁছানোর জন্য শীর্ষে শূন্য যোগ করা হয়। কোম্পানির জন্য, এটি একটি অনন্য বরাদ্দকৃত সংখ্যা।
যাচাইকরণ সংখ্যা (শেষ সংখ্যা): একটি চেক ডিজিট যা একটি নির্দিষ্ট অ্যালগরিদম ব্যবহার করে গণনা করা হয় যা পুরো সংখ্যাটির বৈধতা যাচাই করে।
যাচাইকরণ সংখ্যা নিম্নলিখিত অ্যালগরিদম ব্যবহার করে গণনা করা হয়:
গণিতের ভাষায়, এটি নিম্নরূপ প্রকাশ করা যেতে পারে:
যেখানে:
টুল ইন্টারফেসের উপরে "জেনারেটর" ট্যাবটি নির্বাচন করুন।
ড্রপডাউন মেনু থেকে একটি টাইপ কোড নির্বাচন করুন:
একটি DNI সংখ্যা প্রবেশ করুন (ঐচ্ছিক):
এলোমেলো DNI তৈরি করুন (ঐচ্ছিক):
উৎপন্ন CUIT/CUIL দেখুন:
ফলাফল কপি করুন:
টুল ইন্টারফেসের উপরে "ভ্যালিডেটর" ট্যাবটি নির্বাচন করুন।
যাচাই করার জন্য CUIT/CUIL প্রবেশ করুন:
"ভ্যালিডেট" বোতামে ক্লিক করুন:
যাচাই ফলাফল দেখুন:
অতিরিক্ত তথ্য:
সফটওয়্যার উন্নয়ন: আর্জেন্টিনার ট্যাক্স শনাক্তকরণ পরিচালনা করে এমন অ্যাপ্লিকেশনগুলি পরীক্ষা করার জন্য বৈধ CUIT/CUIL সংখ্যা তৈরি করুন, যেমন:
ডাটাবেস জনসংখ্যা: আর্জেন্টিনার ব্যবহারকারী তথ্য সংরক্ষণ করে এমন সিস্টেমের জন্য বাস্তবসম্মত পরীক্ষার ডেটা তৈরি করুন, নিশ্চিত করুন যে ডাটাবেসের সীমাবদ্ধতা এবং যাচাইকরণ নিয়মগুলি সঠিকভাবে কাজ করছে।
ফর্ম যাচাইকরণ পরীক্ষা: CUIT/CUIL তথ্য সংগ্রহকারী ওয়েব ফর্মের জন্য ইনপুট যাচাইকরণের পরীক্ষা করুন, নিশ্চিত করুন যে অযাচিত এন্ট্রির জন্য সঠিক ত্রুটি বার্তা প্রদর্শিত হচ্ছে।
API পরীক্ষা: CUIT/CUIL সংখ্যা প্রয়োজনীয় API এন্ডপয়েন্টগুলির জন্য বৈধ পে-লোড তৈরি করুন, নিশ্চিত করুন যে আপনার ইন্টিগ্রেশন পরীক্ষাগুলি বৈধ ডেটা ব্যবহার করে।
QA অটোমেশন: ডায়নামিক পরীক্ষার কেস তৈরি করতে অটোমেটেড পরীক্ষার স্ক্রিপ্টে CUIT/CUIL জেনারেশন অন্তর্ভুক্ত করুন, স্থির পরীক্ষার ডেটার পরিবর্তে।
যাচাইকরণ অ্যালগরিদম শেখা: CUIT/CUIL যাচাইকরণ প্রক্রিয়া কার্যকরভাবে দেখার মাধ্যমে চেক ডিজিট অ্যালগরিদমগুলি কীভাবে কাজ করে তা বুঝুন।
ডেটা যাচাইকরণ শেখানো: নতুন ডেভেলপারদের ফর্ম যাচাইকরণ প্রযুক্তি শেখানোর সময় শিক্ষামূলক উদাহরণ হিসেবে ব্যবহার করুন।
আর্জেন্টিনার ব্যবসায়িক প্রয়োজনীয়তা বোঝা: আন্তর্জাতিক ব্যবসায়িক উন্নয়নের জন্য আর্জেন্টিনায় ব্যবহৃত শনাক্তকরণ ব্যবস্থা সম্পর্কে জানুন।
যদিও আমাদের টুলটি CUIT/CUIL সংখ্যা তৈরি এবং যাচাই করার একটি সরল উপায় প্রদান করে, আপনি কিছু বিকল্প পদ্ধতি বিবেচনা করতে পারেন:
সরকারি যাচাইকরণ: উৎপাদন পরিবেশের জন্য, সর্বদা সম্ভব হলে CUIT/CUIL সংখ্যা অফিসিয়াল AFIP (Administración Federal de Ingresos Públicos) ডাটাবেসের বিরুদ্ধে যাচাই করুন।
লাইব্রেরি এবং প্যাকেজ: বেশ কয়েকটি প্রোগ্রামিং ভাষায় আর্জেন্টিনার ট্যাক্স আইডি যাচাইকরণের জন্য বিশেষভাবে ডিজাইন করা লাইব্রেরি রয়েছে:
validar-cuit
npm প্যাকেজafip-php
লাইব্রেরিpy-cuit
প্যাকেজম্যানুয়াল গণনা: শিক্ষামূলক উদ্দেশ্যে, আপনি পূর্বে বর্ণিত অ্যালগরিদম ব্যবহার করে যাচাইকরণ সংখ্যা ম্যানুয়ালি গণনা করতে পারেন।
ব্যাপক ব্যবসায়িক যাচাইকরণ পরিষেবা: এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য, CUIT/CUIL এর সাথে সম্পর্কিত সত্তার অস্তিত্ব এবং স্থিতি যাচাই করার জন্য ব্যাপক যাচাইকরণ পরিষেবাগুলি ব্যবহার করার কথা বিবেচনা করুন।
আর্জেন্টিনায় CUIT/CUIL শনাক্তকরণ সিস্টেম তার প্রতিষ্ঠার পর থেকে উল্লেখযোগ্যভাবে বিবর্তিত হয়েছে:
CUIT (Clave Única de Identificación Tributaria) প্রথম ১৯৭০-এর দশকে আর্জেন্টিনায় পরিচয় করানো হয়েছিল কর সংগ্রহ ব্যবস্থাকে আধুনিকীকরণের প্রচেষ্টার অংশ হিসেবে। ফেডারেল প্রশাসন আয়কর (AFIP) এই অনন্য শনাক্তকরণকারীকে করদাতাদের আরও কার্যকরভাবে ট্র্যাক করার জন্য বাস্তবায়ন করেছিল এবং কর ফাঁকি কমানোর জন্য।
পরবর্তীতে CUIL (Clave Única de Identificación Laboral) পরিচয় করানো হয়েছিল শ্রমিকদের সামাজিক নিরাপত্তা ব্যবস্থায় বিশেষভাবে চিহ্নিত করতে, কর শনাক্তকরণ এবং শ্রম শনাক্তকরণের মধ্যে একটি পার্থক্য তৈরি করে, একই সময়ে একটি সঙ্গতিপূর্ণ ফরম্যাট বজায় রেখে।
১৯৯০-এর দশকে, যখন আর্জেন্টিনা উল্লেখযোগ্য অর্থনৈতিক সংস্কারের মধ্য দিয়ে যাচ্ছিল, CUIT/CUIL সিস্টেম ক্রমবর্ধমান গুরুত্বপূর্ণ হয়ে উঠেছিল অর্থনৈতিক কার্যকলাপ ট্র্যাক করার জন্য। সিস্টেমটি আরও ডিজিটালাইজ করা হয়েছিল এবং অনলাইন যাচাইকরণ সিস্টেম বাস্তবায়িত হয়েছিল।
২০০০-এর দশকের শুরুতে, CUIT/CUIL সিস্টেমটি বিভিন্ন ডিজিটাল সরকারি পরিষেবার সাথে একীভূত করা হয়েছিল, যা আর্জেন্টিনার ই-গভর্নমেন্ট উদ্যোগগুলির একটি অপরিহার্য উপাদান করে তোলে। এই সময়ে যাচাইকরণ অ্যালগরিদম এবং ফরম্যাটের মানকরণ হয়েছে যা আজও ব্যবহৃত হয়।
সাম্প্রতিক বছরগুলিতে, AFIP CUIT/CUIL সংখ্যার জন্য নিরাপত্তা এবং যাচাইকরণ প্রক্রিয়া উন্নত করেছে, আরও উন্নত যাচাইকরণ সিস্টেম বাস্তবায়ন এবং অন্যান্য সরকারি ডাটাবেসের সাথে একীভূত করেছে। সিস্টেমটি আজ আর্জেন্টিনার কর ফাঁকি মোকাবেলা এবং অর্থনীতিকে আনুষ্ঠানিক করার প্রচেষ্টায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
আজ, CUIT/CUIL কেবল কর এবং কর্মসংস্থান উদ্দেশ্যে ব্যবহৃত হয় না, বরং ব্যাংকিং, সম্পত্তির লেনদেন, ইউটিলিটি পরিষেবা এবং অনলাইন ক্রয়ের মতো বিভিন্ন কার্যকলাপের জন্য একটি অপরিহার্য শনাক্তকারী হয়ে উঠেছে, যা আর্জেন্টিনায় কার্যকরী ব্যক্তি এবং ব্যবসার জন্য একটি অপরিহার্য শনাক্তকারী।
1def calculate_verification_digit(type_code, dni):
2 # স্ট্রিংয়ে রূপান্তর করুন এবং নিশ্চিত করুন যে DNI ৮ সংখ্যায় শূন্য যোগ করা হয়েছে
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 ৮ সংখ্যায় শূন্য যোগ করা হয়েছে
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 ৮ সংখ্যায় শূন্য যোগ করা হয়েছে
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 ৮ সংখ্যায় শূন্য যোগ করা হয়েছে
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 (Clave Única de Identificación Tributaria) কর শনাক্তকরণের উদ্দেশ্যে ব্যবহৃত হয় এবং এটি আর্জেন্টিনায় কর দিতে প্রয়োজনীয় ব্যক্তিদের এবং আইনগত সত্তাগুলির জন্য বরাদ্দ করা হয়। CUIL (Clave Única de Identificación Laboral) বিশেষভাবে শ্রমিকদের জন্য এবং শ্রম ও সামাজিক নিরাপত্তার উদ্দেশ্যে ব্যবহৃত হয়। যদিও তারা একই ফরম্যাট এবং গণনার অ্যালগরিদম শেয়ার করে, তারা বিভিন্ন প্রশাসনিক উদ্দেশ্যে কাজ করে।
ব্যক্তিদের জন্য:
কোম্পানি এবং সংস্থাগুলির জন্য:
যাচাইকরণ সংখ্যা একটি ওজনযুক্ত যোগফল অ্যালগরিদম ব্যবহার করে গণনা করা হয়। প্রথম ১০ সংখ্যাকে একটি সংশ্লিষ্ট ওজন (৫, ৪, ৩, ২, ৭, ৬, ৫, ৪, ৩, ২) দ্বারা গুণ করা হয় এবং ফলাফলগুলি যোগ করা হয়। যাচাইকরণ সংখ্যা হল ১১ বিয়োগ অবশিষ্টাংশ যখন এই যোগফল ১১ দ্বারা ভাগ করা হয়। বিশেষ ক্ষেত্র: যদি ফলাফল ১১ হয়, তবে যাচাইকরণ সংখ্যা ০; যদি ফলাফল ১০ হয়, তবে যাচাইকরণ সংখ্যা ৯।
না, এই টুলটি পরীক্ষামূলক এবং শিক্ষামূলক উদ্দেশ্যের জন্য ডিজাইন করা হয়েছে। তৈরি করা সংখ্যাগুলি CUIT/CUIL অ্যালগরিদমের ভিত্তিতে গাণিতিকভাবে বৈধ, তবে এগুলি আর্জেন্টিনার কর কর্তৃপক্ষ (AFIP) এর সাথে অফিসিয়ালি নিবন্ধিত নয়। অফিসিয়াল CUIT/CUIL নিবন্ধনের জন্য, ব্যক্তিদের এবং কোম্পানিগুলিকে AFIP এর মাধ্যমে সঠিক আইনগত প্রক্রিয়া অনুসরণ করতে হবে।
যাচাইকরণ ব্যর্থ হওয়ার কয়েকটি কারণ থাকতে পারে:
না, DNI অংশ সর্বদা ৮ সংখ্যা থাকতে হবে। যদি প্রকৃত DNI এর সংখ্যা কম হয় তবে এটি ৮ সংখ্যায় পৌঁছানোর জন্য শীর্ষে শূন্য যোগ করতে হবে। উদাহরণস্বরূপ, যদি কারও DNI 1234567 হয়, তবে CUIT/CUIL এ এটি 01234567 হিসাবে উপস্থাপিত হবে।
একটি CUIT/CUIL অফিসিয়ালি নিবন্ধিত এবং সক্রিয় কিনা তা যাচাই করার জন্য, আপনাকে অফিসিয়াল AFIP (Administración Federal de Ingresos Públicos) ওয়েবসাইট বা পরিষেবাগুলি ব্যবহার করতে হবে। আমাদের টুলটি শুধুমাত্র সংখ্যার গাণিতিক বৈধতা যাচাই করে, এর অফিসিয়াল নিবন্ধন স্থিতি নয়।
যদিও CUIT/CUIL সংখ্যাগুলি সাধারণত হাইফেন (XX-XXXXXXXX-X) সহ লেখা এবং প্রদর্শিত হয়, হাইফেনগুলি গণনার উদ্দেশ্যে প্রকৃত সংখ্যার অংশ নয়। আমাদের ভ্যালিডেটর উভয় ফরম্যাট (হাইফেন সহ বা ছাড়া) গ্রহণ করে এবং সঠিকভাবে যাচাই করবে।
না, DNI অংশ সর্বদা ৮ সংখ্যা থাকতে হবে। যদি প্রকৃত DNI এর সংখ্যা কম হয় তবে এটি ৮ সংখ্যায় পৌঁছানোর জন্য শীর্ষে শূন্য যোগ করতে হবে। উদাহরণস্বরূপ, যদি কারও DNI 1234567 হয়, তবে CUIT/CUIL এ এটি 01234567 হিসাবে উপস্থাপিত হবে।
হ্যাঁ, আপনি এই টুলে প্রদর্শিত অ্যালগরিদম এবং লজিক আপনার বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে সংহত করতে পারেন। 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)। "আমার 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। "সনাক্তকরণ এবং করদাতাদের নিবন্ধন।"
আপনি কি আর্জেন্টিনার CUIT/CUIL সংখ্যা তৈরি বা যাচাই করতে প্রস্তুত? এখনই আমাদের টুলটি চেষ্টা করুন এবং আপনার পরীক্ষার প্রক্রিয়াটি সহজ করুন!
আপনার কাজে দরকারী হতে পারে আরো টুল খুঁজে বের করুন