NF-e: Exemplo de Geração da Chave de Acesso NF-e 2.0  XML
Índice dos Fóruns » Artigos / Tutoriais
Autor Mensagem
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1123
Localização: Tubarão - SC
Offline

Olá Pessoal,

Segue abaixo sugestão para Geração da Chave de Acesso da NF-e:

Composição da Chave de Acesso da NF-e (2.00):



cUF - Código da UF do emitente do Documento Fiscal
AAMM - Ano e Mês de emissão da NF-e
CNPJ - CNPJ do emitente
mod - Modelo do Documento Fiscal
serie - Série do Documento Fiscal
nNF - Número do Documento Fiscal
tpEmis - forma de emissão da NF-e
cNF - Código Numérico que compõe a Chave de Acesso
cDV - Dígito Verificador da Chave de Acesso

O Dígito Verificador (DV) irá garantir a integridade da chave de acesso, protegendo-a principalmente contra digitações erradas.

Esta mensagem foi editada 1 vez. Última atualização foi em 17/10/2012 21:55:36


Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
marcioandre

JavaC Membro

Membro desde: 14/04/2011 19:16:54
Mensagens: 77
Offline

Caramba estou tenho dificuldade para entender esta classe estou errando travado na geração da chave de acesso... principalmente na hora de gerar o numero da nota cNF.

[MSN]
jcarlos78

JavaC Membro
[Avatar]

Membro desde: 17/08/2012 11:06:02
Mensagens: 64
Localização: Rio de Janeiro RJ
Offline


Teria como explicar melhor como se chega a cada um dos valores gerados da nota ?

Por exemplo :


String mod = "55"; // Modelo do Documento Fiscal. Quais modelos possíveis
String nNF = "20"; // Número do Documento Fiscal. Como chegou neste número
String cNF = "5"; // Código Numérico que compõe a Chave de Acesso. Por que 5 e como isso pode influenciar
napocoelho

JavaC Membro

Membro desde: 28/07/2011 15:23:55
Mensagens: 7
Offline

Cada tipo de documento fiscal possui um código fixo de modelo.
NFe será sempre 55.
CTe, acho q é 57, e por aí vai.
napocoelho

JavaC Membro

Membro desde: 28/07/2011 15:23:55
Mensagens: 7
Offline

Ler e reler o manual da NFe também é necessário para fazer-se entender o projeto.
Ter bastante intimidade com o manual é importante.
magno lohan

JavaC Membro
[Avatar]

Membro desde: 27/11/2011 19:49:50
Mensagens: 45
Offline

olá, primeiro
mod = 55 é o modelo de documento para nota fiscal eletrônica!
outros modelos como 21, 22 etc são para outro tipo de nota, então para nota fiscal eletrônica usa o "55"

nNF 20// este é o numero da nota fiscal é sequencial

cNF = 5 seria um numero aleatório de 8 dígitos pode ser obtido da seguinte forma: (int) (Math.random() * 99999999);
mas nada impede que coloque o mesmo numero da nota e o próprio código que gera a chave acrescenta o reste em "0" -> chave.append(lpadTo(cNF, 8, '0'));
[MSN]
Leandro Araújo

JavaC Membro
[Avatar]

Membro desde: 01/01/2013 03:31:59
Mensagens: 7
Offline

magno lohan wrote:olá, primeiro
mod = 55 é o modelo de documento para nota fiscal eletrônica!
outros modelos como 21, 22 etc são para outro tipo de nota, então para nota fiscal eletrônica usa o "55"

nNF 20// este é o numero da nota fiscal é sequencial

cNF = 5 seria um numero aleatório de 8 dígitos pode ser obtido da seguinte forma: (int) (Math.random() * 99999999);
mas nada impede que coloque o mesmo numero da nota e o próprio código que gera a chave acrescenta o reste em "0" -> chave.append(lpadTo(cNF, 8, '0'));

Procurei no manual, alguma coisa sobre:
serie - Série do Documento Fiscal
nNF - Número do Documento Fiscal
cNF - Código Numérico que compõe a Chave de Acesso (esse acho que entendi)


Sobre a série da NFe encontrei isso no site: http://www.nfe.fazenda.gov.br/PORTAL/perguntasFrequentes.aspx?tipoConteudo=7zEQFBPObw0=
O modelo da NF-e é o 55. A série abarca a numeração 001 a 999, sendo que as séries de número 890 a 899 de uso exclusivo para emissão de NF-e avulsa (quando permitida pela SEFAZ); e as séries de número 900 a 999 de uso exclusivo de NF-e emitidas em contingência e autorizadas no Sistema de Contingência do Ambiente Nacional - SCAN.

No manual está assim:
preencher com zeros na
hipótese de a NF-e não possuir
série. (v2.0)
Série 890-899 de uso exclusivo
para emissão de NF-e avulsa,
pelo contribuinte com seu
certificado digital, através do site
do Fisco (procEmi=2). (v2.0)
Serie 900-999 – uso exclusivo
de NF-e emitidas no SCAN.


Sobre o nNF - Número do Documento Fiscal:
Não encontrei alguma coisa clara sobre ele, estou em dúvida.

Sobre o cNF - Código Numérico que compõe a Chave de Acesso:
Pelo que vi no tópico e pesquisei, pode ser um número aleatório, gerado por exemplo pelo método 'random' da classe Math como o magno lohan mostrou.

As minhas dúvidas são principalmente com relação a série e ao nNF - Número do Documento Fiscal.
Como deve ser informada a série? Não compreendi.
E o nNF - Número do Documento Fiscal, diz que é um numero sequencial, então posso pegar o mesmo número que meu sistema gera para os pedidos emitidos (o ID no banco de dados), ou devo criar um controle (cadastro das NFe geradas) e utilizar o próximo número conforme a sequência e que não precisa ser igual ao número do pedido?
Obs: Visto que a qualquer momento o usuário pode querer excluir clientes e os pedidos são excluidos junto, podendo de alguma forma o código dos próximos pedidos mudar e não serem sequenciais.
Então, qual a forma mais recomendada para a série e o nNF?
Muito obrigado a comunidade, já consegui um grande avanço na minha implementação de projeto de NFe com os exemplos e códigos fornecidos.

[MSN]
napocoelho

JavaC Membro

Membro desde: 28/07/2011 15:23:55
Mensagens: 7
Offline

Conforme o manual, a série é sequencial e deve começar em 1 e vai até 889 para modo de emissão normal.
Para envio no modo SCAN, a série seria de 900 a 999.

Para cada numeração de série, deve-se utilizar a numeração da nota de 1 a 999999999 (9 casas).

Saltos de numeração sem justificativa acarretará em multa para a empresa. Imagino que saltar série antes que acabe a anterior também acarretará em multa.
Para justificar o salto de numeração de notas, faz-se necessário registrar o ocorrido através de uma Denúncia Expontânea ou
uma Inutilização da sequência (inutilização pelos webservices da SEFAZ são limitados a uma sequência de 1000).

rafaelshock

JavaC Membro
[Avatar]

Membro desde: 20/08/2012 14:12:59
Mensagens: 62
Offline



seria possivel me explicar melhor essa parte do codigo?

Obrigado!
 
Índice dos Fóruns » Artigos / Tutoriais
Ir para:   

Powered by JForum 2.1.9 © JForum Team