@extends('layouts.app') @section('title', 'Paramètres de livraison - Food') @section('content')
{{-- Bannière d'aide --}}

Comment configurer vos livraisons ?

Cette page vous permet de définir comment vos clients reçoivent leurs commandes. Vous pouvez proposer le retrait sur place, la livraison, ou les deux. Configurez vos zones, tarifs et horaires pour offrir la meilleure expérience à vos clients.

{{-- En-tête --}}

Paramètres de livraison

Configurez vos options de livraison et de retrait

Retour aux produits
{{-- Messages --}} @if(session('success'))

{{ session('success') }}

@endif @if($errors->any())

Erreurs de validation

    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif
@csrf @method('PUT') {{-- Modes de récupération --}}

Modes de récupération

Choisissez comment vos clients peuvent récupérer leurs commandes. Vous pouvez activer les deux options.

{{-- Retrait sur place --}} {{-- Livraison --}}
{{-- Mode de livraison (Interne vs Externe) --}}

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 --}} {{-- Livreurs externes --}} {{-- Les deux --}}
{{-- 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

{{-- Note minimum --}}
{{-- 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 --}}
km

Distance maximale depuis votre adresse

{{-- Frais de base --}}
{{-- Frais par km --}}
€/km

Ajouté aux frais de base

{{-- Temps de préparation --}}
min
{{-- 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 --}}

Laisser vide = pas de minimum

{{-- 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

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 --}}
@push('scripts') @endpush @endsection