fix(ui): bind persone_unita_relazioni names and exact subentro dates for Interno A/11
This commit is contained in:
parent
92c655d826
commit
a0b54cee64
|
|
@ -388,6 +388,27 @@ public function loadUnitaList(): void
|
|||
}
|
||||
}
|
||||
|
||||
if (Schema::hasTable('persone_unita_relazioni')) {
|
||||
$rowsRel = DB::table('persone_unita_relazioni as pur')
|
||||
->join('persone as p', 'p.id', '=', 'pur.persona_id')
|
||||
->whereIn('pur.unita_id', $unitaIds)
|
||||
->select('pur.unita_id as unita_immobiliare_id', 'p.cognome', 'p.nome', 'p.ragione_sociale')
|
||||
->distinct()
|
||||
->get();
|
||||
|
||||
foreach ($rowsRel as $row) {
|
||||
$nomeCompleto = $row->ragione_sociale ?: trim("{$row->cognome} {$row->nome}");
|
||||
if ($nomeCompleto !== '') {
|
||||
if (!isset($proprietariMap[$row->unita_immobiliare_id])) {
|
||||
$proprietariMap[$row->unita_immobiliare_id] = [];
|
||||
}
|
||||
if (!in_array($nomeCompleto, $proprietariMap[$row->unita_immobiliare_id])) {
|
||||
$proprietariMap[$row->unita_immobiliare_id][] = $nomeCompleto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Schema::hasTable('proprieta')) {
|
||||
$rowsProp = DB::table('proprieta as pr')
|
||||
->join('anagrafiche as a', 'a.id', '=', 'pr.anagrafica_id')
|
||||
|
|
|
|||
|
|
@ -265,14 +265,37 @@ public function table(Table $table): Table
|
|||
}
|
||||
}
|
||||
|
||||
// 3. Fallback secondario su soggetti (anagrafiche dirette)
|
||||
if (empty($condomini)) {
|
||||
$anagrafiche = $record->anagrafiche ?? collect();
|
||||
foreach ($anagrafiche as $s) {
|
||||
$nome = $s->ragione_sociale ?: trim($s->nome . ' ' . $s->cognome);
|
||||
$cf = $s->codice_fiscale ? " ({$s->codice_fiscale})" : '';
|
||||
if ($nome !== '') {
|
||||
$condomini[] = "<span class='px-1.5 py-0.5 rounded bg-emerald-50 text-emerald-700 border border-emerald-200 text-xxs font-medium mr-1'>C</span><strong>" . e($nome) . "</strong>" . e($cf);
|
||||
// 3. Fallback/Primary su persone_unita_relazioni + persone
|
||||
if (empty($condomini) && empty($inquilini)) {
|
||||
$relazioni = \Illuminate\Support\Facades\DB::table('persone_unita_relazioni')
|
||||
->join('persone', 'persone.id', '=', 'persone_unita_relazioni.persona_id')
|
||||
->where('persone_unita_relazioni.unita_id', $record->id)
|
||||
->select([
|
||||
'persone.nome',
|
||||
'persone.cognome',
|
||||
'persone.ragione_sociale',
|
||||
'persone.codice_fiscale',
|
||||
'persone_unita_relazioni.tipo_relazione',
|
||||
'persone_unita_relazioni.ruolo_rate',
|
||||
'persone_unita_relazioni.quota_relazione',
|
||||
'persone_unita_relazioni.data_inizio',
|
||||
'persone_unita_relazioni.data_fine',
|
||||
])
|
||||
->get();
|
||||
|
||||
foreach ($relazioni as $rel) {
|
||||
$nome = $rel->ragione_sociale ?: trim($rel->nome . ' ' . $rel->cognome);
|
||||
if ($nome === '') {
|
||||
continue;
|
||||
}
|
||||
$cf = $rel->codice_fiscale ? " ({$rel->codice_fiscale})" : '';
|
||||
$qInfo = $rel->quota_relazione && (float)$rel->quota_relazione > 0 && (float)$rel->quota_relazione < 100 ? " [" . (float)$rel->quota_relazione . "%]" : '';
|
||||
$role = strtolower(trim((string)($rel->tipo_relazione ?? $rel->ruolo_rate ?? '')));
|
||||
|
||||
if (str_contains($role, 'inquilin') || $role === 'i') {
|
||||
$inquilini[] = "<span class='px-1.5 py-0.5 rounded bg-sky-50 text-sky-700 border border-sky-200 text-xxs font-medium mr-1'>I</span><strong>" . e($nome) . "</strong>" . e($cf) . e($qInfo);
|
||||
} else {
|
||||
$condomini[] = "<span class='px-1.5 py-0.5 rounded bg-emerald-50 text-emerald-700 border border-emerald-200 text-xxs font-medium mr-1'>C</span><strong>" . e($nome) . "</strong>" . e($cf) . e($qInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user