{{-- Cumplimiento del ANS. Va en HTML y no en Highcharts: la interactividad aquí es NAVEGACIÓN —elegir proceso, abrir indicador— y de eso se encarga Livewire. --}}
Cumplimiento del ANS por proceso
Cada proceso tiene su propia parametrización; el indicador se evalúa contra su meta individual, en días hábiles de 8 horas
@if (!$vacio)
Indicadores
{{ $resumen['indicadores'] }}
En meta
{{ $resumen['enMeta'] }}
Fuera de ANS
{{ $resumen['fueraDeAns'] }}
@endif
@if ($vacio || count($procesos) === 0)
Este cliente no tiene indicadores de ANS parametrizados, o sus operaciones del periodo no registran los hitos necesarios para medirlos.
@else
{{-- Procesos --}}
@foreach ($procesos as $proceso) @php $activo = $seleccionado && $proceso['id'] === $seleccionado['id']; @endphp @endforeach
{{-- Indicadores del proceso --}}
{{ $seleccionado['nombre'] }}
{{ $seleccionado['total'] }} indicadores · {{ number_format($seleccionado['medidas'], 0, ',', '.') }} operaciones medidas · {{ number_format($seleccionado['fuera'], 0, ',', '.') }} fuera de meta
@foreach ($seleccionado['indicadores'] as $indicador) @php $abierto = $indicador['codigo'] === $indicadorAbierto; @endphp 0) wire:click="alternarIndicador('{{ $indicador['codigo'] }}')" style="cursor:pointer; background:{{ $abierto ? '#f3f6f5' : 'transparent' }};" @endif> @endforeach
Indicador Meta Real Cumplimiento Fuera
{{ $indicador['nombre'] }}
@if ($indicador['porDefecto'])
indicador principal del proceso
@endif
{{ rtrim(rtrim(number_format($indicador['meta'], 1, ',', '.'), '0'), ',') }} {{ $indicador['unidad'] === 'HORAS' ? 'h' : 'd' }} {{ is_null($indicador['promedio']) ? '—' : rtrim(rtrim(number_format($indicador['promedio'], 1, ',', '.'), '0'), ',') }} @if (is_null($indicador['cumplimiento'])) sin mediciones @else
{{-- Marcador del umbral parametrizado --}}
{{ number_format($indicador['cumplimiento'], 0) }}%
@endif
{{ $indicador['incumplen'] === 0 ? '—' : number_format($indicador['incumplen'], 0, ',', '.') }} @if ($indicador['incumplen'] > 0) {{ $abierto ? '↓' : '→' }} @endif
Haz clic en un indicador para ver sus operaciones fuera de meta Umbral parametrizado En meta En alerta Incumplido
{{-- Operaciones fuera de meta --}} @if ($detalle)
Operaciones fuera de meta
{{ $detalle['nombre'] }}
{{ $detalle['descripcion'] }}
@if ($detalle['total'] > count($detalle['operaciones'])) Las {{ count($detalle['operaciones']) }} de mayor desvío, de {{ number_format($detalle['total'], 0, ',', '.') }} @else Ordenadas por desvío sobre la meta @endif @if ($detalle['noMedibles'] > 0)
{{ number_format($detalle['noMedibles'], 0, ',', '.') }} {{ $detalle['noMedibles'] === 1 ? 'operación sin medir' : 'operaciones sin medir' }} (falta alguna fecha del tramo)
@endif
{{-- Las fechas que sustentan cada medición van en la tabla, para que el número de días se pueda verificar sin salir del panel. --}}
@foreach ($detalle['etapas'] as $codigo => $nombre) @endforeach @foreach ($detalle['operaciones'] as $operacion) @php $fechas = array(); foreach ($operacion['hitos'] as $hito) { $fechas[$hito['etapa']] = $hito; } @endphp @foreach ($detalle['etapas'] as $codigo => $nombre) @php $hito = isset($fechas[$codigo]) ? $fechas[$codigo] : null; @endphp @endforeach @endforeach
DO Pedido Cliente {{ $nombre }}
Etapa {{ $codigo }}
Meta Real Desvío
{{ $operacion['numdo'] }} {{ $operacion['pedido'] }} {{ $operacion['cliente'] }} @if (is_null($hito) || is_null($hito['instante'])) sin registro @else {{ \Carbon\Carbon::parse($hito['instante'])->format('d/m/Y') }}
{{ \Carbon\Carbon::parse($hito['instante'])->format('H:i') }} @if ($hito['manda']) · arranca @endif
@endif
{{ rtrim(rtrim(number_format($detalle['meta'], 1, ',', '.'), '0'), ',') }} {{ rtrim(rtrim(number_format($operacion['evaluado'], 1, ',', '.'), '0'), ',') }} +{{ rtrim(rtrim(number_format($operacion['desvio'], 1, ',', '.'), '0'), ',') }}
Los días se cuentan sobre jornada laboral de 8 horas (08:00–12:00 y 14:00–18:00), descontando domingos y festivos, y se truncan al día completo para evaluar la meta. La etapa marcada arranca es la que fija el inicio del tramo cuando el indicador tiene más de una actividad inicial.
{{-- Operaciones que no entraron al cálculo. No son incumplimientos: son registros incompletos que alguien tiene que corregir. --}} @if (count($detalle['sinMedir']) > 0)
Operaciones sin medir
Quedaron fuera del cálculo porque les falta alguna fecha del tramo. No cuentan como incumplimiento ni entran al porcentaje: corregir el registro en el ERP las incorpora al indicador.
@foreach ($detalle['etapas'] as $codigo => $nombre) @endforeach @foreach ($detalle['sinMedir'] as $operacion) @php $fechas = array(); foreach ($operacion['hitos'] as $hito) { $fechas[$hito['etapa']] = $hito; } @endphp @foreach ($detalle['etapas'] as $codigo => $nombre) @php $hito = isset($fechas[$codigo]) ? $fechas[$codigo] : null; @endphp @endforeach @endforeach
DO Pedido Cliente {{ $nombre }}
Etapa {{ $codigo }}
Qué falta
{{ $operacion['numdo'] }} {{ $operacion['pedido'] }} {{ $operacion['cliente'] }} @if (is_null($hito) || is_null($hito['instante'])) sin registro @else {{ \Carbon\Carbon::parse($hito['instante'])->format('d/m/Y') }}
{{ \Carbon\Carbon::parse($hito['instante'])->format('H:i') }}
@endif
@if ($operacion['motivo'] === 'fechas-invertidas') La fecha final es anterior a la inicial @elseif ($operacion['motivo'] === 'sin-control') El tramo está completo, pero falta la actividad de control {{ $detalle['etapas'][$operacion['faltantes'][0]] ?? $operacion['faltantes'][0] }} @else Falta registrar @foreach ($operacion['faltantes'] as $codigo) {{ $detalle['etapas'][$codigo] ?? $codigo }}@if (!$loop->last), @endif @endforeach @endif
@if ($detalle['noMedibles'] > count($detalle['sinMedir']))
Se listan {{ count($detalle['sinMedir']) }} de {{ number_format($detalle['noMedibles'], 0, ',', '.') }}.
@endif
@endif
@endif @endif