Venha conhecer o Componente NF-e da TecnoSpeed, uma solução para incluir um módulo fiscal completo e atualizado em seus softwares sem dificuldade!
Para os desenvolvedores e Software Houses que trabalham com ERPs e sistemas voltados para empresas, a emissão de notas e outros documentos fiscais representa um grande desafio, não é mesmo?
As regras, alíquotas e layouts têm diversas variáveis e o processo como um todo envolve conhecimentos avançados em tributação e legislação, além de uma estrutura complexa que precisa estar 100% correta e atualizada para funcionar como deve.
Apesar de complicada, essa é uma demanda super comum dentro de qualquer negócio e que provavelmente precisará ser atendida por você, desenvolvedor. Se precisa implementar um módulo para emissão de nota fiscal eletrônica (NF-e) no seu software de gestão (ERP), através de uma biblioteca de métodos, e não pode investir tempo e mão de obra no desenvolvimento de uma solução própria (acredite, sabemos o custo dessa opção e criamos nossos produtos pensando nisso), temos uma solução pensada exatamente para facilitar essa missão: o Componente NF-e.
Vem entender mais sobre esse processo e sobre ela!
Como as Software Houses podem trabalhar com NF-e?
Com a digitalização dos documentos fiscais, a relação das Software Houses com o meio fiscal e tributário se tornou ainda mais próxima, criando a demanda dessas empresas buscarem recursos e conhecimentos para inserir essa demanda em suas aplicações.
Existem diversas formas com que uma Software House pode passar a trabalhar com NF-e e implementar um módulo fiscal e emissor em seus softwares:
Implementar emissão de NF-e sozinho
Se passou pela sua cabeça a possibilidade de implementar a emissão de NF-es sozinho, sentimos te desanimar, mas talvez essa não seja uma boa ideia. Em 99.9% dos cenários, fazer sozinho é jogar tempo e dinheiro fora.
Isso porque, esse processo é demorado e complexo. São em média 400 horas para desenvolver, isso considerando que você é muito experiente no Delphi e entende de tributação, legislação fiscal, XML/XSD, HTTP, etc.
Utilizar uma DLL open source
Com uma DLL open source, você vai ter uma base para começar a trabalhar e isso vai evitar bastante trabalho a princípio. No entanto, você ainda precisará dar conta de todos os pormenores e atualizações que o processo de emissão envolve e quando surgirem as dúvidas e dificuldades técnicas e fiscais (e elas vão surgir!), é você que terá que lidar com elas e solucioná-las para colocar o software para rodar.
Utilizar o Componente NFe da TecnoSpeed
Mas, se você está se perguntando se existe algum jeito de não ter que lidar com tudo isso e ainda assim oferecer essa funcionalidade essencial para os seus clientes, nós temos uma boa notícia: aqui essa solução existe e atende pelo nome de Componente NFe.
O Componente NF-e da TecnoSpeed é uma DLL feita na linguagem que você precisa e sempre atualizada com a legislação, ou seja, com ela você não precisará contratar nenhuma mão de obra de terceiros, se preocupar com as novas notas técnicas publicadas e atualizações relacionadas à emissão de documentos fiscais eletrônicos, e terá um módulo fiscal completo nos seus softwares sem ter que investir muito tempo ou dinheiro para isso.
E as vantagens, e facilidades não param por aí… a seguir a gente te explica como essa solução funciona e tudo o que ela pode fazer por você, seus softwares, seu negócio e o de seus clientes.
Componente NF-e TecnoSpeed: o que é e como funciona?
O Componente NF-e da TecnoSpeed é uma biblioteca que contém todos os métodos necessários para emitir a Nota Fiscal eletrônica. Através do consumo de OCX , seu processo de mensageria da NF-e pode ser executado dentro do próprio ambiente. Para utilizar o Componente no seu software, basta instanciá-lo no seu projeto, implementar chamadas para cada um dos métodos e configurá-los de acordo com sua necessidade.
Simples assim!
Veja todo o fluxo a partir da imagem abaixo:
Só com essa imagem dá para perceber o quanto essa solução pode e vai facilitar a sua vida, não é mesmo? Praticamente todas as etapas e comunicações são feitas por ela e nossa equipe de especialistas ainda garante que ela esteja sempre atualizada de acordo com a legislação vigente.
Interessante, né? Mas espera, se você quiser conhecer na prática o nosso componente, que tal experimentar a versão trial?
Assista ao vídeo abaixo e saiba como implementar a versão trial do componente NFe (clique aqui para acessar a documentação apresentada no vídeo):
Vantagens imperdíveis do nosso Componente NF-e
Além da funcionalidade e eficiência do nosso componente, os maiores diferenciais dele não têm nem relação com código, confira quais são:
Fácil e rápido
Toda a organização e usabilidade do nosso componente são definitivamente um ponto forte, ele pode ser integrado aos seus softwares de forma muito fácil e rápida, além de ser compatível com qualquer linguagem e bastante funcional e ágil no uso do dia a dia, garantindo a fluidez que o processo de emissão de NF-e precisa.
Consultoria Tributária
O Componente NF-e vem acompanhado com uma Consultoria Tributária, ou seja, você conta com uma equipe de especialistas da área fiscal e tributária para tirar todas as suas dúvidas relacionadas a essas áreas e te ajudar no que for preciso.
Suporte Técnico
Ao utilizar a nossa solução, você também ganha acesso a um suporte especializado. Desde os primeiros passos da integração, estarão à sua disposição consultores técnicos e tributários com 12 anos de experiência com documentos fiscais eletrônicos!
Sem falar que com essa solução, os seus clientes nunca mais terão problemas com o Fisco e passarão longe da sonegação fiscal! E isso, sem dúvidas, é algo extremamente valioso para qualquer negócio, significando também um diferencial e tanto para os seus produtos.
Resumindo: você, sua Software House, seus clientes e o negócio dos seus clientes têm muito a ganhar com o Componente NF-e da TecnoSpeed.
Se você não quer perder mais tempo ou energia estudando e tentando entender os termos, regras, alíquotas, legislações, modelos, layouts e atualizações do mundo das notas e demais documentos fiscais, não precisamos falar mais nada, né? Integre já nosso Componente NF-e no seu software!
Componente NF-e TecnoSpeed: passo a passo para implementar
A partir de agora, você terá todas as informações para conseguir fazer o download da nossa versão do componente e implementar todos os novos métodos para emitir e imprimir uma nota fiscal eletrônica, de forma absurdamente simples. Basta seguir os seguintes passos:
1. Instalando o Componente NF-e
Após aprovação do pedido de adesão, em até 24 horas úteis, nossa equipe financeira irá realizar o faturamento e disponibilizar o Componente NF-e para download na Central do Cliente. Você pode acessar a Central do Cliente com os dados de acesso que você preencheu no formulário de registro.
Com o Componente já disponível, na aba lateral Download, clique no botão Baixar. Caso o download não inicie, desabilite o bloqueador de pop-ups do seu navegador.
Existem dois instaladores disponíveis para download na Central do Cliente: O Setup NFe Full e o Setup NFe Dependencies. O primeiro deve ser instalado no ambiente de desenvolvimento e o segundo no ambiente onde o sistema será executado.
2. Ambiente de desenvolvimento
No ambiente de desenvolvimento, deverá ser instalada a versão Full, pois ela é a biblioteca completa, com todos os métodos e arquivos que o componente possui. Para instalá-la, basta executar o instalador e seguir as instruções na tela.
3. Ambiente do cliente
No ambiente onde o sistema será executado, deverá ser instalada a versão Dependencies, que é a versão Full reduzida, com apenas as DLLs necessárias para o componente funcionar. Para instalá-la, existem algumas opções: é possível simplesmente executar o instalador, como na versão Full, executar o instalador em modo silencioso, ou incluir as DLLs no seu próprio instalador.
Além das DLLs, é necessário que o componente tenha acesso às pastas de Esquemas e Templates e aos arquivos com o endereço dos servidores. Estas pastas e arquivos são criadas no diretório de instalação da versão Full (..TecnoSpeed/NFe/Arquivos). É necessário colocá-los no ambiente do cliente e configurar o diretório delas, nas propriedades DiretorioEsquemas, DiretorioTemplates, ArquivoServidoresHom e ArquivoServidoresProd.
4. Executando o instalador
Esta é a forma padrão de instalação. Basta executar o instalador e seguir as instruções na tela.
Para evitar que o usuário necessite realizar alguma interação, é possível incorporar um comando na sua aplicação ou instalador. Existem dois comandos disponíveis: Silent e VerySilent. O comando Silent exibirá a interface de instalação, mas não permitirá que o usuário interaja com o instalador. Por outro lado, o comando VerySilent não exibirá nenhuma interface ao usuário, a instalação será executada em segundo plano.
5. Incluindo os arquivos no próprio instalador
O instalador das dependências apenas adiciona as DLLs onde ele é instalado. Caso não desejar utilizar o instalador no cliente, é possível incorporar as DLLs ao instalador do seu próprio sistema. Basta copiar ou registrar na pasta System32, caso o sistema seja 64 bits, e na pasta SysWOW64 para a versão de 32 bits do Windows.
DLLs que devem ser registradas:
- NFeX.dll
- NFeDataSetX.dll
- msxml6.dll
- spdGovX2.ocx
- midas.dll
- stdvcl40.dll
- spdValidadorClientX.ocx (necessário apenas para utilizar o Validador)
- spdNotaSeguraX.ocx (necessário apenas para utilizar o Nota Segura)
DLLs que devem ser apenas copiadas:
- ssleay32.dll
- libeay32.dll
- msxml6r.dll
- spdNfeLibUNICODE.dll (necessário apenas se não utilizar Delphi)
- spdNfeLib.dll (necessário apenas se não utilizar Delphi)
6. Instalação Manual
Trata-se da instalação do componente NF-e através de seu arquivo binário, na extensão .dpk (Delphi Package). Caso opte em instalar o componente manualmente, siga as instruções abaixo:
Atenção! É necessário que seja instalado a versão Dependencies no ambiente de Desenvolvimento e no ambiente do cliente.
Deverá ter em mãos o .dpk do componente NF-e na versão de Delphi desejada e abri-lo.
Incluir no search path do projeto o caminho das BPL´s e DCP´s da GOV, por exemplo:
Após inserir os search path, o projeto deverá ser compilado, sem apresentar nenhum erro.
Ao compilar o projeto, será criado um arquivo BPL e DCP do componente no diretório específico do Delphi. Exemplos de diretórios:
- C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl;
- C:\Users\Public\Documents\Embarcadero\Studio\17.0\Dcp;
- Obs. Esse diretório é somente um exemplo, cada versão do Delphi tem seu respectivo diretório. Exemplo:
- Delphi Seattle – C:\Users\Public\Documents\Embarcadero\Studio\17.0;
- Delphi XE6 – C:\Users\Public\Documents\Embarcadero\Studio\14.0;
- Delphi XE3 – C:\Users\Public\Documents\RAD Studio\10.0;
- Delphi XE – C:\Users\Public\Documents\RAD Studio\8.0.
Será necessário copiar as BPL´s e DCP´s da GOV, que são as mesmas colocadas no search path do projeto, para o diretório específico do Delphi, onde são criados os arquivos BPL e DCP do componente, exemplo:
Após realizar esses passos, poderá instalar o seu componente NF-e, conforme a imagem abaixo:
7. Instanciando o Componente
Após a instalação do componente, é necessário instanciar a classe no projeto para fazer as modificações necessárias em suas propriedades e utilizar os seus métodos.
Veja, passo a passo, como instanciar a classe em três das linguagens, Delphi, C# e VB6.
Delphi
No Delphi, há duas formas de instanciar o componente. Você pode arrastar os ícones do componente na barra de ferramentas para dentro do seu unit ou fazê-lo de forma manual, adicionando no uses do projeto:
Em seguida, é necessário criar as variáveis das classes, como no exemplo abaixo:
Independente da forma como foram trazidas as classes ao projeto, agora deverá ser criado o objeto e direcionado a uma variável:
VB6
Primeiro, deverá ser declarado o objeto pertencente a classe que faz interação com os servidores da Sefaz:
Após isso, na inicialização do Fom, instancie o objeto dentro de uma nova variável:
C#
No início do projeto, junto com as bibliotecas importadas, adicione as OCX da Tecnospeed
Após isso, instancie o objeto dentro de uma nova variável:
8. Configurando as Propriedades
Antes de utilizar os métodos e funções do componente, é necessário configurar as suas propriedades. Elas podem ser configuradas utilizando um arquivo de configuração (.ini) ou através do código fonte.
Cada propriedade indica uma configuração. Por exemplo: a propriedade “Ambiente” determina para qual servidor o Componente irá enviar a nota (o de homologação ou de produção). Estas configurações estão divididas em três tipos: as propriedades gerais do componente, as propriedades de e-mail e as propriedades de impressão (DANFE).
Código Fonte
É possível preencher as propriedades através do código fonte do sistema. Basta informar os valores desejados para cada uma delas. Você encontra uma lista completa de funções e exemplos de preenchimento das propriedades na seção Propriedades do componente.
Arquivo de configuração
Também é possível preencher as propriedades através de um arquivo de configuração (.ini). Basta informar os valores desejados para cada uma delas e passar o diretório deste arquivo como parâmetro no método LoadConfig. Você encontra uma lista completa de funções e exemplos de preenchimento das propriedades na seção Propriedades do componente.
9. Fluxo ideal da emissão da NF-e
Existem duas formas de enviar a nota para a SEFAZ: o envio assíncrono e o envio síncrono.
Assíncrono
No envio assíncrono, a SEFAZ retornará um número de recibo a ser consultado e esta consulta retornará a situação da nota. Esta é a forma que recomendamos que seja implementada. Este fluxo será abordado em mais detalhes no artigo Enviando uma nota.
Síncrono
No envio síncrono, a SEFAZ retornará direto a situação da nota. Nós não recomendamos o uso do envio síncrono, pois a SEFAZ não costuma responder de forma estável, além disso, este modo de envio não está disponível em todos os estados (São Paulo, por exemplo, não aceita o envio síncrono).
10. Gerando o arquivo de Integração
Para gerar este arquivo de integração, é necessário preencher alguns campos com os valores corretos. Para informar estes dados, é possível:
- Gerar o arquivo de integração utilizando o Componente DataSets ou o arquivo TX2;
- Manter o arquivo REC (caso o sistema já gere);
- Manter o arquivo XML (caso o sistema já gere).
Utilizando o Componente DataSets ou o arquivo TX2
Para gerar o arquivo de integração utilizando Componente DataSets ou um arquivo TX2, é necessário seguir o Dicionário de Dados. Este dicionário possui todos os campos disponíveis, instruções de como iniciar e concluir um arquivo e como informar os grupos que podem se repetir.
Exemplo de estrutura da geração de nota via Dataset:
DELPHI
Exemplo de estrutura da geração de nota via Tx2:
Saiba mais sobre o Dicionário de Dados
Mantendo o arquivo REC
Caso o arquivo REC seja gerado pelo sistema, não é necessário alterar para o TX2 ou o Componente DataSets. Basta converter o arquivo REC em XML e, antes de enviar, realizar a assinatura digital deste arquivo.
Saiba como converter um REC em XML
Mantendo o arquivo XML
Caso o arquivo XML seja gerado pelo sistema, não é necessário alterar para o TX2 ou o Componente DataSets. Basta manter o arquivo XML que já é gerado e, antes de enviar, realizar a assinatura digital deste arquivo.
11. Assinando o XML
Para enviar uma nota para a SEFAZ, é necessário realizar uma assinatura digital do XML. Esta assinatura é realizada utilizando um Certificado Digital.
Certificado Digital
Cada certificado possui uma identificação única, que é o que o componente utilizará para selecionar o certificado correto ao realizar a assinatura. É possível listar todos os certificados digitais utilizando o método ListarCertificados.
Este método retornará uma lista com as identificações dos certificados, tanto do modelo A1 quanto do modelo A3 (que possui um cartão físico), instalados no repositório pessoal do Windows. A identificação é uma string parecida com esta:
Informar Nome do Certificado Digital
Para selecionar o Certificado Digital que será utilizado na assinatura, basta informar o nome do certificado (esta identificação que o método ListarCertificados retornou) na propriedade NomeCertificado.
Para configurar a propriedade, é possível utilizar um arquivo de configuração (.ini) ou configurar através do código fonte. O artigo Configurando as propriedades detalha o funcionamento das propriedades.
Assinar Nota
Para transmitir a NF-e, é necessário que o XML esteja assinado. Para isto, deverá ser utilizado o seguinte método, passando como parâmetro o XML gerado pelo dataSet e obtendo como retorno o XML da NF-e assinado, pronto para ser transmitido para a SEFAZ.
Obs: Após a Assinatura, nenhum dado do XML pode ser alterado. Caso necessária alteração, deve ser gerado um novo XML e então assinado novamente.
12. Validando o XML da NF-e
Para fazer a validação, é possível seguir 3 caminhos diferentes: utilizar o validador da Tecnospeed; utilizar o validador próprio da Sefaz ou utilizar o validador dentro do próprio componente. Eles servem como auditores fiscais e implementá-los é bastante simples.
Acessar o Validador da TecnoSpeed >
Acessar o validador da SEFAZ >
Para utilizar o validador dentro do componente, você precisa como na classe spdNFe, usar a spdValidadorClientX no form.
Configurar e utilizar o validador também simples. São utilizados os seguinte parâmetros:
Obs: Essa configuração faz com que o componente envie a Nota para ser validada no servidor da TecnoSpeed.
Caso queira configurar para validar localmente, na máquina onde a aplicação está sendo executada, a configuração fica da seguinte maneira:
Para fazer a validação é simples, basta usar o seguinte código:
O método de validação retorna um JSON ou um Texto:
Exemplo de retorno em JSON:
Exemplo de retorno em Texto:
13. Rejeições
Caso ocorra uma rejeição junto ao servidor da SEFAZ, é necessário corrigi-la antes de enviar novamente a nota. É possível encontrar uma explicação de como resolver a maioria das rejeições na seção Rejeições da nossa documentação.
14. Enviar uma NF-e
Para enviar uma nota de forma assíncrona, é necessário utilizar o método EnviarNF. No envio assíncrono, a SEFAZ retornará um XML com um número de recibo. É necessário capturar este número de recibo e realizar a consulta, utilizando o método ConsultarRecibo.
Para fazer o envio assíncrono, basta utilizar o seguinte método passando como parâmetro o Número do Lote, o XmlAssinado e o valor booleano False, para não enviar o lote compactado.
O retorno do envio, é o XML que confirma a recepção da nota pela SEFAZ ou não.
O XML tem duas informações principais: o cStat e o xMotivo, que são respectivamente, o código da situação do Lote e a mensagem que traduz o código de situação.
Abaixo está um exemplo de XML retorno do envio do Paraná:
<retEnviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>1</tpAmb>
<verAplic>SP_NFE_PL_008i2</verAplic>
<cStat>103</cStat>
<xMotivo>Lote recebido com sucesso</xMotivo>
<cUF>35</cUF>
<dhRecbto>2017-01-23T09:34:07-02:00</dhRecbto>
<infRec>
<nRec>351003873575746</nRec>
<tMed>1</tMed>
</infRec>
</retEnviNFe>
Neste caso, foi retornado o cStat(Código de Status do lote enviado) 103, que significa que o lote foi recebido com sucesso.
Também podem ser retornados outros status, como por exemplo: 105|Lote em processamento; 215|Rejeição: Falha no schema XML, entre outros.
A partir do Status da NF-e, o desenvolvedor passa a automatizar o software para o próximo passo.
Para capturar o cStat e fazer tal validação, disponibilizamos a função obterNroResultado, como segue. Para capturar um valor, basta fazer como o exemplo abaixo:
function TfrmDemoNfe.obterNroResultado(const aXML: WideString; atag,
aEndTag: Widestring): string;
var
_Posini, _Posfim : integer;
begin
Result :='';
_Posini:= Pos(aTag,aXML);
_Posfim:= Pos(aEndTag,aXML);
if (_Posini > 0) then
begin
inc(_PosIni, Length(aTag));
Result:=Copy(aXML,_Posini+1,(_PosFim-_PosIni)-1);
end;end;
Cada cStat tem um significado, você pode compreendê-lo pelo seu xMotivo.
Veja aqui a Lista dos cStat | xMotivo.
Esta função é utilizada para pegar as tags pai, como segue:
_XMLRetEnvio := spdNFe.EnviarNF('0001', _XMLAssinado);
_NroRecibo := obterNroResultado(_XMLRetEnvio, '<nRec','</nRec');//Traz o número do recibo
Esta mesma função obterNroResultado, é utilizada para tratar o retorno e saber se o software continua o processo, e faz a consulta do recibo e/ou da chave da nota para obter o resultado.
Como exemplo, pode-se validar da seguinte maneira:
_cStatRetEnvio := obterNroResultado(mmXML.Text, '<cStat','</cStat');
if (_cStatRetEnvio = '100') or (_cStatRetEnvio = '103') or (_cStatRetEnvio = '104') then
15. Imprimir uma NF-e
O DANFE pode ser impresso na impressora ou salvo como um arquivo PDF. Em ambos os casos, é necessário informar o conteúdo de um XML de uma nota autorizada na SEFAZ (cStat igual a 100).
Imprimindo uma nota na impressora
Para imprimir uma nota, é necessário utilizar o método ImprimirDanfe. Como parâmetro, é necessário informar o XML autorizado, o caminho para o arquivo de modelo do DANFE (extensão .rtm) e o nome da impressora que será utilizada para imprimir (caso seja vazio, será utilizada a impressora padrão do Windows).
Veja mais sobre o método ImprimirDanfe
Exportando o DANFE em PDF
Para exportar o DANFE em PDF, é necessário utilizar o método ExportarDanfe. Como parâmetro, é necessário informar o XML autorizado, o caminho para o arquivo de modelo do DANFE (extensão .rtm) e o diretório em que o PDF deve ser salvo (caso seja vazio, será mostrada a tela de salvar arquivo do Windows).
16. Cancelar uma NF-e
A NF-e pode ser cancelada até 24 horas após a autorização. Para cancelar uma nota, ela deve estar autorizada na SEFAZ (cStat igual a 100).
Para cancelar uma nota, é necessário utilizar o método CancelarNFeEvento. Como parâmetro, é necessário informar a chave desta NF-e, o número de protocolo de registro, uma justificativa de cancelamento, a data e hora de cancelamento, a sequência deste evento, e o fuso horário.
Imprimindo uma nota cancelada
Para imprimir uma nota que foi cancelada, é necessário utilizar o método ImprimirDanfe. Como parâmetro, é necessário informar o XML autorizado, o XML cancelado, o caminho para o arquivo de modelo do DANFE (extensão .rtm), e o nome da impressora que será utilizada para imprimir (caso seja vazio, será utilizada a impressora padrão do Windows).
Facilite a implementação da NF-e no seu software
Agora que você conheceu toda a documentação do nosso Componente NF-e, que tal firmar parceria conosco e deixar de gastar tempo com documentos fiscais eletrônicos?
Além das nossas DLLs, você contará com consultoria Técnica, Tributária e suporte!
Foque seu tempo e esforço nos requisitos mais importantes do seu projeto.