@extends('layouts.app') @section('title', 'Mi Ruta') @section('content')
@if(isset($isAdminView) && $isAdminView)
Modo Administrador - Solo Lectura
@endif
@if(!$ruta)

Sin ruta asignada

No tienes entregas programadas para hoy.

@csrf
@else

Plan de Operación

@if($ruta->numero_salida > 0) Salida #{{ $ruta->numero_salida }} @endif

{{ $ruta->nombre_ruta ?? 'Ruta del Día' }}

Pedidos

{{ $ruta->pedidos->where('pivot.estado_entrega', 'pendiente')->count() }}

Cajas

{{ $ruta->pedidos->sum(function($p) { return $p->detalles->sum('cantidad'); }) }}

Estado

{{ $ruta->estado }}

Carga y Empaque de Mercancía

@php $totales = []; foreach($ruta->pedidos as $p) { foreach($p->detalles as $det) { $nombre = $det->producto->nombre ?? 'Producto'; $totales[$nombre] = ($totales[$nombre] ?? 0) + $det->cantidad; } } @endphp @if($ruta->estado === 'aprobada' || $ruta->estado === 'planificacion')

Fase 1: Pendiente de Empaque

A continuación se muestra el listado preliminar de mercancía requerida para esta ruta. Para iniciar el proceso de verificación caja por caja y activar el checklist de carga, presiona el botón inferior.

Mercancía a reunir:

@foreach($totales as $producto => $cantidad)
{{ $producto }} {{ $cantidad }}
@endforeach
@else

Checklist de Carga Activo

{{ $ruta->estado === 'en_ruta' ? 'En Ruta' : 'En Empaque' }}
@foreach($totales as $producto => $cantidad)
{{ $producto }}
{{ $cantidad }}
@endforeach
@if($ruta->estado !== 'en_ruta')
@endif
@endif

Itinerario de Entregas

@php $pedidosOrdenados = $ruta->pedidos->sort(function($a, $b) { $hasTimeA = !empty($a->hora_preferente_entrega) || stripos($a->observacion_entrega ?? '', 'antes de') !== false; $hasTimeB = !empty($b->hora_preferente_entrega) || stripos($b->observacion_entrega ?? '', 'antes de') !== false; if ($hasTimeA && !$hasTimeB) return -1; if (!$hasTimeA && $hasTimeB) return 1; return $a->pivot->orden_entrega <=> $b->pivot->orden_entrega; }); @endphp @foreach($pedidosOrdenados as $pedido) @php $isPending = $pedido->pivot->estado_entrega === 'pendiente'; $isUrgent = !empty($pedido->hora_preferente_entrega) || stripos($pedido->observacion_entrega ?? '', 'antes de') !== false; @endphp
@if($isUrgent && $isPending)
@endif
Parada #{{ $pedido->pivot->orden_entrega }}
@if($isUrgent && $isPending)
⏰ Entrega Urgente: @if(!empty($pedido->hora_preferente_entrega)) {{ \Carbon\Carbon::parse($pedido->hora_preferente_entrega)->format('g:i A') }} @else @php $obs = $pedido->observacion_entrega ?? ''; $extract = strlen($obs) > 30 ? substr($obs, 0, 30) . '...' : $obs; @endphp {{ !empty($extract) ? $extract : 'Hora pactada' }} @endif
@endif

{{ $pedido->cliente->nombre_completo }}

@if($isUrgent && $isPending)
@endif

{{ $pedido->direccion->direccion }}{{ $pedido->direccion->detalles ? ' (' . $pedido->direccion->detalles . ')' : '' }}

@if($pedido->direccion->barrio)

Barrio: {{ $pedido->direccion->barrio }} • Zona: {{ $pedido->direccion->zona->nombre_zona ?? '' }}

@endif @if(!empty($pedido->observacion_entrega))
📝 Indicaciones de Entrega: {{ $pedido->observacion_entrega }}
@endif @php $esRegalo = $pedido->es_regalo; $destNombre = $pedido->destinatario_final_nombre; $destPhone = $pedido->destinatario_final_telefono; $msgRegalo = $pedido->mensaje_regalo; $reqBolsa = $pedido->requiere_bolsa_regalo; $souvenirsList = []; if (!empty($pedido->souvenirs) && is_array($pedido->souvenirs)) { $souvenirsList = \App\Models\Souvenir::whereIn('id', $pedido->souvenirs)->pluck('nombre')->toArray(); } @endphp @if($esRegalo || !empty($destNombre))
@if($esRegalo) 🎁 DETALLES DE REGALO:

Para: {{ $destNombre ?: 'Alguien especial' }} @if($destPhone) ({{ $destPhone }}) @endif

@if($reqBolsa)

🛍️ Empaque: Bolsa de regalo

@endif @if(count($souvenirsList) > 0)

✨ Adicionales: {{ implode(', ', $souvenirsList) }}

@endif @if(!empty($msgRegalo))
💌 "{{ $msgRegalo }}"
@endif @else 👤 ENTREGAR A OTRA PERSONA:

{{ $destNombre }} @if($destPhone) ({{ $destPhone }}) @endif

@endif
@endif
@foreach($pedido->detalles as $det)
{{ $det->producto->nombre ?? 'Producto' }} x{{ $det->cantidad }}
@endforeach

${{ number_format($pedido->total_pagar, 0) }}

@if(!empty($pedido->observacion_entrega) || $pedido->es_regalo || !empty($pedido->destinatario_final_nombre))

Detalles de Entrega

@if(!empty($pedido->observacion_entrega))
Indicaciones:

{{ $pedido->observacion_entrega }}

@endif @if($pedido->es_regalo)
🎁 Regalo para:

{{ $pedido->destinatario_final_nombre ?: $pedido->cliente->nombre_completo }} @if($pedido->destinatario_final_telefono) ({{ $pedido->destinatario_final_telefono }}) @endif

@if($pedido->requiere_bolsa_regalo)

🛍️ Requiere bolsa de regalo

@endif @if(count($souvenirsList) > 0)

✨ Souvenirs: {{ implode(', ', $souvenirsList) }}

@endif @if(!empty($pedido->mensaje_regalo))
💌 "{{ $pedido->mensaje_regalo }}"
@endif
@elseif(!empty($pedido->destinatario_final_nombre))
👤 Entregar a:

{{ $pedido->destinatario_final_nombre }} @if($pedido->destinatario_final_telefono) ({{ $pedido->destinatario_final_telefono }}) @endif

@endif
@endif @if($isPending) @include('rutas.partials.mobile-delivery-actions', ['pedido' => $pedido]) @else @if($pedido->estado === 'atencion_requerida')

Devuelto a Revisión

{{ $pedido->observacion_entrega }}

@elseif($pedido->estado === 'cancelado')

Pedido Cancelado

{{ $pedido->observacion_entrega }}

@else

Entrega Realizada

@endif @endif
@endforeach
@endif
Filtrar Entregas por Fecha
Cargando Historial...
@push('scripts') @endpush @endsection