netgescon-day0/docs/00-IMPORT/RELAZIONI-COMPLETE-FLUSSO-FINANZIARIO.md

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_condcondomin.cod_cond
  • Collegamento Conti: cod_cassaAnagr_casse.Codice
  • Collegamento Straordinarie: n_strastraordinarie.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_benRubrica.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

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_nomecondomin.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_operazionerate.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.