Segue abaixo a função Modulo11 para Delphi:
function Modulo11(Valor: string; Base: Integer = 9; Resto: Boolean = False): string;
{
Rotina muito usada para calcular dígitos verificadores
Pega-se cada um dos dígitos contidos no parâmetro VALOR, da direita para a
esquerda e multiplica-se pela seqüência de pesos 2, 3, 4 ... até BASE.
Por exemplo: se a base for 9, os pesos serão 2,3,4,5,6,7,8,9,2,3,4,5...
Se a base for 7, os pesos serão 2,3,4,5,6,7,2,3,4...
Soma-se cada um dos subprodutos.
Divide-se a soma por 11.
Faz-se a operação 11-Resto da divisão e devolve-se o resultado dessa operação
como resultado da função Modulo11.
Obs.: Caso o resultado seja maior que 9, deverá ser substituído por 0 (ZERO).
}
var
Soma, Contador, Peso, Digito: Integer;
begin
Soma := 0;
Peso := 2;
for Contador := Length(Valor) downto 1 do
begin
Soma := Soma + (StrToInt(Valor[Contador]) * Peso);
if Peso < Base then
Peso := Peso + 1 else
Peso := 2;
end;
if Resto then
Result := IntToStr(Soma mod 11)
else
begin
Digito := 11 - (Soma mod 11);
if (Digito > 9) then
Digito := 0;
Result := IntToStr(Digito);
end;
end;
Em 22 de novembro de 2011 11:45, Geraldo Nunes <geraldo.nunes@yahoo.com.br> escreveu:
Olá Pessoal,Há alguns dias falamos de como montar a chave de acesso da Nfe com base em alguns dados como o no nrº da nota, série, data de emissão, CNPJ do fornecedor, etc.Porém, agora eu é quem fiquei com a seguinte dúvida:No final da chave há o dígito verificador e depois se mostra como calcular, porém não entendi nada.Alguém poderia me explicar baseado como se faz esse cálculo do DV baseado nos dados abaixo?NF: 000003834SERIE: 1CNPJ: 01.844.555/0002-63UF: MGDT EMISSAO: 25/10/2011***OBS: Extraí o texto abaixo do manual, alguém traduza isso para o português claro por favorAtenciosamente,
Geraldo Nunes
CÁLCULO DO DÍGITO VERIFICADOR DA CHAVE DE ACESSO DA NF-eO dígito verificador da chave de acesso da NF-e é baseado em um cálculo domódulo 11. O módulo 11 de um número é calculado multiplicando-se cada algarismo pelaseqüência de multiplicadores 2,3,4,5,6,7,8,9,2,3, ... posicionados da direita para a esquerda.A somatória dos resultados das ponderações dos algarismos é dividida por 11 e oDV (dígito verificador) será a diferença entre o divisor (11) e o resto da divisão:DV = 11 - (resto da divisão)Quando o resto da divisão for 0 (zero) ou 1 (um), o DV deverá ser igual a 0 (zero).Exemplo: consideremos que a chave de acesso tem a seguinte seqüência de caracteres:Somatória das ponderações = 644Dividindo a somatória das ponderações por 11 teremos, 644 /11 = 58 restando 6.Como o dígito verificador DV = 11 - (resto da divisão), portando 11 - 6 = 5Neste caso o DV da chave de acesso da NF-e é igual a "5", valor este que deverá compor achave de acesso totalizando a uma seqüência de 44 caracteres.
Paulo Geloramo
www.assisinformatica.com
--
--------------
Este Grupo se destina a discutir a implantação do SPED - Sistema Público de Escrituração Digital. Você recebeu esta mensagem por ter se inscrito no grupo do Google Groups "SPED - Sistema Público de Escrituração Digital".
Para postar uma mensagem no grupo, envir um email para sped-nfe@googlegroups.com
Para sair do grupo, envie uma mensagem para
sped-nfe+unsubscribe@googlegroups.com






0 comentários:
Postar um comentário