npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ns-nfce-node

v1.1.0

Published

Biblioteca para comunicancao com a API de NFCe da NS Tecnologia.

Downloads

1

Readme

ns-nfce-node

Esta biblioteca possibilita a comunicação e o consumo da solução API para NFCe da NS Tecnologia.

Para implementar esta biblioteca em seu projeto, você pode:

  1. Realizar a instalação do pacote através do npm:

    npm install ns-nfce-node
  2. Realizar o download da biblioteca pelo GitHub e adicionar a pasta "ns-modules" em seu projeto.

Exemplos de uso do pacote

Para que a comunicação com a API possa ser feita, é necessário informar o seu Token no cabeçalho das requisições.

Para isso, crie um arquivo chamado configParceiro.js, e nele adicione:

   const token = ""
   const CNPJ = ""

   module.exports = {token, CNPJ}
   

Dessa forma, o pacote conseguirá importar as suas configurações, onde você estará informando o token da software house e o cnpj do emitente.

Emissão

Para realizarmos a emissão de uma NFCe, vamos utilizar os seguintes métodos.

Primeiramente, vamos fazer referencia da classe emitirSincrono, para utilizarmos o método emitirNFCeSincrono

   const nsAPI = require('ns-nfce-node/ns_modules/nfce_module/emissao/emitirSincrono')

O segundo passo é importar, ou construir o arquivo de emissão em .json da NFCe.

   const nfceJSON = require('./nfce.json')
       

Apos isso, vamo utilizar o método sendPostRequest da classe EmissaoSincrona para realizar o envio deste documento NFCe para a API. Este método realiza a emissão, a consulta de status de processamento e o download de forma sequencial.

   var retorno = nsAPI.emitirNFCeSincrono(nfceJSON,"2","XP","Documentos/NFCe")
   retorno.then(()=>)

Os parâmetros deste método são:

  • nfceJSON = objeto NFCe que será serializado para envio;
  • 2 = tpAmb = ambiente onde será autorizado a NFCe. 1 = produção, 2 = homologação / testes ;
  • "XP" = tpDown = tipo de download, indicando quais os tipos de arquivos serão obtidos no Download;
  • "Documentos/NFCe" = diretório onde serão salvos os documentos obtidos no download;

O retorno deste método é um objeto json contendo um compilado dos retornos dos métodos realizados pela emissão sincrona:

    ResponseSincrono {
	statusEnvio: 100,
	statusDownload: 100,
	motivo: 'NFC-e autorizada com sucesso',
	xMotivo: 'Autorizado o uso da NF-e',
	chNFe: '43211207364617000135650000000224121823802320',
	cStat: 100,
	nProt: '143210000692032',
	xml: '<?xml version="1.0" encoding="utf-8"?><nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe><infNFe versao="4.00",
       json: undefined, // json da NFCe autorizada quando tpDown = "J", ou "JP"
       pdf: undefined, // base64 do PDF da NFCe ( DANFE ) autorizada quando tpDown = "P", "XP", "JP"
       erros: undefined // array de erros quando a comunicação, emissão, ou processamento apresentar erros
     }
   }

Podemos acessarmos os dados de retorno e aplicarmos validações da seguinte forma. Tenhamos como exemplo:

   i if ((emissaoResponse.status == 100) || (emissaoResponse.status == -6 || (emissaoResponse.status == -7))){
    
    respostaSincrona.statusEnvio = emissaoResponse.status
    respostaSincrona.cStat = emissaoResponse.cStat

       // Verifica se houve sucesso na consulta
       if (retorno.statusConsulta == "200") {
           var statusConsulta = retorno.statusConsulta
           var motivo = retorno.motivo
           var xMotivo = retorno.xMotivo

           // Verifica se a nota foi autorizada
           if ((emissaoResponse.cStat == 100) || (emissaoResponse.cStat == 150)){
        
            respostaSincrona.cStat = emissaoResponse.cStat
            respostaSincrona.chNFe = emissaoResponse.chNFe
            respostaSincrona.nProt = emissaoResponse.nProt
            respostaSincrona.xml = emissaoResponse.xml
            respostaSincrona.motivo = emissaoResponse.motivo
            respostaSincrona.xMotivo = emissaoResponse.xMotivo

            let downloadBody = new download.Body(
                emissaoResponse.chNFe,
                tpAmb,
                impressao
            )
            await new Promise(resolve => setTimeout(resolve, 500));

                if (downloadResponse.status == 100) {
                respostaSincrona.statusDownload = downloadResponse.status
                respostaSincrona.cStat = downloadResponse.cStat
                respostaSincrona.json = downloadResponse.json
                respostaSincrona.pdf = downloadResponse.pdf
            }
            
            else {
                respostaSincrona.cStat = downloadResponse.cStat
                respostaSincrona.statusDownload = downloadResponse.status
                respostaSincrona.motivo = downloadResponse.motivo;
                respostaSincrona.xMotivo = downloadResponse.xMotivo;
            }
        }

        else {
            respostaSincrona.motivo = statusResponse.motivo;
            respostaSincrona.xMotivo = statusResponse.xMotivo;
        }

Eventos

Cancelar NFCe

Para realizarmos um cancelamento de uma NFCe, devemos gerar o objeto do corpo da requisição e depois, fazer a chamada do método. Veja um exemplo:

   const cancelarNFC = require('./node_modules/ns-nfce-node/ns_nodules/nfce_module/eventos/cancelamento')

let corpo = new cancelarNFC.Body(
	"43211207364617000135650000000224061514316849",
	"2",
	"2021-12-21T15:37:56-03:00",
	"143210000688971",
	"CANCELAMENTO REALIZADO PARA TESTES DE INTEGRACAO EXEMPLO NODE JS"
)

cancelarNFC.sendPostRequest(corpo, "XP", "Documentos/NFCe").then(getResponse => { console.log(getResponse) })
    

Os parâmetros informados no método são:

  • requisicaoCancelamento = Objeto contendo as informações do corpo da requisição de cancelamento;
  • "XP" = tpDown = tipo de download, indicando quais os tipos de arquivos serão obtidos no download do evento de cancelamento;
  • @"Documentos/NFCe" = diretório onde serão salvos os arquivos obtidos no download do evento de cancelamento;

Inutilização de numeração da NFCe

Para emitirmos uma inutilização de numeração da NFCe, devemos gerar o objeto do corpo da requisição, utilizando a classe Inutilizacao.Body, e utilizar o método Inutilizacao.sendPostRequest, da seguinte forma:

const inutilizarNFCe = require('./node_modules/ns-nfce-node/ns_nodules/nfce_module/eventos/inutilizacao') 

let corpo = new inutilizarNFCe.Body(
	"43", 
	"2", 
	"21", 
	"07364617000135", 
	"0", 
	"22901", 
	"22901", 
	"INUTILIZADO PARA TESTES DE INTEGRACAO"
)

	inutilizarNFCe.sendPostRequest(corpo, "X", "./Documentos").then(getResponse => { console.log(getResponse) })
    

Os parâmetros informados no método são:

  • requisicaoInutilizar = Objeto contendo as informações do corpo da requisição de inutilização;
  • "X" = tpDown = tipo de download, indicando quais os tipos de arquivos serão obtidos no download do evento de inutilização;
  • @"./Documentos" = diretório onde serão salvos os arquivos obtidos no download do evento de inutilização;

Utilitários

Ainda com esta biblioteca, é possivel acessar método utilitários da API de NFCe. Veja exemplos:

Consultar situação de NFCe

   const consultarNFCe = require('./node_modules/ns-nfce-node/ns_nodules/nfce_module/util/consultarSituacao')

	let corpo = new consultarNFCe.Body(
		"07364617000135",
		"43211207364617000135650000000223501529141481",
		"2"
	)

consultarNFCe.sendPostRequest(corpo).then(getResponse => { console.log(getResponse) })
    

Agendamento de Envio de E-Mail de NFCe

	const enviarEmail = require('./node_modules/ns-nfce-node/ns_nodules/nfce_module/util/envioEmail')

	let corpo = new enviarEmail.Body(
		"43211207364617000135650000000223501529141481",
		"2",
		"true",
		"true",
		"[email protected]"
	)

	enviarEmail.sendPostRequest(corpo).then(getResponse => { console.log(getResponse) })
   

Gerar prévia de NFCe

	const nsAPI = require('./node_modules/ns-nfce-node/ns_nodules/nfce_module/util/previa')
	const nfceJSON = require('./nfce.json')

	previa = nsAPI.sendPostRequest(nfceJSON).then(getResponse => { console.log(getResponse) })

Informações Adicionais

Para saber mais sobre o projeto NFCe API da NS Tecnologia, consulte a documentação