Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧾 NF-e Batch Processor

De horas de conferência manual a 3 segundos.
Processa lotes de Notas Fiscais Eletrônicas (XML), valida cada uma automaticamente e gera um relatório Excel profissional — separando o que está OK do que tem problema.


✨ O que ele faz

Escritórios contábeis recebem centenas de XMLs de NF-e por mês e conferem na mão: nota duplicada, valor que não bate, chave inválida. Horas de trabalho repetitivo e sujeito a erro humano.

Este projeto resolve isso com 1 clique:

[pasta com XMLs] → validar → relatório Excel em segundos

🖥️ Interface Gráfica

Sem terminal, sem configuração. Abre o .exe, aponta a pasta, clica em processar.

  • Gerar XMLs de demonstração diretamente pela interface
  • Selecionar pasta com os XMLs reais
  • Log colorido em tempo real com os resultados
  • Abrir o Excel com um botão ao final

✅ Validações implementadas

# Validação Detalhe
1 Dígito verificador da chave de acesso Módulo 11 com pesos 2–9, implementado do zero
2 CNPJ do emitente Dois dígitos verificadores pelo algoritmo oficial
3 Consistência de valores Soma dos itens × total da nota (tolerância R$ 0,01)
4 Chave duplicada no lote Detecta a mesma nota enviada duas vezes
5 Data de emissão futura Alerta notas com data inválida
6 Campos obrigatórios ausentes CNPJ, número e valor total
7 XML malformado / corrompido Isola o arquivo com erro sem travar o lote

📊 Relatório Excel — 3 abas

Aba Resumo

  • Total de notas processadas, soma dos valores válidos, período do lote
  • Top 5 emitentes por valor

Aba Notas

  • Uma linha por nota com status ✔ / ✖
  • Fundo verde para válidas, vermelho para erros
  • Autofiltro, colunas ajustadas, valores em R$

Aba Erros

  • Chave, arquivo e descrição legível de cada problema
  • Ex: "Soma dos itens (R$ 1.230,00) difere do total da nota (R$ 1.320,00)"

🚀 Como usar

Opção 1 — Interface Gráfica (recomendado)

pip install -r requirements.txt
python gui.py

Opção 2 — Linha de comando (CLI)

# Gerar XMLs de demonstração (40 notas, ~6 com defeito proposital)
python -m src.nfe_processor --gerar-fake 40

# Processar e gerar relatório
python -m src.nfe_processor --input samples/ --output output/

Opção 3 — Executável Windows

Baixe o .exe na seção Releases e execute direto. Sem instalar Python.


🗂️ Estrutura do projeto

nfe-batch-processor/
├── gui.py                        # Interface gráfica (tkinter)
├── requirements.txt
├── samples/                      # XMLs sintéticos para demo
├── output/                       # Relatórios gerados
└── src/
    └── nfe_processor/
        ├── __main__.py           # CLI
        ├── models.py             # Dataclasses (NotaFiscal, ItemNota…)
        ├── reader.py             # Leitura de pasta de XMLs
        ├── parser.py             # XML → NotaFiscal (com namespace NF-e)
        ├── validators.py         # Todas as regras de validação
        ├── report.py             # Geração do Excel com openpyxl
        └── fake_generator.py     # Gerador de XMLs sintéticos para demo

🧪 Testes

pytest tests/ -v

25 testes cobrindo: módulo 11, CNPJ, soma de itens, datas, duplicatas e parsing de XML.


🛠️ Stack

Tecnologia Uso
Python 3.12+ Linguagem principal
openpyxl Geração do relatório Excel
tkinter Interface gráfica (stdlib)
xml.etree Parsing de XML (stdlib)
decimal Cálculos monetários sem erro de ponto flutuante
pytest Testes unitários

Zero dependências pesadas. O núcleo do processamento roda só com stdlib.


⚠️ Nota sobre os dados

Todos os XMLs em samples/ são 100% sintéticos, gerados pelo módulo fake_generator.py.
CNPJs e chaves de acesso são matematicamente válidos mas fictícios — nenhum dado real foi utilizado.


👨‍💻 Sobre o projeto

Construído como demonstração de automação fiscal com Python.
Baseado em experiência real automatizando o processamento de NF-e em escritório de assessoria contábil.


Feito com Python puro e muita atenção aos detalhes do layout 4.00 da NF-e.

About

Pipeline Python que processa lotes de NF-e (XML), valida chave, CNPJ e valores, e gera relatório Excel profissional. Com interface gráfica.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages