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.