Compare commits

..

No commits in common. "2ca6950751783e30e2db558cc5ed02496fe52431" and "e9fd55aa3b6c9f35bad1940a6a3553a8137a3ee4" have entirely different histories.

3 changed files with 39 additions and 64 deletions

View File

@ -403,38 +403,25 @@ public function searchRecord(Request $request)
$paginatedRecords->getCollection()->transform(function ($record) { $paginatedRecords->getCollection()->transform(function ($record) {
$latestLog = $record->vehicle->vehicleTagLogs->first(); $latestLog = $record->vehicle->vehicleTagLogs->first();
// Construir historial completo de tags // Detectar si hubo sustitución y obtener datos del tag anterior
$tagsHistory = []; $substitutionData = null;
$order = 1;
$vehicleLogs = $record->vehicle->vehicleTagLogs->sortBy('created_at');
$processedTags = [];
foreach ($vehicleLogs as $log) { // Buscar si existe ALGÚN log de sustitución (no solo el último)
$tagId = $log->tag_id; $substitutionLogs = $record->vehicle->vehicleTagLogs
if ($tagId && !in_array($tagId, $processedTags)) { ->where('action_type', 'sustitucion')
$processedTags[] = $tagId; ->sortBy('id')
$tag = $log->tag; ->take(2);
// Buscar fecha de cancelación si existe if ($substitutionLogs->count() >= 2) {
$cancelLog = $vehicleLogs $oldTagLog = $substitutionLogs->first(); // Tag cancelado
->where('tag_id', $tagId) $newTagLog = $substitutionLogs->last(); // Tag nuevo
->whereIn('action_type', ['cancelacion', 'sustitucion'])
->whereNotNull('cancellation_at')
->first();
$tagsHistory[] = [ $substitutionData = [
'order' => $order++, 'old_folio' => $oldTagLog->tag?->folio ?? null,
'tag_id' => $tagId, 'old_tag_number' => $oldTagLog->tag?->tag_number ?? null,
'folio' => $tag?->folio, 'new_folio' => $newTagLog->tag?->folio ?? $record->folio,
'tag_number' => $tag?->tag_number, 'new_tag_number' => $newTagLog->tag?->tag_number ?? null,
'status' => $tag?->status?->code ?? 'unknown', ];
'assigned_at' => $vehicleLogs->where('tag_id', $tagId)
->whereIn('action_type', ['inscripcion', 'sustitucion'])
->first()?->created_at,
'cancelled_at' => $cancelLog?->cancellation_at,
'is_current' => $tag?->id === $record->vehicle->tag?->id,
];
}
} }
return [ return [
@ -446,9 +433,8 @@ public function searchRecord(Request $request)
'action_type' => $latestLog?->action_type ?? 'inscripcion', 'action_type' => $latestLog?->action_type ?? 'inscripcion',
'action_date' => $latestLog?->created_at ?? $record->created_at, 'action_date' => $latestLog?->created_at ?? $record->created_at,
// HISTORIAL DE TAGS // SUSTITUCIÓN
'tags_history' => $tagsHistory, 'substitution' => $substitutionData,
'total_tags' => count($tagsHistory),
// MÓDULO // MÓDULO
'module' => $record->module ? [ 'module' => $record->module ? [

View File

@ -22,35 +22,24 @@ class CatalogNameImgSeeder extends Seeder
public function run(): void public function run(): void
{ {
$names = [ $names = [
'INE ANVERSO', 'FRENTE',
'INE REVERSO', 'TRASERA',
'TARJETA DE CIRCULACIÓN ANVERSO', 'LATERAL',
'TARJETA DE CIRCULACIÓN REVERSO', 'RECEPCION',
'FACTURA ORIGEN ANVERSO', 'CONSTANCIA',
'FACTURA ORIGEN REVERSO', 'VERIFICA',
'FACTURA ACTUAL ANVERSO', 'FACTURA/CERTIFICADO FRONTAL',
'FACTURA ACTUAL REVERSO', 'FACTURA/CERTIFICADO TRASERA',
'FACTURA SIN VALOR ANVERSO', 'PEDIMENTO FRONTAL',
'FACTURA SIN VALOR REVERSO', 'PEDIMENTO TRASERO',
'CARTA FACTURA ANVERSO',
'CARTA FACTURA REVERSO',
'TITULO ANVERSO',
'TITULO REVERSO',
'PEDIMENTO ANVERSO',
'PEDIMENTO REVERSO',
'PODER NOTARIAL', 'PODER NOTARIAL',
'CEDULA DE IDENTIFICACION FISCAL', 'CEDULA DE IDENTIFICACION FISCAL',
'CARTA PODER', 'CARTA PODER',
'REPORTE DE LA CONSULTA CIUDADANA', 'ACTA CIRCUNSTANCIADA DE HECHOS',
'FORMATO SOLICITUD DE SUSTITUCIÓN DE CONSTANCIA DE INSCRIPCIÓN', 'IDENTIFICACIÓN OFICIAL FRENTE',
'HOJA DE RECEPCIÓN', 'IDENTIFICACIÓN OFICIAL TRASERA',
'HOJA DE VERIFICACIÓN', 'TARJETA DE CIRCULACIÓN',
'FOTO LADO FRONTAL DEL VEHÍCULO', 'FOTO VIN',
'FOTO LADO TRASERO DEL VEHÍCULO',
'FOTO LADO LATERAL DEL VEHÍCULO',
'FOTO UBICACIÓN DEL VIN',
'FOTO CONSTANCIA DE INSCRIPCIÓN PEGADA (CI MORADA O AZUL)',
'FORMATO DE CONSTANCIA DE SUSTITUCIÓN',
'EVIDENCIA ADICIONAL', 'EVIDENCIA ADICIONAL',
]; ];

View File

@ -17,7 +17,7 @@ public function run(): void
[ [
'name' => 'MODULO PARQUE LA CHOCA', 'name' => 'MODULO PARQUE LA CHOCA',
'municipality_id' => 4, 'municipality_id' => 4,
'address' => 'ESTACIONAMIENTO DEL PARQUE LA CHOCA, CENTRO, TABASCO', 'address' => 'CIRCUITO CARLOS PELLICER S/N JUNTO A PLAZA MALLORCA ESTACIONAMIENTO DEL PARQUE LA CHOCA',
'colony' => 'CENTRO', 'colony' => 'CENTRO',
'cp' => null, 'cp' => null,
'longitude' => -92.954605, 'longitude' => -92.954605,
@ -27,7 +27,7 @@ public function run(): void
[ [
'name' => 'MODULO FINANZAS BASE 4', 'name' => 'MODULO FINANZAS BASE 4',
'municipality_id' => 4, 'municipality_id' => 4,
'address' => 'ESTACIONAMIENTO DE FINANZAS BASE 4, CENTRO, TABASCO', 'address' => 'AV. RUIZ CORTINES S/N',
'colony' => 'CASA BLANCA', 'colony' => 'CASA BLANCA',
'cp' => null, 'cp' => null,
'longitude' => -92.923486, 'longitude' => -92.923486,
@ -37,7 +37,7 @@ public function run(): void
[ [
'name' => 'MODULO CARDENAS', 'name' => 'MODULO CARDENAS',
'municipality_id' => 2, 'municipality_id' => 2,
'address' => 'ESTACIONAMIENTO DE LA POLICIA ESTATAL DE CAMINOS, CARDENAS, TABASCO', 'address' => 'ANILLO PERIFERICO CARLOS MOLINA S/N',
'colony' => 'SANTA MARIA DE GUADALUPE', 'colony' => 'SANTA MARIA DE GUADALUPE',
'cp' => null, 'cp' => null,
'longitude' => -93.362824, 'longitude' => -93.362824,
@ -47,7 +47,7 @@ public function run(): void
[ [
'name' => 'MODULO PASEO DE LA SIERRA', 'name' => 'MODULO PASEO DE LA SIERRA',
'municipality_id' => 4, 'municipality_id' => 4,
'address' => 'ESTACIONAMIENTO PASEO DE LA SECRETARIA DE FINANZAS, CENTRO, TABASCO', 'address' => ' AV. PASEO DE LA SIERRA #435 COL. REFORMA, C.P. 86080 VILLAHERMOSA, TABASCO,',
'colony' => 'REFORMA', 'colony' => 'REFORMA',
'cp' => null, 'cp' => null,
'longitude' => -92.929378, 'longitude' => -92.929378,
@ -57,8 +57,8 @@ public function run(): void
[ [
'name' => 'CENTRO DE ACTIVACION COMALCALCO', 'name' => 'CENTRO DE ACTIVACION COMALCALCO',
'municipality_id' => 5, 'municipality_id' => 5,
'address' => '', 'address' => 'MONSERRAT #5',
'colony' => 'ESTACIONAMIENTO DE LA POLICIA ESTATAL DE CAMINOS, COMALCALCO, TABASCO', 'colony' => 'SANTO DOMINGO',
'cp' => null, 'cp' => null,
'longitude' => -93.218679, 'longitude' => -93.218679,
'latitude' => 18.264577, 'latitude' => 18.264577,