@php $opId = request()->route('record'); $op = \App\Models\OrdenProduccion::find($opId); $events = []; if ($op) { $confecciones = $op->confeccions()->get(); foreach ($confecciones as $c) { // Evento principal de la confección (creación/envío) $events[] = [ 'tipo' => 'Confección', 'id' => $c->id, 'fecha' => $c->fecha_envio ?? $c->created_at, 'detalle' => "Enviado: {$c->cantidad_enviada} - Recibido total: {$c->recibido_total} - Defectos: {$c->prendas_defectuosas}", 'link' => route('filament.admin.resources.confeccions.edit', ['record' => $c->id]), ]; // Eventos por cada recepción $recepciones = $c->recepciones()->orderBy('fecha_recepcion')->get(); foreach ($recepciones as $r) { $events[] = [ 'tipo' => 'Recepción (Confección)', 'id' => $r->id, 'fecha' => $r->fecha_recepcion ?? $r->created_at, 'detalle' => "Recibido: {$r->cantidad} - Notas: " . ($r->notas ?? '—'), 'link' => route('filament.admin.resources.confeccions.edit', ['record' => $c->id]), ]; } } $tints = $op->tintorerias()->get(); foreach ($tints as $t) { $events[] = [ 'tipo' => 'Tintorería', 'id' => $t->id, 'fecha' => $t->fecha_envio ?? $t->created_at, 'detalle' => "Enviado: {$t->cantidad_enviada} - Recibido total: {$t->cantidad_recibida} - Perdidas: {$t->perdidas}", 'link' => route('filament.admin.resources.tintorerias.edit', ['record' => $t->id]), ]; // Eventos por cada recepción $recepciones = $t->recepciones()->orderBy('fecha_recepcion')->get(); foreach ($recepciones as $r) { $events[] = [ 'tipo' => 'Recepción (Tintorería)', 'id' => $r->id, 'fecha' => $r->fecha_recepcion ?? $r->created_at, 'detalle' => "Recibido: {$r->cantidad} - Notas: " . ($r->notas ?? '—'), 'link' => route('filament.admin.resources.tintorerias.edit', ['record' => $t->id]), ]; } } $acabados = $op->procesosAcabado()->orderBy('fecha_recepcion')->get(); foreach ($acabados as $p) { $events[] = [ 'tipo' => 'Acabado', 'id' => $p->id, 'fecha' => $p->fecha_recepcion ?? $p->created_at, 'detalle' => "Enviado: {$p->cantidad_enviada} - Recibido: {$p->cantidad_recibida}", 'link' => route('filament.admin.resources.proceso-acabados.edit', ['record' => $p->id]), ]; } // Protege en entornos donde la migración aún no fue ejecutada if (\Illuminate\Support\Facades\Schema::hasTable('traslados_prenda')) { $traslados = $op->traslados()->orderBy('fecha_recepcion')->get(); } else { $traslados = collect(); } foreach ($traslados as $tr) { $events[] = [ 'tipo' => 'Traslado', 'id' => $tr->id, 'fecha' => $tr->fecha_recepcion ?? $tr->created_at, 'detalle' => "Origen: {$tr->origen} -> Destino: {$tr->destino} | Enviado: {$tr->cantidad_enviada} - Recibido: {$tr->cantidad_recibida} - Residual: {$tr->residual}", 'link' => route('filament.admin.resources.traslado-prendas.edit', ['record' => $tr->id]), ]; } $inventarios = $op->inventarioPrenda()->orderBy('fecha_ingreso')->get(); foreach ($inventarios as $inv) { $events[] = [ 'tipo' => 'Inventario', 'id' => $inv->id, 'fecha' => $inv->fecha_ingreso ?? $inv->created_at, 'detalle' => "Terminadas: {$inv->cantidad_terminada} - Disponibles: {$inv->cantidad_disponible}", 'link' => route('filament.admin.resources.inventario-prendas.edit', ['record' => $inv->id]), ]; } usort($events, function ($a, $b) { return strtotime($a['fecha']) <=> strtotime($b['fecha']); }); } @endphp
@if (!$op)
No se encontró la Orden de Producción.
@elseif (count($events) === 0)
No hay eventos registrados para esta orden.
@else
    @foreach ($events as $e)
  1. {{ $e['tipo'] }} #{{ $e['id'] }}

    {{ $e['detalle'] }}

    {{-- Acciones rápidas --}} @if(in_array($e['tipo'], ['Confección','Tintorería'])) @endif @if($e['tipo'] === 'Traslado') @php $tr = \App\Models\TrasladoPrenda::find($e['id']); @endphp
    @if($tr && $tr->estado !== 'recibido')
    @csrf
    @endif
    {{-- Modal --}}

    Traslado #{{ $e['id'] }} - Detalles

    @if($tr)

    Origen: {{ $tr->origen }} → Destino: {{ $tr->destino }}

    Enviado: {{ $tr->cantidad_enviada }} — Recibido: {{ $tr->cantidad_recibida ?? '—' }} — Residual: {{ $tr->residual ?? '—' }}

    @csrf
    @else

    No se encontró el traslado.

    @endif
    @endif
  2. @endforeach
@endif