Argentiinalainen CUIT/CUIL-generaattori ja -validoija
Generoi voimassa olevia argentiinalaisia CUIT/CUIL-numeroita testaukseen tai validoi olemassa olevia. Yksinkertainen työkalu kehittäjille, jotka työskentelevät argentiinalaisten verotunnisten ja työvoimatunnisten parissa.
CUIT/CUIL Generaattori
Syötä 8-numeroisen DNI tai käytä satunnaista generaattoria
Luotu CUIT/CUIL
Dokumentaatio
Argentiinalainen CUIT/CUIL-generaattori ja -validaattori
Johdanto
Argentiinalainen CUIT (Clave Única de Identificación Tributaria) ja CUIL (Clave Única de Identificación Laboral) ovat ainutlaatuisia tunnistenumeroita, joita käytetään Argentiinassa verotukseen ja työhön liittyvissä asioissa. Nämä 11-numeroiset koodit ovat välttämättömiä yksilöille ja yrityksille, jotta ne voivat toimia laillisesti Argentiinan talousjärjestelmässä. CUIT/CUIL-generaattori- ja -validaattorityökalumme tarjoaa yksinkertaisen ja tehokkaan tavan luoda voimassa olevia CUIT/CUIL-numeroita testaus tarkoituksiin ja validoida olemassa olevia numeroita varmistaakseen, että ne noudattavat virallista muotoa ja tarkistusalgoritmia.
Olitpa kehittäjä, joka testaa sovelluksia, jotka käsittelevät argentiinalaisia verotunnuksia, QA-asiantuntija, joka tarkistaa järjestelmän toimivuutta, tai tarvitset vain ymmärtääksesi, miten nämä tunnistenumerot toimivat, tämä työkalu tarjoaa yksinkertaisen ratkaisun ilman tarpeettomia monimutkaisuuksia. Työkalussa on kaksi päätoimintoa: generaattori, joka luo voimassa olevia CUIT/CUIL-numeroita satunnaisesti tai tiettyjen parametrien perusteella, ja validaattori, joka tarkistaa, noudattaako annettu CUIT/CUIL-numero oikeaa muotoa ja laskentaa sääntöjä.
CUIT/CUIL-rakenne ja laskenta
Muodon ymmärtäminen
Voimassa oleva CUIT/CUIL-numero koostuu 11 numerosta, jotka esitetään tyypillisesti muodossa XX-XXXXXXXX-X:
-
Tyyppikoodi (ensimmäiset 2 numeroa): Ilmaisee entiteetin tyypin
- 20, 23, 24: Miehet (CUIL)
- 27: Naiset (CUIL)
- 30, 33, 34: Yritykset ja organisaatiot (CUIT)
-
DNI-numero (keskimmäiset 8 numeroa): Yksilöiden osalta tämä on heidän kansallinen henkilötunnusnumeronsa (DNI), jota täydennetään tarvittaessa etunollilla, jotta se saavuttaa 8 numeroa. Yrityksille tämä on ainutkertainen määrätty numero.
-
Tarkistusnumero (viimeinen numero): Tarkistusnumero, joka lasketaan tietyn algoritmin avulla koko numeron validoimiseksi.
Tarkistusnumeron laskenta
Tarkistusnumero lasketaan seuraavalla algoritmilla:
- Ota CUIT/CUIL:n ensimmäiset 10 numeroa (tyyppikoodi + DNI)
- Kerro jokainen numero vastaavalla painolla seuraavasta sekvenssistä: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
- Laske kaikkien tulosten summa
- Laske 11 miinus summan jakojäännös 11:llä
- Jos tulos on 11, tarkistusnumero on 0
- Jos tulos on 10, tarkistusnumero on 9
- Muuten tulos on tarkistusnumero
Matemaattisesti tämä voidaan ilmaista seuraavasti:
Missä:
- on tarkistusnumero
- on :n numero ensimmäisistä 10 numerosta
- on vastaava paino sekvenssistä [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
- Erityistapaukset: jos , niin , jos , niin
Vaiheittainen opas
Generaattorin käyttäminen
-
Valitse "Generaattori" välilehti työkalun käyttöliittymän yläosasta.
-
Valitse Tyyppikoodi pudotusvalikosta:
- 20: Mies (CUIL)
- 23: Yritys (CUIT)
- 24: Tilapäinen yritys (CUIT)
- 27: Nainen (CUIL)
- 30: Osakeyhtiö (CUIT)
- 33: Yhdistys (CUIT)
- 34: Säätiö (CUIT)
-
Syötä DNI-numero (valinnainen):
- Syötä 8-numeroista DNI-numeroa varten annettuun kenttään
- Jos jätät sen tyhjäksi, työkalu käyttää satunnaisesti luotua DNI:tä
- Jos syötät alle 8 numeroa, järjestelmä täyttää etunollilla
-
Generoi satunnainen DNI (valinnainen):
- Napsauta "Satunnainen" painiketta luodaksesi satunnaisen 8-numeroisen DNI-numeron
-
Näe luotu CUIT/CUIL:
- Työkalu näyttää automaattisesti voimassa olevan CUIT/CUIL:n syötteidesi perusteella
- Muoto on XX-XXXXXXXX-X oikealla tarkistusnumerolla
-
Kopioi tulos:
- Napsauta kopio-ikonia kopioidaksesi luodun CUIT/CUIL:n leikepöydälle
- Vahvistusviesti ilmestyy, kun kopiointi onnistuu
Validaattorin käyttäminen
-
Valitse "Validaattori" välilehti työkalun käyttöliittymän yläosasta.
-
Syötä validoitava CUIT/CUIL:
- Syötä CUIT/CUIL muodossa XX-XXXXXXXX-X
- Työkalu muotoilee syötteesi automaattisesti viivoilla kirjoittaessasi
- Voit myös syöttää numeron ilman viivoja (XXXXXXXXXXX)
-
Napsauta "Validoi" painiketta:
- Työkalu tarkistaa muodon, tyyppikoodin ja tarkistusnumeron
-
Näe validointitulokset:
- Voimassa oleville CUIT/CUIL-numeroille ilmestyy vihreä onnistumisviesti
- Virheellisille numeroille ilmestyy punainen virheviesti, joka selittää ongelman:
- Virheellinen muoto (täytyy olla XX-XXXXXXXX-X)
- Virheellinen tyyppikoodi (täytyy olla yksi: 20, 23, 24, 27, 30, 33, 34)
- Virheellinen tarkistusnumero
-
Lisätietoja:
- Voimassa oleville numeroille työkalu näyttää komponenttien erittelyn:
- Tyyppikoodi ja sen merkitys
- DNI-numero
- Tarkistusnumero
- Voimassa oleville numeroille työkalu näyttää komponenttien erittelyn:
Käyttötapaukset
Kehitys ja testaus
-
Ohjelmistokehitys: Luo voimassa olevia CUIT/CUIL-numeroita testataksesi sovelluksia, jotka käsittelevät argentiinalaisia verotunnuksia, kuten:
- Verkkokauppapaikat
- Kirjanpito-ohjelmistot
- HR-hallintajärjestelmät
- Valtion palveluportaalit
- Pankkisovellukset
-
Tietokannan täyttäminen: Luo realistista testidataa järjestelmille, jotka tallentavat argentiinalaisia käyttäjätietoja varmistaen, että tietokannan rajoitukset ja validointisäännöt toimivat oikein.
-
Lomakevalidoinnin testaus: Testaa syöttövalidointia verkkolomakkeissa, jotka keräävät CUIT/CUIL-tietoja varmistaen, että oikeat virheviestit ilmestyvät virheellisille syötteille.
-
API-testaus: Luo voimassa olevia kuormia API-päätteille, jotka vaativat CUIT/CUIL-numeroita varmistaen, että integraatiotestisi käyttävät voimassa olevaa dataa.
-
QA-automaatiot: Sisällytä CUIT/CUIL-generaattori automatisoituihin testiskripteihin luodaksesi dynaamisia testitapauksia sen sijaan, että käyttäisit staattista testidataa.
Koulutustarkoitukset
-
Validointialgoritmien oppiminen: Ymmärrä, miten tarkistusnumeroalgoritmit toimivat käytännössä näkemällä CUIT/CUIL-validointiprosessi toiminnassa.
-
Tietojen validoinnin opettaminen: Käytä koulutusesimerkkinä, kun opetat lomakevalidointitekniikoita uusille kehittäjille.
-
Argentiinalaisten liiketoimintavaatimusten ymmärtäminen: Opi tuntemaan Argentiinassa käytettävä tunnistusjärjestelmä kansainvälisen liiketoiminnan kehittämiseksi.
Vaihtoehdot
Vaikka työkalumme tarjoaa yksinkertaisen tavan luoda ja validoida CUIT/CUIL-numeroita, voit harkita vaihtoehtoisia lähestymistapoja:
-
Virallinen hallituksen validointi: Tuotantoympäristöissä tarkista aina CUIT/CUIL-numerot virallisen AFIP (Administración Federal de Ingresos Públicos) tietokannan avulla, kun se on mahdollista.
-
Kirjastot ja paketit: Useilla ohjelmointikielillä on erityisesti argentiinalaisten verotunnusten validointiin suunniteltuja kirjastoja:
- JavaScript:
validar-cuit
npm-paketti - PHP:
afip-php
kirjasto - Python:
py-cuit
paketti
- JavaScript:
-
Manuaalinen laskenta: Koulutustarkoituksiin voit laskea tarkistusnumeron manuaalisesti aiemmin kuvattua algoritmia käyttäen.
-
Kattavat liiketoimintavalidointipalvelut: Yrityssovelluksille harkitse kattavien validointipalveluiden käyttöä, jotka eivät vain tarkista muotoa, vaan myös varmistavat, että CUIT/CUIL:iin liittyvä entiteetti on olemassa ja aktiivinen.
CUIT/CUIL-järjestelmän historia
CUIT/CUIL-tunnistusjärjestelmä Argentiinassa on kehittynyt merkittävästi sen käyttöönotosta lähtien:
Alkuperä ja käyttöönotto
CUIT (Clave Única de Identificación Tributaria) otettiin ensimmäisen kerran käyttöön Argentiinassa 1970-luvulla osana pyrkimyksiä modernisoida verokokoelmajärjestelmää. Liittovaltion verohallinto (AFIP) otti tämän ainutlaatuisen tunnisteen käyttöön verovelvollisten tehokkaampaa seurantaa ja veronkierron vähentämistä varten.
CUIL (Clave Única de Identificación Laboral) otettiin myöhemmin käyttöön erityisesti työntekijöiden tunnistamiseksi sosiaaliturvajärjestelmässä, luoden eron verotunnistuksen ja työvoimatunnistuksen välillä säilyttäen samalla yhdenmukaisen muodon.
Kehitys ja digitalisointi
1990-luvulla, kun Argentiina koki merkittäviä talousuudistuksia, CUIT/CUIL-järjestelmästä tuli yhä tärkeämpi taloudellisen toiminnan seuraamisessa. Järjestelmä digitalisoitiin edelleen, ja verkkotarkistusjärjestelmiä otettiin käyttöön.
2000-luvun alussa CUIT/CUIL-järjestelmä integroitiin useisiin digitaalisiin hallintopalveluihin, mikä teki siitä olennaisen osan Argentiinan e-hallintoinitiatiiveja. Tänä aikana myös tarkistusalgoritmin ja muodon standardointi, joka on edelleen käytössä tänään, toteutettiin.
Viimeisimmät kehitykset
Viime vuosina AFIP on parantanut CUIT/CUIL-numeroiden turvallisuus- ja validointiprosesseja, toteuttaen kehittyneempiä validointijärjestelmiä ja integroimalla ne muihin hallituksen tietokantoihin. Järjestelmä näyttelee nyt keskeistä roolia Argentiinan pyrkimyksissä torjua veronkiertoa ja virallistaa taloutta.
Nykyään CUIT/CUIL:ia käytetään paitsi verotukseen ja työhön liittyvissä asioissa, myös laajalla valikoimalla toimintoja, mukaan lukien pankkitoiminta, kiinteistökaupat, palveluiden käyttö ja verkkohankinnat, mikä tekee siitä olennaisen tunnisteen sekä yksilöille että yrityksille, jotka toimivat Argentiinassa.
Koodiesimerkit
Python
1def calculate_verification_digit(type_code, dni):
2 # Muuta merkkijonoksi ja varmista, että DNI on 8 numeroa etunollilla
3 type_code_str = str(type_code)
4 dni_str = str(dni).zfill(8)
5
6 # Yhdistä tyyppikoodi ja DNI
7 digits = type_code_str + dni_str
8
9 # Painot jokaiselle sijainnille
10 weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
11
12 # Laske tuotteiden summa
13 sum_products = sum(int(digits[i]) * weights[i] for i in range(10))
14
15 # Laske tarkistusnumero
16 verification_digit = 11 - (sum_products % 11)
17
18 # Erityistapaukset
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 # Voimassa olevat tyyppikoodit
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"Virheellinen tyyppikoodi. Sen on oltava yksi: {valid_type_codes}")
34
35 # Generoi satunnainen DNI, jos ei ole annettu
36 if dni is None:
37 dni = random.randint(10000000, 99999999)
38
39 # Laske tarkistusnumero
40 verification_digit = calculate_verification_digit(type_code, dni)
41
42 # Muotoile CUIT/CUIL
43 return f"{type_code}-{str(dni).zfill(8)}-{verification_digit}"
44
45def validate_cuit_cuil(cuit_cuil):
46 # Poista viivat, jos ne ovat läsnä
47 cuit_cuil_clean = cuit_cuil.replace("-", "")
48
49 # Tarkista perusmuoto
50 if not cuit_cuil_clean.isdigit() or len(cuit_cuil_clean) != 11:
51 return False, "Virheellinen muoto"
52
53 # Erota osat
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 # Vahvista tyyppikoodi
59 valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
60 if type_code not in valid_type_codes:
61 return False, "Virheellinen tyyppikoodi"
62
63 # Laske ja vertaa tarkistusnumeroa
64 calculated_digit = calculate_verification_digit(type_code, dni)
65 if calculated_digit != verification_digit:
66 return False, "Virheellinen tarkistusnumero"
67
68 return True, "Voimassa oleva CUIT/CUIL"
69
70# Esimerkkikäyttö
71print(generate_cuit_cuil(20, 12345678)) # Generoi tietylle DNI:lle
72print(generate_cuit_cuil(27)) # Generoi satunnaiselle DNI:lle
73print(validate_cuit_cuil("20-12345678-9")) # Validoi CUIT/CUIL
74
JavaScript
1function calculateVerificationDigit(typeCode, dni) {
2 // Muuta merkkijonoksi ja varmista, että DNI on 8 numeroa etunollilla
3 const typeCodeStr = typeCode.toString();
4 const dniStr = dni.toString().padStart(8, '0');
5
6 // Yhdistä tyyppikoodi ja DNI
7 const digits = typeCodeStr + dniStr;
8
9 // Painot jokaiselle sijainnille
10 const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
11
12 // Laske tuotteiden summa
13 let sumProducts = 0;
14 for (let i = 0; i < 10; i++) {
15 sumProducts += parseInt(digits[i]) * weights[i];
16 }
17
18 // Laske tarkistusnumero
19 let verificationDigit = 11 - (sumProducts % 11);
20
21 // Erityistapaukset
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 // Voimassa olevat tyyppikoodit
33 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
34
35 if (!validTypeCodes.includes(typeCode)) {
36 throw new Error(`Virheellinen tyyppikoodi. Sen on oltava yksi: ${validTypeCodes.join(', ')}`);
37 }
38
39 // Generoi satunnainen DNI, jos ei ole annettu
40 if (dni === undefined) {
41 dni = Math.floor(Math.random() * 90000000) + 10000000;
42 }
43
44 // Laske tarkistusnumero
45 const verificationDigit = calculateVerificationDigit(typeCode, dni);
46
47 // Muotoile CUIT/CUIL
48 return `${typeCode}-${dni.toString().padStart(8, '0')}-${verificationDigit}`;
49}
50
51function validateCuitCuil(cuitCuil) {
52 // Poista viivat, jos ne ovat läsnä
53 const cuitCuilClean = cuitCuil.replace(/-/g, '');
54
55 // Tarkista perusmuoto
56 if (!/^\d{11}$/.test(cuitCuilClean)) {
57 return { isValid: false, errorMessage: 'Virheellinen muoto' };
58 }
59
60 // Erota osat
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 // Vahvista tyyppikoodi
66 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
67 if (!validTypeCodes.includes(typeCode)) {
68 return { isValid: false, errorMessage: 'Virheellinen tyyppikoodi' };
69 }
70
71 // Laske ja vertaa tarkistusnumeroa
72 const calculatedDigit = calculateVerificationDigit(typeCode, dni);
73 if (calculatedDigit !== verificationDigit) {
74 return { isValid: false, errorMessage: 'Virheellinen tarkistusnumero' };
75 }
76
77 return { isValid: true };
78}
79
80// Esimerkkikäyttö
81console.log(generateCuitCuil(20, 12345678)); // Generoi tietylle DNI:lle
82console.log(generateCuitCuil(27)); // Generoi satunnaiselle DNI:lle
83console.log(validateCuitCuil("20-12345678-9")); // Validoi CUIT/CUIL
84
Java
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 // Muuta merkkijonoksi ja varmista, että DNI on 8 numeroa etunollilla
11 String typeCodeStr = String.valueOf(typeCode);
12 String dniStr = String.format("%08d", dni);
13
14 // Yhdistä tyyppikoodi ja DNI
15 String digits = typeCodeStr + dniStr;
16
17 // Laske tuotteiden summa
18 int sumProducts = 0;
19 for (int i = 0; i < 10; i++) {
20 sumProducts += Character.getNumericValue(digits.charAt(i)) * WEIGHTS[i];
21 }
22
23 // Laske tarkistusnumero
24 int verificationDigit = 11 - (sumProducts % 11);
25
26 // Erityistapaukset
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("Virheellinen tyyppikoodi. Sen on oltava yksi: " + VALID_TYPE_CODES);
39 }
40
41 // Generoi satunnainen DNI, jos ei ole annettu
42 if (dni == null) {
43 Random random = new Random();
44 dni = 10000000 + random.nextInt(90000000);
45 }
46
47 // Laske tarkistusnumero
48 int verificationDigit = calculateVerificationDigit(typeCode, dni);
49
50 // Muotoile CUIT/CUIL
51 return String.format("%d-%08d-%d", typeCode, dni, verificationDigit);
52 }
53
54 public static ValidationResult validateCuitCuil(String cuitCuil) {
55 // Poista viivat, jos ne ovat läsnä
56 String cuitCuilClean = cuitCuil.replace("-", "");
57
58 // Tarkista perusmuoto
59 if (!cuitCuilClean.matches("\\d{11}")) {
60 return new ValidationResult(false, "Virheellinen muoto");
61 }
62
63 // Erota osat
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 // Vahvista tyyppikoodi
69 if (!VALID_TYPE_CODES.contains(typeCode)) {
70 return new ValidationResult(false, "Virheellinen tyyppikoodi");
71 }
72
73 // Laske ja vertaa tarkistusnumeroa
74 int calculatedDigit = calculateVerificationDigit(typeCode, dni);
75 if (calculatedDigit != verificationDigit) {
76 return new ValidationResult(false, "Virheellinen tarkistusnumero");
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 // Esimerkkikäyttö
102 System.out.println(generateCuitCuil(20, 12345678)); // Generoi tietylle DNI:lle
103 System.out.println(generateCuitCuil(27, null)); // Generoi satunnaiselle DNI:lle
104 System.out.println(validateCuitCuil("20-12345678-9").isValid()); // Validoi CUIT/CUIL
105 }
106}
107
PHP
1<?php
2
3function calculateVerificationDigit($typeCode, $dni) {
4 // Muuta merkkijonoksi ja varmista, että DNI on 8 numeroa etunollilla
5 $typeCodeStr = (string)$typeCode;
6 $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT);
7
8 // Yhdistä tyyppikoodi ja DNI
9 $digits = $typeCodeStr . $dniStr;
10
11 // Painot jokaiselle sijainnille
12 $weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13
14 // Laske tuotteiden summa
15 $sumProducts = 0;
16 for ($i = 0; $i < 10; $i++) {
17 $sumProducts += (int)$digits[$i] * $weights[$i];
18 }
19
20 // Laske tarkistusnumero
21 $verificationDigit = 11 - ($sumProducts % 11);
22
23 // Erityistapaukset
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 // Voimassa olevat tyyppikoodit
35 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
36
37 if (!in_array($typeCode, $validTypeCodes)) {
38 throw new Exception("Virheellinen tyyppikoodi. Sen on oltava yksi: " . implode(', ', $validTypeCodes));
39 }
40
41 // Generoi satunnainen DNI, jos ei ole annettu
42 if ($dni === null) {
43 $dni = rand(10000000, 99999999);
44 }
45
46 // Laske tarkistusnumero
47 $verificationDigit = calculateVerificationDigit($typeCode, $dni);
48
49 // Muotoile CUIT/CUIL
50 return sprintf("%d-%08d-%d", $typeCode, $dni, $verificationDigit);
51}
52
53function validateCuitCuil($cuitCuil) {
54 // Poista viivat, jos ne ovat läsnä
55 $cuitCuilClean = str_replace('-', '', $cuitCuil);
56
57 // Tarkista perusmuoto
58 if (!preg_match('/^\d{11}$/', $cuitCuilClean)) {
59 return ['isValid' => false, 'errorMessage' => 'Virheellinen muoto'];
60 }
61
62 // Erota osat
63 $typeCode = (int)substr($cuitCuilClean, 0, 2);
64 $dni = (int)substr($cuitCuilClean, 2, 8);
65 $verificationDigit = (int)substr($cuitCuilClean, 10, 1);
66
67 // Vahvista tyyppikoodi
68 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
69 if (!in_array($typeCode, $validTypeCodes)) {
70 return ['isValid' => false, 'errorMessage' => 'Virheellinen tyyppikoodi'];
71 }
72
73 // Laske ja vertaa tarkistusnumeroa
74 $calculatedDigit = calculateVerificationDigit($typeCode, $dni);
75 if ($calculatedDigit !== $verificationDigit) {
76 return ['isValid' => false, 'errorMessage' => 'Virheellinen tarkistusnumero'];
77 }
78
79 return ['isValid' => true];
80}
81
82// Esimerkkikäyttö
83echo generateCuitCuil(20, 12345678) . "\n"; // Generoi tietylle DNI:lle
84echo generateCuitCuil(27) . "\n"; // Generoi satunnaiselle DNI:lle
85var_dump(validateCuitCuil("20-12345678-9")); // Validoi CUIT/CUIL
86?>
87
Usein kysyttyjä kysymyksiä
Mikä on ero CUIT:n ja CUIL:n välillä?
CUIT (Clave Única de Identificación Tributaria) käytetään verotustarkoituksiin ja se annetaan sekä yksilöille että oikeushenkilöille, jotka tarvitsevat maksaa veroja Argentiinassa. CUIL (Clave Única de Identificación Laboral) on erityisesti työntekijöiden tunnistamiseen ja sitä käytetään työ- ja sosiaaliturvatarkoituksiin. Vaikka niillä on sama muoto ja laskentalgoritmi, ne palvelevat eri hallinnollisia tarkoituksia.
Mitkä tyyppikoodit ovat käytössä yksilöille ja mitkä yrityksille?
Yksilöille:
- 20, 23, 24: Miehet (CUIL)
- 27: Naiset (CUIL)
Yrityksille ja organisaatioille:
- 30: Osakeyhtiöt (CUIT)
- 33: Yhdistykset (CUIT)
- 34: Säätiöt (CUIT)
Miten tarkistusnumero lasketaan?
Tarkistusnumero lasketaan painotetun summan algoritmilla. Jokainen ensimmäisistä 10 numerosta kerrotaan vastaavalla painolla (5, 4, 3, 2, 7, 6, 5, 4, 3, 2), ja tulokset summataan. Tarkistusnumero on 11 miinus tämän summan jakojäännös 11:llä. Erityistapauksia: jos tulos on 11, tarkistusnumero on 0; jos tulos on 10, tarkistusnumero on 9.
Voinko käyttää tätä työkalua luodakseni oikeita, virallisia CUIT/CUIL-numeroita?
Ei, tämä työkalu on suunniteltu vain testaus- ja koulutustarkoituksiin. Luodut numerot ovat matemaattisesti voimassa CUIT/CUIL-algoritmin mukaan, mutta niitä ei ole virallisesti rekisteröity Argentiinan veroviranomaisille (AFIP). Virallista CUIT/CUIL-rekisteröintiä varten yksilöiden ja yritysten on noudatettava asianmukaisia oikeudellisia menettelyjä AFIP:n kautta.
Miksi CUIT/CUIL-validointi epäonnistuu, vaikka muoto näyttää oikealta?
Validointi voi epäonnistua useista syistä:
- Tyyppikoodi ei ole yksi voimassa olevista koodeista (20, 23, 24, 27, 30, 33, 34)
- Tarkistusnumero ei vastaa algoritmin mukaan laskettua arvoa
- Muoto on virheellinen (sen tulee olla XX-XXXXXXXX-X)
- Syötteessä on ei-numeerisia merkkejä (paitsi viivoja)
Onko viivat pakollisia CUIT/CUIL-numeroissa?
Vaikka CUIT/CUIL-numeroita käytetään yleisesti viivoilla (XX-XXXXXXXX-X), viivat eivät ole osa varsinaista numeroa laskentatarkoituksiin. Validointityökalumme hyväksyy molemmat muodot (viivoilla tai ilman) ja validoi asianmukaisesti kummankin muodon.
Voiko CUIT/CUIL-numero sisältää vähemmän kuin 8 numeroa DNI-osassa?
Ei, DNI-osan on aina oltava tarkalleen 8 numeroa. Jos todellinen DNI sisältää vähemmän numeroita, se on täydennettävä etunollilla saavuttaakseen 8 numeroa. Esimerkiksi, jos jonkun DNI on 1234567, CUIT/CUIL:ssa se esitetään muodossa 01234567.
Miten voin tarkistaa, onko CUIT/CUIL virallisesti rekisteröity Argentiinassa?
Voit tarkistaa, onko CUIT/CUIL virallisesti rekisteröity ja aktiivinen, käyttämällä virallista AFIP (Administración Federal de Ingresos Públicos) verkkosivustoa tai palveluja. Työkalumme vain tarkistaa numeron matemaattisen voimassaolon, ei sen virallista rekisteröintitilaa.
Voinko käyttää tätä työkalua kaupallisessa sovelluksessani?
Kyllä, voit integroida tässä työkalussa esitetyt algoritmit ja logiikan kaupallisiin sovelluksiisi. CUIT/CUIL-validointialgoritmi on julkinen standardi. Suosittelemme kuitenkin toteuttamaan asianmukaisen virheenkäsittelyn ja harkitsemaan lisävalidointia virallisista lähteistä tarvittaessa tuotantoympäristöissä.
Tallentaako työkalu mitään luotuja tai validoituja CUIT/CUIL-numeroita?
Ei, tämä työkalu ei tallenna mitään syötettyä tai luotua tietoa. Kaikki käsittely tapahtuu asiakaspuolella selaimessasi, eikä tietoja lähetetä tai tallenneta palvelimillemme. Tämä varmistaa syötteen yksityisyyden ja turvallisuuden.
Viitteet
-
AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." Virallinen verkkosivusto. 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). "Hanki CUIL." https://www.anses.gob.ar/
-
Boletín Oficial de la República Argentina. "Resolución General AFIP 2854/2010: Menettely. Clave Única de Identificación Tributaria (C.U.I.T.)."
-
Código Fiscal de la República Argentina. "Verovelvollisten tunnistus ja rekisteröinti."
Valmis luomaan tai validoimaan argentiinalaisia CUIT/CUIL-numeroita? Kokeile työkalua nyt ja yksinkertaista testausprosessiasi!
Palaute
Napsauta palautetoimintoa aloittaaksesi palautteen antamisen tästä työkalusta
Liittyvät työkalut
Löydä lisää työkaluja, jotka voivat olla hyödyllisiä työnkulussasi