Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LedgerMatch

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.

Arquitetura

Oracle R12 ──(SQL scripts)──> CSV ──(import)──> PostgreSQL (Docker)
                                                      │
                                                Rust Engine
                                               /     |      \
                                          Matching  Scoring  Reports
                                              │
                                         Web Dashboard

Módulos suportados

  • 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íveis de matching automático

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%

Pré-requisitos

Instalação

git clone https://github.com/AleCyriaco/LedgerMatch.git
cd LedgerMatch
docker compose up -d
cargo build --release

Uso

1. Extrair dados do Oracle

Execute 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

2. Importar CSVs

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 --truncate

3. Executar conciliação

ledgermatch run --module all

Saída:

=== Resultado: ALL ===
  Total:       1250
  Conciliados: 1180
  Parciais:    35
  Pendentes:   35
  Taxa:        94%

4. Relatórios

# Itens pendentes do AR
ledgermatch report --module ar --status UNMATCHED

# Matches parciais do AP
ledgermatch report --module ap --status PARTIAL

5. Dashboard web

ledgermatch serve --port 3000

Acesse 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)

Estrutura do projeto

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)

Configuração

A conexão com o banco usa a variável DATABASE_URL. Padrão:

postgres://recon:recon123@localhost:5432/gl_recon

API

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

Licença

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages