Capitulo 2: GTIN — Global Trade Item Number

Por: Artiko
gs1gtincodigo-de-barrasdigito-de-controlmodulo-10ean-13

Que es el GTIN

El GTIN (Global Trade Item Number) es el identificador unico global de productos. Es el numero que ves debajo de cualquier codigo de barras en un supermercado. Cada producto distinto (diferente tamano, sabor, presentacion) tiene su propio GTIN.

No es un numero aleatorio: tiene una estructura definida que incluye quien es el fabricante, cual es el producto y un digito de verificacion.

Tipos de GTIN

TipoDigitosNombre anteriorUso tipico
GTIN-88EAN-8Productos muy pequenos (chicles, lapices)
GTIN-1212UPC-AMercado norteamericano
GTIN-1313EAN-13Estandar mundial para productos de consumo
GTIN-1414ITF-14, DUN-14Unidades logisticas (cajas, bultos)

Todos los GTINs pueden normalizarse a 14 digitos rellenando con ceros a la izquierda. Un GTIN-13 9521234543213 se convierte en GTIN-14 como 09521234543213.

Estructura del GTIN-13

┌─────────────────────┬──────────────────┬─────────────┐
│ Prefijo empresa GS1 │ Ref. de producto │ Digito ctrl │
│    7-10 digitos      │   2-5 digitos    │   1 digito  │
└─────────────────────┴──────────────────┴─────────────┘

Ejemplos de prefijos por pais:

PrefijoOrganizacion
750GS1 Mexico
779GS1 Argentina
840-849GS1 Espana
00-13GS1 USA

Calculo del digito de control (Modulo-10)

El algoritmo es el mismo para todos los tipos de GTIN. Vamos a calcularlo paso a paso para el GTIN-13 952123454321? donde ? es el digito que queremos encontrar.

Paso 1: Tomar los primeros 12 digitos

Posicion:  1   2   3   4   5   6   7   8   9  10  11  12
Digito:    9   5   2   1   2   3   4   5   4   3   2   1

Paso 2: Asignar pesos alternando x1 y x3 desde la izquierda

Posicion:  1   2   3   4   5   6   7   8   9  10  11  12
Digito:    9   5   2   1   2   3   4   5   4   3   2   1
Peso:      1   3   1   3   1   3   1   3   1   3   1   3

Paso 3: Multiplicar cada digito por su peso

9x1  5x3  2x1  1x3  2x1  3x3  4x1  5x3  4x1  3x3  2x1  1x3
 9   15    2    3    2    9    4   15    4    9    2    3

Paso 4: Sumar todos los resultados

9 + 15 + 2 + 3 + 2 + 9 + 4 + 15 + 4 + 9 + 2 + 3 = 77

Paso 5: Calcular el digito de control

Siguiente multiplo de 10: 80
Digito de control = 80 - 77 = 3

GTIN-13 completo: 9521234543213

GTIN-14 para items logisticos

El GTIN-14 se forma agregando un indicador de empaque (1 digito) al inicio de un GTIN-13 (sin su digito de control original) y recalculando el digito de control.

IndicadorSignificado
0Unidad de consumo (equivale al GTIN-13)
1-8Diferentes niveles de empaque (caja de 6, caja de 12, pallet…)
9Cantidad variable (peso, longitud)

Ejemplo: si el GTIN-13 de una botella es 9521234543213, una caja de 12 botellas podria ser:

Indicador: 1
GTIN-14:   1 952123454321 [nuevo digito de control]

Codigo: calcular el digito de control

function calcularDigitoControl(digits: string): number {
  const nums = digits.split('').map(Number);
  const targetLength = nums.length + 1; // longitud final con digito de control

  const sum = nums.reduce((acc, digit, i) => {
    // Para GTIN, las posiciones pares (desde la derecha) llevan peso 1
    // las impares llevan peso 3
    const weight = (targetLength - i) % 2 === 0 ? 1 : 3;
    return acc + digit * weight;
  }, 0);

  return (10 - (sum % 10)) % 10;
}

// Ejemplos de uso
console.log(calcularDigitoControl('952123454321'));  // 3  (GTIN-13)
console.log(calcularDigitoControl('0952123454321')); // 0  (GTIN-14)
console.log(calcularDigitoControl('401234567890'));   // 3  (GTIN-13)

Validar un GTIN completo

function validarGTIN(gtin: string): boolean {
  if (!/^\d+$/.test(gtin)) return false;
  if (![8, 12, 13, 14].includes(gtin.length)) return false;

  const sinControl = gtin.slice(0, -1);
  const controlEsperado = calcularDigitoControl(sinControl);
  const controlActual = Number(gtin.at(-1));

  return controlEsperado === controlActual;
}

console.log(validarGTIN('9521234543213')); // true
console.log(validarGTIN('9521234543210')); // false

El GTIN identifica que es un producto. En el proximo capitulo veremos como identificar donde estan las cosas (GLN) y como se mueven (SSCC).