netgescon-master/docs/02-architettura-laravel/04-gestione-finanziaria/ANALISI-GESTIONE-FINANZIARIA.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

643 lines
21 KiB
Markdown

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