@extends('layouts.base') @section('content') @section('breadcrumb') @endsection @if(session('success')) @endif @php use App\Enums\Civilite; use App\Enums\SituationMatrimoniale; use App\Enums\RegimeMatrimonial; $allDocuments = $reservation->documents()->orderBy('order')->get(); $contractDocuments = $allDocuments->filter(fn($doc) => in_array($doc->type, ['contrat', 'contrat_signe'])); $otherDocuments = $allDocuments->filter(fn($doc) => !in_array($doc->type, ['contrat', 'contrat_signe'])); $documentsByType = $otherDocuments->groupBy('type'); $documentsCount = $allDocuments->count(); $activeTab = session('open_tab') ?: 'informations-generales'; @endphp

Fiche de réservation

@if($reservation->option && $reservation->option->product && $reservation->option->product->program) {{ $reservation->option->product->program->name }} Lot {{ $reservation->option->product->number ?? '-' }} @endif @if($reservation->option && $reservation->option->client) {{ $reservation->option->client->fullName() }} @endif
@php $prixTTC = null; $prixTravaux = null; $surfaceHabitable = null; $currentTaskReservation = $reservation->taskReservations ->where('state', \App\Enums\TaskState::EN_COURS) ->first(); if ($reservation->option && $reservation->option->product) { $lot = $reservation->option->product; if (!$lot->relationLoaded('prices')) { $lot->load('prices'); } if (!$lot->relationLoaded('surfaces')) { $lot->load('surfaces'); } $prixTTC = $lot->getPrixLotTTC(); $prixTravaux = $lot->getTotalTravaux(); $surfaceHabitableObj = $lot->surfaces->where('type', \App\Enums\SurfaceType::HABITABLE->value)->first(); $surfaceHabitable = $surfaceHabitableObj ? $surfaceHabitableObj->value : null; } @endphp @if($reservation->signed_by_clients_at) @endif @if($reservation->option && $reservation->option->user) @endif @php $optionData = $reservation->option?->datas()?->latest('created_at')->orderBy('id', 'desc')->first()?->json ?? null; $commissionAtRates = is_array($optionData) ? ($optionData['commission_at'] ?? null) : null; // $opeComsCommercialisateur / $opeComsClient sont préparées dans le contrôleur (avec fallback). $opeComsCommercialisateur = $opeComsCommercialisateur ?? collect(); $opeComsClient = $opeComsClient ?? collect(); @endphp @if($reservation->option && $reservation->option->product) @php $product = $reservation->option->product; @endphp @if($surfaceHabitable) @endif @if($prixTravaux) @endif @if($prixTTC) @endif @if($product->floor) @endif @if($product->building_number) @endif @endif @if($opeComsCommercialisateur->isNotEmpty() || $opeComsClient->isNotEmpty()) @endif
Date de création : @if($reservation->created_at) {{ \Carbon\Carbon::parse($reservation->created_at)->format('d/m/Y à H:i') }} @else - @endif
Date de signature : {{ \Carbon\Carbon::parse($reservation->signed_by_clients_at)->format('d/m/Y à H:i') }}
Commercialisateur : {{ $reservation->option->user->firstname }} {{ $reservation->option->user->lastname }}
Commission reversée : @php $hasOptionCommission = isset($optionCommissionPercent) && $optionCommissionPercent !== null; $hasCommissionAtRates = $commissionAtRates && is_array($commissionAtRates) && count($commissionAtRates) > 0; @endphp @if($hasOptionCommission) {{ number_format((float) $optionCommissionPercent, 2, ',', ' ') }} % @endif @if($hasCommissionAtRates) @foreach($commissionAtRates as $rate) @php $rateValue = $rate['value'] ?? null; $rateType = $rate['type'] ?? null; @endphp @if($rateValue !== null) {{ number_format((float) $rateValue, 2, ',', ' ') }} % @if($rateType) ({{ $rateType }}) @endif @endif @endforeach @elseif(! $hasOptionCommission) Aucune @endif
Programme : @if($product->program) {{ $product->program->name }} @else - @endif
Lot : {{ $product->number }}
Typologie : {{ $product->type ? strtoupper($product->type->label()) : '-' }}
Surface habitable : {{ number_format($surfaceHabitable, 2, ',', ' ') }} m²
Prix travaux éligibles : {{ number_format($prixTravaux, 2, ',', ' ') }} €
Prix TTC : {{ number_format($prixTTC, 2, ',', ' ') }} €
Etage : {{ $product->floor->label() }}
Batiment : {{ $product->building_number }}
État du lot : @if($product->current_state) {{ $product->current_state->label() }} @else - @endif
Statut du workflow : @if($currentTaskReservation && $currentTaskReservation->task) {{ $currentTaskReservation->task->name }} @elseif($reservation->task) {{ $reservation->task->name ?? 'Tâche #' . $reservation->task->id }} @else Aucune @endif
Opérations commerciales : @if($opeComsCommercialisateur->isNotEmpty())
Commercialisateur
    @foreach($opeComsCommercialisateur as $opeCom)
  • @php $rawType = $opeCom['type'] ?? null; $typeLabel = $rawType === 'cashback' ? 'Montant Remboursé' : ($rawType ? str_replace('_', ' ', $rawType) : null); @endphp
    {{ $opeCom['name'] ?? ($typeLabel ?? 'Opération') }}
    @if(!empty($opeCom['text']))
    {!! $opeCom['text'] !!}
    @endif @if(!empty($opeCom['ratio'])) Ratio : {{ number_format((float) $opeCom['ratio'], 2, ',', ' ') }} % @endif @if(!empty($opeCom['date_start']) || !empty($opeCom['date_end'])) @if(!empty($opeCom['date_start']) && !empty($opeCom['date_end'])) Du {{ \Carbon\Carbon::parse($opeCom['date_start'])->format('d/m/Y H:i') }} au {{ \Carbon\Carbon::parse($opeCom['date_end'])->format('d/m/Y H:i') }} @elseif(!empty($opeCom['date_start'])) À partir du {{ \Carbon\Carbon::parse($opeCom['date_start'])->format('d/m/Y H:i') }} @else Jusqu'au {{ \Carbon\Carbon::parse($opeCom['date_end'])->format('d/m/Y H:i') }} @endif @endif @if(!empty($opeCom['rates']) && is_array($opeCom['rates'])) @php $activeRates = collect($opeCom['rates'])->filter(fn ($r) => (bool) ($r['is_active'] ?? false)); @endphp @if($activeRates->isNotEmpty()) @foreach($activeRates as $r) @php $rateType = $r['type'] ?? null; $rateValue = $r['value'] ?? null; $rateLabel = $rateType === 'commission' ? 'Boost sur la commission' : ($rateType ? (ucfirst(str_replace('_', ' ', (string) $rateType)).' sur l’opération') : 'Taux sur l’opération'); @endphp @if($rateValue !== null && $rateValue !== '')
    {{ $rateLabel }} : {{ number_format((float) $rateValue, 2, ',', ' ') }}%
    @endif @endforeach
    @endif @endif @if(!empty($opeCom['prices']) && is_array($opeCom['prices'])) @php $prices = collect($opeCom['prices']); @endphp @if($prices->isNotEmpty()) Prix : @foreach($prices as $p) {{ $p['type'] ?? '-' }}={{ $p['value'] ?? '-' }}@if(!$loop->last), @endif @endforeach @endif @endif
  • @endforeach
@endif @if($opeComsClient->isNotEmpty())
Client
    @foreach($opeComsClient as $opeCom)
  • @php $rawType = $opeCom['type'] ?? null; $typeLabel = $rawType === 'cashback' ? 'Montant Remboursé' : ($rawType ? str_replace('_', ' ', $rawType) : null); @endphp
    {{ $opeCom['name'] ?? ($typeLabel ?? 'Opération') }}
    @if(!empty($opeCom['text']))
    {!! $opeCom['text'] !!}
    @endif @if(!empty($opeCom['ratio'])) Ratio : {{ number_format((float) $opeCom['ratio'], 2, ',', ' ') }} % @endif @if(!empty($opeCom['date_start']) || !empty($opeCom['date_end'])) @if(!empty($opeCom['date_start']) && !empty($opeCom['date_end'])) Du {{ \Carbon\Carbon::parse($opeCom['date_start'])->format('d/m/Y H:i') }} au {{ \Carbon\Carbon::parse($opeCom['date_end'])->format('d/m/Y H:i') }} @elseif(!empty($opeCom['date_start'])) À partir du {{ \Carbon\Carbon::parse($opeCom['date_start'])->format('d/m/Y H:i') }} @else Jusqu'au {{ \Carbon\Carbon::parse($opeCom['date_end'])->format('d/m/Y H:i') }} @endif @endif @if(!empty($opeCom['rates']) && is_array($opeCom['rates'])) @php $activeRates = collect($opeCom['rates'])->filter(fn ($r) => (bool) ($r['is_active'] ?? false)); @endphp @if($activeRates->isNotEmpty()) @foreach($activeRates as $r) @php $rateType = $r['type'] ?? null; $rateValue = $r['value'] ?? null; $rateLabel = $rateType === 'commission' ? 'Boost sur la commission' : ($rateType ? (ucfirst(str_replace('_', ' ', (string) $rateType)).' sur l’opération') : 'Taux sur l’opération'); @endphp @if($rateValue !== null && $rateValue !== '')
    {{ $rateLabel }} : {{ number_format((float) $rateValue, 2, ',', ' ') }}%
    @endif @endforeach
    @endif @endif @if(!empty($opeCom['prices']) && is_array($opeCom['prices'])) @php $prices = collect($opeCom['prices']); @endphp @if($prices->isNotEmpty()) Prix : @foreach($prices as $p) {{ $p['type'] ?? '-' }}={{ $p['value'] ?? '-' }}@if(!$loop->last), @endif @endforeach @endif @endif
  • @endforeach
@endif
Suivi du workflow
@if($workflowData && $workflowData['workflow']) @php $currentTask = $reservation->task; $allTasks = $workflowData['tasks']; $nonCategoryTasks = $allTasks->filter(function ($task) { return $task->type && !$task->type->isCategory(); })->values(); $currentTaskIndex = $currentTask ? $nonCategoryTasks->search(function ($task) use ($currentTask) { return $task->id === $currentTask->id; }) : null; $totalSteps = $nonCategoryTasks->count(); $currentStep = $currentTaskIndex !== false ? $currentTaskIndex + 1 : 0; @endphp
Étape actuelle : Étape {{ $currentStep }} / {{ $totalSteps }}
@if($currentTask)
{{ $currentTask->name }} @if($currentTask->description_admin)
{{ $currentTask->description_admin }} @endif
@else
Aucune tâche assignée à cette réservation.
@endif
{{ $totalSteps > 0 ? round($currentStep / $totalSteps * 100) : 0 }}%
Progression du workflow :
@foreach($nonCategoryTasks as $index => $task) @php $stepNumber = $index + 1; $isCurrent = $currentTask && $task->id === $currentTask->id; $isPast = $currentTaskIndex !== false && $index < $currentTaskIndex; @endphp
{{ $stepNumber }} @if($task->type && $task->type === \App\Enums\TaskType::CONTRAT_SIGNE) Contrat signé par le(s) client(s) @else {{ $task->name }} @endif
@if($isPast) @elseif($isCurrent) @else @endif
@endforeach
@if($previousTask)
@csrf
@else @endif @if(isset($sellerSignatureInfo) && $sellerSignatureInfo['has_vendeur_signature'] && !$sellerSignatureInfo['is_seller_signed'] && $sellerSignatureInfo['signature_link']) Signer en tant que vendeur @endif @if($nextTask)
@csrf
@endif @php $currentTaskReservation = $currentTask ? \App\Models\TaskReservation::where('task_id', $currentTask->id) ->where('reservation_id', $reservation->id) ->first() : null; @endphp @if($currentTaskReservation && $currentTaskReservation->need_signature && $currentTaskReservation->signature_id)
@endif
@else
Aucun workflow n'est associé à cette réservation.
@endif
@php $buyingCompanyClient = $reservation->buyingCompany; @endphp @if($buyingCompanyClient)
Société acquéreuse
@php $companyAddress = $buyingCompanyClient->addresses->first(); if (!$buyingCompanyClient->relationLoaded('phones')) { $buyingCompanyClient->load('phones'); } $companyPhoneFixe = $buyingCompanyClient->phones->firstWhere('type', \App\Enums\PhoneType::FIXE_BUREAU); $companyPhoneMobile = $buyingCompanyClient->phones->firstWhere('type', \App\Enums\PhoneType::MOBILE); @endphp @if($buyingCompanyClient->rcs_number) @endif @if($buyingCompanyClient->rcs_location) @endif @if($buyingCompanyClient->type) @endif @if($buyingCompanyClient->capital !== null && $buyingCompanyClient->capital !== '') @endif @if($companyAddress) @if($companyAddress->line_2) @endif @endif @if($buyingCompanyClient->mandataire) @endif
Dénomination : {{ $buyingCompanyClient->name ?? '-' }}
Numéro RCS : {{ $buyingCompanyClient->rcs_number }}
Lieu RCS : {{ $buyingCompanyClient->rcs_location }}
Forme sociale : {{ $buyingCompanyClient->type->label() }}
Capital social : {{ number_format($buyingCompanyClient->capital, 2, ',', ' ') }} €
Siège social : {{ $companyAddress->line_1 ?? '-' }}
Adresse ligne 2 : {{ $companyAddress->line_2 }}
Code Postal : {{ $companyAddress->zip_code ?? '-' }}
Ville : {{ $companyAddress->city ?? '-' }}
Pays : {{ $companyAddress->country?->name ?? '-' }}
Téléphone : @if($companyPhoneFixe || $companyPhoneMobile) @if($companyPhoneFixe)
{{ format_phone_display($companyPhoneFixe->value) }} (fixe)
@endif @if($companyPhoneMobile)
{{ format_phone_display($companyPhoneMobile->value) }} (portable)
@endif @else - @endif
Email : @if($buyingCompanyClient->email) {{ $buyingCompanyClient->email }} @else - @endif
Mandataire social : {!! nl2br(e(preg_replace('//i', "\n", $buyingCompanyClient->mandataire))) !!}
@else
Acheteur
@if($reservation->option && $reservation->option->client) @php $client = $reservation->option->client; $address = $client->addresses->first(); @endphp @if($client->civility) @endif @if($client->nom_jeune_fille) @endif @if($address) @if($address->line_2) @endif @endif @if($client->birthdate) @endif @if($client->birthplace) @endif @if($client->profession) @endif @if($client->employeur) @endif @if($client->nationality) @endif @if($client->situation_matrimoniale) @endif @if($client->date_mariage_pacs) @endif @if($client->lieu_mariage_pacs) @endif @if($client->regime_matrimonial) @endif @if($client->date_divorce) @endif
Civilité : {{ $client->civility->label() }}
Nom : {{ $client->lastname }}
Prénom : {{ $client->firstname }}
Nom de jeune fille : {{ $client->nom_jeune_fille }}
Adresse ligne 1 : {{ $address->line_1 ?? '-' }}
Adresse ligne 2 : {{ $address->line_2 }}
Code Postal : {{ $address->zip_code ?? '-' }}
Ville : {{ $address->city ?? '-' }}
Pays : {{ $address->country?->name ?? '-' }}
Téléphone : @if($client->phones && $client->phones->isNotEmpty()) @foreach($client->phones as $phone)
{{ format_phone_display($phone->value) }}
@endforeach @else - @endif
Email : @if($client->email) {{ $client->email }} @else - @endif
Date de naissance : {{ $client->birthdate->format('d/m/Y') }}
Lieu de naissance : {{ $client->birthplace }}
Profession : {{ $client->profession }}
Employeur : {{ $client->employeur }}
Nationalité : {{ $client->nationality }}
Situation matrimoniale : {{ $client->situation_matrimoniale->label() }}
Date de mariage ou Pacs : {{ $client->date_mariage_pacs->format('d/m/Y') }}
Lieu de mariage ou Pacs : {{ $client->lieu_mariage_pacs }}
Régime matrimonial : {{ $client->regime_matrimonial->label() }}
Date de divorce : {{ $client->date_divorce->format('d/m/Y') }}
@else

Aucun client associé

@endif
@php $cobuyers = $reservation->getCobuyersForDisplay(); @endphp @if($cobuyers->isNotEmpty())
Co-acheteur
@foreach($cobuyers as $cobuyer) @php $cobuyerAddress = $cobuyer['address'] ?? null; $cobuyerCivilityLabel = !empty($cobuyer['civility']) ? (Civilite::tryFrom($cobuyer['civility'])?->label() ?? $cobuyer['civility']) : null; $cobuyerBirthdateFormatted = !empty($cobuyer['birthdate']) ? \Carbon\Carbon::parse($cobuyer['birthdate'])->format('d/m/Y') : null; $cobuyerDateMariageFormatted = !empty($cobuyer['date_mariage_pacs']) ? \Carbon\Carbon::parse($cobuyer['date_mariage_pacs'])->format('d/m/Y') : null; $cobuyerDateDivorceFormatted = !empty($cobuyer['date_divorce']) ? \Carbon\Carbon::parse($cobuyer['date_divorce'])->format('d/m/Y') : null; $situationLabel = !empty($cobuyer['situation_matrimoniale']) ? (SituationMatrimoniale::tryFrom($cobuyer['situation_matrimoniale'])?->label() ?? $cobuyer['situation_matrimoniale']) : null; $regimeLabel = !empty($cobuyer['regime_matrimonial']) ? (RegimeMatrimonial::tryFrom($cobuyer['regime_matrimonial'])?->label() ?? $cobuyer['regime_matrimonial']) : null; @endphp @if($cobuyerCivilityLabel) @endif @if(!empty($cobuyer['nom_jeune_fille'])) @endif @if($cobuyerAddress) @if(!empty($cobuyerAddress['line_2'])) @endif @endif @if($cobuyerBirthdateFormatted) @endif @if(!empty($cobuyer['birthplace'])) @endif @if(!empty($cobuyer['profession'])) @endif @if(!empty($cobuyer['nationality'])) @endif @if($situationLabel) @endif @if($cobuyerDateMariageFormatted) @endif @if(!empty($cobuyer['lieu_mariage_pacs'])) @endif @if($regimeLabel) @endif @if($cobuyerDateDivorceFormatted) @endif
Civilité : {{ $cobuyerCivilityLabel }}
Nom : {{ $cobuyer['lastname'] ?? '-' }}
Prénom : {{ $cobuyer['firstname'] ?? '-' }}
Nom de jeune fille : {{ $cobuyer['nom_jeune_fille'] }}
Adresse ligne 1 : {{ $cobuyerAddress['line_1'] ?? '-' }}
Adresse ligne 2 : {{ $cobuyerAddress['line_2'] }}
Code Postal : {{ $cobuyerAddress['zip_code'] ?? '-' }}
Ville : {{ $cobuyerAddress['city'] ?? '-' }}
Pays : {{ $cobuyerAddress['country_name'] ?? '-' }}
Téléphone : {{ !empty($cobuyer['phone']) ? format_phone_display($cobuyer['phone']) : '-' }}
Email : @if(!empty($cobuyer['email'])) {{ $cobuyer['email'] }} @else - @endif
Date de naissance : {{ $cobuyerBirthdateFormatted }}
Lieu de naissance : {{ $cobuyer['birthplace'] }}
Profession : {{ $cobuyer['profession'] }}
Nationalité : {{ $cobuyer['nationality'] }}
Situation matrimoniale : {{ $situationLabel }}
Date de mariage ou Pacs : {{ $cobuyerDateMariageFormatted }}
Lieu de mariage ou Pacs : {{ $cobuyer['lieu_mariage_pacs'] }}
Régime matrimonial : {{ $regimeLabel }}
Date de divorce : {{ $cobuyerDateDivorceFormatted }}
@if(!$loop->last)
@endif @endforeach
@endif @endif
@if($bankData && $bankData->json) @php $bankDataJson = $bankData->json; $prixVenteTotal = 0; if ($reservation->option && $reservation->option->product) { $lot = $reservation->option->product; if (!$lot->relationLoaded('prices')) { $lot->load('prices'); } $prixTTC = $lot->getPrixLotTTC(); $prixTravauxHorsReadOnly = $lot->getTotalTravaux(); $prixVenteTotal = $prixTTC + $prixTravauxHorsReadOnly; } @endphp
@if(isset($bankDataJson['mode_financement']) && $bankDataJson['mode_financement']) @endif @if($prixVenteTotal > 0) @endif @if(isset($bankDataJson['montant_pret']) && $bankDataJson['montant_pret']) @endif @if(isset($bankDataJson['nom_banque']) && $bankDataJson['nom_banque']) @endif @if(isset($bankDataJson['apport_personnel']) && $bankDataJson['apport_personnel']) @endif @if(isset($bankDataJson['frais_notaire']) && $bankDataJson['frais_notaire']) @endif
Mode de financement : @if($bankDataJson['mode_financement'] === 'credit') Crédit @elseif($bankDataJson['mode_financement'] === 'cash') Cash @else {{ ucfirst($bankDataJson['mode_financement']) }} @endif
Prix du lot : {{ number_format($prixVenteTotal, 2, ',', ' ') }} €
Financement à l'aide d'un prêt : @if(isset($bankDataJson['financement_pret']) && $bankDataJson['financement_pret']) Oui @else Non @endif
Montant du prêt : {{ number_format($bankDataJson['montant_pret'], 2, ',', ' ') }} €
Nom de la banque : {{ $bankDataJson['nom_banque'] }}
Apport personnel : {{ number_format($bankDataJson['apport_personnel'], 2, ',', ' ') }} €
Frais de notaire : {{ number_format($bankDataJson['frais_notaire'], 2, ',', ' ') }} €
@if(isset($bankDataJson['duree_pret']) && $bankDataJson['duree_pret']) @endif @if(isset($bankDataJson['taux_pret']) && $bankDataJson['taux_pret']) @endif @if(isset($bankDataJson['notaire_participation']) && $bankDataJson['notaire_participation']) @if(isset($bankDataJson['nom_notaire']) && $bankDataJson['nom_notaire']) @endif @if(isset($bankDataJson['prenom_notaire']) && $bankDataJson['prenom_notaire']) @endif @if(isset($bankDataJson['ville_notaire']) && $bankDataJson['ville_notaire']) @endif @endif
Durée du prêt : {{ $bankDataJson['duree_pret'] }} ans
Taux du prêt : {{ number_format($bankDataJson['taux_pret'], 2, ',', ' ') }} %
Notaire en participation : @if(isset($bankDataJson['notaire_participation']) && $bankDataJson['notaire_participation']) Oui @else Non @endif
Nom du notaire : {{ $bankDataJson['nom_notaire'] }}
Prénom du notaire : {{ $bankDataJson['prenom_notaire'] }}
Ville du notaire : {{ $bankDataJson['ville_notaire'] }}
@else

Aucune information financière n'a été saisie pour cette réservation.

@endif
@if($otherDocuments->isEmpty())

Aucun document n'a encore été uploadé côté front pour cette réservation.

@else
@foreach($documentsByType as $type => $typeDocuments) @php $typeEnum = \App\Enums\DocumentTypeReservation::tryFrom($type); $typeLabel = $typeEnum ? $typeEnum->label() : $type; @endphp
{{ $typeLabel }} {{ $typeDocuments->count() }}
@foreach($typeDocuments as $document) @php $downloadUrl = route('partner.reservation.document.download', ['reservation' => $reservation, 'document' => $document]); $previewUrl = route('partner.reservation.document.preview', ['reservation' => $reservation, 'document' => $document]); $extension = strtolower(pathinfo($document->file_path, PATHINFO_EXTENSION)); $isImage = in_array($extension, ['jpg', 'jpeg', 'png']); $isPdf = $extension === 'pdf'; // Utiliser la route dédiée pour les miniatures si disponible, sinon le fichier original pour les images $thumbnailUrl = $document->thumbnail_path ? route('partner.reservation.document.thumbnail', ['reservation' => $reservation, 'document' => $document]) : ($isImage ? $previewUrl : null); @endphp
@if($isImage && $thumbnailUrl) {{ $document->name }} @elseif($isPdf && $thumbnailUrl) {{ $document->name }} @elseif($isPdf)
{{ $document->name }}
@else
{{ $document->name }}
@endif
{{ $document->name }}
{{ strtoupper($extension) }} · {{ number_format(($document->file_size ?? 0) / 1024, 2, ',', ' ') }} Ko @php $statusEnum = $document->status ? \App\Enums\DocumentStatus::tryFrom($document->status) : null; @endphp @if($statusEnum)
{{ $statusEnum->label() }}
@if($statusEnum === \App\Enums\DocumentStatus::REJECTED && $document->rejection_reason)
Raison du rejet : {{ $document->rejection_reason }}
@endif @endif
Télécharger
@csrf @method('DELETE')
@endforeach
@if(! $loop->last)
@endif
@endforeach
@endif @if($contractDocuments->isNotEmpty())
Contrat
@foreach($contractDocuments as $document) @php $downloadUrl = route('partner.reservation.document.download', ['reservation' => $reservation, 'document' => $document]); $documentLabel = $document->type === 'contrat_signe' ? 'Contrat signé par le(s) client(s)' : 'Contrat généré'; @endphp
{{ $documentLabel }}
@endforeach
@endif
@endsection