Calculadora de Código de Barras

Código copiado!

Segundo a Wikipédia, o código de barras no padrão EAN-13 contém 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.

O digito verificador é calculado por meio de um algoritmo. A função em Javascript abaixo apresenta a implementação desse algoritmo, recebendo como parâmetro um código de 12 dígitos e concatenando com o digito verificador.

        
          function calcularCodigoDeBarras(codigo) {
            const array = codigo.split('')
            const soma = array.reduce((total, numero, i) => total += i % 2 === 0 ? numero * 1 : numero * 3, 0)
            const ultimoDigito = (Math.floor(soma / 10) + 1) * 10 - soma
            const codigo = array.join('') + ultimoDigito
            return codigo
          }
        
      

Geralmente os códigos das embalagens dos produtos (fardos, caixas, cartelas, etc.), seguem um certo padrão quando comparado ao código da unidade. Não sei se é uma regra ou apenas uma convenção, mas é possível perceber que os códigos de barras das embalagens e das unidades contém 14 e 13 dígitos respectivamente, e são praticamente idênticos, mudando apenas a quantidade de algarismos, o primeiro e o último digito. A tabela abaixo apresenta alguns exemplos:

Produto Código de barras da embalagem Código de barras da unidade
CREME DE AVELA NUTELLA 140G 07898024395232 7898024395232
COPO DESC COPOMAIS 200ML PS 100UN BRANCO 17897147500940 7897147500943
PAO DE FORMA VISCONTI 400G TRADICIONAL 27891962051332 7891962051338
LAVA ROUPA PO OMO 360G BRANCO ABSOLUTO 37891150092212 7891150092211
YOKI BATATA PALHA EXTRA FINA 20X100G 57891095031127 7891095031122
SUCO ALIANCA UVA 1,5LI VD TTO 67896100501821 7896100501829
AMIDO MILHO QUALIMAX PCT 77891122113370 7891122113371
BATATA PALITO - AURORA - 2KG 87891164026376 7891164026370

Ao analisar os exemplos demonstrados, é possível perceber que que o último dígito do código da unidade é igual a soma da multiplicação do primeiro digito da embalagem por três com o seu último dígito. Podemos pegar como exemplo o código "17897147500940" que se refere a embalagem do "COPO DESC COPOMAIS 200ML PS 100UN BRANCO". 1 * 3 = 3; 3 + 0 = 3; Logo, obtemos o código "7897147500943"

Outro exemplo é o código "27891962051332" referente a embalagem do "PAO DE FORMA VISCONTI 400G TRADICIONAL". 2 * 3 = 6; 6 + 2 = 8; Logo, o código da unidade é 7891962051338

Já quando o valor excede 9, basta calcular o resto da divisão por 10. Exemplo "YOKI BATATA PALHA EXTRA FINA 20X100G", código da embalagem "57891095031127". 5 * 3 = 15; 15 + 7 = 22; 22 / 10 = 2 com resto igual a 2. Logo o código da unidade é "7891095031122"

Ao invés de utilizar o algoritmo completo, quando temos em mãos o código de barras da embalagem podemos simplificar essa tarefa apenas somando um número ao seu último dígito, podemos chamar esse valor de "Somador". A tabela abaixo apresenta os "dígitos somadores":

Primeiro dígito Somador
0 0
1 3
2 6
3 9 (ou -1)
4 12 (ou 2)
5 15 (ou 5)
6 18 (ou -2)
7 21 (ou 1)
8 24 (ou 4)
9 27 (ou 7)