মূল বিষয়বস্তুতে যান

CUIT/CUIL জেনারেটর এবং ভ্যালিডেটর | আর্জেন্টাইন কর পরিচয়পত্র টুল

বৈধ আর্জেন্টাইন CUIT/CUIL পরীক্ষামূলক সংখ্যা তৈরি করুন বা বিদ্যমান সংখ্যাগুলি যাচাই করুন। ডেভেলপারদের জন্য AFIP-সামঞ্জস্যপূর্ণ যাচাইকরণ সহ কর পরিচয়পত্র এবং পেরোল সিস্টেম পরীক্ষার জন্য বিনামূল্যের অনলাইন টুল।

CUIT/CUIL জেনারেটর

৮ সংখ্যার DNI নম্বর লিখুন বা এলোমেলো জেনারেটর ব্যবহার করুন

তৈরি করা CUIT/CUIL
20-21790141-4

এলোমেলো তৈরি করা DNI ব্যবহার করা হচ্ছে

লোডিং ক্যালকুলেটর...
📚

ডকুমেন্টেশন

আর্জেন্টাইন CUIT/CUIL জেনারেটর এবং ভ্যালিডেটর

ভূমিকা

আর্জেন্টিনার কর এবং শ্রম ব্যবস্থায়, আপনি ক্রমাগত দুটি গুরুত্বপূর্ণ পরিচয়কারী সনাক্তকারী দেখতে পাবেন: CUIT (ক্লাভে ইউনিকা দ্য ইডেন্টিফিকাসাও ট্রিবুটারিয়া) এবং CUIL (ক্লাভে ইউনিকা দ্য ইডেন্টিফিকাসাও লাবোরাল)। CUIT-কে ভাবুন কর প্রদানকারী ব্যবসা এবং ব্যক্তিদের কর পরিচয়পত্র হিসাবে, যেখানে CUIL সামাজিক নিরাপত্তা ব্যবস্থায় শ্রমিকদের সনাক্ত করে। উভয়ই একই ১১-সংখ্যার বিন্যাস এবং যাচাইকরণ অ্যালগরিদম ব্যবহার করে, যা এই নম্বরগুলি পরিচালনাকারী অ্যাপ্লিকেশন পরীক্ষা করাকে বিশেষভাবে গুরুত্বপূর্ণ করে তোলে।

আর্জেন্টিনার বাজারের জন্য সফ্টওয়্যার ডেভেলপ করার সময়, আপনার বৈধ পরীক্ষার তথ্য প্রয়োজন। এই টুলটি সেই কাজে আসে। আপনি বাস্তব ব্যক্তিগত তথ্য ব্যবহার না করেই গাণিতিকভাবে সঠিক CUIT/CUIL নম্বর পরীক্ষার জন্য তৈরি করতে পারবেন, অথবা বিদ্যমান নম্বরগুলি যাচাই করতে পারবেন যাতে AFIP-এর আনুষ্ঠানিক অ্যালগরিদমের সঙ্গে সঙ্গতিপূর্ণ থাকে। বিশেষ করে যে বিষয়টি দরকারী তা হল যে টুলটি উভয় দিক পরিচালনা করে - চাহিদা অনুসারে বৈধ নম্বর তৈরি (জেনারেশন) এবং যাচাইকরণ (ফরম্যাট ত্রুটি, অবৈধ টাইপ কোড এবং ভুল যাচাইকরণ সংখ্যা সনাক্ত করে যা উৎপাদন সমস্যা সৃষ্টি করতে পারে)।

CUIT/CUIL কাঠামো এবং গণনা

ফরম্যাট বোঝা

একটি বৈধ CUIT/CUIL নম্বর ১১ টি অঙ্ক সমন্বিত যা সাধারণত XX-XXXXXXXX-X ফরম্যাটে প্রদর্শিত হয়। এটি কীভাবে বিভাজিত হয়:

  1. টাইপ কোড (প্রথম ২ টি অঙ্ক): সত্তার ধরন সনাক্ত করে

    • 20, 23, 24: পুরুষ ব্যক্তিবর্গ (CUIL)
    • 27: মহিলা ব্যক্তিবর্গ (CUIL)
    • 30, 33, 34: কোম্পানি এবং সংস্থা (CUIT)
  2. DNI নম্বর (মধ্যবর্তী ৮ টি অঙ্ক): ব্যক্তিদের জন্য, এটি তাদের জাতীয় পরিচয় নথি নম্বর (DNI)। একটি সাধারণ ফাঁদ: যদি প্রকৃত DNI ৮ টি অঙ্কের কম হয়, তাহলে আপনাকে অবশ্যই শূন্য দিয়ে পূরণ করতে হবে। যেমন, DNI 1234567 CUIT/CUIL-এ 01234567 হয়ে যায়। কোম্পানিগুলি বরং একটি অনন্য বরাদ্দকৃত নম্বর পায়।

  3. যাচাইকরণ অঙ্ক (শেষ অঙ্ক): এই চেক অঙ্কটি ওজন যুক্ত অ্যালগরিদমের মাধ্যমে পুরো নম্বরটি বৈধ করে। যদি এই অঙ্কটি গণনার সাথে মেলে না, তাহলে পুরো CUIT/CUIL অবৈধ—যা প্রায়শই ডেভেলপারদের পরীক্ষামূলক তথ্য তৈরি করার সময় তাদের অপ্রস্তুত করে তোলে।

যাচাইকরণ অঙ্ক গণনা

যাচাইকরণ অঙ্কটি মডুলো-১১ ওজন যুক্ত অ্যালগরিদম ব্যবহার করে। এটি কীভাবে কাজ করে:

  1. CUIT/CUIL-এর প্রথম ১০ টি অঙ্ক নিন (টাইপ কোড + DNI)
  2. প্রতিটি অঙ্ককে তার সংশ্লিষ্ট ওজন দ্বারা গুণ করুন: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
  3. সমস্ত গুণফলের যোগ করুন
  4. গণনা করুন: ১১ মাইনাস (যোগ মডুলো ১১)
  5. সীমান্ত ক্ষেত্রগুলি পরিচালনা করুন: যদি ফলাফল ১১ হয়, তাহলে ০ ব্যবহার করুন; যদি ১০ হয়, তাহলে ৯ ব্যবহার করুন

যা মানুষকে সবচেয়ে বেশি বিভ্রান্ত করে তা হল পদক্ষেপ ৫-এর সীমান্ত ক্ষেত্রগুলি। পরীক্ষা করার সময়, আপনি কখনও কখনও ১০ বা ১১ এর ফলাফল পাবেন, এবং এই নিয়মটি ভুলে গেলে ৯ এবং ০-এ মানচিত্রিত করতে ব্যর্থ হলে যাচাইকরণ ব্যর্থতা ঘটে যা ডিবাগ করা কঠিন হতে পারে।

গাণিতিকভাবে, এটি এইভাবে প্রকাশ করা যেতে পারে:

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

যেখানে:

  • VDVD হল যাচাইকরণ অঙ্ক
  • did_i হল প্রথম ১০ টি অঙ্কের 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 লিখুন:

    • XX-XXXXXXXX-X ফরম্যাটে CUIT/CUIL লিখুন
    • টুলটি আপনার ইনপুটকে স্বয়ংক্রিয়ভাবে হাইফেন দিয়ে ফরম্যাট করবে
    • আপনি হাইফেন ছাড়াও (XXXXXXXXXXX) নম্বর লিখতে পারেন
  3. "যাচাই করুন" বোতাম ক্লিক করুন:

    • টুলটি ফরম্যাট, টাইপ কোড এবং যাচাইকরণ সংখ্যা পরীক্ষা করবে
  4. যাচাই ফলাফল দেখুন:

    • বৈধ CUIT/CUIL নম্বরের জন্য, সবুজ সাফল্য বার্তা দেখা যাবে
    • অবৈধ নম্বরের জন্য, লাল ত্রুটি বার্তা ব্যাখ্যা করবে:
      • অবৈধ ফরম্যাট (XX-XXXXXXXX-X হতে হবে)
      • অবৈধ টাইপ কোড (20, 23, 24, 27, 30, 33, 34 হতে হবে)
      • অবৈধ যাচাইকরণ সংখ্যা
  5. অতিরিক্ত তথ্য:

    • বৈধ নম্বরের জন্য, টুলটি উপাদানগুলির একটি বিশদ বিবরণ প্রদর্শন করবে:
      • টাইপ কোড এবং এর অর্থ
      • DNI নম্বর
      • যাচাইকরণ সংখ্যা

সাধারণ ভুল এবং সর্বোত্তম অনুশীলন

CUIT/CUIL যাচাইকরণ আপনার অ্যাপ্লিকেশনগুলিতে কাজ করার সময়, এই ঘন ঘন দেখা যায় এমন বিপদগুলির প্রতি নজর রাখুন:

শূন্য-প্যাডিং সমস্যা: আমি যে সবচেয়ে সাধারণ বাগটি দেখেছি তা হল শূন্যের সাথে শুরু হওয়া DNI নম্বরগুলি। যখন কেউ DNI "1234567" লিখে, আপনার কোডকে এটিকে CUIT/CUIL নির্মাণের জন্য "01234567" হিসাবে বিবেচনা করতে হবে। অনেক বাস্তবায়ন প্রক্রিয়াকরণের জন্য পূর্ণসংখ্যায় রূপান্তর করে, যা শূন্যের আগের অংশগুলি মুছে দেয়। পাদন সহ স্ট্রিং অপারেশন ব্যবহার করুন।

টাইপ কোড বিভ্রম: সমস্ত দ্বি-সংখ্যক কোড বৈধ নয়। শুধুমাত্র 20, 23, 24, 27, 30, 33, 34 কাজ করে। আমি সিস্টেমগুলি দেখেছি যেগুলি যেকোনো দ্বি-সংখ্যক উপসর্গ গ্রহণ করে, "বৈধ দেখতে" নম্বরগুলি যেমন 21-12345678-X যা AFIP যাচাইকরণ ব্যর্থ হয়। সর্বদা যাচাইকরণ অঙ্ক গণনার আগে টাইপ কোডটি যাচাই করুন।

লিঙ্গ ধারণা: টাইপ কোড 20 (পুরুষ) এবং 27 (মহিলা) বিনিময়যোগ্য নয়। যদি আপনি জনসংখ্যাগত তথ্যের ভিত্তিতে CUILগুলি স্বয়ংক্রিয়ভাবে তৈরি করেন, তাহলে নিশ্চিত করুন যে আপনার টাইপ কোডটি RENAPER (আর্জেন্টিনার জাতীয় রেজিস্ট্রি) এ নিবন্ধিত প্রকৃত লিঙ্গের সাথে মেলে। অসঙ্গতিগুলি সরকারি পরিষেবাগুলি ব্যবহার করার সময় বাধাপ্রাপ্ত হয়।

হাইফেন হ্যান্ডলিং: কিছু বাস্তবায়ন হাইফেন প্রয়োজন করে যেখানে অন্যগুলি তা প্রত্যাখ্যান করে। সর্বোত্তম অনুশীলন: ইনপুট ক্ষেত্রগুলিতে উভয় ফর্ম্যাট গ্রহণ করুন (হাইফেন সহ বা ছাড়া), যাচাইকরণের আগে হাইফেন মুছে ফেলুন, ডাটাবেসে হাইফেন ছাড়া সংস্করণ সংরক্ষণ করুন, এবং শুধুমাত্র প্রদর্শনের উদ্দেশ্যে হাইফেন যোগ করুন।

যাচাইকরণ বাদ পড়া: অ্যালগরিদম যাচাইকরণ ফর্ম্যাট ত্রুটিগুলি ধরে, তবে এটি CUIT/CUIL নিবন্ধিত কিনা তা নিশ্চিত করে না। উৎপাদনে, প্রথমে ফর্ম্যাট যাচাই করুন (দ্রুত), তারপর AFIP-এর ডাটাবেসের বিপরীতে যাচাই করুন (ধীর কিন্তু সর্বাধিকার সম্পন্ন)। এই দ্বি-পর্যায়ের পদ্ধতিটি তাৎক্ষণিকভাবে টাইপিং ত্রুটিগুলি ধরে, যখন এটি নম্বরটি বাস্তব কিনা তা নিশ্চিত করে।

সীমান্ত ক্ষেত্রের পরীক্ষা: সর্বদা 0 এবং 9 সহ যাচাইকরণ অঙ্কগুলি পরীক্ষা করুন—এগুলি অ্যালগরিদমের বিশেষ ক্ষেত্রগুলি থেকে আসে। DNI-এর শূন্য দিয়ে শুরু হওয়া সংস্করণগুলিও পরীক্ষা করুন যাতে আপনার প্যাডিং যুক্তিটি সঠিকভাবে কাজ করে।

ব্যবহারের ক্ষেত্র এবং ব্যবহারিক প্রয়োগ

ডেভেলপমেন্ট এবং পরীক্ষা

সফ্টওয়্যার ডেভেলপমেন্ট: আর্জেন্টাইন বাজারের জন্য অ্যাপ্লিকেশন তৈরি করার সময়, আপনার বাস্তব ব্যবহারকারীর তথ্য ব্যবহার না করে যাচাইকরণ পাস করা টেস্ট ডেটা প্রয়োজন হবে। এখানেই এটি গুরুত্বপূর্ণ হয়ে ওঠে:

  • ই-কমার্স প্ল্যাটফর্ম: পেমেন্ট প্রসেসর এবং চালান সিস্টেম বৈধ CUIT/CUIL নম্বর প্রয়োজন করে। লোড টেস্টিংয়ের সময়, বাস্তবসম্মত ব্যবহারকারী নিবন্ধনের অনুকরণ করতে হাজার হাজার বৈধ নম্বর প্রয়োজন হতে পারে।
  • হিসাব রক্ষণ সফ্টওয়্যার: কর রিপোর্টিং মডিউল AFIP-এ জমা দেওয়ার আগে CUIT/CUIL ফরম্যাট যাচাই করে। এই যাচাইকরণ নিয়ম পরীক্ষা করতে, চেক ডিজিট অ্যালগরিদম পাস করা নম্বর প্রয়োজন।
  • HR ব্যবস্থাপনা সিস্টেম: বেতন প্রক্রিয়াকরণ এবং সামাজিক নিরাপত্তা অবদান বৈধ CUIL নম্বরের উপর নির্ভর করে। একটি সাধারণ পরিস্থিতি: আপনি কর্মচারী অন্তর্ভুক্তিকরণ প্রবাহ পরীক্ষা করছেন এবং যাচাই করতে হবে যে অবৈধ CUIL-গুলি উপযুক্ত ত্রুটি বার্তা ট্রিগার করে।
  • ব্যাংকিং অ্যাপ্লিকেশন: KYC (কাস্টমার পরিচিতি) প্রক্রিয়াগুলি অ্যাকাউন্ট খোলার সময় CUIT/CUIL যাচাই করে। আমার অভিজ্ঞতায়, টাইপ কোড অমিল মত এজ কেসগুলি ইন্টিগ্রেশন টেস্টিংয়ের সময় প্রকাশ পায়।

ডেটাবেজ পূরণ: টেস্ট ডেটাবেজ সিড করার সময়, অ্যালগরিদমিকভাবে বৈধ CUIT/CUIL নম্বর ব্যবহার করলে নিশ্চিত হয় যে আপনার ডেটাবেজ সীমাবদ্ধতা এবং ট্রিগার প্রত্যাশিত ভাবে কাজ করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন পরীক্ষা করা হয় ডেটা স্থানান্তর স্ক্রিপ্ট বা ETL প্রক্রিয়াগুলি যা পরিচয় নম্বরগুলি যাচাই করে।

ফর্ম যাচাইকরণ পরীক্ষা: সুখী পাথ এবং ত্রুটি অবস্থা উভয়ই পরীক্ষা করুন। সফল জমা নিশ্চিত করতে বৈধ নম্বর তৈরি করুন, তারপর যাচাইকরণ ডিজিট পরিবর্তন করে নিশ্চিত করুন যে আপনার ফ্রন্টেন্ড এবং ব্যাকেন্ড যাচাইকরণ ডেটাবেজে পৌঁছানোর আগে ত্রুটি ধরে ফেলে।

API পরীক্ষা: ইন্টিগ্রেশন পরীক্ষাগুলিতে অবশ্যই বৈধ CUIT/CUIL নম্বর ব্যবহার করতে হবে। এটি মিথ্যা নেতিবাচক এড়াতে সাহায্য করে যেখানে পরীক্ষাগুলি বাস্তব বাগগুলির পরিবর্তে অবৈধ পরীক্ষা ডেটার কারণে ব্যর্থ হয়।

QA অটোমেশন: পরামিত পরীক্ষাগুলি গতিশীল CUIT/CUIL উত্পাদন থেকে উপকৃত হয়। পরীক্ষা রানের মধ্যে দ্বন্দ্ব হতে পারে এমন হার্ডকোডেড টেস্ট মানগুলির পরিবর্তে, প্রত্যেক পরীক্ষা সম্পাদনের জন্য নতুন বৈধ নম্বর তৈরি করুন।

শিক্ষামূলক উদ্দেশ্য

[বাকি অনুবাদ অব্যাহত থাকবে...]

CUIT/CUIL সিস্টেমের ইতিহাস

আর্জেন্টিনায় CUIT/CUIL পরিচয় সিস্টেমটি তার শুরু থেকে যথেষ্ট বিকশিত হয়েছে:

উৎপত্তি এবং বাস্তবায়ন

CUIT (ক্লাভে ইউনিকা দে ইডেন্টিফিকাসাও ট্রিবুটারিয়া) প্রথমে ১৯৭০ এর দশকে আর্জেন্টিনায় কর সংগ্রহ সিস্টেমকে আধুনিক করার প্রচেষ্টার অংশ হিসাবে চালু করা হয়। ফেডারাল অ্যাডমিনিস্ট্রেশন অব পাবলিক রেভেন্যু (AFIP) এই অনন্য পরিচয়কারী সনাক্তকরণ সিস্টেম বাস্তবায়ন করেছিল যাতে করদাতাদের আরও দক্ষতার সাথে ট্র্যাক করা যায় এবং কর পালিয়ে যাওয়া কমানো যায়।

CUIL (ক্লাভে ইউনিকা দে ইডেন্টিফিকাসাও লাবোরাল) পরে সমাজ সুরক্ষা সিস্টেমে শ্রমিকদের সনাক্ত করার জন্য চালু করা হয়, যা কর পরিচয় এবং শ্রম পরিচয়ের মধ্যে পার্থক্য তৈরি করে, তবে একটি সামঞ্জস্যপূর্ণ ফরম্যাট বজায় রাখে।

বিবর্তন এবং ডিজিটালাইজেশন

১৯৯০ এর দশকে, যখন আর্জেন্টিনা উল্লেখযোগ্য অর্থনৈতিক সংস্কারের মধ্য দিয়ে যাচ্ছিল, CUIT/CUIL সিস্টেম অর্থনৈতিক কার্যকলাপ ট্র্যাক করার জন্য আরও গুরুত্বপূর্ণ হয়ে ওঠে। সিস্টেমটিকে আরও ডিজিটালাইজ করা হয় এবং অনলাইন যাচাইকরণ সিস্টেম বাস্তবায়ন করা হয়।

প্রারম্ভিক ২০০০ এর দশকে CUIT/CUIL সিস্টেমটিকে বিভিন্ন ডিজিটাল সরকারি সেবার সাথে সংযুক্ত করা হয়, যা আর্জেন্টিনার ই-সরকার উদ্যোগের একটি অপরিহার্য উপাদান হয়ে ওঠে। এই সময়কালে যাচাইকরণ অ্যালগরিদম এবং ফরম্যাটের মানকীকরণও করা হয় যা আজও ব্যবহৃত হচ্ছে।

সাম্প্রতিক উন্নয়ন

সাম্প্রতিক বছরগুলিতে, AFIP CUIT/CUIL নম্বরগুলির নিরাপত্তা এবং যাচাইকরণ প্রক্রিয়াগুলিকে আরও উন্নত করেছে, আরও জটিল যাচাইকরণ সিস্টেম বাস্তবায়ন করে এবং অন্যান্য সরকারি ডেটাবেসের সাথে সংযুক্ত করে। সিস্টেমটি এখন আর্জেন্টিনার কর পালিয়ে যাওয়া রোধ এবং অর্থনীতিকে আনুষ্ঠানিক করার প্রচেষ্টায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।

আজ, CUIT/CUIL কেবল কর এবং রोজগারের উদ্দেশ্যে নয়, বরং ব্যাংকিং, সম্পত্তি লেনদেন, ইউটিলিটি সেবা এবং অনলাইন ক্রয়সহ বিস্তৃত কার্যকলাপের জন্য ব্যবহৃত হয়, যা আর্জেন্টিনায় ব্যক্তি এবং ব্যবসায়ের জন্য একটি অপরিহার্য পরিচয়কারী হয়ে উঠেছে।

বাস্তবায়ন বিবেচনা

নিজস্ব সিস্টেমে CUIT/CUIL যাচাইকরণ বাস্তবায়ন করার সময় এই কৌশলগত দিকগুলি বিবেচনা করুন:

অ্যালগরিদম স্থিতিশীলতা: বর্তমান CUIT/CUIL যাচাই অ্যালগরিদমটি ১৯৯০-এর দশকে এর মানকীকরণ থেকে অপরিবর্তিত রয়েছে। AFIP-এর কাঠামো নথিতে উল্লেখ করা হয়েছে যে, মডুলো-১১ ওজন দেওয়া চেক ডিজিট পদ্ধতিটি Resolução General 2854/2010 এবং পরবর্তী নিয়মাবলীতে কোডিফাইড করা হয়েছে। এই স্থিতিশীলতা মানে বাস্তবায়নগুলিকে খুব কমই আপডেট করতে হয়, তবে আপনার AFIP-এর যেকোনো নিয়মতান্ত্রিক পরিবর্তন নজরে রাখা উচিত।

কর্মক্ষমতা অপ্টিমাইজেশন: যাচাই অ্যালগরিদমটি গাণিতিকভাবে সস্তা—মাত্র ১০টি গুণ, একটি যোগ, এবং একটি মডুলো অপারেশন। প্রতি সেকেন্ডে হাজার হাজার যাচাইকরণ প্রক্রিয়াকারী হাই-থ্রুপুট সিস্টেমগুলিতে, বাধাস্থান সাধারণত AFIP-এর ডাটাবেসের সাথে যাচাই করার নেটওয়ার্ক লেটেন্সি, অ্যালগরিদমটি নয়। AFIP যাচাই ফলাফলগুলিকে উপযুক্ত TTL-এর সাথে ক্যাশ করার কথা বিবেচনা করুন (সাধারণত ২৪ ঘণ্টা) তাজাগী এবং কর্মক্ষমতার মধ্যে ভারসাম্য রক্ষা করতে।

অক্ষর এনকোডিং: বাহ্যিক উৎস থেকে CUIT/CUIL ডেটা প্রক্রিয়া করার সময় (PDF, স্ক্যান করা নথি, ওয়েব স্ক্রাপিং), অক্ষর এনকোডিং সমস্যাগুলিতে সতর্ক থাকুন। হাইফেনটি হতে পারে এম ড্যাশ (U+2014), এন ড্যাশ (U+2013), বা মাইনাস চিহ্ন (U+2212) বা মানক হাইফেন-মাইনাস (U+002D) এর পরিবর্তে। যাচাইকরণের আগে এগুলিকে সাধারণ করুন যাতে ভুল নেতিবাচক পরিহার করা যায়।

আন্তর্জাতিকীকরণ: যদি আপনার অ্যাপ্লিকেশনটি একাধিক লাতিন আমেরিকান বাজারে পরিবেশন করে, তাহলে লক্ষ্য করুন যে আর্জেন্টিনার CUIT/CUIL মডুলো-১১ নির্দিষ্ট ওজন ব্যবহার করে, চিলির RUT মডুলো-১১ ভিন্ন ওজন ব্যবহার করে, এবং ব্রাজিলের CPF/CNPJ আরেকটি পদ্ধতিতে মডুলো-১১ ব্যবহার করে। অ্যালগরিদমগুলি একই রকম বলে ধরে নিবেন না—প্রত্যেক দেশের সিস্টেমের আলাদা নিয়ম রয়েছে। চেক ডিজিট অ্যালগরিদমের আরও ব্যাপক বোঝার জন্য, ISO/IEC 7064 মান দেখুন যা বিভিন্ন মডুলো-ভিত্তিক যাচাই পদ্ধতিগুলিকে আনুষ্ঠানিক করে।

ডাটাবেস সংরক্ষণ: CUIT/CUIL নম্বরগুলি হাইফেন ছাড়া ফিক্সড-দৈর্ঘ্য CHAR(11) হিসাবে বা BIGINT হিসাবে সংরক্ষণ করুন যদি আপনার ডাটাবেস সঠিকতা হ্রাস ছাড়া ১১-ডিজিটের পূর্ণসংখ্যা সমর্থন করে। ক্ষতিগ্রস্থ ডেটা থেকে সুরক্ষার জন্য ডাটাবেস স্তরে যাচাই অঙ্কটির জন্য একটি চেক বাধা যোগ করুন। দ্রুত অনুসন্ধানের জন্য এই ক্ষেত্রে সূচক তৈরি করুন যখন ব্যবহারকারীরা 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

জাভা

import java.util.Arrays; import java.util.List; import java.util.Random; public class CuitCuilUtils { private static final List<Integer> VALID_TYPE_CODES = Arrays.asList(20, 23, 24, 27, 30, 33, 34); private static final int[] WEIGHTS = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2}; public static int calculateVerificationDigit(int typeCode, int dni) { // স্ট্রিংয়ে রূপান্তর করুন এবং DNI টি লিডিং শূন্য সহ 8 সংখ্যার নিশ্চিত করুন String typeCodeStr = String.valueOf(typeCode); String dniStr = String.format("%08d", dni); // টাইপ কোড এবং DNI সংযুক্ত করুন String digits = typeCodeStr + dniStr; // গুণফলের যোগ গণনা করুন int sumProducts = 0; for (int i = 0; i < 10; i++) { sumProducts += Character.getNumericValue(digits.charAt(i)) * WEIGHTS[i]; } // যাচাইকরণ সংখ্যা গণনা করুন int verificationDigit = 11 - (sumProducts % 11); // বিশেষ ক্ষেত্রসমূহ if (verificationDigit == 11) { verificationDigit = 0; } else if (verificationDigit == 10) { verificationDigit = 9; } return verificationDigit; } public static String generateCuitCuil(int typeCode, Integer dni) { if (!VALID_TYPE_CODES.contains(typeCode)) { throw new IllegalArgumentException("অবৈধ টাইপ কোড। নিম্নলিখিত মধ্যে হতে হবে: " + VALID_TYPE_CODES); } // যদি প্রদান করা না হয় তাহলে এলোমেলো DNI তৈরি করুন if (dni == null) { Random random = new Random(); dni = 10000000 + random.nextInt(90000000); } // যাচাইকরণ সংখ্যা গণনা করুন int verificationDigit = calculateVerificationDigit(typeCode, dni); // CUIT/CUIL ফরম্যাট করুন return String.format("%d-%08d-%d", typeCode, dni, verificationDigit); } public static ValidationResult validateCuitCuil(String cuitCuil) { // হাইফেন থাকলে মুছে ফেলুন String cuitCuilClean = cuitCuil.replace("-", ""); // মৌলিক ফরম্যাট পরীক্ষা করুন if (!cuitCuilClean.matches("\\d{11}")) { return new ValidationResult(false, "অবৈধ ফরম্যাট"); } // অংশসমূহ বের করুন int typeCode = Integer.parseInt(cuitCuilClean.substring(0, 2)); int dni = Integer.parseInt(cuitCuilClean.substring(2, 10)); int verificationDigit = Integer.parseInt(cuitCuilClean.substring(10, 11)); // টাইপ কোড যাচাই করুন if (!VALID_TYPE_CODES.contains(typeCode)) { return new ValidationResult(false, "অবৈধ টাইপ কোড"); } // যাচাইকরণ সংখ্যা গণনা এবং তুলনা করুন int calculatedDigit = calculateVerificationDigit(typeCode, dni); if (calculatedDigit != verificationDigit) { return new ValidationResult(false, "অবৈধ যাচাইকরণ সংখ্যা"); } return new ValidationResult(true, null); } public static class ValidationResult { private final boolean isValid; private final String errorMessage; public ValidationResult(boolean isValid, String errorMessage) { this.isValid = isValid; this.errorMessage = errorMessage; } public boolean isValid() { return isValid; } public String getErrorMessage() { return errorMessage; } } public static void main(String[] args) { // ব্যবহারের উদাহরণ System.out.println(generateCuitCuil(20, 12345678)); // নির্দিষ্ট DNI-এর জন্য তৈরি করুন System.out.println(generateCuitCuil(27, null)); // এলোমেলো DNI-এর সাথে তৈরি করুন System.out.println(validateCuitCuil("20-12345678-9").isValid()); // CUIT/CUIL যাচাই করুন } } ## প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী ### 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. AFIP (সরকারি আয় প্রশাসন)"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. ANSES (জাতীয় সামাজিক নিরাপত্তা প্রশাসন)"আমার CUIL পান।" [https://www.anses.gob.ar/](https://www.anses.gob.ar/) 4. আর্জেন্টিনা প্রজাতন্ত্রের সরকারি বুলেটিন। "AFIP সাধারণ সংকল্প 2854/2010: পদ্ধতি। করের একক সনাক্তকরণ কী (C.U.I.T.)।" 5. আর্জেন্টিনা প্রজাতন্ত্রের কর আইন। "অবদানকারীর সনাক্তকরণ এবং নিবন্ধন।" --- আপনি যদি চালান ব্যবস্থা তৈরি করছেন, কর্মচারী অনবোর্ডিং প্রক্রিয়া পরীক্ষা করছেন, অথবা যাচাইকরণ অ্যালগরিদম সম্পর্কে শিখছেন, এই টুল CUIT/CUIL তৈরি এবং যাচাইয়ের জন্য আপনার প্রয়োজনীয় সহায়তা করবে। পরীক্ষামূলক তথ্য তৈরি করুন যা অ্যালগরিদম যাচাইয়ে পাস হয়, ডাটাবেসে যাওয়ার আগে সংখ্যাগুলি যাচাই করুন, অথবা চেক ডিজিট অ্যালগরিদম কীভাবে কাজ করে তা অনুসন্ধান করুন।