🛠️

Whiz Tools

Build • Create • Innovate

Generator i Validator za Argentinijski CUIT/CUIL

Generišite važeće argentinske CUIT/CUIL brojeve za testiranje ili validirajte postojeće. Jednostavan alat za programere koji rade sa argentinskim poreskim i radnim identifikacionim brojevima.

Generator CUIT/CUIL

Unesite 8-cifreni DNI broj ili koristite generator nasumičnih brojeva

Generisani CUIT/CUIL

📚

Dokumentacija

Argentinski generator i validator za CUIT/CUIL

Uvod

Argentinski CUIT (Clave Única de Identificación Tributaria) i CUIL (Clave Única de Identificación Laboral) su jedinstveni identifikacioni brojevi koji se koriste u Argentini za porezne i radne svrhe, redom. Ovi 11-cifreni kodovi su od suštinskog značaja za pojedince i preduzeća da legalno funkcionišu unutar argentinskog ekonomskog sistema. Naš alat za generisanje i validaciju CUIT/CUIL brojeva pruža jednostavan i efikasan način za generisanje validnih CUIT/CUIL brojeva u svrhu testiranja i validaciju postojećih brojeva kako bi se osiguralo da se pridržavaju zvaničnog formata i algoritma verifikacije.

Bilo da ste programer koji testira aplikacije koje obrađuju argentinske poreske identifikatore, QA stručnjak koji proverava funkcionalnost sistema, ili jednostavno trebate da razumete kako ovi identifikacioni brojevi funkcionišu, ovaj alat nudi jednostavno rešenje bez nepotrebnih komplikacija. Alat sadrži dve glavne funkcije: generator koji nasumično kreira validne CUIT/CUIL brojeve ili na osnovu specifičnih parametara, i validator koji proverava da li dati CUIT/CUIL broj prati ispravan format i pravila izračunavanja.

Struktura i izračunavanje CUIT/CUIL

Razumevanje formata

Validan CUIT/CUIL broj se sastoji od 11 cifara koje se obično prikazuju u formatu XX-XXXXXXXX-X:

  1. Kod tipa (prve 2 cifre): Označava tip entiteta

    • 20, 23, 24: Muški pojedinci (CUIL)
    • 27: Ženski pojedinci (CUIL)
    • 30, 33, 34: Preduzeća i organizacije (CUIT)
  2. DNI broj (srednjih 8 cifara): Za pojedince, ovo je njihov broj nacionalnog identiteta (DNI), dopunjen vodećim nulama ako je potrebno da dostigne 8 cifara. Za preduzeća, ovo je jedinstveni dodeljeni broj.

  3. Verifikaciona cifra (poslednja cifra): Cifra provere koja se izračunava koristeći specifičan algoritam kako bi se validirao ceo broj.

Izračunavanje verifikacione cifre

Verifikaciona cifra se izračunava koristeći sledeći algoritam:

  1. Uzmite prvih 10 cifara CUIT/CUIL (kod tipa + DNI)
  2. Pomnožite svaku cifru sa odgovarajućom težinom iz ove sekvence: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2
  3. Saberite sve dobijene proizvode
  4. Izračunajte 11 minus ostatak sume podeljene sa 11
  5. Ako je rezultat 11, verifikaciona cifra je 0
  6. Ako je rezultat 10, verifikaciona cifra je 9
  7. U suprotnom, rezultat je verifikaciona cifra

Matematički, ovo se može izraziti kao:

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

Gde:

  • VDVD je verifikaciona cifra
  • did_i je ii-ta cifra prvih 10 cifara
  • wiw_i je odgovarajuća težina iz sekvence [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  • Specijalni slučajevi: ako VD=11VD = 11 onda je VD=0VD = 0, ako VD=10VD = 10 onda je VD=9VD = 9

Vodič korak po korak

Korišćenje generatora

  1. Izaberite karticu "Generator" na vrhu interfejsa alata.

  2. Izaberite kod tipa iz padajućeg menija:

    • 20: Muški (CUIL)
    • 23: Preduzeće (CUIT)
    • 24: Privremeno preduzeće (CUIT)
    • 27: Ženski (CUIL)
    • 30: Korporacija (CUIT)
    • 33: Građanska asocijacija (CUIT)
    • 34: Fondacija (CUIT)
  3. Unesite DNI broj (opciono):

    • Unesite 8-cifreni DNI broj u predviđeno polje
    • Ako ostavite prazno, alat će koristiti nasumično generisani DNI
    • Ako unesete manje od 8 cifara, sistem će dopuniti vodećim nulama
  4. Generišite nasumični DNI (opciono):

    • Kliknite na dugme "Nasumično" da generišete nasumični 8-cifreni DNI broj
  5. Pogledajte generisani CUIT/CUIL:

    • Alat automatski prikazuje validan CUIT/CUIL na osnovu vaših unosa
    • Format će biti XX-XXXXXXXX-X sa ispravnom verifikacionom cifrom
  6. Kopirajte rezultat:

    • Kliknite na ikonu kopiranja da kopirate generisani CUIT/CUIL u vaš međuspremnik
    • Poruka o potvrdi će se pojaviti kada je uspešno kopirano

Korišćenje validatora

  1. Izaberite karticu "Validator" na vrhu interfejsa alata.

  2. Unesite CUIT/CUIL za validaciju:

    • Unesite CUIT/CUIL u formatu XX-XXXXXXXX-X
    • Alat će automatski formatirati vaš unos sa crticama dok kucate
    • Takođe možete uneti broj bez crtica (XXXXXXXXXXX)
  3. Kliknite na dugme "Validiraj":

    • Alat će proveriti format, kod tipa i verifikacionu cifru
  4. Pogledajte rezultat validacije:

    • Za validne CUIT/CUIL brojeve, pojaviće se zelena poruka o uspehu
    • Za nevalidne brojeve, pojaviće se crvena poruka o grešci koja objašnjava problem:
      • Nevalidan format (mora biti XX-XXXXXXXX-X)
      • Nevalidan kod tipa (mora biti jedan od: 20, 23, 24, 27, 30, 33, 34)
      • Nevalidna verifikaciona cifra
  5. Dodatne informacije:

    • Za validne brojeve, alat prikazuje razlaganje komponenti:
      • Kod tipa i njegovo značenje
      • DNI broj
      • Verifikaciona cifra

Upotrebe

Razvoj i testiranje

  1. Razvoj softvera: Generišite validne CUIT/CUIL brojeve za testiranje aplikacija koje se bave argentinskim poreskim identifikatorima, kao što su:

    • Platforme za e-trgovinu
    • Računovodstveni softver
    • Sistemi za upravljanje ljudskim resursima
    • Portali za državne usluge
    • Bankarske aplikacije
  2. Popunjavanje baze podataka: Kreirajte realistične test podatke za sisteme koji čuvaju informacije o argentinskim korisnicima, osiguravajući da pravila i ograničenja baze podataka funkcionišu ispravno.

  3. Testiranje validacije obrazaca: Testirajte validaciju unosa za web obrasce koji prikupljaju CUIT/CUIL informacije, proveravajući da se pravilne poruke o grešci pojavljuju za nevalidne unose.

  4. Testiranje API-ja: Generišite validne podatke za API krajnje tačke koje zahtevaju CUIT/CUIL brojeve, osiguravajući da vaši integracioni testovi koriste validne podatke.

  5. QA automatizacija: Uključite generisanje CUIT/CUIL u automatizovane test skripte kako biste kreirali dinamičke test slučajeve umesto korišćenja statičnih test podataka.

Obrazovne svrhe

  1. Učenje algoritama validacije: Razumite kako algoritmi provere cifara funkcionišu u praksi gledajući proces verifikacije CUIT/CUIL u akciji.

  2. Podučavanje validaciji podataka: Koristite kao obrazovni primer kada podučavate tehnike validacije obrazaca novim programerima.

  3. Razumevanje argentinskih poslovnih zahteva: Učite o identifikacionom sistemu koji se koristi u Argentini za međunarodni poslovni razvoj.

Alternativne opcije

Dok naš alat pruža jednostavan način za generisanje i validaciju CUIT/CUIL brojeva, postoje alternativni pristupi koje možete razmotriti:

  1. Zvanična vladina validacija: Za produkcijska okruženja, uvek validirajte CUIT/CUIL brojeve protiv zvanične AFIP (Administración Federal de Ingresos Públicos) baze podataka kada je to moguće.

  2. Biblioteke i paketi: Nekoliko programskih jezika ima biblioteke posebno dizajnirane za validaciju argentinskih poreskih ID-a:

    • JavaScript: validar-cuit npm paket
    • PHP: afip-php biblioteka
    • Python: py-cuit paket
  3. Ručno izračunavanje: U obrazovne svrhe, možete ručno izračunati verifikacionu cifru koristeći algoritam opisan ranije.

  4. Sveobuhvatne usluge validacije poslovanja: Za aplikacije na nivou preduzeća, razmotrite korišćenje sveobuhvatnih usluga validacije koje ne samo da proveravaju format, već i verifikuju postojanje i status entiteta povezanog sa CUIT/CUIL.

Istorija sistema CUIT/CUIL

Sistem identifikacije CUIT/CUIL u Argentini se značajno razvio od svog osnivanja:

Poreklo i implementacija

CUIT (Clave Única de Identificación Tributaria) je prvi put uveden u Argentini 1970-ih kao deo napora za modernizaciju sistema prikupljanja poreza. Savezna administracija javnih prihoda (AFIP) je implementirala ovaj jedinstveni identifikator kako bi efikasnije pratila poreske obveznike i smanjila poresku evaziju.

CUIL (Clave Única de Identificación Laboral) je kasnije uveden kako bi se posebno identifikovali radnici u sistemu socijalne sigurnosti, stvarajući razliku između poreske identifikacije i radne identifikacije, dok je zadržao dosledan format.

Evolucija i digitalizacija

U 1990-im, kako je Argentina prolazila kroz značajne ekonomske reforme, sistem CUIT/CUIL je postao sve važniji za praćenje ekonomske aktivnosti. Sistem je dodatno digitalizovan, a implementirani su online sistemi verifikacije.

Rani 2000-ih je video integraciju sistema CUIT/CUIL sa raznim digitalnim vladinim uslugama, čineći ga suštinskim komponentom argentinskih e-vladinih inicijativa. Ovaj period je takođe video standardizaciju algoritma verifikacije i formata koji se i danas koristi.

Nedavni razvoj

U poslednjim godinama, AFIP je poboljšao sigurnosne i verifikacione procese za CUIT/CUIL brojeve, implementirajući sofisticiranije sisteme validacije i integrišući ih s drugim vladinim bazama podataka. Sistem sada igra ključnu ulogu u argentinskim naporima da se bori protiv poreske evazije i formalizuje ekonomiju.

Danas se CUIT/CUIL koristi ne samo za poreske i radne svrhe, već i za širok spektar aktivnosti uključujući bankarstvo, transakcije nekretninama, usluge komunalija i online kupovine, čineći ga suštinskim identifikatorom za pojedince i preduzeća koja funkcionišu u Argentini.

Primeri koda

Python

1def calculate_verification_digit(type_code, dni):
2    # Pretvori u string i osiguraj da je DNI 8 cifara sa vodećim nulama
3    type_code_str = str(type_code)
4    dni_str = str(dni).zfill(8)
5    
6    # Kombinuj kod tipa i DNI
7    digits = type_code_str + dni_str
8    
9    # Težine za svaku poziciju
10    weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
11    
12    # Izračunaj sumu proizvoda
13    sum_products = sum(int(digits[i]) * weights[i] for i in range(10))
14    
15    # Izračunaj verifikacionu cifru
16    verification_digit = 11 - (sum_products % 11)
17    
18    # Specijalni slučajevi
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    # Validni kodovi tipa
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"Nevalidan kod tipa. Mora biti jedan od: {valid_type_codes}")
34    
35    # Generiši nasumični DNI ako nije dat
36    if dni is None:
37        dni = random.randint(10000000, 99999999)
38    
39    # Izračunaj verifikacionu cifru
40    verification_digit = calculate_verification_digit(type_code, dni)
41    
42    # Formatiraj CUIT/CUIL
43    return f"{type_code}-{str(dni).zfill(8)}-{verification_digit}"
44
45def validate_cuit_cuil(cuit_cuil):
46    # Ukloni crtice ako su prisutne
47    cuit_cuil_clean = cuit_cuil.replace("-", "")
48    
49    # Proveri osnovni format
50    if not cuit_cuil_clean.isdigit() or len(cuit_cuil_clean) != 11:
51        return False, "Nevalidan format"
52    
53    # Izvuci delove
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    # Validiraj kod tipa
59    valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
60    if type_code not in valid_type_codes:
61        return False, "Nevalidan kod tipa"
62    
63    # Izračunaj i uporedi verifikacionu cifru
64    calculated_digit = calculate_verification_digit(type_code, dni)
65    if calculated_digit != verification_digit:
66        return False, "Nevalidna verifikaciona cifra"
67    
68    return True, "Validan CUIT/CUIL"
69
70# Primer korišćenja
71print(generate_cuit_cuil(20, 12345678))  # Generiši za specifičan DNI
72print(generate_cuit_cuil(27))  # Generiši sa nasumičnim DNI
73print(validate_cuit_cuil("20-12345678-9"))  # Validiraj CUIT/CUIL
74

JavaScript

1function calculateVerificationDigit(typeCode, dni) {
2  // Pretvori u string i osiguraj da je DNI 8 cifara sa vodećim nulama
3  const typeCodeStr = typeCode.toString();
4  const dniStr = dni.toString().padStart(8, '0');
5  
6  // Kombinuj kod tipa i DNI
7  const digits = typeCodeStr + dniStr;
8  
9  // Težine za svaku poziciju
10  const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
11  
12  // Izračunaj sumu proizvoda
13  let sumProducts = 0;
14  for (let i = 0; i < 10; i++) {
15    sumProducts += parseInt(digits[i]) * weights[i];
16  }
17  
18  // Izračunaj verifikacionu cifru
19  let verificationDigit = 11 - (sumProducts % 11);
20  
21  // Specijalni slučajevi
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  // Validni kodovi tipa
33  const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
34  
35  if (!validTypeCodes.includes(typeCode)) {
36    throw new Error(`Nevalidan kod tipa. Mora biti jedan od: ${validTypeCodes.join(', ')}`);
37  }
38  
39  // Generiši nasumični DNI ako nije dat
40  if (dni === undefined) {
41    dni = Math.floor(Math.random() * 90000000) + 10000000;
42  }
43  
44  // Izračunaj verifikacionu cifru
45  const verificationDigit = calculateVerificationDigit(typeCode, dni);
46  
47  // Formatiraj CUIT/CUIL
48  return `${typeCode}-${dni.toString().padStart(8, '0')}-${verificationDigit}`;
49}
50
51function validateCuitCuil(cuitCuil) {
52  // Ukloni crtice ako su prisutne
53  const cuitCuilClean = cuitCuil.replace(/-/g, '');
54  
55  // Proveri osnovni format
56  if (!/^\d{11}$/.test(cuitCuilClean)) {
57    return { isValid: false, errorMessage: 'Nevalidan format' };
58  }
59  
60  // Izvuci delove
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  // Validiraj kod tipa
66  const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
67  if (!validTypeCodes.includes(typeCode)) {
68    return { isValid: false, errorMessage: 'Nevalidan kod tipa' };
69  }
70  
71  // Izračunaj i uporedi verifikacionu cifru
72  const calculatedDigit = calculateVerificationDigit(typeCode, dni);
73  if (calculatedDigit !== verificationDigit) {
74    return { isValid: false, errorMessage: 'Nevalidna verifikaciona cifra' };
75  }
76  
77  return { isValid: true };
78}
79
80// Primer korišćenja
81console.log(generateCuitCuil(20, 12345678)); // Generiši za specifičan DNI
82console.log(generateCuitCuil(27)); // Generiši sa nasumičnim DNI
83console.log(validateCuitCuil("20-12345678-9")); // Validiraj 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 u string i osiguraj da je DNI 8 cifara sa vodećim nulama
11        String typeCodeStr = String.valueOf(typeCode);
12        String dniStr = String.format("%08d", dni);
13        
14        // Kombinuj kod tipa i DNI
15        String digits = typeCodeStr + dniStr;
16        
17        // Izračunaj sumu proizvoda
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 verifikacionu cifru
24        int verificationDigit = 11 - (sumProducts % 11);
25        
26        // Specijalni slučajevi
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("Nevalidan kod tipa. Mora biti jedan od: " + VALID_TYPE_CODES);
39        }
40        
41        // Generiši nasumični DNI ako nije dat
42        if (dni == null) {
43            Random random = new Random();
44            dni = 10000000 + random.nextInt(90000000);
45        }
46        
47        // Izračunaj verifikacionu cifru
48        int verificationDigit = calculateVerificationDigit(typeCode, dni);
49        
50        // Formatiraj CUIT/CUIL
51        return String.format("%d-%08d-%d", typeCode, dni, verificationDigit);
52    }
53    
54    public static ValidationResult validateCuitCuil(String cuitCuil) {
55        // Ukloni crtice ako su prisutne
56        String cuitCuilClean = cuitCuil.replace("-", "");
57        
58        // Proveri osnovni format
59        if (!cuitCuilClean.matches("\\d{11}")) {
60            return new ValidationResult(false, "Nevalidan format");
61        }
62        
63        // Izvuci delove
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        // Validiraj kod tipa
69        if (!VALID_TYPE_CODES.contains(typeCode)) {
70            return new ValidationResult(false, "Nevalidan kod tipa");
71        }
72        
73        // Izračunaj i uporedi verifikacionu cifru
74        int calculatedDigit = calculateVerificationDigit(typeCode, dni);
75        if (calculatedDigit != verificationDigit) {
76            return new ValidationResult(false, "Nevalidna verifikaciona cifra");
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 korišćenja
102        System.out.println(generateCuitCuil(20, 12345678)); // Generiši za specifičan DNI
103        System.out.println(generateCuitCuil(27, null)); // Generiši sa nasumičnim DNI
104        System.out.println(validateCuitCuil("20-12345678-9").isValid()); // Validiraj CUIT/CUIL
105    }
106}
107

PHP

1<?php
2
3function calculateVerificationDigit($typeCode, $dni) {
4    // Pretvori u string i osiguraj da je DNI 8 cifara sa vodećim nulama
5    $typeCodeStr = (string)$typeCode;
6    $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT);
7    
8    // Kombinuj kod tipa i DNI
9    $digits = $typeCodeStr . $dniStr;
10    
11    // Težine za svaku poziciju
12    $weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13    
14    // Izračunaj sumu proizvoda
15    $sumProducts = 0;
16    for ($i = 0; $i < 10; $i++) {
17        $sumProducts += (int)$digits[$i] * $weights[$i];
18    }
19    
20    // Izračunaj verifikacionu cifru
21    $verificationDigit = 11 - ($sumProducts % 11);
22    
23    // Specijalni slučajevi
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    // Validni kodovi tipa
35    $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
36    
37    if (!in_array($typeCode, $validTypeCodes)) {
38        throw new Exception("Nevalidan kod tipa. Mora biti jedan od: " . implode(', ', $validTypeCodes));
39    }
40    
41    // Generiši nasumični DNI ako nije dat
42    if ($dni === null) {
43        $dni = rand(10000000, 99999999);
44    }
45    
46    // Izračunaj verifikacionu cifru
47    $verificationDigit = calculateVerificationDigit($typeCode, $dni);
48    
49    // Formatiraj CUIT/CUIL
50    return sprintf("%d-%08d-%d", $typeCode, $dni, $verificationDigit);
51}
52
53function validateCuitCuil($cuitCuil) {
54    // Ukloni crtice ako su prisutne
55    $cuitCuilClean = str_replace('-', '', $cuitCuil);
56    
57    // Proveri osnovni format
58    if (!preg_match('/^\d{11}$/', $cuitCuilClean)) {
59        return ['isValid' => false, 'errorMessage' => 'Nevalidan format'];
60    }
61    
62    // Izvuci delove
63    $typeCode = (int)substr($cuitCuilClean, 0, 2);
64    $dni = (int)substr($cuitCuilClean, 2, 8);
65    $verificationDigit = (int)substr($cuitCuilClean, 10, 1);
66    
67    // Validiraj kod tipa
68    $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
69    if (!in_array($typeCode, $validTypeCodes)) {
70        return ['isValid' => false, 'errorMessage' => 'Nevalidan kod tipa'];
71    }
72    
73    // Izračunaj i uporedi verifikacionu cifru
74    $calculatedDigit = calculateVerificationDigit($typeCode, $dni);
75    if ($calculatedDigit !== $verificationDigit) {
76        return ['isValid' => false, 'errorMessage' => 'Nevalidna verifikaciona cifra'];
77    }
78    
79    return ['isValid' => true];
80}
81
82// Primer korišćenja
83echo generateCuitCuil(20, 12345678) . "\n"; // Generiši za specifičan DNI
84echo generateCuitCuil(27) . "\n"; // Generiši sa nasumičnim DNI
85var_dump(validateCuitCuil("20-12345678-9")); // Validiraj CUIT/CUIL
86?>
87

Često postavljana pitanja

Koja je razlika između CUIT i CUIL?

CUIT (Clave Única de Identificación Tributaria) se koristi za poresku identifikaciju i dodeljuje se i pojedincima i pravnim licima koji treba da plaćaju poreze u Argentini. CUIL (Clave Única de Identificación Laboral) je specifično za radnike i koristi se za radne i socijalne sigurnosne svrhe. Iako dele isti format i algoritam izračunavanja, služe različitim administrativnim svrhama.

Koji kodovi tipa se koriste za pojedince, a koji za preduzeća?

Za pojedince:

  • 20, 23, 24: Muški pojedinci (CUIL)
  • 27: Ženski pojedinci (CUIL)

Za preduća i organizacije:

  • 30: Korporacije (CUIT)
  • 33: Građanske asocijacije (CUIT)
  • 34: Fondacije (CUIT)

Kako se izračunava verifikaciona cifra?

Verifikaciona cifra se izračunava koristeći algoritam sa težinskim sumama. Svaka od prvih 10 cifara se množi sa odgovarajućom težinom (5, 4, 3, 2, 7, 6, 5, 4, 3, 2), a rezultati se sabiraju. Verifikaciona cifra je 11 minus ostatak kada se ova suma podeli sa 11. Specijalni slučajevi: ako je rezultat 11, verifikaciona cifra je 0; ako je rezultat 10, verifikaciona cifra je 9.

Mogu li koristiti ovaj alat za generisanje pravih, zvaničnih CUIT/CUIL brojeva?

Ne, ovaj alat je dizajniran za testiranje i obrazovne svrhe. Brojevi koji se generišu su matematički validni prema CUIT/CUIL algoritmu, ali nisu zvanično registrovani kod argentinskih poreskih vlasti (AFIP). Za zvaničnu registraciju CUIT/CUIL, pojedinci i preduzeća moraju pratiti odgovarajuće zakonske procedure kroz AFIP.

Zašto moja validacija CUIT/CUIL ne prolazi iako format izgleda ispravno?

Validacija može propasti iz više razloga:

  1. Kod tipa nije jedan od validnih kodova (20, 23, 24, 27, 30, 33, 34)
  2. Verifikaciona cifra se ne poklapa sa izračunatom vrednošću prema algoritmu
  3. Format je neispravan (treba biti XX-XXXXXXXX-X)
  4. U unosu su prisutni ne-numerički karakteri (osim crtica)

Da li su crtice obavezne u CUIT/CUIL brojevima?

Iako se CUIT/CUIL brojevi obično pišu i prikazuju sa crticama (XX-XXXXXXXX-X), crtice nisu deo stvarnog broja za svrhe izračunavanja. Naš validator prihvata oba formata (sa ili bez crtica) i pravilno će validirati bilo koji format.

Može li CUIT/CUIL broj imati manje od 8 cifara u delu DNI?

Ne, deo DNI mora uvek biti tačno 8 cifara. Ako stvarni DNI ima manje cifara, mora se dopuniti vodećim nulama kako bi dostigao 8 cifara. Na primer, ako je nečiji DNI 1234567, u CUIT/CUIL će biti predstavljen kao 01234567.

Kako mogu proveriti da li je CUIT/CUIL zvanično registrovan u Argentini?

Da biste proverili da li je CUIT/CUIL zvanično registrovan i aktivan, trebali biste koristiti zvaničnu veb stranicu ili usluge AFIP (Administración Federal de Ingresos Públicos). Naš alat samo proverava matematičku validnost broja, a ne njegov zvanični status registracije.

Mogu li koristiti ovaj alat u svojoj komercijalnoj aplikaciji?

Da, možete integrisati algoritam i logiku prikazanu u ovom alatu u svoje komercijalne aplikacije. Algoritam validacije CUIT/CUIL je javni standard. Međutim, za produkcijska okruženja preporučujemo implementaciju odgovarajuće obrade grešaka i razmatranje dodatne validacije protiv zvaničnih izvora kada je to potrebno.

Da li alat čuva bilo koji od generisanih ili validiranih CUIT/CUIL brojeva?

Ne, ovaj alat ne čuva nijednu od informacija koje su unete ili generisane. Sva obrada se vrši na klijentskoj strani u vašem pretraživaču, a nijedan podatak se ne šalje ili ne čuva na našim serverima. Ovo osigurava privatnost i sigurnost bilo kojih informacija koje unesete.

Reference

  1. AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." Zvanična veb stranica. https://www.afip.gob.ar/

  2. Ministarstvo rada, zapošljavanja i socijalne sigurnosti. "CUIL - Clave Única de Identificación Laboral." https://www.argentina.gob.ar/trabajo

  3. ANSES (Administración Nacional de la Seguridad Social). "Dobijanje mog CUIL-a." https://www.anses.gob.ar/

  4. Službeni bilten Republike Argentine. "Rezolucija General AFIP 2854/2010: Procedura. Clave Única de Identificación Tributaria (C.U.I.T.)."

  5. Poreski zakon Republike Argentine. "Identifikacija i registracija poreskih obveznika."


Spremni za generisanje ili validaciju argentinskih CUIT/CUIL brojeva? Isprobajte naš alat sada i pojednostavite svoj proces testiranja!