ข้ามไปยังเนื้อหา

เครื่องมือสร้างและตรวจสอบ CUIT/CUIL | เครื่องมือรหัสประจำตัวผู้เสียภาษีของอาร์เจนตินา

สร้างหมายเลข CUIT/CUIL ทดสอบที่ถูกต้องหรือตรวจสอบหมายเลขที่มีอยู่ เครื่องมือออนไลน์ฟรีสำหรับนักพัฒนาที่ทดสอบระบบรหัสประจำตัวผู้เสียภาษีและเงินเดือนด้วยการตรวจสอบที่สอดคล้องกับ AFIP

เครื่องสร้าง CUIT/CUIL

ป้อนหมายเลข DNI 8 หลัก หรือใช้เครื่องสร้างแบบสุ่ม

CUIT/CUIL ที่สร้าง
20-34048273-6

กำลังใช้ DNI ที่สุ่มสร้าง

เครื่องคำนวณโหลด...
📚

เอกสารประกอบการใช้งาน

เครื่องมือสร้างและตรวจสอบ CUIT/CUIL ของอาร์เจนตินา

บทนำ

ในระบบภาษีและแรงงานของอาร์เจนตินา คุณจะพบกับตัวระบุสำคัญสองประการอยู่เสมอ: CUIT (Clave Única de Identificación Tributaria) และ CUIL (Clave Única de Identificación Laboral) คิดถึง CUIT เป็นรหัสประจำตัวทางภาษีสำหรับธุรกิจและบุคคลที่เสียภาษี ในขณะที่ CUIL ระบุตัวตนของคนงานในระบบประกันสังคม ทั้งสองใช้รูปแบบ 11 หลักและอัลกอริทึมการตรวจสอบเดียวกัน ซึ่งทำให้การทดสอบแอปพลิเคชันที่จัดการกับหมายเลขเหล่านี้มีความสำคัญเป็นพิเศษ

เมื่อพัฒนาซอฟต์แวร์สำหรับตลาดอาร์เจนตินา คุณจำเป็นต้องมีข้อมูลทดสอบที่ถูกต้อง นี่คือเหตุผลที่เครื่องมือนี้เข้ามามีบทบาท คุณสามารถสร้างหมายเลข CUIT/CUIL ที่ถูกต้องทางคณิตศาสตร์สำหรับการทดสอบโดยไม่ใช้ข้อมูลส่วนบุคคลที่แท้จริง หรือตรวจสอบหมายเลขที่มีอยู่เพื่อให้แน่ใจว่าเป็นไปตามอัลกอริทึมอย่างเป็นทางการของ AFIP สิ่งที่มีประโยชน์เป็นพิเศษคือเครื่องมือนี้ครอบคลุมทั้งด้านการสร้าง (สร้างหมายเลขที่ถูกต้องตามความต้องการ) และด้านการตรวจสอบ (ตรวจจับข้อผิดพลาดของรูปแบบ รหัสประเภทที่ไม่ถูกต้อง และหลักการตรวจสอบที่ไม่ถูกต้องก่อนที่จะก่อให้เกิดปัญหาในการผลิต)

โครงสร้างและการคำนวณ CUIT/CUIL

ทำความเข้าใจรูปแบบ

หมายเลข CUIT/CUIL ที่ถูกต้องประกอบด้วย 11 หลัก โดยปกติจะแสดงในรูปแบบ XX-XXXXXXXX-X ดังนี้:

  1. รหัสประเภท (2 หลักแรก): ระบุประเภทหน่วยงาน

    • 20, 23, 24: บุคคลชาย (CUIL)
    • 27: บุคคลหญิง (CUIL)
    • 30, 33, 34: บริษัทและองค์กร (CUIT)
  2. หมายเลข DNI (8 หลักตรงกลาง): สำหรับบุคคล นี่คือหมายเลขเอกสารประจำตัวประชาชน (DNI) ข้อควรระวัง: หากหมายเลข DNI มีน้อยกว่า 8 หลัก ต้องเติมเลข 0 ข้างหน้า ตัวอย่างเช่น DNI 1234567 จะกลายเป็น 01234567 ใน CUIT/CUIL บริษัทจะได้รับหมายเลขที่กำหนดเฉพาะแทน

  3. หลักตรวจสอบ (หลักสุดท้าย): หลักนี้ใช้ตรวจสอบความถูกต้องของหมายเลขทั้งหมดโดยใช้อัลกอริทึมถ่วงน้ำหนัก หากหลักนี้ไม่ตรงกับการคำนวณ CUIT/CUIL ทั้งหมดจะถือว่าไม่ถูกต้อง ซึ่งมักทำให้นักพัฒนาสับสนเมื่อสร้างข้อมูลทดสอบด้วยตนเอง

การคำนวณหลักตรวจสอบ

หลักตรวจสอบใช้อัลกอริทึมถ่วงน้ำหนัก modulo-11 ดังนี้:

  1. นำ 10 หลักแรกของ CUIT/CUIL (รหัสประเภท + DNI)
  2. คูณแต่ละหลักด้วยน้ำหนักที่สอดคล้อง: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
  3. รวมผลคูณทั้งหมด
  4. คำนวณ: 11 ลบ (ผลรวมโมดูโล 11)
  5. จัดการกรณีพิเศษ: หากผลลัพธ์เป็น 11 ให้ใช้ 0 หากเป็น 10 ให้ใช้ 9

สิ่งที่ทำให้คนสับสนมากที่สุดคือกรณีพิเศษในขั้นตอนที่ 5 เมื่อทดสอบ บางครั้งคุณจะได้ผลลัพธ์ 10 หรือ 11 และการลืมแมปเป็น 9 และ 0 ตามลำดับจะทำให้การตรวจสอบล้มเหลวซึ่งยากต่อการแก้ไขหากคุณไม่ทราบกฎนี้

ในทางคณิตศาสตร์ สามารถแสดงได้ดังนี้:

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

โดยที่:

  • VDVD คือหลักตรวจสอบ
  • did_i คือหลักที่ ii ของ 10 หลักแรก
  • 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 (ไม่บังคับ):

    • ป้อนหมายเลข DNI 8 หลักในช่องที่กำหนด
    • หากปล่อยว่าง เครื่องมือจะใช้ DNI ที่สุ่มสร้างขึ้น
    • หากป้อนน้อยกว่า 8 หลัก ระบบจะเติมเลขศูนย์ข้างหน้า
  4. สร้าง DNI แบบสุ่ม (ไม่บังคับ):

    • คลิกปุ่ม "สุ่ม" เพื่อสร้างหมายเลข DNI 8 หลักแบบสุ่ม
  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
      • หลักตรวจสอบ

ข้อผิดพลาดทั่วไปและแนวปฏิบัติที่ดี

เมื่อทำงานกับการตรวจสอบ CUIT/CUIL ในแอปพลิเคชันของคุณ ให้ระวังข้อผิดพลาดที่พบบ่อยเหล่านี้:

ปัญหาการเติมเลขศูนย์: บักที่พบบ่อยที่สุดเกี่ยวข้องกับหมายเลข DNI ที่มีเลขศูนย์นำหน้า เมื่อมีคนป้อน DNI "1234567" โค้ดของคุณจำเป็นต้องปฏิบัติต่อเสมือนเป็น "01234567" สำหรับการสร้าง CUIT/CUIL หลายการใช้งานแปลงเป็นจำนวนเต็มเพื่อประมวลผล ซึ่งจะลบเลขศูนย์นำหน้าออก ให้ใช้การดำเนินการกับสตริงพร้อมการเติมที่เหมาะสมแทน

ความสับสนของรหัสประเภท: ไม่ใช่ทุกหมายเลขสองหลักเป็นรหัสประเภทที่ถูกต้อง มีเพียง 20, 23, 24, 27, 30, 33, 34 เท่านั้นที่ใช้งานได้ ฉันเคยเห็นระบบที่ยอมรับคำนำหน้าสองหลักใดๆ ซึ่งนำไปสู่หมายเลขที่ "ดูเหมือนถูกต้อง" เช่น 21-12345678-X ที่ล้มเหลวในการตรวจสอบของ AFIP ตรวจสอบรหัสประเภทก่อนคำนวณหลักการตรวจสอบเสมอ

ข้อสันนิษฐานเกี่ยวกับเพศ: รหัสประเภท 20 (ชาย) และ 27 (หญิง) ไม่สามารถใช้แทนกันได้ หากคุณกำลังสร้าง CUILs โดยอัตโนมัติตามข้อมูลประชากร ตรวจสอบให้แน่ใจว่ารหัสประเภทตรงกับเพศที่จดทะเบียนจริงกับ RENAPER (ทะเบียนแห่งชาติของอาร์เจนตินา) ความไม่ตรงกันจะทำให้ถูกปฏิเสธเมื่อบุคคลพยายามใช้หมายเลขเหล่านี้กับบริการของรัฐบาล

การจัดการเครื่องหมายยัติภังค์: บางการใช้งานต้องการเครื่องหมายยัติภังค์ ในขณะที่บางอันปฏิเสธ แนวปฏิบัติที่ดี: ยอมรับทั้งสองรูปแบบในช่องป้อนข้อมูล (มีหรือไม่มีเครื่องหมายยัติภังค์) แยกเครื่องหมายยัติภังค์ออกก่อนการตรวจสอบ จัดเก็บเวอร์ชันที่ไม่มีเครื่องหมายยัติภังค์ในฐานข้อมูล และเพิ่มเครื่องหมายยัติภังค์เฉพาะเพื่อวัตถุประสงค์ในการแสดงผล

การตรวจสอบที่ขาดหายไป: อัลกอริทึมการตรวจสอบจับข้อผิดพลาดของรูปแบบ แต่ไม่ได้ยืนยันว่า CUIT/CUIL ได้รับการลงทะเบียน ในการใช้งานจริง ให้ตรวจสอบรูปแบบก่อน (เร็ว) แล้วจึงตรวจสอบกับฐานข้อมูลของ AFIP (ช้าแต่เชื่อถือได้) วิธีการสองขั้นตอนนี้จะจับข้อผิดพลาดการพิมพ์ได้ทันทีในขณะเดียวกันก็ยังสามารถตรวจสอบได้ว่าหมายเลขนั้นเป็นจริง

การทดสอบกรณีพิเศษ: ทดสอบเสมอกับหลักการตรวจสอบ 0 และ 9 - สิ่งเหล่านี้เป็นผลมาจากกรณีพิเศษในอัลกอริทึม นอกจากนี้ให้ทดสอบ DNIs ที่เริ่มต้นด้วยศูนย์เพื่อให้แน่ใจว่าตรรกะการเติมของคุณทำงานอย่างถูกต้อง

กรณีการใช้งานและการประยุกต์ใช้ในทางปฏิบัติ

การพัฒนาและทดสอบ

การพัฒนาซอฟต์แวร์: เมื่อสร้างแอปพลิเคชันสำหรับตลาดอาร์เจนตินา คุณจะต้องใช้ข้อมูลทดสอบที่ผ่านการตรวจสอบโดยไม่ใช้ข้อมูลผู้ใช้จริง นี่คือสถานการณ์ที่สำคัญ:

  • แพลตฟอร์มอีคอมเมิร์ซ: ผู้ประมวลผลการชำระเงินและระบบออกใบแจ้งหนี้ต้องการหมายเลข CUIT/CUIL ที่ถูกต้อง ระหว่างการทดสอบโหลด คุณอาจต้องใช้หมายเลขที่ถูกต้องหลายพันรายการเพื่อจำลองการลงทะเบียนผู้ใช้ที่เป็นจริง
  • ซอฟต์แวร์บัญชี: โมดูลการรายงานภาษีตรวจสอบรูปแบบ CUIT/CUIL ก่อนส่งให้ AFIP การทดสอบกฎการตรวจสอบเหล่านี้ต้องใช้หมายเลขที่ผ่านอัลกอริทึมตรวจสอบหลัก
  • ระบบจัดการทรัพยากรบุคคล: การประมวลผลเงินเดือนและการจ่ายเงินสมทบประกันสังคมขึ้นอยู่กับหมายเลข CUIL ที่ถูกต้อง สถานการณ์ทั่วไป: คุณกำลังทดสอบขั้นตอนการรับพนักงานใหม่และต้องตรวจสอบว่า CUIL ที่ไม่ถูกต้องจะเรียกข้อความแสดงข้อผิดพลาดที่เหมาะสม
  • แอปพลิเคชันธนาคาร: กระบวนการ KYC (รู้จักลูกค้าของคุณ) ตรวจสอบ CUIT/CUIL เป็นส่วนหนึ่งของการเปิดบัญชี จากประสบการณ์ของฉัน กรณีพิเศษเช่นรหัสประเภทที่ไม่ตรงกันมักจะปรากฏขึ้นระหว่างการทดสอบการรวม

การเติมข้อมูลฐานข้อมูล: เมื่อเติมฐานข้อมูลทดสอบ การใช้หมายเลข CUIT/CUIL ที่ถูกต้องตามหลักคณิตศาสตร์ช่วยให้มั่นใจว่าข้อจำกัดและทริกเกอร์ของฐานข้อมูลทำงานตามที่คาดหวัง สิ่งนี้มีความสำคัญโดยเฉพาะเมื่อทดสอบสคริปต์การย้ายข้อมูลหรือกระบวนการ ETL ที่ตรวจสอบหมายเลขประจำตัว

การทดสอบการตรวจสอบแบบฟอร์ม: ทดสอบทั้งเส้นทางปกติและเงื่อนไขข้อผิดพลาด สร้างหมายเลขที่ถูกต้องเพื่อยืนยันการส่งที่สำเร็จ จากนั้นแก้ไขหลักการตรวจสอบเพื่อให้มั่นใจว่าการตรวจสอบส่วนหน้าและส่วนหลังจะจับข้อผิดพลาดก่อนที่จะถึงฐานข้อมูลของคุณ

การทดสอบ API: การทดสอบการรวมควรใช้หมายเลข CUIT/CUIL ที่ถูกต้องในเพย์โหลดคำขอ นี่ป้องกันผลลบที่เป็นเท็จซึ่งเกิดจากข้อมูลทดสอบที่ไม่ถูกต้องแทนที่จะเป็นข้อบกพร่องจริงในตรรกะ API ของคุณ

การทดสอบอัตโนมัติ QA: การทดสอบแบบพารามิเตอร์ได้รับประโยชน์จากการสร้าง 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 ถูกใช้ไม่เพียงแต่เพื่อวัตถุประสงค์ทางภาษีและการจ้างงานเท่านั้น แต่ยังครอบคลุมกิจกรรมที่หลากหลาย รวมถึงการธนาคาร ธุรกรรมอสังหาริมทรัพย์ บริการสาธารณูปโภค และการซื้อสินค้าออนไลน์ ทำให้เป็นตัวระบุที่สำคัญสำหรับทั้งบุคคลและธุรกิจที่ดำเนินการในอาร์เจนตินา

ข้อพิจารณาในการนำไปใช้

เมื่อนำการตรวจสอบ CUIT/CUIL ไปใช้ในระบบของคุณ ให้พิจารณาแง่มุมทางเทคนิคเหล่านี้:

ความเสถียรของอัลกอริทึม: อัลกอริทึมการตรวจสอบ CUIT/CUIL ปัจจุบันยังคงไม่เปลี่ยนแปลงนับตั้งแต่มีการมาตรฐานในทศวรรษ 1990 ตามเอกสารทางเทคนิคของ AFIP การตรวจสอบหลักด้วยโมดูโล-11 แบบถ่วงน้ำหนักได้รับการบันทึกไว้ในระเบียบ Resolución General 2854/2010 และระเบียบที่ตามมา ความเสถียรนี้หมายความว่าการนำไปใช้มักไม่ต้องอัปเดต แต่คุณควรติดตามประกาศของ AFIP สำหรับการเปลี่ยนแปลงทางกฎระเบียบ

การเพิ่มประสิทธิภาพการทำงาน: อัลกอริทึมการตรวจสอบมีค่าใช้จ่ายทางการคำนวณต่ำ—เพียง 10 การคูณ หนึ่งการบวก และหนึ่งการดำเนินการโมดูโล สำหรับระบบที่มีปริมาณสูงซึ่งประมวลผลการตรวจสอบหลายพันครั้งต่อวินาที คอขวดมักเกิดจากความล่าช้าของเครือข่ายเมื่อตรวจสอบกับฐานข้อมูลของ AFIP มากกว่าตัวอัลกอริทึมเอง พิจารณาการแคชผลการตรวจสอบ AFIP ด้วย TTL ที่เหมาะสม (โดยทั่วไป 24 ชั่วโมง) เพื่อสมดุลระหว่างความทันสมัยกับประสิทธิภาพ

การเข้ารหัสอักขระ: เมื่อประมวลผลข้อมูล CUIT/CUIL จากแหล่งภายนอก (PDF สแกนเอกสาร การขูดเว็บ) ระวังปัญหาการเข้ารหัสอักขระ เครื่องหมายยัติภังค์อาจปรากฏเป็นเอ็มแดช (U+2014) เอ็นแดช (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

ตัวอย่างโค้ด

Python

1def calculate_verification_digit(type_code, dni):
2    # แปลงเป็นสตริงและตรวจสอบให้แน่ใจว่า DNI มี 8 หลักโดยเติม 0 ข้างหน้า
3    type_code_str = str(type_code)
4    dni_str = str(dni).zfill(8)
5    
6    # รวม type code และ 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

[ต่อไปจะเป็นการแปลสำหรับภาษาอื่นๆ ในรูปแบบเดียวกัน]

คำถามที่พบบ่อย

อะไรคือความแตกต่างระหว่าง CUIT และ CUIL?

นี่คือความแตกต่างในทางปฏิบัติ: CUIT (Clave Única de Identificación Tributaria) ระบุผู้เสียภาษี—ทั้งบุคคลและธุรกิจที่ยื่นภาษีกับ AFIP CUIL (Clave Única de Identificación Laboral) ระบุคนงานในระบบประกันสังคมสำหรับการจ้างงานและการเกษียณอายุ

ในทางปฏิบัติ หลายคนมีทั้ง 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 คิดเหมือนการสร้างหมายเลขบัตรเครดิตที่ถูกต้องโดยใช้อัลกอริทึม Luhn: ผ่านการตรวจสอบรูปแบบ แต่ไม่เชื่อมโยงกับบัญชีจริง

สำหรับการลงทะเบียน CUIT/CUIL อย่างเป็นทางการ บุคคลต้องไปที่ AFIP พร้อม DNI ในขณะที่ธุรกิจต้องดำเนินการจดทะเบียนบริษัท เครื่องมือนี้มีไว้สำหรับการพัฒนา การทดสอบ และการศึกษาเท่านั้น โดยต้องการข้อมูลที่ดูถูกต้องที่จะไม่ขัดแย้งกับหมายเลขการระบุตัวตนจริง

[การแปลต่อเนื่อง...]

แหล่งอ้างอิง

  1. AFIP (สำนักงานบริหารรายได้สาธารณะ). "CUIT/CUIL/CDI" เว็บไซต์อย่างเป็นทางการ https://www.afip.gob.ar/

  2. กระทรวงแรงงาน การจ้างงาน และความมั่นคงทางสังคม. "CUIL - รหัสประจำตัวแรงงานเฉพาะบุคคล" https://www.argentina.gob.ar/trabajo

  3. ANSES (สำนักบริหารความมั่นคงทางสังคมแห่งชาติ). "รับ CUIL ของฉัน" https://www.anses.gob.ar/

  4. ราชกิจจานุเบกษาแห่งสาธารณรัฐอาร์เจนตินา. "ระเบียบทั่วไป AFIP 2854/2010: ขั้นตอน รหัสประจำตัวผู้เสียภาษี (C.U.I.T.)"

  5. ประมวลกฎหมายภาษีของสาธารณรัฐอาร์เจนตินา. "การระบุตัวตนและการลงทะเบียนผู้เสียภาษี"


ไม่ว่าคุณจะสร้างระบบออกใบแจ้งหนี้ ทดสอบขั้นตอนการรับสมัครพนักงาน หรือเรียนรู้เกี่ยวกับอัลกอริทึมการตรวจสอบ เครื่องมือนี้มีการสร้างและตรวจสอบ CUIT/CUIL ที่คุณต้องการ สร้างข้อมูลทดสอบที่ผ่านการตรวจสอบทางอัลกอริทึม ตรวจสอบหมายเลขก่อนที่จะเข้าสู่ฐานข้อมูลของคุณ หรือสำรวจวิธีการทำงานของอัลกอริทึมหลักหลักในทางปฏิบัติ