Existe uma forma simples de automatizar a emissão de NFSe em seu software desenvolvido em Javascript. Quero te apresentar a integração com o Componente NFSe da TecnoSpeed.
Nesta nova versão do componente, todos os fluxos de emissão, envio síncrono, assíncrono, consultas, por RPS, por Nota, tudo isso foi simplificado e unificado em métodos onde não há necessidade de saber ou fazer tratamentos para identificar qual método utilizar. O componente faz isso pra você.
É 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.
Criar uma conta TecnoSpeed (TecnoAccount)
Primeiramente, se você não possuí um Token de acesso é necessário realizar um cadastro no Tecno Account da Tecnospeed TI no link: https://conta.tecnospeed.com.br/
Caso você já possua um cadastro no TecnoAccount e um token, você irá utilizar este mesmo token, não sendo necessário um novo cadastro.
Clique em Criar uma conta e preencha os dados do formulário
Com a conta criada faça o login e pegue o seu Token
Esse Token será utilizado no método ConfigurarSoftwareHouse do componente, a baixo veremos como usar.
Instalação e instanciação
Primeiro de tudo, é preciso instalar o Componente no computador. Caso haja necessidade, acompanhe a documentação de Instalação.
No caso de Node/JS, lembre-se de assinalar os campos :
Para demonstrar como usar o Componente NFSe, é necessário ter instalado o Node e NPM no computador. Através deles será possível baixar e instalar pacotes necessários para a instanciação dos componentes. Para instalar o pacote necessário digite no terminal na pasta do projeto:
npm install winax
Após isso, é possível instanciá-lo dentro do projeto JS e então trazer os componentes NFSeX para serem utilizados, conforme o exemplo:
const spdNFSe = new ActiveX.Object('NFSeX.spdNFSeX')
const spdNFSeDataSet= new ActiveX.Object('NFSeDataSetX.spdNFSeDataSetX')
É importante também criar uma variável que represente o caminho o qual se encontra os arquivos do projeto
const path = require('path')
const arquivosNFSE = path.join('C:\\Program Files\\TecnoSpeed\\NFSe', 'arquivos', '') //Caminho para onde foi instalado o componente
Logo após criar o objeto do componente, é necessário configurar a Software House emissora, inserindo o CNPJ de contrato com a TecnoSpeed (Segundo parâmetro pode ir em branco, será implementado futuramente):
spdNFSe.ConfigurarSoftwareHouse('00000000000000', '') //preencha com seu cnpj e token, caso já o tenha gerado
Configurando Componente
Para fazer as configurações do componente, é possível fazê-lo diretamente através do código fonte.
Isso pode ser feito da seguinte maneira:
/* Configurações locais */
spdNFSe.CIDADE = "CidadeUF"
spdNFSe.NomeCertificado = '' //preencha com certificado da empresa
spdNFSe.CNPJ = '00000000000000' // modifique para o CNPJ da empresa
spdNFSe.InscricaoMunicipal = "0000000000"
spdNFSe.ParametrosExtras = "login=0000; senha=xxxxxxx"
spdNFSe.Arquivos = arquivosNFSE
spdNFSe.TipoCertificado = ckFile
spdNFSe.DiretorioLog = path.join(arquivosNFe, 'Log')
spdNFSe.Ambiente = akHomologacao
spdNFSe.LogotipoEmitente = "c:/caminho/" //preencha com o caminho correto
spdNFSe.EmailSettings.ServidorSmtp = "smtp.gmail.com"
spdNFSe.EmailSettings.EmailRemetente= "teste@remetente.com"
spdNFSe.EmailSettings.Assunto = "exemplo de assunto"
spdNFSe.EmailSettings.Mensagem = "Ex de mensagem"
spdNFSe.EmailSettings.Usuario = "usuario@teste.com"
spdNFSe.EmailSettings.Senha = "senha"
spdNFSe.EmailSettings.Timeout = 30000
spdNFSe.EmailSettings.EmailDestinatario = "teste@tecnospeed.com.br"
spdNFSe.EmailSettings.CCo = ""
spdNFSe.EmailSettings.CC = ""
spdNFSe.EmailSettings.Autenticacao = True
spdNFSe.EmailSettings.Porta = 587
Após essa configuração inicial, está tudo pronto para utilizar os métodos do componente para consultas e emissões de NFSe.
Gerando o 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 (Tx2), ele já pode ser submetido ao método Enviar.
Métodos do Componente NFS-e
Atualizar Arquivos: Este método tem a funcionalidade de atualizar os arquivos referentes ao município em que o componente NFSe está configurado, que são eles: templates, esquemas, scripts, nfseLocais.ini layout de impressão e brasões.
Esses arquivos são cruciais para o funcionando do componente, com esse método é possível mudar o padrão em que a cidade está homologado apenas chamando o método AtualizarArquivos, sem que seja necessário atualizar a versão do componente NFSe. (Para cidades onde o novo padrão já está implementado na versão utilizada)
spdNFSe.AtualizarArquivos() //Consulta o Status do serviço
Consultar Cidades Homologadas: O método ConsultarCidadesHomologadas retorna um XML contendo as informações sobre as cidades homologadas pela TecnoSpeed até o momento, nesse XML existem informações como:
- Qual o Padrão (fornecedor do WebService), Exemplo: Betha, Ginfes, ISSDigital, etc...
- Consulta de notas Tomadas ou Destinadas
- Tipo de comunicação (Soap ou Rest)
- Código IBGE do município
- Multi Serviços, Se a cidade possuí inclusão de mais de 1 serviço por RPS.
- Certificado Digital, se é necessário para assinar o XML de envio
- Autenticação com o portal é feita por Login e Senha
Exemplo do XML:
<MARINGAPR>
<Padrao>MARINGA</Padrao>
<ConsultarNotasTomada>True</ConsultarNotasTomada>
<TipoComunicacao>Soap</TipoComunicacao>
<CodigoIBGE>4115200</CodigoIBGE>
<Multiservicos>False</Multiservicos>
<Certificado>True</Certificado>
<Login>False</Login>
<Senha>False</Senha>
</MARINGAPR>
Esse método é muito útil caso você queira saber algumas informações importantes sobre o município que desejar sem que seja preciso entrar em contato com a consultoria técnica da TecnoSpeed.
spdNFSe.ConsultarCidadesHomologadas()
Consultar Notas Tomadas: Consulta todas as notas tomadas / Recebidas contra o tomador do serviço em um determinado período para uma cidade especifica.
spdNFSe.ConsultarNotasTomadas(NomeCidade, DocumentoTomador, IMTomador, DocumentoPrestadorConsulente, IMPrestadorConsulente, DataInicial, DataFinal, Pagina, Params)
O Retorno acontece na própria instancia que chamou o método, na propriedade spdNFSe.RetornoWSNotasTomadas.Item[0..N] ou através do método spdNFSe.RetornoJsonTomadas()
IMPORTANTE: Este método não está disponível para todos os padrões suportados pelo componente NFSe, é necessário consultar a documentação do padrão para conferir se o mesmo possuí suporte ou não para esse método. Esse método é utilizado para consultar as notas fiscais de serviços emitidas contra o tomador do serviço.
Enviar: O método Enviar se encarrega de Gerar o Xml, assinar e enviar de forma automática.
spdNFSe.Enviar(Tx2)
O retorno acontece na propriedade RetornoWS. Ela terá um contador de iterações, podendo ter 1 ou muitas posições dependendo da quantidade de RPS enviados no TX2.
A Instância também conta com outros dois métodos de retorno, spdNFSe.RetornoJson e spdNFSe.RetornoCSV, com seus respectivos formatos.
Consultar: Realiza a consulta necessária para obter a nota com base nos parâmetros de entrada.
Só será necessário chamar o método Consultar quando o retorno do método Enviar retornar EMPROCESSAMENTO.
spdNFSe.Consultar(aNumeroNFSe, aNumeroRPS, aSerieRPS, aTipoRPS, aProtocolo)
Cancelar: Cancela uma NFSe e automaticamente realiza a consulta da nota cancelada. Nesse caso não é necessário chamar o método Consultar para obter a nota cancelada.
Utilize o campo "Chave de Cancelamento: 86|86_164_1_1" obtido no retorno do método Enviar ou Consultar para realizar o cancelamento, Exemplo:
spdNFSe.CancelarNota(NFSe.RetornoWS.Items[i].ChaveCancelamento);
ExportarImpressaoParaPDF: Através desse método é possível exportar um PDF de NFSe ou RPS com os campos customizados.
spdNFSe.ExportarImpressaoParaPDF('Xml da NFSe', 'XML do RPS', 'Meu arquivoTx2', 'C:\NFSe\minha-nfse.pdf');
Imprimir: Através desse método é possível imprimir uma NFSe ou RPS com os campos customizados.
Imprimir('Xml da NFSe', 'XML do RPS', 'Meu arquivoTx2', 'Nome impressora');
Comentários
0 comentário
Por favor, entre para comentar.