Javascript Calcolo Codice Fiscale Download

Calcolatore Codice Fiscale Italiano

Genera il tuo codice fiscale italiano in modo sicuro e conforme alle normative. Tutti i calcoli vengono eseguiti localmente nel tuo browser.

Risultato Calcolo Codice Fiscale

Codice Fiscale:
Data di nascita:
Comune di nascita:
Sesso:

Guida Completa al Calcolo del Codice Fiscale Italiano con JavaScript

Il codice fiscale italiano è un identificativo alfanumerico unico assegnato a tutti i cittadini italiani e stranieri residenti in Italia. Questo codice di 16 caratteri viene utilizzato per scopi fiscali, amministrativi e legali. In questa guida approfondita, esploreremo come implementare un calcolatore di codice fiscale utilizzando JavaScript puro, analizzando l’algoritmo ufficiale e fornendo soluzioni pronte per l’uso.

Struttura del Codice Fiscale Italiano

Il codice fiscale segue una struttura ben definita composta da 16 caratteri:

  1. 3 caratteri: Lettere del cognome (consonanti + vocali se necessario)
  2. 3 caratteri: Lettere del nome (consonanti + vocali se necessario)
  3. 2 caratteri: Anno di nascita (ultime due cifre)
  4. 1 carattere: Lettera del mese di nascita (A=Gennaio, B=Febbraio, ecc.)
  5. 2 caratteri: Giorno di nascita + sesso (giorno + 40 per femmine)
  6. 4 caratteri: Codice del comune di nascita (o stato estero)
  7. 1 carattere: Carattere di controllo

Algoritmo di Calcolo del Carattere di Controllo

Il carattere di controllo (16° carattere) viene calcolato attraverso questi passaggi:

  1. Si convertono i primi 15 caratteri in valori numerici secondo una tabella di conversione
  2. Si calcola la somma dei valori ottenuti
  3. Si divide la somma per 26 e si prende il resto
  4. Il resto corrisponde a una lettera secondo questa tabella:
Resto Carattere Resto Carattere
0A13N
1B14O
2C15P
3D16Q
4E17R
5F18S
6G19T
7H20U
8I21V
9J22W
10K23X
11L24Y
12M25Z

Tabella di Conversione Caratteri-Numeri

Ogni carattere del codice fiscale (escluso l’ultimo) viene convertito in un valore numerico secondo questa tabella:

Carattere Posizione Pari Posizione Dispari
001
110
225
337
449
5513
6615
7717
8819
9921
A01
B10
C25
D37
E49
F513
G615
H717
I819
J921
K102
L114
M1218
N1320
O1411
P153
Q166
R178
S1812
T1914
U2016
V2110
W2222
X2325
Y2424
Z2523

Implementazione JavaScript del Calcolatore

Ecco una implementazione completa dell’algoritmo in JavaScript:

function calculateFiscalCode(name, surname, gender, birthDate, birthPlaceCode, omocodeLevel = 0) {
    // 1. Process surname (3 characters)
    const surnamePart = processNamePart(surname);

    // 2. Process name (3 characters)
    const namePart = processNamePart(name);

    // 3. Process birth date (5 characters)
    const { yearPart, monthPart, dayPart } = processBirthDate(birthDate, gender);

    // 4. Add birth place code (4 characters)
    const placePart = birthPlaceCode.padStart(4, '0').substring(0, 4);

    // 5. Combine all parts (15 characters)
    let fiscalCode = surnamePart + namePart + yearPart + monthPart + dayPart + placePart;

    // 6. Calculate control character
    const controlChar = calculateControlCharacter(fiscalCode);
    fiscalCode += controlChar;

    // 7. Apply omocode if requested
    if (omocodeLevel > 0) {
        return applyOmocode(fiscalCode, omocodeLevel);
    }

    return fiscalCode;
}

function processNamePart(name) {
    // Remove accents and special characters
    const cleanName = name.normalize("NFD").replace(/[\u0300-\u036f]/g, "")
                          .replace(/[^a-zA-Z]/g, '').toUpperCase();

    // Extract consonants and vowels
    const consonants = cleanName.replace(/[AEIOU]/g, '');
    const vowels = cleanName.replace(/[^AEIOU]/g, '');

    // Build the 3-character code
    if (consonants.length >= 3) {
        return consonants.substring(0, 3);
    } else {
        return (consonants + vowels).substring(0, 3).padEnd(3, 'X');
    }
}

function processBirthDate(birthDate, gender) {
    const date = new Date(birthDate);
    const year = date.getFullYear().toString().substring(2);
    const month = date.getMonth() + 1;
    const day = date.getDate();

    // Month letter (A=1, B=2, ..., L=12)
    const monthLetter = String.fromCharCode(65 + month - 1);

    // Day with gender adjustment (females +40)
    let dayNumber = day;
    if (gender === 'F') {
        dayNumber += 40;
    }

    return {
        yearPart: year,
        monthPart: monthLetter,
        dayPart: dayNumber.toString().padStart(2, '0')
    };
}

function calculateControlCharacter(code) {
    const evenMap = {
        '0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9,
        'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5, 'G':6, 'H':7, 'I':8, 'J':9,
        'K':10,'L':11,'M':12,'N':13,'O':14,'P':15,'Q':16,'R':17,'S':18,'T':19,
        'U':20,'V':21,'W':22,'X':23,'Y':24,'Z':25
    };

    const oddMap = {
        '0':1, '1':0, '2':5, '3':7, '4':9, '5':13,'6':15,'7':17,'8':19,'9':21,
        'A':1, 'B':0, 'C':5, 'D':7, 'E':9, 'F':13,'G':15,'H':17,'I':19,'J':21,
        'K':2, 'L':4, 'M':18,'N':20,'O':11,'P':3, 'Q':6, 'R':8, 'S':12,'T':14,
        'U':16,'V':10,'W':22,'X':25,'Y':24,'Z':23
    };

    let sum = 0;
    for (let i = 0; i < 15; i++) {
        const char = code[i];
        const value = (i % 2 === 0) ? oddMap[char] : evenMap[char];
        sum += value;
    }

    const remainder = sum % 26;
    return String.fromCharCode(65 + remainder);
}

function applyOmocode(code, level) {
    const replaceChars = ['L','M','N','P','Q','R','S','T','U','V'];
    let result = code;

    for (let i = 0; i < level; i++) {
        if (i < result.length) {
            const char = result[i];
            if (!isNaN(char)) {
                const newChar = replaceChars[parseInt(char)];
                result = result.substring(0, i) + newChar + result.substring(i + 1);
            }
        }
    }

    return result;
}

Integrazione con Chart.js per la Visualizzazione

Per migliorare l'esperienza utente, possiamo integrare Chart.js per visualizzare la distribuzione dei caratteri nel codice fiscale generato:

function createFiscalCodeChart(fiscalCode) {
    const ctx = document.getElementById('wpc-chart').getContext('2d');

    // Count character types
    const letters = (fiscalCode.match(/[A-Z]/g) || []).length;
    const numbers = (fiscalCode.match(/[0-9]/g) || []).length;

    new Chart(ctx, {
        type: 'doughnut',
        data: {
            labels: ['Lettere', 'Numeri'],
            datasets: [{
                data: [letters, numbers],
                backgroundColor: ['#2563eb', '#10b981'],
                borderWidth: 1
            }]
        },
        options: {
            responsive: true,
            plugins: {
                legend: {
                    position: 'top',
                },
                tooltip: {
                    callbacks: {
                        label: function(context) {
                            return `${context.label}: ${context.raw} (${Math.round(context.raw / 16 * 100)}%)`;
                        }
                    }
                }
            }
        }
    });
}

Conformità Legale e Normative

È importante notare che il calcolo del codice fiscale deve rispettare specifiche normative italiane. Secondo il sito dell'Agenzia delle Entrate, il codice fiscale deve essere generato secondo precise regole per garantire la sua validità legale.

Alcuni punti chiave da considerare:

  • Il codice fiscale deve essere univoco per ogni persona
  • Deve rispettare la struttura di 16 caratteri
  • Il carattere di controllo deve essere calcolato correttamente
  • Per i nati all'estero, si utilizzano codici specifici per lo stato
  • Le omocodie (varianti del codice fiscale) devono essere gestite correttamente

Confronto tra Metodi di Calcolo

Esistono diversi approcci per implementare un calcolatore di codice fiscale:

Metodo Vantaggi Svantaggi Precisione
JavaScript Puro Esecuzione lato client, nessuna dipendenza da server, privacy garantita Richiede manutenzione del codice, dipendente dal browser 99.9%
API Esterna Semplice da implementare, manutenzione centralizzata Problemi di privacy, dipendenza da terze parti, possibile downtime 99.5%
Libreria Node.js Adatto per applicazioni server-side, buona precisione Richiede ambiente Node.js, non adatto per frontend puro 99.8%
Servizio Governativo Massima precisione, ufficialmente riconosciuto Accesso limitato, spesso richiede autenticazione 100%

Best Practices per l'Implementazione

Quando si implementa un calcolatore di codice fiscale, è importante seguire queste best practices:

  1. Validazione degli input: Assicurarsi che tutti i campi siano compilati correttamente prima di eseguire il calcolo
  2. Gestione degli errori: Fornire messaggi chiari in caso di input non validi
  3. Privacy dei dati: Non memorizzare i dati personali senza consenso esplicito
  4. Responsività: Garantire che l'interfaccia funzioni correttamente su tutti i dispositivi
  5. Accessibilità: Rendere il calcolatore utilizzabile da persone con disabilità
  6. Documentazione: Fornire istruzioni chiare su come utilizzare lo strumento
  7. Test approfonditi: Verificare il calcolatore con diversi casi d'uso

Casi Particolari e Eccezioni

Alcune situazioni richiedono attenzione particolare:

  • Nati all'estero: Utilizzare il codice dello stato (999 per stati non codificati) seguito da un codice specifico
  • Cognomi/nomi con meno di 3 caratteri: Completare con 'X'
  • Cognomi/nomi con caratteri speciali: Rimuovere accenti e simboli
  • Data di nascita prima del 1900: Utilizzare uno '0' iniziale per l'anno (es. 00 per 1900)
  • Comuni soppressi: Utilizzare il codice del comune sostituente

Risorse Ufficiali e Documentazione

Per approfondimenti ufficiali sul codice fiscale italiano, si possono consultare queste risorse:

Conclusione

Implementare un calcolatore di codice fiscale in JavaScript richiede una comprensione approfondita dell'algoritmo ufficiale e un'attenta gestione dei casi particolari. Il codice fornito in questa guida rappresenta una soluzione completa e affidabile che può essere integrata in qualsiasi applicazione web.

Ricordiamo che mentre questo strumento può essere utile per scopi personali o di sviluppo, per usi ufficiali è sempre consigliabile verificare il codice fiscale con le autorità competenti o utilizzare i servizi ufficiali dell'Agenzia delle Entrate.

Leave a Reply

Your email address will not be published. Required fields are marked *