# EAN-13

EAN-13 (sigla de European Article Number) é 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. No EAN-13 o símbolo codifica treze números que estão divididos em quatro partes; dos treze dígitos, doze são dos dados referentes ao produto e um é o dígito verificador (Codificação EAN-13, 2007).

## Significado do código numérico do EAN-13

As quatro partes que compõem o código são:
* Origem do Código de Barras
* Empresa fabricante
* Produto por ela produzido
* Dígito verificador

### Origem do Código de Barras

Diferente do mito popular, os primeiros números do código EAN não indicam a origem de produto ou empresa detentora da marca, e sim, a filial da GS1 onde o código foi originado. Portanto, um produto fabricado na China, porém com empresa detentora de marca Alemã, importado para o Brasil pode ter início 789 (primeiros dígitos comuns em território nacional), se tais códigos forem adquiridos diretamente com a GS1 Brasil ou mesmo prefixo destinado a outros países. Isto não interfere na utilização do código, pois o padrão EAN é universal.
Para o país de origem do código estão destinados os 3 primeiros dígitos caso se trate de unidades de consumo (Unidades de Consumo, 2007) embora em situações especiais estes 3 primeiros dígitos sirvam para representar não o país onde o código foi gerado mas sim outro tipo de informação tal como os prefixos usados em: produtos de peso variável (Produtos de peso variável, 2007), produtos de quantidade variável (Produtos de quantidade variável, 2007), para uso in-store (In-Store, 2007), para livros e publicações periódicas (Livros e publicações periódicas, 2007), para coupons e meios de pagamento (Coupons e Meios de pagamento, 2007), entre outras aplicações.

### Empresa fabricante e produto por ela produzido

Seguindo o país de origem do código vêm os dígitos da empresa fabricante e do produto por ela produzido, no total a soma destes dois códigos resultará em 9 dígitos, sendo o número de dígitos de cada um deles dependente da necessidade de codificação de produtos de cada empresa (FAQ - O Uso e as Aplicações da Numeração EAN/UCC-13, 2004, p.4). Por exemplo, uma empresa que produz uma quantidade de produtos diferentes elevada terá necessariamente de ter um código de identificação de empresa fabricante com menos dígitos para poder reservar um número de dígitos maior para identificar o produto por ela produzido. Assim como uma empresa de menor porte ou especializada em certo tipo de produtos, logo com uma quantidade de produtos diferentes menor terá um código de identificação de empresa fabricante com mais dígitos reservando assim menos dígitos para a identificação do produto por ela produzido. O código de empresa fabricante pode assim ter 4, 5 ou 6 dígitos; enquanto que o código de produto por ela produzido pode ter 3, 4 ou 5 dígitos (Codificação EAN-13, 2007). Existem também empresas que vendem os códigos de barras EAN de forma individual. Neste caso, o sistema acima deve ser desconsiderado. A compra avulsa de um código EAN oficial, padrão GS1, não altera a funcionalidade do mesmo.

### Dígito verificador

É o último dígito no EAN-13 e é calculado com o auxílio de um algoritmo, é um mecanismo de autenticação para certificar a validade de um certo código numérico. Neste caso para verificar a validade dos primeiros 12 números do EAN-13.

## Cálculo do dígito verificador EAN 13

Tomando como base o EAN 13 de número: 789100031550-?
** Resolução usando algoritmo matemático
** Função PHP para calcular o Dígito Verificador no parâmetro EAN13
** Função PHP para Verificar o EAN13
* 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_codbarras varchar(12)) returns varchar(13) as $$ declare v_soma integer; v_digitos smallint[12]; 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á --multiplicado por 3 antes de ser somado. for i in 1..12 loop if mod(i,2) = 0 then v_soma := coalesce(v_soma, 0) + (v_digitos[i] * 3); else v_soma := coalesce(v_soma, 0) + v_digitos[i]; end if; end loop; --O resultado da subtração de 10 pela sobra da divisão da soma dos dígitos --por 10 é o dígito verificador v_DV = 10 - mod(v_soma, 10); if v_DV = 10 then v_DV := 0; end if; --É retornado o código de barras concatenado ao dígito verificador return array_to_string(v_digitos, '') || v_DV; end $$ language plpgsql volatile strict;
** Função em ORACLE(PL/SQL) para gerar o EAN13
** Função Microsoft SQL Server para gerar o EAN13

## Fórmula no Excel

A fórmula abaixo pode ser aplicada sem a necessidade de uso de macro, em qualquer versão do Excel. A fórmula foi validada no site da GS1 com resultado satisfatório. Insira um código com 12 dígitos em uma célula do Excel, formatando-a como texto e aplique a fórmula abaixo para calcular o dígito:
=SE(((ARREDONDAR.PARA.BAIXO((EXT.TEXTO(A2;1;1)+(EXT.TEXTO(A2;2;1)*3)+EXT.TEXTO(A2;3;1)+(EXT.TEXTO(A2;4;1)*3)+EXT.TEXTO(A2;5;1)+(EXT.TEXTO(A2;6;1)*3)+EXT.TEXTO(A2;7;1)+(EXT.TEXTO(A2;8;1)*3)+EXT.TEXTO(A2;9;1)+(EXT.TEXTO(A2;10;1)*3)+EXT.TEXTO(A2;11;1)+(EXT.TEXTO(A2;12;1)*3))/10;0)+1)*10)-(EXT.TEXTO(A2;1;1)+(EXT.TEXTO(A2;2;1)*3)+EXT.TEXTO(A2;3;1)+(EXT.TEXTO(A2;4;1)*3)+EXT.TEXTO(A2;5;1)+(EXT.TEXTO(A2;6;1)*3)+EXT.TEXTO(A2;7;1)+(EXT.TEXTO(A2;8;1)*3)+EXT.TEXTO(A2;9;1)+(EXT.TEXTO(A2;10;1)*3)+EXT.TEXTO(A2;11;1)+(EXT.TEXTO(A2;12;1)*3))=10;0;((ARREDONDAR.PARA.BAIXO((EXT.TEXTO(A2;1;1)+(EXT.TEXTO(A2;2;1)*3)+EXT.TEXTO(A2;3;1)+(EXT.TEXTO(A2;4;1)*3)+EXT.TEXTO(A2;5;1)+(EXT.TEXTO(A2;6;1)*3)+EXT.TEXTO(A2;7;1)+(EXT.TEXTO(A2;8;1)*3)+EXT.TEXTO(A2;9;1)+(EXT.TEXTO(A2;10;1)*3)+EXT.TEXTO(A2;11;1)+(EXT.TEXTO(A2;12;1)*3))/10;0)+1)*10)-(EXT.TEXTO(A2;1;1)+(EXT.TEXTO(A2;2;1)*3)+EXT.TEXTO(A2;3;1)+(EXT.TEXTO(A2;4;1)*3)+EXT.TEXTO(A2;5;1)+(EXT.TEXTO(A2;6;1)*3)+EXT.TEXTO(A2;7;1)+(EXT.TEXTO(A2;8;1)*3)+EXT.TEXTO(A2;9;1)+(EXT.TEXTO(A2;10;1)*3)+EXT.TEXTO(A2;11;1)+(EXT.TEXTO(A2;12;1)*3)))
Obs: A fórmula acima não deve ter quebras de linha e no exemplo, o código foi inserido na célula A2.

### Outra maneira

Como sugestão a uma maneira diferente no Excel para resolver o mesmo problema, abaixo outra fórmula utilizando técnica diferente do Excel. Ambas devem retornar o mesmo resultado, mas a fórmula abaixo é mais compacta:
=MOD(9 * SOMARPRODUTO(--EXT.TEXTO(TEXTO(A2; REPT("0"; 12)); LIN(INDIRETO("1:12")); 1);--EXT.TEXTO("131313131313"; LIN(INDIRETO("1:12")); 1)); 10)
Obs: A fórmula acima não deve ter quebras de linha e no exemplo, o código foi inserido na célula A2.

## Codificação $^[$

Na codificação do EAN-13, os dígitos são divididos em 3 grupos; o primeiro dígito, o primeiro grupo de 6 dígitos e o último grupo de 6 dígitos. O primeiro grupo de 6 dígitos está codificado através de um sistema onde cada dígito tem duas codificações possíveis, uma par e outra impar. O primeiro dígito está codificado através da selecção de um padrão de escolhas entre estas duas codificações para os seis dígitos seguintes, de acordo com a tabela abaixo (ao contrário dos outros dígitos, o primeiro dígito não está representado directamente por um padrão de barras). Todos os dígitos no último grupo de seis dígitos estão codificados através de uma combinação única de padrões que são os mesmos utilizados no UPC.
Estrutura do EAN-13 :
| 1º dígito | 1º grupo de 6 dígitos | Último grupo de 6 dígitos |
| 0 | LLLLLL | RRRRRR |
| 1 | LLGLGG | RRRRRR |
| 2 | LLGGLG | RRRRRR |
| 3 | LLGGGL | RRRRRR |
| 4 | LGLLGG | RRRRRR |
| 5 | LGGLLG | RRRRRR |
| 6 | LGGGLL | RRRRRR |
| 7 | LGLGLG | RRRRRR |
| 8 | LGLGGL | RRRRRR |
| 9 | LGGLGL | RRRRRR |
Codificação dos dígitos :
| Dígito | L-code | G-code | R-code |
| 0 | 0001101 | 0100111 | 1110010 |
| 1 | 0011001 | 0110011 | 1100110 |
| 2 | 0010011 | 0011011 | 1101100 |
| 3 | 0111101 | 0100001 | 1000010 |
| 4 | 0100011 | 0011101 | 1011100 |
| 5 | 0110001 | 0111001 | 1001110 |
| 6 | 0101111 | 0000101 | 1010000 |
| 7 | 0111011 | 0010001 | 1000100 |
| 8 | 0110111 | 0001001 | 1001000 |
| 9 | 0001011 | 0010111 | 1110100 |
Nota:As entradas na coluna R são complementares às respectivas entradas na coluna L. As entradas na coluna G são o equivalente ao inverso das entradas na coluna R.

## Especificações de aplicação
### Localização

Deve estar localizado na base natural do produto (FAQ - As regras de aplicação do código EAN-13, 2004, p.4) para existir um padrão no que concerne a leitura do código de barras facilitando o operador que manuseia o leitor. Existem outro tipo de especificações de localização para produtos que não tenham uma base natural óbvia.

### Posição

O símbolo pode estar posicionado na vertical ou horizontalmente na embalagem sendo a orientação do código numérico e do código de barras igual. Ou seja, ambos na vertical ou ambos na horizontal. Caso se trate de uma embalagem cilíndrica é preferível que estejam posicionados verticalmente para uma melhor leitura do código.

### Zona de Silêncio

Não se deve imprimir nada e deixar umas margens claras tanto à esquerda como à direita do símbolo EAN-13, pois essas pertencem também ao símbolo e são o identificador do início e do término do código.

### Tamanhos e Medidas

O importante é saber que a altura das barras não será tão importante quanto a largura, pois o laser do leitor que irá escanear as barras é bem fino. Mudando a largura drasticamente você pode distorcer ou até modificar os códigos, resultando em erro na hora da leitura. Por isso aconselhamos sempre testar a imagem final antes de imprimir seus códigos em grande escala. Segue abaixo os tamanhos aproximados:
| PEQUENO (ALTURA X COMPRIMENTO) | MÉDIO (ALTURA X COMPRIMENTO) | GRANDE (ALTURA X COMPRIMENTO) |
| 1,30 CM X 4,50 CM | 2,50 CM X 3,80 CM | 2,55 CM X 6,35 CM |

### Processo de Impressão

A melhor maneira de imprimir os Códigos de Barras EAN-13 seria direto na embalagem de seu produto. Caso as embalagens já estejam prontas, você poderá imprimir etiquetas adesivas, e colar as etiquetas nas embalagens de seus produtos. O recomendado seria impressão Térmica, para manter a qualidade da leitura de seu Código de Barras EAN-13.

### Cores do símbolo

Os leitores têm a capacidade de ler o EAN-13 devido ao contraste entre as barras escuras e as barras claras (ou fundo). Logo existem cores mais legíveis tanto para uso nas barras claras quanto para o uso nas barras escuras. Para as barras escuras é aconselhado o preto, verde-escuro, azul, e marrom escuro. Enquanto que para as barras claras é aconselhado o branco, rosa, e bege, sempre mantendo uma cor mais neutra, e evitando cores tropicais, como por exemplo vermelho, laranja, e amarelo, devido ao laser ser vermelho, isso pode causar uma certa confusão na hora da leitura. Normalmente o mais usual é as barras escuras serem pretas e o fundo branco.