Portada EAN 13

Generar el dígito de control para un código EAN con php

Hoy en día casi cualquier producto viene provisto de un código de barras que lo identifica de forma inequívoca. Existen distintos formatos como por ejemplo el código EAN 13, ISBN, ISSN, GTIN, UPC-E, código 39, código 128, etc…

A continuación voy a tratar de explicar brevemente que es un código EAN y como generar un dígito de control valido.

Por desgracia, debemos tener en cuenta que el número que vamos a generar solo sera válido a nivel interno, para conseguir un código EAN-13 válido para comercializar nuestros productos, es necesario ponerse en contacto con alguna empresa autorizada a distribuir estos números.

¿Que es un código EAN 13?

El EAN 13 (European Article Number) es un estándar internacional, creado en Europa y  adoptado por más de 100 países, esta formado por 13 cifras, aunque existe una versión corta EAN 8 que se utiliza cuando el espacio disponible para la impresión es pequeño. Este sistema númerico se usa para identificar productos por medio del código de barras.

Código EAN

  1. Posiciones correspondientes al país que otorga el código, no al país de origen del producto (ej. 84 para España).
  2. Estas posiciones corresponden al código de la empresa.
  3. Dígitos que pueden ser administrados por el fabricante e identifican al producto.
  4. La decimotercera posición es el dígito de control y se calcula mediante un algoritmo matemático. Este dígito elimina cualquier posibilidad de error en la lectura del código.

Cálculo del dígito de control

Supongamos que estamos utilizando el código ficticio de 054321223455

  1. Sumar todos los dígitos en las posiciones impares multiplicados por 3, empezando de derecha a izquierda.
    5*3 + 4*3 + 2*3 + 1*3 + 3*3 + 5*3 = 60
  2. Sumar todos los dígitos en las posiciones pares, empezando de derecha a izquierda.
    5 + 3 + 2 + 2 + 4 + 0 = 16
  3. Sumar los resultados de los pasos 1 y 2.
    60 + 16 = 76
  4. Determinar qué número hay que añadir al resultado de la etapa 4 para crear un múltiplo de 10.
    76 + 4 = 80

Otra forma es dividir 76/10, el resto que es 6 se lo restamos a 10, 10 – 6 = 4
Por lo tanto, el dígito de control es 4.

A continuación vamos a ver el algoritmo en php para cálcular el dígito de control.

function controlDigit($ean){
  $par=0;
  $impar=0;
  $first=1;

  // Empezamos por el final
  for ($i=strlen($ean)-1; $i>=0; $i--){
    if($first%2 == 0){
      $par += $ean[$i];
    }else{
      $impar += $ean[$i]*3;
    }
    $first++;
  }
  $control = ($par+$impar)%10;
  if($control > 0){$control = 10 - $control;}
  return $control;
}

Para terminar quiero aclarar que existen más algoritmos para calcular el dígito de control, pero creo que este es sencillo de entender y por supuesto, funciona a la perfección.

Comentarios y opiniones

Puede que tarde en responder, se paciente.

*
*