NFeWizard-io é uma biblioteca Node.js projetada para simplificar a interação com os webservices da SEFAZ, proporcionando uma solução robusta para automação de processos relacionados à Nota Fiscal Eletrônica (NF-e). A biblioteca oferece métodos abrangentes para diversas operações fiscais, incluindo:
- Autorização (Emissão de NFe e NFCe): Submissão de Notas Fiscais Eletrônicas e Notas Fiscais de Consumidor Eletrônica para autorização.
- Distribuição DFe: Consulta e Download de DF-e (Documentos fiscais eletrônicos), facilitando o acesso a documentos fiscais eletrônicos.
- Consulta de Protocolo: Verificação da situação atual da NF-e na Base de Dados do Portal da Secretaria de Fazenda Estadual.
- Inutilização de NFe: Processo de inutilização de números de NF-e que não serão utilizados, assegurando a conformidade fiscal.
- Consulta de Status do Serviço: Monitoramento do status dos serviços da SEFAZ, garantindo a disponibilidade dos webservices.
- Recepção de Eventos: Tratamento de diversos eventos relacionados à NFe, incluindo:
- Cancelamento de NFe
- Carta de Correção
- Ciência da Operação
- Confirmação da Operação
- Desconhecimento da Operação
- EPEC (Evento Prévio de Emissão em Contingência)
- Operação Não Realizada
- Geração de DANFE: Criação do Documento Auxiliar da Nota Fiscal Eletrônica (DANFE), um resumo impresso da NFe.
import NFeWizard from 'nfewizard-io';
// Instanciar
const nfeWizard = new NFeWizard();
// Inicializar
await nfeWizard.NFE_LoadEnvironment({
config: {
dfe: {
baixarXMLDistribuicao: true,
pathXMLDistribuicao: "tmp/DistribuicaoDFe",
armazenarXMLAutorizacao: true,
pathXMLAutorizacao: "tmp/Autorizacao",
armazenarXMLRetorno: true,
pathXMLRetorno: "tmp/RequestLogs",
armazenarXMLConsulta: true,
pathXMLConsulta: "tmp/RequestLogs",
armazenarXMLConsultaComTagSoap: false,
armazenarRetornoEmJSON: true,
pathRetornoEmJSON: "tmp/DistribuicaoDFe",
pathCertificado: "certificado.pfx",
senhaCertificado: "123456",
UF: "SP",
CPFCNPJ: "99999999999999",
},
nfe: {
ambiente: 2,
versaoDF: "4.00",
},
email: {
host: 'smtp.example.com',
port: 587,
secure: false,
auth: {
user: '[email protected]',
pass: 'sua-senha'
},
emailParams: {
from: '"Seu Nome" <[email protected]>',
to: '[email protected]',
}
},
lib: {
connection: {
timeout: 30000,
},
useOpenSSL: false,
useForSchemaValidation: 'validateSchemaJsBased',
}
}
});
// Exemplo de Utilização
const chaveNFe: DFePorChaveNFe = {
cUFAutor: 35,
CNPJ: '99999999999999',
consChNFe: {
chNFe: '00000000000000000000000000000000000000000000'
},
}
await nfeWizard.NFE_DistribuicaoDFePorChave(chaveNFe);
- Para a documentação completa acesse NFeWizard-io - Docs
- Adicionada propriedade useForSchemaValidation (config - lib - useForSchemaValidation). Caso 'validateSchemaJsBased' chama um método que não utiliza JAVA para validar o xml. Caso 'validateSchemaJavaBased' chama um método baseado em JAAVA para validar o xml.
- Adicionado método de validateSchemaJsBased e validateSchemaJavaBased para validação do XML condicionado à propriedade useForSchemaValidation na configuração do ambiente.
- Externaliza libxmljs
- Finaliza ajustes para funcionamento em ambiente lambda
Certificado
: Implementado apenas em certificados A1.NodeJs
: Testado com versões 16 ou superiores.UF
: Testado apenas para São Paulo. Por favor, abra uma issue caso encontre problemas com outros estados.
Para uma boa experiência de Debug no VS Code permitindo fazer o "step into" nos métodos do NfeWizzard, usar o launch.json com sourceMpas true e outFiles conforme segue::
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/src/index.ts",
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"sourceMaps": true
}
]
}
Exemplo do tsconfig.json do projeto que importa o NFEWizard.IO::
{
"compilerOptions": {
"target": "es2020",
"module": "nodenext",
"outDir": "dist",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"sourceMap": true,
"inlineSources": true,
"inlineSourceMap": false,
"declaration": true,
"declarationMap": true,
"moduleResolution": "nodenext"
}
}
- Adicionar Testes
- Aplicar SOLID
- Adicionar tratamento de LOGs
Primeiramente, obrigado por considerar contribuir para nossa biblioteca! Nosso projeto é de código aberto e gratuito para uso, mas manter e desenvolver novas funcionalidades requer tempo e esforço. Se você achar nosso trabalho útil e quiser apoiar nosso desenvolvimento, considere fazer uma doação.
- Suporte Contínuo: Sua doação ajuda a manter o projeto ativo e em constante evolução.
- Novos Recursos: Com seu apoio, podemos adicionar novos recursos e melhorias.
- Manutenção e Correções: Garantimos que bugs sejam corrigidos rapidamente e que o código esteja sempre atualizado.
- Reconhecimento: Apoiadores são reconhecidos em nossa documentação e página do projeto.
- Fraldas: Meu primeiro filho nasceu no inicio desse ano, fraldas são caras! 🍼🚼
Você pode contribuir através das seguintes plataformas:
-
Pix: Se preferir doar via Pix, utilize a seguinte chave:
Chave Pix: 944ce2f2-e90f-400a-a388-bb1fe6719e02 Nome: Marco Lima
Agradecemos imensamente seu apoio!
Se você não puder doar financeiramente, existem outras maneiras valiosas de contribuir:
- Reportar Bugs: Envie relatórios de bugs e problemas que encontrar.
- Submeter PRs: Contribua com código, documentação ou testes.
- Espalhe a Palavra: Compartilhe nosso projeto com amigos e colegas.
Agradecemos imensamente seu apoio e contribuição. Juntos, podemos construir e manter uma ferramenta incrível para todos!
Muito obrigado!
Agradecemos aos seguintes desenvolvedores por suas contribuições ao projeto:
dliocode |
ThalesAugusto0 |
cassioseffrin |
Agradecemos imensamente aos nossos patrocinadores pela sua generosidade.
italosll |
Marco Lima |
Projetado com ♥ por Marco Lima. Licenciado sob a GPL-3.0.