Contents
Estensione "Codici Italiani"
italian_codes è un'estensione per PostgreSQL contenente domini per validare codici fiscali italiani.
Usando l'estensione si possono correntemente validare Codice Fiscale sia per persone fisiche (16 caratteri) che giuridiche (11 caratteri) e Partita IVA.
L'estensione contiene solo tipi di dati e funzioni per validare i codici e non contiene algoritmi per generare i codici a partire dai dati personali: la pratica di generare da sé il Codice Fiscale è fondamentalmente sbagliata in quanto non tiene conto di omocodie (persone il cui Codice Fiscale combacerebbe), nel qual caso l'Agenzia delle Entrate provvede a fornire codici alternativi. L'unico Codice Fiscale valido è quello fornito dall'Agenzia delle Entrate, e qualunque programma cerchi di calcolarlo, o peggio cerchi di obbligare l'utilizzo della versione calcolata, non ha un comportamento corretto.
Tutti i messaggi di errore generati dalle funzioni di validazione sono in lingua italiana.
Domini
I domini sono basati sul tipo di dato text e verificano che solo codici validi vengano memorizzati. I domini forniti sono:
- codice_fiscale: un Codice Fiscale italiano valido, sia di 16 che di 11 caratteri;
- partita_iva: una Partita IVA italiana valida.
Funzioni
Le funzioni disponibili sono:
- codice_fiscale(s text) -> codice_fiscale
Normalizza la stringa di input s e la restituisce convertita nel dominio di un Codice Fiscale. Se la stringa non è un Codice Fiscale valido, solleva un'eccezione di tipo violation_check.
Esempio:
=# select codice_fiscale('mss trs 53b19 h892p'::text); MSSTRS53B19H892P
Si noti che la funzione non si comporta come atteso su un letterale stringa, in quanto il parser preferisce interpretare l'espressione codice_fiscale('X') come il letterale 'X'::codice_fiscale, saltando la fase di normalizzazione. Se l'argomento della funzione è un'espressione, quale il nome di un campo o un letterale tipizzato come nell'esempio, la funzione si comporta come atteso.
- codice_fiscale_normalize(s text) -> text
- Restituisce una versione normalizzata della stringa di input s. L'output normalizzato è in maiuscolo e tutti gli spazi sono eliminati. La funzione non effettua alcun controllo sul contenuto della stringa.
- codice_fiscale_error(s text) -> text
- Restituisce NULL se la stringa di input s contiene un Codice Fiscale valido, altrimenti restituisce una stringa con un messaggio di errore informativo. s dev'essere già normalizzata.
- partita_iva(s text) -> partita_iva
Normalizza la stringa di input s e la restituisce convertita nel dominio di una Partita IVA. Se la stringa non è una Partita IVA valida, solleva un'eccezione di tipo violation_check.
Esempio:
=# select partita_iva('0575346 048 3'::text); 05753460483
Si noti che la funzione non si comporta come atteso su un letterale stringa: vedi funzione codice_fiscale().
- partita_iva_normalize(s text) -> text
- Restituisce una versione normalizzata della stringa di input s. L'output ha tutti gli spazi eliminati. La funzione non effettua alcun controllo sul contenuto della stringa.
- partita_iva_error(s text) -> text
- Restituisce NULL se la stringa di input s contiene una Partita IVA valida, altrimenti restituisce una stringa con un messaggio di errore informativo. s dev'essere già normalizzata.