307 lines
11 KiB
Markdown
307 lines
11 KiB
Markdown
# RELAZIONI COMPLETE GESCON - FLUSSO FINANZIARIO INTEGRATO
|
|
|
|
## 🔄 FLUSSO COMPLETO: RATE → INCASSI → BANCA → RICONCILIAZIONE
|
|
|
|
### TABELLE CRITICHE IDENTIFICATE
|
|
|
|
#### 1. TABELLA INCASSI (440 records)
|
|
- **Collegamento Rate**: `n_riferimento` + `anno_rif` + `n_mese` + `o_r_s`
|
|
- **Collegamento Condomini**: `cod_cond` → `condomin.cod_cond`
|
|
- **Collegamento Conti**: `cod_cassa` → `Anagr_casse.Codice`
|
|
- **Collegamento Straordinarie**: `n_stra` → `straordinarie.id_stra`
|
|
|
|
**STRUCTURE**:
|
|
```sql
|
|
incassi.cod_cond = condomin.cod_cond
|
|
incassi.cod_cassa = Anagr_casse.Codice
|
|
incassi.n_stra = straordinarie.id_stra
|
|
incassi.n_riferimento = rate.id_rate (cross-reference)
|
|
```
|
|
|
|
#### 2. TABELLA ANAGR_CASSE (Conti Bancari)
|
|
- **ID**: `Id_cassa`
|
|
- **Codice**: `Codice` ("CON" = Contanti, "CCB" = Conto Corrente Bancario)
|
|
- **Descrizione**: `Descrizione` ("UNICREDIT CC N.000104951005")
|
|
- **Saldi**: `Saldo_iniziale` + `Saldo_iniziale_EURO`
|
|
|
|
**CRITICAL RELATIONS**:
|
|
```sql
|
|
Anagr_casse.Codice = operazioni.cod_cassa
|
|
Anagr_casse.Codice = incassi.cod_cassa
|
|
```
|
|
|
|
#### 3. TABELLA RUBRICA (Fornitori/Anagrafiche)
|
|
- **Fornitori**: Tutti i soggetti esterni per fatture
|
|
- **Professionisti**: Amministratori, tecnici, avvocati
|
|
- **Collegamento**: `operazioni.cod_ben` → `Rubrica.ID`
|
|
|
|
### FILE UNICREDIT - PATTERN ANALYSIS
|
|
|
|
Dal file `250410 da 200101 a 250410 Unicredit.wri`:
|
|
|
|
**FORMATO STANDARD**:
|
|
```
|
|
Data;Valuta;Descrizione;Euro;Caus.
|
|
02/01/2020;31/12/2019;IMPOSTA BOLLO CONTO CORRENTE DPR642/72-DM24/5/2012;-25,21;219
|
|
02/01/2020;02/01/2020;BONIFICO A VOSTRO FAVORE BONIFICO SEPA DA DUCA CARLO PER rata 1 risc. 2019-2020;139,00;048
|
|
```
|
|
|
|
**PATTERN ENTRATE (Caus. 048)**:
|
|
- `BONIFICO A VOSTRO FAVORE BONIFICO SEPA DA [NOME] PER [CAUSALE]`
|
|
- Causali riconosciute:
|
|
- `rata 1 risc. 2019-2020` → Riscaldamento rata 1
|
|
- `1 RATA CONDOMINIALE 2020` → Rate ordinarie
|
|
- `B18 1 RATA COND 2020` → Scala B, interno 18
|
|
- `MANNINO INTERNO 1 SCALA C` → Identificazione diretta UI
|
|
|
|
**PATTERN USCITE (Caus. 219, etc.)**:
|
|
- `IMPOSTA BOLLO CONTO CORRENTE` → Commissioni bancarie
|
|
- `BONIFICO SEPA A [FORNITORE]` → Pagamenti fornitori
|
|
|
|
### ALGORITMO DI MATCHING COMPLETO
|
|
|
|
#### STEP 1: Pattern Recognition per Entrate
|
|
```regex
|
|
BONIFICO.*DA\s+([A-Z\s]+)\s+PER\s+(.+)
|
|
→ $1 = NOME_PAGATORE, $2 = CAUSALE
|
|
|
|
CAUSALE PATTERNS:
|
|
- (\w)\s*-?\s*(\d+)\s+(RATA|RT\.)\s+(COND|RISC) → Scala=$1, Interno=$2
|
|
- INTERNO\s+(\d+)\s+SCALA\s+([A-D]) → Interno=$1, Scala=$2
|
|
- (\d+)\s+RATA\s+(CONDOMINIALE|RISCALDAMENTO) → Numero rata
|
|
- (20\d{2})[/-](20\d{2}) → Anno competenza
|
|
```
|
|
|
|
#### STEP 2: Riconciliazione Automatica
|
|
1. **Match Nome**: `movimenti_bancari.controparte_nome` ≈ `condomin.nom_cond`
|
|
2. **Match UI**: Scala + Interno → `unita_immobiliari.identificativo`
|
|
3. **Match Importo**: `movimenti_bancari.importo` = `rate.importo_dovuto_euro`
|
|
4. **Match Data**: `movimenti_bancari.data_operazione` ≈ `rate.dt_empag` (±30 giorni)
|
|
|
|
#### STEP 3: Collegamento Contabile
|
|
```sql
|
|
-- Riconciliazione automatica
|
|
UPDATE movimenti_bancari SET
|
|
unita_immobiliare_id = (SELECT id FROM unita_immobiliari WHERE scala_estratta = movimento.scala AND interno_estratto = movimento.interno),
|
|
soggetto_id = (SELECT soggetto_id FROM unita_immobiliari WHERE id = movimento.unita_immobiliare_id),
|
|
stato_riconciliazione = 'RICONCILIATO',
|
|
contabilita_id = (SELECT id FROM contabilita WHERE movimento_bancario_id = movimento.id)
|
|
WHERE confidence_level >= 95.00;
|
|
```
|
|
|
|
---
|
|
|
|
## 🗄️ SCHEMA DATABASE INTEGRATO
|
|
|
|
### TABELLE DA CREARE/AGGIORNARE
|
|
|
|
#### 1. **conti_bancari** (estende Anagr_casse)
|
|
```sql
|
|
CREATE TABLE conti_bancari (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
gestione_id BIGINT NOT NULL,
|
|
|
|
-- Dati Conto (da Anagr_casse)
|
|
codice_gescon VARCHAR(10) NOT NULL, -- Codice originale (CCB, CON)
|
|
denominazione VARCHAR(255) NOT NULL, -- UNICREDIT CC N.000104951005
|
|
iban VARCHAR(34) NULL, -- IT30Q0200805170000104951005
|
|
numero_conto VARCHAR(20) NULL, -- 000104951005
|
|
banca_denominazione VARCHAR(255) DEFAULT 'UNICREDIT',
|
|
banca_abi VARCHAR(5) DEFAULT '02008',
|
|
banca_cab VARCHAR(5) DEFAULT '05170',
|
|
|
|
-- Saldi
|
|
saldo_iniziale DECIMAL(12,2) DEFAULT 0,
|
|
saldo_attuale DECIMAL(12,2) DEFAULT 0,
|
|
saldo_riconciliato DECIMAL(12,2) DEFAULT 0,
|
|
|
|
-- Configurazione Import
|
|
formato_import ENUM('UNICREDIT_WRI','CBI','MT940') DEFAULT 'UNICREDIT_WRI',
|
|
pattern_separatore VARCHAR(5) DEFAULT ';',
|
|
|
|
-- Collegamenti
|
|
piano_conto_id BIGINT NOT NULL, -- FK piano_conti.id
|
|
|
|
FOREIGN KEY (gestione_id) REFERENCES gestioni(id),
|
|
FOREIGN KEY (piano_conto_id) REFERENCES piano_conti(id),
|
|
UNIQUE KEY unique_codice_gestione (codice_gescon, gestione_id)
|
|
);
|
|
```
|
|
|
|
#### 2. **incassi** (da tabella Gescon)
|
|
```sql
|
|
CREATE TABLE incassi (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
gestione_id BIGINT NOT NULL,
|
|
|
|
-- Dati Gescon
|
|
id_incasso_gescon INT NOT NULL, -- ID_incasso originale
|
|
|
|
-- Collegamenti Core
|
|
condomino_id BIGINT NOT NULL, -- FK condomini.id (da cod_cond)
|
|
unita_immobiliare_id BIGINT NOT NULL, -- FK unita_immobiliari.id
|
|
conto_bancario_id BIGINT NOT NULL, -- FK conti_bancari.id (da cod_cassa)
|
|
|
|
-- Dettagli Incasso
|
|
numero_riferimento INT NOT NULL, -- n_riferimento (link a rate)
|
|
anno_riferimento YEAR NOT NULL, -- anno_rif
|
|
numero_mese TINYINT NOT NULL, -- n_mese (1-12)
|
|
tipo_rata ENUM('O','R','S') NOT NULL, -- o_r_s (Ordinaria/Riscaldamento/Straordinaria)
|
|
numero_straordinaria INT NULL, -- n_stra (se S)
|
|
|
|
-- Importi
|
|
importo_pagato_lire BIGINT DEFAULT 0, -- importo_pagato (legacy)
|
|
importo_pagato DECIMAL(10,2) NOT NULL, -- importo_pagato_euro
|
|
|
|
-- Date
|
|
data_pagamento DATE NOT NULL, -- dt_empag
|
|
data_registrazione TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
-- Collegamenti Riconciliazione
|
|
movimento_bancario_id BIGINT NULL, -- FK movimenti_bancari.id
|
|
contabilita_id BIGINT NULL, -- FK contabilita.id
|
|
|
|
-- Stato
|
|
stato_riconciliazione ENUM('NON_RICONCILIATO','RICONCILIATO','PARZIALE') DEFAULT 'NON_RICONCILIATO',
|
|
riconciliato_automaticamente BOOLEAN DEFAULT FALSE,
|
|
confidence_score DECIMAL(5,2) DEFAULT 0,
|
|
|
|
-- Audit
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
FOREIGN KEY (gestione_id) REFERENCES gestioni(id),
|
|
FOREIGN KEY (condomino_id) REFERENCES condomini(id),
|
|
FOREIGN KEY (unita_immobiliare_id) REFERENCES unita_immobiliari(id),
|
|
FOREIGN KEY (conto_bancario_id) REFERENCES conti_bancari(id),
|
|
FOREIGN KEY (movimento_bancario_id) REFERENCES movimenti_bancari(id),
|
|
FOREIGN KEY (contabilita_id) REFERENCES contabilita(id),
|
|
|
|
INDEX idx_riferimento (numero_riferimento, anno_riferimento),
|
|
INDEX idx_condomino (condomino_id),
|
|
INDEX idx_data_pagamento (data_pagamento),
|
|
INDEX idx_riconciliazione (stato_riconciliazione),
|
|
UNIQUE KEY unique_incasso_gescon (id_incasso_gescon, gestione_id)
|
|
);
|
|
```
|
|
|
|
#### 3. **fornitori** (da Rubrica Gescon)
|
|
```sql
|
|
CREATE TABLE fornitori (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
gestione_id BIGINT NOT NULL,
|
|
|
|
-- Dati Gescon
|
|
id_rubrica_gescon INT NULL, -- ID originale
|
|
|
|
-- Anagrafica
|
|
denominazione VARCHAR(255) NOT NULL, -- Nome
|
|
codice_fiscale VARCHAR(16) NULL, -- Cod_fisc
|
|
partita_iva VARCHAR(11) NULL, -- Part_iva
|
|
|
|
-- Indirizzo
|
|
indirizzo VARCHAR(255) NULL, -- Indirizzo
|
|
cap VARCHAR(5) NULL, -- Cap
|
|
citta VARCHAR(100) NULL, -- Citta
|
|
provincia VARCHAR(2) NULL, -- Pr
|
|
|
|
-- Contatti
|
|
telefono_1 VARCHAR(20) NULL, -- tel_1
|
|
telefono_2 VARCHAR(20) NULL, -- tel_2
|
|
email VARCHAR(255) NULL,
|
|
pec VARCHAR(255) NULL,
|
|
|
|
-- Categorizzazione
|
|
tipologia ENUM('FORNITORE','PROFESSIONISTA','BANCA','ENTE','ALTRO') DEFAULT 'FORNITORE',
|
|
categoria_spesa VARCHAR(50) NULL, -- Elettricità, Pulizie, Manutenzione, etc.
|
|
|
|
-- Configurazione Pagamenti
|
|
giorni_pagamento INT DEFAULT 30,
|
|
modalita_pagamento ENUM('BONIFICO','CONTANTI','ASSEGNO','RID') DEFAULT 'BONIFICO',
|
|
iban_fornitore VARCHAR(34) NULL,
|
|
|
|
-- Collegamenti Automatici
|
|
piano_conto_preferito_id BIGINT NULL, -- FK piano_conti.id
|
|
auto_match_pattern VARCHAR(255) NULL, -- Pattern per riconoscimento automatico
|
|
|
|
-- Stato
|
|
attivo BOOLEAN DEFAULT TRUE,
|
|
note TEXT NULL,
|
|
|
|
-- Audit
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
FOREIGN KEY (gestione_id) REFERENCES gestioni(id),
|
|
FOREIGN KEY (piano_conto_preferito_id) REFERENCES piano_conti(id),
|
|
|
|
INDEX idx_gestione (gestione_id),
|
|
INDEX idx_denominazione (denominazione),
|
|
INDEX idx_codice_fiscale (codice_fiscale),
|
|
INDEX idx_partita_iva (partita_iva),
|
|
INDEX idx_tipologia (tipologia),
|
|
UNIQUE KEY unique_rubrica_gescon (id_rubrica_gescon, gestione_id)
|
|
);
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 PROCESSO DI RICONCILIAZIONE COMPLETO
|
|
|
|
### FASE 1: Import Dati Base
|
|
```bash
|
|
# 1. Import conti bancari da Anagr_casse
|
|
php artisan import:gescon-conti-bancari
|
|
|
|
# 2. Import incassi da tabella incassi
|
|
php artisan import:gescon-incassi
|
|
|
|
# 3. Import fornitori da Rubrica
|
|
php artisan import:gescon-fornitori
|
|
```
|
|
|
|
### FASE 2: Import Movimenti Bancari
|
|
```bash
|
|
# 4. Import movimenti bancari da file Unicredit
|
|
php artisan import:unicredit-wri /home/michele/netgescon/docs/02-architettura-laravel/dati-test/milizie\ 3/250410\ da\ 200101\ a\ 250410\ Unicredit.wri --gestione=GES00148
|
|
```
|
|
|
|
### FASE 3: Riconciliazione Automatica
|
|
```bash
|
|
# 5. Pattern recognition e matching
|
|
php artisan reconcile:movimenti-automatico --gestione=GES00148 --confidence-min=90
|
|
|
|
# 6. Verifica manuale sospesi
|
|
php artisan reconcile:review-manual --gestione=GES00148
|
|
```
|
|
|
|
### FASE 4: Quadratura e Report
|
|
```bash
|
|
# 7. Quadratura rate emesse vs incassate
|
|
php artisan report:quadratura-rate --gestione=GES00148 --anno=2024
|
|
|
|
# 8. Solleciti automatici
|
|
php artisan generate:solleciti --gestione=GES00148 --scaduti-da=30
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 DASHBOARD RICONCILIAZIONE
|
|
|
|
### KPI PRINCIPALI
|
|
- **Rate Emesse**: Totale euro da incassare per periodo
|
|
- **Rate Incassate**: Totale euro riconciliati con banca
|
|
- **Gap Incassi**: Differenza rate emesse - incassate
|
|
- **Movimenti Non Riconciliati**: Entrate bancarie senza match
|
|
- **Confidence Score Medio**: Qualità matching automatico
|
|
|
|
### ALERT AUTOMATICI
|
|
- Movimenti > €500 non riconciliati
|
|
- Incassi duplicati (stesso condomino/periodo)
|
|
- Pattern non riconosciuti (confidence < 50%)
|
|
- Discrepanze importi > 5%
|
|
|
|
---
|
|
|
|
**NEXT PHASE**: Implementare import completo e sistema di riconciliazione automatica integrando tutti i flussi identificati.
|