Ola amigos
Boa Noite
Pessoal, existe uma cheve que se informa no inicio do layout na nfe v.2.0.
Sei q posso não informar e o txt ser validado.
Entretanto gostaria de saber o q siguinifica o campo Cnf - Código Numerico que compõe a chave de acesso, como é gerado esse campo, so sei q ele tem 8 digitos e bão consegui identifica-lo.
A chave se cõmpõe de:
cUf
AAMM
CNPJ
mod
serie
nNf
tpEmis
cNf ---- não sei o conteudo deste campo.
cDv
Outra coisa com calcular o digito verificador da Chave de acesso.
Atenciosamente.
Campo no layout 2.0
Moderador: Moderadores
- Ricardo Sales Ribeiro
- Usuário Nível 3

- Mensagens: 279
- Registrado em: 13 Jul 2004 18:06
- Localização: Fortaleza-Ceara
-
Kiko Fernandes
- Usuário Nível 3

- Mensagens: 213
- Registrado em: 24 Out 2008 22:41
- Localização: Foz do Iguaçu
Re: Campo no layout 2.0
Oi Ricardo
Código Numérico que compõe a Chave de Acesso .
Eu optei por usar o mesmo número da nota, devido a alguns problemas que tive no início quando o meu sistema dava algum erro e não gravava no banco de dados a chave e eu precisava consultar novamente a mesma chave para saber se a nota estava na SEFAZ. Antes eu cheguei a usar um número aleatório.
Quanto ao Dígito Verificador
No Manual Integração - Contribuinte Versão 4.0.1 - Página 85 explica sobre o cálculo do dígito.
Dividindo 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 = 5
Neste caso o DV da chave de acesso da NF-e é igual a "5", valor este que deverá compor a
chave de acesso totalizando a uma seqüência de 44 caracteres.
Abaixo a função que eu utilizo para calcular o dígito: (Acho que foi disponibilizada por algum colega deste forum)
Exemplo de uso:
Modulo11("5206043300991100250655012000000780026730161",2,9)
nPeso1 é o numero inicial da sequencia de multiplicadores e nPeso2 é o número final (o máximo) ai a função reinicia o valor nomamente de 2 até 9.
Um abraço!
Té+
Quanto ao cNFcNf ---- não sei o conteudo deste campo.
Código Numérico que compõe a Chave de Acesso .
Eu optei por usar o mesmo número da nota, devido a alguns problemas que tive no início quando o meu sistema dava algum erro e não gravava no banco de dados a chave e eu precisava consultar novamente a mesma chave para saber se a nota estava na SEFAZ. Antes eu cheguei a usar um número aleatório.
Quanto ao Dígito Verificador
No Manual Integração - Contribuinte Versão 4.0.1 - Página 85 explica sobre o cálculo do dígito.
Somatória das ponderações = 644CÁLCULO DO DÍGITO VERIFICADOR DA CHAVE DE ACESSO DA NF-e
O dígito verificador da chave de acesso da NF-e é baseado em um cálculo do
módulo 11. O módulo 11 de um número é calculado multiplicando-se cada algarismo pela
seqüê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 o
DV (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:
A = CHAVE DE ACESSO
B = PESOS
C = PONDERAÇÃO (A*B)
A) 5 2 0 6 0 4 3 3 0 0 9 9 1 1 0 0 2 5 0 6 5 5 0 1 2 0 0 0 0 0 0 7 8 0 0 2 6 7 3 0 1 6 1
B) 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2
C) 20 6 0 54 0 28 18 15 0 0 18 81 8 7 0 0 8 15 0 54 40 35 0 5 8 0 0 0 0 0 0 35 32 0 0 18 48 49 18 0 4 18 2
Dividindo 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 = 5
Neste caso o DV da chave de acesso da NF-e é igual a "5", valor este que deverá compor a
chave de acesso totalizando a uma seqüência de 44 caracteres.
Abaixo a função que eu utilizo para calcular o dígito: (Acho que foi disponibilizada por algum colega deste forum)
Código: Selecionar todos
Function Modulo11(cStr,nPeso1,nPeso2)
local nTot := 0
local nMul := nPeso1
local i
for i := Len(cStr) to 1 step -1
nTot += Val(SubStr(cStr,i,1)) * nMul
nMul := if(nMul=nPeso2, nPeso1, nMul+1)
next
return if(nTot%11 < 2, "0", Str(11-(nTot%11),1)) Modulo11("5206043300991100250655012000000780026730161",2,9)
nPeso1 é o numero inicial da sequencia de multiplicadores e nPeso2 é o número final (o máximo) ai a função reinicia o valor nomamente de 2 até 9.
Um abraço!
Té+