OpenAC.Net.GNRe
1.8.0
Prefix Reserved
dotnet add package OpenAC.Net.GNRe --version 1.8.0
NuGet\Install-Package OpenAC.Net.GNRe -Version 1.8.0
<PackageReference Include="OpenAC.Net.GNRe" Version="1.8.0" />
<PackageVersion Include="OpenAC.Net.GNRe" Version="1.8.0" />
<PackageReference Include="OpenAC.Net.GNRe" />
paket add OpenAC.Net.GNRe --version 1.8.0
#r "nuget: OpenAC.Net.GNRe, 1.8.0"
#:package OpenAC.Net.GNRe@1.8.0
#addin nuget:?package=OpenAC.Net.GNRe&version=1.8.0
#tool nuget:?package=OpenAC.Net.GNRe&version=1.8.0
<div align="center">
OpenAC.Net.GNRe
Biblioteca .NET open-source de alto desempenho para emissão, consulta e processamento da GNRe (Guia Nacional de Recolhimento de Tributos Estaduais) nas versões 1.00 e 2.00.
</div>
📋 Sobre o Projeto
O OpenAC.Net.GNRe faz parte do ecossistema OpenAC .Net e foi desenvolvido para simplificar e padronizar a comunicação com os WebServices da GNRe Nacional (Portal GNRe PE).
A biblioteca oferece serialização e desserialização rápida de XML orientada a Source Generators, validação rigorosa de schemas XSD através do OpenAC.Net.DFe.Core, suporte completo a certificados digitais (A1/A3), além de compatibilidade multiplataforma (Windows, Linux e macOS).
🚀 Principais Funcionalidades
- Suporte Completo a Versões:
- GNRe versão 1.00
- GNRe versão 2.00 (Múltiplas receitas, múltiplos documentos de origem, FECP, etc.)
- Serviços Suportados:
- Envio de Lotes de GNRe (
RecepcaoLotesíncrono e assíncrono) - Consulta de Resultado de Processamento do Lote (
ConsultaLote) - Consulta de Configuração da UF (
ConsultaConfigUF) - Download e extração do PDF da Guia gerada pela SEFAZ
- Envio de Lotes de GNRe (
- Validação de Schemas XSD:
- Validação integrada com os schemas oficiais da GNRe via
OpenAC.Net.DFe.Core.XmlSchemaValidation.
- Validação integrada com os schemas oficiais da GNRe via
- Multiplataforma & Multi-target:
- Suporte a
.NET Framework 4.6.2+,.NET Standard 2.0,.NET 6.0,.NET 7.0,.NET 8.0,.NET 9.0e.NET 10.0.
- Suporte a
- Aplicativo de Demonstração Multiplataforma:
- Demo moderno em Avalonia UI (.NET 10) que roda em Linux, Windows e macOS.
📦 Instalação
Instale via NuGet Package Manager:
dotnet add package OpenAC.Net.GNRe
Ou através do Console do Gerenciador de Pacotes:
Install-Package OpenAC.Net.GNRe
💡 Exemplos de Uso
1. Inicialização e Configuração
using System.Security.Cryptography.X509Certificates;
using OpenAC.Net.DFe.Core.Common;
using OpenAC.Net.GNRe;
var gnre = new OpenGNRe();
// Configurações Gerais
gnre.Config.Geral.FormaEmissao = DFeTipoEmissao.Normal;
gnre.Config.Geral.VersaoDFe = VersaoGNre.v200;
// Configurações de WebService
gnre.Config.WebServices.Ambiente = DFeTipoAmbiente.Homologacao;
gnre.Config.WebServices.Uf = "PE";
gnre.Config.WebServices.TimeOut = 30000;
// Configuração de Certificado Digital
gnre.Config.Certificados.Certificado = "caminho_ou_serial_do_certificado";
gnre.Config.Certificados.Senha = "senha_do_certificado";
// Diretório de Schemas XSD e Gravação de XMLs
gnre.Config.Arquivos.PathSchemas = @"C:\GNRe\Schemas";
gnre.Config.Arquivos.PathSalvar = @"C:\GNRe\Salvos";
gnre.Config.Arquivos.Salvar = true;
2. Consulta de Configurações da UF
Permite consultar as regras, receitas e campos exigidos por cada Estado:
// Consulta geral da UF
var configUf = await gnre.ConsultaConfigUFAsync("PR");
if (configUf.Situacao.Codigo == "100")
{
foreach (var receita in configUf.Dados.Receitas)
{
Console.WriteLine($"Receita: {receita.Codigo} - {receita.Descricao}");
Console.WriteLine($"Exige Documento Origem: {receita.ExigeDocumentoOrigem?.Value}");
}
}
3. Emissão e Envio de Lote GNRe (v2.00)
using System;
using System.Collections.Generic;
using OpenAC.Net.GNRe.Commom;
var guia = new GuiaGNRe
{
Versao = VersaoGNre.v200,
UfFavorecida = "RJ",
TipoGnre = TipoGnre.GnreSimples,
ContribuinteEmitente = new ContribuinteEmitente
{
IdContribuinteEmitente = new IdContribuinte
{
Cnpj = "12345678000195"
},
RazaoSocial = "Empresa Exemplo LTDA",
Endereco = "Av. Paulista, 1000",
Municipio = 35503, // Código IBGE (5 dígitos)
Uf = "SP",
Cep = "01310100"
},
Item = new List<ItemGnre>
{
new()
{
Receita = "100102",
DocumentoOrigem = new StringTipo
{
Tipo = "24", // Nota Fiscal Eletrônica
Value = "35260112345678000195550010000000011000000011"
},
DataVencimento = DateTime.Today.AddDays(5),
Valor = new List<DecimalCampo>
{
new()
{
Tipo = "11", // Valor Principal
Value = 150.50M
}
}
}
},
ValorGnre = 150.50M,
DataPagamento = DateTime.Today
};
// Adiciona a guia ao componente
gnre.Guias.Add(guia);
// Envia o lote
var retornoEnvio = await gnre.EnviarLoteAsync();
Console.WriteLine($"Recibo: {retornoEnvio.Dados.Recibo.Numero}");
4. Consulta do Resultado do Lote e Download do PDF
var numeroRecibo = retornoEnvio.Dados.Recibo.Numero;
var resultadoLote = await gnre.ConsultaLoteAsync(numeroRecibo, incluirPdf: true);
if (resultadoLote.Dados.SituacaoProcess.Codigo == "100") // Processado com Sucesso
{
foreach (var g in resultadoLote.Dados.Resultado.Guia)
{
Console.WriteLine($"Linha Digitável: {g.LinhaDigitavel}");
Console.WriteLine($"Código de Barras: {g.CodigoBarras}");
}
// Salvar PDF da Guia retornada pela SEFAZ
resultadoLote.Dados.Resultado.SalvarGuia(@"C:\GNRe\PDFs\guia_gnre.pdf");
}
5. Validação de Schemas XSD
É possível validar o XML gerado utilizando a classe nativa do OpenAC.Net.DFe.Core:
using OpenAC.Net.DFe.Core;
var xmlString = guia.GetXml();
var caminhoSchema = @"Schemas/lote_gnre_v2.00.xsd";
var valido = XmlSchemaValidation.ValidarXml(xmlString, caminhoSchema, out var erros, out var avisos);
if (!valido)
{
foreach (var erro in erros)
Console.WriteLine($"Erro de validação: {erro}");
}
🖥️ Aplicativo Demo (Avalonia UI)
O projeto inclui um aplicativo de demonstração multiplataforma construído com Avalonia UI (.NET 10):
dotnet run --project src/OpenAC.Net.GNRe.Demo/OpenAC.Net.GNRe.Demo.csproj
Ele permite:
- Testar a configuração do componente e certificados
- Gerar e emitir guias GNRe versão 1.00 e 2.00
- Consultar recibos e configurações por UF
- Visualizar os XMLs enviados e recebidos em tempo real
🧪 Testes Unitários
O projeto possui uma suíte completa de testes unitários utilizando TUnit com validação de serialização, desserialização e conformidade com os schemas XSD oficiais:
dotnet run --project src/OpenAC.Net.GNRe.Tests/OpenAC.Net.GNRe.Tests.csproj
🤝 Contribuindo
Contribuições são sempre bem-vindas! Para contribuir:
- Faça um Fork do projeto
- Crie uma branch para sua funcionalidade (
git checkout -b feature/minha-feature) - Faça commit das alterações (
git commit -m 'Adiciona funcionalidade X') - Faça push para a branch (
git push origin feature/minha-feature) - Abra um Pull Request
Dúvidas e discussões podem ser feitas através da nossa comunidade no Discord.
📄 Licença
Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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 is compatible. net463 was computed. net47 is compatible. net471 was computed. net472 was computed. net48 is compatible. 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. |
-
.NETFramework 4.6.2
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
-
.NETFramework 4.7
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
-
.NETFramework 4.8
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
-
.NETStandard 2.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
-
net10.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
-
net6.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
-
net7.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
-
net8.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
-
net9.0
- OpenAC.Net.Core (>= 1.6.0)
- OpenAC.Net.DFe.Core (>= 1.7.0.1)
- System.Drawing.Common (>= 10.0.11)
- System.Security.Cryptography.Xml (>= 10.0.11)
- System.ServiceModel.Http (>= 10.0.652802)
- System.ServiceModel.Primitives (>= 10.0.652802)
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 |
|---|---|---|
| 1.8.0 | 102 | 8/21/2026 |
| 1.6.0 | 886 | 10/30/2025 |
| 1.5.0.2 | 7,557 | 12/22/2022 |
| 1.5.0.1 | 598 | 8/27/2022 |
| 1.5.0 | 665 | 4/26/2022 |
| 1.5.0-preview.2 | 302 | 3/29/2022 |
| 1.5.0-preview.1 | 289 | 3/29/2022 |
| 1.0.0 | 518 | 12/16/2021 |
| 1.0.0-rc2 | 426 | 11/12/2021 |
| 1.0.0-rc1 | 434 | 11/8/2021 |