@extends('layouts.app') @section('title', 'Reportes — Calidad') @section('page-title', 'Reportes — Calidad') @section('breadcrumb') @endsection @section('content') {{-- ── KPIs ── --}}
Recepciones mes {{ $kpis['recepciones_mes'] }}
{{ $kpis['recepciones_aprobadas'] }} aprobadas  ·  {{ $kpis['recepciones_rechazadas'] }} rechazadas
Certificados mes {{ $kpis['certificados_mes'] }}
{{ $kpis['certificados_aprobados'] }} aprobados
NC Abiertas {{ $kpis['nc_abiertas'] }}
{{ $kpis['nc_mes'] }} este mes
Paros Activos {{ $kpis['paros_activos'] }}
{{ $kpis['paros_mes'] }} este mes
Controles en Proceso {{ $kpis['controles_en_proceso'] }}
en línea ahora
{{-- ── Generar Informe PDF ── --}}

Informe Consolidado de Calidad — PDF

Genera un PDF con todas las actividades de calidad del período: recepciones, controles en línea, certificados, no conformidades, limpiezas y paros.

{{-- ── Accesos rápidos a sub-reportes ── --}}
@php $cards = [ ['route'=>'calidad.reportes.recepciones', 'icon'=>'fa-seedling', 'color'=>'info', 'title'=>'Recepciones MP', 'desc'=>'Filtrar por fecha, fruta y resultado'], ['route'=>'calidad.reportes.certificados', 'icon'=>'fa-certificate', 'color'=>'success', 'title'=>'Certificados', 'desc'=>'Buscar por resultado, fruta y destino'], ['route'=>'calidad.reportes.controles-linea', 'icon'=>'fa-flask', 'color'=>'primary', 'title'=>'Control en Línea', 'desc'=>'Muestras Brix/pH por etapa y turno'], ['route'=>'calidad.reportes.no-conformidades', 'icon'=>'fa-exclamation-triangle', 'color'=>'danger', 'title'=>'No Conformidades', 'desc'=>'Filtrar por estado, origen y tipo'], ['route'=>'calidad.reportes.paros', 'icon'=>'fa-stop-circle', 'color'=>'warning', 'title'=>'Paros de Línea', 'desc'=>'Historial de paros por causa y fecha'], ]; @endphp @foreach($cards as $c)
{{ $c['title'] }}
{{ $c['desc'] }}
@endforeach
{{-- Últimas recepciones --}}

Últimas Recepciones

Ver todo
@forelse($ultimasRecepciones as $r) @empty @endforelse
FechaFrutaKgResultado
{{ $r->fecha->format('d/m/Y') }} {{ $r->fruta->nombre }} {{ number_format($r->kg_recibidos, 0) }} {{ strtoupper($r->resultado) }}
Sin datos.
{{-- Últimos certificados --}}

Últimos Certificados

Ver todo
@forelse($ultimosCertificados as $c) @empty @endforelse
FrutaBrixpHResultado
{{ $c->numero }} {{ $c->fruta->nombre }} {{ $c->brix_resultado }}° {{ $c->ph_resultado }} {{ strtoupper($c->resultado) }}
Sin datos.
{{-- NC abiertas --}}

No Conformidades Abiertas

Ver todo
@forelse($ncAbiertas as $nc) @empty @endforelse
CódigoTipoDescripciónVenceEstado
{{ $nc->codigo }} {{ $nc->tipo }} {{ Str::limit($nc->descripcion, 35) }} @if($nc->fecha_limite) {{ \Carbon\Carbon::parse($nc->fecha_limite)->format('d/m/Y') }} @else —@endif {{ strtoupper($nc->estado) }}
Sin NC abiertas.
{{-- Paros activos --}}

Paros Activos

Ver todo
@forelse($parosActivos as $p) @empty @endforelse
CódigoFechaCausaInicio
{{ $p->codigo }} {{ $p->fecha->format('d/m/Y') }} {{ \App\Models\ParoLinea::$CAUSAS[$p->causa] ?? $p->causa }} {{ $p->hora_inicio }}
Sin paros activos.
@endsection