thumbnail|Número GTIN-13 codificado em código de barras EAN-13. O primeiro dígito é sempre colocado fora do símbolo; adicionalmente, um indicador ">" à direita é usado para indicar uma "Zona Silenciosa" que é necessária para os scanners de código de barras funcionarem corretamente. O código GS1 apresentado (590) é atribuído à Polónia. EAN-13 (sigla de European Article Number, ou Número de Artigo Europeu, em tradução literal) é um código de barras no padrão EAN definido pela GS1, adaptado em mais de cem organizações membros GS1, para a identificação dos código de barras UPC. Ele ajuda a identificar tipos específicos de produtos de varejo com base em sua embalagem e fabricante, facilitando o rastreamento e o gerenciamento de produtos no comércio internacional. Originalmente desenvolvido para simplificar a identificação de produtos em lojas, o sistema EAN foi integrado ao padrão mais amplo Global Trade Item Number (GTIN). Embora o GTIN possa ser expresso com qualquer formato de código de barras, o formato de código de barras EAN permanece o mais amplamente reconhecido usado no controle de estoque, transações de atacado e processos de contabilidade. A versão mais amplamente usada é o EAN-13, uma extensão do anterior código de 12 dígitos Universal Product Code (UPC-A) com um prefixo numérico opcional indicando o país de registro. Em casos onde o espaço na embalagem é limitado, o formato mais curto EAN-8 é usado. Para anexar informações suplementares, como números de edição de publicações periódicas e preços de itens alimentícios, também são usados EAN-2 e EAN-5.
Composição O número EAN-13 de 13 dígitos consiste em quatro componentes: Prefixo GS1 – 3 dígitos Código do fabricante – comprimento variável Código do produto – comprimento variável Dígito verificador
Prefixo GS1
Os primeiros três dígitos do EAN-13 (Prefixo GS1) geralmente identificam a Organização Membro GS1 à qual o fabricante se juntou (não necessariamente onde o produto é realmente fabricado).. Note que códigos EAN-13 começando com 0 são na verdade códigos UPC de 12 dígitos com um dígito 0 prependido. Nos últimos anos, mais produtos vendidos por varejistas fora dos Estados Unidos e Canadá têm usado códigos EAN-13 começando com 0, pois foram gerados pela GS1-US. Os prefixos GS1 020-029 merecem uma menção especial. A GS1 define isso como disponível para uso interno do varejista (ou uso interno por outros tipos de negócios). Alguns varejistas usam isso para produtos proprietórios (marca própria ou sem marca), embora muitos varejistas obtenham seu próprio código de fabricante para suas próprias marcas. Outros varejistas usam pelo menos parte desse prefixo para produtos embalados na loja, por exemplo, itens pesados e servidos no balcão para um cliente. Nesses casos, o código de barras pode codificar um preço, quantidade ou peso junto com um identificador de produto – de uma maneira definida pelo varejista. O identificador de produto pode ser um atribuído pelo Produce Electronic Identification Board (PEIB) ou pode ser atribuído pelo varejista. Varejistas que historicamente usaram códigos de barras UPC tendem a usar prefixos GS1 começando com "02" para produtos embalados na loja. O "código de país" EAN 978 (e posteriormente 979) foi alocado desde os anos 1980 para reservar um prefixo de Código de País Único (UCC) para identificadores EAN de livros publicados, independentemente do país de origem, para que o espaço EAN possa catalogar livros por ISBNs em vez de manter um sistema de numeração paralelo redundante. Isso é informalmente conhecido como "Bookland". O prefixo 979 com o primeiro dígito 0 é usado para Número Internacional Padrão de Música (ISMN) e o prefixo 977 indica Número Internacional Padrão de Série (ISSN).
Código do fabricante O código do fabricante é um código único atribuído a cada fabricante pela autoridade de numeração indicada pelo Prefixo GS1. Todos os produtos produzidos por uma determinada empresa usarão o mesmo código do fabricante. O EAN-13 usa o que são chamados "códigos de fabricante de comprimento variável". Atribuir códigos de fabricante de comprimento fixo de 5 dígitos, como o UCC fez até recentemente, significa que cada fabricante pode ter até 99.999 códigos de produto.(9.999 para prefixos GS1 de 3 dígitos) Muitos fabricantes não têm tantos produtos, o que significa que centenas ou até milhares de códigos de produto potenciais estão sendo desperdiçados em fabricantes que têm apenas alguns produtos. Assim, se um fabricante potencial souber que vai produzir apenas alguns produtos, o EAN-13 pode emitir a ele um código de fabricante mais longo, deixando menos espaço para o código do produto. Isso resulta em um uso mais eficiente dos códigos de fabricante e produto disponíveis. No ISBN e ISSN, este componente é usado para identificar o idioma em que a publicação foi emitida e gerenciada por uma agência transnacional cobrindo vários países, ou para identificar o país onde os depósitos legais são feitos por um editor registrado com uma agência nacional, e é subdividido ainda mais em subblocos alocados para editores; muitos países têm vários prefixos alocados nos registros ISSN e ISBN.
Código do produto O código do produto é atribuído pelo fabricante. O código do produto segue imediatamente o código do fabricante. O comprimento total do código do fabricante mais o código do produto deve ser 9 ou 10 dígitos, dependendo do comprimento do código do país (2–3 dígitos). No ISBN, ISMN e ISSN, ele identifica unicamente a publicação do mesmo editor; deve ser usado e alocado pelo editor registrado para evitar criar lacunas; no entanto, acontece que um livro ou serial registrado nunca é publicado e vendido.
Dígito verificador O dígito verificador é um dígito adicional usado para verificar se um código de barras foi escaneado corretamente. Ele é calculado módulo 10, onde os pesos no cálculo da soma de verificação alternam 3 e 1. Em particular, como os pesos são relativamente primos a 10, o sistema EAN-13 detectará todos os erros de dígito único. Ele também reconhece 90% dos erros de transposição (todos os casos onde a diferença entre dígitos adjacentes não é 5).
Cálculo do dígito de soma de verificação A soma de verificação é calculada como soma de produtos – tomando um valor de peso alternado (3 ou 1) vezes o valor de cada dígito de dados. O dígito de soma de verificação é o dígito que deve ser adicionado a essa soma de verificação para obter um número divisível por 10 (ou seja, o inverso aditivo da soma de verificação, módulo 10). Veja cálculo do dígito verificador ISBN-13 para uma descrição e algoritmo mais extensos. O Número de Localização Global (GLN) também usa o mesmo método.
Posição – peso O peso em uma posição específica no código EAN alterna (3 ou 1) de forma que o dígito de dados final tenha um peso de 3 (e assim o dígito verificador tenha um peso de 1). Todos os Número Global de Item Comercial (GTIN) e Código de Contêiner de Envio Serial (SSCC) códigos atendem à próxima regra: Numerando as posições da direita (código alinhado à direita), os dígitos de dados ímpares sempre têm peso 3 e os dígitos de dados pares sempre têm peso 1, independentemente do comprimento do código. Pesos para código SSCC de 18 dígitos e GTINs (GTIN-8, GTIN-12, GTIN-13, GTIN-14): posição 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 peso 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 Pesos para código EAN-13: posição 12 11 10 9 8 7 6 5 4 3 2 1 peso 1 3 1 3 1 3 1 3 1 3 1 3 Pesos para código EAN-8: posição 7 6 5 4 3 2 1 peso 3 1 3 1 3 1 3
Exemplos de cálculo Para código de barras EAN-13 400638133393x, onde x é o dígito verificador desconhecido, (Stabilo Point 88 Art. No. 88/57), o cálculo do dígito verificador é: {|class="wikitable" style="text-align: center" ! posição | 12 || 11 || 10 || 9 || 8 || 7 || 6 || 5 || 4 || 3 || 2 || 1 |- ! primeiros 12 dígitos do código de barras | 4 || 0 || 0 || 6 || 3 || 8 || 1 || 3 || 3 || 3 || 9 || 3 |- ! peso | 1 || 3 || 1 || 3 || 1 || 3 || 1 || 3 || 1 || 3 || 1 || 3 |- ! soma parcial | 4 || 0 || 0 || 18 || 3 || 24 || 1 || 9 || 3 || 9 || 9 || 9 |- ! soma de verificação | || || || || || || || || || || || 89 |} O múltiplo de 10 mais próximo que é igual ou superior à soma de verificação é 90. Subtraia-os: 90 - 89 = 1, que é o dígito verificador x do código de barras. Para código de barras EAN-8 7351353x, onde x é o dígito verificador desconhecido, o cálculo do dígito verificador é: {|class="wikitable" style="text-align:center" |- ! posição | 7 || 6 || 5 || 4 || 3 || 2 || 1 |- ! primeiros 7 dígitos do código de barras | 7 || 3 || 5 || 1 || 3 || 5 || 3 |- ! peso | 3 || 1 || 3 || 1 || 3 || 1 || 3 |- ! soma parcial | 21 || 3 || 15 || 1 || 9 || 5 || 9 |- ! soma de verificação | || || || || || || 63 |} O múltiplo de 10 mais próximo que é igual ou superior à soma de verificação é 70. Subtraia-os: 70 - 63 = 7, que é o dígito verificador x'' do código de barras.
Cálculo do dígito verificador EAN 13
Tomando como base o EAN 13 de número: 789100031550-? Multiplicam-se os dígitos do código por 1 e por 3, em sequência repetitiva de 1 e 3; 7 * 1 = 7 8 * 3 = 24 9 * 1 = 9 1 * 3 = 3 0 * 1 = 0 0 * 3 = 0 0 * 1 = 0 3 * 3 = 9 1 * 1 = 1 5 * 3 = 15 5 * 1 = 5 0 * 3 = 0 Somando o resultado das multiplicações encontra-se o total de 73. O valor total da soma das multiplicações deve ser dividido por 10: (73/10 = 7.3) Transforme o resultado em inteiro, "arredondando" o número para baixo. (7) Some 1 ao resultado da divisão: (7+1 = 8) Multiplique o resultado dessa soma por 10: (8*10 = 80) Subtraia desse resultado o valor da soma inicial das multiplicações "73": (80 - 73 = 7) Portanto, o digito verificador é 7. Dessa forma, o código completo é: 7891000315507. Se o resultado for um múltiplo de 10, o dígito verificador será 0. Resolução usando algoritmo matemático L = Split("789100031550","") 'Converte string em Array de Caracteres For i = 0 to L.Ubound RE = RE + L(i).Val * ((i MOD 2) * 2 + 1) ' soma todos multiplicando apenas os pares por 3 Next RE = ((1 - ((re / 10)-(re \ 10))) * 10) MOD 10 'Acha o múltiplo referido a cima 'neste caso RE será 7 Função PHP para calcular o Dígito Verificador no parâmetro EAN13 function IncluiDigito($ean) { $digitos = str_split($ean); $soma = 0; foreach ($digitos as $i => $digito) { if (($i % 2) === 0) { $soma += $digito * 1; } else { $soma += $digito * 3;
$resultado = floor($soma / 10) + 1; $resultado *= 10; $resultado -= $soma; if (($resultado % 10) === 0) { $ean = $ean. '0'; } else { $ean = $ean. $resultado;
return $ean; } echo IncluiDigito(789100031550); Função PHP para Verificar o EAN13 function validateEAN13Barcode($barcode) { try { if ((!preg_match("/^[0-9]{13}$/", $barcode)) || (strlen($barcode) < 13)) { throw new Exception('O código EAN13 mencionado não possui 13 caracteres numéricos');
$digits = str_split($barcode); $result = 0; for($i = 0; $i < 12; $i++) { $result += (($i == 0) || (($i % 2) == 0)) ? $digits[$i]: ($digits[$i] * 3);
if ($checkDigit == $digits) { return ['status' => true, 'message' => 'O código informado é um EAN13 válido']; } else { throw new Exception('O digito verificador não confere com o mencionado');
} catch(Exception $e) { return ['status' => false, 'message' => $e->getMessage()];
Função em PLpgSQL(PosgreSQL) que de acordo o valor informado gera o dígito verificador e retorna o código válido com os 13 dígitos: create or replace function fn_get_codbarras_ean13(p_c_codbarras varchar(12)) returns varchar(13) as $$ declare v_soma integer; v_digitos smallint; v_DV smallint; begin --Verifica a quantidade de dígitos informados no parâmetro da função if length(p_codbarras) > 12 then raise exception 'O valor informado no parâmetro possui mais do que 12 dígitos'; end if; --Formata o valor do parâmetro com zeros à esquerda e o converte em um array v_digitos:= string_to_array(lpad(p_codbarras,12,'0'), null); --É somado cada elemento do array, caso ele esteja num índice par o valor será