Olá pessoal... conforme exigência da legislação, (“§ 6o A partir de 1o de julho de 2011, fica obrigatório o preenchimento dos campos cEAN e cEANTrib da NF-e, quando o produto comercializado possuir código de barras com GTIN (Numeração Global de Item Comercial).”). Já me antecipando, resolvi criar uma função que faça a validação do digito verificador dos códigos de barras, de acordo com o manual da EAN Brasil. Esta função valida todos os códigos, de acordo com o que esta no final da página 57, do manual do usuário.
Códigos de barra que a função valida
GTIN - 8
UCC - 12
GTIN - 13
GTIN - 14
SSCC - 18
-----------------------------------------------
código da função Valida_EAN
function Valida_EAN(vEan: String): Boolean;
var
Temp1, Temp2, Digito: Integer;
Temp3, Temp4: String;
begin
Result := False;
Temp2 := 0; Temp3 := '';
if ((Length(vEan) <> 8) and (Length(vEan) <> 12) and
(Length(vEan) <> 13) and (Length(vEan) <> 18)) then
Exit;
Temp4 := '31313131313131313';
Temp4 := Copy(Temp4,(Length(Temp4)-Length(vEan)),Length(vEan)-1);
Digito := StrToInt(Copy(vEan,Length(vEan),1));
Temp3 := Copy(vEan,1,Length(vEan)-1);
for Temp1 := 1 to Length(Temp3) do
Temp2 := Temp2+StrToInt(Temp3[Temp1])*StrToInt(Temp4[Temp1]);
Temp2:=10-Round(Frac(Temp2/10)*10);
if Temp2 = 10 then
Temp2 := 0;
Result := (Temp2 = Digito);
end;
Peço aos colegas desenvolvedores que analizem o código da função a fim de melhorar o código, pois criei ela na correria...
E aos colegas responsáveis pelo projeto ACBr se esta função for de utilidade para o projeto que a coloquem no projeto pra que outras pessoas possão utilizá-la.