GESTIONE DATABASE E FUNZIONALITA' 

Documento per il Team di Sviluppo: Schema Database e Roadmap Funzionalità
1. Schema Database Attuale (Verificato e Consolidato)
Di seguito la struttura delle tabelle principali come risulta dai modelli, dalle migration e dai seeder.

Tabella: amministratori Scopo: Contiene i dati anagrafici e professionali degli amministratori di studio.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id_amministratore	BIGINT	PK	Chiave primaria auto-incrementante.
user_id	BIGINT	FK (users)	Collega all'utente Laravel.
nome	VARCHAR(255)		Nome di battesimo dell'amministratore.
cognome	VARCHAR(255)		Cognome dell'amministratore.
denominazione_studio	VARCHAR(255)		Nome dello studio di amministrazione.
partita_iva	VARCHAR(20)	UNIQUE	Partita IVA dello studio.
codice_fiscale_studio	VARCHAR(20)		Codice Fiscale dello studio.
...altri campi studio	VARCHAR		Indirizzo, CAP, città, email, pec, etc.
created_at, updated_at	TIMESTAMP		Timestamps standard di Laravel.
Tabella: stabili Scopo: Anagrafica principale degli immobili gestiti.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id_stabile	BIGINT	PK	Chiave primaria.
amministratore_id	BIGINT	FK (amministratori)	Chi gestisce lo stabile.
denominazione	VARCHAR(255)		Nome dello stabile (es. "Condominio Le Rose").
...altri campi anagrafici	VARCHAR		Indirizzo, CAP, città, provincia, CF.
rate_ordinarie_mesi	JSON		Array di mesi (es. [1, 4, 7, 10]).
rate_riscaldamento_mesi	JSON		Array di mesi per il riscaldamento.
descrizione_rate	TEXT		Descrizione che apparirà sulle rate.
stato	ENUM		'attivo', 'inattivo'.
created_at, updated_at, deleted_at	TIMESTAMP		Timestamps con Soft Deletes.
Tabella: unita_immobiliari Scopo: Dettaglio delle singole unità all'interno di uno stabile.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id_unita	BIGINT	PK	Chiave primaria.
id_stabile	BIGINT	FK (stabili)	A quale stabile appartiene.
fabbricato	VARCHAR(255)		Es. "Palazzina A", "Corpo Centrale".
scala	VARCHAR(255)		Es. "A", "B".
interno	VARCHAR(255)		Es. "5", "12/B".
piano	VARCHAR(255)		Es. "1", "Attico".
...altri campi catastali	DECIMAL, VARCHAR		Superficie, vani, categoria, etc.
created_at, updated_at, deleted_at	TIMESTAMP		Timestamps con Soft Deletes.
Tabella: soggetti Scopo: Anagrafica unica per tutte le persone fisiche e giuridiche (proprietari, inquilini, usufruttuari).

Nome Campo	Tipo Dati	Chiave/Indice	Note
id_soggetto	BIGINT	PK	Chiave primaria.
nome, cognome	VARCHAR(255)		Per persone fisiche.
ragione_sociale	VARCHAR(255)		Per persone giuridiche.
...altri campi	VARCHAR	UNIQUE (email)	CF, P.IVA, email, telefono, indirizzo...
tipo	VARCHAR(255)		Campo descrittivo (es. 'proprietario').
created_at, updated_at	TIMESTAMP		Timestamps standard.
Tabella: proprieta (Tabella Pivot) Scopo: Collega un Soggetto a una UnitaImmobiliare con uno specifico diritto.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id	BIGINT	PK	Chiave primaria.
unita_immobiliare_id	BIGINT	FK (unita_immobiliari)	L'unità immobiliare.
soggetto_id	BIGINT	FK (soggetti)	La persona/azienda.
tipo_diritto	ENUM		'proprietario', 'inquilino', 'usufruttuario'...
percentuale_possesso	DECIMAL(5,2)		Es. 100.00, 50.00.
data_inizio, data_fine	DATE		Validità del diritto (es. contratto affitto).
created_at, updated_at	TIMESTAMP		Timestamps standard.
Tabelle Contabilità (Struttura Base)

gestioni: Anno di gestione (es. 2024 Ordinaria).
preventivi: Preventivo approvato per una gestione.
voci_preventivo: Singole voci di spesa del preventivo.
piano_conti_condominio: Piano dei conti specifico per uno stabile.
tabelle_millesimali: Anagrafica delle tabelle (es. "Tabella A - Proprietà").
dettagli_tabelle_millesimali: Valori millesimali per ogni unità in una tabella.
2. Proposte di Miglioramento e Aggiunta Campi/Tabelle
Per rendere l'applicazione più completa, propongo di aggiungere le seguenti tabelle e campi.

NUOVA Tabella: documenti Scopo: Gestire l'upload di qualsiasi file (fatture, verbali, contratti) e collegarlo a diverse entità.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id	BIGINT	PK	Chiave primaria.
documentable_id	BIGINT	INDEX	ID del modello a cui è collegato (es. id_stabile, id_fornitore).
documentable_type	VARCHAR(255)	INDEX	Classe del modello (es. App\Models\Stabile). Relazione Polimorfica.
nome_file	VARCHAR(255)		Nome originale del file caricato.
path_file	VARCHAR(255)		Percorso del file nello storage.
tipo_documento	VARCHAR(255)		Categoria del documento (es. 'Fattura', 'Verbale', 'Contratto').
descrizione	TEXT		Note opzionali sul documento.
created_at, updated_at	TIMESTAMP		Timestamps standard.
NUOVA Tabella: rate Scopo: Tracciare ogni singola rata generata per ogni unità immobiliare.

Nome Campo	Tipo Dati	Chiave/Indice	Note
id	BIGINT	PK	Chiave primaria.
id_gestione	BIGINT	FK (gestioni)	A quale gestione si riferisce.
unita_immobiliare_id	BIGINT	FK (unita_immobiliari)	A quale unità è addebitata.
descrizione	VARCHAR(255)		Es. "Rata 1 di 4 - Ordinarie", "Acconto Riscaldamento".
importo	DECIMAL(10,2)		Importo della rata.
data_scadenza	DATE		Data di scadenza del pagamento.
data_pagamento	DATE	NULLABLE	Data in cui è stata pagata.
stato	ENUM		'da_pagare', 'pagata', 'insoluta'.
created_at, updated_at	TIMESTAMP		Timestamps standard.
Campi da Aggiungere:

Tabella fornitori: Aggiungere iban (VARCHAR, nullable, unique) per i pagamenti.
Tabella stabili: Aggiungere iban_conto_corrente (VARCHAR, nullable) per il conto principale dello stabile.
3. Roadmap Funzionalità e Dashboard
Con questa struttura dati, possiamo definire le prossime funzionalità da implementare.

Dashboard Amministratore (admin.dashboard) Deve diventare il centro di controllo con widget riassuntivi:

Ticket Aperti: Un contatore con link alla lista dei ticket con stato "Aperto".
Scadenze Prossime: Lista delle prossime 5 rate in scadenza (usando la nuova tabella rate).
Ultimi Documenti: Lista degli ultimi 5 file caricati (usando la nuova tabella documenti).
Link Rapidi: Pulsanti per "Nuovo Stabile", "Nuovo Ticket", "Nuovo Fornitore".
Pagina Dettaglio Stabile (stabili.show) Questa pagina deve essere organizzata a TAB per non essere troppo affollata:

Tab "Dati Generali": Le informazioni anagrafiche attuali.
Tab "Unità e Proprietà": Le due tabelle che abbiamo già popolato.
Tab "Contabilità": Con sotto-sezioni per Gestione, Preventivo, Piano dei Conti.
Tab "Documenti": Una vista per caricare e visualizzare i documenti relativi allo stabile (usando la nuova tabella documenti).
Tab "Gestione Rate": Un'interfaccia per generare le rate per tutte le unità (usando la nuova tabella rate) e visualizzare lo stato dei pagamenti.
Prossimi Sviluppi Chiave:

Implementare le migration per le nuove tabelle (documenti, rate) e i nuovi campi.
Sviluppare il DocumentoController con la logica per l'upload e la visualizzazione dei file.
Sviluppare il RateController con la logica per la generazione massiva delle rate basata sui preventivi e le tabelle millesimali.
Potenziare la pagina stabili.show con la struttura a TAB.