netgescon-day0/docs/00-IMPORT/GESCON-MAPPING-RELAZIONI.md

170 lines
5.7 KiB
Markdown

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