@php
$programLots = $program->lots->sortBy('number', SORT_NATURAL)->values();
$lotFiscaliteOptions = $program->fiscalites
->map(fn ($f) => $f->type)
->filter()
->unique(fn ($t) => $t->value)
->values();
$lotPriceOptions = $programLots
->map(fn ($lot) => $lot->prices->first()?->value)
->filter(fn ($value) => $value !== null)
->map(fn ($value) => (float) $value)
->unique()
->sort()
->values();
$lotStatusFilterOptions = [
['value' => 'actif', 'label' => 'Actif', 'attrs' => ['data-filter-group' => 'status']],
['value' => 'inactif', 'label' => 'Inactif', 'attrs' => ['data-filter-group' => 'status']],
];
$lotDisponibiliteFilterOptions = \App\Enums\ProductState::selectableCases();
$lotDisponibiliteFilterOptions = collect($lotDisponibiliteFilterOptions)->map(fn ($state) => [
'value' => $state->value,
'label' => $state->label(),
'attrs' => ['data-filter-group' => 'disponibilite'],
])->values()->all();
$lotFiscaliteFilterOptions = $lotFiscaliteOptions->map(fn ($fiscaliteType) => [
'value' => $fiscaliteType->value,
'label' => $fiscaliteType->label(),
'attrs' => ['data-filter-group' => 'fiscalite'],
])->values()->all();
@endphp
@if($programLots->isEmpty())
Aucun lot à l'horizon
Vous retrouvez ici la liste complète des lots du programme
@if($canLotsWrite)
Ajouter un lot
@endif
@else
{{ $programLots->count() }} {{ $programLots->count() > 1 ? 'lots' : 'lot' }}
@if($canLotsWrite)
Ajouter un lot
@endif
|
|
|
|
|
|
|
|
@foreach($programLots as $lot)
@php
$lotDisplayPrice = $lot->prices->first();
$lotFiscalites = $lot->fiscalites->map(fn ($f) => $f->type?->label())->filter()->values();
$lotFiscaliteValues = $lot->fiscalites->map(fn ($f) => $f->type?->value)->filter()->values();
$lotTypeLabel = null;
try {
$lotTypeLabel = $lot->type ? $lot->type->label() : null;
} catch (\Throwable $e) {
$lotTypeLabel = null;
}
@endphp
|
{{ $lot->number }}
@if($lotTypeLabel)
{{ $lotTypeLabel }}
@endif
|
{{ $lot->surface !== null ? number_format($lot->surface, 0, ',', ' ') . ' m²' : '—' }} |
{{ $lot->floor ? $lot->floor->shortLabel() : '—' }} |
@if($lotFiscalites->isNotEmpty())
{{ $lotFiscalites->join(', ') }}
@else
Aucun dispositif
@endif
|
@if($lotDisplayPrice)
{{ number_format($lotDisplayPrice->value, 0, ',', ' ') }} €
@else
Non défini
@endif
|
@if($lot->current_state)
{{ $lot->current_state->label() }}
@else
Non défini
@endif
|
@if($canLotsWrite)
@else
{{ $lot->is_active ? 'Actif' : 'Inactif' }}
@endif
|
|
@endforeach
@endif
@if($canProgramsWrite)
@php
$argumentaireTypeFilterOptions = collect(\App\Enums\ArgumentaireType::selectableCases())
->map(fn ($type) => [
'value' => $type->value,
'label' => $type->label(),
])
->values()
->all();
@endphp
@if($program->creatorApplication()?->id === $application->id)
@else
Programme partagé - Seule l'application créatrice ({{ $program->creatorApplication()?->name }}) peut ajouter des argumentaires.
@endif
@if($program->argumentaires->count() > 0)
@foreach($program->argumentaires->sortBy('order') as $argumentaire)
{{ $argumentaire->type->label() }}
@if($program->creatorApplication()?->id === $application->id)
@endif
{!! $argumentaire->text !!}
{{ $argumentaire->updated_at?->format('d/m/Y') ?? '-' }}
@if($argumentaire->user)
@php
$firstInitial = strtoupper(substr($argumentaire->user->firstname ?? '', 0, 1));
$lastInitial = strtoupper(substr($argumentaire->user->lastname ?? '', 0, 1));
$initials = $firstInitial . $lastInitial;
@endphp
@if($initials)
{{ $initials }}
@endif
@auth
{{ $argumentaire->user_id === auth()->id() ? 'Vous' : $argumentaire->user->firstname . ' ' . $argumentaire->user->lastname }}
@else
{{ $argumentaire->user->firstname }} {{ $argumentaire->user->lastname }}
@endauth
@endif
@if($program->creatorApplication()?->id === $application->id)
@endif
@endforeach
@else
@endif
@php
$programDocuments = $program->documents->sortBy('order')->values();
$documentTypeFilterOptions = collect(\App\Enums\DocumentTypeProgram::cases())
->map(fn ($type) => ['value' => $type->value, 'label' => $type->label()])
->all();
@endphp
@if($programDocuments->isNotEmpty())
|
|
|
|
@foreach($programDocuments as $document)
@php
$documentTitle = trim((string) ($document->name ?: 'Document'));
$documentTypeValue = (string) ($document->type ?? '');
$documentTypeLabel = trim((string) ($document->type_enum?->label() ?? '-'));
@endphp
|
{{ $documentTitle }}
|
{{ $documentTypeLabel }}
|
{{ $document->created_at?->format('d/m/Y H:i') ?? '-' }}
|
|
@endforeach
@foreach($programDocuments as $document)
Êtes-vous certains de vouloir supprimer ce document ?
Cette action est irréversible
@endforeach
@else
Aucun document
@endif
@if($program->creatorApplication()?->id !== $application->id)
Programme partagé - Seule l'application créatrice ({{ $program->creatorApplication()?->name }}) peut ajouter des opérations commerciales.
@endif
@if($program->opeComs->count() > 0)
@elseif($program->creatorApplication()?->id === $application->id)
@endif
@if($program->opeComs->count() > 0)
@php
$allOpeComs = $program->opeComs->sortBy('order')->values();
$allLotsForProgram = $program->lots ?? collect();
$allLotsNumbersForProgram = $allLotsForProgram->pluck('number')->filter()->values();
$allCommercialisateursForProgram = $program->application?->commercialisateursActif ?? collect();
@endphp
Une erreur est survenue lors de la mise à jour de l’ordre des opérations commerciales.
@else
Aucune opération commerciale
@endif
@if($program->creatorApplication()?->id !== $application->id)
Programme partagé - Seule l'application créatrice ({{ $program->creatorApplication()?->name }}) peut synchroniser les lots.
@else
Synchronisation des lots - Associez des fiscalités et opérations commerciales aux lots individuellement
@if($program->lots->count() > 0)
@foreach($program->lots as $index => $lot)
Fiscalités applicables
@if($program->fiscalites->count() > 0)
@php
$lotFiscalites = $lot->fiscalites->pluck('type')->map(fn($t) => $t->value)->toArray();
@endphp
@foreach($program->fiscalites as $fiscalite)
@endforeach
@else
Aucune fiscalité définie pour ce programme.
@endif
Opérations commerciales applicables
@php
$lotOpeComTypes = $lot->opeComs
->pluck('type')
->filter()
->map(fn ($t) => $t->value)
->toArray();
@endphp
@foreach($program->opeComs as $opeCom)
@if($opeCom->type)
@endif
@endforeach
@if($program->opeComs->count() === 0)
Aucune opération commerciale disponible. Créez-en dans l'onglet "Opérations Commerciales".
@endif
@endforeach
@else
@endif
@endif
@include('partner.annexes.list', ['program' => $program, 'application' => $application])
@endif
@if($canSaleParametersTab)
@if($program->creatorApplication()?->id !== $application->id)
Programme partagé - Seule l'application créatrice ({{ $program->creatorApplication()?->name }}) peut gérer les règles de vente.
@else
@php
$saleParameter = $program->saleParameter ?? $application->saleParameter;
$isUsingApplicationParams = !$program->saleParameter;
$optionDuration = \App\Enums\OptionDuration::tryFrom($saleParameter->option_duration_day ?? 1);
$extensionNumbers = $saleParameter->extension_numbers ?? 0;
$extensionLabel = \App\Enums\OptionProlongation::tryFrom($extensionNumbers)?->label() ?? 'Zéro';
@endphp
Configuration des options
Configurez les options et paramètres spécifiques à ce programme
Options
Durée
{{ $optionDuration?->label() ?? '1 jour' }}
Rang
{{ ($saleParameter->option_rang ?? 1) == 2 ? 'Rang 2 autorisé' : 'Rang 1 uniquement' }}
Prolongation max
{{ $extensionNumbers > 0 ? $extensionLabel : 'Non autorisée' }}
Délais de signature
Délai de signature
{{ $saleParameter->option_signature_deadline_day ?? 'Non défini' }}
Paramètres
{{ ($saleParameter->option_jour_ouvrable ?? false) ? 'Jours ouvrables uniquement' : 'Jours ouvrés' }}
{{ ($saleParameter->auto_validated_option ?? false) ? 'Validation automatique des poses d\'option' : 'Acceptation manuelle des poses d\'option' }}
@if($saleParameter->signataire_email ?? $saleParameter->signataire_phone ?? null)
Signataire
@if($saleParameter->signataire_email ?? null)
@endif
@if($saleParameter->signataire_phone ?? null)
@endif
@endif
@if($isUsingApplicationParams)
Paramètres par défaut de l'application
Ce programme utilise actuellement les paramètres de vente par défaut de l’application.
@else
Paramètres personnalisés
Ce programme utilise actuellement des paramètres de vente personnalisés.
@endif
@if(!$isUsingApplicationParams && Auth::user()->canDeletePartnerSaleParameters())
@endif
Consulter les paramètres de l'application
@endif
@endif