À partir de hoje, estarei publicando aqui, todas as funções, as quais estou usando para montar o programa de envio da NF-e e, vamos começar com a função que calculo o digito verificador da chave de acesso da NF-e. Um dos itens principais para desenvolver o XML da NF-e é a montagem da chave de acesso. Para isso será necessário, além de compor a chave, calcular o digito verificador “DV” da mesma; o qual pode ser realizado usando-se a função abaixo (código em Delphi):

// Cálculo Modulo 11
// Autor: Caio José Hugeney Lopes de Oliveira
// versao 1.0
// Linguagem: Delphi 5-2007
function Modulo11(Numero: String): String;
var
i,j,k : Integer;
Soma : Integer;
Digito : Integer;
CNPJ : Boolean;
begin
Result := '';
Try
Soma := 0; k:= 2;
for i := Length(Numero) downto 1 do begin
Soma := Soma + (StrToInt(Numero[i])*k);
inc(k);
if k > 9 then k := 2;
end;
Digito := 11 - Soma mod 11;
if Digito >= 10 then
Digito := 0;
Result := Result + Chr(Digito + Ord('0'));
except
Result := 'X';
end;
end;

Posts Relacionados

Tags: ,



16 Comentários

  • At 2008.06.18 21:15, Jose roberto said:

    Por favor, gostaria de compra um codigo fonte de nfe, com urgencia.

    • At 2008.06.21 17:20, Caio Oliveira said:

      Enviei informações no seu e-mail.

      • At 2008.07.01 13:38, Tonieto said:

        Mande informacoes para o meu email também.

        • At 2008.07.01 13:48, admin said:

          A NFE_util pode ser econtrada no BLOG da NFe (http://nf-eletronica.com/blog/)

          • At 2008.08.14 12:15, Adm said:

            A chave de acesso da nota fiscal eletronica e composta pelso seguintes campos:
            cUF – código da uf do emitente do documento
            AAMM- ano e mês de emissão da NF-e
            CNPJ do emitente
            Mod Modelo do documento fiscal
            Serie serie do documento fiscal
            nNF numero do documento fiscal
            cNF Codigo Nuemrico que compõe a chave de acesso ( o que eu quero saber como calcula)
            cDv digito verificador da chave de acesso (que você explica na sua postagem)

            Como faz esse código?
            Att

            • At 2008.08.14 14:12, admin said:

              Olá Adm,

              Dá uma olhada no tópico Função para Gerar Chave de Acesso.

              Sds,

              • At 2009.08.12 15:48, Ronaldo said:

                Obrigado Caio, assim que vc tiver novidades se puder me avisar, estou meio confuso com relação a este Numero do Protocolo..
                Att: Ronaldo

                • At 2009.08.12 15:59, Ronaldo said:

                  Desculpa Caio, postei no tópico errado, era para estar em “Interpretando o “layout” da NF-e a partir do Manual de Integração”

                  • At 2009.08.12 16:18, admin said:

                    Ok, sem problemas.

                    • At 2009.10.09 09:07, Eduardo said:

                      Olá, Caio

                      Uma perguntinha meio boba….

                      Na sua função Modulo11, qdo. ocorre uma exceção retorna ‘X’. Isto seria pra gerar uma mensagem de erro pro usuário ?

                      Valeu !!

                      • At 2009.10.09 14:01, admin said:

                        Eduardo,

                        Não, nesse caso “X” é o DV.

                        • At 2010.06.03 11:28, Bruno said:

                          Como faço para calcular o código verificador? Existe uma fórmula?

                          • At 2010.09.22 18:34, Rodrigo Camargo said:

                            Boa Noite, tenho uma duvida com relação ao campo cNF (código NF) referente a chave de acesso da NFe. Este campo será montando na chave de acesso de que forma? Tenho que mandar essa numeração já gerada pelo sistema emissor? Pelos documentos que andei lendo é a Função para Gerar Chave de Acesso que me retorna esse numero? Ou essa função esta gerando o DV(dígito verificador)?

                            Atualmente o layout da chave de acesso é composta por os seguintes campos (totalizando 44 posições);
                            Cod_Uf(02);
                            AaMm(04);
                            Cnpj(14);
                            Modelo(02);
                            Serie(03);
                            Num_Nf(09);
                            Tp_Emis(01) (normal ou contingencia);
                            Cod_Nf(08);
                            Dv(01).

                            Obrigado e desculpe pelo transtorno.
                            Rodrigo Camargo.

                            • At 2010.09.27 09:13, admin said:

                              Olá Rodrigo,

                              Esse é um número aleatório e deve ser gerado randômicamente quando for gerar a chave de acesso da NF-e.

                              Sds

                              • At 2010.12.28 19:41, CARLOS NUNES said:

                                PRECISARIA DE COMENTARIO SOBRE ESTA FUNCAO. NAO ENTENDI O Result := ”; ONDE ESTA DECLARADA A VARIAVEL RESULT. E Soma := Soma + (StrToInt(Numero[i])*k), QUEM É O NUMERO. E Digito := 11 – Soma mod 11; DE ONDE SE PEGA O VALOR DO MOD 11 ?????????

                                • At 2011.01.03 10:13, admin said:

                                  Olá Carlos,

                                  A variável “result” é auto declarada pela função. Então, para retornar o valor de qq função em Delphi; vc. pode usar essa sintaxe (Result = valor).

                                  Sds

                                  You must be logged in to post a comment.