Campo no layout 2.0

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Campo no layout 2.0

Mensagem por Ricardo Sales Ribeiro »

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.
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Kiko Fernandes
Usuário Nível 3
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

Mensagem por Kiko Fernandes »

Oi Ricardo
cNf ---- não sei o conteudo deste campo.
Quanto ao cNF
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.
CÁ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
Somatória das ponderações = 644
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))    
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é+
Responder