JpManifestoNFE 0.9.4

dotnet add package JpManifestoNFE --version 0.9.4                
NuGet\Install-Package JpManifestoNFE -Version 0.9.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JpManifestoNFE" Version="0.9.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add JpManifestoNFE --version 0.9.4                
#r "nuget: JpManifestoNFE, 0.9.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install JpManifestoNFE as a Cake Addin
#addin nuget:?package=JpManifestoNFE&version=0.9.4

// Install JpManifestoNFE as a Cake Tool
#tool nuget:?package=JpManifestoNFE&version=0.9.4                

JpManifestoNFE

Biblioteca de consumo de serviços de manifestação e distribuição de documentos fiscais.

O objetivo desta biblioteca é consumir os serviços da Sefaz, permitindo a utilização de objetos para o preenchimento de documentos, que serão convertidos em XML, assinados (se requerido) e autenticados. Um único arquivo contém todas as classes presentes nos arquivos XSD (Schemas) convertidas em classes .NET.

Antes de utilizar, é necessário o download dos arquivos schemas (XSD) para a validação dos documentos antes do envio. Você poderá encontra-los no <a href="https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=/fwLvLUSmU8=" >Portal da Nota Fiscal Eletrônica</a>. A versão atual da biblioteca utiliza os schemas Pacote de Liberação Distribuição de DF-e v1.02 (Atualizado em 25/10/16) e qualquer schema dos Esquemas XML NF-e/NFC-e, desde que sejam da versão 4.0. Os arquivos devem ser armazenados em uma única pasta.


Utilização

Criar uma instância de SchemaHelper que irá carregar todos os schemas necessários para a validação do XML de requisição, SchemaHelper será utilizado em todos os serviços.
SchemaHelper schemaManager = new SchemaHelper(diretorioSchema);

Serviço de Manifestação de NF-e:

Criar uma instância de IManifestacaoNFe
IManifestacaoNFe manifestacaoNFe = ManifestacaoNFe.GetManifestacaoNFe(certificadoCliente, schemaManager, TUf.RJ, TAmb tipoAmbiente);
Criar as instâncias de ManifestoNFe, que contém os dados necessários para a manifestação, abaixo será criada uma instância de cada tipo de operação.
var cienciaDaOperacao = new ManifestoNFe(TEventoInfEventoTpEvento.CienciaOperacao, chaveNFe, documentoCliente);

var confirmacaoOperacao = new ManifestoNFe(TEventoInfEventoTpEvento.ConfirmacaoOperacao, chaveNFe, documentoCliente);

var descOperacao = new ManifestoNFe(TEventoInfEventoTpEvento.DesconhecimentoOperacao, chaveNFe, documentoCliente);

var opNaoRealizada = new ManifestoNFe(TEventoInfEventoTpEvento.OperacaoNaoRealizada, chaveNFe, documentoCliente);
//Ao manifestar o evento de Operação não realizada, é necessário inserir a justificativa do evento.
opNaoRealizada.JustificativaEvento = "Motivo da operação não ter sido realizada.";
Chamar o método ManifestarNFes passando como pârametros as manifestações criadas anteriormente.

Obs: Por regra, o serviço suporta até 20 eventos simultâneos por vez.

TRetEnvEvento retornoEventos = await manifestacaoNFe.ManifestarNFes(cienciaDaOperacao, confirmacaoOperacao, opNaoRealizada, descOperacao);

Uma exceção SefazReturnException é lançada quando a manifestação do lote (como um todo) for mal sucedida, caso a solicitação seja bem sucedida, dentro da instância do retorno haverá também um lote, com a resposta de cada manifestação enviada, onde cada uma deve ser verificada para saber se o evento foi anexado a NF-e ou não.


Serviço de Distribuição DF-e

Criar uma nova instância de IDistribuicaoDFe
 IDistribuicaoDFe distribuicaoDFe = DistribuicaoDFe.GetDistribuicaoDFe(certificadoCliente, schemaManager, DocumentoCliente, CodigoUF, TAmb tipoAmbiente);

O serviço de distribuição DF-e suporta 3 tipos de consulta.

Consulta por chave da nota fiscal.
retDistDFe retornoDFe = await distribuicaoDFe.ConsultaChaveNFe(chNFe);
Consulta por NSU (Número Sequencial Único).
retDistDFe retornoDFe = distribuicaoDFe.ConsultaNSU(NSU);
Consulta por último NSU, onde todos os documentos com NSU acima do informado serão retornados.
retDistDFe retornoDFe = await distribuicaoDFe.ConsultaUltimoNSU(NSU);

Obs: A consulta por último NSU limita até 50 documentos em um único lote, caso a consulta deva retornar mais do que o limite permitido, o lote recebido terá duas propriedades, UltNSU e MaxNSU, onde MaxNSU é o ultimo NSU do último evento registrado para o destinatário, e UltNSU é o último NSU do último documento do lote recebido. Caso queira obter todos os resultados, efetua novas consultas informando o último NSU recebido, até que o mesmo seja igual a MaxNSU.

Atenção: O serviço de Distribuição DF-e possui um limite de consumo, caso muitas consultas sejam feitas em um curto período de tempo, será lançada uma exceção de Consumo Indevido onde o usuário deverá aguardar até 1 hora para utilizar o serviço novamente.

Processando os resultados da Distriuição DF-e

O serviço de Distribuição DF-e retorna os documentos compactados em lotes, para facilitar o processamento do retorno, foi criada a classe RetornoNFeDocs, que processa e organiza todos os documentos de acordo com os tipos retornados.

IRetornoDFeDocs dfeDocs = RetornoDFeDocs.ProcessRetornoDFeDocs(retornoDistDFe);

//Retorna os resumos de eventos vinculados a notas fiscais.
var resumoEventosNFe = dfeDocs.GetResumosEventoNFe();

//Retorna os resumos das notas fiscais emitidas para o destinatário.
var resumoNFe = dfeDocs.GetResumosNFe();

//Retorna as notas fiscais emitidas para o destinatário, já processadas. (Após manifestar Ciência da Operação ou Confirmação da Operação).
var procNFe = dfeDocs.GetNFesProcessadas();

Tipos convertidos

Foi criado um arquivo .cs chamado XsdClasses, contendo todos os tipos declarados nos schemas, esta conversão foi feita utilizando a ferramenta Xml Schemas/DataTypes support utility presente no Visual Studio. Infelizmente a conversão não é 100% perfeita, alguns campos possuem nomes genéricos como "Item", que pode ser corrigido com alguns ajustes em versões futuras.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.9.4 806 5/17/2022
0.9.2 342 7/19/2021