Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

RPA - Consulta de CNPJ

Automação de consulta em massa de dados cadastrais de fornecedores via CNPJ. Consulta a API pública minhareceita.org (Receita Federal + Simples Nacional/SIMEI) para milhares de CNPJs e gera um Excel consolidado, eliminando a consulta manual portal a portal.


O que faz

  • Lê uma planilha Excel com os CNPJs a consultar (aba Verificação manual).
  • Para cada CNPJ, consulta a API e extrai, em uma única chamada:
    • Receita Federal: razão social, nome fantasia, CNAE principal (código + descrição), endereço completo, situação cadastral e data da situação.
    • Simples Nacional / SIMEI: optante ou não, datas de opção e exclusão.
  • Gera um Excel consolidado com 4 abas: RESULTADO, ERROS, PENDENTES e RESUMO.
  • Salva o progresso linha a linha (retomada automática após qualquer interrupção).

Requisitos

  • Python 3.8 ou superior
  • Bibliotecas Python: requests, openpyxl, pandas

Instale as dependências com:

pip install requests openpyxl pandas

Estrutura da pasta

RPA_CNPJ/
├── consulta_cnpj_rpa.py          # script principal
├── testar_api.py                 # teste isolado da API (rode primeiro)
├── gerar_excel_do_checkpoint.py  # regenera o Excel a partir do checkpoint
├── cnpjs_entrada.xlsx            # planilha de entrada (aba "Verificação manual")
│
│  (gerados automaticamente durante a execução)
├── checkpoint_resultado.jsonl    # ponto de retomada (progresso salvo)
├── execucao_rpa.log              # log completo com data/hora
└── resultado_consulta_cnpj.xlsx  # resultado final consolidado

Planilha de entrada

  • Arquivo: cnpjs_entrada.xlsx
  • Aba lida: Verificação manual (obrigatório — não usa a primeira aba automaticamente)
  • Cabeçalho na linha 1, dados a partir da linha 2
Coluna Nome Observação
A CNPJ consultado na API; zeros à esquerda são preservados
B Fornecedor preservado na saída
C Verificador preservado na saída
D CNAE preenchido pelo RPA (código - descrição)
E SIMPLES preenchido pelo RPA (Sim / Não / Não informado)

Como usar (passo a passo)

1. Testar a API primeiro

python testar_api.py

Deve retornar HTTP Status: 200 e mostrar os campos preenchidos. Em rede corporativa com proxy SSL, use:

python testar_api.py 03349915000952 True

2. Rodar a POC (10 CNPJs)

python consulta_cnpj_rpa.py

Confira o resultado_consulta_cnpj.xlsx gerado antes de processar tudo.

3. Rodar em produção (todos os CNPJs)

python consulta_cnpj_rpa.py --producao

Tempo estimado: aproximadamente 4 a 5 horas para ~11.000 CNPJs (delay padrão de 1,5s).

4. Reprocessar apenas os erros

python consulta_cnpj_rpa.py --producao --somente-erros

Comandos disponíveis

Comando O que faz
python consulta_cnpj_rpa.py Modo POC (10 CNPJs)
python consulta_cnpj_rpa.py --producao Processa todos os CNPJs
python consulta_cnpj_rpa.py --producao --somente-erros Reprocessa apenas os que deram erro
python consulta_cnpj_rpa.py --resetar Apaga o checkpoint e recomeça do zero

Retomada e recuperação

  • Interrompeu no meio (Ctrl+C, queda de energia)? Basta rodar o mesmo comando de novo — o script continua exatamente de onde parou, sem reprocessar o que já foi feito.
  • O Excel final não foi gerado (arquivo estava aberto/bloqueado)? Rode:
    python gerar_excel_do_checkpoint.py
    Ele reconstrói o Excel a partir do checkpoint_resultado.jsonl, sem reconsultar a API.

Configurações (topo do consulta_cnpj_rpa.py)

Parâmetro Padrão Descrição
LIMITE_POC 10 Nº de CNPJs no modo POC
VERIFICAR_SSL True True = validação normal; False = desativa (proxy corporativo); ou caminho de um .pem
SSL_FALLBACK_AUTOMATICO True Desativa o SSL sozinho se o certificado corporativo falhar
DELAY_ENTRE_CONSULTAS 1.5 Segundos entre requisições
MAX_TENTATIVAS 3 Retries por CNPJ
TIMEOUT_SEGUNDOS 30 Timeout de cada requisição

Excel de saída

O arquivo resultado_consulta_cnpj.xlsx tem 4 abas:

  • RESULTADO — todos os registros processados (coluna STATUS_PROCESSAMENTO = OK ou ERRO)
  • ERROS — apenas os CNPJs que falharam, para facilitar o reprocessamento
  • PENDENTES — casos especiais marcados para revisão manual
  • RESUMO — totais, taxa de sucesso, data/hora e SSL usado na execução

Solução de problemas

Sintoma Causa provável O que fazer
SSLCertVerificationError / self-signed certificate Inspeção SSL do proxy corporativo Rode com VERIFICAR_SSL = False (o fallback automático já cobre isso) ou configure o certificado .pem da empresa
Página Web Page Blocked Domínio bloqueado pelo firewall da rede Solicitar liberação do minhareceita.org à Infraestrutura, ou rodar fora da rede corporativa
Erros 503 em sequência Proxy interferindo ou API sobrecarregada Aumentar DELAY_ENTRE_CONSULTAS; reprocessar com --somente-erros
PermissionError ao salvar Excel Arquivo aberto no Excel ou no OneDrive Feche o arquivo; o script salva um backup automático com timestamp
Muitos erros de SSL intermitentes Oscilação da inspeção SSL Reprocessar com --somente-erros

Observações importantes

  • A API minhareceita.org é pública e gratuita, sem garantia de disponibilidade (SLA). Para uso corporativo recorrente e de alto volume, avaliar subir uma instância local da Minha Receita (open source), eliminando dependência de rede externa, bloqueios e limites de requisição.
  • VERIFICAR_SSL = False é aceitável apenas para POC. Em produção, o ideal é configurar o certificado raiz corporativo (.pem) e manter a validação SSL ativa.
  • Campos do Simples/SIMEI vindos como null são exibidos como "Não informado". A interpretação de null como "Não optante" deve ser confirmada com a área de negócio.

Fonte de dados

  • API: https://minhareceita.org
  • Consulta: https://minhareceita.org/{cnpj}
  • Health check: https://minhareceita.org/healthz

Dados abertos de CNPJ da Receita Federal (amparados pela Lei de Acesso à Informação).


Autor

Gabriel Almeida — Innovation Lab / RPA Projeto para o time de Supply Chain / Procurement — CNH Industrial

About

Python RPA project for automating CNPJ-related data processing and repetitive business workflows.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages