@nestjs-fiscal/nfe
v1.0.0
Published
O pacote `nfe` contém toda a lógica específica para a emissão, validação, cancelamento e inutilização de Notas Fiscais Eletrônicas (NFe v4.00) dentro da arquitetura do NestJS Fiscal BR.
Readme
@nestjs-fiscal/nfe
O pacote nfe contém toda a lógica específica para a emissão, validação, cancelamento e inutilização de Notas Fiscais Eletrônicas (NFe v4.00) dentro da arquitetura do NestJS Fiscal BR.
Instalação
npm install @nestjs-fiscal/nfe @nestjs-fiscal/coreO que este pacote contém?
- Use Cases Principais:
SubmitNFeUseCase: Fluxo completo de cálculo de impostos, preenchimento, assinatura, validação XSD e envio para a SEFAZ.CancelNFeUseCase: Fluxo de cancelamento de evento de NFe.InutilizarNFeUseCase: Fluxo para inutilização de numeração de NFe.GenerateDanfeUseCase: Geração do PDF (DANFE) a partir do XML.
- Builders XML:
NFeXmlBuilder,EnviNFeBuilder,CancelNFeBuilder,InutNFeBuilder.
- Serviços Fiscais:
TaxEngineService: Motor de cálculo rudimentar para ICMS, IPI, PIS, COFINS com base no CST/CSOSN.NFeSignerService: Serviço orquestrador de assinatura.NFeXsdValidator: Validação estrutural do XML contra os schemas XSD oficiais da SEFAZ v4.00.
- Gateways:
SoapSefazGateway: Implementação para comunicação direta via SOAP com os Web Services da SEFAZ, utilizando comunicação baseada em certificados digitais (mTLS/HTTPS).
Exemplo de Uso
Configuração do Módulo no seu sistema NestJS:
import { Module } from '@nestjs/common';
import { SubmitNFeUseCase, TaxEngineService, NFeXmlBuilder, EnviNFeBuilder, NFeXsdValidator, SoapSefazGateway } from '@nestjs-fiscal/nfe';
import { SignXmlUseCase, GenerateNFeUseCase } from '@nestjs-fiscal/core';
@Module({
providers: [
TaxEngineService,
NFeXmlBuilder,
EnviNFeBuilder,
{
provide: NFeXsdValidator,
useFactory: () => new NFeXsdValidator(),
},
// ... Provedores base (como repositório e signXml)
{
provide: SubmitNFeUseCase,
useFactory: (gen, sign, xml, val, env, tax, repo) => {
// Inicialize com o certificado p12 da empresa para as requests SOAP
const gateway = new SoapSefazGateway(empresaCertP12Buffer, 'senha-certificado');
return new SubmitNFeUseCase(gen, sign, xml, val, env, gateway, tax, repo);
},
inject: [GenerateNFeUseCase, SignXmlUseCase, NFeXmlBuilder, NFeXsdValidator, EnviNFeBuilder, TaxEngineService, 'NFeRepository'],
}
]
})
export class NFeModule {}Executando a emissão:
const result = await this.submitNFeUseCase.execute({
dto: nfDtoData, // Dados do CreateNFeDTO
idLote: '1',
certificateId: 'id-cert', // Para assinatura
certificateFile: pfxBuf, // Buffer do pfx
password: 'senha'
});
console.log('Chave de Acesso:', result.accessKey);
console.log('Resposta da SEFAZ:', result.sefazResponse);