Qui effectue vos livraisons ?
Quelle option choisir ?
Interne : Vous gérez vos propres livreurs (salariés ou sous contrat)
Externe : Des livreurs indépendants de la plateforme prennent vos commandes
Les deux : Vos livreurs en priorité, externes en renfort si besoin
@php
$externalAvailable = $externalDriversCheck['available'] ?? false;
$externalCount = $externalDriversCheck['count'] ?? 0;
$externalRequired = $externalDriversCheck['required'] ?? 4;
$externalRadius = $externalDriversCheck['radius_km'] ?? 10;
$externalDisabled = !$externalAvailable;
// Si external/both sont bloqués, forcer internal
$effectiveMode = $prestataire->delivery_mode ?? 'both';
if ($externalDisabled && in_array($effectiveMode, ['external', 'both'])) {
$effectiveMode = 'internal';
}
@endphp
{{-- Livraison interne --}}
Je livre moi-même ou avec mon équipe
@if($effectiveMode === 'internal')
@endif
{{-- Livreurs externes --}}
delivery_mode ?? 'both') === 'external' && !$externalDisabled ? 'checked' : '' }}
{{ $externalDisabled ? 'disabled' : '' }}
class="hidden delivery-mode-radio"
onchange="toggleDeliveryMode()">
Externe
@if($externalDisabled)
Indisponible
@endif
@if($externalDisabled)
{{ $externalCount }}/{{ $externalRequired }} livreurs dans {{ $externalRadius }}km
@else
Livreurs indépendants de la plateforme
@endif
@if($externalDisabled)
Minimum {{ $externalRequired }} livreurs requis
@endif
@if(($prestataire->delivery_mode ?? 'both') === 'external' && !$externalDisabled)
@endif
{{-- Les deux --}}
delivery_mode ?? 'both') === 'both' && !$externalDisabled ? 'checked' : '' }}
{{ $externalDisabled ? 'disabled' : '' }}
class="hidden delivery-mode-radio"
onchange="toggleDeliveryMode()">
Les deux
@if($externalDisabled)
Indisponible
@endif
@if($externalDisabled)
Requiert des livreurs externes
@else
Interne + livreurs externes en renfort
@endif
@if(($prestataire->delivery_mode ?? 'both') === 'both' && !$externalDisabled)
@endif
{{-- Options avancées pour livreurs externes --}}
Options livreurs externes
Configurez les critères pour les livreurs externes qui livreront vos commandes.
{{-- Attribution automatique --}}
Attribution auto
Le système choisit le meilleur livreur
auto_assign_drivers ?? true) ? 'checked' : '' }}
class="sr-only peer" id="autoAssignToggle">
{{-- Note minimum --}}
Note minimum livreur
Aucun minimum
min_driver_rating ?? '') == 3 ? 'selected' : '' }}>3+ étoiles
min_driver_rating ?? '') == 3.5 ? 'selected' : '' }}>3.5+ étoiles
min_driver_rating ?? '') == 4 ? 'selected' : '' }}>4+ étoiles
min_driver_rating ?? '') == 4.5 ? 'selected' : '' }}>4.5+ étoiles
{{-- Lien vers gestion livreurs --}}
Gérer vos livreurs
Noter, choisir vos favoris, ou bloquer des livreurs
Gérer
{{-- Paramètres de livraison (tarifs) - Uniquement si interne ou both --}}
@php
$showDeliveryParams = $prestataire->food_delivery_enabled && in_array($prestataire->delivery_mode ?? 'both', ['internal', 'both']);
@endphp
Vos tarifs de livraison
Ces paramètres s'appliquent quand vous effectuez les livraisons (interne). Si vous utilisez uniquement les livreurs externes de la plateforme, ils définissent leurs propres tarifs.
{{-- Info box calcul frais --}}
Comment sont calculés les frais de livraison ?
Frais totaux = Frais de base + (Distance × Frais par km)
Exemple : Si base = 3€ et 0.50€/km, une livraison à 4km coûtera 3€ + (4 × 0.50€) = 5€
{{-- Zone de livraison --}}
{{-- Frais de base --}}
{{-- Frais par km --}}
{{-- Temps de préparation --}}
{{-- Minimums et livraison gratuite --}}
Minimums de commande & Livraison gratuite
Astuce : Un minimum de commande réduit les petites commandes non rentables. La livraison gratuite encourage les clients à commander plus.
{{-- Minimum livraison --}}
{{-- Minimum retrait --}}
{{-- Livraison gratuite --}}
{{-- Horaires de livraison --}}
Horaires de livraison
Définissez un ou plusieurs créneaux de livraison pour chaque jour
Important : Les clients ne pourront commander en livraison que pendant ces horaires.
Décochez un jour pour ne pas livrer ce jour-là, ou ajoutez plusieurs créneaux si vous faites une coupure.
@php
$days = [
'lundi' => 'Lundi',
'mardi' => 'Mardi',
'mercredi' => 'Mercredi',
'jeudi' => 'Jeudi',
'vendredi' => 'Vendredi',
'samedi' => 'Samedi',
'dimanche' => 'Dimanche',
];
$oldSchedule = old('delivery_schedule');
$schedule = is_array($oldSchedule) ? $oldSchedule : ($prestataire->food_delivery_schedule ?? []);
$normalizeTime = static function ($value) {
if (!is_string($value)) {
return null;
}
$value = trim($value);
if ($value === '') {
return null;
}
return preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/', $value) === 1
? substr($value, 0, 5)
: null;
};
$resolveDaySchedule = static function ($daySchedule) use ($normalizeTime) {
$daySchedule = is_array($daySchedule) ? $daySchedule : [];
$enabled = array_key_exists('enabled', $daySchedule) ? (bool) $daySchedule['enabled'] : true;
$rawSlots = [];
if (isset($daySchedule['slots']) && is_array($daySchedule['slots'])) {
$rawSlots = $daySchedule['slots'];
} elseif (array_key_exists('start', $daySchedule) || array_key_exists('end', $daySchedule)) {
$rawSlots = [[
'start' => $daySchedule['start'] ?? null,
'end' => $daySchedule['end'] ?? null,
]];
}
$slots = [];
foreach ($rawSlots as $slot) {
if (!is_array($slot)) {
continue;
}
$start = $normalizeTime($slot['start'] ?? null);
$end = $normalizeTime($slot['end'] ?? null);
if (!$start || !$end) {
continue;
}
$slots[] = [
'start' => $start,
'end' => $end,
];
}
usort($slots, static fn ($left, $right) => strcmp($left['start'], $right['start']));
if (empty($slots)) {
$slots[] = [
'start' => '11:00',
'end' => '22:00',
];
}
return [
'enabled' => $enabled,
'slots' => array_values($slots),
];
};
@endphp
@foreach($days as $key => $day)
@php
$daySchedule = $resolveDaySchedule($schedule[$key] ?? null);
@endphp
{{ $day }}
Ajouter un créneau
Exemple: 11:30 - 14:00 puis 18:00 - 22:30 si vous faites une coupure.
@foreach($daySchedule['slots'] as $slotIndex => $slot)
@endforeach
Livraison coupée ce jour-là. Réactivez le jour pour définir un ou plusieurs créneaux.
@endforeach
{{-- Instructions de livraison --}}
Instructions pour les clients
Ces instructions aideront vos clients à récupérer leur commande facilement.
Exemples d'instructions utiles :
• "Sonnez au portail, nous vous apportons la commande"
• "Appelez au 06 XX XX XX XX à votre arrivée"
• "Livraison sans contact possible sur demande"
• "Stationnement gratuit devant le restaurant"
Ces instructions seront affichées au client lors de la commande
{{-- Aperçu des frais - uniquement si interne ou both --}}
Aperçu des frais de livraison
Voici ce que paieront vos clients selon la distance. Les valeurs se mettent à jour automatiquement.
{{ number_format(($prestataire->food_delivery_base_fee ?? 3) + (1 * ($prestataire->food_delivery_fee_per_km ?? 0.5)), 2) }} €
à 1 km
{{ number_format(($prestataire->food_delivery_base_fee ?? 3) + (3 * ($prestataire->food_delivery_fee_per_km ?? 0.5)), 2) }} €
à 3 km
{{ number_format(($prestataire->food_delivery_base_fee ?? 3) + (5 * ($prestataire->food_delivery_fee_per_km ?? 0.5)), 2) }} €
à 5 km
{{ number_format(($prestataire->food_delivery_base_fee ?? 3) + (10 * ($prestataire->food_delivery_fee_per_km ?? 0.5)), 2) }} €
à 10 km
{{-- Info pour livraison externe --}}
Livraison externe activée
Vous avez choisi d'utiliser les livreurs indépendants de la plateforme. Les frais de livraison sont calculés automatiquement par la plateforme en fonction de la distance et des tarifs des livreurs disponibles.
Pas de gestion de tarifs à faire de votre côté
Les livreurs sont automatiquement assignés
Suivi en temps réel pour vous et vos clients
{{-- Bouton de sauvegarde --}}