@include('pdf.styles')
@include('pdf.partials.header-pdf', ['empresa' => $empresa, 'title' => 'REPORTE DE ASISTENCIAS | '. $empresa->name])
Fecha de Generación: {{ now()->format('d/m/Y H:i:s') }} Generado por: {{ auth()->user()->name ?? 'Sistema' }} Período: @if($filtros['fecha_desde'] && $filtros['fecha_hasta']) {{ \Carbon\Carbon::parse($filtros['fecha_desde'])->format('d/m/Y') }} - {{ \Carbon\Carbon::parse($filtros['fecha_hasta'])->format('d/m/Y') }} @else Todos los registros @endif |
Total de Registros: {{ $records->count() }} Empleados: {{ $records->unique('empleado_id')->count() }} Días Reportados: {{ $records->unique('fecha')->count() }} |
Registros Completos:
{{ $records->whereNotNull('entrada_at')->whereNotNull('salida_at')->count() }} |
Registros Incompletos:
{{ $records->filter(function($a) { return is_null($a->entrada_at) || is_null($a->salida_at); })->count() }} |
Tardanzas:
{{ $records->filter(function($a) { if (is_null($a->entrada_at)) return false; $horaEntrada = \Carbon\Carbon::parse($a->entrada_at); $empleado = $a->empleado; if ($empleado->turnos->isEmpty()) return false; foreach ($empleado->turnos as $turno) { $horaTurnoEntrada = \Carbon\Carbon::parse($turno->hora_entrada); $tolerancia = 30; $horaLimite = $horaTurnoEntrada->copy()->addMinutes($tolerancia); if ($horaEntrada > $horaLimite) { return true; } } return false; })->count() }} |
Puntuales:
{{ $records->filter(function($a) { if (is_null($a->entrada_at)) return false; $horaEntrada = \Carbon\Carbon::parse($a->entrada_at); $empleado = $a->empleado; if ($empleado->turnos->isEmpty()) return false; foreach ($empleado->turnos as $turno) { $horaTurnoEntrada = \Carbon\Carbon::parse($turno->hora_entrada); $tolerancia = 30; $horaLimite = $horaTurnoEntrada->copy()->addMinutes($tolerancia); if ($horaEntrada <= $horaLimite) { return true; } } return false; })->count() }} |
Empleados Ausentes:
{{ $empleadosAusentes ? $empleadosAusentes->count() : 0 }} |
Empleado: {{ $empleadoFiltrado->nombre ?? 'N/A' }} | @endif @if($filtros['fecha_desde'])Desde: {{ \Carbon\Carbon::parse($filtros['fecha_desde'])->format('d/m/Y') }} | @endif @if($filtros['fecha_hasta'])Hasta: {{ \Carbon\Carbon::parse($filtros['fecha_hasta'])->format('d/m/Y') }} | @endif @if($turnoFiltrado)Turno: {{ $turnoFiltrado->descripcion }} ({{ \Carbon\Carbon::parse($turnoFiltrado->hora_entrada)->format('H:i') }} - {{ \Carbon\Carbon::parse($turnoFiltrado->hora_salida)->format('H:i') }}) | @endif
Mes: {{ date('F', mktime(0, 0, 0, $filtros['mes'], 1)) }} | @endif @if($filtros['anio'])Año: {{ $filtros['anio'] }} | @endif @if($filtros['tipo_registro'])Tipo: @switch($filtros['tipo_registro']) @case('completa') Completa @break @case('solo_entrada') Solo Entrada @break @case('solo_salida') Solo Salida @break @case('incompleta') Incompleta @break @default {{ $filtros['tipo_registro'] }} @endswitch | @endif @if($filtros['tardanzas'])Tardanzas: @switch($filtros['tardanzas']) @case('1') Después de 10:30 PM @break @case('2') Después de 9:30 AM @break @case('3') Después de 3:30 PM @break @default {{ $filtros['tardanzas'] }} @endswitch | @endif
# | Empleado | Fecha y Hora Entrada | Fecha y Hora Salida | Estado | Puntualidad | Horas Trabajadas |
---|---|---|---|---|---|---|
{{ $index + 1 }} |
{{ $empleado->nombre }} {{ $empleado->apellido }} {{ $empleado->codigo }} |
@if($asistencia->entrada_at) {{ \Carbon\Carbon::parse($asistencia->entrada_at)->format('d/m/Y H:i:s') }} @else Sin registro @endif | @if($asistencia->salida_at) {{ \Carbon\Carbon::parse($asistencia->salida_at)->format('d/m/Y H:i:s') }} @else Sin registro @endif | {{ $estado }} | @if($puntualidad) {{ $puntualidad }} @else - @endif | {{ $horasTrabajadas ?: '-' }} |
# | Empleado | Fecha Ausencia | Turno | Observación |
---|---|---|---|---|
{{ $index + 1 }} |
{{ $ausencia->empleado->nombre }} {{ $ausencia->empleado->apellido }} {{ $ausencia->empleado->codigo }} |
{{ \Carbon\Carbon::parse($ausencia->fecha_ausencia)->format('d/m/Y') }} | @if($turnoFiltrado) {{ $turnoFiltrado->descripcion }} @else - @endif | {{ $ausencia->observacion }} |
Información del Sistema: • Reporte generado automáticamente • Puntualidad basada en hora de entrada del turno • Tolerancia: 30 minutos después de la hora del turno |
Leyenda: • Completa - Entrada y salida registradas • Incompleta - Falta entrada o salida • Tardanza - Entrada después de la hora límite del turno • Ausente - No registró entrada en la fecha |