I codici a barre EAN (European Article Number) sono standard internazionali utilizzati per identificare in modo univoco i prodotti. Le versioni più comuni sono:
- EAN-13: composto da 12 cifre + 1 cifra di controllo
- EAN-8: composto da 7 cifre + 1 cifra di controllo
Breve storia dei codici EAN
Il sistema EAN nasce negli anni ’70 come estensione del codice UPC (Universal Product Code) sviluppato negli Stati Uniti. L’obiettivo era creare uno standard compatibile a livello internazionale per la codifica dei prodotti.
- EAN-13 fu introdotto nel 1977 per permettere una codifica più ampia rispetto al formato UPC a 12 cifre.
- EAN-8 fu introdotto successivamente per prodotti di piccole dimensioni, dove lo spazio per la stampa del codice a barre è limitato.
Oggi entrambi i formati sono gestiti da GS1, l’organizzazione globale che assegna i prefissi e garantisce l’unicità dei codici.
Struttura del codice EAN-13
Un codice EAN-13 è composto da:
- Prefisso GS1 (3 cifre): identifica il paese o l’organizzazione
- Codice azienda (variabile): assegnato dal GS1 locale
- Codice prodotto (variabile): scelto dall’azienda
- Cifra di controllo: calcolata automaticamente
Esempio: 800123456789X Dove X è la cifra di controllo calcolata.
Calcolo della cifra di controllo (EAN-13)
Si usa un algoritmo di modulo 10:
- Somma delle cifre in posizione dispari (escluse la cifra di controllo)
- Somma delle cifre in posizione pari, moltiplicata per 3
- Somma totale = somma dispari + (somma pari × 3)
- La cifra di controllo è il numero che, sommato alla somma totale, dà un multiplo di 10
int CalcolaEAN13CheckDigit(const std::string& codice12) {
int somma = 0;
for (int i = 0; i < 12; ++i) {
int cifra = codice12[i] - '0';
somma += (i % 2 == 0) ? cifra : cifra * 3;
}
int modulo = somma % 10;
return (modulo == 0) ? 0 : 10 - modulo;
}
Struttura del codice EAN-8
Simile all’EAN-13, ma più compatto:
- Codice prodotto (7 cifre)
- Cifra di controllo (1 cifra)
Il calcolo della cifra di controllo segue lo stesso principio del modulo 10.
Confronto visivo tra EAN-13 ed EAN-8
| Caratteristica | EAN-13 | EAN-8 |
|---|---|---|
| Lunghezza totale | 13 cifre | 8 cifre |
| Utilizzo | Prodotti di dimensioni normali | Prodotti molto piccoli |
| Codifica | Prefisso + azienda + prodotto | Solo codice prodotto |
| Cifra di controllo | Calcolata su 12 cifre | Calcolata su 7 cifre |
| Spazio richiesto | Maggiore | Minore |
| Compatibilità UPC | Sì (UPC-A è compatibile) | No |
Implementazione nei software RGPSoft
Nei software gestionali di RGPSoft, è stata realizzata una classe derivata da CStatic che disegna il codice a barre direttamente nel controllo. La funzione SetCodix() accetta 12 cifre per EAN-13 e 7 per EAN-8, calcola internamente la cifra di controllo e disegna il codice.

Questa soluzione è elegante perché:
- Astrae il calcolo della cifra di controllo
- Incapsula il rendering grafico
- Può essere facilmente adattata ad altri ambienti (SDK Win32, Linux, C#, PHP…)
Se interessa, si può realizzare un tutorial pratico per mostrare come disegnare le barre o trasformare la classe in un componente riutilizzabile.

