From 80e5ebc352501615da0659fc6108e7eb91235007 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Sat, 4 Apr 2026 10:31:49 -0600 Subject: [PATCH] =?UTF-8?q?fix:=20mejorar=20l=C3=B3gica=20de=20consulta=20?= =?UTF-8?q?de=20logs=20en=20excel=20para=20sustituciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Repuve/ExcelController.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Repuve/ExcelController.php b/app/Http/Controllers/Repuve/ExcelController.php index 42b92bb..a8f6984 100644 --- a/app/Http/Controllers/Repuve/ExcelController.php +++ b/app/Http/Controllers/Repuve/ExcelController.php @@ -326,26 +326,19 @@ public function constanciasSustituidas(Request $request) $module = $moduleId ? Module::find($moduleId) : null; - // Consulta de Logs + // Consulta de Logs: solo sustitución $logs = VehicleTagLog::with(['vehicle', 'tag', 'cancellationReason']) ->where(function ($query) use ($fechaInicio, $fechaFin) { - // sustitucion normal: el log del TAG viejo tiene cancellation_at + // sustitucion: tag viejo cancelado o inscripción con folio previo en REPUVE $query->where(function ($q) use ($fechaInicio, $fechaFin) { $q->where('action_type', 'sustitucion') ->whereNotNull('cancellation_at') ->whereBetween('cancellation_at', [$fechaInicio, $fechaFin]); }) - // sustitucion_primera_vez activo: un solo log sin cancellation_at, filtrar por created_at + // sustitucion_primera_vez: primera asignación, sin folio previo en REPUVE ->orWhere(function ($q) use ($fechaInicio, $fechaFin) { $q->where('action_type', 'sustitucion_primera_vez') - ->whereNull('cancellation_at') ->whereBetween('created_at', [$fechaInicio, $fechaFin]); - }) - // sustitucion_primera_vez cancelado: fue el tag viejo en una sustitución posterior - ->orWhere(function ($q) use ($fechaInicio, $fechaFin) { - $q->where('action_type', 'sustitucion_primera_vez') - ->whereNotNull('cancellation_at') - ->whereBetween('cancellation_at', [$fechaInicio, $fechaFin]); }); }) ->when($moduleId, function ($query) use ($moduleId) { @@ -362,8 +355,8 @@ public function constanciasSustituidas(Request $request) // PREPARACIÓN DE DATOS $data = $logs->map(function ($log) { - // sustitucion_primera_vez activo (sin cancellation_at): el log mismo ES el nuevo TAG asignado - if ($log->action_type === 'sustitucion_primera_vez' && is_null($log->cancellation_at)) { + // sustitucion_primera_vez: el log mismo ES el nuevo TAG asignado (no hay folio anterior) + if ($log->action_type === 'sustitucion_primera_vez') { return [ 'niv' => $log->vehicle->niv ?? '', 'nrpv' => $log->vehicle->nrpv ?? '', @@ -378,7 +371,7 @@ public function constanciasSustituidas(Request $request) ]; } - // sustitucion normal: este log es el TAG viejo cancelado, buscar el nuevo TAG + // sustitucion: este log es el TAG viejo cancelado, buscar el nuevo TAG $newTagLog = VehicleTagLog::with('tag') ->where('vehicle_id', $log->vehicle_id) ->whereIn('action_type', ['sustitucion_primera_vez', 'sustitucion'])