{{-- _order_card.blade.php — Carte commande réutilisable @param $order — FoodOrder model instance @param $panel — 'pending' | 'accepted' | 'preparing' | 'ready' --}} @php $isUrgent = $panel === 'pending' && $order->created_at->diffInMinutes(now()) > 5; $requestedAt = null; if (!empty($order->requested_at)) { try { $requestedAt = $order->requested_at instanceof \Carbon\CarbonInterface ? $order->requested_at : \Illuminate\Support\Carbon::parse($order->requested_at); } catch (\Throwable $e) { $requestedAt = null; } } $showScheduleTag = $requestedAt && in_array($order->status, ['accepted','scheduled']) && $requestedAt->isAfter(now()); $items = $order->items ?? collect(); $maxShow = 3; // ── Politique de paiement ── $payPolicy = method_exists($order, 'getPaymentPolicy') ? ((array) ($order->getPaymentPolicy() ?? [])) : []; $pType = $payPolicy['type'] ?? 'cash'; // cash | deposit | full_prepay $pPercent = $payPolicy['percent'] ?? 0; $pStatus = $order->payment_status ?? 'pending'; // pending | pending_capture | paid | refunded | partial $pMethod = $order->payment_method ?? ''; $isPaid = ($pStatus === 'paid'); $isCash = ($pType === 'cash'); $isDeposit = ($pType === 'deposit'); $isFullPay = ($pType === 'full_prepay'); // Montants pour acompte $depositAmount = $isDeposit ? round(($order->total ?? 0) * ($pPercent / 100), 2) : 0; $remainingAmount = $isDeposit ? round(($order->total ?? 0) - $depositAmount, 2) : 0; // Le paiement en ligne est-il requis mais pas encore fait ? $onlineRequired = !$isCash; $onlinePending = $onlineRequired && !$isPaid && $pStatus !== 'pending_capture'; // Livraison $isDelivery = ($order->delivery_type === 'delivery'); $isPickup = !$isDelivery; $hasDriver = !empty($order->driver_id); // Flux bloquant pour accept (pending) $canAccept = !($pMethod !== 'cash' && $pStatus === 'pending' && $onlineRequired); // Flux bloquant pour prépa (accepted) — livreur externe requis $requiresExternalDriver = method_exists($order, 'requiresExternalDriver') ? (bool) $order->requiresExternalDriver() : false; $hasDriverAccepted = method_exists($order, 'hasDriverAccepted') ? (bool) $order->hasDriverAccepted() : false; $needsDriver = $isDelivery && $requiresExternalDriver && !$hasDriverAccepted; @endphp