{{-- v4.16.0 §F — LA FICHE D'UN LIVRABLE : ce qui a été remis, la décision, et la conversation. Le pendant exact du détail d'une publication : mêmes blocs (`.valwrap`, `.remarks`), mêmes mots, mêmes gestes. Un client qui a appris à valider un post sait déjà valider un livrable. ⚠️ `notes_internes`, la tâche du responsable et les statuts de production n'apparaissent nulle part, sous aucune condition. ⚠️ Les boutons de décision ne sont pas grisés pour un lecteur : ils ne lui sont pas rendus. Un bouton grisé est une invitation à insister ; un bouton absent ne pose aucune question. --}}
Livrable
@if ($annonce)
{{ $annonce['texte'] }}
@endif

{{ $livrable->titre }}

{{ $livrable->reference }}{{ $livrable->poste ? ' · '.$livrable->poste->libelle : '' }}

@if ($livrable->statut->libelleClient()) {{ $livrable->statut->libelleClient() }} @endif @if ($livrable->version_courante > 0) Version {{ $livrable->version_courante }} @endif
@if ($version?->remis_le)
Remis le {{ $version->remis_le->format('d/m/Y') }}
@endif @if ($version?->reference_bordereau)
Bordereau {{ $version->reference_bordereau }}
@endif @if ($livrable->echeance_le)
Échéance {{ $livrable->echeance_le->format('d/m/Y') }}
@endif @if ($livrable->statut->estValide() && $livrable->valide_le)
Validé le {{ $livrable->valide_le->format('d/m/Y') }}
@endif {{-- LES PIÈCES. Un lien mort ne s'affiche pas comme un lien : quand le fichier n'est plus sur le disque, la ligne reste, sans bouton — le client sait ce qui existe, et nous ne lui promettons pas une porte fermée. --}} @if ($pieces !== [] || filled($livrable->lien_drive))
Pièces @foreach ($pieces as $piece) @if ($piece['url']) {{ $piece['nom'] }} ↗ @else {{ $piece['nom'] }} @endif @if (! $loop->last)
@endif @endforeach @if (filled($livrable->lien_drive)) @if ($pieces !== [])
@endif Ouvrir le dossier du livrable ↗ @endif
@endif @if (filled($version?->message))
Message {{ $version->message }}
@endif
{{-- LES GESTES. Ils n'existent que pour qui peut décider ET quand il y a quelque chose à décider. Sinon, l'écran dit simplement où en est le livrable. --}}
@if ($peutDecider)
{{ $livrable->statut->libelleClient() }} @if ($reponseAttendueLe) · réponse souhaitée avant le {{ $reponseAttendueLe->format('d/m/Y') }} @endif
@if ($correctionOuverte)
@endif
@else
@if ($livrable->statut->attendLeClient()) Ce livrable attend la validation du référent de votre marché. @else {{ $livrable->statut->libelleClient() }} — il n'y a rien à décider ici. @endif
@endif
{{-- v4.17.0 §B — LA CONVERSATION : le FIL de discussion, remises et décisions comprises. --}} {{-- v4.17.3 §C3 — `lazy="on-load"` : LA FICHE S'AFFICHE D'ABORD. Le fil compose la conversation, compte les non-lus et écrit la lecture — tout cela au moment même où le client attend de voir ce qu'on lui propose. Il part donc dans une requête à lui, tirée dès que la page est là (et non à la première molette : le fil est en bas de l'écran, et marquer lu ne doit pas dépendre d'un geste). --}}