O Componente NFS-e da Tecnospeed é uma biblioteca contendo todos os métodos necessários para emitir a Nota Fiscal de Serviço eletrônica. É a escolha ideal para quem pode consumir OCX e prefere manter todo o processo de mensageiria da NFS-e dentro do próprio ambiente. Para utilizar o Componente em seu software, basta instanciá-lo em seu projeto, implementar chamadas para cada um dos métodos e configurá-los de acordo com sua necessidade.
Para utilizar o Componente em seu software, basta instanciá-lo em seu projeto, implementar chamadas para cada um dos métodos e configurá-los de acordo com sua necessidade.
Além do Componente NFS-e, você também precisará de um CNPJ com Inscrição Municipal, um certificado digital deste CNPJ e/ou os dados de autenticação do CNPJ do portal da prefeitura, dependendo do município.
Com isso reunido, você poderá seguir este passo a passo detalhado:
Instalar Componente NFS-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 . Você pode acessar a 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 NFSe Full e o Setup NFSe Dependencias. O primeiro deve ser instalado no ambiente de desenvolvimento e o segundo no ambiente onde o sistema for ser executado.
No ambiente de desenvolvimento
No ambiente de desenvolvimento, nós devemos instalar 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.
No ambiente do cliente
No ambiente onde o sistema for ser executado, devemos instalar a versão Dependencias, 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, Templates, Scripts, aos arquivos com o endereço dos servidores e ao nfseLocais. Estas pastas e arquivos são criados no diretório de instalação da versão Full (TecnoSpeed/NFSe/Arquivos). É necessário colocá-los no ambiente do cliente e configurar o diretório delas nas propriedades DiretorioEsquemas, DiretorioTemplates, DiretorioScripts, ArquivoServidoresHom, ArquivoServidoresProd e ArquivoLocais
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 precise 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 irá 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.
prompt> instalador.exe /silent
prompt> Instalador.exe /verysilent
Incluindo os arquivos no próprio instalador
O instalador das dependências apenas adiciona as DLLs onde ele é instalado. Para não utilizar o instalador, é possível incorporar as DLLs ao próprio instalador. Basta copiar ou registrar na pasta System32 ou SysWOW64 , caso o sistema seja 64 bits, e na pasta SysWOW64 para a versão de 32 bits do Windows.
DLLs que devem ser registradas:
- NFSeX.dll
- NFSeDataSetX.dll
- NFSeRESTX.dll
- NFSeSignerX.dll
- NFSeConverterX.ocx
- msxml6.dll
- NFSeGovX.ocx
- midas.dll
- stdvcl40.dll
DLLs que devem ser apenas copiadas:
- ssleay32.dll
- libeay32.dll
- msxml6r.dll
- NFSeImpressaoRBUnicode.dll (Delphi XE ou superior)
- NFSeImpressaoRB.dll (Delphi inferior ou XE ou outras linguagens de programação)
Instalação Manual
A instalação manual trata-se do usuário instalar o componente NFSe 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 do cliente;
- Deverá ter em mãos o dpk do componente NFSe na versão de Delphi desejada e abri-lo.
- Após abrir o projeto do NFSe Converter, poderá compilar e em seguida instalar normalmente.
- Em seguida, para instalar o componente NFSe deverá ter em mãos seu respectivo dpk 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, exemplo:
- Após inserir os search path, deve-se compilar o projeto e o mesmo não poderá ter nenhum erro.
-
Ao compilar o projeto anteriormente, será criado um arquivo BPL e DCP do componente no diretório específico do Delphi, segue 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 anteriormente, para o diretório específico do Delphi conforme citado alguns exemplos acima, onde são criados os arquivos BPL e DCP do componente, exemplo:
- Após realizar esses passos, poderá finalmente instalar o seu componente NFSe, conforme a imagem abaixo:
Instanciar 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 também utilizar os seus métodos.
Aqui iremos te mostrar 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:
uses
spdNFSe
Em seguida é necessário criar as variáveis das classes, como no exemplo a baixo.
type
TForm1 = class(TForm)
NFSe: TspdNFSe;
Independente da forma com que você trouxe as classes ao projeto, agora você deve criar o objeto e direcioná-lo a uma variável:
spdNFSe := TspdNFSe.Create(nil);
VB6
Primeiramente, declare o objeto pertencente à classe que faz interação com os servidores da Sefaz
Dim spdNFSe As NFSeX.spdNFSeX
Dim spdNFSeDataSet As NFSeDataSetX.spdNFSeDataSetX
Após isso, já na inicialização do Fom, instancie o objeto dentro de uma nova variável.
Set spdNFSe = New NFSeX.spdNFSeX
Set spdNFSeDataSet = New NFSeDataSetX.spdNFSeDataSetX
C#
No início do seu projeto, junto com as bibliotecas importadas, adicione as OCX da Tecnospeed
using NFSeX;
using NFSeDataSetX;
Após isso, instancie o objeto dentro de uma nova variável
spdNFSeX spdNFSe = new spdNFSeX();
spdNFSeDataSetX spdNFSeDataSets = new spdNFSeDataSetX();
Configurar Propriedades
Antes de utilizar os métodos e funções do componente, é necessário configurar as suas propriedades.
As configurações do Componente NFSe 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 dois tipos: as propriedades gerais do componente e as propriedades de e-mail.
Configurando através do 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.
Configurando com um arquivo de configuração (ini)
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.
Configurando o ProxyNFSe
O ProxyNFSe contém os métodos necessários para realizar para realizar a comunicação entre o Componente NFSe e o webservice da prefeitura.
A configuração dele é feita apenas por código fonte e deve ser realizada conforme exemplo abaixo:
ProxyNFSe.ComponenteNFSe := NFSe;
Configurando o ConverterX
O ConverterX é responsável por gerar o XML por meio do TX2 e tratar o que foi retornado pelo webservice das prefeituras.
A configuração dele é feita apenas por código fonte e deve ser realizada conforme exemplo abaixo:
spdNFSeConverterX.DiretorioEsquemas := NFSe.DiretorioEsquemas;
spdNFSeConverterX.DiretorioScripts := 'C:\Program Files\TecnoSpeed\Arquivos\Scripts';
spdNFSeConverterX.Cidade := NFSe.Cidade;
Fluxo ideal da emissão da NFS-e
Para a emissão de uma NFS-e, o fluxo ideal inicia-se com a geração do arquivo de integração TX2, que após ser convertido pelo componente, se tornará em um XML do RPS de emissão.
No momento da emissão, dependendo do webservice da prefeitura, o envio do RPS poderá ser Síncrono ou Assíncrono. Caso a prefeitura não possua um webservice para comunicação, o envio segue um fluxo alternativo de Upload.
Caso o envio seja feito de forma síncrona, será necessário assinar o XML e executar o método de Envio Síncrono. A prefeitura então, deverá retornar um XML contendo a NFSe ou mensagens de rejeição sobre o RPS rejeitado.
Entretanto, caso o envio seja feito de forma assíncrona, será necessário também assinar o XML e executar o método de Envio. A prefeitura então, deverá retornar um XML contendo um protocolo de processamento, que deverá ser utilizado em uma consulta desse protocolo, também via webservice, para que seja retornado uma situação final do RPS.
No caso de envio via Upload, ao invés do RPS se tornar em um XML, o componente irá gerar uma remessa do lote. Após a geração dessa remessa, será necessário salvá-la em um arquivo (como um txt por exemplo) e fazer o upload manualmente no portal da prefeitura do prestador.
Caso algum RPS seja rejeitado, será necessário analisar a mensagem de rejeição, corrigir o RPS no arquivo de integração e gerar uma nova remessa.
Gerar arquivo de Integração
Para gerar este arquivo de integração, é necessário preencher os campos relacionados ao Lote / RPS de acordo com as informações necessárias para a emissão da NFSe. Para informar estes dados, é necessário seguir a Documentação do Arquivo de Integração TX2 do padrão único.
Após gerar o arquivo de integração, para que ele possa, dependendo da situação, ser submetido à assinatura ou ao portal da prefeitura do cliente, será necessário fazer a conversão desse arquivo utilizando o comando ConverterEnvioNFSe. Nesta etapa, o componente fará a conversão do arquivo de integração TX2 de padrão único no padrão de comunicação utilizado pela prefeitura.
Assinar XML
Para enviar uma nota à Prefeitura, é necessário realizar uma assinatura digital do XML. Esta assinatura pode ser realizada de três formas: utilizando um Certificado Digital, por autenticação de parâmetros Extras ou de forma mista, utilizando tanto um certificado digital quanto parâmetros Extras.
Para saber qual a forma de autenticação o padrão da prefeitura do prestador utiliza, acesse nossa Documentação base dos padrões homologados pela Tecnospeed
OBS: Para saber qual padrão a prefeitura do prestador utiliza, acesse nossa Lista de municípios homologados pela Tecnospeed.
A seguir, será descrito como configurar os parâmetros para assinatura do XML gerado.
Configurando a Autenticação pelo 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 semelhante a esta:
CN=TECNOSPEED S A:00000000000000, OU=Certificado PJ A1, O=ICP-Brasil, C=BR, S=, L=, E=, SE=00 00 00 00 00 00 00 00 00
Essa string será informada na propriedade NomeCertificado nas configurações do Componente NFSe.
Realizando a assinatura do XML
Para assinar o XML de envio, é necessário utilizar o método Assinar. Como parâmetro, é necessário informar o XML sem assinatura como string.
Caso o padrão de sistema da prefeitura do prestador efetue uma autenticação por parâmetros Extras, você deverá preencher o segundo parâmetro do Método, conforme consta na documentação do método Assinar.
Para saber como informar este parâmetro, verifique a documentação do padrão correspondente disponível em nossa Documentação Técnica.
O método retornará o mesmo XML passado como parâmetro na função, porém ele terá as tags de assinatura em seu conteúdo.
OBS: É importante lembrar que, dependendo da regra de cada município, será necessário que o CNPJ do emitente da nota seja o mesmo CNPJ do certificado digital utilizado para realizar a assinatura.
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. Caso precise de ajuda, fale com a nossa equipe de suporte.
Enviar uma NFS-e
O envio de um RPS, poderá ser feito de três formas: utilizando o Envio Síncrono, o Envio Assíncrono ou o envio via Upload, dependendo da disponibilidade do webservice de cada padrão homologado conosco.
Para saber em que momento utilizar uma forma ou o outra de envio, consulte nossa Documentação Técnica, onde é possível verificar os métodos disponíveis por cada padrão homologado.
Enviando uma nota de forma síncrona
Nesta modalidade de envio, você deverá utilizar o comando EnviarSincrono, informando o XML assinado e, se for o caso, informar os parâmetros Extras também informados no método de assinatura.
Veja mais sobre o método Enviar Síncrono >
Na modalidade Síncrona de envio, o retorno da Prefeitura deve ocorrer de forma que não seja retornado situações intermediárias, ou seja, a prefeitura deverá devolver o XML da NFSe ou um XML contendo rejeições.
Para tratarmos o retorno disponibilizado pela prefeitura, utilizamos o ConverterX, configurado previamente no seu código fonte.
Por meio deste tratamento, é possível obter dados da NFSe (em caso de autorização), ou os dados da rejeição.
Veja mais sobre o método Converter o retorno do envio Síncrono >
Enviando uma nota de forma assíncrona
Nesta modalidade de envio, você deverá utilizar o comando Enviar, informando o XML assinado e, se for o caso, informar os parâmetros Extras também informados no método de assinatura.
Veja mais sobre o método Enviar >
Na modalidade Assíncrona de envio, o retorno da Prefeitura não será uma situação final do RPS, ou seja, logo após o envio, será retornado um XML contendo um protocolo do lote enviado. Para obter uma situação final do lote enviado, você precisará fazer uma Consulta do Lote, informando o protocolo recebido no XML de retorno do envio. Ao executar este método, será retornado o XML contendo o lote com as NFSe autorizadas e as mensagens de rejeição para os RPS rejeitados. Caso a prefeitura ainda não tenha processado o lote, a prefeitura deverá retornar que o lote ainda não foi processado.
OBS: Este tempo de processamento dependerá exclusivamente do webservice de cada prefeitura.
Para tratarmos o retorno disponibilizado pela prefeitura, tanto do retorno do envio, quanto do retorno da consulta de lote, utilizamos o ConverterX, configurado previamente no seu código fonte.
Por meio deste tratamento, é possível obter dados do lote (como o Protocolo, por exemplo), os dados da NFSe, ou ainda os dados da rejeição.
Veja mais sobre o método Converter o retorno do envio >
Veja mais sobre o método Converter o retorno da consulta de lote >
Upload
Este fluxo alternativo ocorre para os municípios que não possuem um webservice de comunicação.
Nesta modalidade de envio, ao invés do RPS se tornar em um XML, o componente irá gerar uma remessa do lote. Após a geração dessa remessa, será necessário salvá-la em um arquivo (como um txt por exemplo) e fazer o upload manualmente no portal da prefeitura do prestador. Como não há nem assinatura e nem um envio para um webservice, a remessa já é gerada no comando ConverterEnvioNFSe.
Veja mais sobre o método ConverterEnvioNFSe >
Imprimir uma NFS-e
A impressão de um documento pelo componente está ligada diretamente ao fato da prefeitura dispor um XML imprimível de envio do RPS (para a impressão do RPS) ou de um XML da NFSe (para a impressão da NFSe).
Nos casos onde é possível exibir o documento a partir do XML, dispomos de duas formas de visualização deste documento, que pode ser impresso ou salvo como um arquivo PDF.
Antes de visualizar o documento
Antes de tudo, primeiramente é necessário configurar qual o tipo da impressão deseja realizar.
Essa configuração deverá ser realizada da seguinte forma:
Propriedade:
ProxyNFSe.ComponenteNFSe.ConfiguracoesImpressao.ModoImpressao
Opção | Detalhes |
printRPS | Configurar o componente para imprimir o RPS |
printNFSe | Configurar o componente para imprimir a NFSe |
Após esta configuração, é necessário Criar o DataSet de impressão, informando o XML de envio do RPS ou o XML da NFSe (Que pode ser obtido no retorno dos seguintes métodos: Consultar pelo número do Lote, Consultar pelo número da NFSe ou Consultar pelo RPS).
Veja mais sobre o método CriarDataSets >
Imprimindo uma nota na impressora
Para imprimir um documento, seja ele o RPS ou a DANFSe, é necessário utilizar o método ImprimirDocumento.
Veja mais sobre o método ImprimirDocumento >
Exportando o documento em PDF
Para exportar um documento para PDF, seja ele o RPS ou a DANFSe, é necessário utilizar o método de Exportar o Documento.
Veja mais sobre o método de Exportar o Documento >
OBS: Para as prefeituras que não dispõe de um XML de impressão da NFSe imprimível, disponibilizamos um método que retorna o link de impressão diretamente da prefeitura.
Nesse caso, você precisará utilizar o método ObterLinkImpressaoNFSe
Cancelar uma NFS-e
A possibilidade do cancelamento de uma NFSe via webservice , bem como o prazo estipulado, depende diretamente do padrão de comunicação utilizado de cada prefeitura. É possível verificar os métodos disponíveis de cada padrão acessando nossa Documentação Técnica.
Para cancelar uma nota, é necessário utilizar o método CancelarNota. Como parâmetro, é necessário informar a chave desta NFS-e, obtida pelo atributo ChaveCancelamento do Converter no retorno de uma NFSe e os parâmetros Extras dependendo de cada prefeitura.
Comentários
0 comentário
Por favor, entre para comentar.