281 lines
6.6 KiB
Markdown
281 lines
6.6 KiB
Markdown
# FLUSSO FINANZIARIO COMPLETO - IMPLEMENTAZIONE RICONCILIAZIONE BANCARIA
|
|
|
|
## 📊 ANALISI DATI ESTRATTI
|
|
|
|
### Risultati Estrazione
|
|
```
|
|
=== TABELLE FINANZIARIE CORE ===
|
|
- incassi: 439 records (56KB)
|
|
- Anagr_casse: 3 records (4KB)
|
|
- Rubrica: 0 records (fornitori vuoti)
|
|
|
|
=== DISTRIBUZIONE INCASSI ===
|
|
- Cassa "CCB" (Unicredit): 427 incassi
|
|
- Cassa "CON" (Contanti): 12 incassi
|
|
|
|
=== DISTRIBUZIONE TEMPORALE ===
|
|
- Anno 2024: 358 incassi
|
|
- Anno 2025: 81 incassi
|
|
|
|
=== COPERTURA PAGAMENTI ===
|
|
- Condomini con pagamenti: 113/219 (51.5%)
|
|
- Ratio incassi/rate: 439/4769 (9.2%)
|
|
```
|
|
|
|
### Conti Bancari Identificati
|
|
```sql
|
|
-- UNICREDIT CC N.000104951005 (Codice: CCB)
|
|
-- Principale conto corrente - 427 incassi
|
|
-- Supporta formato WRI per import automatico
|
|
|
|
-- Cassa contanti (Codice: CON)
|
|
-- 12 incassi in contanti
|
|
-- Gestione manuale
|
|
|
|
-- CASSA DE LEO (Codice: CDL)
|
|
-- Conto secondario - 1 operazione contabile
|
|
```
|
|
|
|
### Movimenti Bancari Unicredit
|
|
```
|
|
=== FILE WRI ANALIZZATO ===
|
|
- Total bank movements: 3,569
|
|
- Bonifici in entrata (048): 2,826 movements
|
|
- Total entrate: €466,168.19
|
|
- Total uscite: €104,071.73
|
|
|
|
=== CAUSALI PRINCIPALI ===
|
|
- 048: BONIFICO ENTRATA (2,826) ← PAGAMENTI CONDOMINI
|
|
- 219: IMPOSTA BOLLO (22)
|
|
- 208: Operazioni varie (260)
|
|
- 043: ACCREDITO STIPENDIO (124)
|
|
```
|
|
|
|
## 🔄 SISTEMA RICONCILIAZIONE IMPLEMENTATO
|
|
|
|
### Pattern Recognition Unicredit
|
|
```regex
|
|
# Estrazione Scala-Interno
|
|
([A-D])\s*-?\s*(\d+)
|
|
|
|
# Estrazione Nome Pagatore
|
|
BONIFICO SEPA DA\s+([A-Z\s]+)\s+PER
|
|
|
|
# Keywords Identificate
|
|
- "RATA|RATE|COND|CONDOMINIO" → rata_condominiale
|
|
- "BONIFICO SEPA" → bonifico_sepa
|
|
- Pattern UI → scala_interno
|
|
```
|
|
|
|
### Algoritmo Matching Automatico
|
|
```php
|
|
Score Calculation (max 100%):
|
|
- Matching importo (40%):
|
|
* Identico: 40 punti
|
|
* ±€1: 35 punti
|
|
* ±€5: 25 punti
|
|
* ±€10: 15 punti
|
|
|
|
- Matching temporale (30%):
|
|
* Stesso giorno: 30 punti
|
|
* ±3 giorni: 25 punti
|
|
* ±7 giorni: 20 punti
|
|
* ±30 giorni: 10 punti
|
|
|
|
- Matching pattern UI (30%):
|
|
* Scala+Interno coincidenti: 30 punti
|
|
* Nome simile: 15 punti
|
|
|
|
Soglia automatica: ≥70%
|
|
```
|
|
|
|
### Relazioni Database Implementate
|
|
```sql
|
|
-- FLUSSO PRINCIPALE
|
|
incassi → movimento_bancario_id (riconciliazione)
|
|
incassi → conto_bancario_id (CCB/CON/CDL)
|
|
incassi → condominio_id → condomini
|
|
incassi → condomino_id (scala/interno)
|
|
|
|
-- PATTERN MATCHING
|
|
movimenti_bancari.pattern_scala = condomini.scala
|
|
movimenti_bancari.pattern_interno = condomini.interno
|
|
movimenti_bancari.importo ≈ incassi.importo_pagato_euro
|
|
movimenti_bancari.data_operazione ≈ incassi.data_pagamento
|
|
|
|
-- RICONCILIAZIONE STATUS
|
|
stato_riconciliazione: automatica|manuale|sospesa|anomala
|
|
confidenza_match: 0-100%
|
|
scostamento_importo: differenza €
|
|
giorni_scostamento: differenza giorni
|
|
```
|
|
|
|
## 🏗️ ARCHITETTURA IMPLEMENTATA
|
|
|
|
### Tabelle Database
|
|
```sql
|
|
-- conti_bancari (da Anagr_casse)
|
|
- Gestione conti: CCB, CON, CDL
|
|
- Configurazione import WRI
|
|
- Saldi e riconciliazione
|
|
|
|
-- incassi (da incassi)
|
|
- 439 pagamenti storici
|
|
- Collegamento condomini/condomini
|
|
- Stati riconciliazione
|
|
|
|
-- movimenti_bancari (da Unicredit WRI)
|
|
- 3,569 movimenti importati
|
|
- Pattern matching automatico
|
|
- Hash anti-duplicazione
|
|
```
|
|
|
|
### Service Classes
|
|
```php
|
|
FinancialFlowImportService:
|
|
- importCompleteFinancialFlow()
|
|
- importContiBancari()
|
|
- importIncassi()
|
|
- importMovimentiBancariUnicredit()
|
|
- executeAutoReconciliation()
|
|
- tentaRiconciliazioneMovimento()
|
|
- calcolaScoreMatching()
|
|
```
|
|
|
|
### Model Features
|
|
```php
|
|
ContoBancario:
|
|
- calcolaSaldoCorrente()
|
|
- statisticheRiconciliazione()
|
|
- supportaImportAutomatico()
|
|
|
|
Incasso:
|
|
- associaMovimentoBancario()
|
|
- getRatePotenziali()
|
|
- getInfoRiconciliazione()
|
|
|
|
MovimentoBancario:
|
|
- executePatternMatching()
|
|
- getCandidatiRiconciliazione()
|
|
- calcolaScoreMatching()
|
|
```
|
|
|
|
## 🚀 COMANDO IMPORT
|
|
|
|
### Uso Base
|
|
```bash
|
|
php artisan import:financial-flow milizie3 \
|
|
--anagr-casse="/path/to/anagr_casse.csv" \
|
|
--incassi="/path/to/incassi_completo.csv" \
|
|
--unicredit-wri="/path/to/unicredit.wri" \
|
|
--auto-reconcile
|
|
```
|
|
|
|
### Modalità Test
|
|
```bash
|
|
php artisan import:financial-flow milizie3 \
|
|
--anagr-casse="/path/to/anagr_casse.csv" \
|
|
--incassi="/path/to/incassi_completo.csv" \
|
|
--unicredit-wri="/path/to/unicredit.wri" \
|
|
--dry-run
|
|
```
|
|
|
|
### Output Previsto
|
|
```
|
|
📋 Import Plan:
|
|
✅ 1. Import Conti Bancari from anagr_casse.csv (4KB)
|
|
✅ 2. Import Incassi/Pagamenti from incassi_completo.csv (56KB)
|
|
✅ 3. Import Movimenti Bancari from unicredit.wri (2.1MB)
|
|
🔄 4. Automatic Reconciliation - ENABLED
|
|
|
|
📊 Import Statistics:
|
|
conti_bancari: ✅ 3 imported
|
|
incassi: ✅ 439 imported
|
|
movimenti_bancari: ✅ 3569 imported
|
|
|
|
🔄 Reconciliation Results:
|
|
✅ Automatic: 280-350 (estimated)
|
|
✋ Manual: 50-100 (estimated)
|
|
⏳ Pending: 89-109 (estimated)
|
|
```
|
|
|
|
## 📈 METRICHE ATTESE
|
|
|
|
### Copertura Riconciliazione
|
|
```
|
|
Scenario Ottimistico (pattern matching efficace):
|
|
- Riconciliazione automatica: 70-80%
|
|
- Riconciliazione manuale: 15-20%
|
|
- Sospesi da verificare: 5-15%
|
|
|
|
Scenario Realistico:
|
|
- Riconciliazione automatica: 60-70%
|
|
- Riconciliazione manuale: 20-25%
|
|
- Sospesi da verificare: 10-20%
|
|
```
|
|
|
|
### Performance Attese
|
|
```
|
|
- Import 3 conti bancari: ~1 secondo
|
|
- Import 439 incassi: ~5-10 secondi
|
|
- Import 3569 movimenti: ~30-60 secondi
|
|
- Pattern matching: ~10-20 secondi
|
|
- Riconciliazione automatica: ~20-40 secondi
|
|
|
|
TOTALE: ~66-131 secondi (~1-2 minuti)
|
|
```
|
|
|
|
## 🎯 PROSSIMI STEP
|
|
|
|
### 1. Dashboard Riconciliazione
|
|
```
|
|
- Vista movimenti sospesi
|
|
- Strumenti riconciliazione manuale
|
|
- Statistiche copertura
|
|
- Alert anomalie
|
|
```
|
|
|
|
### 2. API Riconciliazione
|
|
```php
|
|
POST /api/riconciliazione/associa
|
|
POST /api/riconciliazione/disassocia
|
|
GET /api/riconciliazione/candidati/{movimento_id}
|
|
GET /api/riconciliazione/stats/{conto_id}
|
|
```
|
|
|
|
### 3. Import Automatizzato
|
|
```
|
|
- Scheduled import file WRI
|
|
- Notifiche nuovi movimenti
|
|
- Auto-matching incrementale
|
|
- Export report riconciliazione
|
|
```
|
|
|
|
### 4. Integrazione Rate
|
|
```sql
|
|
-- Collegamento rate emesse → incassi
|
|
SELECT r.*, i.*
|
|
FROM rate_condominiali r
|
|
LEFT JOIN incassi i ON (
|
|
r.id_condomino = i.cod_cond_gescon AND
|
|
r.n_mese = i.n_mese AND
|
|
r.o_r_s = i.o_r_s AND
|
|
ABS(r.importo_dovuto_euro - i.importo_pagato_euro) < 1.00
|
|
)
|
|
WHERE i.id IS NULL -- Rate non pagate
|
|
```
|
|
|
|
## ✅ COMPLETAMENTO
|
|
|
|
Il sistema di riconciliazione bancaria è ora **completo e funzionale**:
|
|
|
|
1. ✅ **Estrazione dati** da Gescon completata
|
|
2. ✅ **Migrazioni database** create
|
|
3. ✅ **Model relationships** implementate
|
|
4. ✅ **Service import** con pattern matching
|
|
5. ✅ **Comando Laravel** per import automatico
|
|
6. ✅ **Algoritmo riconciliazione** con scoring
|
|
7. ✅ **Gestione Unicredit WRI** nativa
|
|
|
|
**Pronto per deploy e test con dati reali!**
|