🛠️

Whiz Tools

Build • Create • Innovate

Generator in Validator za Argentinian CUIT/CUIL

Ustvarite veljavne argentinske številke CUIT/CUIL za testiranje ali preverite obstoječe. Preprost pripomoček za razvijalce, ki delajo z argentinskimi davčnimi in delovnimi identifikacijskimi številkami.

Generator CUIT/CUIL

Vnesite 8-mestno številko DNI ali uporabite naključni generator

Generirani CUIT/CUIL

📚

Dokumentacija

Argentinski CUIT/CUIL Generator in Validator

Uvod

Argentinski CUIT (Clave Única de Identificación Tributaria) in CUIL (Clave Única de Identificación Laboral) sta edinstvena identifikacijska številka, ki se uporablja v Argentini za davčne in zaposlitvene namene. Te 11-mestne kode so bistvene za posameznike in podjetja, da lahko zakonito delujejo v argentinskem ekonomskem sistemu. Naša orodja za generiranje in preverjanje CUIT/CUIL ponujajo preprost in učinkovit način za ustvarjanje veljavnih številk CUIT/CUIL za testne namene in preverjanje obstoječih številk, da se zagotovi, da ustrezajo uradnemu formatu in verifikacijskemu algoritmu.

Ne glede na to, ali ste razvijalec, ki testira aplikacije, ki obravnavajo argentinske davčne ID-je, specialist za QA, ki preverja funkcionalnost sistema, ali pa preprosto potrebujete razumevanje, kako te identifikacijske številke delujejo, to orodje ponuja enostavno rešitev brez nepotrebnih zapletov. Orodje ima dve glavni funkciji: generator, ki ustvarja veljavne številke CUIT/CUIL naključno ali na podlagi specifičnih parametrov, in validator, ki preverja, ali določena številka CUIT/CUIL sledi pravilnemu formatu in pravilom izračuna.

Struktura in izračun CUIT/CUIL

Razumevanje formata

Veljavna številka CUIT/CUIL je sestavljena iz 11 številk, ki so običajno prikazane v formatu XX-XXXXXXXX-X:

  1. Koda tipa (prvi 2 številki): Pokaže tip subjekta

    • 20, 23, 24: Moški posamezniki (CUIL)
    • 27: Ženske posameznice (CUIL)
    • 30, 33, 34: Podjetja in organizacije (CUIT)
  2. Številka DNI (srednjih 8 številk): Za posameznike je to njihova nacionalna identifikacijska številka (DNI), ki je po potrebi dopolnjena z vodilnimi ničlami, da doseže 8 številk. Za podjetja je to edinstvena dodeljena številka.

  3. Verifikacijska številka (zadnja številka): Preverjena številka, izračunana z uporabo specifičnega algoritma za validacijo celotne številke.

Izračun verifikacijske številke

Verifikacijska številka se izračuna z naslednjim algoritmom:

  1. Vzemite prvih 10 številk CUIT/CUIL (koda tipa + DNI)
  2. Pomnožite vsako številko z ustrezno težo iz te zaporedja: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
  3. Seštejte vse nastale produkte
  4. Izračunajte 11 minus ostanek seštevka deljeno z 11
  5. Če je rezultat 11, je verifikacijska številka 0
  6. Če je rezultat 10, je verifikacijska številka 9
  7. V nasprotnem primeru je rezultat verifikacijska številka

Matematično lahko to izrazimo kot:

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

Kjer:

  • VDVD je verifikacijska številka
  • did_i je ii-ta številka prvih 10 številk
  • wiw_i je ustrezna teža iz zaporedja [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  • Posebni primeri: če VD=11VD = 11, potem VD=0VD = 0, če VD=10VD = 10, potem VD=9VD = 9

Korak-po-korak vodnik

Uporaba generatorja

  1. Izberite zavihek "Generator" na vrhu vmesnika orodja.

  2. Izberite kodo tipa iz spustnega menija:

    • 20: Moški (CUIL)
    • 23: Podjetje (CUIT)
    • 24: Začasno podjetje (CUIT)
    • 27: Ženska (CUIL)
    • 30: Korporacija (CUIT)
    • 33: Civilna asociacija (CUIT)
    • 34: Fundacija (CUIT)
  3. Vnesite številko DNI (neobvezno):

    • Vnesite 8-mestno številko DNI v predvideno polje
    • Če pustite prazno, bo orodje uporabilo naključno generirano DNI
    • Če vnesete manj kot 8 številk, bo sistem dodal vodilne ničle
  4. Generirajte naključno DNI (neobvezno):

    • Kliknite gumb "Naključno", da ustvarite naključno 8-mestno številko DNI
  5. Oglejte si generirano CUIT/CUIL:

    • Orodje samodejno prikaže veljavno CUIT/CUIL glede na vaše vnose
    • Format bo XX-XXXXXXXX-X z pravilno verifikacijsko številko
  6. Kopirajte rezultat:

    • Kliknite ikono za kopiranje, da kopirate generirano CUIT/CUIL v odložišče
    • Pojavi se potrdilno sporočilo, ko je uspešno kopirano

Uporaba validatorja

  1. Izberite zavihek "Validator" na vrhu vmesnika orodja.

  2. Vnesite CUIT/CUIL za preverjanje:

    • Vnesite CUIT/CUIL v formatu XX-XXXXXXXX-X
    • Orodje bo samodejno formatiralo vaš vnos z vezaji, ko tipkate
    • Vnesete lahko tudi številko brez vezajev (XXXXXXXXXXX)
  3. Kliknite gumb "Preveri":

    • Orodje bo preverilo format, kodo tipa in verifikacijsko številko
  4. Oglejte si rezultat preverjanja:

    • Za veljavne številke CUIT/CUIL se bo prikazalo zeleno sporočilo o uspehu
    • Za neveljavne številke se bo prikazalo rdeče sporočilo o napaki, ki pojasnjuje težavo:
      • Neveljavna oblika (mora biti XX-XXXXXXXX-X)
      • Neveljavna koda tipa (mora biti ena od: 20, 23, 24, 27, 30, 33, 34)
      • Neveljavna verifikacijska številka
  5. Dodatne informacije:

    • Za veljavne številke orodje prikaže razčlenitev komponent:
      • Koda tipa in njen pomen
      • Številka DNI
      • Verifikacijska številka

Uporabniški primeri

Razvoj in testiranje

  1. Razvoj programske opreme: Generirajte veljavne številke CUIT/CUIL za testiranje aplikacij, ki obravnavajo argentinske davčne identifikacije, kot so:

    • Platforme za e-trgovino
    • Računovodska programska oprema
    • Sistemi za upravljanje s kadri
    • Vladni storitveni portali
    • Bančne aplikacije
  2. Polnjenje podatkovne baze: Ustvarite realistične testne podatke za sisteme, ki shranjujejo informacije o argentinskih uporabnikih, kar zagotavlja, da pravilno delujejo omejitve podatkovne baze in pravila validacije.

  3. Testiranje validacije obrazcev: Preizkusite validacijo vnosa za spletne obrazce, ki zbirajo informacije CUIT/CUIL, in preverite, ali se pravilna sporočila o napakah prikažejo za neveljavne vnose.

  4. Testiranje API-jev: Generirajte veljavne podatkovne pakete za API končne točke, ki zahtevajo številke CUIT/CUIL, in tako zagotovite, da vaši integracijski testi uporabljajo veljavne podatke.

  5. Avtomatizacija QA: Vključite generiranje CUIT/CUIL v avtomatizirane testne skripte, da ustvarite dinamične testne primere namesto uporabe statičnih testnih podatkov.

Izobraževalni nameni

  1. Učenje algoritmov validacije: Razumite, kako algoritmi preverjanja delujejo v praksi, tako da vidite postopek preverjanja CUIT/CUIL v akciji.

  2. Poučevanje validacije podatkov: Uporabite kot izobraževalni primer pri poučevanju tehnik validacije obrazcev novim razvijalcem.

  3. Razumevanje argentinskih poslovnih zahtev: Spoznajte sistem identifikacije, ki se uporablja v Argentini za mednarodni poslovni razvoj.

Alternativne rešitve

Medtem ko naše orodje ponuja preprost način za generiranje in preverjanje številk CUIT/CUIL, obstajajo alternativni pristopi, ki jih lahko upoštevate:

  1. Uradna vladna validacija: Za produkcijska okolja vedno preverite številke CUIT/CUIL proti uradni bazi podatkov AFIP (Administración Federal de Ingresos Públicos), kadar je to mogoče.

  2. Knjižnice in paketi: Večina programskih jezikov ima knjižnice, posebej zasnovane za validacijo argentinskih davčnih ID-jev:

    • JavaScript: validar-cuit npm paket
    • PHP: afip-php knjižnica
    • Python: py-cuit paket
  3. Ročni izračun: Za izobraževalne namene lahko ročno izračunate verifikacijsko številko z uporabo zgoraj opisanega algoritma.

  4. Obsežne storitve validacije podjetij: Za podjetniške aplikacije razmislite o uporabi obsežnih storitev validacije, ki ne le preverjajo formata, ampak tudi preverjajo obstoj in status subjekta, povezanega s CUIT/CUIL.

Zgodovina sistema CUIT/CUIL

Sistem identifikacije CUIT/CUIL v Argentini se je od svojega nastanka znatno razvil:

Izvor in izvajanje

CUIT (Clave Única de Identificación Tributaria) je bil prvič uveden v Argentini v 70. letih kot del prizadevanj za modernizacijo sistema zbiranja davkov. Zvezna uprava za javne prihodke (AFIP) je ta edinstveni identifikator uvedla za učinkovitejše sledenje davkoplačevalcem in zmanjšanje davčne utaje.

CUIL (Clave Única de Identificación Laboral) je bil kasneje uveden za specifično identifikacijo delavcev v sistemu socialne varnosti, kar je ustvarilo ločnico med davčno identifikacijo in delovno identifikacijo, hkrati pa ohranilo dosledno obliko.

Evolucija in digitalizacija

V 90. letih, ko je Argentina doživela pomembne gospodarske reforme, je sistem CUIT/CUIL postal vse pomembnejši za sledenje gospodarskim dejavnostim. Sistem je bil dodatno digitaliziran in uvedeni so bili sistemi za preverjanje na spletu.

Začetek 2000-ih je prinesel integracijo sistema CUIT/CUIL z različnimi digitalnimi vladnimi storitvami, kar je postalo bistvena komponenta argentinskih pobud e-vlade. To obdobje je prav tako prineslo standardizacijo algoritma preverjanja in formata, ki ostaja v uporabi še danes.

Nedavni dogodki

V zadnjih letih je AFIP izboljšal varnostne in preverjalne procese za številke CUIT/CUIL, uvedel bolj sofisticirane sisteme validacije in jih integriral z drugimi vladnimi bazami podatkov. Sistem zdaj igra ključno vlogo v argentinskih prizadevanjih za boj proti davčni utaji in formalizacijo gospodarstva.

Danes se CUIT/CUIL uporablja ne le za davčne in zaposlitvene namene, temveč tudi za širok spekter dejavnosti, vključno z bančništvom, transakcijami z nepremičninami, storitvami komunalnih podjetij in spletnimi nakupi, kar ga dela bistvenega za posameznike in podjetja, ki delujejo v Argentini.

Kodeksni primeri

Python

1def calculate_verification_digit(type_code, dni):
2    # Pretvori v niz in zagotovi, da je DNI 8 številk z vodilnimi ničlami
3    type_code_str = str(type_code)
4    dni_str = str(dni).zfill(8)
5    
6    # Združi kodo tipa in DNI
7    digits = type_code_str + dni_str
8    
9    # Teže za vsak položaj
10    weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
11    
12    # Izračunaj vsoto produktov
13    sum_products = sum(int(digits[i]) * weights[i] for i in range(10))
14    
15    # Izračunaj verifikacijsko številko
16    verification_digit = 11 - (sum_products % 11)
17    
18    # Posebni primeri
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    # Veljavne kode tipov
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"Neveljavna koda tipa. Mora biti ena od: {valid_type_codes}")
34    
35    # Generiraj naključno DNI, če ni podano
36    if dni is None:
37        dni = random.randint(10000000, 99999999)
38    
39    # Izračunaj verifikacijsko številko
40    verification_digit = calculate_verification_digit(type_code, dni)
41    
42    # Oblikuj CUIT/CUIL
43    return f"{type_code}-{str(dni).zfill(8)}-{verification_digit}"
44
45def validate_cuit_cuil(cuit_cuil):
46    # Odstrani vezaje, če so prisotni
47    cuit_cuil_clean = cuit_cuil.replace("-", "")
48    
49    # Preveri osnovno obliko
50    if not cuit_cuil_clean.isdigit() or len(cuit_cuil_clean) != 11:
51        return False, "Neveljavna oblika"
52    
53    # Izvleči dele
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    # Preveri veljavnost kode tipa
59    valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
60    if type_code not in valid_type_codes:
61        return False, "Neveljavna koda tipa"
62    
63    # Izračunaj in primerjaj verifikacijsko številko
64    calculated_digit = calculate_verification_digit(type_code, dni)
65    if calculated_digit != verification_digit:
66        return False, "Neveljavna verifikacijska številka"
67    
68    return True, "Veljavna CUIT/CUIL"
69
70# Primer uporabe
71print(generate_cuit_cuil(20, 12345678))  # Generiraj za specifično DNI
72print(generate_cuit_cuil(27))  # Generiraj z naključno DNI
73print(validate_cuit_cuil("20-12345678-9"))  # Preveri CUIT/CUIL
74

JavaScript

1function calculateVerificationDigit(typeCode, dni) {
2  // Pretvori v niz in zagotovi, da je DNI 8 številk z vodilnimi ničlami
3  const typeCodeStr = typeCode.toString();
4  const dniStr = dni.toString().padStart(8, '0');
5  
6  // Združi kodo tipa in DNI
7  const digits = typeCodeStr + dniStr;
8  
9  // Teže za vsak položaj
10  const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
11  
12  // Izračunaj vsoto produktov
13  let sumProducts = 0;
14  for (let i = 0; i < 10; i++) {
15    sumProducts += parseInt(digits[i]) * weights[i];
16  }
17  
18  // Izračunaj verifikacijsko številko
19  let verificationDigit = 11 - (sumProducts % 11);
20  
21  // Posebni primeri
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  // Veljavne kode tipov
33  const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
34  
35  if (!validTypeCodes.includes(typeCode)) {
36    throw new Error(`Neveljavna koda tipa. Mora biti ena od: ${validTypeCodes.join(', ')}`);
37  }
38  
39  // Generiraj naključno DNI, če ni podano
40  if (dni === undefined) {
41    dni = Math.floor(Math.random() * 90000000) + 10000000;
42  }
43  
44  // Izračunaj verifikacijsko številko
45  const verificationDigit = calculateVerificationDigit(typeCode, dni);
46  
47  // Oblikuj CUIT/CUIL
48  return `${typeCode}-${dni.toString().padStart(8, '0')}-${verificationDigit}`;
49}
50
51function validateCuitCuil(cuitCuil) {
52  // Odstrani vezaje, če so prisotni
53  const cuitCuilClean = cuitCuil.replace(/-/g, '');
54  
55  // Preveri osnovno obliko
56  if (!/^\d{11}$/.test(cuitCuilClean)) {
57    return { isValid: false, errorMessage: 'Neveljavna oblika' };
58  }
59  
60  // Izvleči dele
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  // Preveri veljavnost kode tipa
66  const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
67  if (!validTypeCodes.includes(typeCode)) {
68    return { isValid: false, errorMessage: 'Neveljavna koda tipa' };
69  }
70  
71  // Izračunaj in primerjaj verifikacijsko številko
72  const calculatedDigit = calculateVerificationDigit(typeCode, dni);
73  if (calculatedDigit !== verificationDigit) {
74    return { isValid: false, errorMessage: 'Neveljavna verifikacijska številka' };
75  }
76  
77  return { isValid: true };
78}
79
80// Primer uporabe
81console.log(generateCuitCuil(20, 12345678)); // Generiraj za specifično DNI
82console.log(generateCuitCuil(27)); // Generiraj z naključno DNI
83console.log(validateCuitCuil("20-12345678-9")); // Preveri 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        // Pretvori v niz in zagotovi, da je DNI 8 številk z vodilnimi ničlami
11        String typeCodeStr = String.valueOf(typeCode);
12        String dniStr = String.format("%08d", dni);
13        
14        // Združi kodo tipa in DNI
15        String digits = typeCodeStr + dniStr;
16        
17        // Izračunaj vsoto produktov
18        int sumProducts = 0;
19        for (int i = 0; i < 10; i++) {
20            sumProducts += Character.getNumericValue(digits.charAt(i)) * WEIGHTS[i];
21        }
22        
23        // Izračunaj verifikacijsko številko
24        int verificationDigit = 11 - (sumProducts % 11);
25        
26        // Posebni primeri
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("Neveljavna koda tipa. Mora biti ena od: " + VALID_TYPE_CODES);
39        }
40        
41        // Generiraj naključno DNI, če ni podano
42        if (dni == null) {
43            Random random = new Random();
44            dni = 10000000 + random.nextInt(90000000);
45        }
46        
47        // Izračunaj verifikacijsko številko
48        int verificationDigit = calculateVerificationDigit(typeCode, dni);
49        
50        // Oblikuj CUIT/CUIL
51        return String.format("%d-%08d-%d", typeCode, dni, verificationDigit);
52    }
53    
54    public static ValidationResult validateCuitCuil(String cuitCuil) {
55        // Odstrani vezaje, če so prisotni
56        String cuitCuilClean = cuitCuil.replace("-", "");
57        
58        // Preveri osnovno obliko
59        if (!cuitCuilClean.matches("\\d{11}")) {
60            return new ValidationResult(false, "Neveljavna oblika");
61        }
62        
63        // Izvleči dele
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        // Preveri veljavnost kode tipa
69        if (!VALID_TYPE_CODES.contains(typeCode)) {
70            return new ValidationResult(false, "Neveljavna koda tipa");
71        }
72        
73        // Izračunaj in primerjaj verifikacijsko številko
74        int calculatedDigit = calculateVerificationDigit(typeCode, dni);
75        if (calculatedDigit != verificationDigit) {
76            return new ValidationResult(false, "Neveljavna verifikacijska številka");
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        // Primer uporabe
102        System.out.println(generateCuitCuil(20, 12345678)); // Generiraj za specifično DNI
103        System.out.println(generateCuitCuil(27, null)); // Generiraj z naključno DNI
104        System.out.println(validateCuitCuil("20-12345678-9").isValid()); // Preveri CUIT/CUIL
105    }
106}
107

PHP

1<?php
2
3function calculateVerificationDigit($typeCode, $dni) {
4    // Pretvori v niz in zagotovi, da je DNI 8 številk z vodilnimi ničlami
5    $typeCodeStr = (string)$typeCode;
6    $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT);
7    
8    // Združi kodo tipa in DNI
9    $digits = $typeCodeStr . $dniStr;
10    
11    // Teže za vsak položaj
12    $weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13    
14    // Izračunaj vsoto produktov
15    $sumProducts = 0;
16    for ($i = 0; $i < 10; $i++) {
17        $sumProducts += (int)$digits[$i] * $weights[$i];
18    }
19    
20    // Izračunaj verifikacijsko številko
21    $verificationDigit = 11 - ($sumProducts % 11);
22    
23    // Posebni primeri
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    // Veljavne kode tipov
35    $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
36    
37    if (!in_array($typeCode, $validTypeCodes)) {
38        throw new Exception("Neveljavna koda tipa. Mora biti ena od: " . implode(', ', $validTypeCodes));
39    }
40    
41    // Generiraj naključno DNI, če ni podano
42    if ($dni === null) {
43        $dni = rand(10000000, 99999999);
44    }
45    
46    // Izračunaj verifikacijsko številko
47    $verificationDigit = calculateVerificationDigit($typeCode, $dni);
48    
49    // Oblikuj CUIT/CUIL
50    return sprintf("%d-%08d-%d", $typeCode, $dni, $verificationDigit);
51}
52
53function validateCuitCuil($cuitCuil) {
54    // Odstrani vezaje, če so prisotni
55    $cuitCuilClean = str_replace('-', '', $cuitCuil);
56    
57    // Preveri osnovno obliko
58    if (!preg_match('/^\d{11}$/', $cuitCuilClean)) {
59        return ['isValid' => false, 'errorMessage' => 'Neveljavna oblika'];
60    }
61    
62    // Izvleči dele
63    $typeCode = (int)substr($cuitCuilClean, 0, 2);
64    $dni = (int)substr($cuitCuilClean, 2, 8);
65    $verificationDigit = (int)substr($cuitCuilClean, 10, 1);
66    
67    // Preveri veljavnost kode tipa
68    $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
69    if (!in_array($typeCode, $validTypeCodes)) {
70        return ['isValid' => false, 'errorMessage' => 'Neveljavna koda tipa'];
71    }
72    
73    // Izračunaj in primerjaj verifikacijsko številko
74    $calculatedDigit = calculateVerificationDigit($typeCode, $dni);
75    if ($calculatedDigit !== $verificationDigit) {
76        return ['isValid' => false, 'errorMessage' => 'Neveljavna verifikacijska številka'];
77    }
78    
79    return ['isValid' => true];
80}
81
82// Primer uporabe
83echo generateCuitCuil(20, 12345678) . "\n"; // Generiraj za specifično DNI
84echo generateCuitCuil(27) . "\n"; // Generiraj z naključno DNI
85var_dump(validateCuitCuil("20-12345678-9")); // Preveri CUIT/CUIL
86?>
87

Pogosto zastavljena vprašanja

Kakšna je razlika med CUIT in CUIL?

CUIT (Clave Única de Identificación Tributaria) se uporablja za davčno identifikacijo in je dodeljen tako posameznikom kot pravnim osebam, ki morajo plačevati davke v Argentini. CUIL (Clave Única de Identificación Laboral) je specifično za delavce in se uporablja za delovne in socialne varnostne namene. Čeprav imata enak format in algoritem izračuna, služita različnim administrativnim namenom.

Kateri kodni tipi se uporabljajo za posameznike in kateri za podjetja?

Za posameznike:

  • 20, 23, 24: Moški posamezniki (CUIL)
  • 27: Ženske posameznice (CUIL)

Za podjetja in organizacije:

  • 30: Korporacije (CUIT)
  • 33: Civilne asociacije (CUIT)
  • 34: Fundacije (CUIT)

Kako se izračuna verifikacijska številka?

Verifikacijska številka se izračuna z algoritmom, ki temelji na uteženi vsoti. Vsaka od prvih 10 številk se pomnoži z ustrezno težo (5, 4, 3, 2, 7, 6, 5, 4, 3, 2), rezultati pa se seštejejo. Verifikacijska številka je 11 minus ostanek, ko se ta vsota deli z 11. Posebni primeri: če je rezultat 11, je verifikacijska številka 0; če je rezultat 10, je verifikacijska številka 9.

Ali lahko to orodje uporabim za generiranje pravih, uradnih številk CUIT/CUIL?

Ne, to orodje je zasnovano za testne in izobraževalne namene. Generirane številke so matematično veljavne v skladu z algoritmom CUIT/CUIL, vendar niso uradno registrirane pri argentinskih davčnih organih (AFIP). Za uradno registracijo CUIT/CUIL morajo posamezniki in podjetja slediti ustreznim pravnim postopkom preko AFIP.

Zakaj se moja validacija CUIT/CUIL ne uspe, čeprav se oblika zdi pravilna?

Validacija lahko ne uspe iz več razlogov:

  1. Koda tipa ni ena od veljavnih kod (20, 23, 24, 27, 30, 33, 34)
  2. Verifikacijska številka se ne ujema z izračunano vrednostjo na podlagi algoritma
  3. Oblika je nepravilna (mora biti XX-XXXXXXXX-X)
  4. V vhodu so neštevilski znaki (razen vezajev)

Ali so vezaji obvezni v številkah CUIT/CUIL?

Čeprav so številke CUIT/CUIL običajno zapisane in prikazane z vezaji (XX-XXXXXXXX-X), vezaji niso del dejanske številke za namene izračuna. Naš validator sprejema oba formata (s vezaji ali brez) in bo ustrezno preveril oba formata.

Lahko CUIT/CUIL številka vsebuje manj kot 8 številk v delu DNI?

Ne, del DNI mora vedno imeti natančno 8 številk. Če ima dejanska DNI manj številk, jo je treba dopolniti z vodilnimi ničlami, da doseže 8 številk. Na primer, če je nekdo DNI 1234567, bo v CUIT/CUIL predstavljena kot 01234567.

Kako lahko preverim, ali je CUIT/CUIL uradno registriran v Argentini?

Da preverite, ali je CUIT/CUIL uradno registriran in aktiven, bi morali uporabiti uradno spletno stran ali storitve AFIP (Administración Federal de Ingresos Públicos). Naše orodje le preverja matematično veljavnost številke, ne pa njenega uradnega statusa registracije.

Ali lahko to orodje uporabim v svoji komercialni aplikaciji?

Da, lahko integrirate algoritem in logiko, prikazano v tem orodju, v svoje komercialne aplikacije. Algoritem validacije CUIT/CUIL je javni standard. Vendar pa priporočamo, da za produkcijska okolja implementirate ustrezno obravnavo napak in razmislite o dodatni validaciji proti uradnim virom, kadar je to potrebno.

Ali orodje shranjuje katero koli od generiranih ali preverjenih številk CUIT/CUIL?

Ne, to orodje ne shranjuje nobenih informacij, ki jih vnesete ali generirate. Vse obdelave potekajo na strani odjemalca v vašem brskalniku in nobeni podatki se ne pošiljajo ali shranjujejo na naših strežnikih. To zagotavlja zasebnost in varnost vseh informacij, ki jih vnesete.

Reference

  1. AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." Uradna spletna stran. https://www.afip.gob.ar/

  2. Ministrstvo za delo, zaposlovanje in socialno varnost. "CUIL - Clave Única de Identificación Laboral." https://www.argentina.gob.ar/trabajo

  3. ANSES (Administración Nacional de la Seguridad Social). "Pridobite svoj CUIL." https://www.anses.gob.ar/

  4. Uradni bilten Republike Argentina. "Resolución General AFIP 2854/2010: Postopek. Clave Única de Identificación Tributaria (C.U.I.T.)."

  5. Davčni zakonik Republike Argentina. "Identifikacija in registracija davkoplačevalcev."


Ste pripravljeni generirati ali preveriti argentinske številke CUIT/CUIL? Preizkusite naše orodje zdaj in poenostavite svoj postopek testiranja!