@php
$gestioniTab = request()->query('gestioni_tab', 'gestioni');
$gestioniTab = in_array($gestioniTab, ['gestioni', 'periodi', 'straordinarie', 'archivio'], true) ? $gestioniTab : 'gestioni';
$baseUrl = \App\Filament\Pages\Condomini\StabilePage::getUrl(panel: 'admin-filament');
$mostraRiscaldamento = (bool) data_get($stabile->configurazione_avanzata, 'mostra_riscaldamento', false);
$mesi = [
1 => 'Gen', 2 => 'Feb', 3 => 'Mar', 4 => 'Apr', 5 => 'Mag', 6 => 'Giu',
7 => 'Lug', 8 => 'Ago', 9 => 'Set', 10 => 'Ott', 11 => 'Nov', 12 => 'Dic',
];
$gestioneSelezionata = $this->gestioneSelezionataId
? \App\Models\GestioneContabile::query()->find($this->gestioneSelezionataId)
: ($this->gestioneOrdinariaId ? \App\Models\GestioneContabile::query()->find($this->gestioneOrdinariaId) : null);
$gestioneTipo = $gestioneSelezionata?->tipo_gestione;
$checklistItems = \App\Models\ChecklistFineAnnoItem::query()
->where('is_active', true)
->orderBy('sort_order')
->get();
$straordinarie = \App\Models\GestioneContabile::query()
->where('stabile_id', $stabile->id)
->where('tipo_gestione', 'straordinaria')
->orderByDesc('anno_gestione')
->get();
$straordId = request()->integer('straord_id') ?: ($straordinarie->first()?->id ?? null);
$straord = $straordId ? $straordinarie->firstWhere('id', $straordId) : null;
$straordTab = request()->query('straord_tab', 'operazioni');
$straordTab = in_array($straordTab, ['operazioni', 'preventivo', 'rate', 'incassi', 'consuntivo'], true) ? $straordTab : 'operazioni';
$legacyCode = $stabile->codice_stabile ?? null;
$legacyYear = $straord?->anno_gestione;
$legacyStraordNum = $straord?->numero_straordinaria;
$legacyPreventivo = collect();
$legacyVociMap = [];
$tabellaMap = [];
foreach (\App\Models\TabellaMillesimale::query()->where('stabile_id', $stabile->id)->get() as $t) {
$keys = array_filter([
strtoupper(trim((string) ($t->codice_tabella ?? ''))),
strtoupper(trim((string) ($t->legacy_codice ?? ''))),
strtoupper(trim((string) ($t->nome_tabella ?? ''))),
]);
foreach ($keys as $key) {
$tabellaMap[$key] = $t;
}
}
if ($legacyCode && $legacyStraordNum && \Illuminate\Support\Facades\Schema::connection('gescon_import')->hasTable('prevent_straordinari')) {
$q = \Illuminate\Support\Facades\DB::connection('gescon_import')
->table('prevent_straordinari')
->where('cod_stabile', $legacyCode)
->where('n_stra', $legacyStraordNum);
if ($legacyYear && \Illuminate\Support\Facades\Schema::connection('gescon_import')->hasColumn('prevent_straordinari', 'legacy_year')) {
$q->where('legacy_year', (string) $legacyYear);
}
$legacyPreventivo = $q->get();
$codici = $legacyPreventivo->pluck('cod_spe')->filter()->unique()->values();
if ($codici->isNotEmpty() && \Illuminate\Support\Facades\Schema::connection('gescon_import')->hasTable('voc_spe')) {
$vq = \Illuminate\Support\Facades\DB::connection('gescon_import')
->table('voc_spe')
->where('cod_stabile', $legacyCode)
->whereIn('cod', $codici);
if ($legacyYear && \Illuminate\Support\Facades\Schema::connection('gescon_import')->hasColumn('voc_spe', 'legacy_year')) {
$vq->where('legacy_year', (string) $legacyYear);
}
$legacyVociMap = $vq->get()->keyBy('cod')->all();
}
}
@endphp
@if($gestioniTab === 'gestioni')
Elenco completo delle gestioni collegate allo stabile (aperte e chiuse), con sincronizzazione automatica degli anni ordinari dal legacy. La stessa anagrafica è disponibile anche in
GESCON → Gestioni .
@livewire(\App\Filament\Pages\Condomini\Components\GestioniStabileTable::class, ['scope' => 'all'])
@elseif($gestioniTab === 'periodi')
Imposta periodo e rate direttamente sulla gestione selezionata.
@if($gestioneSelezionata)
Gestione selezionata: {{ $gestioneSelezionata->anno_gestione }}
@endif
@if($gestioneSelezionata)
@endif
Checklist fine anno
@forelse($checklistItems as $item)
{{ $item->label }}
@if($item->action_url)
Apri
@endif
@empty
Nessun elemento checklist attivo.
@endforelse
@if($gestioneSelezionata)
@if($gestioneTipo === 'ordinaria')
@endif
@if($gestioneTipo === 'riscaldamento')
@endif
@if($gestioneTipo === 'straordinaria')
@endif
@endif
Salva gestione
Salva checklist
@elseif($gestioniTab === 'straordinarie')
Elenco delle gestioni straordinarie . Seleziona una spesa per gestire preventivo, rate e consuntivo.
@foreach($straordinarie as $g)
id === $straord->id)>
{{ $g->anno_gestione }} · {{ $g->denominazione ?: 'Straordinaria #' . ($g->numero_straordinaria ?? $g->id) }}
@endforeach
@if($straord)
Periodo: {{ $straord->data_inizio?->format('d/m/Y') ?? '—' }} → {{ $straord->data_fine?->format('d/m/Y') ?? '—' }}
@endif
@if($straord)
Rate da emettere
Mesi: {{ $straord->mesi_rate_straordinaria ? implode(', ', (array) $straord->mesi_rate_straordinaria) : '—' }}
@if(!empty($straord->piano_straordinario['numero_rate'] ?? null))
· Rate: {{ $straord->piano_straordinario['numero_rate'] }}
@endif
@if(!empty($straord->piano_straordinario['cadenza'] ?? null))
· Cadenza: {{ $straord->piano_straordinario['cadenza'] }}
@endif
@foreach(['operazioni' => 'Operazioni','preventivo' => 'Preventivo','rate' => 'Rate','incassi' => 'Incassi','consuntivo' => 'Consuntivo'] as $key => $label)
{{ $label }}
@endforeach
@if($straordTab === 'operazioni')
Operazioni collegate (da integrare con fatture/registrazioni).
@elseif($straordTab === 'preventivo')
Preventivo da legacy: prevent_straordinari + voc_spe
Cod. voce
Voce spesa
Tabella
Importo €
@forelse($legacyPreventivo as $row)
@php
$voce = $legacyVociMap[$row->cod_spe ?? ''] ?? null;
$tabellaCode = strtoupper((string) ($voce->tabella ?? ''));
$tabella = $tabellaMap[$tabellaCode] ?? null;
$importo = $row->importo_euro ?? $row->importo ?? ($voce->preventivo_euro ?? null);
@endphp
{{ $row->cod_spe ?? '—' }}
{{ $voce->descriz ?? '—' }}
{{ $tabella?->codice_tabella ?? $voce->tabella ?? '—' }}
@if($tabella?->denominazione)
{{ $tabella->denominazione }}
@endif
@if($tabella)
Apri tabelle
@endif
{{ $importo !== null ? number_format((float)$importo, 2, ',', '.') : '—' }}
@empty
Nessun preventivo legacy trovato.
@endforelse
@elseif($straordTab === 'rate')
Piano rate con scadenze e importi (da configurare).
@elseif($straordTab === 'incassi')
Incassi collegati alle rate (da integrare).
@else
Consuntivo da legacy: voc_spe.consuntivo_euro
Cod. voce
Voce spesa
Tabella
Consuntivo €
@forelse($legacyPreventivo as $row)
@php
$voce = $legacyVociMap[$row->cod_spe ?? ''] ?? null;
$tabellaCode = strtoupper((string) ($voce->tabella ?? ''));
$tabella = $tabellaMap[$tabellaCode] ?? null;
$cons = $voce->consuntivo_euro ?? null;
@endphp
{{ $row->cod_spe ?? '—' }}
{{ $voce->descriz ?? '—' }}
{{ $tabella?->codice_tabella ?? $voce->tabella ?? '—' }}
@if($tabella?->denominazione)
{{ $tabella->denominazione }}
@endif
@if($tabella)
Apri tabelle
@endif
{{ $cons !== null ? number_format((float)$cons, 2, ',', '.') : '—' }}
@empty
Nessun consuntivo legacy trovato.
@endforelse
@endif
@else
Nessuna gestione straordinaria disponibile.
@endif
@else
Archivio delle gestioni chiuse o consolidate . Nessun dato viene eliminato.
@livewire(\App\Filament\Pages\Condomini\Components\GestioniStabileTable::class, ['scope' => 'archivio'])
@endif
{{--
LEGACY/DEMO UI (disabilitata): mantenuta solo per riferimento.
--}}
{{--
Gestioni Contabili
Mostra solo le gestioni
aperte (non chiuse/consolidate). La stessa anagrafica è disponibile anche in
GESCON → Gestioni .
@livewire(\App\Filament\Pages\Condomini\Components\GestioniStabileTable::class)
Budget:
€{{ number_format($gestione['budget'], 2) }}
Speso:
€{{ number_format($gestione['speso'], 2) }}
@php
$percentuale = ($gestione['speso'] / $gestione['budget']) * 100;
@endphp
{{ number_format($percentuale, 1) }}% utilizzato
@endforeach
Gestioni Chiuse
@php
$gestioniChiuse = [
[
'nome' => 'Gestione Ordinaria 2024',
'tipo' => 'ordinaria',
'data_chiusura' => '2024-12-31',
'budget' => '14500.00',
'speso' => '14200.00',
'residuo' => '300.00'
],
[
'nome' => 'Rifacimento Tetto',
'tipo' => 'straordinaria',
'data_chiusura' => '2024-11-30',
'budget' => '25000.00',
'speso' => '24800.00',
'residuo' => '200.00'
]
];
@endphp
@foreach($gestioniChiuse as $gestione)
{{ $gestione['nome'] }}
Chiusa
Chiusa il {{ date('d/m/Y', strtotime($gestione['data_chiusura'])) }}
Budget
€{{ number_format($gestione['budget'], 0) }}
Speso
€{{ number_format($gestione['speso'], 0) }}
Residuo
€{{ number_format($gestione['residuo'], 0) }}
@endforeach
Spese Preventivate
Riepilogo delle spese previste per le gestioni attive
Gestione
Categoria
Importo
Utilizzato
Residuo
Ordinaria 2025
Pulizie
€3.600,00
€1.800,00
€1.800,00
Ordinaria 2025
Amministrazione
€4.800,00
€2.400,00
€2.400,00
Riscaldamento
Combustibile
€8.000,00
€6.200,00
€1.800,00
Spese Effettuate
Storico delle spese sostenute
@php
$speseRecenti = [
['data' => '2025-07-25', 'descrizione' => 'Pulizia scale luglio', 'importo' => '300.00', 'gestione' => 'Ordinaria'],
['data' => '2025-07-20', 'descrizione' => 'Manutenzione ascensore', 'importo' => '850.00', 'gestione' => 'Straordinaria'],
['data' => '2025-07-15', 'descrizione' => 'Bolletta gas riscaldamento', 'importo' => '1200.00', 'gestione' => 'Riscaldamento'],
['data' => '2025-07-10', 'descrizione' => 'Amministratore luglio', 'importo' => '400.00', 'gestione' => 'Ordinaria']
];
@endphp
@foreach($speseRecenti as $spesa)
{{ $spesa['descrizione'] }}
{{ date('d/m/Y', strtotime($spesa['data'])) }} • {{ $spesa['gestione'] }}
€{{ number_format($spesa['importo'], 2) }}
@endforeach
Mastrini di Spesa
Registri dettagliati per categoria di spesa
@php
$mastrini = [
['nome' => 'Pulizie', 'movimenti' => 24, 'totale' => '3600.00', 'colore' => 'blue'],
['nome' => 'Amministrazione', 'movimenti' => 12, 'totale' => '4800.00', 'colore' => 'green'],
['nome' => 'Ascensore', 'movimenti' => 8, 'totale' => '2400.00', 'colore' => 'yellow'],
['nome' => 'Riscaldamento', 'movimenti' => 15, 'totale' => '9200.00', 'colore' => 'red'],
['nome' => 'Manutenzioni', 'movimenti' => 18, 'totale' => '5800.00', 'colore' => 'purple'],
['nome' => 'Utenze', 'movimenti' => 36, 'totale' => '2900.00', 'colore' => 'indigo']
];
@endphp
@foreach($mastrini as $mastrino)
{{ $mastrino['nome'] }}
Movimenti:
{{ $mastrino['movimenti'] }}
Totale:
€{{ number_format($mastrino['totale'], 2) }}
Apri Mastrino →
@endforeach
Gestioni Disponibili
@php
// Dati di esempio per le gestioni
$gestioni = [
[
'id' => 1,
'nome' => 'Gestione Ordinaria',
'descrizione' => 'Amministrazione condominiale ordinaria',
'data_inizio' => '2024-01-01',
'data_fine' => null,
'stato' => 'attiva',
'tipo' => 'ordinaria',
'voci_associate' => 15
],
[
'id' => 2,
'nome' => 'Gestione Straordinaria',
'descrizione' => 'Lavori di manutenzione straordinaria',
'data_inizio' => '2024-03-15',
'data_fine' => '2024-12-31',
'stato' => 'attiva',
'tipo' => 'straordinaria',
'voci_associate' => 8
],
[
'id' => 3,
'nome' => 'Gestione Riscaldamento',
'descrizione' => 'Gestione separata per il riscaldamento',
'data_inizio' => '2024-01-01',
'data_fine' => null,
'stato' => 'attiva',
'tipo' => 'separata',
'voci_associate' => 5
]
];
@endphp
@foreach($gestioni as $gestione)
{{ $gestione['nome'] }}
{{ $gestione['voci_associate'] }} voci millesimali
{{ ucfirst($gestione['stato']) }}
{{ $gestione['tipo'] }}
@if($gestione['descrizione'])
{{ $gestione['descrizione'] }}
@endif
Dal {{ date('d/m/Y', strtotime($gestione['data_inizio'])) }}
@if($gestione['data_fine'])
al {{ date('d/m/Y', strtotime($gestione['data_fine'])) }}
@else
(in corso)
@endif
@endforeach
@if(count($gestioni) === 0)
Nessuna gestione configurata
Crea Prima Gestione
@endif
Dettagli Gestione
Gestione Ordinaria
Amministrazione condominiale ordinaria
Stato
Attiva
Tipo
Ordinaria
Data Inizio
01/01/2024
Data Fine
In corso
Voci Millesimali Associate
@php
$voci = [
'Spese Generali' => '1000.00',
'Pulizie Scale' => '150.00',
'Illuminazione' => '80.00',
'Ascensore' => '300.00',
'Portierato' => '250.00'
];
@endphp
@foreach($voci as $voce => $importo)
{{ $voce }}
€{{ $importo }}
@endforeach
Modifica
Aggiungi Voce
--}}