@include('filament.components.page-breadcrumbs', [ 'breadcrumbs' => [ ['label' => 'Condomini', 'url' => route('admin.dashboards.condomini')], ['label' => 'Unità immobiliari', 'url' => \App\Filament\Pages\Condomini\UnitaImmobiliariArchivio::getUrl(panel: 'admin-filament')], ['label' => 'Scheda unità'], ], 'backUrl' => $this->getBackUrl(), 'backLabel' => 'Torna indietro', ]) @php $unitaOptions = $this->getUnitaOptions(); $prevUrl = $this->getPrevUnitaUrl(); $nextUrl = $this->getNextUnitaUrl(); $visibilityOptions = [ 'attive' => 'Attive', 'tutte' => 'Tutte', 'archiviate' => 'Archiviate', ]; @endphp
Prec. @if($prevUrl) @else @endif
Unità
{{ $this->getSchema('unitaPicker') }}
Succ. @if($nextUrl) @else @endif
Visibilità: @foreach($visibilityOptions as $key => $label) @endforeach
@if(!$unita)
Nessuna unità immobiliare trovata.
@else {{-- Header compatto --}} @php $isArchivedUnita = method_exists($unita, 'trashed') && $unita->trashed(); @endphp
Unità immobiliare @if($isArchivedUnita) Archiviata @endif
@php $labelUnita = (string) ($unita->denominazione ?? ''); if ($labelUnita !== '' && preg_match('/^\s*area\s+condominiale\s*$/i', $labelUnita)) { $labelUnita = ''; } $condominoDaCondomin = trim((string) ($this->getLegacyCondominoRiferimentoNome() ?? '')); $proprietariAttivi = collect($relazioniPerTipo['proprietari'] ?? []); $condominoRiferimento = $proprietariAttivi ->first(fn (array $relazione): bool => strtolower(trim((string) ($relazione['tipo_raw'] ?? ''))) !== 'comproprietario') ?? ($relazioniPerTipo['proprietari'][0] ?? null); $condominoNome = $condominoDaCondomin !== '' ? $condominoDaCondomin : (string) ($condominoRiferimento['nome'] ?? ''); $condominoCf = trim((string) ($this->getLegacyCondominoRiferimentoCodiceFiscale() ?? '')); if ($condominoCf === '') { $condominoCf = (string) ($condominoRiferimento['codice_fiscale'] ?? ''); } $inquilinoNome = (string) ($relazioniPerTipo['inquilini'][0]['nome'] ?? ''); $comproprietariCount = $proprietariAttivi ->filter(fn (array $relazione): bool => strtolower(trim((string) ($relazione['tipo_raw'] ?? ''))) === 'comproprietario') ->count(); $labelStoricoScaduto = $labelUnita !== '' && collect($nominativiStorici ?? [])->contains(function (array $nominativo) use ($labelUnita, $condominoNome, $inquilinoNome): bool { $nome = trim((string) ($nominativo['nominativo'] ?? '')); return $nome !== '' && trim($labelUnita) === $nome && trim($labelUnita) !== trim($condominoNome) && trim($labelUnita) !== trim($inquilinoNome); }); if ($labelUnita === '' || $labelStoricoScaduto) { $labelUnita = (string) ($unita->codice_unita ?? $unita->codice_completo ?? 'Unità'); } @endphp @if($labelUnita !== '' && $condominoNome !== '' && trim($labelUnita) !== trim($condominoNome))
{{ $labelUnita }}
@endif
C Condomino: {{ $condominoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $condominoNome)) : '—' }}
@if($comproprietariCount > 0)
Comproprietari collegati: {{ $comproprietariCount }}
@endif
I Inquilino: {{ $inquilinoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $inquilinoNome)) : '—' }}
{{ trim(($unita->indirizzo ?? '').' '.($unita->civico ?? '').' '.($unita->comune ?? '')) }}
@php $rateCondominiHeader = $rateEmessePerCategoria['condomini'] ?? []; $rateInquiliniHeader = $rateEmessePerCategoria['inquilini'] ?? []; $sumHeader = function (array $items, string $field): float { $s = 0.0; foreach ($items as $it) { $s += (float) ($it[$field] ?? 0); } return $s; }; $totCAddebH = $sumHeader($rateCondominiHeader, 'totale_addebitato'); $totCPagH = $sumHeader($rateCondominiHeader, 'totale_pagato'); $totCResH = $sumHeader($rateCondominiHeader, 'residuo'); $totIAddebH = $sumHeader($rateInquiliniHeader, 'totale_addebitato'); $totIPagH = $sumHeader($rateInquiliniHeader, 'totale_pagato'); $totIResH = $sumHeader($rateInquiliniHeader, 'residuo'); $hasInquilino = !empty($relazioniPerTipo['inquilini'][0]['nome'] ?? null); if (empty($rateCondominiHeader) && empty($rateInquiliniHeader) && !$hasInquilino) { $totCAddebH = (float) collect($estrattoCompattoRateRows ?? [])->sum(fn (array $row): float => (float) ($row['dovuto'] ?? 0)); $totCPagH = (float) collect($estrattoCompattoIncassi ?? [])->sum(fn (array $row): float => (float) ($row['importo'] ?? 0)); $totCResH = round($totCAddebH - $totCPagH, 2); } @endphp
Condomino di riferimento
{{ $condominoNome !== '' ? $condominoNome : '—' }}
CF: {{ $condominoCf !== '' ? $condominoCf : '—' }}
Inquilino
{{ $inquilinoNome !== '' ? $inquilinoNome : '—' }}
CF: {{ $relazioniPerTipo['inquilini'][0]['codice_fiscale'] ?? '—' }}
Estratto rapido
{{-- Tabs + contenuto --}}
@php $tabs = [ 'riepilogo' => ['icon' => 'heroicon-o-rectangle-group', 'label' => 'Riepilogo'], 'catasto' => ['icon' => 'heroicon-o-building-office-2', 'label' => 'Catasto'], 'comproprietari' => ['icon' => 'heroicon-o-users', 'label' => 'Comproprietari ed Aventi Diritto'], 'preferenze' => ['icon' => 'heroicon-o-envelope', 'label' => 'Comunicazioni e Canali di Invio'], 'millesimi' => ['icon' => 'heroicon-o-chart-pie', 'label' => 'Tabelle millesimali'], 'persone' => ['icon' => 'heroicon-o-user-group', 'label' => 'Persone collegate'], 'acqua' => ['icon' => 'heroicon-o-beaker', 'label' => 'Acqua'], 'estratto' => ['icon' => 'heroicon-o-document-text', 'label' => 'Estratto conto'], 'economico' => ['icon' => 'heroicon-o-banknotes', 'label' => 'Economico'], ]; @endphp @foreach($tabs as $key => $cfg) @endforeach
@if($tab === 'riepilogo')
Indicatori principali Superficie, millesimi, percentuale, valore
@foreach([ ['Superficie', ($unita->superficie_commerciale ?? 0) . ' m²'], ['Millesimi', $unita->millesimi_proprieta ?? $unita->millesimi_generali ?? 0], ['Percentuale', ($unita->millesimi_proprieta ?? $unita->millesimi_generali) ? number_format((($unita->millesimi_proprieta ?? $unita->millesimi_generali)/1000)*100,2) . '%' : '0%'], ['Valore stimato', ($unita->valore_commerciale_stimato ?? 0) . ' €'], ] as [$label, $value])
{{ $label }}
{{ $value }}
@endforeach
Identificazione Tipologia e stato
@foreach([ ['Tipologia', $unita->tipo_unita ?? 'ND'], ['Stato occupazione', $unita->stato_occupazione ?? 'ND'], ['Utilizzo', $unita->utilizzo_attuale ?? 'ND'], ['Codice stabile', $unita->stabile?->codice_operatore ?? $unita->stabile?->codice_stabile ?? 'ND'], ] as [$label, $value])
{{ $label }}
{{ $value }}
@endforeach
Persone collegate Proprietari, inquilini, altri
@foreach([ 'inquilini' => ['label' => 'Inquilini', 'color' => 'text-sky-700'], 'altri' => ['label' => 'Altri soggetti', 'color' => 'text-gray-700'], ] as $key => $cfg) @php $relazioni = $relazioniPerTipo[$key] ?? []; @endphp
{{ $cfg['label'] }} ({{ count($relazioni) }})
@if(empty($relazioni))
Nessun soggetto.
@else
@foreach($relazioni as $relazione) @php $tipoRawRelazione = strtolower(trim((string) ($relazione['tipo_raw'] ?? ''))); $roleBadge = null; if ($key === 'proprietari') { $roleBadge = $tipoRawRelazione === 'comproprietario' ? 'Comproprietario' : 'Condomino di riferimento'; } @endphp
{{ $relazione['nome'] }}
@if($roleBadge) {{ $roleBadge }} @endif
CF: {{ $relazione['codice_fiscale'] ?? '—' }}
Quota: {{ $relazione['quota_label'] ?? '—' }}%
@php $dal = $relazione['data_inizio'] ?? null; $al = $relazione['data_fine'] ?? null; @endphp
Periodo: @if($dal || $al) @if($dal) Da {{ $dal }} @endif @if($al) · fino a {{ $al }} @endif @else Da sempre @endif
@if(!empty($relazione['ruolo_rate']))
Ruolo rate: ({{ $relazione['ruolo_rate'] }})
@endif
@endforeach
@endif
@endforeach
Recapiti email per servizio
@if(empty($recapitiServizio))
Nessun recapito email disponibile.
@else
@foreach($recapitiServizio as $service)
{{ $service['label'] ?? 'Servizio' }}
@if(empty($service['rows']))
Nessun recapito risolto.
@else
@foreach($service['rows'] as $recipient)
{{ $recipient['email'] ?? '—' }}
{{ $recipient['persona'] ?: 'Recapito unità' }} · {{ $recipient['sourceLabel'] ?? 'Anagrafica persona' }}
@endforeach
@endif
@endforeach
@endif
Nominativi storici (legacy)
@if(empty($nominativiStorici))
Nessun nominativo storico disponibile.
@else
@foreach($nominativiStorici as $nominativo) @endforeach
Ruolo Nominativo Periodo Quota
{{ $nominativo['ruolo'] ?? '—' }}
{{ $nominativo['nominativo'] ?? '—' }}
@if(!empty($nominativo['fonte']))
Fonte: {{ $nominativo['fonte'] }}
@endif @if(!empty($nominativo['detail']))
{{ $nominativo['detail'] }}
@endif
{{ $nominativo['periodo'] ?? '—' }} {{ $nominativo['percentuale'] ?? '—' }}
@endif
@endif @if($tab === 'catasto') Dati catastali Risultanze catastali ed identificativi ufficiali consolidati
Sezione Urbana: {{ $unita->sezione_urbana ?? '—' }}
Foglio: {{ $unita->foglio ?? '—' }}
Particella: {{ $unita->particella ?? '—' }}
Subalterno: {{ $unita->subalterno ?? '—' }}
Categoria: {{ \App\Filament\Pages\Condomini\CatastoHub::formattaCategoriaCatastale($unita->categoria_catastale ?? '') ?: '—' }}
Classe: {{ $unita->classe ?? '—' }}
Consistenza: {{ ($unita->superficie && str_starts_with(\App\Filament\Pages\Condomini\CatastoHub::estraiCodiceCompatto($unita->categoria_catastale ?? ''), 'C')) ? ($unita->superficie . ' m²') : ($unita->numero_vani ? ($unita->numero_vani . ' vani') : ($unita->vani ? ($unita->vani . ' vani') : '—')) }}
Rendita Euro: {{ $unita->rendita_catastale ? '€ ' . number_format($unita->rendita_catastale, 2, ',', '.') : '—' }}
Piano AdE: {{ $unita->piano ?? '—' }}
idImmobile: {{ $unita->codice_univoco ?? '—' }}
@endif @if($tab === 'comproprietari') Comproprietari ed Aventi Diritto Elenco analitico dei soggetti con titolo reale o quota di possesso sull'immobile
@php $comproprietari = $relazioniPerTipo['proprietari'] ?? []; @endphp @if(empty($comproprietari))
Nessun proprietario registrato.
@else
@foreach($comproprietari as $p) @endforeach
Soggetto / Nominativo Codice Fiscale Titolo / Diritto Quota Proprietà Periodo di Possesso
{{ $p['nome'] }} {{ $p['codice_fiscale'] ?? '—' }} {{ $p['tipo'] ?? 'Proprietà' }} {{ $p['quota_label'] ?? ($p['percentuale_label'] ?? '—') }}% @if(($p['data_inizio'] ?? null) || ($p['data_fine'] ?? null)) @if($p['data_inizio'] ?? null) Da {{ $p['data_inizio'] }} @endif @if($p['data_fine'] ?? null) Fino a {{ $p['data_fine'] }} @endif @else Da sempre @endif
@endif
@endif @if($tab === 'preferenze') Comunicazioni e Canali di Invio Preferenze di spedizione e canali digitali ufficiali per proprietari e comproprietari
@if(empty($canaliComunicazione))
Nessun proprietario o comproprietario registrato per questa unità.
@else
@foreach($canaliComunicazione as $soggettoId => $p) @endforeach
Soggetto / Nominativo Convocazione Assemblea Invio Verbali Solleciti e Rate
{{ $p['nominativo'] }}
{{ $p['codice_fiscale'] ?? '—' }}
@endif
@endif @if($tab === 'millesimi')
Tabelle millesimali assegnate
@php $gruppi = [ 'ordinarie' => 'ORDINARIE', 'riscaldamento' => 'RISCALDAMENTO', 'straordinarie' => 'STRAORDINARIE', ]; @endphp @foreach($gruppi as $key => $label) @endforeach
@if(empty($millesimiPerTabella))
Nessuna tabella millesimale associata.
@else @php $selectedGruppo = $millesimiGruppo ?? 'ordinarie'; $filteredMillesimi = array_values(array_filter($millesimiPerTabella, fn ($r) => ($r['gruppo'] ?? 'ordinarie') === $selectedGruppo)); @endphp
@forelse($filteredMillesimi as $r) @php $tipo = $r['tipo'] ?? 'altro'; $tipoLabel = $tipo; $tipoLabel = str_replace('_', ' ', (string) $tipoLabel); $tipoLabel = ucwords($tipoLabel); $prevTipo = $loop->first ? null : ($filteredMillesimi[$loop->index - 1]['tipo'] ?? 'altro'); @endphp @if($loop->first || $tipo !== $prevTipo) @endif @empty @endforelse
Tabella Denominazione Millesimi
{{ $tipoLabel }}
{{ $r['codice'] }} {{ $r['nome'] }} {{ number_format($r['millesimi'], 4, ',', '.') }}
Nessun millesimo presente
@endif
@endif @if($tab === 'persone')
Persone collegate
@php $blocchiRelazioni = [ 'proprietari' => ['label' => 'Proprietari / comproprietari', 'class' => 'text-primary-700'], 'inquilini' => ['label' => 'Inquilini / conduttori', 'class' => 'text-sky-700'], 'altri' => ['label' => 'Altri soggetti collegati', 'class' => 'text-gray-700'], ]; @endphp
@foreach($blocchiRelazioni as $key => $cfg) @php $relazioni = $relazioniPerTipo[$key] ?? []; @endphp
{{ $cfg['label'] }} ({{ count($relazioni) }})
@if(empty($relazioni))
Nessun soggetto collegato.
@else
@foreach($relazioni as $relazione)
{{ $relazione['tipo'] ?? 'Relazione' }}
{{ $relazione['nome'] }}
CF: {{ $relazione['codice_fiscale'] ?? '—' }}
Quota: {{ $relazione['quota_label'] ?? '—' }}%
@if(!empty($relazione['telefono']))
Telefono: {{ $relazione['telefono'] }}
@endif @if(!empty($relazione['email']))
Email: {{ $relazione['email'] }}
@endif @if(!empty($relazione['data_inizio']) || !empty($relazione['data_fine']))
Periodo: @if(!empty($relazione['data_inizio'])) Da {{ $relazione['data_inizio'] }} @endif @if(!empty($relazione['data_fine'])) · fino a {{ $relazione['data_fine'] }} @endif
@endif @if(!empty($relazione['rubrica_url'])) @endif
@endforeach
@endif
@endforeach
Recapiti email per servizio
@if(empty($recapitiServizio))
Nessun recapito email disponibile.
@else
@foreach($recapitiServizio as $service)
{{ $service['label'] ?? 'Servizio' }}
@if(empty($service['rows']))
Nessun recapito risolto.
@else
@foreach($service['rows'] as $recipient)
{{ $recipient['email'] ?? '—' }}
{{ $recipient['persona'] ?: 'Recapito unità' }}
Origine: {{ $recipient['sourceLabel'] ?? 'Anagrafica persona' }}
@endforeach
@endif
@endforeach
@endif
@endif @if($tab === 'acqua')
Storico letture acqua unità Andamento letture, consumi e richieste legate a questa utenza immobiliare.
Letture registrate
{{ number_format((int) ($acquaStats['totale_letture'] ?? 0), 0, ',', '.') }}
Consumi storici
{{ number_format((float) ($acquaStats['totale_consumi_mc'] ?? 0), 3, ',', '.') }} mc
Ultima lettura
{{ isset($acquaStats['ultima_lettura']) && $acquaStats['ultima_lettura'] !== null ? number_format((float) $acquaStats['ultima_lettura'], 3, ',', '.') : '—' }}
{{ $acquaStats['ultima_data'] ?? 'nessuna data' }}
Richieste aperte
{{ number_format((int) ($acquaStats['richieste_aperte'] ?? 0), 0, ',', '.') }}
Utenza acqua collegata
Servizio: {{ $acquaStats['servizio_label'] ?? 'non configurato' }}
Matricola: {{ $acquaStats['matricola'] ?? '—' }}
Seriale unità: {{ $unita->acqua_contatore_seriale ?? '—' }}
Gateway ID: {{ $unita->acqua_gateway_device_id ?? '—' }}
Codice utenza: {{ $acquaStats['utenza'] ?? '—' }}
Contratto: {{ $acquaStats['contratto'] ?? '—' }}
Azioni rapide
@if(!empty($acquaQuickLinks['ticket_light'])) Nuova lettura unità @endif @if(!empty($acquaQuickLinks['archivio'])) Archivio letture @endif @if(!empty($acquaQuickLinks['hub_stabile'])) Campagna stabile @endif
Dettaglio letture e consumi nel tempo Storico operativo della singola unità con canale di arrivo, riferimento e protocollo.
@forelse($acquaLettureStorico as $row) @empty @endforelse
Data Periodo Lett. iniziale Lett. finale Consumo Canale / stato Riferimento
{{ $row['data'] ?: '—' }} {{ $row['periodo'] ?: '—' }} {{ isset($row['lettura_inizio']) && $row['lettura_inizio'] !== null ? number_format((float) $row['lettura_inizio'], 3, ',', '.') : '—' }} {{ isset($row['lettura_fine']) && $row['lettura_fine'] !== null ? number_format((float) $row['lettura_fine'], 3, ',', '.') : '—' }} {{ isset($row['consumo_valore']) && $row['consumo_valore'] !== null ? number_format((float) $row['consumo_valore'], 3, ',', '.') . ' ' . ($row['consumo_unita'] ?? 'mc') : '—' }}
{{ $row['canale'] ?: '—' }}
{{ $row['workflow'] ?: '—' }} @if(!empty($row['protocollo'])) · {{ $row['protocollo'] }} @endif
{{ $row['riferimento'] ?: '—' }}
@if(!empty($row['fattura_label']))
{{ $row['fattura_label'] }}
@endif
Nessuna lettura acqua registrata per questa unità.
@php $tabelleAcqua = collect($preventiviPerTabella)->filter(fn($t) => str_starts_with(strtoupper($t['codice'] ?? ''), 'AC'))->values(); $ripartiAcqua = collect($ripartizioniPerTabella)->filter(fn($t) => str_starts_with(strtoupper($t['tabella_codice'] ?? ''), 'AC'))->values(); @endphp @if($tabelleAcqua->isNotEmpty())

Millesimi e Quote Acqua di Preventivo

@foreach($tabelleAcqua as $tabella)
{{ $tabella['codice'] }} · {{ $tabella['nome'] }}
Totale tabella
{{ number_format($tabella['total_preventivo'], 2, ',', '.') }} €
@foreach($tabella['voci'] as $voce) @endforeach
Voce Preventivo Quota unità Prop. Inquilino % Prop. % Inq.
{{ $voce['codice'] }} · {{ $voce['descrizione'] }} {{ number_format($voce['importo_preventivato'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['quota_unita'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['importo_proprietario'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['importo_inquilino'] ?? 0, 2, ',', '.') }} € {{ number_format(100.00 - ($voce['percentuale_inquilino'] ?? 0), 2, ',', '.') }} % {{ number_format($voce['percentuale_inquilino'] ?? 0, 2, ',', '.') }} %
@endforeach
@endif @if($ripartiAcqua->isNotEmpty())

Millesimi e Quote Acqua di Consuntivo

@foreach($ripartiAcqua as $tabella)
{{ $tabella['tabella_codice'] }} {{ $tabella['tabella_nome'] }}
@foreach($tabella['righe'] as $r) @endforeach
Voce Gestione Calcolo % applicata Quota finale % prop % inquilino Prop. Inq.
{{ $r['voce_codice'] ?? '—' }} {{ $r['voce_descrizione'] ?? '' }} {{ $r['tipo_gestione'] ?? '—' }} {{ $r['calcolo'] ?? '—' }} {{ number_format($r['percentuale_applicata'] ?? 0, 2, ',', '.') }}% {{ number_format($r['quota_finale'] ?? 0, 4, ',', '.') }} {{ number_format(100.00 - ($r['percentuale_inquilino'] ?? 0), 2, ',', '.') }}% {{ number_format($r['percentuale_inquilino'] ?? 0, 2, ',', '.') }}% {{ number_format($r['importo_proprietario'] ?? 0, 4, ',', '.') }} {{ number_format($r['importo_inquilino'] ?? 0, 4, ',', '.') }}
@endforeach
@endif
@endif @if($tab === 'economico')
{{-- Contenuti economici: preventivi/riparti (rate emesse spostate nel tab Estratto conto) --}} @if(!empty($preventiviPerTabella))
Preventivo per tabella
Quote unità e riparto proprietario/inquilino (dett_tab cond_inquil).
@if(!empty($totaliPerGestione))
O: {{ number_format($totaliPerGestione['O'] ?? 0, 2, ',', '.') }} € R: {{ number_format($totaliPerGestione['R'] ?? 0, 2, ',', '.') }} € S: {{ number_format($totaliPerGestione['S'] ?? 0, 2, ',', '.') }} €
@endif
@foreach($preventiviPerTabella as $tabella) @if(str_starts_with(strtoupper($tabella['codice'] ?? ''), 'AC')) @continue @endif
{{ $tabella['tabella_codice'] }} · tipo {{ $tabella['tipo'] }}
{{ $tabella['tabella_nome'] }}
Totale tabella
{{ number_format($tabella['total_preventivo'], 2, ',', '.') }} €
@foreach($tabella['voci'] as $voce) @endforeach
Voce Preventivo Quota unità Prop. Inquilino % Prop. % Inq.
{{ $voce['codice'] }} · {{ $voce['descrizione'] }} {{ number_format($voce['importo_preventivato'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['quota_unita'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['importo_proprietario'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['importo_inquilino'] ?? 0, 2, ',', '.') }} € {{ number_format($voce['percentuale_inquilino'] ?? 0, 2, ',', '.') }} %
Millesimi unità / tabella
{{ number_format($tabella['unit_millesimi'], 3, ',', '.') }} / {{ number_format($tabella['tabella_millesimi'], 3, ',', '.') }}
Quota unità
{{ number_format($tabella['quota_unit'], 2, ',', '.') }} €
Riparto proprietario / inquilino
{{ number_format($tabella['importo_proprietario'], 2, ',', '.') }} € / {{ number_format($tabella['importo_inquilino'], 2, ',', '.') }} €
% inquilino: {{ number_format($tabella['percentuale_inquilino'] ?? 0, 2, ',', '.') }}
@endforeach
@endif
Voci di spesa per tabella (prop. / inq.)
@if(empty($ripartizioniPerTabella))
Nessuna ripartizione registrata per questa unità.
@else
@foreach($ripartizioniPerTabella as $tabella) @if(str_starts_with(strtoupper($tabella['tabella_codice'] ?? ''), 'AC')) @continue @endif
{{ $tabella['tabella_codice'] }} {{ $tabella['tabella_nome'] }}
@foreach($tabella['righe'] as $r) @endforeach
Voce Gestione Calcolo % applicata Quota finale % prop % inquilino Prop. Inq.
{{ $r['voce_codice'] ?? '—' }} {{ $r['voce_descrizione'] ?? '' }} {{ $r['tipo_gestione'] ?? '—' }} {{ $r['calcolo'] ?? '—' }} {{ number_format($r['percentuale_applicata'] ?? 0, 2, ',', '.') }}% {{ number_format($r['quota_finale'] ?? 0, 4, ',', '.') }} {{ number_format(100.00 - ($r['percentuale_inquilino'] ?? 0), 2, ',', '.') }}% {{ number_format($r['percentuale_inquilino'] ?? 0, 2, ',', '.') }}% {{ number_format($r['importo_proprietario'] ?? 0, 4, ',', '.') }} {{ number_format($r['importo_inquilino'] ?? 0, 4, ',', '.') }}
@endforeach
@if($tab === 'estratto') @php $rateCondomini = $rateEmessePerCategoria['condomini'] ?? []; $rateInquilini = $rateEmessePerCategoria['inquilini'] ?? []; $sumBlk = function (array $items, string $field): float { $s = 0.0; foreach ($items as $it) { $s += (float) ($it[$field] ?? 0); } return $s; }; $totCAddeb = $sumBlk($rateCondomini, 'totale_addebitato'); $totCPag = $sumBlk($rateCondomini, 'totale_pagato'); $totCRes = $sumBlk($rateCondomini, 'residuo'); $totIAddeb = $sumBlk($rateInquilini, 'totale_addebitato'); $totIPag = $sumBlk($rateInquilini, 'totale_pagato'); $totIRes = $sumBlk($rateInquilini, 'residuo'); if (empty($rateCondomini) && empty($rateInquilini)) { $totCAddeb = (float) collect($estrattoRateRowsProprietario ?? [])->sum('dovuto'); $totCPag = (float) collect($estrattoIncassiProprietario ?? [])->sum('importo'); $totCRes = $totCAddeb - $totCPag; $totIAddeb = (float) collect($estrattoRateRowsInquilino ?? [])->sum('dovuto'); $totIPag = (float) collect($estrattoIncassiInquilino ?? [])->sum('importo'); $totIRes = $totIAddeb - $totIPag; } @endphp
Estratto Conto PROPRIETARIO (Condòmino - C)
Addebito: {{ number_format($totCAddeb, 2, ',', '.') }} € · Pagato: {{ number_format($totCPag, 2, ',', '.') }} € · Residuo: {{ number_format($totCRes, 2, ',', '.') }} €
@php $movimentiC = []; $seenC = []; foreach ($estrattoRateRowsProprietario ?? [] as $r) { $k = ($r['gestione']??'').'|'.($r['data_emissione']??'').'|'.($r['descrizione']??'').'|'.number_format((float)($r['dovuto']??0), 2, '.', ''); if(isset($seenC[$k])) continue; $seenC[$k] = true; $movimentiC[] = [ 'tipo' => 'rata', 'data' => $r['data_emissione'] ?? null, 'descrizione' => $r['descrizione'] ?? '', 'ref' => !empty($r['avviso']) ? ('Avv. ' . $r['avviso']) : '', 'dovuto' => (float)$r['dovuto'], 'incasso' => (float)$r['pagato'], 'residuo' => (float)$r['residuo'], 'gestione' => $r['gestione'] ?? 'Ordinaria', ]; } foreach ($estrattoIncassiProprietario ?? [] as $i) { $k = ($i['data']??'').'|'.($i['descrizione']??'').'|'.number_format((float)($i['importo']??0), 2, '.', ''); if(isset($seenC[$k])) continue; $seenC[$k] = true; $movimentiC[] = [ 'tipo' => 'incasso', 'data' => $i['data'] ?? null, 'descrizione' => $i['descrizione'] ?? '', 'ref' => !empty($i['n_ricevuta']) ? ('Ric. ' . $i['n_ricevuta']) : '', 'dovuto' => null, 'incasso' => (float)$i['importo'], 'residuo' => null, 'gestione' => $i['gestione'] ?? 'Ordinaria', ]; } foreach ($estrattoConguagliIniziali ?? [] as $c) { $importo = (float)($c['importo'] ?? 0); if(abs($importo) < 0.0001) continue; $movimentiC[] = [ 'tipo' => 'conguaglio', 'data' => $c['data'] ?? null, 'descrizione' => $c['descrizione'] ?? '', 'ref' => trim(($c['gestione_label'] ?? '') . ' ' . ($c['tipo'] ?? '')), 'dovuto' => $importo, 'incasso' => null, 'residuo' => $importo, 'gestione' => $c['gestione_label'] ?? 'Ordinaria', ]; } usort($movimentiC, function($a, $b){ $da = $a['data'] ? \Carbon\Carbon::createFromFormat('d/m/Y', $a['data'])->timestamp : 0; $db = $b['data'] ? \Carbon\Carbon::createFromFormat('d/m/Y', $b['data'])->timestamp : 0; return $da <=> $db; }); @endphp @if(empty($movimentiC))
Nessuna rata o incasso registrato per il proprietario.
@else
@foreach($movimentiC as $m) @endforeach
Data Tipo Descrizione Rif. Dovuto Pagato Residuo
{{ $m['data'] ?? '—' }} {{ $m['tipo'] === 'rata' ? 'Rata' : ($m['tipo'] === 'conguaglio' ? 'Conguaglio' : 'Incasso') }} {{ $m['descrizione'] }} {{ $m['ref'] ?: '—' }} {{ $m['dovuto'] !== null ? number_format($m['dovuto'], 2, ',', '.') . ' €' : '—' }} {{ $m['incasso'] !== null ? number_format($m['incasso'], 2, ',', '.') . ' €' : '—' }} {{ $m['residuo'] !== null ? number_format($m['residuo'], 2, ',', '.') . ' €' : '—' }}
@endif @if(!empty($rateCondomini))
Schede anagrafiche collegate:
@foreach($rateCondomini as $rc) @php $sid = (int) ($rc['soggetto_id'] ?? 0); $url = $sid > 0 ? \App\Filament\Pages\Contabilita\EstrattoContoSoggetto::getUrl(panel: 'admin-filament', parameters: ['record' => $sid]) . '?' . http_build_query(['vista' => 'unita', 'unita_id' => (int) ($this->unita?->id ?? 0)]) : null; @endphp
{{ $rc['nome'] }}
Addebito: {{ number_format($rc['totale_addebitato'], 2, ',', '.') }} €
@if($url) Apri scheda @endif
@endforeach
@endif
Estratto Conto CONDUTTORE (Inquilino - I)
Addebito: {{ number_format($totIAddeb, 2, ',', '.') }} € · Pagato: {{ number_format($totIPag, 2, ',', '.') }} € · Residuo: {{ number_format($totIRes, 2, ',', '.') }} €
@php $movimentiI = []; $seenI = []; foreach ($estrattoRateRowsInquilino ?? [] as $r) { $k = ($r['gestione']??'').'|'.($r['data_emissione']??'').'|'.($r['descrizione']??'').'|'.number_format((float)($r['dovuto']??0), 2, '.', ''); if(isset($seenI[$k])) continue; $seenI[$k] = true; $movimentiI[] = [ 'tipo' => 'rata', 'data' => $r['data_emissione'] ?? null, 'descrizione' => $r['descrizione'] ?? '', 'ref' => !empty($r['avviso']) ? ('Avv. ' . $r['avviso']) : '', 'dovuto' => (float)$r['dovuto'], 'incasso' => (float)$r['pagato'], 'residuo' => (float)$r['residuo'], 'gestione' => $r['gestione'] ?? 'Ordinaria', ]; } foreach ($estrattoIncassiInquilino ?? [] as $i) { $k = ($i['data']??'').'|'.($i['descrizione']??'').'|'.number_format((float)($i['importo']??0), 2, '.', ''); if(isset($seenI[$k])) continue; $seenI[$k] = true; $movimentiI[] = [ 'tipo' => 'incasso', 'data' => $i['data'] ?? null, 'descrizione' => $i['descrizione'] ?? '', 'ref' => !empty($i['n_ricevuta']) ? ('Ric. ' . $i['n_ricevuta']) : '', 'dovuto' => null, 'incasso' => (float)$i['importo'], 'residuo' => null, 'gestione' => $i['gestione'] ?? 'Ordinaria', ]; } usort($movimentiI, function($a, $b){ $da = $a['data'] ? \Carbon\Carbon::createFromFormat('d/m/Y', $a['data'])->timestamp : 0; $db = $b['data'] ? \Carbon\Carbon::createFromFormat('d/m/Y', $b['data'])->timestamp : 0; return $da <=> $db; }); @endphp @if(empty($movimentiI))
Nessuna rata o incasso registrato per l'inquilino.
@else
@foreach($movimentiI as $m) @endforeach
Data Tipo Descrizione Rif. Dovuto Pagato Residuo
{{ $m['data'] ?? '—' }} {{ $m['tipo'] === 'rata' ? 'Rata' : 'Incasso' }} {{ $m['descrizione'] }} {{ $m['ref'] ?: '—' }} {{ $m['dovuto'] !== null ? number_format($m['dovuto'], 2, ',', '.') . ' €' : '—' }} {{ $m['incasso'] !== null ? number_format($m['incasso'], 2, ',', '.') . ' €' : '—' }} {{ $m['residuo'] !== null ? number_format($m['residuo'], 2, ',', '.') . ' €' : '—' }}
@endif @if(!empty($rateInquilini))
Schede anagrafiche collegate:
@foreach($rateInquilini as $ri) @php $sid = (int) ($ri['soggetto_id'] ?? 0); $url = $sid > 0 ? \App\Filament\Pages\Contabilita\EstrattoContoSoggetto::getUrl(panel: 'admin-filament', parameters: ['record' => $sid]) . '?' . http_build_query(['vista' => 'unita', 'unita_id' => (int) ($this->unita?->id ?? 0)]) : null; @endphp
{{ $ri['nome'] }}
Addebito: {{ number_format($ri['totale_addebitato'], 2, ',', '.') }} €
@if($url) Apri scheda @endif
@endforeach
@endif
@endif
@endif
@endif
@endif