# 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.