DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

ACBrNFe - Componente OpenSource para Nota Fiscal Eletrônica - NFe - Parte 1

O componente ACBrNFe é um projeto para gerar, validar, transmitir, receber as respostas dos WebServices da Receita e imprimir o DANFe. Este componente faz parte do Projeto ACBr e também é gratuíto.

O componente ACBrNFe é um projeto para gerar, validar, transmitir, receber as respostas dos WebServices da Receita e imprimir o DANFe. Este componente faz parte do Projeto ACBr e também é gratuíto.
O componente possui duas versões - ACBr_NFe_CAPICOM e ACBr_NFe_OpenSSL. As principais diferenças entre as versões são:
ACBr_NFe_CAPICOM - Usa as DLLs da Microsfot CAPICOM (conexão segura) e MSXML (Assinatura e validação do XML) - Apenas funciona no Delphi e Windows. Funciona com certificados do tipo A1 e A3.
ACBr_NFe_OpenSSL - Usa Projetos OpenSource: Synapse+OpenSSL (conexão segura) e LibXml2 + XmlSEC (Assinatura e validação do XML) - Atualmente compatível com Delphi, mas será compatível com Lazarus, Kylix e com Linux. Funciona apenas com certificados do tipo A1.
 

Obtendo o Componente

Para sempre ter a última versão do componente, será necessário baixar o componente via SVN.

O melhor aplicativo a ser usado é o TortoiseSVN (http://tortoisesvn.net/downloads), pois ele se integra com o Windows Explorer.

  • Baixe o TortoiseSVN (http://tortoisesvn.net/downloads):
  • Depois de Instalado, crie um diretório para o baixar o ACBr
  • Usando o Windows Explorer, clique com o botao direto sobre o diretorio e escolha: SVN Checkout
  • Em URL of repository digite: https://acbr.svn.sourceforge.net/svnroot/acbr/trunk
  • Basta clicar em OK e o Tortoise irá criar a Estrutura de diretótorios do ACBr atualizado exatamente como utilizado pelos desenvolvedores
  • Nas próximas vezes, basta clicar com o Botao direito no diretorio e usar: SVN Atualizar.
    Nesse caso somente os fontes modificados ou novos serão baixados.
  • Se você já utilizava algum componente do ACBr, veja neste link as mudanças na estrutura das pastas do ACBr - http://acbr.sourceforge.net/drupal/?q=node/37

    Instalando o Componente

    Versão OpenSSL

    - Copie a DLL ACBr\ACBrNFe\DLLs\iconv.dll e as DLLs da pasta ACBr\ACBrNFe\DLLs\OpenSSL\ (libeay32.dll, libxml2.dll, libxmlsec.dll, libxmlsec-openssl.dll,libxslt.dll, ssleay32.dll e zlib1.dll) para a pasta Windows\System32

    -Adicione ao Library Path do Delphi as pastas ACBr\ACBrNFe e ACBr\ACBrComum
    Na IDE do Delphi acione "Tools, Enviroment Options" selecione a guia "Library", clique no botão elíptico (...) de "Library Path", clique no botão elíptico (...) à frente da caixa de texto, localize a pasta " ACBr\Source\ACBrNFe " no diretório de instalação da Biblioteca, clique em "OK", e em "Add". Repita o mesmo processo com a pasta " ACBr\ACBrComum ".
    Clique em "OK" para finalizar.

    Caso tenha o pacote ACBr_CLX ou ACBr_VCL já instalado no Delphi, verifique se na pasta ACBr\Source\Pascal existe alguma unit da synapse (blcksock.*, syn*.* ), e caso encontre apague estas units. Abra o pacote do ACBr (ACBr_CLX.dpk ou ACBr_VCL.dpk) e na IDE do Delphi clique em "Project, Build ACBr", Volte ao pacote e clique em compile.

    Na IDE do Delphi, clique em "File - Close All"

    Abra o arquivo ACBr_NFe_OpenSSL.dpk, clique em compile e ao ser solicitado para adicionar o pacote ACBr_CLX ou ACBr_VCL clique em Cancel. Clique em Install e ao ser solicitado para adicionar o pacote ACBr_CLX ou ACBr_VCL clique em Cancel


    Versão CAPICOM

    Copie as DLLs da pasta ACBr\ACBrNFe\DLLs\Capicom (capicom.dll, msxml5.dll e msxml5r.dll) para a pasta Windows\System32.
    Vá ao botão Iniciar do Windows - Executar e execute os seguinte comandos:
    regsvr32 capicom.dll /s
    regsvr32 msxml5.dll /s

    Adicione ao Library Path do Delphi a pasta ACBr\ACBrNFe, ACBr\ACBrNFe\win32api e caso utilize o pacote ACBr_CLX ou ACBr_VCL adicione também a pasta ACBr\ACBrComum
    Na IDE do Delphi acione "Tools, Enviroment Options" selecione a guia "Library", clique no botão elíptico (...) de "Library Path", clique no botão elíptico (...) à frente da caixa de texto, localize a pasta " ACBr\ACBrNFe " no diretório de instalação da Biblioteca, clique em "OK", e em "Add". Repita o mesmo processo com a pasta caso utilize o ACBr_CLX ou ACBr_VCL "ACBr\ACBrComum".
    Click em "OK" para finalizar.

    Caso tenha o pacote ACBr_CLX ou ACBr_VCL já instalado no Delphi, verifique se na pasta ACBr\Source\Pascal existe alguma unit da synapse (blcksock.*, syn*.* ), e caso encontre apague estas units. Abra o pacote do ACBr (ACBr_CLX.dpk ou ACBr_VCL.dpk) e na IDE do Delphi clique em "Project, Build ACBr", Volte ao pacote e clique em compile.

    Na IDE do Delphi, clique em "File - Close All"

    Abra o arquivo ACBr_NFe_CAPICOM.dpk, clique em compile e depois em Install

    Diferença entre a versão CAPICOM e OpenSSL

    A principal diferença entre as duas versões, é que a versão CAPICOM permite o uso de certificados do tipo A1 e A3, enquanto a versão OpenSLL permite apenas o uso de certificados A1. Para saber a diferença entre os dois tipos, consulte o seguinte endereço: http://www.identidadedigital.com.br/entenda/certificados-digitais/e-cnpj

    Com a versão CAPICOM, o certificado precisará estar instalado no Windows. No componente precisaremos configurar o número de série do certificado. Para descobrir o número de série do certificado usado na versão CAPICOM, abra o Internet Explorer, vá ao menu Ferramentas, Opções da Internet, clique na aba Conteúdo, Certificados, clique duas vezes sobre o certificado, clique na aba Detalhes e encontre o campo Número de Série(Thumbprint). Copie o valor para o bloco de notas, e tire todos os espaços e deixe todas as letras em maiúsculo. Este valor deverá ser informado na propriedade NumeroSerie do componente.

    Com a versão OpenSSL, será usado um arquivo PFX como certificado. Quando o certificado é adquirido, em alguns casos ele é instalado no Windows e em outros é recebido um arquivo PFX. Caso o certificado tenha sido instalado no Windows, siga as instruções a seguir: Abra o Internet Explorer, vá ao menu Ferramentas, Opções da Internet, clique na aba Conteúdo, Certificados, escolha o certificado desejado – clique em exportar, avançar, selecione a opção "Sim, exportar a chave particular", clique em avançar até ser solicitada uma senha para o arquivo e defina uma senha. Esta senha será usada para instalar em o certificado em outras máquinas e também no componente. Clique em avançar até a conclusão da exportação. O path deste arquivo PFX deverá ser informado na propriedade Certificado do componente, e a senha usada para criara o arquivo, na propriedade Senha. No versão OpenSSL, também deverá ser informado as configurações do proxy da rede, caso exista. Na versão Capicom, as configurações do proxy são puxadas do Internet Explorer. 

    Usando o componente ACBrNFe

     Baixe o demo do componente no endereço http://djsystem.sytes.net/ccount/click.php?id=4 e veja as principais funções do componente. No próximo artigo, irei detalhar as principais funções do ACBrNFe.





        23 COMENTÁRIOS

    [Fechar]

    Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



    Paulo
    Olá André!
    Primeiro quero parabenizá-lo pela contribuição e dizer que foi de grande valor p mim.
    Vc teria mais algum material falando sobre NFe??

    grato
    [há +1 ano] - Responder

     

    [autor] André Ferreira De Moraes
    Os materiais que possuo da NFe são os manuais encontrados no site da fazenda. Que tipo de material vc está precisando?
    [há +1 ano] - Responder
     

    [autor] André Ferreira De Moraes
    Site com informações úteis pra quem vai começar a trabalhar com NFe - http://www.caiooliveira.com.br/?p=230
    [há +1 ano] - Responder
     

    Walter De Araújo Silva
    Não estou conseguindo instalar no delphi 2009.
    [há +1 ano] - Responder

     

    [autor] André Ferreira De Moraes
    Qual erro vc está recebendo qdo tenta instalar o componente?
    [há +1 ano] - Responder
     

    Walter De Araújo Silva
    function ValidaMSXML(XML: WideString; out Msg: WideString): Boolean;
    var
      DOMDocument: IXMLDOMDocument2;
      ParseError: IXMLDOMParseError;
      Schema: XMLSchemaCache;
      Tipo, I : Integer;
    begin
      I := pos(''''
      Tipo := 1;
      if I = 0  then
       begin
         I := pos(''''
         Tipo := 2;
         if I = 0 then
          begin
           I := pos(''''
           Tipo := 3;
          end;
       end;

      DOMDocument := CoDOMDocument50.Create;
      DOMDocument.async := False;
      DOMDocument.resolveExternals := False;
      DOMDocument.validateOnParse := True;
      DOMDocument.loadXML(XML);



    aparece nas function ValidaMSXML e
                        function AssinarMSXML

    [há +1 ano] - Responder
     

    [autor] André Ferreira De Moraes
    Vc rodou os comandos regsvr32 capicom.dll /s e regsvr32 msxml5.dll /s na sua máquina?
    [há +1 ano] - Responder
     

    Walter De Araújo Silva
    Fiz todo o procedimento que tem no Leia-me
    [há +1 ano] - Responder

     

    Claudemir Bento
    Olá,

    Baixei o componente AcbrNFe conf. orientações, e estou testando o DEMO.

    Tudo maravilha.... exceto a parte de IMPRESSÃO:

    To com 2 problemas....

    Fiz o debug e encontrei

    1) Está no procedimente CustomISSQNCXNGetRow

    Qdo é chamado a função WriteFloatData() da parte do serviço.

    Como não tem nada nesse cara, da o pau....

    Essa função conf abaixo:

    a var AValue vem com VAZIO, e o meu DecimalSeparator = VIRGULA
    e No retorno, da erro : EconvertError with message ''' is a not a valid floating point value.

    class function NotaUtil.StringToFloat(AValue: String): Double;
    begin
      AValue := Trim( AValue ) ;

      if DecimalSeparator <> '.' then
         AValue := StringReplace(AValue,'.',DecimalSeparator,[rfReplaceAll]) ;

      if DecimalSeparator <> ',' then
         AValue := StringReplace(AValue,',',DecimalSeparator,[rfReplaceAll]) ;

      Result := StrToFloat(AValue)
    end ;

    2) O outro erro é que ele não encontra o Rave

    Na atribuição do Project abaixo da erro apenas do arquivo existir no path indicado.

      RvProject.ProjectFile := ExtractFileDir(application.ExeName)+'\Report\NotaFiscalEletronica.rav';

    Erro: Unable to gain Control of RAVE Data communication System.

    Grato,

    Claudemir



    [há +1 ano] - Responder

     

    [autor] André Ferreira De Moraes.
    Veja o seguinte link para resolver o segundo erro: http://anfm.blogspot.com/2009/04/erro-unable-to-gain-control-of-rave.html
    [há +1 ano] - Responder
     

    Geraldo Denilson Barroso
    Qdo tento instalar o o pacte acbr_nfe_capicom.bpl Da o seguinte erro:
    e2202 Requerid package ''''rave50vcl'''' not found segui todas as instrucoes
    contindas o instala.txt, to usando a versao trial do D2009.
    Obrigado
     
    [há +1 ano] - Responder

     

    Rodrigo Taquete
    Caro amigo, não consigo baixar o TortoiseSVN, e gostaria de fazer o teste exatamente como descrito, você poderia me ajudar me enviando esse programa????
    Email: rodrigo@taquete.com.br
    Muito obrigado.
    Att. Rodrigo Taquete
    [há +1 ano] - Responder

     

    Marcio
    Olá André, venho pedir uma ajuda a uma dúvida que tenho,

    Olha só, andei vendo o ACBrNFeMonitor e vi que o método "enviarnfe" o programa envia o lote e já recebe uma resposta do webservice, até ai tudo bem. Como sei que esse processo é Assincrono, a minha dúvida então é o seguinte, queria saber se o programa já fica consultando pra ver se o lote já foi processado e quais notas foram autorizadas e traz elas no final do processamento do método? ou isso tem que ser feito depois pelo comando "ConsultarNFe"?

    Obs.: Ainda não utilizei os webservices, por isso a minha dúvida, estou ainda estudando o programa criado por ti para poder utiliza-los logo!

    Agradeço desde o esclarecimento!
    Abraço...
    [há +1 ano] - Responder

     

    Luciano Edgard M. Andrade
    Ola gostaria de saber se estou com problemas em meu delphi ou seria algo que esqueci de fazer, mas quando abro os pacotes open_ssl ou capicon para instalar quando compilo da tudo certo, porem, quando clico em install da a seguinte mensagem: Este aplicativo não pôde ser iniciado porque não foi encontrado iconv.dll. A reinstalação do aplicativo pode corrigir o problema. Vc pode me ajudar?
    Agradeço desde ja
    [há +1 ano] - Responder

     

    Lucas
    Ola ,
     
      Parabéns pela iniciativa do componente.
     
      Este componente funciona com Delphi 5 ? Tentei instalar nesta vrsão mas ao compilar aparece o dirtiva inválida  {$ALIGN 8} e erro fatal  por na encntrar o pacto rtl.
     
    abraços
     
    lucas
    [há +1 ano] - Responder

     

    Manoel Messias Das Neves

    Não estou conseguindo instalar o pacote ACBr_NFe.dpk, o DELPHI me dá uma mensagem de erro:

    [Fatal Error] ACBr_NFe.dpk(79): Required package ''''soaprtl'''' not found.
     
    Como posso resolver este erro?.
    [há +1 ano] - Responder

     

    Marcio Erli De Paula

    Caros:
    Eu baixei ACBr usando o SVM, mas ainda não consegui instalar, segui o tutorial do site mas não achei em lugar algum o ACBr_NFe_CAPICOM.dpk.


    Como instalo este componente?


    Agradeço desde já qualquer ajuda.
    Marcio.

    [há +1 ano] - Responder

     

    Cristian Macena
    Ola amigo eu tentei instalar aqui o componente ACBR mas o pacote ACBR Comum não instala da erro informando que não pode ser instalado, os outros componentes ACBR Serial, instalou normal. O que pode ser?
    [há +1 ano] - Responder

     

    [autor] André Ferreira De Moraes.
    O pacote ACBrComum não precisa ser instalado, apenas compile o pacote.
     

    [há +1 ano] - Responder
     

    Paulo Artur Pattarelli
    ola, esta pedindo login e senha para baixar os arquivos , como consigo isso 
    obrigado
    [há +1 ano] - Responder

     

    [autor] André Ferreira De Moraes.
    Basta deixar em branco.
     
    [há +1 ano] - Responder
     

    Alvaro S. Vieira
    Olá pessoal, estou usando o componente ACBR NFe e ele está de parabéns, pois é de simples implantação.
    Até hoje estava usando o objeto do lado "cliente", onde fiz todos os testes e funcionou sem problemas, mas quando o coloquei no lado "servidor" da minha aplicação, ele só funciona quando executado em modo "aplicação", quando o servidor está em modo de "serviço do windows" ele não funciona. Essa é uma limitação do componente ?
    [há +1 ano] - Responder

     

    Moises
    Ola, boa tarde!
    Estou tentando utilizar esse componente, fiz a instalação (aparentemente com sucesso) no delphi 7 (S.O.= Windows XP) ----
    Ainda hoje baixei as atualizações (pelo SVN) ---  mas quando tento utilizar o demo da NFe que acompanha os exemplos , preencho o num ero da nota == 1 e o numero do lote = 1 (acho que sao obrigatorios --- quando aperto ok para que os comandos sejam executados, o retorno é o erro "  Is not a valid integer value ".
    Interessante que na compilação não dá nenhum erro, este é somente durante a execução.
     
    Agradeço qualquer esclarecimento.
     
    [há +1 ano] - Responder

     



    Publicidade
    Autor
    André Ferreira De Moraes.

    Técnico em Processamento de Dados - Instituto Adventista Paranaense - IAP; Atualmente cursando 4º ano de Sistemas de Informação Faculdade Santa Bárbara - FAESB - Tatuí; Para dúvidas sobre o Projeto ACBr utilize - http://www.djsystem.com.br/acbr/forum Blog - http://anfm.blogspot.com/


    Space do autor
    Estatísticas #
    Favorito:
    Comentários:
    Feedback:
    Utilidade:
    5   4
    [Fechar]

    Você precisa estar logado para dar um feedback.

    Clique aqui para efetuar o login
    [Fechar]


    Este post está fechado. Saiba mais sobre a assinatura MVP!
    web-03
    DevMedia  |  Anuncie  |  Fale conosco
    Hospedagem web por Porta 80 Web Hosting
    2012 - Todos os Direitos Reservados a web-03