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

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


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



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



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

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.



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 ?

Space do autor




5
4
