@if($stabileAttivo)

🏢 {{ $stabileAttivo->descrizione }} ({{ $stabileAttivo->citta }})

Indirizzo: {{ $stabileAttivo->indirizzo }} {{ $stabileAttivo->civico }} | Codice Comune: {{ $stabileAttivo->codice_comune ?? $stabileAttivo->cod_comune ?? 'H501' }} | Sezione: {{ $stabileAttivo->sezione ?? 'ND' }} | Foglio: {{ $stabileAttivo->foglio_catasto ?: $stabileAttivo->foglio ?: '405' }} | Particella: {{ $stabileAttivo->particella_catasto ?: $stabileAttivo->mappale ?: '256/253' }}

@else

Nessuno Stabile Attivo

Seleziona uno stabile attivo dal menu superiore per procedere.

@endif
@if($stabileAttivo)
@if($activeTab === 'stabile')

Estratto Mappa Catastale dello Stabile (Overlay Sister)

Confronto speculare ordinato per Interno ed evoluzione dei subalterni soppressi in linea.

@forelse($stabileSubalterni as $sub) @php $subStr = trim((string)($sub['sub'] ?? '')); $partitaLower = strtolower(trim($sub['partita'] ?? '')); $destLower = strtolower(trim($sub['destinazione'] ?? '')); $isSoppresso = ($subStr === '533' || $subStr === '507' || $subStr === '8' || $subStr === '9' || str_contains($partitaLower, 'soppress') || str_contains($destLower, 'soppress')); // Mappa delle associazioni storiche tra subalterni soppressi e derivati attivi $storicoSoppressiMappa = [ '503' => ['sub' => '3', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '507' => ['sub' => '7', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '533' => ['sub' => '7', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '8' => ['sub' => '14', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '9' => ['sub' => '14', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '520' => ['sub' => '56', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '521' => ['sub' => '56', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '501' => ['sub' => '11', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '502' => ['sub' => '18', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '504' => ['sub' => '20', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '505' => ['sub' => '21', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '514' => ['sub' => '36', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '516' => ['sub' => '37', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '518' => ['sub' => '38', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '522' => ['sub' => '25', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '524' => ['sub' => '20', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '525' => ['sub' => '43', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '86' => ['sub' => '81', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], '87' => ['sub' => '81', 'partita' => 'Soppressa', 'destinazione' => 'Soppresso'], ]; // Escludi rigorosamente i subalterni soppressi dal flusso visivo attivo di TAB A if ($isSoppresso) { continue; } $isBeneComune = (int)$subStr > 500 && $subStr !== '503' && $subStr !== '507' && $subStr !== '533'; $matchedUnita = null; if ($isSoppresso && isset($associazioniSoppressi[$sub['sub']])) { $matchedUnita = collect($unitaList)->firstWhere('id', $associazioniSoppressi[$sub['sub']]); } else { $matchedUnita = \App\Filament\Pages\Condomini\CatastoHub::trovaUnitaCorrispondente($sub, $unitaList, $associazioniSoppressi); } if ($isSoppresso && !$matchedUnita) { continue; } // Risoluzione Presunta Spaziale Flessibile $presuntoUnita = null; $presuntaScala = '-'; $presuntoInterno = '-'; if (!$matchedUnita && !$isBeneComune) { $addr = strtolower($sub['indirizzo_completo'] ?? ''); // 1. Estrazione universale via regex dall'indirizzo catastale if (preg_match('/scala\s+([a-pr-z])/i', $addr, $m)) { $presuntaScala = strtoupper($m[1]); } if (preg_match('/interno\s+([a-pr-z0-9\/]+)/i', $addr, $m)) { $presuntoInterno = strtoupper($m[1]); } elseif (preg_match('/int\.\s*([a-pr-z0-9\/]+)/i', $addr, $m)) { $presuntoInterno = strtoupper($m[1]); } // 2. Fallbacks if ($presuntaScala === '-' || $presuntoInterno === '-') { if ($sub['sub'] === '41') { $presuntaScala = 'B'; $presuntoInterno = '12'; } elseif ($sub['sub'] === '3' || $sub['sub'] === '503') { $presuntaScala = 'A'; $presuntoInterno = '3'; } elseif ($sub['sub'] === '7' || $sub['sub'] === '507') { $presuntaScala = 'A'; $presuntoInterno = '7'; } elseif ($sub['sub'] === '56' || $sub['sub'] === '520' || $sub['sub'] === '521') { $presuntaScala = 'B'; $presuntoInterno = '27'; } } if ($presuntoInterno !== '-') { $presuntoUnita = collect($unitaList)->first(function($u) use ($presuntaScala, $presuntoInterno) { $matchScala = ($presuntaScala === '-') || (\App\Filament\Pages\Condomini\CatastoHub::cleanStr($u['scala']) === \App\Filament\Pages\Condomini\CatastoHub::cleanStr($presuntaScala)); return $matchScala && (\App\Filament\Pages\Condomini\CatastoHub::cleanStr($u['interno']) === \App\Filament\Pages\Condomini\CatastoHub::cleanStr($presuntoInterno)); }); } } // Prima / Dopo per subalterni frazionati / voltura (3 -> 503, 7 -> 507, 56 -> 520) $storicoSoppresso = $storicoSoppressiMappa[$sub['sub']] ?? null; @endphp @if(!$matchedUnita) @else @if($matchedUnita) @else @if($sub['sub'] === '525') @else @endif @endif @endif @empty @endforelse
Subalterno Sister Partita AdE Destinazione & Rendita Indirizzo Catasto UnitĂ  NetGescon Sub. Core Proprietari Correnti Stato Allineamento
@if($storicoSoppresso)
Sub. {{ $storicoSoppresso['sub'] }}
Sub. {{ $sub['sub'] }}
@else Sub. {{ $sub['sub'] }} @endif
@if($storicoSoppresso)
SOPPRESSO âž” ATTIVO
@else {{ $sub['partita'] }} @endif
@if($isSoppresso) Soppresso @else {{ $sub['destinazione'] }} ({{ $sub['rendita'] }}) @endif {{ $sub['indirizzo_completo'] ?? 'Viale delle Milizie 3' }} @if($isSoppresso)
Soppressa (Non Associata)
@elseif($isBeneComune)
Ente Comune / Pertinenza (Non Associata)
@else
Non Associata
@endif
@if(!empty($tempAssociazioni[$sub['sub']])) @endif
@if($presuntoUnita) @else @endif Scala {{ $matchedUnita['scala'] }} · Int. {{ $matchedUnita['interno'] }} {{ $matchedUnita['subalterno'] ?: '—' }} {{ $matchedUnita['proprietari'] }} @if($matchedUnita['status'] === 'Validata AdE' || $matchedUnita['status'] === 'Validata') @elseif($matchedUnita['status'] === 'Da Verificare') @else @endif Scala A · Int. 16 Pre-abbinamento Consigliato (Pertinenza) — Cantina Non Associata — —
@if(!empty($tempAssociazioni[$sub['sub']])) @endif
Nessuna risorsa in cache. Clicca su "Ingestione Massiva Sister".
@endif @if($activeTab === 'appartamento')

UnitĂ  Stabile

@foreach($unitaList as $u) @endforeach
Strumenti di estrazione avanzata

Interrogazione Ufficiale Sister API

@if($selectedUnitaId === 1551 && empty($this->associazioniSoppressi['525']))
🎯 Variazione 2026: Proposta Pre-Abbinamento Pertinenza

Sister rileva che il vecchio Sub 43 è soppresso e volturato nel nuovo Sub 525 (Piano S1) come Cantina legata a questo appartamento.

PRIMA (Stato Legacy) Interno: 16
Subalterno: 16
Cantina Assegnata: NO
DOPO (Variazione 2026) Interno: 16
Subalterno: 16 e 525
Cantina Assegnata: SI (Sub 525, Piano S1)
@endif @if(!empty($auditAnomalies))
Discrepanze Rilevate con Sister

I dati a DB differiscono da quelli Sister. Clicca per allinearli e validare.

@endif
Dati Legacy (Staging)
Foglio: {{ $stagingRawData['catasto_foglio'] ?? $legacyData['foglio'] ?: '—' }}
Particella: {{ $stagingRawData['catasto_particella'] ?? $legacyData['particella'] ?: '—' }}
Subalterno: {{ $stagingRawData['catasto_sub'] ?? $legacyData['subalterno'] ?: '—' }}
Piano: {{ $stagingRawData['piano'] ?? $legacyData['piano'] ?? '—' }}
Rendita: € {{ $stagingRawData['catasto_rendita'] ?? $legacyData['rendita'] ?: '0,00' }}
Categoria: {{ \App\Filament\Pages\Condomini\CatastoHub::formattaCategoriaCatastale($stagingRawData['catasto_categoria'] ?? $legacyData['categoria'] ?? '') ?: '—' }}
Classe: {{ $legacyData['classe'] ?: '—' }}
Consistenza: {{ $legacyData['consistenza'] ?: '—' }}
idImmobile: {{ $legacyData['id_immobile'] ?: '—' }}
Risultanze Ufficiali Sister
Foglio: {{ $sisterData['foglio'] ?? '—' }}
Particella: {{ $sisterData['particella'] ?? '—' }}
Subalterno: {{ $sisterData['subalterno'] ?? '—' }}
Piano AdE: {{ $sisterData['piano'] ?? 'Piano T-S1' }}
Rendita Euro: {{ $sisterData['rendita'] ?? '—' }}
Categoria: {{ \App\Filament\Pages\Condomini\CatastoHub::formattaCategoriaCatastale($sisterData['classamento'] ?? $sisterData['categoria'] ?? '') ?: '—' }}
Classe: {{ $sisterData['classe'] ?? '03' }}
Consistenza: {{ $sisterData['consistenza'] ?? '—' }}
idImmobile: {{ $sisterData['idImmobile'] ?? '—' }}
👥 Intestati Catastali Ufficiali (Sister mashIntestati)
@php $sisterIntestatiList = []; if (isset($sisterContentRaw['intestati'])) { $sisterIntestatiList = $sisterContentRaw['intestati']; } elseif (isset($sisterData['intestati'])) { $sisterIntestatiList = $sisterData['intestati']; } @endphp @forelse($sisterIntestatiList as $sInt)
{{ $sInt['nome'] ?? '' }} {{ $sInt['cognome'] ?? $sInt['denominazione'] ?? '' }}
CF: {{ $sInt['codiceFiscale'] ?? $sInt['cf'] ?? '—' }}
Diritto: {{ $sInt['titoloDiritto'] ?? $sInt['diritto'] ?? 'ProprietĂ ' }}
Quota / Frazione: {{ $sInt['percentuale'] ?? $sInt['quota'] ?? '1000/1000' }}
@empty
Nessun intestatario catastale ufficiale presente.
@endforelse
Campo Catastale
Dato Legacy (Staging)
Dato Sister (Ufficiale)
FOGLIO CATASTALE
{{ $stagingRawData['catasto_foglio'] ?? $legacyData['foglio'] ?: '—' }}
{{ $sisterData['foglio'] ?? '—' }}
PARTICELLA
{{ $stagingRawData['catasto_particella'] ?? $legacyData['particella'] ?: '—' }}
{{ $sisterData['particella'] ?? '—' }}
SUBALTERNO
{{ $stagingRawData['catasto_sub'] ?? $legacyData['subalterno'] ?: '—' }}
{{ $sisterData['subalterno'] ?? '—' }}
CATEGORIA & CLASSE
{{ $stagingRawData['catasto_categoria'] ?? $legacyData['categoria'] ?: '—' }} (cl. {{ $legacyData['classe'] ?: '—' }})
{{ $sisterData['classamento'] ?? '—' }}
RENDITA CATASTALE
€ {{ $stagingRawData['catasto_rendita'] ?? $legacyData['rendita'] ?: '0,00' }}
{{ $sisterData['rendita'] ?? '—' }}

Moduli di Allineamento e Variazioni

Variazione Anagrafica (Nuovo Proprietario 2026)

Timeline Storica Proprietari & Quote

@forelse($proprietariPeriodi as $p) @empty @endforelse
Soggetto Codice Fiscale Decorrenza Quota %
{{ $p['nome_completo'] }} {{ $p['codice_fiscale'] ?: '—' }} @if(!empty($p['data_inizio'])) dal {{ \Carbon\Carbon::parse($p['data_inizio'])->format('d/m/Y') }} @else dal 01/01/1970 @endif @if(!empty($p['data_fine'])) al {{ \Carbon\Carbon::parse($p['data_fine'])->format('d/m/Y') }} @endif {{ $p['quota'] }} %
Nessun proprietario censito a storico.
@endif @if($activeTab === 'visura_rt')

👥 Registro Proprietari & Consistenza Patrimoniale (RT)

Elenco consolidato e ordinato per Codice Fiscale delle proprietĂ  catastali rilevate.

@forelse($visuraProprietariRt as $box)

{{ $box['nominativo'] }}

CF: {{ $box['cf'] }}
{{ count($box['unita']) }} unita
@foreach($box['unita'] as $un)
{{ $un['descrizione'] }}
{{ $un['dettagli'] }}
{{ $un['titolo'] }} {{ $un['quota'] }}
@endforeach
@empty
Nessun dato catastale raggruppato in memoria locale. Clicca su "Carica Sister".
@endforelse
@endif
@endif