@php($stats = $this->stats) @php($contratti = $this->contrattiRows) @php($scadenze = $this->upcomingScadenze) @php($acqua = $this->acquaSnapshot) @php($acquaDiagnostics = $this->acquaExtractionDiagnostics)
Stabile

HUB Contratti {{ $this->stabileAttivo?->denominazione ? '· ' . $this->stabileAttivo->denominazione : '' }}

Qui registriamo il contratto, i riferimenti tecnici e le scadenze operative da inviare anche al calendario. Il collegamento documentale e contabile parte da qui.

Collegamenti
Fornitore, manutentore, servizio, utenza, documento e codici tecnici nello stesso record.
Contratti
{{ $stats['totale'] ?? 0 }}
Attivi
{{ $stats['attivi'] ?? 0 }}
Scadenze 45 gg
{{ $stats['scadenze'] ?? 0 }}
Documenti contratto
{{ $stats['documenti'] ?? 0 }}
Registro contratti MVP: contratto, riferimenti essenziali, documento principale e generazione scadenze.
@forelse($contratti as $contratto)
{{ $contratto->titolo }}
{{ strtoupper($contratto->stato) }} {{ $this->contractTypeLabel($contratto->tipo_contratto) }}
{{ $contratto->servizio_label ?: 'Servizio non specificato' }} @if($contratto->fornitore) · {{ $contratto->fornitore->ragione_sociale ?: trim(($contratto->fornitore->nome ?? '') . ' ' . ($contratto->fornitore->cognome ?? '')) }} @endif
Decorrenza: {{ $contratto->decorrenza_dal?->format('d/m/Y') ?: '—' }}
Fine: {{ $contratto->decorrenza_al?->format('d/m/Y') ?: ($contratto->rinnovo_automatico ? 'rinnovo automatico' : '—') }}
Frequenza: {{ $contratto->frequenza_scadenze ? str_replace('_', ' ', $contratto->frequenza_scadenze) : '—' }}
Codice
{{ $contratto->codice_contratto ?: '—' }}
Riferimento
{{ $contratto->riferimento_esterno ?: '—' }}
Importo
{{ $contratto->importo_periodico !== null ? '€ ' . number_format((float) $contratto->importo_periodico, 2, ',', '.') : '—' }}
Documento
{{ $contratto->documentoPrincipale?->numero_protocollo ?: ($contratto->documentoPrincipale?->nome ?: '—') }}
@if(!empty($contratto->codici_collegati))
@foreach($contratto->codici_collegati as $code) {{ $code['chiave'] ?? 'Dato' }}: {{ $code['valore'] ?? '—' }} @endforeach
@endif @if($contratto->note)
{{ $contratto->note }}
@endif
@empty
Nessun contratto registrato per lo stabile attivo.
@endforelse
Scadenze programmate Le nuove scadenze vengono registrate sulla tabella calendario operativa.
@forelse($scadenze as $scadenza)
{{ $scadenza->stabileContratto?->titolo ?: $scadenza->descrizione_sintetica }}
{{ $scadenza->stabileContratto?->tipo_contratto ? $this->contractTypeLabel($scadenza->stabileContratto->tipo_contratto) : 'Scadenza contratto' }}
{{ $scadenza->data_scadenza?->format('d/m/Y') ?: '—' }}
@if(!empty($scadenza->legacy_payload['codice_contratto']))
Codice: {{ $scadenza->legacy_payload['codice_contratto'] }}
@endif
@empty
Nessuna scadenza contrattuale registrata.
@endforelse
Acqua operativa Allineamento tra servizio acqua dello stabile e contratto registrato nell'hub.
Servizio
{{ $acqua['servizio_nome'] ?: 'Servizio acqua non configurato' }}
Fornitore: {{ $acqua['fornitore'] ?: '—' }}
Utenza: {{ $acqua['utenza'] ?: '—' }}
Cliente: {{ $acqua['cliente'] ?: '—' }}
Contratto: {{ $acqua['contratto'] ?: '—' }}
Matricola: {{ $acqua['matricola'] ?: '—' }}
Record HUB acqua: {{ $acqua['contratto_hub_id'] ? ('#' . $acqua['contratto_hub_id']) : 'non ancora registrato' }}
@if(auth()->user()?->hasAnyRole(['super-admin', 'admin']))
Diagnostica estrazione FE acqua
FE lette: {{ $acquaDiagnostics['counts']['totale'] ?? 0 }}
Con identificativi: {{ $acquaDiagnostics['counts']['con_identificativi'] ?? 0 }}
Con dati pagamento: {{ $acquaDiagnostics['counts']['con_pagamento'] ?? 0 }}
@if(!empty($acquaDiagnostics['latest']))
Ultima FE acqua estratta
{{ $acquaDiagnostics['latest']['numero_fattura'] ?: ('FE #' . $acquaDiagnostics['latest']['id']) }} · {{ $acquaDiagnostics['latest']['data_fattura'] ?: 'n/d' }}
Utenza {{ $acquaDiagnostics['latest']['utenza'] ?: '—' }} · Cliente {{ $acquaDiagnostics['latest']['cliente'] ?: '—' }}
Contratto {{ $acquaDiagnostics['latest']['contratto'] ?: '—' }} · Matricola {{ $acquaDiagnostics['latest']['matricola'] ?: '—' }}
CBILL {{ $acquaDiagnostics['latest']['cbill'] ?: '—' }} @if(!empty($acquaDiagnostics['latest']['codice_avviso']))· Avviso {{ $acquaDiagnostics['latest']['codice_avviso'] }}@endif @if(!empty($acquaDiagnostics['latest']['sia']))· SIA {{ $acquaDiagnostics['latest']['sia'] }}@endif
@endif @if(!empty($acquaDiagnostics['warnings']))
@foreach($acquaDiagnostics['warnings'] as $warning)
{{ $warning }}
@endforeach
@else
Nessun disallineamento evidente tra contratto acqua e ultimi dati estratti dalle FE.
@endif
@endif
Copertura dati
Per acqua, energia e altri impianti usa i codici collegati per registrare POD, PDR, matricole, codice cliente, numero utenza e riferimenti bolletta.
Il SIA resta sul fornitore; qui teniamo i dati specifici del singolo contratto dello stabile.
Il documento principale può essere un PDF già registrato nell’archivio documentale con categoria contratto.