Procurei na web algo codigo para esse calcaulo e não conseguir nada.
Gostaria de trasforma isso em javascript.
a função deve vericar se o ultimo digite é igual valor final deste calculo.
Com certeza vai se util para outros usuarios.
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 ao resultado da divisão 1
* 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
* O digito verificador é 7. Assim o código completo é: 7891000315507
Segue um método refatorado para validação escrito em Java
public boolean validaCodigoEAN(String codigo) {
if(StringUtils.isNotBlank(codigo)
&& (codigo.length() == 8
|| codigo.length() == 12
|| codigo.length() == 13
|| codigo.length() == 14)){
int factor = 3;
int sum = 0;
for (int index = codigo.length()-1; index > 0; --index) {
int mult = Integer.valueOf(codigo.substring(index-1, index));
sum = sum + mult * factor;
factor = 4 - factor;
}
int cc = ((1000 - sum) % 10);
int ca = Integer.valueOf(codigo.substring(codigo.length()-1));
if (cc == ca)
return Boolean.TRUE;
}
return Boolean.FALSE;
}