Skip to content

Suportar barcode da chave de acesso com CNPJ alfanumérico (CODE-128A/C) #33

Description

@john182

📌 @john182 via investigação técnica interna — sub-issue da umbrella nfe/nfe-product#28

Contexto

O nfe/DanfeSharp (fork mantido internamente) gera o PDF do DANFE. O barcode da chave de acesso (44 caracteres) hoje usa CODE-128C (otimizado para dígitos, 2 por símbolo).

Com CNPJ alfanumérico, a chave de acesso passa a ter letras nas 12 posições do CNPJ — e CODE-128C não suporta letras. É preciso barcode que aceite caracteres alfanuméricos.

Objetivo

Atualizar o DanfeSharp para gerar barcode legível quando a chave de acesso contém CNPJ alfanumérico, mantendo compatibilidade com chaves numéricas legadas.

Decisão técnica pendente (A/B/C)

A) Barcode híbrido CODE-128A/C (alternância)
   Otimiza largura quando segmento é numérico. Mais complexo. ~1-2 sem.
B) CODE-128A em tudo (sempre alfanumérico)
   Implementação simples. Barcode mais largo sempre (pode estourar layout). ~3-5 dias.
C) Detecção dinâmica (só usa 128A quando há letra)
   Compactação preservada para chaves numéricas legadas. ~1 sem.

Decisão a tomar após revisão da NT 2025.001 sobre barcode + alinhamento interno.

Escopo — Inclui

  • Implementação do barcode alfanumérico (opção A/B/C a definir)
  • Validação de largura mínima legível (~11,5cm na NF-e impressa)
  • QR Code da NFC-e com chave alfanumérica (verificar geração/leitura)
  • Testes visuais de legibilidade (numérico legado + alfa)
  • Release/tag consumível pelo dfetech-product-invoice-api

Escopo — Não inclui

Critérios de Aceitação

  • Decisão A/B/C tomada e documentada
  • DANFE com CNPJ alfa gera barcode legível (largura ≥ 11,5cm)
  • DANFE com CNPJ numérico legado continua gerando barcode válido (regressão zero)
  • QR Code NFC-e com chave alfanumérica é válido e legível
  • Release/tag publicada e referenciável no ProductInvoice

Dependências

  • Confirmação da NT 2025.001 sobre o tipo de barcode esperado
  • Bloqueia: emissão de NF-e/NFC-e com CNPJ alfa com DANFE válido (Update Extentions.cs #7)

Referências

  • Umbrella: nfe/nfe-product#28
  • Plano: planos/cnpj-alfanumerico.md (v7, seção 8.8)
  • NT Conjunta ENCAT 2025.001 v1.00

Plano de PRs (cada um = feature mergeável)

  • PR1 — spike: decidir barcode A/B/C (após revisão da NT 2025.001) + registrar decisão
  • PR2 — feat: implementar barcode alfa da chave de acesso (opção escolhida) + QR Code NFC-e
  • PR3 — chore: release/tag consumível pelo dfetech-product-invoice-api

Classificação (Project Fields)

  • Priority: High
  • Compliance: <90d (pré-requisito para DANFE válida com alfa)
  • Deadline: 2026-07-01

Follow-up

  • Bootstrap de issue templates pendente em nfe/DanfeSharp. Abrir PR.
  • Decidir A/B/C antes de iniciar implementação.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions