Função para gerar Chave de Acesso NF-e
Código-Fonte, Delphi abril 3rd, 2008
Segue código fonte da função que escrevi em Delphi para gerar a chave de acesso da NF-e. Já atualizada conforme última versão definida na “Nota Técnica 2007/008″; repare que no Manual de Integração de 2008 a as instruções para gerar a chave de acesso estão desatualizadas, ou seja, por incrível que pareça a Nota divulgada em 2007 é mais recente que a informação do manual divulgado em 2008 e por ai vai….; mas, vamos ao que interessa.
Para construir a chave de acesso usamos as quatro funções listadas a seguir: MontaChaveAcessoNFe (função que recebe os parâmetros da nota e devolve a chave de acesso da NF-e), LimpaCNPJ (função complementar que retira os “traços”, “pontos” e “barra” do CNPJ, se houver), StrZero (que preenche com zeros à esquerda os campos numéricos) e por último a função que faz o calculo do digito verificador da chave (Modulo11).

//MontaChaveAcesso // (codigo alterado em 19/11/08 para compor a chave no formato da versão 1.10 do laioute) //------------------- //Parametros: //codUF - codigo da Unidade e Federação do Município de acordo tabela IBGE. //dtEmissaso - data de emissão da nota fiscal //CNPJ - codigo CNPJ do emitente //Modelo - Modelo da Nota Fiscal NF-e (55) //Serie - codigo de serie da NFe //NumeroNF - Número da Nota Fiscal //Result = Chave de acesso // Function MontaChaveAcessoNFe_v110( codUF: integer; dtEmissao: TDateTime; CNPJ:string; Modelo, Serie, NumeroNF: integer): string; var emissao:string[10]; chave:string; CodigoNumerico: Integer; begin emissao := formatdatetime('DD/MM/YY', dtEmissao); // Essa parte do código gera o Código Numérico (Aleatório) //para que funcione inclua a unit "Math" na cláusule Uses. Randomize; CodigoNumerico := Random(99999999); chave := IntToStr(codUF)+copy( emissao, 7,2)+copy(emissao,4,2)+ LimpaCNPJ(CNPJ)+StrZero(Modelo,2,0)+StrZero(Serie,3,0)+ StrZero(NumeroNF,9,0)+StrZero(CodigoNumerico,9,0); Result := chave + Modulo11(chave); end; // LimpaCNPJ (retira máscaras do CNPJ) //------------------------------------ Function LimpaCNPJ( cnpj: string): string; begin Result := StringReplace(StringReplace(StringReplace( cnpj, '.','',[rfReplaceAll]), '-','',[rfReplaceAll]), '/','',[rfReplaceAll]); end; // StrZero (Preenche com zeros à esquerda) // ------------------------------------------------------ Function StrZero(Num : Real; Zeros, Deci: Integer): string; var tam,z : integer; res,zer : string; begin str(Num:Zeros:Deci, res); res := Alltrim(res); tam := length(res); zer := ''; for z := 1 to (Zeros-tam) do zer := zer + '0'; result := zer+res end; // Alltrim -------------------------- Function Alltrim(Text: string) : string; begin while Pos(' ', Text) > 0 do Delete( Text, pos(' ', text), 1); Result := Text; End;
Com isso menos uma etapa para ser cumprida.
Até a próxima!
Posts Relacionados
Tags: Chave de Acesso, Delphi, NF-e
Desenvolvendo Aplicativos Personalizados padrão WEB 
















Sugestão de melhoria da função StrZero:
function StrZero(Num: Extended; Zeros, Deci: Integer): string;
begin
Result :=
StringReplace(
FormatFloat(StringOfChar(Zeros, ‘0′) + ‘.’ + StringOfChar(Deci, 0), Num),
DecimalSeparator,
EmptyStr,
[])
end
Sds.
Ops! Correção para a sugestão:
function StrZero(Num: Extended; Zeros, Deci: Integer): string;
begin
Result :=
StringReplace(
FormatFloat(StringOfChar(Zeros – Deci, ‘0′) + ‘.’ + StringOfChar(Deci, 0), Num),
DecimalSeparator,
EmptyStr,
[])
end
Não testei ainda, mas pelo código deve ser mais rápida que a minha!.
abraços
mandei gerar uma chave com base a uma já existente:
essa eu peguei de um DANFE emitido pelo sistema da SEFAZ
51080605324085000187550010000004430295830834
ai coloquei os mesmos dados CNPJ, Emissão etc e quando mando gerar a chave ele monta diferente os últimos 10 caracteres fica assim:
51080605324085000187550010000004430295830834
correto:
5108060532408500018755001000000443-0295830834
pela função
5108060532408500018755001000000443-1037997947
e se eu mandar gerar novamente ele muda dinovo
5108060532408500018755001000000443-1714191477
5108060532408500018755001000000443-1064017796
assim vai
podem me esclarecer se isso é correto?
abraços gostei muito da Função
Olá Lorde_MF,
Repare que cada vez que vc. chama a função ela vai gerar um número diferente; isso ocorre porque na chave de acesso segue um código aleatório de 08 dígitos gerado pela função e vai compor a chave.
No seu exemplo, repare que os últimos 9 dígitos são diferentes cada vez que vc. chama a função, desses 9 digitos, os 8 (oito) primeiros são o número aleatório gerado na chamada da função e o última é o DV gerado.
É importante, quando gerar a chave de acesso da NFe pela primeira vez, guarde-a juntamente com os dados da mesma.
Boa sorte com o seu projeto!
abraços!
Muito grato pela atenção,
entendido então tá gerando a chave corretamente, só queria entender mesmo melhor,,,
Uma outra dúvida após eu certificar o arquivo XML já posso emitir o DANFE ou só depois que eu fazer o envio eu emito?
não tem algum fonte de DANFE em DELPHI?
começei a ver sobre a NFe sexta e estou muito envolvido, sorte poder contar com a ajuda de vcs
Grato novamente pela atenção
Olá novamente Lorde_MF,
De acordo com o Manual de Integração do Contribuinte vc somente poderá imprimir o DANFE após o envio da NF-e; exceto em caso de Contingência, onde você poderá imprimir o DANFE (em formulário especial) e enviar as NF-e posteriormente.
Dá uma boa lida nesse manual que é importante, não deixe de acessar também, o Blog da NF-e (se ainda não conheçe) tem muito material ali, pareçe que alguém resolveu atender aos programadores enfim…veja os links aqui no blog em (Links Úteis).
abraços!
Grato amigo, Caio Oliveira
Estou usando já o NFe_Util.dll sim, sorte mesmo, vou partir pro DANFE então agora,
Abraços t+
Duas funções que podem:
traz o código do IBGE do estado
function UF_N(UF:String): Integer;
var
UF_N : String;
begin
if UF = ‘RO’ then result := 11;
if UF = ‘AC’ then result:= 12;
if UF = ‘AM’ then result:= 13;
if UF = ‘RR’ then result:= 14;
if UF = ‘PA’ then result:= 15;
if UF = ‘AP’ then result:= 16;
if UF = ‘TO’ then result:= 17;
if UF = ‘MA’ then result:= 21;
if UF = ‘PI’ then result:= 22;
if UF = ‘CE’ then result:= 23;
if UF = ‘RN’ then result:= 24;
if UF = ‘PB’ then result := 25;
if UF = ‘PE’ then result := 26;
if UF = ‘AL’ then result := 27;
if UF = ‘SE’ then result := 28;
if UF = ‘BA’ then result := 29;
if UF = ‘MG’ then result:= 31;
if UF = ‘ES’ then result:= 32;
if UF = ‘RJ’ then result:= 33;
if UF = ‘SP’ then result:= 35;
if UF = ‘PR’ then result:= 41;
if UF = ‘SC’ then result:= 42;
if UF = ‘RS’ then result:= 43;
if UF = ‘MS’ then result:= 50;
if UF = ‘MT’ then result:= 51;
if UF = ‘GO’ then result:= 52;
if UF = ‘DF’ then result:= 53;
end;
essa remove os caracteres especiais:
function RemoveAcento(Str:String): String;
Const
ComAcento = ‘àâêôûãõáéíóúçüÀÂÊÔÛÃÕÁÉÍÓÚÇÜ’;
SemAcento = ‘aaeouaoaeioucuAAEOUAOAEIOUCU’;
Var
x : Integer;
Begin
For x := 1 to Length(Str) do
if Pos(Str[x],ComAcento)0 Then
Str[x] := SemAcento[Pos(Str[x],ComAcento)];
Result := Str;
end;
Abraços
onde consigo a NFe_Util.dll ???
abraços.
Boa tarde amigo Tonieto
NFe_Util.dll vc encontra em http://nf-eletronica.com/blog/?p=73
Abaços
Galera como faço p/ validar um XML em DELPHI?
Vou usar algum Schema?
Grato
Use o exemplo abaixo (Delphi):
procedure TfrmNFe.ValidaNFE;
var
XMLDoc: TXMLDocument;
begin
XMLDoc:= TXMLDocument.Create(nil);
XMLValidadeOK := false;
try
XMLDoc.ParseOptions:= [poResolveExternals, poValidateOnParse];
try
XMLDoc.LoadFromFile(diretorioxml+’\assinadas\’+arquivoXMLNFe);
XMLDoc.Active:= True;
Form1.response.Lines.Add(‘O arquivo ‘+ arquivoXMLNFe + ‘ é um XML VÁLIDO.’);
Form1.response.Lines.Add(”);
XMLDoc.Active:= False;
XmlValidadeOK := true;
except
on E:EDOMParseError do
begin
Form1.response.Lines.Add(‘O arquivo ‘+ arquivoXMLNFe + ‘ é um XML INVÁLIDO. Verifique: ‘);
Form1.response.Lines.Add(”);
Form1.response.Lines.Add(E.Message);
Form1.response.Lines.Add(”);
end;
end;
finally
XMLDoc.Free;
end;
end;
como declarar a procedure TfrmNFe.ValidaNFE;
tá dando erro aqui
como declarar a procedure TfrmNFe.ValidaNFE;
tá dando erro aqui
também não acho a uses dessas:
XMLDoc.ParseOptions:= [poResolveExternals, poValidateOnParse];
Olá,
Vc tem que declarar as units: XMLDoc, XMLIntf e xmldom.
Agora deu blz,
só outro detalhe. em cima de qual arquivo ele faz a validação do XML?????
pois achei que do mesmo jeito que eu indico o arquivo XML eu teria que indicar o Xsd também
no caso seria o nfe_v1.10.xsd
Gtato pela atenção
O XML DOM parser valida o documento contra o seu esquema informação, além de verificar se o XML é bem-formado.
Repare na configuração XMLDOM.ParseOptions o parâmetro (poValidateOnParse) configura o parser para fazer isso.
grato pela atenção Amigo Caio Oliveira
mas ainda não entendi como ele vai validar o meu documento XML, encima do padrão XSD que eu informar, pois ali na Procedure TfrmNFe.ValidaNFE; ele valida legal, mas não sei como informar a ele que preciso validar em cima do arquivo nfe_v1.10.xsd ai fico todo confuso aqui,rss
Grato
Olá amigo(s)!
Estive fazendo alguns testes com a NFE_Util.dll (excelente ferramenta), porém verifiquei que se eu alterar a data do computador para 13/06/2009 eu obtenho a seguinte mensagem:
“a conexção subjacente estava fechada: Não foi possível estabelecer relação de confiança para o canal seguro de SSL/TLS”.
Até a data de 12/06/2009, tudo funciona corretamente.
Obs: Fiz alguns testes com alguns certificados inválidos também, e, como já era de se esperar, obtive outras mensagens de erro, só que, a partir de 13/06/2009,
a mensagem de erro obtida é mesma que mencionei anteriormente.
O certificado digital que estou utilizando( disponibilizado pelo meu cliente ) tem validade até 2011.
Se você(s) conhece(m) o problema e puderem me dar um dica!?
Agradeço antecipadamente.
Olá Peke,
Não entendi o motivo desse teste; mas, com certeza não têm a ver com a validade do certificado, visto que qualquer NF emitida com data futura deverá ser imediatamente rejeitada pelo WS da SEFAZ.
Sds,
Caros,
Estamos iniciando os trabalhos referente a NFe, gostaria de saber se existe algum site do governo para realizar a validação (cadastramento,testes, documentação, etc
grato a todos
Olá Mauro,
Você encontrará quase tudo que precisa no Blog da NF-e, o pessoal ali está fazendo um trabalho de divulgação de dicas e ferramentas indispensáveis para quem precisa executar a integração com o sistema de Notas Fiscais Eletrônicas da SEFAZ.
Sds,
Olá!
Estive testando a sua função ValidaNFe(Delphi), porém percebi que mesmo com alguns dados inválidos, a função sempre retorna que é um xml válido.
Por exemplo: Se eu colocar dois espaços em branco no final de um campo de texto, o xml continua sendo válido, porém, utilizando um outro validador escrito em C#, que peguei numa página também sobre Notas Fiscais Eletrônicas, o xml passa a não ser mais válido.
Será que há alguma configuração que preciso fazer na minha máquina, para que a função em Delphi também possa “pegar” esses problemas?
Atenciosamente
Péricles.
Olá Peke,
Vou verificar isso, ela deveria fazer a validação considerando o schema informado no corpo do XML (parâmetro “poResolveExternals” do parserOptions).
Galera a Validação via Util.ValidaXML é uma boa, pois já estamos fazendo a assinatura e a transmissão, estou Validando e tá dando belezinha
Só uma dúvida (uCom) existe algum padão pois coloquei ´kg´,’m/3′ e ele não aceita ai se eu colocar ‘TN’ ou ‘dz’ ele aceita alguém pode me dar um Help?
Grato
rss não sei o motivo mas o retorno da base de dados me retornava com o espaço no final,,, Resolvido
Grato
Galera preciso anexar o arquivo XML gerado para o arquivo de lote
Como faço isso no Delphi????
Olá Lorde,
Publiquei um exemplo…
abraços
Boa tarde
estou começando com a nf-e e por enquanto estava testando a NFe_Util.dll. Já tenho um certificado valido instalado no meu computador, no entanto, usando os serviços do aplicativo exemplo que vem junto com a dll, tentando acessar qualquer webservice, tenho o retorno:
Erro: Falha na solicitação com status HTTP 403: Forbidden.
Alguém pode me ajudar?
Obrigado
Verifique o seguinte:
Para usar essa DLL vc. tem que instalar o framework Microsoft .Net 2.0 e seguida vc. precisa registrá-la (RegistroDLL.bat).
Oi Caio.. o framework ja esta instalado e a dll também já foi registrada… tanto q o procedimento de assinar digitalmente do exemplo que usa o mesmo componente do envio da nota fiscal(Util := CoUtil.Create;) esta funcionando.. só não esta funcionando o acesso aos webservices, retornando essa msg de erro…
Obrigado
Olá Cris,
Teste também a instalação do seu certificado acessando por exemplo o CAC da Receita Federal (http://www.receita.fazenda.gov.br/atendvirtual/default.htm).
Esse erro não me pareçe uma resposta do Web Service da SEFAZ; se vc. têm Firewall na rede, verifique se não é ele que está negando o acesso.
Sds,
Bom dia amigo caio
Erro: Falha na solicitação com status HTTP 403: Forbidden.
é o seu certificado, precisa pegar outro,
Abraços
Obrigado.. acho que é falha no certificado digital mesmo. Peguei um que diziam estar disponivel para testes de homologação, mas parece q não está funcionando. Serviu pra fazer a assinatura digital do xml mas não pra acessar os webservices. O que vcs me sugerem? Devo adquirir um certificado digital pra minha empresa? Pode ser o e-Cnpj?
Olá Cris,
Eu usei um certificado de cliente para fazer a Homologação. Exceto se a sua Empresa estiver credenciada para emissão de NF-e; acho que terá que fazer o mesmo.
Ola Caio,blz estou começando a desenvolver a nf-e e nao sei o codigo para convertar os dados em XML , poderia me ajudar?!
Obrigado.
Olá Rogério,
Publiquei um exemplo aqui no BLOG que deve ajudar. O XML pode ser gerado também “na unha” como se diz por ai. Mas, em muito pouco tempo vc. domina o uso da classe TXMLDocument e vai ver que fica moleza; tanto ler quando escrever no XML.
Valeu, vo estudar isso!! outra coisa , onde posso encontrar o layout do nf-e padrao, para começar?!!
Obrigado.
A melhor fonte de informações sobre a NF-e hoje é o BLOG da NFe. O link está disponível aqui no blog (veja na área de links à direita).
Bom dia.
Já peguei o jeito no trato dos xml a serem gerados. Estou usando o turbo delphi 2006.
Para assinatura e validação pensei em usar os recursos do framework 2.0 da microsoft. Vou precisar do delphi for .Net.
Baixei o turbo delphi for .Net para dar uma olhada e percebi que o que fiz anteriormente não se encaixa com os recursos do .Net, pois usei o Data Binding Xml para gerar as unit.
Fiquei meio perdido agora…
Rodrigo,
Quanto à gerar os arquivos XML, vc vai ter um pouco de trabalho, mas nada que não se resolva com um pouco de paciência. Tem um exemplo de como gerar os arquivos aqui no Blog. À partir daí, vc pode usar recursos da .Dll disponibilizada no “Blog da NFe”: assinatura/ envio; bem como consultas ao Web services da SEFAZ.
Sds,
Alguem tem um exemplo de uma funcao em delphi pra assinatura do arquivo xml acessando os certificados????????
bom dia caio
to passando só pra dar um bom dia ai pra ti irmao
e aproveitando, sabes algo sobre o a tag cListServ ?
de acordo com o manual de integração deve-se informar nessa tag o código do serviço de acordo com a LC 116/03
que classifica os serviços prestados…
no mai só alegria, estou imprimindo meu danfe lendo do XML com ajuda do arquivo gerado pelo XML Mapper
abraço guri
Bom dia Claudio,
Blz, obrigado pela visita. Sobre a LC 116. fala sobre a regulamentação do ISS (imposto sobre serviços de qualquer natureza), dá uma olhada no link abaixo que tem todas as informações que vai precisar:
Lei complementar N.116 de 31 de Julho de 2003
blz consegui homologar com o ISSQN e a tag cListServ
agora tah dando pau na chave de acesso
iUHAiuhaiHUiua
blz Caio, brigadao
bom dia guri
o problema com a chave de acesso consegui resolver
tudo indo as pampa, fora o lance de estar dando pau no sistema de HOMOLOG da sefaz MT
abraço irmao
bom dia Claudio,
Isso ai, vai se acostumando, quando se trata de depender do governo para qualquer serviço profissional é assim mesmo!.
ahhh, um irmaozinho que conheci aqui atraves do seu forum esta me ajudando altos tb…
Bom Dia Caio!
Gostei muito das dicas que deu para a Nota fiscal eletrônica,como muitos estava perdido tb e as dicas me ajudaram.
no código para gerar a chave de acesso não encontrei a função modulo11, pode postar aqui?
Luciano,
Olá Luciano,
Legal, o objetivo é esse mesmo. A função módulo 11 também foi disponibilizada aqui no BLOG, favor digite “modulo 11″ na busca do blog para abrir o post.
abraços.
Boa tarde pessoal…
tenho um arquivo xml assim:
Citação:
version=”1.0″ encoding=”UTF-8″
1CONSULTARXXXXXXXXXXXX
depois que uso o FormatXMLData fica assim:
Citação:
xml version=”1.0″
1
CONSULTAR
XXXXXXXXXXXX
Observem que na primeira linha sumiu o encoding=”UTF-8″.
Como evitar isso ?
Abraços
Rodrigo
Rodrigo,
Para qual finalidade vc está usando o FormatXMLData, ele na verdade apenas gera uma saída do XML para facilitar a leitura (visualização) do mesmo. Não conheço outra utilidade e, não é interessante por exemplo aplicar essa função no XML da NFe (exceto para dar uma conferida nele).
Sds, Caio
Sim Caio, o objetivo é somente identar para facilitar a visualização.
Obrigado
Depois de gerar a interface de comunicação fiquei amarrado em como vincular o certificado digital, pois esta dando a seguinte mensagem:
“É necessário ter um certificado para concluir a autenticação do cliente”
function GetNfeStatusServicoSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): NfeStatusServicoSoap;
const
defWSDL = ‘D:\nfeStatusServicoNF.WSDL’;
defURL = ‘https://homologacao.nfe.fazenda.pr.gov.br/NFENWebServices/services/nfeStatusServicoNF’;
defSvc = ‘NfeStatusServico’;
defPrt = ‘NfeStatusServicoSoap’;
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = ”) then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as NfeStatusServicoSoap);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
estou usando o Delphi 2006
Olá Rodrigo,
Esse código funciona bem para consumir um WebService que não exiga conexão SSL; porêm no caso do serviço da NFe é necessário. E, nesse caso, o código acima não será possível de ser utilizado.
O Delphi não ofereçe suporte nativo à esse tipo de conexão; sendo necessário usar bibliotecas de terceiros para suprir o problema.
No caso da NF-e; visite o “Blog da NF-e”; ali existe uma DLL (NFE_UTIL.DLL) que vc pode usar para fazer a comunicação com o servidor da NFe.
Sds, Caio
Mais uma coisa,
Caso vc. use a .NET, existem muitos bons exemplos de como implementar o serviço usando essa linguagem. Ali no “Blog da NF-e” inclusive.
Sds,
Mas na paleta do delphi tem os componentes indy
Tem o TidSSLIOHandlerSOcketOpenSSL
Olá Rodrigo,
Dá uma olhada nesse post: http://nf-eletronica.com/blog/?p=73
obrigado pela paciência….
Outra coisa. O desenvolvimento difere em alguma coisa para o A1 e A3 ? Tenho um cliente que está comprando um dispositivo com cartão ( certificado )
A primeira coisa é entender bem a diferença entre o Certificado modelo A1 e A3.
O A3 é disponibilizado no formato cartão e exige além do leitor, a autenticação para cada vez que usá-lo.
O A1 é instalado no computador um unica vez e pode ser acessado à partir dai pela aplicação instalada nesse máquina, sem autenticação.
Dessa forma, o A1 é o mais indicado para a Nota Fiscal Eletrônica, visto que, normalmente o certificado vai ser instalado no servidor de envio/controle das NFe e será usado pela aplicação sempre que ocorrer a necessidade de enviar uma Assinar/Enviar/… a NFe. Existe uma versão do certificado A1 (certisign) que somente pode ser usado para a NFe (mais segurança visto que o certificado do seu servidor somente será usado para essa finalidade, se for o caso).
Eu não usaria o modelo A3, temos clientes usando, mas porque já possuíam o certificado antes da instalação do sistema e não quiseram comprar o A1 (ainda).
No seu caso, você poderia interferir de forma que o seu cliente faça a melhor escolha (para essa aplicação); seria o modelo A1.
Sds,
Oi caio estou tendo problemas com a geração da chave de acesso o que acontece é o seguinte eu gero a chave da Nfe com 44 caracteres ai se eu adiciono na frente da chave gerada Nfe como manda no Manual quando mando verificar XML com o XSD ele da erro de formação no xml. Vc sabe me dizer o que poderia ser?
Fica assim a minha chave no XML
NFe35080949228695000152550010000999181362138178
Olá Edmilson,
Eu não testei, mas, aparentemente a chave está correta. a SEFAZ disponibilizou um programa para assinar a NFE (AssinadorRS) que vc pode usar para testar a assinatura da NFe, ajuda muito, ele vai lhe devolver uma mensagem de erro nesse caso contendo instruções de onde está o problema no XML; que nesse caso pode não ser a chave.
Sds,
Caio,
Por acaso há alguma regra para nomear os arquivos onde salvo a nfe???
Obrigada!
Sim foi criado um padrão para os nomes dos arquivos de envio e retorno que são utiulizados pelo sistema NF-e. Procure no “Manual de Integração” por “Padrão de nomes para os arquivos” (pág. 68 se não me engano). Agora, o local onde vc vai salvar esses arquivos em disco fica à seu critério.
Sds
A variável código númerico não deveria ter o tamanho de 9 posições. Pois na tag cNF o tamanho deste campo deve ser igual ao 9.
Validando o xml dá pau neste campo por ter 8 posições.
Isto confere??
Olá Cristiano,
A função que gera a chave de acesso acima, está normalizada de acordo com o schema atual versão 1.10 da NFe.
Existe uma outra versão que foi divulgada, porém, adiada posteriormente (versão 1.12 do schema). Nessa segunda versão o codigo numérico vai ter 8 posições, porque foi acrescentado a informação do formato de impressão do DANFE (1 digito). Então está valendo por enquanto a chave de acesso conforme gerada acima (Manual de Integração 2.0.2).
Sds,
Caio,estive verificando e o problema acontece da seguinte maneira, se o random estiver com 9 posições, a chave de acesso é montada com 45 caracteres, se estiver com 8 a chave contem 44 caracteres mas ocorre problema na validação do campo cNF com o esquema nfe_v1.10.xsd. Não sei se estou entendendo errado, mas para ajustar isso fiz o seguinte.
Coloquei 9 posições no randomize,
coloquei o Numeronf com 8 posições e o código numérico com 9.
Desta forma resolveu o problema. Não sei se estou enterrando no erro mais ainda, se sim, por favor me avisem
Function MontaChaveAcessoNFe(codUF: integer; dtEmissao: TDateTime; CNPJ:string;Modelo, Serie, NumeroNF, FormaEmissao: integer): string;
var emissao:string[10];
chave:string;
begin
emissao := formatdatetime(‘DD/MM/YY’, dtEmissao);
Randomize;
CodigoNumerico := Random(999999999);
chave := IntToStr(codUF)+copy(emissao,7,2)+copy(emissao,4,2)+LimpaCNPJ(CNPJ)+StrZero(Modelo,2,0)+StrZero(Serie,3,0)+ StrZero(NumeroNF,8,0)+IntToStr(FormaEmissao)+StrZero(CodigoNumerico,9,0);
Result := chave + Modulo11(chave);
end;
Cristiano,
Desculpe, mas, eu percebi que ao invés de publicar a versão 1.10 (que é a versão válida hoje) eu publiquei a versão 1.12 (a qual foi adiada).
O campo “FormaEmissao” deve ser retirado da chave e o codigo numérico tem que ter 9 posicoes. Estava dando 45 no total porque o campo FormaEmissao estava sobrando ali.
Sds,
Eu alterei o código do exemplo para a versão 1.10.
Sds,
Existe a possíbilidade de fazer com que a aplicação n mostre aquele tela de escolha do certificado ??
Gostaria de fazer com que o certificado fosse escolhido diretamente, n permitindo a escolha do usuário.
Alguma alternativa?
Sim, após selecionar o certificado, salve o “nome do certificado” num arquivo que vc. pode recuperar mais tarde;
Use um código como abaixo para salvar:
E o código abaixo quando quiser recuperar o nome do certificado salvo anteriormente:
onde o “nomecertificado” é a sua variável (string).
Sds,
Obrigadão Caio, pensei nisso tbm em gravar o nome, mas achei que o nome do certificado poderia guardar informações como a data e hora que fossem acessados.
Valeu pela ajuda.
Olá Caio,
Estou a dois meses em desenvolvimento da NF-e fiz o processo ao contrario, peguei uma XML de exemplo e fiz sua assinatura validação retorno e consulta.O que esta pegando agora é a XML, que estou em processo de finalização porém estou com dúvida e tomara que possa me ajudar:
Queria saber como implantar essa função no meu código XML, eu vi a função do digito verificador e deu certo, porém esta função da chave estou com dificuldade em onde colocar se é no Id ou no cNF
Desde já agradeço
Olá Adriano,
A chave de acesso vc. deve inserir na tag “infNFe” como atributo “id”, precedido da constante “NFe”; veja no exemplo abaixo:
Caio, primeiro gostaria de agradecer o retorno rápido dado a minha pergunta.
Mas então qual é a finalidade de cNF na TAG ide no qual ela diz que gerar uma código numerico de tamanho 9, tem outra função para gerar ela ou é essa função que esta colocada no blog.
Desde já agradeço
Olá
Caio, segui o exemplo que você postou da função da chave de acesso, porém a minha chave esta exibindo 43 digitos ao invés de 44, eu fiz da seguinte forma na XML
fXmlTextWriter.WriteStartAttribute(‘Id’ fXmlTextWriter.WriteValue(‘NFe’+MontaChaveAcessoNFe_v110(SQLQryEstadoIBGE.AsInteger,SQLQryNFDTEMISSAO.AsDateTime,SQLQryNFCompanhia.AsString,modelo,serie,SQLQryNFNUMERO.AsInteger);
fXmlTextWriter.WriteEndAttribute;
Verifique o último campo “código numérico” tem que estar formatado com 09 dígitos.
Então:
02 digitos do codigo da UF
02 digitos do ano da emissao
02 digitos do mes da emissao
14 digitos do CNPJ
02 digitos do modelo
03 digitos da serie
09 digitos do Numero da Nota
09 digitos do Codigo numérico (aleatorio)
–
43 + 01 digito verificador = 44
Dá uma conferida ou copie o codigo novamente.
Sds,
Caio,
Muito obrigado deu certinho e como ainda na minha base de dados eu não tinha valor do IBGE o valor padrão era zero, entaum faltava um digito mas fiz um teste colocando um valor padrão então deu 44 digitos.
Próxima Fase….
Bom Dia Caio,
Minha dúvida não tem muito a ver com Geração de Chave, mas como o último comentario é de hoje, resolvi escrever aqui mesmo.
Eu tenho que testar o envio da NF-e com o certificado do meu cliente, isso eu já sei. Queria saber se colocando como homologação eu posso testar as NF-e sem que nenhuma delas tenha valor fiscal.
Muito Obrigado
Olá Bel,
Vc. pode enviar quantas notas necessárias para o servidor de Homologação usando o certificado do cliente, pois, não tem valor fiscal.
Sds,
Mesmo assim eu tenho que cancelar estas nfes de homologacao? Ou não precisa?
Não necessáriamente, as NF-e enviadas para o servidor de homologação serão simplesmente ignoradas, pois, não possuem valor fiscal. Acredito que, deve aproveitar os testes para executar inclusive cancelamentos e inutilização de números; dessa forma garante que seu sistema está pronto para o uso em produção.
Sds,
Caio,
Estou com um probema meu CFOP tem na tabela 7 digitos e na nf-e o padrão é 4, como faço para remover esses 3 digitos.
Desde já agradeço
Olá Adriano,
De fato, o CFOP tem apenas 04 dígitos. Dá uma olhada no link abaixo e veja o que está errado na sua tabela.
http://www.sefaz.pe.gov.br/flexpub/versao1/filesdirectory/sessions398.htm
Sds,
Então Caio,
Eles utilizam os outros 3 digitos para referenciar algo no produto que não sei direito, então pensei em alguma função que retirasse os 3 ultimos digitos, será que da certo?Mas não tenho idéia de como implementar essa função, se puder me ajudar agradeceria muito.
Bom, isso é simples, primeiro vc tem que identificar a parte do código que corresponde à CFOP; em seguida vc pode usar uma função “copy” do Delphi para fazer isso.
Ex. Sendo o código = “0005102″
onde: 000 ???
5102 CFOP
Caio
Muito Obrigado, deu certinho mas cara quanto vc pensa que já passou vem outro mais cabeludo, tem uns caso como em (qCom,vUnCom,vProd) onde eles colocam valores padrão (12,16,15) no banco os valores estão normal não com 12 digitos.Como posso fazer que esses valores sejam exibidos da forma do Layout.
No meu XML tá assim
470
1.99
935.3
Mais uma vez obrigado pela atenção dada a todos
Repare no “Manual de Integração” de integração o campo “qCom” por exemplo; a coluna tipo indica “N” Tamanho “12″ e Dec “4″, segnifica que, esse campo é do tipo numérico, seu tamanho é no máximo 12 digitos e tem que ter 4 casas decimais.
Você tem que criar uma função para formatar os campos de dados assim, basta passar o valor do campo original e recebê-lo formatado:
Veja o exemplo abaixo de uma função exemplo, para formatar os valores numéricos do XML da NF-e:
Olá caio
Estou com o seguinte código
while not frmBrowseNotas.QItensNota.eof do
begin
Inc(intConta);
H01 := A01.ChildNodes['infNFe'];
H01.ChildNodes['det'].Attributes['nItem'] := intConta ; //número do item
// produtos e serviços da nfe
I01 := H01.ChildNodes['det'];
if frmBrowseNotas.QItensNotaCD_ITEM.AsString = ‘999999′ then
I01.ChildNodes['prod'].AddChild(‘cProd’).NodeValue := frmBrowseNotas.QNotasCD_NATUREZA_OPER.AsString+’9999′ // Código de produto ou serviço
else
I01.ChildNodes['prod'].AddChild(‘cProd’).NodeValue := frmBrowseNotas.QItensNotaCD_ITEM.AsString;
I01.ChildNodes['prod'].AddChild(‘cEAN’).NodeValue := ” ; // GTIN
I01.ChildNodes['prod'].AddChild(‘xProd’).NodeValue := RemoveAcento(frmBrowseNotas.QItensNotaDESCRICAO.AsString); // Descrição do produto ou serviço
I01.ChildNodes['prod'].AddChild(‘NCM’).NodeValue := frmBrowseNotas.QItensNotaCD_IPI.AsString ; // Código NCM http://www.sefaz.go.gov.br/netaccess/exportacao/manual/TabelaNCM.pdf
I01.ChildNodes['prod'].AddChild(‘EXTIPI’).NodeValue := frmBrowseNotas.QItensNotaCD_IPI.AsString ; // EX_TIPI // somente para
I01.ChildNodes['prod'].AddChild(‘genero’).NodeValue := ‘51′ ; // Gênero do produto ou serviço
if len(frmBrowseNotas.QNotasCODIGOFISCAL.AsString) > 4 then
begin
MessageDlg( ‘A geração da Nfe não permite CFOP maior que 4 caracteres’+frmBrowseNotas.QNotasCODIGOFISCAL.AsString, mtInformation, [mbOk], 0);
Abort;
end;
I01.ChildNodes['prod'].AddChild(‘CFOP’).NodeValue := frmBrowseNotas.QNotasCODIGOFISCAL.AsString; // Código fisccal de operações e prestações
I01.ChildNodes['prod'].AddChild(‘uCom’).NodeValue := frmBrowseNotas.QItensNotaABREVIATURA.AsString ; // Unidade comercial
I01.ChildNodes['prod'].AddChild(‘qCom’).NodeValue := RetiraPontosdeFloats(strzeroo(frmBrowseNotas.QItensNotaQUANTIDADE.AsFloat,0,4 )); // Quantidade comercial
I01.ChildNodes['prod'].AddChild(‘vUnCom’).NodeValue := RetiraPontosdeFloats(strzeroo(frmBrowseNotas.QItensNotaVALOR_UNITARIO.AsFloat,0,4)); // Valor unitário de comercialização
I01.ChildNodes['prod'].AddChild(‘vProd’).NodeValue := RetiraPontosdeFloats(strzeroo(frmBrowseNotas.QItensNotaVALOR_UNITARIO.AsFloat*frmBrowseNotas.QItensNotaQUANTIDADE.AsFloat,0,2)) ; // Valor total bruto dos produtos ou serviços
I01.ChildNodes['prod'].AddChild(‘cEANTrib’).NodeValue := ” ; // GTIN
I01.ChildNodes['prod'].AddChild(‘uTrib’).NodeValue := frmBrowseNotas.QItensNotaABREVIATURA.AsString ; // Unidade Tributável
I01.ChildNodes['prod'].AddChild(‘qTrib’).NodeValue := RetiraPontosdeFloats(strzeroo(frmBrowseNotas.QItensNotaQUANTIDADE.AsFloat,0,4 )); // Quantidade tributável
I01.ChildNodes['prod'].AddChild(‘vUnTrib’).NodeValue := RetiraPontosdeFloats(strzeroo(frmBrowseNotas.QItensNotaVALOR_UNITARIO.AsFloat,0,4 )); // Valor unitário de tributação}
J01 := H01.ChildNodes['det']; //identificação da NF-e
J01.ChildNodes['imposto'].AddChild(‘cUF’).NodeValue :=’01′;
Quando vou gerar o xml no while parece que as as tags se agrupam
-
-
10029990135
MPR200 MASSA P PASTEL ROSSI PEQ PCT 200 G
0
0
51
5102
PC
6.0000
1.1000
6.60
PC
6.0000
1.1000
10050040077
HBV020 HAMBURGUER BOVI PERDIGAO 36PC 56G
16023200
16023200
51
5102
CX
1.0000
13.8900
13.89
CX
1.0000
13.8900
-
-
01
01
-
Estou mexendo nisso a um bom tempo, mas sem sucesso
Olá Paulo,
Dá uma olhada no exemplo desses post (http://www.caiooliveira.com.br/?p=72)
Sds,
Caio,
Que opção tem o cliente quando o sistema da sefaz está fora do ar?
Pelo que eu saiba o danfe só pode ser impresso quando a nfe está autorizada para uso…
Existe alguma alternativa para a circulação da mercadoria?
Contingência. Vc pode imprimir o DANFE num formulário especial. E enviar as NF-e emitidas em contigência assim que o sistema voltar.
Dá uma olhada nesse link para mais informações: Manual de Contingência
Sds,
Caio,
Estou com um ‘problemão’
è o seguinte:
Ta tudo pronto DANFE, xml, etc
O que acontece é que quando testo o programa no meu PC ele gera direitinho o xml, no entanto, quando testo o mesmo programa no PC do meu cliente aparece escrito na tag ‘infNFe’ xmlns:”"Id NFe… antes mesmo de assinar e gerar o lote
O problema, como vc deve ter visto, é esse ‘xmlns’ que aparece do nada na frente do Id da nota.
Eu não sei o que fazer para consertar, pois no meu pc funciona normalmente…
Se voce puder me dar uma luz te agradeço muito. :’(
Bel.
Olá Bel,
“xmlns” é usado para referenciar os “namespaces” do XML. No caso do XML da NF-e vc. deve informar como atributo da tag “NFe”.
Veja um modelo do cabecalho da NFe abaixo:
Boa dia,
estou com um problema no tratamento do IPI
considerando os campos 255, 256, 257 e 258
o manual diz: informar os campos 257 e 258 caso o cálculo ip ipi seja por aliquota ou os campos 255 e 256 caso o calculo do ipi seja valor por unidade.
estou entendendo que:
1) 257 e 258 qdo o calculo for por percentual = 1000,00 x 12% = 120,00
2) 255 e 256 qdo o o calculo for por pauta =
10 (unid) x 0,26 (pauta) = 2,60
O problema é que o sefaz PR está retornando com falha na estrutura. Usando o verificador do schema na dll DemoNFe_Uti testando algumas variaveis dá a entender que eles estão forçando que seja informada a aliquota e o valor do ipi ( campos 257 e 258 ). Só que meu cliente usa ipi pautado, então pelo manual tenho que informar o 255 e 257.
acho que resolvi
consegui validar com a DemoNFe_Util. Só que do jeito que consegui validar fica um pouco diferente do manual.
MANUAL:
50
10.0000
0.2600
SOLUÇÃO:
50
10.0000
0.2600
2.60
MANUAL:
IPITrib
CST 50 CST
qUnid 10.0000 qUnid
vUnid 0.2600 vUnid
IPITrib
SOLUÇÃO:
IPITrib
CST 50 CST
qUnid 10.0000 qUnid
vUnid 0.2600 vUnid
vIPI 2.60 vIPI
IPITrib
Olá Caio,
Me tire uma dúvida em relação a cardinalidade do Layout da NFE, quando o campo Ocorrência esta 1-1 é que tem que ser obrigatório aparecer pelo menos um dado e quando esta 0-1 é que pode ser obrigatório ou não.
E outra dúvida que tenho é a seguinte a XML foi gerada, depois validada e seu retorno esta OK, tem algum lugar onde possa visualizar essa NF-e em ambiente de homologação.
Desde já agradeço
Olá Adriano,
Sobre a primeira pergunta:
1-1 — indica que a Tag deve ocorrer uma vez (obrigatório).
0-1 — indica que a Tag e opcional e se houver, ocorre apenas uma vez.
Consulte a SEFAZ do seu estado para verificar a disponibilidade desse recurso para o ambiente de homologação.
Na SEFAZ-MT, por exemplo, vc pode consultar as NF-e autorizadas no amnbiente de homologação no endereço: http://homologacao.sefaz.mt.gov.br/nfe/portal/consultanfecompleta
Sds,
Caio,
Falando em SEFAZ-MT, gostaria de saber seu ponto de vista em relação a condição do serviço de transmissão de NFe aqui no Mato Grosso.
A conexão é de boa qualidade? Raramente o sistema fica fora do ar? (será que é?!?!
)
Obrigada,
Bel.
Olá Bel,
Nós já implantamos em três estados até o momento e, SEFAZ-MT foi a que deu menos trabalho (exceto, pelo fato de que vc. não consegue informação nehuma diretamente com eles se precisar).
Desde Outubro/2008, não temos tido problemas com o funcionamento do serviço da SEFAZ-MT.
Sds,
Olá Caio
Gerei a chave de acesso, mas quando vou consultar na SEFAZ-SP ocorre o seguinte erro:
“Ocorreu uma falha no processamento da requisição.
O sistema não pode encontrar a nota fiscal, certifique-se que a chave de acesso esteja correta”
Já verifiquei minha chave e ela esta correta obdecendo os padrões da nfe, no meu programa ela dá como LOTE RECEBIDO COM SUCESSO.O que pode esta ocorrendo
Olá Adriano,
Repare que vc enviou o lote e recebeu o retorno “Lote Recebido com Sucesso”; agora, vc. precisa fazer uma consulta usando o número do recibo para saber se a NF-e foi “autorizada”. Quando vc não consegue localizar a NF-e pela chave de acesso, após enviada, o motivo é que ela foi rejeitada; consulte o recibo e veja o motivo da rejeição.
Sds, Caio
Olá pessoal,
No grupo I o campo NCM está com a ocorrência 0-1, ou seja, não é obrigatório.
As indústrias são obrigadas a informar o NCM, mas empresas cadastradas no simples não. Aqui no PR já tentei enviar em branco, com oito zeros, mas sempre retorna com falha no xml, só dá certo se informar o NCM. Já conversamos com o Sefaz, mas deram uma de político jogando o problema para a receita federal, pois o NCM foi “inventado’ por eles.
Preciso de uma luz para driblar o conteúdo desse campo. Abraços…
Caio,
Verifiquei o codigo do retorno aquele com 15 digitos, oque apareceu foi a seguinte descrição:
2SP_NFE_PL_005b215Rejeição: Falha no schema XML35
O que quer dizer falha no esquema XML.Isso foi na validação
Olá RodrigoM,
Repare que vc. não deve informar essa tag caso não possua o código NCM do produto (informar em branco vai ser rejeitado também); vc deve suprimir a tag nesse caso.
Sds,
Olá Adriano,
Repare que eles estão usando a nova versão do schema (PL_005b); caso não tenha atualizado, atualize seus schemas agora (http://www.nfe.fazenda.gov.br/portal/docs/PL_005b.zip.
Repare que a crítica gerada posteriormente no servidor da SEFAZ é um pouco mais detalhada e ali é verificado alêm do schema, o conteúdo dos campos; dessa forma, pode acontecer da NF-e passar no validador e ser recusada quando entregue. Nesse caso, o motivo da rejeição deveria ser o suficiente para entendermos, mas, acontece também, da mensagem de retorno da consulta do recibo, ser bastante subjetiva “Falha no SCHEMA XML” como nesse nesse caso, a única saída e tentar descobrir o motivo, revendo todo o processo.
Sds,
Ola Caio,
Eu estava pegando o arquivo errado para fazer a verificação dos dados, o erro que acontece é esse abaixo, foi uma falha lhe passar os dados errados, mas mais uma vez muito obrigado por me nos ajudar nessa tarefa de criação do sistema da nfe, se puder me ajudar fico muito agradecido.
2
SP_NFE_PL_005b
350000002502332
239
Rejeição: Cabeçalho – Versão do arquivo XML não suportada35
Valeu
Adriano,
Se vc está conseguindo assinar, pode ser apenas a versão do arquivo informada que está inválida, a versão tem que ser “1.10″; repare na estrutura exemplo do XML abaixo:
se não for isso, me passe o XML que vc. está enviando para que possa dar uma olhada.
Sds
Olá Caio,
Bem estou verificando toda minha estrutura XML, e verifique que meu campo CEP esta vindo como String de minha base de dados e no meu código esta assim:
fXmlTextWriter.WriteStartElement(‘CEP’);//Código do CEP
fXmlTextWriter.WriteValue(SQLQryCEP1.AsString); fXmlTextWriter.WriteEndElement;
Mas na documentação solicita Tipo N, ja utilizei o strToInt porém na hora de validar esta dando erro, se poderia me informar qua função poderia esta utilizando
Obrigado
Adriano,
Se campó CEP na sua base de dados está correto, tem que constar obrigatóriamente, 08 digitos numéricos, vc poderia passar direto sem conversão.
Verifique também o caso do CEP que inicia com valor “0″ (Ex. 04340202) se o valor for passado como “4340202″ será rejeitado.
Sds,
Ola Caio,
Mas me tire uma dúvida os campos CEP e Telefone estão na minha base de dados como VarChar, posso colocar na minha nf sem converte-la? Pois lá no Layout solicita campos numéricos.
Olá Adriano,
Sim, repare que o “conteúdo”, ou seja, a formatação do campo (Ex. CEP e Telefone) tem que ser numérica, mas no XML tudo no final vira texto puro; então, se na sua base de dados, os valores já estão formatados, então, vc pode passar isso direto para a tag.
Sds,
Caio,
hoje estava testando o código de barra mas ele é lido assim:
Esta é a chave original:
51080204697970000149550010000003651327827710
Ele me retorna este número quando passo no leitor:
5108020469797000014955001000000365132782771080
Dá pra perceber que apareceu este ‘80′ no final do codigo de barras.
O que é isso?
Se for um problema como devo proceder para consertar?
Muito Obrigado,
Bel.
oi caio,
Meu colega me disse que esse número é um dígito verificador. Mas tenho uma dúvida. Ele tem que ser lido no codigo de barras quando passamos pelo leitor?
Me desculpa se estou falando besteira, mas é a primeira vez que trabalho com código de barras.
Obrigada
Bel.
Olá Caio,
Corrigido a questão dos erros 242 e 239 da area de cabeçalho,pelo que eu entendi a versão do cabeçalho é 1.02 e a versão dos dados é 1.10 depois dessa modifição deu um erro 225 Rejeição: Falha no Schema XML da NFe.
Vou revisar toda minha XML, mas gostaria de saber se tem campos que podem ter ocorrido o erro ,pois como você já tem mais experiência, deve ter se deparado com alguns desses problemas.
Muito Obrigado
Em relação ao Certificado, por exemplo eu tô trabalhando com o certificado da empresa e emitindo nota de outra empresa só como teste, pode haver problemas?Pois tô validando minha nota no Assinador RS e
esta acussando como ASSINATURA INVÁLIDA.
Olá Adriano,
O problema, primeiro, o qual vc já pôde perceber, é que não vai conseguir assinar o arquivo, e em função disso também não consegue testar o envio.
O Ideal é que use os dados do Emitente item dados do Certificado (mesmo CNPJ). Assim vc vai poder fazer todos os testes de homologação sem problemas. Na fase de homologação, as NF-e não têm validade fiscal, portanto, vc. pode enviar tantos testes quanto necessários para garantir que o sistema está preparado.
Sds
Bom Dia Caio,
Estou com uma dúvida com relação ao campo xNome do Destinatário.
Quando é uma Pessoa física colocamos o nome dela, correto? E quando é pessoa jurídica? Colocamos a Razão Social?
Obrigada por tudo, meu projeto está quase pronto!
Bel.
Olá Caio,
Então seu eu mudar somente o CNPJ do emitente da para o meu da para trabalhar com meu certificado, pois fiz isso e fui no site da SEFAZ RS onde existe o Validador de mensagens do Projeto NF-e e continua apontanto o seguinte erro:
Resultado da Validação do Schema e Conferência da Assinatura:
PARSER XML: OK
TIPO DE MENSAGEM: NF-e
SCHEMA: OK
ASSINATURA XML: Assinatura ***INVÁLIDA***
O que pode ser?
Desde já agradeço
Caio esqueci de te perguntar HEHE
Nas Notas fiscais eletronicas ‘antigas’ do meu cliente(ele estava usando o programa do governo) estava descriminado na natureza da operação o número do CFOP apenas. Minha dúvida é: Isso pode ser feito? Todas minhas NFes estão sendo geradas assim.
Obrigada Denovo
Bel.
Caio vou te incomodar denovo!
No site da Receita fala q o destinatário e o emissor da nfe tem que guardar o documento digital da NFe, qual seria esse documento?
A Nfe assinada?
O Lote enviado?
O retorno da busca do lote(aquele qua aparece ‘Motivo: autorizado o uso da NFe’)
Obrigadão!
Olá Bel,
Referente a descrição da CFOP, eu procuro sempre seguir o protocolo, se ali fala para inserir a descrição então eu programo assim, o validador não vai “pegar” esse problema, mas, futuramente uma validação mais consistente pode vir a rejeitar a NF-e.
Quanto ao arquivamento do documento, sim, o arquivamento é obrigatório, vc pode optar por armazenar os documentos XML das NF-e enviadas ou simplesmente manter a integridade desses documentos no seu banco de dados (dessa forma vc. pode inclusive gerar o documento XML novamente se preciso).
Sds, Caio
Quanto à sua dúvida sobre o “xNome” dados do destinatário, sim, ali vai a razão social da Empresa ou Nome do Contribuinte.
Sds,
Olá Adriano,
Quanto ao uso do certificado, a Razão Social e CNPJ do XML NF-e à ser assinado terão que ser idênticos aos dados do certificado.
Sds,
Caio,
Bem acertei a razão social e o CNPJ a chave de acesso esta correta porém no ambiente de homologação do SEFAZ da erro ai fiz a consulta com o numero do retorno aquele de 15 digitos, porém ao consultar da o erro 225, ja verifiquei minha XML mas não encontro o erro. Você pode me ajudar achar esse erro. Algum ponto no qual que eu possa analisar, pois ele assina, valida e retorna com sucesso mas a consulta da o erro abaixo.
Mensagem do erro:
2
SP_NFE_PL_005b
350000002527029
225
Rejeição: Falha no Schema XML da NFe
35
Tks
Caio,
Eu tinha perguntado antes mas acho que voce nao viu
É que no manual do contribuinte, eles falam para adicionar o dígito verificador (modulo103) no código de barras da nota fiscal, entao a leitura do meu código assim está correta?:
5108020469797000014955001000000365132782771080
Esse ‘80′ no final é o digito verificador do código de barras
Desta forma a chave fica com 46 caracteres
É assim mesmo?
Obrigada,
Bel.
Olá Bel,
Desculpe, passou em branco
, esses dois dígitos correspondem sim ao DV gerado pelo padrão Code 128c baseado no número da chave de acesso.
Sds, Caio
Ps. Não fiz os cálculos para confirmar se está certo, mas, na página 73 do Manual de Integração tem informações completas de como calcular o DV.
Eu sei caio ehhehhe
é que nao sei se quando passo o código no leitor de cod de barras ele tem q aparecer, pois pelo que eu vi por aí o código é para mostrar a chave de acesso apenas..
Quanto ao módulo 103 eu fiz baseado no manual e realizei diversos testes com minha função e todos deram certo
Obrigado Caio,
Bel
Caio,
Se eu mandar uma nfe e ela for rejeitada, eu posso reutilizar esse número em outra nota fiscal?
Obrigadão,
Bel.
Caio, mais uma pergunta:
O cProd pode ser um código interno da empresa para os produtos ou tem que ser efetivamente o código de barras que o produto carrega?
Obrigado denovo e desculpa, estou nervosa porque semana que vem meu programa vai estar em uso e é meu primeiro projeto.
Bel.
Olá Caio,
Verifiquei toda minha XML, fui testar no sefaz de SP e da o seguinte erro:
Ocorreu uma falha no processamento da requisição.
O sistema não pode encontrar a nota fiscal, certifique-se que a chave de acesso esteja correta.
A minha chave esta obdecendo o Manual: UF+AAMM+CNPJ DO EMITENTE + MODELO + SERIE + NUMERO DA NF + CODNF + DV
E quando vaido no meu programa da erro 225, gostaria de saber quais são os principais pontos que tenho que observar pois já vi várias vezes e não encontro o erro.
Obrigado
Caio,
Estou testando minha nf-e no programa emissor de SP, e esta dando o seguinte erro: Emissor não habilitado para emissão da NF-e 203, precisa se credenciar para emitir a NFE na base de testes.
Olá Adriano,
A Empresa tem que estar credenciada, mesmo quando homologação, solicite o credenciamento do seu cliente junto à SEFAZ do seu estado.
Sds,
Olá Bel,
o cProd deve conter o código do produto conforme seu sistema ou, caso não tenha, coloque o CFOP nesse campo.
Quando a NF-e é rejeitada o número não pode ser usado para outra Nota Fiscal, eu uso aqui inutilizar o número quando isso aconteçe.
Sds,
Sds,
Gostaria que me ajudassem a decifrar o que está acontecendo na instalação do Delphi 5, pois, quando executa a instalação aparece um erro desconhecido e pede um arquivo *.cnf. Já tentei instalar de várias maneiras (CD, DVD, puxando pela rede …) e sempre aparece esse erro. Obrigado.
Olá Caio,
Me de uma ajuda fiz a Geração da XML, a validação e sua assinatura, o meu problema agora esta na geração do lote, como vou colocar a TAG enviNFE na minha XML já assinada, vi seu exemplo mais estou trabalhando com RAD STUDIO DELPHI 2007.
Esse idLote pode ser um RANDOM?
Desde já agradeço
Olá Adriano,
Eu não testei no RAD Studio 2007, mas, o exemplo deve funcionar sem problemas nele também visto que conta com o componente TXMLDocument (http://www.caiooliveira.com.br/?p=63);
Sds,
O Id do Lote deve ser um número sequencial.
Sds
Olá Alisson,
Tive problemas para instalar o Delphi 5 no Win Vista; exceto isso deve ser problema na mídia.
Sds,
Admin,
Está acontecendo o seguinte:
Tenho meu programa para instalar no cliente que estava usando o programa do governo. Eu preciso começar a numeração da nfe de onde ele parou pois é sequencial, isso eu sei. Até aí tudo bem. O programa do governo mostra a numeração da nfe, só que essa ‘BENÇÃO’ de programa nao mostra o numero do lote.
Eu posso começar os lotes do zero( a partir da numeração 000000000000001), ou vou ter que dar um ‘jeito’ de descobrir a numeração do lote atual?
E duplicidade do lote??Não acarreta problemas??
Olá Bel,
Na dúvida, inicie com o número do lote igual ao número da última NF-e emitida, já que sempre vc vai ter mais NF-e´s do que lotes enviados ou no mínimo o valor é o mesmo (quando é enviada uma NF-e por lote).
Sds, Caio
Obrigado. Acredito que seja problema nas mídias tb.
Abraços!!!
Caio, com relaçao a guarda de documentos estou guardando o arquivo envNFe gerado em uma pasta e, em outra pasta a Resposta ao processamento do lote, autorizando o uso da nota fiscal eletronica.
Assim está correto?
De qualquer forma, quero te agradecer Caio, pois sem esse blog eu ia demorar muito para terminar. Parabéns pela iniciativa!
Bel.
Olá Caio,
Bem a ultima mensagem que deixei não ficou muito clara , então venho postar a dúvida novamente, bem meu problema esta com a transmissão da XML de cancelamento, na parte de cancelamento já fim a sua geração, assinatura, mas quando faço a transmissão(foi baseado na mesma ideia de transmissão da NF-e).Vendo os exemplos de envio de xml de cancelamento esta OK nele a um ID com a chave de acesso precedido do literal ID de tamanho 46, mas analisando o exemplo de retorno ele gera o mesmo campo ID com o numero do protocolo.
Minha duvida é como gerar essa ID.
Olá Bel,
Na minha opinião, a melhor maneira de guardar os dados é o formato original, ou seja, uma cópia (backup da base de dados); dessa forma vc pode gerar os XML novamente quando necessário e quantas vezes forem necessárias ou, outro formato qualquer quando vier e como vier à ser solicitado.
Sds, Caio
Olá Adriano,
Respondi essa questão no comentário anterior . Dá uma olhada lá (http://www.caiooliveira.com.br/?p=65#comment-462);
Sds.
Olá Caio,
O cancelamento deu certinho agora esta já em funcionamento a emissão e o cancelamento.
Vou partir agora para a INUTILIZAÇÃO
Caio muito obrigado…
Caio,
Eu estou guardando eles no formato xml, da forma como ele é gerado. Meu programa envia e nfe no lote e depois salva em uma pasta o lote enviado, em outra a Nfe enviada e ainda o retorno do processamento do lote(aquele que diz se a NFe está autorizada ou nao). Todos eles são salvos no formato xml, podendo ser visualizados pelo browser da internet.
No danfe eu informo ainda, como informação adicional o numero do protocolo e a data e hora da autorização. O mesmo pode ser impresso quantas vezes for necessario
Vc falou que teria que salvá-los de uma forma que pudesse gerar o xml novamente.
Entao, estou salvando os XMLs já gerados.
Me desculpe se falei besteira.
Obrigada novamente,
Bel.
Caio,
esqueci de esclarecer tbm, se eu precisar validar essa nfe denovo, ou até mesmo enviar uma nfe gerada anteriormente, eu posso faze-lo, pois meu programa dá a opcao ao meu cliente de abrir o xml e utilizá-lo como se ele tivesse sido gerado na hora.
Obrigado,
Bel
Certo Bel, agora imagine que lhe seja solicitado enviar os dados em um outro formato: relatório sintético, arquivo formato Sintegra, arquivo formato livro eletrônico, etc. Por isso, acho importante manter como backup, os dados originais (o seu banco de dados original) para poder gerar os dados em outro formato qualquer que venha à ser necessário; inclusive gerar o XML novamente se for o caso.
Sds,
Olá Caio,
Bem meu programa de NF-e esta quase na fase final, estou com um probleminha que é na hora que faço qualquer ação (geração, cancelamamento…) ele abre uma telinha para fazer a seleção do certificado, gostaria de saber se há como fazer isso automatico.
Desde já agradeço
Bom dia Adriano,
Como era uma dúvida de muitos. Publiquei agora à pouco um exemplo de como fazer isso aqui no Blog, dá uma olhada.
Sds,
Olá Caio,
Bem já foi terminado os passos (geração, cancelamento, as consultas e integração), bem eu fiquei em dúvida em relãção a integração queria saber oque significa, liguei na SEFAZ mas ele não foi bem claro.Gostaria de saber oque é inutilização, qual é sua função?
Desde já agradeço
Olá Adriano,
Veja quando se fala em “integração” nesse projeto, estamos falando de todos os componentes e recursos necessários para que seu sistema atenda aos requisitos. Ou seja: Geração, Consultas, Cancelamento, Inutilização, Homologação e arquivamento.
A Inutilização é uma função disponibilizada no serviço da NF-e para que vc. possa “inutilizar” os números das NF-e enviadas ou não; as enviadas, que por algum motivo não foram aceitas (foram rejeitadas) e portanto não são passíveis de cancelamento. Ou, para inutilizar algum número que por ventura não tenha sido utilizado pelo seu programa (nesse caso, acredito que por alguma falha de sequenciamento).
Sds, Caio
Usamos a função de inutilização de números aqui especificamente para inutilizar as NF-e que por algum motivo não tenham sido autorizadas.
Sds, Caio
Olá Caio,
Estava lendo a documentação e estou com um problema de colocar os nomes nos meus arquivos xml, como ele solicita a chave de acesso + -nfe, no caso quando for a geração da NF-e, como faço para pegar da minha xml e colocar o nome do arquivo, nos padrões da nf-e.
Desde já agradeço
Olá Adriano,
Desculpe a demora, final de ano…, olha, o ideal é gerar o arquivo já contendo a nomenclatura correta, mas vc. pode manipular o arquivo e salvar com outro nome de maneira simples; por exemplo; carregando num memo e salvando com outro nome.
Sds, Caio
Caro Caio,
Obrigado, pelo seu trabalho e esforço.
Também estou trabalhando para desenvolver um emissor de NFE aqui na empresa, mas desculpe a ignorancia, mas poderia me ajudar a entender quando eu usaria a
Função para gerar Chave de Acesso NF-e?? Pois achei interessante e gostaria de utiliza-la, é no caso de contingencia??
Obrigado,
Celso.
Olá Celso,
É bom saber que as informações aqui estão sendo uteis. Quanto à sua dúvida, repare que um dos campos de dados da NF-e é a “chave de acesso”; é uma das informações mais importantes do arquivo XML da NF-e, pois, nela estão vinculados todos os controles de validação da NF-e e, antes de gerar qualquer arquivo de NF-e vc precisa gerar a chave de acesso.
Eu lhe aconselho dar uma boa lida no “Manual de Integração do Contribuinte” (leitura essencial) antes de prosseguir. Informações sobre a chave de acesso vc. encontra na página 69 desse manual. No mais tem algumas dicas legais aqui no Blog e também indico uma visita no “Blog da NFe”.
Boa sorte e sucesso com o projeto.
Sds,
Boa tarde a todos,
Estou na etapa final do projeto da NFe, estou apenas com 1 problema, quando eu envio o meu lote, ele me retorna o seguinte erro -> Rejeição: Digito Verificador da chave de acesso composta inválida.
Já ferifiquei o meu Modulo11 e está tudo certo, até peguei alguns xml de exemplos no site do sefaz rs e meu módulo gera o DV perfeito. Se alguem souber como resolver, por favor me informe.
Grato a todos.
Olá Thiago,
Verifique a tag “infNFe” do seu XML e veja se vc não esqueceu de acrescentar o literal “NFe” no atributo “Id”.
Sds,
Então, estou usando certinho, até colei ai embaixo pra vc ver.
E o URI esta da seguinte forma:
infNFe Id=”NFe35081054502273000163550010000357010000357012″ versao=”1.10″
Reference URI=”#NFe35081054502273000163550010000357010000357012″
Olá Thiago,
Me passe uma cópia do arquivo XML dessa NF-e para que possa dar uma olhada, pois, verifiquei a chave de acesso e realmente está correta, o problema está em outro ponto.
Só a titulo de observação, o campo código numérico da chave de acesso, percebi que vc está repetindo ali o número da Nota; esse campo deve ser preenchido com um número aleatório. Não sei se isso poderá lhe trazer problemas mais tarde. Veja na função desse artigo como fazer isso.
Sds,
Então, pelo que andei lendo este código é do controle do criador, não afetando, mas não custa nada eu colocar um aleatório para tentar.
Em qual e-mail posso estar te passando o XML ??
Muito obrigado pela atenção.
Thiago,
o meu e-mail de contato é: caiooliveira.com.br
desculpe caio@caiooliveira.com.br
Então, eu gerei com um código aleatório e esta dando o mesmo problema. Estou te enviando no e-mail.
Vlw mesmo.
Já mandei o e-mail.
Bom dia
Qdo existe alguma irregularidade com o cnpj do destinatário o status retornado pelo sefaz é DENEGADO.
Pelo que li, não posso utilizar, cancelar ou inutilizar a numeração de uma nfe denegada.
Como vocês estão tratando esta nfe denegada nos livros fiscais e apuração de impostos ?
Olá Rodrigo,
Quando a NF-e tem o status definido como “DENEGADO” na SEFAZ; então, em se tratando de registro fiscal, hoje temos várias situações. Se ainda estiver usando o SINTEGRA; então vc. deve preenche o campo “17″ do Registro 50 como “2″ (que foi incluso no sintegra para atender aos requisitos da NF-e). Agora, com o novo sistema de “Escrituração Fiscal Digital”, se vc olhar na “Tabela 4.1.2-Tabela Situação do Documento” essa NF (COD_SIT) vai ter o codigo 04 “NF-e Denegada”.
Sds,
Sds, Caio
Alguém sabe como posso criar um link para a consulyta da NFE, passando como parâmetro a chave de acesso?
Olá Jonatas,
Se vc. está querendo fazer isso usando o site da SEFAZ não será possível. Para fazê-lo vc. pode usar a “consultaNF” disponível na NFE_UTIL.dll por exemplo.
Sds,
Olá Caio,
Consigo importar meu NFe.xml assinado no Emissor de SP e transmitir normalmente. Mas, quando tento fazer o mesmo usando o DemoNFe_Util do NFe_Util.DLL da o erro abaixo. Vc pode me ajudar?
Erro: A conexão subjacente estava fechada: Não foi possível estabelecer relação de confiança para o canal seguro de SSL/TLS. (Causa provável da falha na conexão: a cadeia de certificação do WS acessado ou do certificado cliente inexistente no repositório de certificados do Windows)
Sds,
Clelson
Ola Clelson,
Esse erro pode ser resolvido instalando a cadeia de certificados completa. Verifique se no seu Estado não exige a instalação de uma “cadeia certificadora” específica.
Sds,
E clipper velho de guerra strzero() t m sou clipperiro []s mto bom o codigo
Olá, será que alguém teria a função para gerar o digíto verificador do Código de barras????
Não consigo desenvolver tal procedimento!
Daiane
Já consegui resolver meu Problema postado à cima!
Daiane
Ao enviar o arquivo p/ sefaz recebo o seguinte retorno:
Nf nº1 rejeitada, motivo 215 – falha no esquema xml.
Preciso saber se esse erro é do sistema que estou utilizando que está gerando esse arquivo errado, ou o quê?
Olá Suellen,
O erro 215 (Falha de Schema) se refere à análise de erros na área de dados; o que significa alguma informação inválida. Infelizmente o serviço da SEFAZ não devolve qual campo ou informação está sendo recusado.
Sds,
Olá Caio!
Estou com um problema, será que vc poderia me ajudar?
Apaguei sem querer os recibos dos Estados do Sintegra do disquete, será que tem com recuperá-los?
Abraços, Douglas.
Oi Douglas,
Não tenho experiência nesse assunto mais, acredito que se não formatou o disquete é possível sim. Outra coisa, assim que recuperar (dá uma procurada na Web) copie esses dados para um “pen drive” (disquete já era…).
abços
Ola gostaria de saber como e gerado esse Id?
se alguem puder me ajudar …. grato
Olá Thiago,
Veja no post “Cálculo Módulo 11).
Sds.
boa noite,
como tratar o campo CNPJ do destinatário na exportação ?
o destinatário possui o número do RUC, que substitui o cnpj.
Até
muito boa esta funcao.
parabens por voce compartlhar esta funcao que vai economizar um tempo de trabalho
parabens pela sua atitude
Olá RodrigoM,
Desculpe a demora, achei que tivesse respondido o seu comentário. Não temos clientes usando exportação e, por isso, não vivenciei esse problema; porém temos o caso do DF (Distrito Federal) onde temos que informar um codigo de cadastro da Empresa no DF no lugar do CNPJ (mesmo campo). Já que não existe um campo específico nesse caso acho que terá que fazer o mesmo.
Sds, Caio
Caio
Bom Dia
Por favor poderia me ajudar, também estou enfrentando problemas de erro 239 – Rejeição: Cabeçalho – Versão do arquivo XML não suportada, quando consulto uma nota fiscal enviada. Aonde eu posso estar errando? Já estou com esse problema a alguns dias.
Segue erro retornado pela Sefaz-SP:
2SP_NFE_PL_005c239Rejeição: Cabeçalho – Versão do arquivo XML não suportada35
Muito Obrigado
Marcos Vinicius
Olá!
Qual o cabeçalho que deve usar para enviar o XML da Nf-e?
Estou usando este:
“1.10″
Para validar desse modo em meu aplicativo:
wsNfeEnvio.nfeRetRecepcao(vNFeCabecMsg, ConteudoTodo2)
Só que estou recebendo sempre o mesml XML de retorno:
”
2
1
000000000000000
215
Rejeição: Falha no schema XML
13
”
Meu Xml é o que segue abaixo:
-
000000000000150
-
-
-
13
000000073
VENDA DE PROD ESTAB
1
55
4
27
2009-04-01
2009-04-01
1
1302603
1
2
0
2
1
0
LFS 1.0.00
-
04672291000115
COPLAST – IND.E COM.DE RESID. PLAST LTDA
COPLAST INDUSTRIA
-
AV. DOS OITIS, 571 – DISTRITO INDUSTRIAL
571
DISTRITO INDUSTRIAL
1302603
MANAUS
AM
69075842
1058
BRASIL
063000440
-
87384103000180
METALURGICA BOEIRA LTDA.
-
RUA IRMAO FRANCISCO BAGATINI,376
376
UNIVERSITARIO
4305108
CAXIAS DO SUL
RS
95040350
1058
BRASIL
542241580
0290093198
-
-
1.18.004.04.0013
GRAN PLAST PS CRISTAL INJ
39031900
39
6101
KG
9000.0000
3.4000
30600.00
KG
9000.0000
3.4000
-
-
-
0
00
3
30600.00
12.00
3672.00
-
-
02
30600.00
0.00
0.00
-
-
02
30600.00
0.00
0.00
-
-
30600.00
3672.00
0.00
0.00
30600.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
30600.00
-
0
-
16422759215
ELEMAR WEBER (RODOVIARIO) (92)36731586/99874988
R.DR.ALFREDO DA MATA,46 S.JORGE
MANAUS
AM
-
JWT6602
AM
11080200772471
-
JWT6592
AM
11080200772471
-
360
SACOS
COPLAST
9000.000
9054.000
-
-
27
30600.00
30600.00
-
000027/1
2009-04-27
5100.00
-
000027/2
2009-05-06
5100.00
-
000027/3
2009-05-18
5100.00
-
000027/4
2009-05-26
5100.00
-
000027/5
2009-06-05
5100.00
-
000027/6
2009-06-15
5100.00
-
N/PEDIDO NR. 027405 10:18 NF. 000027 / 11:11 MERCADORIA 100% NACIONAL CONF. RESOLUCAO N.071/88 SUFRAMA PRODUZIDO NO POLO POLO INDUSTRIAL DE MANAUS EM CASO DE NAO CONFORME INFORMAR O NUMERO DE LOTE ISENTO DE I.P.I. CONF. ART. 69 DECRETO N. 4544/02 MERCADORIA DESTINADA A DCI 100% NACIONAL ( MENSAL ) EMPR.HABIL.PARA PROCED.SIMPL.INTER.NOS TERMOS DO ART.13 INSRF 24202- ADE/ ALFPTOMNS N.35 DE 30/01/03 – DOU DE 31/01/03 PRODUTO ISENTO DE SUBSTANCIAS PERIGOSAS AO MEIO AMBIENTE
-
-
-
-
XS1IZU+IsuOahZcwL2HGtv9XpOI=
YHbPeKs/Rc9iC+WRXGz+QwsIuAJnCfOXgqi6mPfXExJo1myAXm190irrl7TvJ/AbTT0Bs+2YE8CdNXCs/2uRq5+lbO+njyrmIlsGhQOwVJACpcwG7EElkgx83Qh9yC3oI/9xkxfSDlSWzG422YbNN0O8otQHc7Nx8LjzL7vfYuY=
-
-
MIIGyjCCBbKgAwIBAgIQWd9szDCLzH3gPO44Pkf4YjANBgkqhkiG9w0BAQUFADCBgDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEkMCIGA1UEAxMbQUMgRkVOQUNPTiBDZXJ0aXNpZ24gUkZCIEcyMB4XDTA5MDIxMDAwMDAwMFoXDTEwMDIwOTIzNTk1OVowggEAMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDELMAkGA1UECBMCQU0xDzANBgNVBAcUBk1hbmF1czE2MDQGA1UECxQtU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRYwFAYDVQQLFA1SRkIgZS1DTlBKIEExMSMwIQYDVQQLFBpBdXRlbnRpY2FkbyBwb3IgQVIgRmVuYWNvbjFJMEcGA1UEAxNAQ09QTEFTVCBJTkRVU1RSSUEgRSBDT01FUkNJTyBERSBSRVNJRFVPUyBQTEFTVElDTzowNDY3MjI5MTAwMDExNTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApbXisD/lONQPIbH1+jOlf3Yjelx/f0k/ueEhz7X40Ky65MHFwIr1XW6p8RNmAoFXwUdAx2wSSMT/XJbxvyeeQqQdI6PMU+66pHNBoZo+CubXL+ymrhsdmbSwk7SmclXNzgl6ig+LXn70YC4FmRwoDee3zfQmrn4zhRL01+gW53UCAwEAAaOCAz8wggM7MIG3BgNVHREEga8wgaygPQYFYEwBAwSgNAQyMTAxMDE5NDQ0NDAyNjI4NTgwNDAwMDAwMDAwMDAwMDAwMDAwMDAzMjMxMDQ1c3NwU1CgHgYFYEwBAwKgFQQTTFVJWiBNQVJJTyBQSVpaT05JQaAZBgVgTAEDA6AQBA4wNDY3MjI5MTAwMDExNaAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCBF2Zpc2NhbEBjb3BsYXN0YW0uY29tLmJyMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUWMsxj8evIngAjp57FcTkCg9XnMswDgYDVR0PAQH/BAQDAgXgMIIBJQYDVR0fBIIBHDCCARgwXqBcoFqGWGh0dHA6Ly9pY3AtYnJhc2lsLmFjZmVuYWNvbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDRkVOQUNPTkNlcnRpc2lnblJGQkcyL0xhdGVzdENSTC5jcmwwXaBboFmGV2h0dHA6Ly9pY3AtYnJhc2lsLm91dHJhbGNyLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNGRU5BQ09OQ2VydGlzaWduUkZCRzIvTGF0ZXN0Q1JMLmNybDBXoFWgU4ZRaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL1JGQi9BQ0ZFTkFDT05DZXJ0aXNpZ25SRkJHMi9MYXRlc3RDUkwuY3JsMFUGA1UdIAROMEwwSgYGYEwBAgEdMEAwPgYIKwYBBQUHAgEWMmh0dHA6Ly9pY3AtYnJhc2lsLmFjZmVuYWNvbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjCBowYIKwYBBQUHAQEEgZYwgZMwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIwZwYIKwYBBQUHMAKGW2h0dHA6Ly9pY3AtYnJhc2lsLmFjZmVuYWNvbi5jb20uYnIvcmVwb3NpdG9yaW8vY2VydGlmaWNhZG9zL0FDX0ZFTkFDT05fQ0VSVElTSUdOX1JGQl9HMi5wN2MwDQYJKoZIhvcNAQEFBQADggEBAMOM7evwR1XEBv14ZYrIzDgGUJwFvZTjWv2SqcvRWp2wpywoT42D9Hn8S/fa4vHdKl2kQpD4DxQ0ajlDfNSptb5afRS7+XKyrbps7FSlA83VJqq/uYAYuqlVh5OSTuujufNREJCN1UkWPnMl9haKvsPmuRqhR2gTmNZdyQVUuVu37R7HNCt/3fsp7AY3JMxmxtz8mM56GlMJlStB2GAnVvVSUYGTaMbjcmOhN5y9ovPi/QmBt7ZAZXr/kYvC+8ITcUIDaERFSWdhYhviUYIQn9k8Xw7/s/3MEOf2w3cdBrxsdSYbco0Pt171GaK0E81QxjgEAthWV/rLwiUK9bqyOQo=
O que está errado? Meu XML ou meu cabeçalho??
Olá pessoal. Boa tarde.
Estou iniciando agora com essa Nota Fiscal Eletronica.
Meu problema está sendo a chave de acesso, mais especificamente aquele código numérico.
Vi mais acima que vocês usaram a funcao Random pra gerar um codigo aleatorio.
Até aí tudo bem. Mais quando ele gera esse código, ele vai sempre usar o mesmo código pra todas as Notas??
Tenho uma função que checa se a minha chave está correta, e eu colocando um codigo qualquer, essa função sempre ta me retornando que a chave está errada.
Será que alguém pode me dar uma ajuda quanto a isso??
Obrigada,
Cristina
Olá Cristina,
O código numérico deve ser aleatório sim. Cada vez que vc. fizer uma chamada à função ela vai gerar um novo código numérico; portanto essa porção da chave de acesso vai ser diferente para cada nota gerada.
O conjunto de funções acima que gera a chave de acesso está bem testado (usado em produção). Acredito que pode ser útil para vc. Veja mais informações sobre a “chave de acesso da NF-e” no “Manual de Integração do Contribuinte” (pág.71) antes de prosseguir.
Sds,
Sds,
Bom Dia Caio, sobre esta questão da chave, a função “CriaChaveNFe” da NFe_Util gera um código aleatório, eu faço o seguinte, para o parâmetro “codigoSeguranca” da função eu estava enviando um valor aleatório, sendo assim resultava em um valor randômico em cima do meu valor randomico… é correto desta forma, ou devo passar um valor fixo para o parâmetro “codigoSeguranca”?
Desde já lhe agradeço…
Att: Ronaldo
Bom dia Ronaldo,
Olha, eu não uso a função “CriaChaveNFe” da NFe_Util, na verdade uso a função que publiquei nesse post. Mas, o “código numérico” deve ser sempre um valor aleatório, isso garante que sua chave de acesso maior exclusividade da chave de acesso gerada parra a NF-e do seu cliente então, como a função da NFe_Util já faz isso para vc. passe sempre um valor nulo.
Sds,
Melhoria da Funçao Remover Accento
function RemoveAcento(Str:String): String;
Const
ComAcento = ‘àâêôûãõáéíóúçüÀÂÊÔÛÃÕÁÉÍÓÚÇÜ’;
SemAcento = ‘aaeouaoaeioucuAAEOUAOAEIOUCU’;
Var
x : Integer;
Begin
Result :=”;
For x := 1 to Length(Str) do begin
if Pos(Str[x],ComAcento)0 Then
Str[x] := SemAcento[Pos(Str[x],ComAcento)];
Result := Result + Str[x];
end;
end;
if Pos(Str[x],ComAcento) ( Diferente ) 0 Then
Estou tentando enviar a NFe em com tipo de emissão
Scan e está retornando má formação do XML e o mesmo
XMl com tipo de emissão normal da certo.
Até mais…
Caio, boa tarde.
Estamos com problema na geração do XML do Envio do Lote. O XML da nota que vai dentro dele(do Lote) se for colocado para fazer a validação no site da fazenda(http://nfe.sefaz.ce.gov.br/pages/consultaXML/welcome.jsf) o site retorna como um XML válido, mas se coloco o XML do Lote dessa mesma nota o site retorna XML inválido, e mais nenhuma informação.
Isso aconteceu a partir de terça-feira por volta das 10h da manhã. Soubemos que o sistema da fazenda teve uma atualização, mas ainda não sabemos por que nosso sistema não está mais de acordo. Se souber de alguma informação serei muito grato.
Eu tirei NFe em contingencia porem com a chave incorreta. Logo consegui autorização e foi gerada chave diferente da que imprimi na contingencia. Tenho que imprimir novamente a DANFE com chave correta em formulario especial.
Estava tudo certo so faltava eu conseguir colocar a logomarca ate que um dia simplesmente mudaram o layout da danfe para ficar igual a da sefaz ate ai tudo bem mas diminuir o numero de caracteres da descricao do produto foi uma pisada na bola, agora estou tendo um transtorno atras do outro com meus clientes.
Sera que alguem pode me ajudar a resolver este problema.
Urgentissimmo
Eu gostaria de dizer que com o acbrnfe nao precisa desenvolver codigo pra assinar,validar,transmitir etc…
e so usar o demo e no botao criar e enviar fazer o mesmo ler os dados da sua rotina de nota fiscal e pronto
Isso mesmo Mauricio. O ACBRNF-e a NFE_UTIL.dll entre outros que estão sendo disponibilizados agora. Na época em que esse artigo fora publicado esses componentes ainda não estavam disponíveis.
Olá Mauricio,
Vc. pode usar mais de uma linha para a impressão da descrição dos itens quando necessário.
Sds
Ola pessoal.
Tenho uma situação intrigante, se alguém já teve esse problema, por favor comentem:
É o seguinte… Já tenho a aplicação pronta, eviando notas e tudos mais, atualmente utilizo a NFe_util.dll, da Flex Docs para os processos de assinatura e envio. Já tenho diversos clientes utilizando diversos dispositivos, como Leitores de Cartão, Tokens, etc. Mas tenho um cliente que adquiriu o Prtoken Pro, da pronova (www.pronova.com.br), e quando tento assinar a nota obtenho a seguinte mensagem de erro:
“Erro: Ao assinar documento – hash inválido.”
Entretanto, ao utilizar outro dispostivo, o Epass, também da pronova, o processo é realizado com sucesso.
Grande abraço a todos, e até mais.
Olá pessoal, td bom?
Estou tendo o seguinte problema, estou em fase de testes da NF-e, só que quando envio o xml me retorna o seguinte erro: HASH INVALIDO
o meu programador diz q o problema está no meu certificado, ele está certo??? pq isso ocorre??? e c naum for o certificado onde está o erro então???
obrigado
Olá Daniel,
Esse problema está realmente ligado ao certificado/assinatura do arquivo. Procure reinstalar o certificado para ver se resolve.
Sds
Olha bem.. jah desinstalei o certificado, remove as raizes do certificado… reinstalei td novamente.. e o erro continua acontecendo…. soh q quando testo o certificado no e-cac td funciona perfeitamente. Eu uso o certificado da PRONOVA, token e o certificado eh do tipo e-cnpj A3. Mais alguma ideia do q pode estar causando esse erro?? ou oq pode resolver meu problema??
Daniel,
A consulta de STATUS do serviço NF-e funciona?. Esse é o teste mais simples para o certificado no serviço da NF-e. Se funcionar, nesse caso, verifique com o seu programador.
Sds,
Olá,
Alguem conseguiu fazer a comunicação do certificado digital da Pronova usando a linguagem Delphi?
Pois o mesmo, estou com problemas de comunicação com o certificado digital da Pronova. Outra coisa: Estou usando Delphi7/Delphi2006 e Capicons, e mesmo assim não dá certo!
Porém até o momento, sei que o certificado da Pronova funciona no Emissor Gratuito da SEFAZ!
Um fator relevante, que o Emissor Gratuito da SEFAZ é desenvolvido em JAVA.
Alguem conseguiu resolver o problema?
No aguardo.
Agradeço desde já. Obrigado!
Olá,
Continuando o comentário sobre o problema de comunicação do certificado digital da Pronova com o meu programa desenvolvido em Delphi, gostaria de avisar, que realizei os testes com componentes de NF-e das empresas IGARA (http://www.igara.com.br/) e da ACBR, e também apresenta problemas.
Alguem conseguiu resolver o problema? Tem outra solução?
No aguardo.
Bom Dia,
Temos um software de transmissão de NF-e desenvolvido em Genexus.net
Estamos enfrentando o mesmo problema que o Luciano (cmentários acima), com o Certificado A3 da Pronova. Pelo emissor gratuito é emitida normalmente, porém com o nosso sistema, a SEFAZ Rejeita por falha no schema, onde a assinatura não é válida:
” Erro[ 501] – Falha ao assinar o documento [Hash inválido.] ”
Conseguimos comunicação, porém a NF-e não é assinada.
Se alguém conseguir uma solução para os casos, ficamos no aguardo.
Olá, alguem poderia me ajudar a decifrar esse enigma da nota fiscal de serviços da prefeitura de Sao Paulo segue abaixo:
Com base no trecho da mensagem XML apresentada, montamos a seguinte string de caracteres:
“31000000OL0300000000000120070103TNN00000000205000000000000050000002658100013167474254″ posições. 2º – Converta a cadeia de caracteres ASCII para bytes. 3º – Gere o HASH (array de bytes) utilizando SHA1. 4º – Assine o HASH (array de bytes) utilizando RSA-SHA1. ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são feitos através de uma única função. Verifique a documentação de sua linguagem para evitar assinar um hash de um hash.
Como faço para assinar somente este HASH uso a certificação digital, ou apenas assino a string que gera esse HASH com RSA-SHA1 como montar esse enigma alguem sabe?
Luis, estou na mesma situacao. Consegui fazer o hash. Porem a assinatura ainda nao saiu. Voce ja conseguiu ?
Galera estou com um Problema com uma NFe.. Seguinte esta nota esta com o Status= 2 no Banco de dados.. no monitor ela não apareçe pra min…
Como faço para poder autorizar esta nova..
ja fiz de tudoo.. consulto ela no TblNotas… ela apareçe como Status = 2.. consulto no TblNotasChaves.. ela não apareçe… Possiveis soluçoes agradeceria..
Giordani ainda nao consegui formatar uma assinatura que funcione com a prefeitura de Sao Paulo e o que é pior ele não tem suporte pra isso.
GENTE
ESTOU COM DIFICULDADE NA NFE , A SOMA DO (VALOR DOS PRODUTOS + VALOR DO IPI + VALOR DO ICMS ST) ESTA DANDO DIFERENÇA NO VALOR TOTAL DA NOTA.
ALGUEM POR GENTILEZA PODE ME AJUDAR.
GEANE
Olá, Boa Tarde!
Por indicação de colegas do Fórum Contábeis o qual participo, estou aqui para ver se consigo uma solução para meu problema e de vários colegas meu.
No programa do Governo emissor de Nota Fiscal Eletrônica ao excluir uma nota não há + retorno, porém alguns usuários indevidamente efetuaram este processo e não tinham anotados ou impresso a DANFE.
Lento seu Blog e até mesmo o manual da NFe, notei que é feito um calculo, porém no estou conseguindo 2 coisas:
1º Código da NF-e (09 dígitos – número aleatório gerado pelo sistema).
2º Dígito verificador – DV (cálculo módulo 11)
Tem como me passar como descubro isto, ou vc possui uma planilha ou programa que faz este calculo automático para descobrir?
AGRADEÇO – Dep.Fiscal / Emerson
Mococa/SP
será que alguém pode me ajudar,eu emiti a NFe mais da 1 a 6 eu não cancelei e exclui como faço pra cancelar tem como resgatar essa Nfe? e sobre juros e outras coisas mais as Nfe canceladas vão tem o mesmo valor de imposto?
obrigada
Gostaria de uma ajuda, qdo fui abrir o programa da nf-e na quinta feira apareceu uma mensagem para que eu atualizasse o programa, após fazer isso fui emitir minha nota fiscal, na hora de assinar ela não encontra o certificado, aparece a mensagem para que eu verifique se a nota está no local indicado e se tem permissão de leitura. Já o instalei novamente e nem assim.
Estou com minhas vendas paradas desde então.
Se alguém puder me ajudar ficarei agradecida.
O emissor que eu utilizo é o Sefaz.
Nicoli 2742-4917
Ola Caio ja mandei uma solicitação para vc mas não me respondeu estou com o seguinte problema faço acesso a um webservice em java e consumo pelo delphi usando o httprio mas quando estou fazendo uma requisição e mandando um parametro no webservice me responde nulo pq estou mandando junto o xmlns veja um exemplo pratico
wssatcomsathur54332
so que la no solicitarospendente não pode vir com a tag xmlns e eu não consigo tirar pq quem faz tudo é o componente httprio do delphi eu so faço a requisição como resolver ???? por favor me responda se puder.