เครื่องมือสร้างและตรวจสอบ CUIT/CUIL | เครื่องมือรหัสประจำตัวผู้เสียภาษีของอาร์เจนตินา
สร้างหมายเลข CUIT/CUIL ทดสอบที่ถูกต้องหรือตรวจสอบหมายเลขที่มีอยู่ เครื่องมือออนไลน์ฟรีสำหรับนักพัฒนาที่ทดสอบระบบรหัสประจำตัวผู้เสียภาษีและเงินเดือนด้วยการตรวจสอบที่สอดคล้องกับ AFIP
เครื่องสร้าง CUIT/CUIL
ป้อนหมายเลข DNI 8 หลัก หรือใช้เครื่องสร้างแบบสุ่ม
กำลังใช้ 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 ดังนี้:
-
รหัสประเภท (2 หลักแรก): ระบุประเภทหน่วยงาน
- 20, 23, 24: บุคคลชาย (CUIL)
- 27: บุคคลหญิง (CUIL)
- 30, 33, 34: บริษัทและองค์กร (CUIT)
-
หมายเลข DNI (8 หลักตรงกลาง): สำหรับบุคคล นี่คือหมายเลขเอกสารประจำตัวประชาชน (DNI) ข้อควรระวัง: หากหมายเลข DNI มีน้อยกว่า 8 หลัก ต้องเติมเลข 0 ข้างหน้า ตัวอย่างเช่น DNI 1234567 จะกลายเป็น 01234567 ใน CUIT/CUIL บริษัทจะได้รับหมายเลขที่กำหนดเฉพาะแทน
-
หลักตรวจสอบ (หลักสุดท้าย): หลักนี้ใช้ตรวจสอบความถูกต้องของหมายเลขทั้งหมดโดยใช้อัลกอริทึมถ่วงน้ำหนัก หากหลักนี้ไม่ตรงกับการคำนวณ CUIT/CUIL ทั้งหมดจะถือว่าไม่ถูกต้อง ซึ่งมักทำให้นักพัฒนาสับสนเมื่อสร้างข้อมูลทดสอบด้วยตนเอง
การคำนวณหลักตรวจสอบ
หลักตรวจสอบใช้อัลกอริทึมถ่วงน้ำหนัก modulo-11 ดังนี้:
- นำ 10 หลักแรกของ CUIT/CUIL (รหัสประเภท + 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 (ไม่บังคับ):
- ป้อนหมายเลข DNI 8 หลักในช่องที่กำหนด
- หากปล่อยว่าง เครื่องมือจะใช้ DNI ที่สุ่มสร้างขึ้น
- หากป้อนน้อยกว่า 8 หลัก ระบบจะเติมเลขศูนย์ข้างหน้า
-
สร้าง DNI แบบสุ่ม (ไม่บังคับ):
- คลิกปุ่ม "สุ่ม" เพื่อสร้างหมายเลข DNI 8 หลักแบบสุ่ม
-
ดูผลลัพธ์ CUIT/CUIL ที่สร้าง:
- เครื่องมือจะแสดง CUIT/CUIL ที่ถูกต้องโดยอัตโนมัติตามข้อมูลที่คุณป้อน
- รูปแบบจะเป็น XX-XXXXXXXX-X พร้อมหลักตรวจสอบที่ถูกต้อง
-
คัดลอกผลลัพธ์:
- คลิกไอคอนคัดลอกเพื่อคัดลอก CUIT/CUIL ที่สร้างไปยังคลิปบอร์ด
- ข้อความยืนยันจะปรากฏเมื่อคัดลอกสำเร็จ
การใช้งานเครื่องมือตรวจสอบ
-
เลือกแท็บ "เครื่องมือตรวจสอบ" ที่ด้านบนของอินเทอร์เฟซเครื่องมือ
-
ป้อน CUIT/CUIL เพื่อตรวจสอบ:
- ป้อน CUIT/CUIL ในรูปแบบ XX-XXXXXXXX-X
- เครื่องมือจะจัดรูปแบบอินพุตของคุณด้วยเครื่องหมายยัติภังค์โดยอัตโนมัติขณะพิมพ์
- คุณยังสามารถป้อนหมายเลขโดยไม่มียัติภังค์ (XXXXXXXXXXX)
-
คลิกปุ่ม "ตรวจสอบ":
- เครื่องมือจะตรวจสอบรูปแบบ รหัสประเภท และหลักตรวจสอบ
-
ดูผลการตรวจสอบ:
- สำหรับหมายเลข CUIT/CUIL ที่ถูกต้อง ข้อความสำเร็จสีเขียวจะปรากฏ
- สำหรับหมายเลขที่ไม่ถูกต้อง ข้อความแสดงข้อผิดพลาดสีแดงจะอธิบายปัญหา:
- รูปแบบไม่ถูกต้อง (ต้องเป็น XX-XXXXXXXX-X)
- รหัสประเภทไม่ถูกต้อง (ต้องเป็นหนึ่งใน: 20, 23, 24, 27, 30, 33, 34)
- หลักตรวจสอบไม่ถูกต้อง
-
ข้อมูลเพิ่มเติม:
- สำหรับหมายเลขที่ถูกต้อง เครื่องมือจะแสดงรายละเอียดขององค์ประกอบ:
- รหัสประเภทและความหมาย
- หมายเลข 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 ในขณะที่ธุรกิจต้องดำเนินการจดทะเบียนบริษัท เครื่องมือนี้มีไว้สำหรับการพัฒนา การทดสอบ และการศึกษาเท่านั้น โดยต้องการข้อมูลที่ดูถูกต้องที่จะไม่ขัดแย้งกับหมายเลขการระบุตัวตนจริง
[การแปลต่อเนื่อง...]
แหล่งอ้างอิง
-
AFIP (สำนักงานบริหารรายได้สาธารณะ). "CUIT/CUIL/CDI" เว็บไซต์อย่างเป็นทางการ https://www.afip.gob.ar/
-
กระทรวงแรงงาน การจ้างงาน และความมั่นคงทางสังคม. "CUIL - รหัสประจำตัวแรงงานเฉพาะบุคคล" https://www.argentina.gob.ar/trabajo
-
ANSES (สำนักบริหารความมั่นคงทางสังคมแห่งชาติ). "รับ CUIL ของฉัน" https://www.anses.gob.ar/
-
ราชกิจจานุเบกษาแห่งสาธารณรัฐอาร์เจนตินา. "ระเบียบทั่วไป AFIP 2854/2010: ขั้นตอน รหัสประจำตัวผู้เสียภาษี (C.U.I.T.)"
-
ประมวลกฎหมายภาษีของสาธารณรัฐอาร์เจนตินา. "การระบุตัวตนและการลงทะเบียนผู้เสียภาษี"
ไม่ว่าคุณจะสร้างระบบออกใบแจ้งหนี้ ทดสอบขั้นตอนการรับสมัครพนักงาน หรือเรียนรู้เกี่ยวกับอัลกอริทึมการตรวจสอบ เครื่องมือนี้มีการสร้างและตรวจสอบ CUIT/CUIL ที่คุณต้องการ สร้างข้อมูลทดสอบที่ผ่านการตรวจสอบทางอัลกอริทึม ตรวจสอบหมายเลขก่อนที่จะเข้าสู่ฐานข้อมูลของคุณ หรือสำรวจวิธีการทำงานของอัลกอริทึมหลักหลักในทางปฏิบัติ