JpManifestoNFE 0.9.4
dotnet add package JpManifestoNFE --version 0.9.4
NuGet\Install-Package JpManifestoNFE -Version 0.9.4
<PackageReference Include="JpManifestoNFE" Version="0.9.4" />
paket add JpManifestoNFE --version 0.9.4
#r "nuget: JpManifestoNFE, 0.9.4"
// 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 | Versions 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. |
-
.NETStandard 2.0
- System.Security.Cryptography.Xml (>= 5.0.0)
- System.Security.Permissions (>= 5.0.0)
- System.ServiceModel.Duplex (>= 4.4.4)
- System.ServiceModel.Http (>= 4.8.1)
- System.ServiceModel.NetTcp (>= 4.4.4)
- System.ServiceModel.Security (>= 4.4.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.