{{ $stats['abiertas'] }}
Abiertas
{{ $stats['parciales'] }}
Parciales
{{ number_format($stats['metros']) }}
Metros comprometidos
{{ $stats['rojos'] }}
En riesgo 🔴
@if($viewMode === 'cards')
@forelse($ovs as $ov) @php $avance = $ov->avance; $sem = $avance['semaforo'] ?? 'GRIS'; $pctG = min(100, $avance['pct_greige'] ?? 0); $pctC = min(100, $avance['pct_color'] ?? 0); $dias = $avance['dias_restantes']; $diasText = $dias !== null ? ($dias >= 0 ? "{$dias}d restantes" : "".abs($dias)."d vencida") : '—'; // Mini etapas $hasOPG = $avance['m_greige'] > 0; $hasOPC = $avance['m_color'] > 0; $etapas = [ ['label' => 'OPG', 'done' => $hasOPG, 'active' => false], ['label' => 'Greige', 'done' => $pctG >= 100, 'active' => $pctG > 0 && $pctG < 100], ['label' => 'OPC', 'done' => $hasOPC, 'active' => false], ['label' => 'Color', 'done' => $pctC >= 100, 'active' => $pctC > 0 && $pctC < 100], ['label' => 'Despacho', 'done' => $ov->estado === 'COMPLETA', 'active' => false], ]; @endphp
{{ $ov->cliente }}
{{ $ov->id }} {{ $ov->ref_cliente ? '· ' . $ov->ref_cliente : '' }}
{{ $ov->estado }}
Artículo: {{ $ov->articulo_id }} Metros: {{ number_format($ov->metros) }} m @if($ov->fecha_entrega) Entrega: {{ $ov->fecha_entrega }} ({!! $diasText !!}) @endif @if($ov->incoterm) {{ $ov->incoterm }} @endif
@foreach($etapas as $e)
{{ $e['label'] }}
@endforeach
Greige producido{{ number_format($pctG, 0) }}%
Color terminado{{ number_format($pctC, 0) }}%
@empty

No hay órdenes que coincidan con los filtros.

@endforelse
@endif @if($viewMode === 'tabla')
@forelse($ovs as $ov) @php $avance = $ov->avance; $pctC = min(100, $avance['pct_color'] ?? 0); $sem = $avance['semaforo'] ?? 'GRIS'; @endphp @empty @endforelse
OVClienteArtículoMetros EntregaEstadoAvance ColorSemáforo
{{ $ov->id }} {{ $ov->cliente }} {{ $ov->articulo_id }} {{ number_format($ov->metros) }} m {{ $ov->fecha_entrega ?? '—' }} {{ $ov->estado }}
{{ number_format($pctC, 0) }}%
Sin resultados
@endif
{{ $ovs->links() }}
@if($showModal) @endif