# NETGESCON - ANALISI GESTIONE FINANZIARIA AVANZATA ## πŸ“‹ OVERVIEW La gestione finanziaria avanzata di NetGesCon gestisce tutti gli aspetti economici del condominio, dai fondi tradizionali alle nuove opportunitΓ  di rendita derivanti da spazi comuni e servizi innovativi. ## πŸ’° SISTEMA FONDI MULTIPLI ### Struttura Gerarchica Fondi #### Fondi Primari (Obbligatori per Legge) ``` 1. FONDO ORDINARIO β”œβ”€β”€ Spese di gestione corrente β”œβ”€β”€ Manutenzioni ordinarie β”œβ”€β”€ Utenze parti comuni └── Servizi base (portineria, pulizie) 2. FONDO DI RISERVA β”œβ”€β”€ Accantonamento legale (minimo) β”œβ”€β”€ Manutenzioni straordinarie β”œβ”€β”€ Emergenze impreviste └── Riserva sicurezza ``` #### Fondi Secondari (Specifici per Servizio) ``` 3. FONDI SPECIFICI β”œβ”€β”€ Fondo Ascensore β”‚ β”œβ”€β”€ Manutenzione ordinaria β”‚ β”œβ”€β”€ Guasti e riparazioni β”‚ └── Sostituzione completa β”œβ”€β”€ Fondo Riscaldamento β”‚ β”œβ”€β”€ Combustibile/energia β”‚ β”œβ”€β”€ Manutenzione caldaia β”‚ └── Efficientamento energetico β”œβ”€β”€ Fondo Facciata/Tetto β”‚ β”œβ”€β”€ Manutenzione preventiva β”‚ β”œβ”€β”€ Riparazioni localizzate β”‚ └── Rifacimento completo └── Fondi Personalizzati β”œβ”€β”€ Fondo verde/giardini β”œβ”€β”€ Fondo sicurezza/videosorveglianza └── Fondo innovazione tecnologica ``` #### Fondi Terziari (Investimenti e Rendite) ``` 4. FONDI RENDITA β”œβ”€β”€ Fondo Investimenti Spazi Comuni β”‚ β”œβ”€β”€ Miglioramenti locali commerciali β”‚ β”œβ”€β”€ Attrezzature sala eventi β”‚ └── Tecnologie innovative β”œβ”€β”€ Fondo Redistribuzione Rendite β”‚ β”œβ”€β”€ Accumulo ricavi affitti β”‚ β”œβ”€β”€ Detrazione spese gestione β”‚ └── Distribuzione proporzionale └── Fondo Sviluppo Futuro β”œβ”€β”€ Nuovi progetti reddituali β”œβ”€β”€ Efficientamento energetico └── Smart building technologies ``` ## 🏦 GESTIONE DEPOSITI E CAUZIONI ### Depositi Cauzionali Inquilini #### Struttura Dati Deposito ```sql CREATE TABLE depositi_cauzionali ( id BIGINT PRIMARY KEY AUTO_INCREMENT, unita_immobiliare_id BIGINT NOT NULL, inquilino_id BIGINT NOT NULL, -- Dati deposito importo_deposito DECIMAL(10,2) NOT NULL, numero_mensilita DECIMAL(3,1) DEFAULT 2.0, valuta CHAR(3) DEFAULT 'EUR', -- Date data_versamento DATE NOT NULL, data_scadenza_contratto DATE, data_svincolo DATE NULL, -- Interessi tasso_interesse DECIMAL(5,4) DEFAULT 0.0000, interessi_maturati DECIMAL(8,2) DEFAULT 0.00, -- Stato stato ENUM('attivo', 'svincolato', 'parzialmente_utilizzato', 'contenziosi') DEFAULT 'attivo', -- Garanzie aggiuntive fideiussione_bancaria BOOLEAN DEFAULT FALSE, polizza_assicurativa BOOLEAN DEFAULT FALSE, garante_persona_fisica BOOLEAN DEFAULT FALSE, -- Note e dettagli modalita_versamento VARCHAR(100), note_particolari TEXT, FOREIGN KEY (unita_immobiliare_id) REFERENCES unita_immobiliari(id), FOREIGN KEY (inquilino_id) REFERENCES persone(id) ); ``` #### Calcolo Automatico Interessi ```php class DepositoCauzioneService { /** * Calcola interessi maturati su deposito cauzionale * Tasso BCE + spread o tasso fisso contrattuale */ public function calcolaInteressi($depositoId, $dataCalcolo = null) { $deposito = DepositoCauzionale::find($depositoId); $dataCalcolo = $dataCalcolo ?? now(); $giorniMaturazione = $deposito->data_versamento->diffInDays($dataCalcolo); $tassoGiornaliero = $deposito->tasso_interesse / 365; return $deposito->importo_deposito * $tassoGiornaliero * $giorniMaturazione; } /** * Svincolo automatico a fine contratto */ public function svincoloAutomatico($depositoId) { $deposito = DepositoCauzionale::find($depositoId); if ($deposito->data_scadenza_contratto <= now()) { $interessiFinali = $this->calcolaInteressi($depositoId); $importoTotale = $deposito->importo_deposito + $interessiFinali; // Genera movimento contabile automatico $this->creaMovimentoSvincolo($deposito, $importoTotale); $deposito->update([ 'stato' => 'svincolato', 'data_svincolo' => now(), 'interessi_maturati' => $interessiFinali ]); } } } ``` ### Depositi Ditte e Fornitori #### Cauzioni Lavori - **Percentuale standard**: 10% valore lavori - **Durata**: Fino a collaudo + 12 mesi garanzia - **Tipologie accettate**: - Fideiussione bancaria - Polizza assicurativa - Deposito contanti - Trattenuta su acconti #### Gestione Automatica ```php class CauzioneLavoriService { /** * Calcola cauzione automatica in base a preventivo */ public function calcolaCauzione($importoLavori, $percentuale = 10) { return $importoLavori * ($percentuale / 100); } /** * Svincolo graduale cauzione */ public function svincoloGraduale($lavoroId) { $lavoro = Lavoro::find($lavoroId); switch($lavoro->stato) { case 'completato': return $this->svincolaPercentuale($lavoro, 50); // 50% a lavori completati case 'collaudato': return $this->svincolaPercentuale($lavoro, 40); // 40% a collaudo case 'garanzia_scaduta': return $this->svincolaPercentuale($lavoro, 10); // 10% finale } } } ``` ## πŸ’Ό GESTIONE TFR E COMPENSI ### TFR Dipendenti (Portiere, Custode, etc.) #### Calcolo Automatico TFR ```php class TFRService { /** * Calcola accantonamento TFR mensile * Formula: (Retribuzione Lorda Annua / 13.5) rivalutata */ public function calcolaAccantonamentoMensile($dipendenteId, $anno, $mese) { $dipendente = Dipendente::find($dipendenteId); $retribuzioneLordaAnnua = $this->getRetribuzioneLordaAnnua($dipendente, $anno); $accantonamentoBase = $retribuzioneLordaAnnua / 13.5 / 12; $rivalutazioneISTAT = $this->getRivalutazioneISTAT($anno, $mese); return $accantonamentoBase * (1 + $rivalutazioneISTAT); } /** * Rivalutazione ISTAT automatica */ public function getRivalutazioneISTAT($anno, $mese) { // Collegamento automatico con API ISTAT o tabelle aggiornate return ISTATService::getIndiceRivalutazione($anno, $mese); } /** * Calcolo TFR finale con tassazione sostitutiva */ public function calcolaTFRFinale($dipendenteId, $dataLicenziamento) { $accantonamenti = AccantonamentoTFR::where('dipendente_id', $dipendenteId) ->where('data_accantonamento', '<=', $dataLicenziamento) ->sum('importo_rivalutato'); $tassazioneSostitutiva = $this->calcolaTassazioneSostitutiva($accantonamenti); return $accantonamenti - $tassazioneSostitutiva; } } ``` ### Compensi Amministratore #### Fatturazione Automatica ```php class CompensoProfessionaleService { /** * Genera fattura periodica amministratore */ public function generaFatturaPeriodica($stabileId, $periodo) { $stabile = Stabile::find($stabileId); $amministratore = $stabile->amministratore; $compensoBase = $this->calcolaCompensoBase($stabile); $compensiAggiuntivi = $this->getCompensiAggiuntivi($stabile, $periodo); $rimborsiSpese = $this->getRimborsiSpese($amministratore, $periodo); $fatturaData = [ 'numero' => $this->generaNumeroFattura(), 'data_emissione' => now(), 'importo_imponibile' => $compensoBase + $compensiAggiuntivi + $rimborsiSpese, 'iva' => $this->calcolaIVA($compensoBase + $compensiAggiuntivi), 'ritenuta_acconto' => $this->calcolaRitenutaAcconto($compensoBase + $compensiAggiuntivi), 'importo_totale' => $this->calcolaImportoFinale() ]; return FatturaProfessionale::create($fatturaData); } } ``` ## 🏘️ RENDITE DA SPAZI COMUNI ### Sistema di Ripartizione Innovativo #### Algoritmo Distribuzione Ricavi ```php class RenaitaSpazioComune { /** * Algoritmo distribuzione ricavi spazi comuni */ public function distribuisciRicavi($spazioId, $importoRicavo, $periodo) { $spazio = SpazioComune::find($spazioId); $stabile = $spazio->stabile; // 1. Detrazione spese di gestione $speseGestione = $this->calcolaSpeseGestione($spazio, $periodo); $ricavoNetto = $importoRicavo - $speseGestione; // 2. Accantonamento manutenzione (configurabile) $percentualeAccantonamento = $spazio->percentuale_accantonamento ?? 20; $accantonamentoManutenzione = $ricavoNetto * ($percentualeAccantonamento / 100); // 3. Importo distribuibile $importoDistribuibile = $ricavoNetto - $accantonamentoManutenzione; // 4. Distribuzione per millesimi (o algoritmo personalizzato) $this->distribuisciPerMillesimi($stabile, $importoDistribuibile); // 5. Registrazione movimenti contabili $this->registraMovimentiContabili($spazio, $importoRicavo, $speseGestione, $accantonamentoManutenzione, $importoDistribuibile); } /** * Distribuzione personalizzabile */ public function distribuisciPerMillesimi($stabile, $importoDistribuibile) { $unitaImmobiliari = $stabile->unitaImmobiliari; $millesimitTotali = $unitaImmobiliari->sum('millesimi_generali'); foreach($unitaImmobiliari as $unita) { $quotaSpettante = ($unita->millesimi_generali / $millesimitTotali) * $importoDistribuibile; // Accredita su conto rate o bonifico diretto $this->accreditaQuota($unita, $quotaSpettante); } } } ``` ### Contratti e Tariffari Dinamici #### Gestione Contratti Locazione ```sql CREATE TABLE contratti_spazi_comuni ( id BIGINT PRIMARY KEY AUTO_INCREMENT, spazio_comune_id BIGINT NOT NULL, inquilino_id BIGINT NOT NULL, -- Dati contratto numero_contratto VARCHAR(50) UNIQUE, data_inizio DATE NOT NULL, data_fine DATE NOT NULL, durata_mesi INT NOT NULL, -- Condizioni economiche canone_mensile DECIMAL(8,2) NOT NULL, incremento_istat BOOLEAN DEFAULT TRUE, percentuale_incremento_annuo DECIMAL(5,2) DEFAULT 0.00, -- Spese accessorie spese_condominiali_a_carico_inquilino BOOLEAN DEFAULT TRUE, utenze_separate BOOLEAN DEFAULT FALSE, -- Garanzie deposito_cauzionale DECIMAL(10,2), fideiussione_bancaria BOOLEAN DEFAULT FALSE, -- Clausole speciali diritto_riscatto BOOLEAN DEFAULT FALSE, clausola_recesso_anticipato BOOLEAN DEFAULT FALSE, preavviso_recesso_giorni INT DEFAULT 60, -- Stato stato ENUM('attivo', 'scaduto', 'disdetto', 'rinnovato') DEFAULT 'attivo', FOREIGN KEY (spazio_comune_id) REFERENCES spazi_comuni(id), FOREIGN KEY (inquilino_id) REFERENCES persone(id) ); ``` #### Tariffari Servizi a Consumo ```sql CREATE TABLE tariffari_servizi ( id BIGINT PRIMARY KEY AUTO_INCREMENT, spazio_comune_id BIGINT NOT NULL, -- Tipologia tariffazione tipo_tariffazione ENUM('oraria', 'giornaliera', 'a_consumo', 'forfettaria'), -- Tariffe base tariffa_base DECIMAL(6,2) NOT NULL, tariffa_condomini DECIMAL(6,2), -- Sconto per condomini tariffa_festivi DECIMAL(6,2), -- Maggiorazione festivi -- Pacchetti e scontistiche sconto_abbonamento_mensile DECIMAL(5,2) DEFAULT 0.00, sconto_lungo_periodo DECIMAL(5,2) DEFAULT 0.00, -- Penali e cauzione penale_danni DECIMAL(8,2) DEFAULT 0.00, cauzione_utilizzo DECIMAL(8,2) DEFAULT 0.00, -- ValiditΓ  data_validita_inizio DATE NOT NULL, data_validita_fine DATE, FOREIGN KEY (spazio_comune_id) REFERENCES spazi_comuni(id) ); ``` ## πŸ“Š REPORTING E DASHBOARD FINANZIARIA ### Dashboard Real-Time - **Saldo fondi in tempo reale** - **Previsioni flussi di cassa** - **Rendimenti spazi comuni** - **Scadenze depositi cauzionali** - **Alerting automatico** ### Report Automatici - **Bilancio mensile dettagliato** - **Estratto conto per condomino** - **Report rendite spazi comuni** - **Analisi costi-benefici servizi** - **Proiezioni finanziarie** ### Integrazione Fiscale - **Export dati per commercialista** - **Pre-compilazione 770** - **Gestione ritenute** - **IVA su prestazioni** - **Certificazioni uniche automatiche** ## 🎯 ROADMAP IMPLEMENTAZIONE ### Fase 1: Fondamenta (2-3 settimane) - βœ… Struttura database fondi multipli - βœ… Sistema base depositi cauzionali - βœ… Calcolo TFR automatico ### Fase 2: Spazi Comuni (3-4 settimane) - βœ… Gestione contratti affitto - βœ… Algoritmi distribuzione ricavi - βœ… Tariffari dinamici ### Fase 3: Automazioni (2-3 settimane) - βœ… Fatturazione automatica - βœ… Svincoli programmati - βœ… Reporting avanzato ### Fase 4: Integrazione (1-2 settimane) - βœ… Dashboard finanziaria - βœ… Export fiscali - βœ… API bancarie (PSD2) ## πŸ’‘ RENDITE INNOVATIVE DA PROPRIETΓ€ CONDOMINIALI ⭐ NUOVE IDEE ### Affitti Spazi Tecnologici - **Antenne Telefonia Mobile** - Contratti pluriennali con operatori (TIM, Vodafone, WindTre) - Canoni annuali €5.000-€15.000 per antenna - Clausole di adeguamento automatico - Cessione gratuita energia elettrica - Manutenzione a carico gestore - Polizze assicurative dedicate ```sql CREATE TABLE contratti_antenne ( id BIGINT PRIMARY KEY AUTO_INCREMENT, stabile_id BIGINT NOT NULL, spazio_comune_id BIGINT NOT NULL, -- Dati operatore operatore_telefonico ENUM('tim', 'vodafone', 'windtre', 'iliad', 'altro'), ragione_sociale VARCHAR(200), partita_iva VARCHAR(11), -- Contratto numero_contratto VARCHAR(50), data_inizio DATE NOT NULL, data_scadenza DATE NOT NULL, durata_anni INT DEFAULT 9, rinnovo_automatico BOOLEAN DEFAULT TRUE, preavviso_disdetta_mesi INT DEFAULT 12, -- Condizioni economiche canone_annuo DECIMAL(10,2) NOT NULL, incremento_istat BOOLEAN DEFAULT TRUE, incremento_percentuale_annuo DECIMAL(4,2) DEFAULT 0.00, deposito_cauzionale DECIMAL(10,2), -- Spese accessorie energia_elettrica_a_carico_gestore BOOLEAN DEFAULT TRUE, manutenzione_ordinaria_a_carico_gestore BOOLEAN DEFAULT TRUE, assicurazione_a_carico_gestore BOOLEAN DEFAULT TRUE, -- Specifiche tecniche tipologia_antenna ENUM('gsm', 'umts', 'lte', '5g', 'mista'), numero_apparati INT DEFAULT 1, potenza_massima_watt DECIMAL(8,2), superficie_occupata_mq DECIMAL(6,2), -- Autorizzazioni autorizzazione_comunale BOOLEAN DEFAULT FALSE, data_autorizzazione_comunale DATE NULL, numero_pratica_comunale VARCHAR(50), -- Documenti collegati documento_contratto_id BIGINT NULL, documento_autorizzazione_id BIGINT NULL, documento_collaudo_id BIGINT NULL, FOREIGN KEY (stabile_id) REFERENCES stabili(id), FOREIGN KEY (spazio_comune_id) REFERENCES spazi_comuni(id), FOREIGN KEY (documento_contratto_id) REFERENCES documenti_archivio(id) ); ``` ### Servizi a Pagamento Innovativi - **Posti Biciclette Premium** - Box chiusi e videosorvegliati - Tariffazione mensile/annuale - Servizi aggiuntivi (riparazione, pulizia) - App gestione prenotazioni - **Servizi Condominiali Digitali** - WiFi condominiale a pagamento - Armadietti Amazon/Poste - Stazioni ricarica auto elettriche - Servizi delivery dedicati ### Gestione Rendite Speciali ```php class RenditeSpecialiService { /** * Calcola rendite annuali da contratti speciali */ public function calcolaRenditeAnnuali($stabileId, $anno) { $rendite = []; // Antenne telefonia $renditeAntenne = $this->calcolaRenditeAntenne($stabileId, $anno); $rendite['antenne'] = $renditeAntenne; // Posti bici premium $renditeBici = $this->calcolaRenditeBici($stabileId, $anno); $rendite['bici'] = $renditeBici; // Altri servizi $renditeServizi = $this->calcolaRenditeServizi($stabileId, $anno); $rendite['servizi'] = $renditeServizi; // Totale rendite $totaleRendite = array_sum(array_column($rendite, 'totale')); // Calcola distribuzione per condomini $distribuzione = $this->calcolaDistribuzioneRendite($stabileId, $totaleRendite); return [ 'rendite_dettaglio' => $rendite, 'totale_annuo' => $totaleRendite, 'distribuzione_condomini' => $distribuzione, 'spese_gestione' => $this->calcolaSpeseGestione($stabileId, $totaleRendite), 'netto_distribuibile' => $totaleRendite * 0.9 // 10% spese gestione ]; } /** * Distribuzione automatica rendite */ public function distribuisciRenditeAutomaticamente($stabileId, $importoTotale, $periodo) { $stabile = Stabile::find($stabileId); $unitaImmobiliari = $stabile->unitaImmobiliari; // Calcola quote per millesimi $millesimitTotali = $unitaImmobiliari->sum('millesimi_generali'); foreach ($unitaImmobiliari as $unita) { $quotaSpettante = ($unita->millesimi_generali / $millesimitTotali) * $importoTotale; // Crea movimento contabile MovimentoContabile::create([ 'stabile_id' => $stabileId, 'unita_immobiliare_id' => $unita->id, 'persona_id' => $unita->proprietario_principale_id, 'tipo_movimento' => 'entrata', 'categoria' => 'rendite_condominiali', 'descrizione' => "Quota rendite condominiali {$periodo}", 'importo' => $quotaSpettante, 'data_movimento' => now(), 'modalita_pagamento' => 'accredito_conto_rate' ]); // Accredita su conto rate condomino $this->accreditaSuContoRate($unita->id, $quotaSpettante); } } } ``` ## 4. GESTIONE FONDI CONDOMINIALI SPECIFICI ### 4.1 Depositi Cauzionali - **Gestione Depositi per Locali Affittati** - Registrazione depositi cauzionali - Tracking utilizzo e restituzione - Interessi maturati sui depositi - Gestione garanzie fideiussorie ### 4.2 TFR e Gestione Personale - **TFR Portiere/Personale** - Calcolo automatico TFR - Accantonamenti mensili - Gestione liquidazioni - Archivio contratti e buste paga ### 4.3 Accantonamenti per Uso ProprietΓ  Comuni - **Quote Uso Spazi Comuni** - Terrazzo condominiale - Locali tecnici - Spazi pubblicitari - Aree di sosta/parcheggio ### 4.4 Rendite da ProprietΓ  Condominiali - **Affitti Antenne Telefonia Mobile** - Contratti operatori telefonici - Canoni mensili/annuali - Gestione rinnovi automatici - Ripartizione ricavi tra condomini - **Posti Bici e MobilitΓ ** - Affitto posti bici - Colonnine ricarica elettrica - Car sharing condominiale - Gestione accessi e prenotazioni - **Altri Servizi Innovativi** - Distributori automatici - Armadietti Amazon Locker - Spazi co-working temporanei - Servizi di pulizia premium ### 4.5 Gestione Centralizzata Fondi ```sql -- Tabella fondi_condominio CREATE TABLE fondi_condominio ( id INT PRIMARY KEY, stabile_id INT, tipo_fondo ENUM('deposito_cauzionale', 'tfr', 'accantonamento', 'rendita'), descrizione VARCHAR(255), importo_iniziale DECIMAL(10,2), saldo_attuale DECIMAL(10,2), data_creazione DATE, data_scadenza DATE, stato ENUM('attivo', 'chiuso', 'sospeso'), note TEXT ); -- Tabella movimenti_fondi CREATE TABLE movimenti_fondi ( id INT PRIMARY KEY, fondo_id INT, tipo_movimento ENUM('entrata', 'uscita', 'trasferimento'), importo DECIMAL(10,2), descrizione TEXT, data_movimento DATE, documento_riferimento VARCHAR(100) ); ```