# MAPPATURA RELAZIONI GESCON - STABILE 148 ## ANALISI STRUTTURA DATABASE GESCON ### TABELLE PRINCIPALI E RELAZIONI CRITICHE #### 1. TABELLA CONDOMIN (Core Anagrafica) - **ID Primario**: `id_cond` (autoincrement) - **Codice Condomino**: `cod_cond` (2 = B.1, 3 = B.2, etc.) - **Unità Immobiliare**: `scala` + `int` + `tipo_pr` (es: B.1.A, B.2.A) - **Relazione E_lostesso_Di**: Campo `E_lostesso_Di` (colonna 119) - Indica se condomino è uguale a altro (proprietario = inquilino) - Valori: `0` = no relation, `N` = stesso soggetto **CRITICAL RELATIONS:** - `condomin.E_lostesso_Di` → relazione proprietario/inquilino - `condomin.id_cond` → `dett_tab.id_cond` (millesimi) - `condomin.id_cond` → `rate.id_condomino` (rate) - `condomin.id_cond` → `dett_pers.id_cond` (dettagli operazioni) #### 2. TABELLA OPERAZIONI (Movimenti Contabili) - **ID Primario**: `id_operaz` - **Collegamento Spese**: `n_spe` → `dett_pers.n_spe` - **Collegamento Straordinarie**: `n_stra` → `straordinarie.id_stra` - **Vocabolario Spese**: `cod_spe` → `voc_spe.cod` **STRUCTURE:** ``` operazioni.n_spe → dett_pers.n_spe → dett_pers.id_cond → condomin.id_cond operazioni.n_stra → straordinarie.id_stra (lavori straordinari) operazioni.cod_spe → voc_spe.cod (tipologia spesa) ``` #### 3. TABELLA DETT_PERS (Dettaglio Ripartizione Spese) - **Chiavi Multiple**: `n_spe` + `id_cond` + `cond_inq` - **Campo cond_inq**: "C" = condomino, "I" = inquilino - **Importi**: `importo` (lire) + `importo_euro` (euro) **CRITICAL:** ```sql dett_pers.n_spe = operazioni.n_spe dett_pers.id_cond = condomin.id_cond dett_pers.cond_inq = {'C': 'proprietario', 'I': 'inquilino'} ``` #### 4. TABELLA RATE (Rate Condominiali) - **ID Primario**: `id_rate` - **Collegamento Condomino**: `id_condomino` → `condomin.id_cond` - **Tipologia**: `propr_inquil` = "C"/"I" (proprietario/inquilino) - **Tipo Rata**: `o_r_s` = "R" (ordinaria), "S" (straordinaria) - **Collegamento Straordinarie**: `n_stra` → `straordinarie.id_stra` #### 5. TABELLA STRAORDINARIE (Lavori Straordinari) - **ID Primario**: `id_stra` - **Codice**: `codice` (numerico progressivo) - **Descrizioni Multiple**: `descriz_prev_cons`, `descriz_ricev`, `descriz_ccp` #### 6. SISTEMA MILLESIMI **TABELLA TABELLE** (Tipologie Millesimi): - **ID**: `id_tabella` - **Codice**: `cod_tab` (TAB.A, ACQUA, RISC, etc.) - **Descrizione**: `descr` - **Tipo**: `tipo` ("O" = ordinaria, altro) **TABELLA DETT_TAB** (Millesimi per Condomino): - **Chiavi**: `cod_tab` + `id_cond` + `cond_inq` - **Millesimi**: primo campo numerico (9.6520, 8.7510, etc.) **RELAZIONI:** ```sql dett_tab.cod_tab = tabelle.cod_tab dett_tab.id_cond = condomin.id_cond dett_tab.cond_inq = 'C'/'I' (proprietario/inquilino) ``` #### 7. VOCABOLARIO SPESE (voc_spe) - **ID**: `id_vocspe` - **Codice**: `cod` (802, 804, 816, etc.) - **Descrizione**: `descriz` - **Tabella Millesimi**: `tabella` → `tabelle.cod_tab` ### DATI ESEMPIO STABILE 148 **CONDOMINI IDENTIFICATI:** - Scala A: 28 unità (1-28) - Scala B: 28 unità (1-28) + cantine/box - Scala C: 28 unità (1-28) + cantine/box + attività commerciali - Scala D: 14 unità + cantine **TOTALE UNITÀ**: ~214 record in tabella condomin **TIPOLOGIE MILLESIMI PRESENTI:** - TAB.A (millesimi generali): 9.6520, 8.7510, 11.5940... - ACQUA (consumo acqua) - RISC (riscaldamento) - Altri codici specializzati **OPERAZIONI ESEMPIO:** - N_SPE 28, 31: Consumo elettricità parti comuni - COD_SPE 816: Elettricità - Importi in lire convertiti in euro ### STRATEGIA DI IMPORT #### FASE 1: Tabelle Anagrafiche Base 1. `administrators` (amministratore 00000000) 2. `stabili` (stabile GES00148) 3. `database_stabili` (netgescon_stabile_GES00148) #### FASE 2: Tabelle Master 1. `tabelle_millesimali` ← `tabelle` 2. `vocabolario_spese` ← `voc_spe` 3. `straordinarie` ← `straordinarie` #### FASE 3: Anagrafica Condomini 1. `condomini` ← `condomin` 2. Gestione relazione `E_lostesso_Di` 3. Separazione proprietari/inquilini #### FASE 4: Dettagli e Relazioni 1. `millesimi` ← `dett_tab` 2. `operazioni_contabili` ← `operazioni` 3. `dettaglio_ripartizioni` ← `dett_pers` 4. `rate_condominiali` ← `rate` ### VALIDAZIONI CRITICHE #### Integrità Referenziale: - Ogni `dett_pers.id_cond` deve esistere in `condomin.id_cond` - Ogni `operazioni.n_spe` deve avere corrispondenti in `dett_pers.n_spe` - Ogni `rate.id_condomino` deve esistere in `condomin.id_cond` - Ogni `dett_tab.id_cond` deve esistere in `condomin.id_cond` #### Controlli Quantitativi: - Totale millesimi per tabella = 1000.0000 - Somma importi in `dett_pers` per N_SPE = importo in `operazioni` - Coerenza date tra `operazioni` e `rate` #### Relazioni E_lostesso_Di: - Se `condomin.E_lostesso_Di != 0`, verificare esistenza target - Mantenere coerenza proprietario/inquilino - Evitare cicli nelle relazioni ### FILE DI OUTPUT CONSIGLIATI 1. **condomini_gescon_148.csv** - Anagrafica completa 2. **millesimi_gescon_148.csv** - Tutti i millesimi 3. **operazioni_gescon_148.csv** - Movimenti contabili 4. **relazioni_gescon_148.csv** - Mappatura E_lostesso_Di 5. **validazione_gescon_148.log** - Report controlli integrità ### NOTE TECNICHE - **Conversione Valute**: Lire → Euro (fattore 1936.27) - **Date Format**: "MM/DD/YY HH:MM:SS" → ISO format - **Encoding**: Gestire caratteri italiani (à, è, ì, ò, ù) - **Null Values**: Gestire campi vuoti e valori di default **NEXT STEPS:** 1. Creare script di estrazione con mdb-export 2. Implementare validazioni relazionali 3. Testare import su database stabile dedicato 4. Verificare integrità post-import --- **Created**: $(date +"%Y-%m-%d %H:%M:%S") **Source DB**: `/home/michele/netgescon/docs/02-architettura-laravel/Gescon/0021/0001/singolo_anno.mdb` **Target DB**: `netgescon_stabile_GES00148`