@php use App\Support\Money; // v3.8.6 §2d — CAUTIONS & RETENUES DE GARANTIE, ENFIN À LEUR PLACE. // // L'information était éclatée sur TROIS écrans : le montant immobilisé en bas de « Position // financière », la liste des fiches dans l'onglet « Vue d'ensemble », et la caution définitive // dans l'onglet « Dates clés ». Trois endroits pour une seule question — « qu'est-ce qui est // bloqué, et quand ça revient ? ». Rien n'est recalculé : les trois sources sont réunies. $etat = $getState(); $cautions = $etat['cautions']; $immobilise = $etat['immobilise']; $dehors = collect($cautions)->filter(fn ($g): bool => $g->returned_at === null); $rendues = collect($cautions)->filter(fn ($g): bool => $g->returned_at !== null); @endphp
{{-- Le chiffre qui compte, seul en haut : ce que ce marché retient de la trésorerie. --}}

Immobilisé aujourd'hui

$immobilise > 0, 'text-gray-500 dark:text-gray-400' => $immobilise == 0, 'text-rose-700 dark:text-rose-400' => $immobilise < 0, ])>{{ Money::format($immobilise) }}

@if ($immobilise > 0) Cet argent a quitté le compte et reviendra à la restitution. Ce n'est ni une charge, ni un coût du marché : il n'entre dans aucune marge. @elseif ($immobilise < 0) Un immobilisé négatif n'existe pas. Une restitution est rattachée à ce marché sans son dépôt : cherchez l'écriture manquante. @else Rien n'est bloqué sur ce marché à cette date. @endif

@if ($dehors->isEmpty() && $rendues->isEmpty())

Aucune caution ni retenue de garantie enregistrée pour ce marché.

@else @foreach ([['titre' => 'Encore dehors', 'lot' => $dehors], ['titre' => 'Restituées', 'lot' => $rendues]] as $groupe) @if ($groupe['lot']->isNotEmpty())

{{ $groupe['titre'] }} ({{ $groupe['lot']->count() }})

{{-- Un tableau qui déborde à 390 px ne se lit pas : il défile dans SA boîte, jamais la page entière. --}}
@foreach ($groupe['lot'] as $g) @endforeach
Nature Constituée {{ $groupe['titre'] === 'Restituées' ? 'Restituée' : 'Retour attendu' }} Bloqué État
{{ $g->type?->label() ?? $g->type }} @if ($g->mode) {{ $g->mode?->label() ?? $g->mode }} @endif {{ $g->issued_date?->format('d/m/Y') ?? '—' }} {{ $g->returned_at?->format('d/m/Y') ?? $g->expected_return_date?->format('d/m/Y') ?? '—' }} {{ Money::format($g->amount) }} @if ($g->required_amount !== null && (float) $g->required_amount !== (float) $g->amount) {{-- L'écart exigé/bloqué se voit, il ne se devine pas. --}} exigé {{ Money::format($g->required_amount) }} @endif {{ $g->status?->label() ?? ($g->returned_at ? 'Restituée' : 'Dehors') }}
@endif @endforeach @endif