@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)

Periodo gestione

@endif

Checklist fine anno

@forelse($checklistItems as $item) @empty
Nessun elemento checklist attivo.
@endforelse
@if($gestioneSelezionata)
@if($gestioneTipo === 'ordinaria')

Rate ordinaria

@foreach($mesi as $value => $label) @endforeach
@endif @if($gestioneTipo === 'riscaldamento')

Rate riscaldamento

@foreach($mesi as $value => $label) @endforeach
@endif @if($gestioneTipo === 'straordinaria')

Rate straordinarie

@foreach($mesi as $value => $label) @endforeach
@endif
@endif
@elseif($gestioniTab === 'straordinarie')
Elenco delle gestioni straordinarie. Seleziona una spesa per gestire preventivo, rate e consuntivo.
@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

Preventivo

Da definire

Consuntivo

Da definire
@if($straordTab === 'operazioni') Operazioni collegate (da integrare con fatture/registrazioni). @elseif($straordTab === 'preventivo')
Preventivo da legacy: prevent_straordinari + voc_spe
@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 @empty @endforelse
Cod. voce Voce spesa Tabella Importo €
{{ $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, ',', '.') : '—' }}
Nessun preventivo legacy trovato.
@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
@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 @empty @endforelse
Cod. voce Voce spesa Tabella Consuntivo €
{{ $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, ',', '.') : '—' }}
Nessun consuntivo legacy trovato.
@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

@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

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

@endif

Dettagli Gestione

Gestione Ordinaria

Amministrazione condominiale ordinaria

Attiva
Ordinaria
01/01/2024
In corso
Statistiche
15
Voci Millesimali
€12.450
Budget Totale
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
--}}