{{-- Diseño moderno (v3): detalle de una reserva. Mismos formularios, rutas y validaciones que reservation/show; solo cambia la presentación. --}} @extends('layout.main') @section('content') @include('reservation._alerts') @php $customer = $reservation->customer ?: new \App\Customer(['name' => $reservation->client_code ? 'Código ' . $reservation->client_code : '(sin cliente)']); $editable = $reservation->status == 1; $phone = preg_replace('/\D/', '', $customer->phone_number ?? ''); if (strlen($phone) == 10 && $phone[0] == '0') $phone = '593' . substr($phone, 1); $lines = []; foreach ($reservation->items as $item) $lines[] = '• ' . ($item->product->name ?? '') . ' x' . (float) $item->qty . ' = $' . number_format($item->subtotal, 2); $waText = "Hola " . ($customer->name ?? '') . ", esta es tu reserva " . $reservation->reference_no . " en " . ($reservation->warehouse->name ?? '') . ":\n" . implode("\n", $lines) . ($reservation->shipping_cost > 0 ? "\nEnvío: $" . number_format($reservation->shipping_cost, 2) : '') . "\nTotal: $" . number_format($reservation->total, 2) . "\nAbonado: $" . number_format($reservation->paid, 2) . "\nSaldo pendiente: $" . number_format($reservation->balance, 2) . ($reservation->due_date ? "\nPlazo de pago hasta: " . \Carbon\Carbon::parse($reservation->due_date)->format('d/m/Y') : ''); @endphp @php $r = $reservation; $pill = $r->is_overdue ? 'v3-pill-red' : ([1 => 'v3-pill-gray', 2 => 'v3-pill-green', 3 => 'v3-pill-gray', 4 => 'v3-pill-brand', 5 => 'v3-pill-brand'][$r->status] ?? 'v3-pill-gray'); $canExit = in_array($r->status, [4, 5]) && ($r->status == 5 || !$r->exit_issues); $backTab = in_array($r->status, [4, 5]) ? 4 : ($r->status == 1 ? ($r->is_overdue ? 'vencidas' : 1) : 'cerradas'); @endphp
Reserva {{ $r->reference_no }}@if($r->client_code) · Código {{ $r->client_code }}@endif · {{ preg_replace('/\s*-\s*Entre Tu y Yo$/i', '', $r->warehouse->name ?? '') }}
Incluye las reservas unidas: {{ $merged->pluck('reference_no')->implode(', ') }}.
@endif @if($editable)Sin productos.
@endforelseTodavía no hay abonos.
@elseEl historial detallado se activa al ejecutar database/cambios/2026-10-18b_reservas_historial.sql.
Sin movimientos registrados todavía.
@else