feat(unita-ui): relocate unit header to Riepilogo tab, move Estratto Rapido to Estratto Conto tab, add Data Pagamento & Movimento Bancario columns in Rate Emesse (task-d095b0e23b)
This commit is contained in:
parent
8dd60d9ca5
commit
4e4fdf1603
|
|
@ -954,7 +954,7 @@ public function getEstrattoContoNominativoDettaglioProperty(): array
|
|||
}
|
||||
|
||||
if (empty($this->estrattoCompattoRateRows)) {
|
||||
$this->initEstrattoContoCompattoData();
|
||||
$this->hydrateEstrattoCompatto();
|
||||
}
|
||||
|
||||
$rateList = $this->condInquilActive === 'I'
|
||||
|
|
@ -970,17 +970,39 @@ public function getEstrattoContoNominativoDettaglioProperty(): array
|
|||
$pagato = (float) ($r['pagato'] ?? 0);
|
||||
$residuo = (float) ($r['residuo'] ?? ($dovuto - $pagato));
|
||||
|
||||
$dtPagamento = ! empty($r['data_pagamento']) && $r['data_pagamento'] !== '—' ? $r['data_pagamento'] : '—';
|
||||
$movimentoBancario = '—';
|
||||
|
||||
if (! empty($dettaglioIncassi)) {
|
||||
$gestioneRate = (string) ($r['gestione'] ?? '');
|
||||
foreach ($dettaglioIncassi as $incItem) {
|
||||
$yrInc = (string) ($incItem['anno_rif'] ?? '');
|
||||
if ($dtPagamento === '—' && ! empty($incItem['data_pagamento']) && $incItem['data_pagamento'] !== '—') {
|
||||
$dtPagamento = $incItem['data_pagamento'];
|
||||
}
|
||||
if ($movimentoBancario === '—' && (! empty($incItem['cod_cassa']) || ! empty($incItem['descrizione']))) {
|
||||
$cassaStr = ! empty($incItem['cod_cassa']) && $incItem['cod_cassa'] !== '—' ? 'Mov. #' . $incItem['cod_cassa'] : '';
|
||||
$noteStr = ! empty($incItem['descrizione']) && $incItem['descrizione'] !== '—' ? $incItem['descrizione'] : '';
|
||||
$movimentoBancario = trim($cassaStr . ($cassaStr !== '' && $noteStr !== '' ? ' · ' : '') . $noteStr);
|
||||
}
|
||||
if ($gestioneRate !== '' && str_contains($yrInc, $gestioneRate)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$rateEmesseRows[] = [
|
||||
'id' => $r['id'] ?? null,
|
||||
'data_emissione' => $r['data_emissione'] ?? '—',
|
||||
'data_scadenza' => $r['data_scadenza'] ?? '—',
|
||||
'data_pagamento' => $r['data_pagamento'] ?? '—',
|
||||
'avviso' => $r['avviso'] ?? '—',
|
||||
'gestione' => $r['gestione'] ?? '—',
|
||||
'descrizione' => $r['descrizione'] ?? '—',
|
||||
'dovuto' => $dovuto,
|
||||
'pagato' => $pagato,
|
||||
'residuo' => $residuo,
|
||||
'id' => $r['id'] ?? null,
|
||||
'data_emissione' => $r['data_emissione'] ?? '—',
|
||||
'data_scadenza' => $r['data_scadenza'] ?? '—',
|
||||
'data_pagamento' => $dtPagamento,
|
||||
'movimento_bancario' => $movimentoBancario !== '' ? $movimentoBancario : '—',
|
||||
'avviso' => $r['avviso'] ?? '—',
|
||||
'gestione' => $r['gestione'] ?? '—',
|
||||
'descrizione' => $r['descrizione'] ?? '—',
|
||||
'dovuto' => $dovuto,
|
||||
'pagato' => $pagato,
|
||||
'residuo' => $residuo,
|
||||
];
|
||||
|
||||
$totaleDovutoRate += $dovuto;
|
||||
|
|
|
|||
|
|
@ -108,136 +108,6 @@ class="rounded-lg border px-2.5 py-1 text-xs font-semibold transition {{ $this->
|
|||
<div class="rounded-xl border border-dashed border-gray-200 bg-white p-6 text-center text-gray-500">Nessuna unità immobiliare trovata.</div>
|
||||
@else
|
||||
|
||||
{{-- Header compatto --}}
|
||||
<x-filament::section class="p-4!">
|
||||
@php
|
||||
$isArchivedUnita = method_exists($unita, 'trashed') && $unita->trashed();
|
||||
@endphp
|
||||
|
||||
<div class="flex items-start justify-between gap-4 flex-wrap">
|
||||
<div class="space-y-1">
|
||||
<div class="space-y-1">
|
||||
<div class="flex flex-wrap items-center gap-3 text-lg font-semibold text-gray-900">
|
||||
<x-filament::icon icon="heroicon-o-home-modern" class="h-5 w-5 text-primary-600" />
|
||||
<span class="text-primary-700">Unità immobiliare</span>
|
||||
@if($isArchivedUnita)
|
||||
<span class="rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-xs font-semibold text-amber-700">Archiviata</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@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))
|
||||
<div class="text-sm text-gray-700">{{ $labelUnita }}</div>
|
||||
@endif
|
||||
<div class="flex items-center gap-2 text-sm text-gray-700 mt-1">
|
||||
<span class="inline-flex items-center rounded bg-emerald-50 dark:bg-emerald-900/30 px-1.5 py-0.5 text-[10px] font-bold text-emerald-700 dark:text-emerald-300">C</span>
|
||||
<span>Condomino: {{ $condominoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $condominoNome)) : '—' }}</span>
|
||||
</div>
|
||||
@if($comproprietariCount > 0)
|
||||
<div class="text-xs text-gray-500 pl-6">Comproprietari collegati: {{ $comproprietariCount }}</div>
|
||||
@endif
|
||||
<div class="flex items-center gap-2 text-sm text-gray-700 mt-1">
|
||||
<span class="inline-flex items-center rounded bg-sky-50 dark:bg-sky-900/30 px-1.5 py-0.5 text-[10px] font-bold text-sky-700 dark:text-sky-300">I</span>
|
||||
<span>Inquilino: {{ $inquilinoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $inquilinoNome)) : '—' }}</span>
|
||||
</div>
|
||||
<div class="text-xs text-gray-500">{{ trim(($unita->indirizzo ?? '').' '.($unita->civico ?? '').' '.($unita->comune ?? '')) }}</div>
|
||||
<div class="mt-2 pt-2 border-t border-gray-100 dark:border-gray-800">
|
||||
<a href="/admin-filament/condomini/catasto-hub?unita_id={{ $unita->id }}" class="inline-flex items-center gap-2 rounded-lg bg-primary-600 hover:bg-primary-700 text-white font-semibold px-4 py-2 text-xs shadow-sm transition">
|
||||
<x-filament::icon icon="heroicon-o-arrow-top-right-on-square" class="h-4 w-4" />
|
||||
<span>[ Apri in HUB Catasto ]</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@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
|
||||
|
||||
<div class="grid gap-2 sm:grid-cols-3 min-w-70">
|
||||
<div class="rounded-lg border p-3 {{ ($estrattoTipo ?? 'condomini') === 'condomini' ? 'border-primary-300 bg-primary-50' : 'bg-gray-50' }}">
|
||||
<div class="text-xs text-gray-500">Condomino di riferimento</div>
|
||||
<div class="text-sm font-semibold text-gray-900">{{ $condominoNome !== '' ? $condominoNome : '—' }}</div>
|
||||
<div class="text-xs text-gray-500">CF: {{ $condominoCf !== '' ? $condominoCf : '—' }}</div>
|
||||
</div>
|
||||
<div class="rounded-lg border p-3 {{ ($estrattoTipo ?? 'condomini') === 'inquilini' ? 'border-sky-300 bg-sky-50' : 'bg-gray-50' }} {{ $hasInquilino ? '' : 'opacity-60' }}">
|
||||
<div class="text-xs text-gray-500">Inquilino</div>
|
||||
<div class="text-sm font-semibold text-gray-900">{{ $inquilinoNome !== '' ? $inquilinoNome : '—' }}</div>
|
||||
<div class="text-xs text-gray-500">CF: {{ $relazioniPerTipo['inquilini'][0]['codice_fiscale'] ?? '—' }}</div>
|
||||
</div>
|
||||
<div class="rounded-lg border bg-gray-50 p-3 space-y-2">
|
||||
<div class="text-xs text-gray-500">Estratto rapido</div>
|
||||
<button type="button"
|
||||
wire:click="setEstrattoTipo('condomini')"
|
||||
class="w-full rounded-md border px-2 py-1 text-left text-xs font-semibold transition {{ ($estrattoTipo ?? 'condomini') === 'condomini' ? 'border-primary-300 bg-primary-50 text-primary-700' : 'border-gray-200 bg-white text-gray-700 hover:bg-gray-50' }}">
|
||||
<div>Condomino</div>
|
||||
<div class="text-[11px] text-gray-600">Addebito {{ number_format($totCAddebH, 2, ',', '.') }} € · Incasso {{ number_format($totCPagH, 2, ',', '.') }} € · Residuo {{ number_format($totCResH, 2, ',', '.') }} €</div>
|
||||
</button>
|
||||
|
||||
<button type="button"
|
||||
wire:click="setEstrattoTipo('inquilini')"
|
||||
class="w-full rounded-md border px-2 py-1 text-left text-xs font-semibold transition {{ ($estrattoTipo ?? 'condomini') === 'inquilini' ? 'border-sky-300 bg-sky-50 text-sky-700' : 'border-gray-200 bg-white text-gray-700 hover:bg-gray-50' }} {{ $hasInquilino ? '' : 'opacity-50' }}"
|
||||
@if(!$hasInquilino) disabled @endif>
|
||||
<div>Inquilino</div>
|
||||
<div class="text-[11px] text-gray-600">Addebito {{ number_format($totIAddebH, 2, ',', '.') }} € · Incasso {{ number_format($totIPagH, 2, ',', '.') }} € · Residuo {{ number_format($totIResH, 2, ',', '.') }} €</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-filament::section>
|
||||
|
||||
{{-- Tabs + contenuto --}}
|
||||
<x-filament::section class="p-0! overflow-hidden">
|
||||
<div class="flex flex-wrap items-center gap-2 px-4 py-2 bg-white border-b">
|
||||
|
|
@ -267,6 +137,84 @@ class="inline-flex items-center gap-2 rounded-lg border px-3 py-2 text-sm font-s
|
|||
|
||||
<div class="p-4 space-y-4">
|
||||
@if($tab === 'riepilogo')
|
||||
{{-- Header compatto dell'Unità Immobiliare --}}
|
||||
<x-filament::section class="p-4! mb-4">
|
||||
@php
|
||||
$isArchivedUnita = method_exists($unita, 'trashed') && $unita->trashed();
|
||||
$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();
|
||||
$hasInquilino = !empty($relazioniPerTipo['inquilini'][0]['nome'] ?? null);
|
||||
@endphp
|
||||
|
||||
<div class="flex items-start justify-between gap-4 flex-wrap">
|
||||
<div class="space-y-1">
|
||||
<div class="flex flex-wrap items-center gap-3 text-lg font-semibold text-gray-900">
|
||||
<x-filament::icon icon="heroicon-o-home-modern" class="h-5 w-5 text-primary-600" />
|
||||
<span class="text-primary-700 font-bold">Unità immobiliare {{ $unita->codice_unita ?? $unita->codice_completo }}</span>
|
||||
@if($isArchivedUnita)
|
||||
<span class="rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-xs font-semibold text-amber-700">Archiviata</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 text-sm text-gray-800 mt-2">
|
||||
<span class="inline-flex items-center rounded bg-emerald-100 px-2 py-0.5 text-xs font-bold text-emerald-800">C</span>
|
||||
<span class="font-semibold">Condomino:</span>
|
||||
<span class="font-bold text-indigo-900">{{ $condominoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $condominoNome)) : '—' }}</span>
|
||||
</div>
|
||||
|
||||
@if($comproprietariCount > 0)
|
||||
<div class="text-xs text-gray-500 pl-6">Comproprietari collegati: {{ $comproprietariCount }}</div>
|
||||
@endif
|
||||
|
||||
<div class="flex items-center gap-2 text-sm text-gray-800 mt-1">
|
||||
<span class="inline-flex items-center rounded bg-sky-100 px-2 py-0.5 text-xs font-bold text-sky-800">I</span>
|
||||
<span class="font-semibold">Inquilino:</span>
|
||||
<span class="font-bold text-slate-800">{{ $inquilinoNome !== '' ? trim(str_replace([' - ', ' 0 ', ' 0', '-'], [' ', ' ', ' ', ' '], $inquilinoNome)) : '—' }}</span>
|
||||
</div>
|
||||
|
||||
<div class="text-xs text-gray-600 mt-1">📍 {{ trim(($unita->indirizzo ?? '').' Scala '.($unita->scala ?? '').' Int. '.($unita->interno ?? '').' '.($unita->comune ?? '')) }}</div>
|
||||
|
||||
<div class="mt-3 pt-2 border-t border-gray-100">
|
||||
<a href="/admin-filament/condomini/catasto-hub?unita_id={{ $unita->id }}" class="inline-flex items-center gap-2 rounded-lg bg-indigo-700 hover:bg-indigo-800 text-white font-semibold px-3.5 py-1.5 text-xs shadow-xs transition">
|
||||
<span>🏛️</span>
|
||||
<span>[ Apri in HUB Catasto ]</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid gap-3 sm:grid-cols-2 min-w-80">
|
||||
<div class="rounded-xl border border-slate-200 bg-slate-50 p-3.5">
|
||||
<div class="text-xs font-semibold text-slate-500">🏢 Condomino di riferimento</div>
|
||||
<div class="text-sm font-bold text-slate-900 mt-1">{{ $condominoNome !== '' ? $condominoNome : '—' }}</div>
|
||||
<div class="text-xs font-mono text-slate-600 mt-0.5">CF: {{ $condominoCf !== '' ? $condominoCf : '—' }}</div>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-200 bg-slate-50 p-3.5 {{ $hasInquilino ? '' : 'opacity-60' }}">
|
||||
<div class="text-xs font-semibold text-slate-500">👤 Inquilino</div>
|
||||
<div class="text-sm font-bold text-slate-900 mt-1">{{ $inquilinoNome !== '' ? $inquilinoNome : '—' }}</div>
|
||||
<div class="text-xs font-mono text-slate-600 mt-0.5">CF: {{ $relazioniPerTipo['inquilini'][0]['codice_fiscale'] ?? '—' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-filament::section>
|
||||
|
||||
<div class="grid gap-4 lg:grid-cols-3">
|
||||
<x-filament::section class="lg:col-span-2">
|
||||
<x-slot name="heading">Indicatori principali</x-slot>
|
||||
|
|
@ -509,9 +457,66 @@ class="inline-flex items-center gap-1.5 rounded-lg bg-indigo-600 px-3 py-2 text-
|
|||
$ecData = $this->getEstrattoContoNominativoDettaglioProperty();
|
||||
$timelineItems = $this->getTimelineSubentriCompletaProperty();
|
||||
$soggetto = $ecData['soggetto'] ?? null;
|
||||
|
||||
$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
|
||||
|
||||
<div class="space-y-4">
|
||||
{{-- Box Estratto Rapido Sintetico diviso per Condomino ed Inquilino --}}
|
||||
<div class="rounded-xl border border-slate-200 bg-slate-50 p-4">
|
||||
<div class="text-xs font-bold text-slate-600 uppercase tracking-wider mb-2">⚡ Estratto Conto Rapido Sintetico</div>
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
<button type="button"
|
||||
wire:click="setCondInquilActive('C')"
|
||||
class="rounded-xl border p-3.5 text-left transition {{ ($condInquilActive ?? 'C') === 'C' ? 'border-amber-400 bg-amber-50/80 shadow-xs ring-2 ring-amber-500/20' : 'border-slate-200 bg-white hover:bg-slate-100' }}">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-xs font-bold text-amber-900">🏢 Condomino (Proprietari)</span>
|
||||
<span class="rounded bg-amber-200 px-1.5 py-0.5 text-[10px] font-bold text-amber-900">C</span>
|
||||
</div>
|
||||
<div class="text-xs text-slate-700 mt-1 font-mono">
|
||||
Addebito: <strong>€ {{ number_format($totCAddebH, 2, ',', '.') }}</strong> ·
|
||||
Incasso: <strong class="text-emerald-700">€ {{ number_format($totCPagH, 2, ',', '.') }}</strong> ·
|
||||
Residuo: <strong class="{{ $totCResH > 0 ? 'text-rose-600' : 'text-slate-600' }}">€ {{ number_format($totCResH, 2, ',', '.') }}</strong>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<button type="button"
|
||||
wire:click="setCondInquilActive('I')"
|
||||
class="rounded-xl border p-3.5 text-left transition {{ ($condInquilActive ?? 'C') === 'I' ? 'border-indigo-400 bg-indigo-50/80 shadow-xs ring-2 ring-indigo-500/20' : 'border-slate-200 bg-white hover:bg-slate-100' }} {{ $hasInquilino ? '' : 'opacity-60' }}"
|
||||
@if(!$hasInquilino) disabled @endif>
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-xs font-bold text-indigo-900">👤 Inquilino</span>
|
||||
<span class="rounded bg-indigo-200 px-1.5 py-0.5 text-[10px] font-bold text-indigo-900">I</span>
|
||||
</div>
|
||||
<div class="text-xs text-slate-700 mt-1 font-mono">
|
||||
Addebito: <strong>€ {{ number_format($totIAddebH, 2, ',', '.') }}</strong> ·
|
||||
Incasso: <strong class="text-emerald-700">€ {{ number_format($totIPagH, 2, ',', '.') }}</strong> ·
|
||||
Residuo: <strong class="{{ $totIResH > 0 ? 'text-rose-600' : 'text-slate-600' }}">€ {{ number_format($totIResH, 2, ',', '.') }}</strong>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Header selezione soggetto --}}
|
||||
<div class="flex flex-wrap items-center justify-between gap-4 rounded-xl border border-slate-200 bg-slate-50 p-4">
|
||||
<div>
|
||||
|
|
@ -655,7 +660,7 @@ class="inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-semi
|
|||
@endif
|
||||
</div>
|
||||
|
||||
{{-- Tabella Rate Emesse (Dovuto vs Pagato) --}}
|
||||
{{-- Tabella Rate Emesse (Dovuto vs Pagato + Data Pagamento e Movimento) --}}
|
||||
<div class="rounded-xl border border-slate-200 bg-white overflow-hidden shadow-xs">
|
||||
<div class="border-b border-slate-200 bg-slate-50 px-4 py-3 font-semibold text-slate-800 text-sm flex items-center justify-between">
|
||||
<span>📑 Rate Emesse ed Avvisi di Pagamento</span>
|
||||
|
|
@ -674,6 +679,8 @@ class="inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-semi
|
|||
<th class="px-4 py-2.5">Descrizione Rata</th>
|
||||
<th class="px-4 py-2.5 text-right">Dovuto (€)</th>
|
||||
<th class="px-4 py-2.5 text-right">Pagato (€)</th>
|
||||
<th class="px-4 py-2.5">Data Pagamento</th>
|
||||
<th class="px-4 py-2.5">Movimento / Cassa-Banca</th>
|
||||
<th class="px-4 py-2.5 text-right">Residuo (€)</th>
|
||||
<th class="px-4 py-2.5 text-center">Stato</th>
|
||||
</tr>
|
||||
|
|
@ -691,6 +698,16 @@ class="inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-semi
|
|||
<td class="px-4 py-2 font-medium text-slate-900">{{ $rE['descrizione'] }}</td>
|
||||
<td class="px-4 py-2 text-right font-mono font-medium text-slate-900">€ {{ number_format($rE['dovuto'], 2, ',', '.') }}</td>
|
||||
<td class="px-4 py-2 text-right font-mono font-medium text-emerald-700">€ {{ number_format($rE['pagato'], 2, ',', '.') }}</td>
|
||||
<td class="px-4 py-2 font-mono text-slate-700 font-medium">{{ $rE['data_pagamento'] ?? '—' }}</td>
|
||||
<td class="px-4 py-2 text-slate-600 font-mono text-xs">
|
||||
@if(($rE['movimento_bancario'] ?? '—') !== '—')
|
||||
<span class="inline-flex items-center gap-1 rounded bg-slate-100 border border-slate-200 px-2 py-0.5 text-xs text-slate-800 font-mono">
|
||||
<span>🏛️ {{ $rE['movimento_bancario'] }}</span>
|
||||
</span>
|
||||
@else
|
||||
<span class="text-slate-400">—</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-2 text-right font-mono font-bold {{ $rE['residuo'] > 0 ? 'text-rose-600' : 'text-slate-500' }}">
|
||||
€ {{ number_format($rE['residuo'], 2, ',', '.') }}
|
||||
</td>
|
||||
|
|
@ -717,6 +734,7 @@ class="inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-semi
|
|||
<td colspan="4" class="px-4 py-2.5 text-right text-slate-700">Totali Rate Emesse:</td>
|
||||
<td class="px-4 py-2.5 text-right font-mono text-slate-900">€ {{ number_format($ecData['totale_dovuto_rate'], 2, ',', '.') }}</td>
|
||||
<td class="px-4 py-2.5 text-right font-mono text-emerald-700">€ {{ number_format($ecData['totale_pagato_rate'], 2, ',', '.') }}</td>
|
||||
<td colspan="2"></td>
|
||||
<td class="px-4 py-2.5 text-right font-mono text-rose-700">€ {{ number_format($ecData['totale_residuo_rate'], 2, ',', '.') }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user