netgescon-day0/docs/000-FILAMENT/12-RELAZIONI-MDB.md

7.6 KiB
Raw Permalink Blame History

Relazioni MDB → NetGescon (mappa operativa)

1) Stabili

Fonte: dbc/Stabili.mdb → tabella Stabili

  • stabili (dominio)
    • chiave legacy: stabili.codice_stabile = Stabili.cod_stabile
    • serve per collegare tutte le tabelle per stabile/cartella

📁 Regola archivi per amministratore (obbligatoria)

Gli archivi legacy devono stare nella cartella dellamministratore:

  • Base: storage/app/amministratori/<COD_AMM>/legacy
  • Stabili: .../legacy/dbc/Stabili.mdb
  • Indice anni: .../legacy/cartellestabili_e_anni.mdb
  • Per stabile: .../legacy/<COD_STABILE>/<ANNO>/singolo_anno.mdb
  • Generale: .../legacy/<COD_STABILE>/generale_stabile.mdb

Questo evita contaminazioni tra amministratori (es. tabelle “fantasma” come TABADL su stabili che non la hanno).

📁 Archivi per stabile (documenti interni)

Oltre alla separazione per amministratore, i documenti interni devono vivere anche per stabile:

  • storage/app/amministratori/<COD_AMM>/stabili/<CODICE_UNIVOCO_STABILE>/...

Qui vanno PDF, XML, allegati e documenti generati dallapp. In questo modo non si sovrappongono tra stabili diversi.

🔒 Legacy: lettura diretta (no copia)

Gli archivi legacy si leggono in sola lettura per portare dati in staging. Non si copiano in locale. Il percorso viene risolto in base a amministratore/stabile per evitare contaminazioni.

2) Unità / nominativi (condomin)

Fonte: singolo_anno.mdb → tabella condomin

  • condomin.cod_cond = ID unità legacy
  • condomin.cond_inq o cond_inquil = C (condomino) / I (inquilino)
  • condomin.scala + condomin.internounità immobiliare
  • condomin.(nome/cognome/cf/email)soggetto

Nota rubrica ruoli: in rubrica_ruoli.meta.cod_cond possono comparire formati legacy tipo I0012 o 13-INQ. In questi casi si normalizza il codice con sola parte numerica per il match con condomin.cod_cond.

Relazioni target:

  • unita_immobiliari (dominio) ← condomin (scala, interno, cod_stabile)
  • soggetti (dominio) ← condomin (dati anagrafici)
  • proprieta (pivot) collega soggettiunita_immobiliari usando condomin.cond_inq

3) Rate emesse (emes_gen / emes_det)

Fonte: generale_stabile.mdb → tabelle emes_gen, emes_det

  • emes_gen.n_emissione = chiave emissione
  • emes_det.n_emissione → collega emissione
  • emes_det.anno_emissione → cartella (es. 0001=2024, 0002=2025)
  • emes_det.cod_cond → unità legacy (condomin.cod_cond)
  • emes_det.cond_inq → soggetto (C/I)

Relazioni target:

  • rate_emissioni (staging) ← emes_gen
  • rate_emissioni_dettaglio (staging) ← emes_det
  • rate_emesse (dominio) ← rate_emissioni_dettaglio
    • unita_immobiliare_id risolto da condomin.cod_cond
    • soggetto_responsabile_id in base a cond_inq
    • piano_rateizzazione_id per n_emissione

4) Incassi

Fonte: singolo_anno.mdb → tabella incassi

  • incassi.cod_cond → unità legacy (condomin.cod_cond)
  • incassi.cond_inq → soggetto (C/I)
  • incassi.n_riferimento / n_mese / anno_rif → aggancio rate

Relazioni target:

  • incassi (dominio)
  • match con rate_emesse per riconciliazione

5) Tabelle millesimali

Fonte: singolo_anno.mdbtabelle, dett_tab

  • tabelle.cod_tab = tabella millesimale
  • dett_tab.cod_tab → tabella
  • dett_tab.id_cond → unità legacy (condomin.cod_cond)

Relazioni target:

  • tabelle_millesimali (dominio)
  • dettagli_millesimali (dominio) collegato a unita_immobiliari

6) Voci di spesa

Fonte: singolo_anno.mdbvoc_spe

  • voc_spe.cod_tab → tabella millesimale
  • voc_spe.cod_spe → voce spesa

Relazioni target:

  • voci_spesa (dominio) collegate a tabelle_millesimali
  • usate per ripartizioni e prima nota

7) Operazioni / mastrino

Fonte: singolo_anno.mdboperazioni

  • operazioni.cod_spevoc_spe
  • operazioni.cod_tabtabelle
  • operazioni.cod_condcondomin

Relazioni target:

  • operazioni_contabili (dominio)
  • legame con voci_spesa e tabelle_millesimali

Diagramma relazioni (mermaid)

flowchart LR
  Stabili[(Stabili.mdb)] -->|cod_stabile| STABILI[stabili]

  Condomin[(condomin)] -->|cod_stabile| STABILI
  Condomin -->|scala+interno| UNITA[unita_immobiliari]
  Condomin -->|anagrafica| SOGG[soggetti]
  SOGG -->|pivot| PROP[proprieta]
  PROP -->|unita_id| UNITA

  EmesGen[(emes_gen)] -->|n_emissione| EMISSI[rate_emissioni]
  EmesDet[(emes_det)] -->|n_emissione| EMDET[rate_emissioni_dettaglio]
  EmesDet -->|cod_cond| Condomin
  EMDET -->|unità/soggetto| RATE[rate_emesse]
  EMISSI -->|piano per emissione| PIANI[piano_rateizzazione]
  PIANI --> RATE

  Incassi[(incassi)] -->|cod_cond| Condomin
  Incassi -->|incasso| INCASSI[incassi]
  INCASSI -. riconcilia .- RATE

  Tabelle[(tabelle)] -->|cod_tab| TM[tabelle_millesimali]
  DettTab[(dett_tab)] -->|cod_tab| TM
  DettTab -->|id_cond| Condomin
  TM --> DETT[dettagli_millesimali]
  DETT --> UNITA

  VocSpe[(voc_spe)] -->|cod_tab| TM
  VocSpe --> VOCI[voci_spesa]
  Operazioni[(operazioni)] -->|cod_spe| VOCI
  Operazioni -->|cod_tab| TM
  Operazioni --> OPER[operazioni_contabili]

Verifica import (checklist)

  1. Stabili importati da Stabili.mdb.
  2. condomin importato (staging), poi unità + soggetti + proprietà in dominio.
  3. emes_gen / emes_det importati in staging → rate_emissioni*.
  4. rate_emesse (dominio) generate da rate_emissioni_dettaglio con legame a unità/soggetto.
  5. tabelle / dett_tabtabelle_millesimali + dettagli.
  6. voc_spevoci_spesa con link a tabella millesimale.
  7. operazioni collegate a tabella + voce.

Conformità import per stabile (rate/incassi)

Obiettivo: per ogni stabile/cartella assicurare coerenza tra staging e dominio.

Rate emesse

  • rate_emissioni (staging) deve avere le emissioni per anno_emissione atteso (es. 0001, 0002).
  • rate_emissioni_dettaglio deve avere righe per cod_cond e n_emissione.
  • rate_emesse (dominio) deve avere una riga per ogni dettaglio (o più se duplicati legittimi), con:
    • unita_immobiliare_id risolto da condomin.cod_cond.
    • soggetto_responsabile_id coerente con cond_inq (C/I).
    • note con n_emissione e cod_cond_src per tracciabilità.

Incassi

  • incassi (dominio) deve avere cod_cond_gescon e cond_inquil valorizzati.
  • La riconciliazione con rate_emesse deve usare:
    • cod_cond + n_rata_riferimento (o n_mese)
    • importo e data (tolleranza data/periodo).

Controlli automatici suggeriti

  • Unità duplicate o mancanti: verificare condomin.cod_cond mappati su unita_immobiliari.
  • Inquilini multipli: una sola relazione locazione attiva per unità, altrimenti dedup.
  • Rate orfane: rate_emesse senza unita_immobiliare_id o soggetto_responsabile_id.
  • Emissioni incoerenti: rate_emissioni con n_emissione non presenti in rate_emissioni_dettaglio.

Bonifica relazioni rubrica (inquilini/proprietari)

Comando utile:

  • php artisan gescon:bonifica-ruoli-legacy --stabile-id=<ID> [--apply]

Note operative:

  • Se in rubrica_ruoli.meta.cod_cond compaiono prefissi I o suffissi -INQ, sono inquilini.
  • Le relazioni con ruolo incoerente vengono disattivate in bonifica.
  • Dopo bonifica, una sola relazione inquilino attiva per unità.

Esempio controllo (stabile 0019)

  • rate_emesse collegate: 535
  • rate con unita_immobiliare_id mancanti: 0
  • rate con soggetto_responsabile_id mancanti: 0
  • inquilini duplicati in rubrica: risolti tramite bonifica

Se vuoi, posso aggiungere una tabella “checklist” per ogni stabile con esito /⚠️.