11 KiB
11 KiB
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:
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:
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 11 RATA CONDOMINIALE 2020→ Rate ordinarieB18 1 RATA COND 2020→ Scala B, interno 18MANNINO INTERNO 1 SCALA C→ Identificazione diretta UI
PATTERN USCITE (Caus. 219, etc.):
IMPOSTA BOLLO CONTO CORRENTE→ Commissioni bancarieBONIFICO SEPA A [FORNITORE]→ Pagamenti fornitori
ALGORITMO DI MATCHING COMPLETO
STEP 1: Pattern Recognition per Entrate
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
- Match Nome:
movimenti_bancari.controparte_nome≈condomin.nom_cond - Match UI: Scala + Interno →
unita_immobiliari.identificativo - Match Importo:
movimenti_bancari.importo=rate.importo_dovuto_euro - Match Data:
movimenti_bancari.data_operazione≈rate.dt_empag(±30 giorni)
STEP 3: Collegamento Contabile
-- 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)
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)
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)
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
# 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
# 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
# 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
# 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.