ERP.Fiscal.PlugNotas 0.1.18

dotnet add package ERP.Fiscal.PlugNotas --version 0.1.18
                    
NuGet\Install-Package ERP.Fiscal.PlugNotas -Version 0.1.18
                    
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="ERP.Fiscal.PlugNotas" Version="0.1.18" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ERP.Fiscal.PlugNotas" Version="0.1.18" />
                    
Directory.Packages.props
<PackageReference Include="ERP.Fiscal.PlugNotas" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ERP.Fiscal.PlugNotas --version 0.1.18
                    
#r "nuget: ERP.Fiscal.PlugNotas, 0.1.18"
                    
#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.
#:package ERP.Fiscal.PlugNotas@0.1.18
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ERP.Fiscal.PlugNotas&version=0.1.18
                    
Install as a Cake Addin
#tool nuget:?package=ERP.Fiscal.PlugNotas&version=0.1.18
                    
Install as a Cake Tool

ERP.Fiscal

Biblioteca .NET de integração fiscal (NF-e via PlugNotas), pensada para consumo por aplicações ABP. Centraliza HTTP, parsers, retry, classificação de erros e contratos neutros — sem acoplar domínio de ERP.

Pacotes publicados automaticamente no GitHub Packages a cada push em main e no nuget.org (versões 0.1.x e releases com tag v*).


Pacote nuget.org GitHub Packages
ERP.Fiscal.Abstractions nuget.org/…/0.1.3 pkgs/nuget/ERP.Fiscal.Abstractions
ERP.Fiscal.PlugNotas nuget.org/…/0.1.3 pkgs/nuget/ERP.Fiscal.PlugNotas

Última versão publicada: 0.1.3. Novas versões 0.1.x seguem o contador em nuget.props após cada merge em main.


Funcionalidades

Área O que a lib faz
Emissão NF-e INfeEmissaoProvider — emitir, consultar (por id ou idIntegracao), cancelar, obter XML/PDF, fluxo com polling (EmitirCompletoAsync)
Integração cadastral INfeIntegracaoProvider — certificado A1, cadastro/consulta de emissor, sync de ambiente (producao)
Auxiliares INfeAuxiliaresProvider — consulta CNPJ e CEP (formulários de cadastro)
Ambiente Contrato INfeAmbientePolicy (implementado no consumidor) + resolvers sandbox/produção
Resiliência Retry configurável, classificação transient/permanent, RawBody nos resultados
PlugNotas Módulo ABP PlugNotasFiscalModule, options via appsettings, chave sandbox pública documentada
Qualidade 91 testes unitários, CI GitHub Actions, smoke test de consumo NuGet

Fronteira lib vs consumidor

Fica na lib Fica no consumidor
HTTP, parsers, retry, contratos PlugNotas, DTOs neutros Entidades de domínio, payload builders, orquestração, histórico, UI
Recebe string payloadJson pronta Monta JSON NF-e a partir do domínio
Contrato INfeAmbientePolicy Implementação da policy (Settings locais)

Pacotes NuGet

Pacote Descrição Dependências
ERP.Fiscal.Abstractions Interfaces (INfe*Provider) e DTOs neutros Nenhuma externa
ERP.Fiscal.PlugNotas Implementação PlugNotas + módulo ABP ERP.Fiscal.Abstractions, Volo.Abp.Core, Microsoft.Extensions.Http

Feeds: nuget.org (recomendado) ou GitHub Packages — ver Links dos pacotes.

Target: .NET 10 (net10.0)

Versionamento

Gatilho Versão Onde publica
PR para main — (pack local 0.1.{N}-pr.* só para smoke test)
Merge/push em main 0.1.{N} GitHub Packages + nuget.org + artefato CI
Tag v1.0.0 1.0.0 GitHub Packages + nuget.org (se NUGET_API_KEY configurado)

O contador PackagePatchNumber é commitado automaticamente na main após cada publicação bem-sucedida (chore: bump package version … [skip ci]).


Consumir via GitHub Packages

URL do feed (importante)

O feed NuGet do GitHub é por owner/organização, não por repositório:

https://nuget.pkg.github.com/jpolvora/index.json
Campo Valor
Owner GitHub jpolvora
Repositório dos fontes jpolvora/ERP.Fiscal
URL do feed NuGet https://nuget.pkg.github.com/jpolvora/index.json
Package IDs ERP.Fiscal.Abstractions, ERP.Fiscal.PlugNotas

Pacotes NuGet no GitHub exigem autenticação no restore, mesmo quando o repositório é público.

Visibilidade do pacote

Pacotes publicados pelo CI deste repositório (via GITHUB_TOKEN) ficam vinculados ao owner jpolvora e herdam a visibilidade do repositório fonte.

Cenário O que fazer
Consumidor na mesma conta (jpolvora) GITHUB_TOKEN em Actions ou PAT com read:packages
Consumidor em outra org/conta PAT com read:packages (e repo se o pacote for privado) com acesso de leitura aos pacotes de jpolvora
Repo público, pacote público Auth ainda é obrigatória no dotnet restore

1. Autenticação (máquina de desenvolvimento)

Crie um Personal Access Token (classic) com escopo read:packages. Se o repositório for privado, inclua também repo.

Opção A — CLI (recomendado, uma vez por máquina):

dotnet nuget add source "https://nuget.pkg.github.com/jpolvora/index.json" \
  --name github \
  --username SEU_USUARIO_GITHUB \
  --password SEU_PAT \
  --store-password-in-clear-text

Opção B — variável de ambiente (CI local / scripts):

export NUGET_AUTH_TOKEN=SEU_PAT
# username = GitHub username; password = PAT

Opção C — Visual Studio: Tools → NuGet Package Manager → Package Sources → adicionar a URL acima e credenciais.

2. nuget.config no projeto consumidor

Coloque na raiz da solution do seu ERP (ou em samples/, como referência). O dotnet restore procura o arquivo no diretório atual e nos pais.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="github" value="https://nuget.pkg.github.com/jpolvora/index.json" />
  </packageSources>
  <packageSourceMapping>
    <packageSource key="github">
      <package pattern="ERP.Fiscal.*" />
    </packageSource>
    <packageSource key="nuget.org">
      <package pattern="*" />
    </packageSource>
  </packageSourceMapping>
</configuration>

Referência completa: samples/nuget.config.

O packageSourceMapping garante que apenas ERP.Fiscal.* venha do GitHub; o restante continua no nuget.org.

3. PackageReference no .csproj

No módulo Application (ou host) do seu ERP ABP:

<ItemGroup>
  <PackageReference Include="ERP.Fiscal.Abstractions" Version="0.1.*" />
  <PackageReference Include="ERP.Fiscal.PlugNotas" Version="0.1.*" />
</ItemGroup>
Versão Quando usar
0.1.* Última versão 0.1.x de main (floating)
0.1.42 Versão específica (PackagePatchNumber no merge que gerou o pacote)
1.0.0 Release estável (tag v1.0.0)

Restore:

dotnet restore

4. Registrar o módulo ABP

using ERP.Fiscal.PlugNotas;
using Volo.Abp.Modularity;

[DependsOn(typeof(PlugNotasFiscalModule))]
public class MeuErpApplicationModule : AbpModule
{
}

Implemente INfeAmbientePolicy no consumidor (ex.: ler OnlySandbox dos Settings locais).

5. Configuração (appsettings.json)

{
  "PlugNotas": {
    "SandboxApiKey": "",
    "ProductionApiKey": "",
    "OnlySandbox": true,
    "TipoContrato": 1,
    "Retry": { "MaxAttempts": 3, "BaseDelayMs": 1000 }
  }
}
Setting Descrição
SandboxApiKey Token sandbox; se vazio, usa chave pública documentada da PlugNotas
ProductionApiKey Obrigatória para homologação/produção
OnlySandbox Força runtime sandbox independente do cadastro do emissor

Detalhes: docs/plugnotas/01-ambientes-autenticacao.md.

6. GitHub Actions no consumidor

No workflow do ERP que restaura pacotes:

permissions:
  contents: read
  packages: read

steps:
  - uses: actions/checkout@v4

  - uses: actions/setup-dotnet@v4
    with:
      dotnet-version: 10.0.x

  - name: Authenticate GitHub Packages
    run: >
      dotnet nuget add source "https://nuget.pkg.github.com/jpolvora/index.json"
      --name github
      --username "${{ github.repository_owner }}"
      --password "${{ secrets.GITHUB_TOKEN }}"
      --store-password-in-clear-text

  - run: dotnet restore
  - run: dotnet build --no-restore

Se o consumidor estiver em outra org/conta, o PAT precisa de acesso de leitura aos pacotes de jpolvora (pacote público no GitHub Packages ainda exige auth).

Azure DevOps: docs/consumers/azure-devops.md.

7. Alternativa: só nuget.org (sem feed GitHub)

Se o consumidor não usar GitHub Packages, basta o feed público:

https://api.nuget.org/v3/index.json
<PackageReference Include="ERP.Fiscal.Abstractions" Version="0.1.3" />
<PackageReference Include="ERP.Fiscal.PlugNotas" Version="0.1.3" />

Ou versão flutuante: 0.1.* para a última 0.1.x publicada.

Páginas: Abstractions · PlugNotas


Exemplo mínimo (smoke test)

Projeto de referência que consome somente NuGet (sem project reference ao código-fonte):

samples/ERP.Fiscal.PackageSmokeTest

# autenticar (ver seção acima)
dotnet test samples/ERP.Fiscal.PackageSmokeTest/ERP.Fiscal.PackageSmokeTest.csproj -c Release

Com pacotes locais (desenvolvimento desta lib):

dotnet pack ERP.Fiscal.slnx -c Release -o ./artifacts/packages -p:PackageVersion=0.1.0-local
dotnet nuget add source ./artifacts/packages --name local-erp-fiscal
dotnet test samples/ERP.Fiscal.PackageSmokeTest -c Release -p:ErpFiscalPackageVersion=0.1.0-local

Ou use samples/nuget.config.local.example copiado como nuget.config.local.


Integração com Consumidores & Agentes (IA)

Esta biblioteca define uma separação rígida de responsabilidades entre o seu ecossistema central (neutro) e as regras específicas dos ERPs consumidores.

Para facilitar a integração e guiar o desenvolvimento por agentes de IA e desenvolvedores em projetos consumidores (ex.: FiscalWR), disponibilizamos uma Skill de Agente portátil:

Como Instalar a Skill no ERP Consumidor

  1. Crie a pasta .agents/skills/consume-erp-fiscal/ na raiz do repositório do seu ERP consumidor.
  2. Copie o arquivo SKILL.md deste repositório e cole nesta pasta recém-criada do ERP consumidor.
  3. Isso ativará instruções automatizadas para o agente do consumidor, ensinando-o a configurar pacotes NuGet, registrar módulos ABP, e seguir o padrão de limites/fronteiras entre o ERP e a biblioteca ERP.Fiscal.

Desenvolvimento (código-fonte)

Estrutura

ERP.Fiscal/
├── src/
│   ├── ERP.Fiscal.Abstractions/    # interfaces + DTOs neutros
│   └── ERP.Fiscal.PlugNotas/       # HTTP, parsers, providers, módulo ABP
├── test/
│   └── ERP.Fiscal.PlugNotas.Tests/ # 91 testes unitários
├── samples/
│   └── ERP.Fiscal.PackageSmokeTest/
├── docs/plugnotas/                 # documentação PlugNotas compilada
├── .github/workflows/validate-pr.yml
└── .github/workflows/deploy-main.yml

Build e testes

dotnet build ERP.Fiscal.slnx
dotnet test ERP.Fiscal.slnx

Gerar pacotes localmente

dotnet pack ERP.Fiscal.slnx -c Release -o ./artifacts/packages

CI/CD (GitHub Actions)

  1. Validate PR (validate-pr.yml) — executado em Pull Requests para a main: faz restore, build, teste unitário, pack local e executa o Smoke Test isolado.
  2. Deploy Main (deploy-main.yml) — executado em merges/pushes na main e tags v*:
    • Em push na main: resolve versão, build, teste, pack, publish no GitHub Packages e faz bump de versão automático.
    • Em tag v*: pack e publish da versão estável no GitHub Packages e nuget.org (se configurado).

Code review agêntico (PR → main only): .github/workflows/cursor-code-review.yml


Documentação

Recurso Link
Índice PlugNotas (agentes/devs) docs/README.md
Ambientes e API key docs/plugnotas/01-ambientes-autenticacao.md
Fluxo emissão NF-e docs/plugnotas/04-nfe-fluxo-emissao.md
Mapeamento lib ↔ API docs/plugnotas/07-mapeamento-erp-fiscal.md
Swagger PlugNotas (canônico) docs.plugnotas.com.br
Instruções para agentes IA AGENTS.md
Padrão de integração nos consumidores docs/consumers/padrao-integracao.md
Skill: Consumo em ERPs .agents/skills/erp-fiscal-consumer/SKILL.md

Dependências da lib

Pacote Versão
Volo.Abp.Core 10.3.0
Microsoft.Extensions.Http 10.0.0

ERP.Fiscal.Abstractions não possui dependências NuGet externas.


Licença

MIT

Product Compatible and additional computed target framework versions.
.NET 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. 
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.1.18 81 7/7/2026
0.1.17 76 7/7/2026
0.1.15 88 7/6/2026
0.1.14 81 7/6/2026
0.1.13 81 7/6/2026
0.1.12 88 7/6/2026
0.1.11 89 7/6/2026
0.1.10 81 7/6/2026
0.1.9 81 7/6/2026
0.1.8 89 7/6/2026
0.1.7 83 7/6/2026
0.1.6 88 7/6/2026
0.1.5 85 7/6/2026
0.1.4 84 7/6/2026
0.1.3 82 7/6/2026