Marketing Digital: SEO – El Algoritmo de Google
11/03/2012SQL – Duplicar estructura y datos de una tabla
22/03/2012Os dejo aquí por si lo necesitais una función para calcular el dígito de control de un código de barras GTIN13 o GTIN14 (antiguos EAN13).
Recuerdo que para formar el código previo, se forma mediante:
- CODIGO DE PAIS
- CODIGO DE PROVEEDOR
- CODIGO DE ARTÍCULO O ITEM
Cuando formais el código completo y debeis añadir el dígito de control, ejecutais la siguiente función.
nota: recuerdo que el código de proveedor lo tiene que asignar la entidad que coordine la codificación estandarizada, en españa es AECOC.
C#:
-
span style="color: #808080;">"DEBE INTRODUCIR 13 DÍGITOS"// Calculate the checksum digit here.
-
// even: para números pares se multiplica por 1
-
// odd: para números impares se multiplica por el factor
-
//this.ChecksumDigit = iCheckSum.ToString();
-
1 Comment
No entiendo tanta complicación. A continuación dejo un codigo en pascal (p
function DigitoControl(ean : string) : string;
var
i : integer;
suma : integer;
begin
suma := 0;
for i := 1 to 6 do
suma := suma + 3 * StrToInt(ean[2*i]) + StrToInt(ean[2*i – 1]);
DigitoControl := IntToStr( (1000 – suma) mod 10 );
end;
La suma puede hacerse con un solo bucle de 1 a 6. Los pares están en la posicion 2*i y los impares en la posicion 2*i-1. Una vez tenemos esta suma basta con restarle a la decena siguiente el valor de la suma obtenido. Ej: Suma=23, DecenaSiguiente=30, DigitoControl=30-23=7….. Pero para no tener que calcular la decena siguiente ponemos un número lo suficientemente grande como 1000 así que DigitoControl=1000-23=977 pero solo nos interesa el ultimo valor así que hacemos modulo 10 y nos quedamos con el 7. Espero que le sirva a alguien, ya que he visto por ahí códigos muy pero que muy enrevesados para esta simple tarea.
Saludos.