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: , ,



222 Comentários to “Função para gerar Chave de Acesso NF-e”

  1. Rubem Rocha | junho 18th, 2008 at 15:51

    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.

  2. Rubem Rocha | junho 18th, 2008 at 15:54

    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

  3. Caio Oliveira | junho 21st, 2008 at 17:21

    Não testei ainda, mas pelo código deve ser mais rápida que a minha!.

    abraços

  4. Lorde_MF | junho 30th, 2008 at 15:37

    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

  5. admin | junho 30th, 2008 at 15:47

    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!

  6. Lorde_MF | junho 30th, 2008 at 16:24

    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

  7. Caio Oliveira | junho 30th, 2008 at 16:36

    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!

  8. Lorde_MF | junho 30th, 2008 at 16:39

    Grato amigo, Caio Oliveira

    Estou usando já o NFe_Util.dll sim, sorte mesmo, vou partir pro DANFE então agora,

    Abraços t+

  9. Lorde_MF | julho 1st, 2008 at 11:18

    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

  10. Tonieto | julho 1st, 2008 at 13:37

    onde consigo a NFe_Util.dll ???

    abraços.

  11. Lorde_MF | julho 1st, 2008 at 15:19

    Boa tarde amigo Tonieto

    NFe_Util.dll vc encontra em http://nf-eletronica.com/blog/?p=73

    Abaços

  12. Lorde_MF | julho 3rd, 2008 at 11:00

    Galera como faço p/ validar um XML em DELPHI?
    Vou usar algum Schema?

    Grato

  13. admin | julho 3rd, 2008 at 11:57

    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;

  14. Lorde_MF | julho 3rd, 2008 at 14:30

    como declarar a procedure TfrmNFe.ValidaNFE;

    tá dando erro aqui

  15. Lorde_MF | julho 3rd, 2008 at 15:03

    como declarar a procedure TfrmNFe.ValidaNFE;
    tá dando erro aqui

    também não acho a uses dessas:
    XMLDoc.ParseOptions:= [poResolveExternals, poValidateOnParse];

  16. Caio Oliveira | julho 3rd, 2008 at 15:52

    Olá,

    Vc tem que declarar as units: XMLDoc, XMLIntf e xmldom.

  17. Lorde_MF | julho 3rd, 2008 at 19:47

    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

  18. Caio Oliveira | julho 4th, 2008 at 7:30

    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.

  19. Lorde_MF | julho 7th, 2008 at 10:19

    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

  20. Peke | julho 14th, 2008 at 8:45

    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.

  21. Caio | julho 14th, 2008 at 9:18

    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,

  22. Mauro | julho 15th, 2008 at 19:21

    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

  23. Caio | julho 16th, 2008 at 0:27

    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,

  24. Peke | julho 21st, 2008 at 11:35

    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.

  25. Caio Oliveira | julho 21st, 2008 at 12:07

    Olá Peke,

    Vou verificar isso, ela deveria fazer a validação considerando o schema informado no corpo do XML (parâmetro “poResolveExternals” do parserOptions).

  26. Lorde_MF | julho 22nd, 2008 at 10:22

    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

  27. Lorde_MF | julho 22nd, 2008 at 11:41

    rss não sei o motivo mas o retorno da base de dados me retornava com o espaço no final,,, Resolvido

    Grato

  28. Lorde_MF | julho 23rd, 2008 at 14:11

    Galera preciso anexar o arquivo XML gerado para o arquivo de lote

    Como faço isso no Delphi????

  29. Caio | julho 23rd, 2008 at 15:34

    Olá Lorde,

    Publiquei um exemplo…

    abraços

  30. Cris | julho 24th, 2008 at 16:56

    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 :)

  31. Caio | julho 24th, 2008 at 17:18

    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).

  32. Cris | julho 24th, 2008 at 17:24

    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

  33. Caio | julho 24th, 2008 at 17:31

    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,

  34. Lorde_MF | julho 25th, 2008 at 7:36

    Bom dia amigo caio
    Erro: Falha na solicitação com status HTTP 403: Forbidden.
    é o seu certificado, precisa pegar outro,

    Abraços

  35. Cris | julho 25th, 2008 at 9:49

    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?

  36. Caio Oliveira | julho 25th, 2008 at 15:35

    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.

  37. Rogerio | julho 31st, 2008 at 14:46

    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.

  38. admin | julho 31st, 2008 at 15:22

    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.

  39. Rogerio | julho 31st, 2008 at 16:57

    Valeu, vo estudar isso!! outra coisa , onde posso encontrar o layout do nf-e padrao, para começar?!!
    Obrigado.

  40. Caio Oliveira | julho 31st, 2008 at 17:40

    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).

  41. RodrigoM | agosto 19th, 2008 at 10:28

    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…

  42. admin | agosto 19th, 2008 at 11:17

    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,

  43. Rodrigo Ernandes | agosto 28th, 2008 at 16:56

    Alguem tem um exemplo de uma funcao em delphi pra assinatura do arquivo xml acessando os certificados????????

  44. Claudio | setembro 4th, 2008 at 7:20

    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

  45. Caio Oliveira | setembro 4th, 2008 at 8:03

    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

  46. Claudio | setembro 4th, 2008 at 12:41

    blz consegui homologar com o ISSQN e a tag cListServ
    agora tah dando pau na chave de acesso
    iUHAiuhaiHUiua
    blz Caio, brigadao

  47. Claudio | setembro 8th, 2008 at 8:08

    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

  48. Caio Oliveira | setembro 8th, 2008 at 8:32

    bom dia Claudio,

    Isso ai, vai se acostumando, quando se trata de depender do governo para qualquer serviço profissional é assim mesmo!.

  49. Claudio | setembro 8th, 2008 at 8:32

    ahhh, um irmaozinho que conheci aqui atraves do seu forum esta me ajudando altos tb…

  50. Luciano | setembro 30th, 2008 at 10:23

    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,

  51. admin | setembro 30th, 2008 at 11:02

    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.

  52. RodrigoM | outubro 16th, 2008 at 12:54

    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

  53. admin | outubro 17th, 2008 at 10:59

    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

  54. RodrigoM | outubro 17th, 2008 at 13:39

    Sim Caio, o objetivo é somente identar para facilitar a visualização.

    Obrigado

  55. RodrigoM | outubro 22nd, 2008 at 7:15

    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;

  56. RodrigoM | outubro 22nd, 2008 at 7:18

    estou usando o Delphi 2006

  57. Caio Oliveira | outubro 22nd, 2008 at 7:51

    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

  58. Caio Oliveira | outubro 22nd, 2008 at 7:53

    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,

  59. RodrigoM | outubro 22nd, 2008 at 15:47

    Mas na paleta do delphi tem os componentes indy

    Tem o TidSSLIOHandlerSOcketOpenSSL

  60. admin | outubro 22nd, 2008 at 16:10

    Olá Rodrigo,

    Dá uma olhada nesse post: http://nf-eletronica.com/blog/?p=73

  61. RodrigoM | outubro 23rd, 2008 at 12:11

    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 )

  62. admin | outubro 23rd, 2008 at 12:41

    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,

  63. Edmilson | outubro 24th, 2008 at 20:04

    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

  64. admin | outubro 25th, 2008 at 9:36

    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,

  65. Bel | novembro 6th, 2008 at 16:09

    Caio,

    Por acaso há alguma regra para nomear os arquivos onde salvo a nfe???

    Obrigada!

  66. admin | novembro 6th, 2008 at 16:23

    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

  67. Cristiano | novembro 19th, 2008 at 7:10

    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??

  68. admin | novembro 19th, 2008 at 7:43

    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,

  69. Cristiano | novembro 19th, 2008 at 12:34

    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;

  70. admin | novembro 19th, 2008 at 17:03

    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,

  71. admin | novembro 19th, 2008 at 17:04

    Eu alterei o código do exemplo para a versão 1.10.

    Sds,

  72. Jorge | novembro 21st, 2008 at 12:21

    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?

  73. admin | novembro 21st, 2008 at 12:33

    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:

    AssignFile(F, 'CertificadoDigital.res');
    Rewrite(F);
    Write(F,nomeCertificado);
    CloseFile(F);

    E o código abaixo quando quiser recuperar o nome do certificado salvo anteriormente:

     if FileExists('CertificadoDigital.res') then
      begin
         AssignFile(F, 'CertificadoDigital.res');
         Reset(F);
         Readln(F,nomecertificado);
         CloseFile(F);
     end;

    onde o “nomecertificado” é a sua variável (string).

    Sds,

  74. Jorge | novembro 21st, 2008 at 12:52

    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.

  75. Adriano Cavalcanti Parisi | novembro 25th, 2008 at 12:16

    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

  76. Caio | novembro 25th, 2008 at 12:40

    Olá Adriano,

    A chave de acesso vc. deve inserir na tag “infNFe” como atributo “id”, precedido da constante “NFe”; veja no exemplo abaixo:

    <NFe>
    <infNFe Id="NFe51080824705881000104550010000002357343424504" versao="1.10">
  77. Adriano Cavalcanti Parisi | novembro 25th, 2008 at 13:06

    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

  78. Adriano Cavalcanti Parisi | novembro 26th, 2008 at 7:26

    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;

  79. Caio Oliveira | novembro 26th, 2008 at 8:15

    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,

  80. Adriano Cavalcanti Parisi | novembro 26th, 2008 at 8:52

    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….

  81. Bel | novembro 26th, 2008 at 9:24

    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

  82. Caio Oliveira | novembro 26th, 2008 at 10:01

    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,

  83. Bel | novembro 26th, 2008 at 10:09

    Mesmo assim eu tenho que cancelar estas nfes de homologacao? Ou não precisa?

  84. Caio Oliveira | novembro 26th, 2008 at 13:42

    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,

  85. Adriano Cavalcanti Parisi | novembro 27th, 2008 at 8:50

    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

  86. Caio Oliveira | novembro 27th, 2008 at 10:26

    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,

  87. Adriano Cavalcanti Parisi | novembro 27th, 2008 at 10:34

    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.

  88. admin | novembro 27th, 2008 at 11:05

    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

    function valorCFOP(codigo: string): string
    begin
       result := copy(codigo,4,4);
    end;
  89. Adriano Cavalcanti Parisi | novembro 27th, 2008 at 13:06

    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

  90. admin | novembro 27th, 2008 at 14:47

    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:

    function formataValorCurrencyNFe(cValor: string; Deci: Integer): string;
    var
     valortmp: string;
    begin
      Try
      valortmp := StrTran(FormataPrecoUnitario( StrToCurr(cValor), Deci ),'.','');
      except
      valortmp := '0,00';
      end;
      Result := StrTran(valortmp,',','.');
    end;
     
    Function formataPrecoUnitario(Valor : Currency; Decimais:Integer): string;
    Begin
       Try
       Result := TRIM(Format( '%-14.'+IntToStr(Decimais)+'n', [valor]));
       Except
       Result := CurrToStr(valor);
       End;
    End;
  91. Pedro Paulo | dezembro 2nd, 2008 at 10:13

    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

  92. Caio | dezembro 2nd, 2008 at 12:13

    Olá Paulo,

    Dá uma olhada no exemplo desses post (http://www.caiooliveira.com.br/?p=72)

    Sds,

  93. Bel | dezembro 2nd, 2008 at 14:56

    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?

  94. Caio Oliveira | dezembro 2nd, 2008 at 15:16

    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,

  95. Bel | dezembro 3rd, 2008 at 10:14

    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.

  96. admin | dezembro 3rd, 2008 at 16:50

    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:

    <?xml version="1.0" encoding="UTF-8"?>
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><infNFe Id="NFe51080824705881000104550010000002347871159773" versao="1.10"><ide>
    ...
  97. RodrigoM | dezembro 4th, 2008 at 7:07

    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.

  98. RodrigoM | dezembro 4th, 2008 at 9:07

    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

  99. RodrigoM | dezembro 4th, 2008 at 9:11

    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

  100. Adriano | dezembro 5th, 2008 at 8:21

    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

  101. Caio | dezembro 5th, 2008 at 10:29

    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,

  102. Bel | dezembro 5th, 2008 at 13:49

    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 é?!?! :P )

    Obrigada,

    Bel.

  103. Caio | dezembro 5th, 2008 at 14:06

    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,

  104. Adriano | dezembro 8th, 2008 at 8:34

    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

  105. Caio Oliveira | dezembro 8th, 2008 at 9:32

    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

  106. RodrigoM | dezembro 8th, 2008 at 9:37

    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…

  107. Adriano | dezembro 8th, 2008 at 9:52

    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

  108. Caio Oliveira | dezembro 8th, 2008 at 10:06

    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,

  109. Caio Oliveira | dezembro 8th, 2008 at 10:13

    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,

  110. Adriano | dezembro 8th, 2008 at 12:35

    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

  111. admin | dezembro 8th, 2008 at 13:00

    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:

    <enviNFe xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe/enviNFe_v1.10.xsd" versao="1.10">
    <idLote>234</idLote>
    <NFe>
    <infNFe Id="NFe51080XXX705881000104550010000002347871159773" versao="1.10">
    ....

    se não for isso, me passe o XML que vc. está enviando para que possa dar uma olhada.

    Sds

  112. Adriano | dezembro 9th, 2008 at 13:22

    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

  113. admin | dezembro 9th, 2008 at 22:53

    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,

  114. Adriano | dezembro 10th, 2008 at 7:19

    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.

  115. Caio Oliveira | dezembro 10th, 2008 at 8:58

    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,

  116. Bel | dezembro 10th, 2008 at 10:16

    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.

  117. Bel | dezembro 10th, 2008 at 13:26

    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.

  118. Adriano | dezembro 10th, 2008 at 13:35

    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

  119. Adriano | dezembro 11th, 2008 at 14:32

    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.

  120. Caio | dezembro 11th, 2008 at 14:49

    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

  121. Bel | dezembro 12th, 2008 at 7:00

    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.

  122. Adriano | dezembro 12th, 2008 at 7:02

    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

  123. Bel | dezembro 12th, 2008 at 7:05

    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 :P

    Bel.

  124. Bel | dezembro 12th, 2008 at 7:18

    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!

  125. Caio | dezembro 12th, 2008 at 7:34

    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

  126. Caio | dezembro 12th, 2008 at 7:38

    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,

  127. Caio | dezembro 12th, 2008 at 7:41

    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,

  128. Adriano | dezembro 12th, 2008 at 8:25

    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

  129. Bel | dezembro 12th, 2008 at 13:11

    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.

  130. Caio Oliveira | dezembro 12th, 2008 at 14:34

    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.

  131. Bel | dezembro 12th, 2008 at 14:46

    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

  132. Bel | dezembro 13th, 2008 at 8:48

    Caio,

    Se eu mandar uma nfe e ela for rejeitada, eu posso reutilizar esse número em outra nota fiscal?

    Obrigadão,

    Bel.

  133. Bel | dezembro 13th, 2008 at 9:19

    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.

  134. Adriano | dezembro 15th, 2008 at 7:51

    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

  135. Adriano | dezembro 16th, 2008 at 8:28

    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.

  136. Caio Oliveira | dezembro 16th, 2008 at 11:37

    Olá Adriano,

    A Empresa tem que estar credenciada, mesmo quando homologação, solicite o credenciamento do seu cliente junto à SEFAZ do seu estado.

    Sds,

  137. Caio Oliveira | dezembro 16th, 2008 at 11:41

    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,

  138. Álisson Clei | dezembro 17th, 2008 at 7:32

    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.

  139. Adriano | dezembro 17th, 2008 at 9:30

    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

  140. admin | dezembro 17th, 2008 at 17:50

    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,

  141. admin | dezembro 17th, 2008 at 17:51

    O Id do Lote deve ser um número sequencial.

    Sds

  142. admin | dezembro 17th, 2008 at 17:52

    Olá Alisson,

    Tive problemas para instalar o Delphi 5 no Win Vista; exceto isso deve ser problema na mídia.

    Sds,

  143. Bel | dezembro 18th, 2008 at 7:56

    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??

  144. admin | dezembro 18th, 2008 at 11:01

    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

  145. Álisson Clei | dezembro 18th, 2008 at 14:08

    Obrigado. Acredito que seja problema nas mídias tb.
    Abraços!!!

  146. Bel | dezembro 19th, 2008 at 7:39

    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.

  147. Adriano | dezembro 19th, 2008 at 8:42

    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.

  148. Caio Oliveira | dezembro 19th, 2008 at 8:58

    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

  149. Caio Oliveira | dezembro 19th, 2008 at 9:00

    Olá Adriano,

    Respondi essa questão no comentário anterior . Dá uma olhada lá (http://www.caiooliveira.com.br/?p=65#comment-462);

    Sds.

  150. Adriano | dezembro 19th, 2008 at 12:44

    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…

  151. Bel | dezembro 19th, 2008 at 12:51

    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.

  152. Bel | dezembro 19th, 2008 at 13:16

    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

  153. admin | dezembro 19th, 2008 at 13:37

    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,

  154. Adriano | dezembro 22nd, 2008 at 8:20

    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

  155. admin | dezembro 22nd, 2008 at 9:00

    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,

  156. Adriano | dezembro 23rd, 2008 at 8:31

    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

  157. admin | dezembro 23rd, 2008 at 10:01

    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

  158. admin | dezembro 23rd, 2008 at 10:02

    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

  159. Adriano | dezembro 29th, 2008 at 10:26

    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

  160. Caio Oliveira | janeiro 2nd, 2009 at 10:45

    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

  161. Celso Fonseca | janeiro 21st, 2009 at 14:24

    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.

  162. admin | janeiro 21st, 2009 at 15:33

    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,

  163. Thiago | janeiro 22nd, 2009 at 12:30

    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.

  164. admin | janeiro 22nd, 2009 at 12:44

    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,

  165. Thiago | janeiro 22nd, 2009 at 12:55

    Então, estou usando certinho, até colei ai embaixo pra vc ver.

    E o URI esta da seguinte forma:

  166. Thiago | janeiro 22nd, 2009 at 12:55

    infNFe Id=”NFe35081054502273000163550010000357010000357012″ versao=”1.10″

    Reference URI=”#NFe35081054502273000163550010000357010000357012″

  167. admin | janeiro 22nd, 2009 at 13:41

    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,

  168. Thiago | janeiro 22nd, 2009 at 14:03

    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.

  169. admin | janeiro 22nd, 2009 at 14:05

    Thiago,

    o meu e-mail de contato é: caiooliveira.com.br

  170. admin | janeiro 22nd, 2009 at 14:06

    desculpe caio@caiooliveira.com.br

  171. Thiago | janeiro 22nd, 2009 at 14:14

    Então, eu gerei com um código aleatório e esta dando o mesmo problema. Estou te enviando no e-mail.
    Vlw mesmo.

  172. Thiago | janeiro 22nd, 2009 at 14:43

    Já mandei o e-mail.

  173. RodrigoM | março 2nd, 2009 at 8:21

    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 ?

  174. Caio | março 2nd, 2009 at 11:15

    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

  175. Jonatas | março 3rd, 2009 at 9:09

    Alguém sabe como posso criar um link para a consulyta da NFE, passando como parâmetro a chave de acesso?

  176. Caio | março 5th, 2009 at 15:00

    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,

  177. Clelson | março 5th, 2009 at 23:29

    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

  178. admin | março 6th, 2009 at 8:59

    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,

  179. Renan Paiva | março 31st, 2009 at 11:26

    E clipper velho de guerra strzero() t m sou clipperiro []s mto bom o codigo

  180. Daiane | abril 1st, 2009 at 12:05

    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

  181. Daiane | abril 1st, 2009 at 14:21

    Já consegui resolver meu Problema postado à cima!

    Daiane

  182. Suellen | abril 13th, 2009 at 18:46

    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ê?

  183. admin | abril 14th, 2009 at 8:20

    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,

  184. Douglas | abril 15th, 2009 at 8:48

    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.

  185. admin | abril 15th, 2009 at 14:42

    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

  186. Thiago P | abril 17th, 2009 at 10:07

    Ola gostaria de saber como e gerado esse Id?

    se alguem puder me ajudar …. grato

  187. admin | abril 17th, 2009 at 13:39

    Olá Thiago,

    Veja no post “Cálculo Módulo 11).

    Sds.

  188. RodrigoM | abril 27th, 2009 at 18:27

    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é

  189. divino do carmo | maio 6th, 2009 at 10:34

    muito boa esta funcao.
    parabens por voce compartlhar esta funcao que vai economizar um tempo de trabalho

    parabens pela sua atitude

  190. admin | maio 6th, 2009 at 12:13

    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

  191. Marcos Viniciu | maio 7th, 2009 at 9:37

    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

  192. Leonardo Metelis | maio 29th, 2009 at 10:52

    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??

  193. Cristina | junho 8th, 2009 at 14:40

    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

  194. admin | junho 8th, 2009 at 15:10

    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,

  195. Ronaldo | junho 9th, 2009 at 10:39

    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

  196. admin | junho 10th, 2009 at 11:08

    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,

  197. Henrique leonardo | junho 29th, 2009 at 21:46

    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;

  198. Henrique leonardo | junho 29th, 2009 at 21:48

    if Pos(Str[x],ComAcento) ( Diferente ) 0 Then

  199. Edilson | setembro 30th, 2009 at 8:21

    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…

  200. Hélio | outubro 7th, 2009 at 16:15

    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.

  201. Rodrigo | janeiro 20th, 2010 at 18:10

    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.

  202. mauricio | janeiro 20th, 2010 at 19:30

    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

  203. mauricio | janeiro 20th, 2010 at 19:37

    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

  204. admin | janeiro 21st, 2010 at 12:33

    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.

  205. admin | janeiro 21st, 2010 at 12:34

    Olá Mauricio,

    Vc. pode usar mais de uma linha para a impressão da descrição dos itens quando necessário.

    Sds

  206. Peke | março 12th, 2010 at 12:59

    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.

  207. Daniel | março 30th, 2010 at 7:02

    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

  208. admin | março 30th, 2010 at 8:35

    Olá Daniel,

    Esse problema está realmente ligado ao certificado/assinatura do arquivo. Procure reinstalar o certificado para ver se resolve.

    Sds

  209. Daniel | março 30th, 2010 at 8:56

    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??

  210. admin | março 30th, 2010 at 9:46

    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,

  211. Luciano Ricardo Moreira | abril 28th, 2010 at 9:13

    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!

  212. Luciano Ricardo Moreira | abril 28th, 2010 at 9:35

    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.

  213. Joziane Loro Casali | abril 30th, 2010 at 11:11

    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.

  214. Luis | maio 12th, 2010 at 9:33

    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?

  215. Giordani | maio 25th, 2010 at 16:31

    Luis, estou na mesma situacao. Consegui fazer o hash. Porem a assinatura ainda nao saiu. Voce ja conseguiu ?

  216. Paulo | maio 27th, 2010 at 9:38

    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..

  217. Luis | maio 31st, 2010 at 7:44

    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.

  218. geane | junho 11th, 2010 at 8:01

    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

  219. Emerson | junho 21st, 2010 at 12:56

    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

  220. Juliana | julho 5th, 2010 at 13:54

    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

  221. NIcoli | julho 19th, 2010 at 11:04

    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

  222. Ferrari | agosto 24th, 2010 at 18:41

    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.

Faça um comentário