Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

DiaACBR2025

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Projeto Unificado: Emissor NFC‑e + NGHC.POS

Este repositório reúne dois projetos complementares:

  • Emissor NFC‑e: serviço REST em Delphi (Horse) que emite NFC‑e via ACBr e retorna XML/PDF/ESC/POS.
  • NGHC.POS: aplicativo de PDV em Delphi/FireMonkey para dispositivos Gertec GPOS (ex.: GPOS720), com TEF (CliSiTef), impressão interna e integração com NFC‑e.

O objetivo é oferecer um ponto de partida completo: do backend de emissão até o PDV embarcado com impressão e pagamentos integrados.


Visão Geral do Repositório

  • fontes/NFCE/ — Emissor NFC‑e (console) com Horse e ACBr.
  • fontes/ — NGHC.POS (FMX) com integração TEF e impressão.
  • libs/ — Bibliotecas Android (CliSiTef assets, libGEDI, PPComp GPOS720).
  • assinatura/ — Keystores e instruções para assinar APK.
  • imagens/ — Logos e artes do app.

Emissor NFC‑e (serviço REST)

  • Tipo: console com servidor HTTP usando Horse.
  • Porta padrão: 9000.
  • Endpoints:
    • POST /nfce/emitir — recebe JSON da venda e emite NFC‑e.
    • GET /nfce/status — status básico do serviço.
  • Saídas: retorna XML da NFC‑e, PDF do DANFE (opcional) e conteúdo ESC/POS para impressora.

Executar o Emissor

  • Abrir e compilar fontes/NFCE/EmissorNFCe.dpr no Delphi (Windows).
  • Rodar o binário EmissorNFCe.exe em um prompt.
  • Logs e pastas criadas automaticamente:
    • NF/JSON — requisições JSON armazenadas (histórico).
    • NF/XML — XMLs emitidos.

Exemplo de chamada

  • Usando curl com o exemplo pronto:
  • curl -X POST http://localhost:9000/nfce/emitir -H "Content-Type: application/json" --data-binary @fontes/NFCE/exemplo_nfce.json
  • Resposta típica inclui:
    • sucesso: true/false.
    • xml: conteúdo do XML (string ou base64, conforme implementação).
    • pdf: PDF do DANFE em base64 (se configurado).
    • pdf_posprinter: texto ESC/POS do DANFE (para imprimir em térmica).
    • chave_acesso: chave da NFC‑e emitida.

Requisitos fiscais

  • Certificado A1 (.pfx), CSC, dados do emitente e configuração por UF.
  • Integração ACBr para assinatura, envio e retorno do SEFAZ.

NGHC.POS (PDV Android embarcado)

  • Tipo: app FMX para GPOS (ex.: GPOS720/G720) com impressão na térmica interna.
  • Funcionalidades:
    • Cadastro e venda com itens, totais e descontos.
    • TEF (CliSiTef) integrado.
    • Emissão de NFC‑e (via servidor ou local) e impressão do DANFE.
    • Impressão de QR Code nativo via API GEDI.

Pré‑requisitos

  • Hardware: um Gertec GPOS com papel e bateria.
  • Software:
    • Windows com Delphi 10.4/11.x.
    • Android SDK/NDK configurados.
    • JDK instalado.
  • Bibliotecas Android (Deployment):
    • libs/libgedi-0.16.17/*.jar
    • libs/ppcomp-*/PPComp*.jar
    • libs/clisitef-*/assets em assets/ do APK.
    • libs/clisitef-*/clisitef em assets/clisitef.

Build e Deploy

  • Abrir fontes/NGHCPOS.groupproj no Delphi.
  • Validar fontes/AndroidManifest.template.xml (permissões: INTERNET, ACCESS_NETWORK_STATE, storage/logs).
  • Configurar Deployment para incluir .jar e pastas assets/clisitef.
  • Conectar o GPOS via USB, selecionar alvo Android e executar Run.

Impressão de DANFE e QR Code

  • O app gera o layout ESC/POS do DANFE via ACBrPosPrinter/ACBrNFeDANFeESCPOS.
  • O conteúdo ESC/POS é enviado à impressora interna usando GEDI/PPComp.
  • QR Code da NFC‑e:
    • Extraído do XML (campo qrCode) ou do texto ESC/POS.
    • Impresso via DrawBarCode com QR_CODE (API GEDI).

Integração TEF

  • Configurar parâmetros do adquirente em nghc.clisitef.pas e sitef.*.pas.
  • Garantir assets e rede disponíveis.
  • Vincular transação TEF à NFC‑e em pag/detPag/card (tpIntegra=1, CNPJ, tBand, cAut).

Guia Rápido: Dois Fluxos Possíveis

  • Fluxo A (Servidor Emissor):
    • PDV gera JSON da venda e chama POST /nfce/emitir.
    • Recebe xml/pdf/pdf_posprinter e imprime o DANFE no GPOS.
    • Útil quando quer centralizar emissão e guarda dos documentos.
  • Fluxo B (Local no GPOS):
    • PDV monta NFC‑e local, gera ESC/POS do DANFE e imprime diretamente.
    • QR Code impresso via GEDI.
    • Útil em ambientes com pouca conectividade ao servidor.

Estrutura Detalhada de Pastas

  • fontes/ — Projeto FMX do NGHC.POS:
    • nghc.dpr, nghc.dproj
    • nghc.pos.fmx, nghc.pos.pas
    • nghc.clisitef.pas, sitef.*.pas
    • uProduto.*.pas, uItens.*.pas, uVenda.Service.pas
  • fontes/NFCE/ — Projeto Emissor NFC‑e:
    • EmissorNFCe.dpr (Horse)
    • src/uNFCeController.pas, src/uNFCeModel.pas, src/uACBrManager.pas, src/uPDFGenerator.pas
    • exemplo_nfce.json

Problemas Comuns

  • Bibliotecas ausentes: incluir .jar (GEDI/PPComp) no Deployment.
  • TEF não comunica: verificar Internet, firewall e assets clisitef.
  • Impressão falha: checar papel, energia e presença das libs.
  • NFC‑e rejeitada: revisar certificado, CSC e regras por UF.

Classe de Exemplo NFC‑e (uNFCeSampleJson)

  • Local: fontes/NFCE/src/uNFCeSampleJson.pas.
  • Objetivo: montar JSON para POST /nfce/emitir com cálculo de totais/impostos.
  • Funções: ToJSONObject, AsJSON, TNFCeExemplo.BuildSample.

Uso rápido

pascal
uses uNFCeSampleJson;

var
  Exemplo: TNFCeExemplo;
  JsonString: string;
begin
  Exemplo := TNFCeExemplo.BuildSample;
  try
    JsonString := Exemplo.AsJSON;
    // Envie JsonString via HTTP (POST /nfce/emitir) ou salve em arquivo
  finally
    Exemplo.Free;
  end;
end;

Observações

  • Parametrizar IdToken, CSC e dados fiscais para seu ambiente.
  • Em estados que exigem vinculação TEF, preencher pag.detPag.card (tpIntegra, CNPJ, tBand, cAut).

Tecnologias

  • Delphi / FireMonkey (FMX) — app PDV.
  • Horse — servidor HTTP do Emissor.
  • ACBr — emissão NFC‑e e DANFE.
  • CliSiTef — TEF.
  • libGEDI e PPComp — hardware GPOS.

Assinatura e Publicação (Android)

  • Debug: assinatura/debug.keystore.
  • Release: assinatura/Development_GertecDeveloper_CustomerAPP.keystore (ou seu).
  • Configuração em Project > Options > Building > Android.

Cuidados: não versionar senhas/certificados privados.


Licença

  • Este repositório não declara licença explícita. Considere adicionar LICENSE conforme sua necessidade.

Como Contribuir

  • Abrir issues com dúvidas ou melhorias.
  • Pull requests com alterações pontuais e descrição clara.

Contato

  • Suporte TEF: adquirente/Software Express.
  • Suporte hardware: Gertec.
  • Dúvidas de código: issues no repositório.
  • E‑mail do desenvolvedor: newton.oliveira@nghc.com.br.