{{-- _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; $showScheduleTag = !empty($order->requested_at) && in_array($order->status, ['accepted','scheduled']) && $order->requested_at->isAfter(now()); $items = $order->items ?? collect(); $maxShow = 3; // ── Politique de paiement ── $payPolicy = $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 $needsDriver = $isDelivery && method_exists($order, 'requiresExternalDriver') && $order->requiresExternalDriver() && !$order->hasDriverAccepted(); @endphp