Sistema de conciliação contábil automática entre subledgers (AR, AP, CE) e o General Ledger do Oracle E-Business Suite R12.
Extrai dados do Oracle via SQL, importa no PostgreSQL (Docker) e executa conciliação automática com 6 níveis de matching. Inclui CLI e dashboard web.
Oracle R12 ──(SQL scripts)──> CSV ──(import)──> PostgreSQL (Docker)
│
Rust Engine
/ | \
Matching Scoring Reports
│
Web Dashboard
- AR (Accounts Receivable) - Transações de clientes, recebimentos
- AP (Accounts Payable) - Faturas de fornecedores, pagamentos
- CE (Cash Management) - Extratos bancários, conciliação bancária
| Nível | Método | Score |
|---|---|---|
| 1 | Link direto (gl_sl_link_id) |
100% |
| 2 | Valor exato + Conta + Data | 95% |
| 3 | Valor exato + Conta + Período | 85% |
| 4 | Valor exato + Source/Category | 75% |
| 5 | Fuzzy match na descrição | 60-80% |
| 6 | Agrupamento por valor | 50-70% |
git clone https://github.com/AleCyriaco/LedgerMatch.git
cd LedgerMatch
docker compose up -d
cargo build --releaseExecute os scripts SQL no Oracle R12 (ajuste os períodos):
sql/oracle/extract_gl.sql → gl_lines.csv
sql/oracle/extract_ar.sql → ar_entries.csv
sql/oracle/extract_ap.sql → ap_entries.csv
sql/oracle/extract_ce.sql → ce_entries.csv
ledgermatch import --module gl --file data/gl_lines.csv --truncate
ledgermatch import --module ar --file data/ar_entries.csv --truncate
ledgermatch import --module ap --file data/ap_entries.csv --truncate
ledgermatch import --module ce --file data/ce_entries.csv --truncateledgermatch run --module allSaída:
=== Resultado: ALL ===
Total: 1250
Conciliados: 1180
Parciais: 35
Pendentes: 35
Taxa: 94%
# Itens pendentes do AR
ledgermatch report --module ar --status UNMATCHED
# Matches parciais do AP
ledgermatch report --module ap --status PARTIALledgermatch serve --port 3000Acesse http://localhost:3000 para visualizar:
- Resumo por módulo com percentual conciliado
- Lista de resultados com filtros por status
- Detalhe lado a lado (subledger vs GL)
LedgerMatch/
├── docker-compose.yml # PostgreSQL 16
├── sql/
│ ├── oracle/ # Scripts de extração Oracle R12
│ │ ├── extract_gl.sql
│ │ ├── extract_ar.sql
│ │ ├── extract_ap.sql
│ │ └── extract_ce.sql
│ └── postgres/
│ ├── schema.sql # Tabelas de staging + reconciliação
│ └── views.sql # Views de relatório
├── templates/ # HTML do dashboard
├── src/
│ ├── main.rs # CLI (clap)
│ ├── lib.rs
│ ├── db.rs # Conexão PostgreSQL
│ ├── import.rs # Importação CSV
│ ├── recon/
│ │ ├── mod.rs # Motor de conciliação
│ │ ├── scoring.rs # Fuzzy matching
│ │ ├── ar_gl.rs # AR ↔ GL
│ │ ├── ap_gl.rs # AP ↔ GL
│ │ └── ce_gl.rs # CE ↔ GL
│ └── web/
│ ├── mod.rs
│ └── routes.rs # API + páginas (axum)
└── data/ # CSVs (gitignored)
A conexão com o banco usa a variável DATABASE_URL. Padrão:
postgres://recon:recon123@localhost:5432/gl_recon
| Endpoint | Método | Descrição |
|---|---|---|
/api/summary |
GET | Resumo por módulo |
/api/recon/{module} |
GET | Resultados (filtro: ?status=UNMATCHED) |
/api/run/{module} |
POST | Executar conciliação |
MIT