Ir al contenido principal

REPORTE FLOTA

Fuente:  /var/www/html/qareportes/app/Http/Controllers/Cloud/ReportController.php

1) Nombre del reporte

  • Nombre: Reporte de Flota

  • Código / Alias: report_flota

  • Responsable:  Equipo de Reportes Cloud

  • Propósito (1 línea):


2) Alcance temporal

  • Campo(s) de fecha utilizados:

    • created_date (fecha de generación del registro)

    • first_date, second_date (fechas de validación del reporte)


  • Tipo de rango (diario / mensual / personalizado): Diario (usa date("Y-m-d") para ambos límites)


  • Inclusión de horas (sí/no).: Sí → Y-m-d H:i:s (rango implícito [00:00:00 – 23:59:59])


  • Zona horaria:  La del servidor


3) Origen de datos (tablas/APIs)

3.1 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_carguero_new

  • Alias (si aplica): car

  • Campos utilizados (clave → descripción):

    • car_placa → Placa del vehículo

    • car_codigo → Código interno del carguero

    • car_telefono → Teléfono asociado al carguero

    • car_tipoCarguero → Tipo de unidad (camión, camioneta, etc.)

    • car_pesobruto → Peso bruto total

    • car_cargautil → Capacidad de carga útil

    • car_modelo → Modelo del vehículo

    • car_marca → Marca del vehículo

    • car_tarjeta_circulacion → Número de tarjeta de circulación

    • car_tipo_grupo → Tipo de grupo (categoría del vehículo)

    • car_habilitado → Estado de habilitación (activo/inactivo)

    • car_terminal → Llave foránea que enlaza con emp_terminal.ter_id


  • Condiciones (WHERE) aplicadas: Se obtiene todo el registro de la tabla emp_carguero_new.


  • Tipo de unión con otras fuentes (JOIN y llave):  

    • LEFT JOIN emp_terminal AS ter ON ter.ter_id = car.car_terminal

      • Llave principal: ter.ter_id

      • Llave foránea: car.car_terminal



  • Observaciones (ej. particiones, índices): 

    • Índices agregados posteriormente en report_flota sobre:

      • codigo, placa, habilitado, created_date

    • No se mencionan particiones.



3.2 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_terminal

  • Alias (si aplica): ter

  • Campos utilizados (clave → descripción):

    • ter_nombre → Nombre del terminal

    • ter_id → Identificador del terminal


  • Condiciones (WHERE) aplicadas: No se aplican condiciones adicionales; los registros se enlazan únicamente por la relación LEFT JOIN con emp_carguero_new.


  • Tipo de unión con otras fuentes (JOIN y llave): Unión con emp_carguero_new mediante: car.car_terminal = ter.ter_id

  • Observaciones (ej. particiones, índices): Sin observaciones adicionales.


4) Filtros globales del reporte

  • Inclusiones (must-have): Todos los vehículos registrados en emp_carguero_new

  • Exclusiones (reglas de descarte): No aplica

  • Reglas por estado / habilitado: Se conserva car_habilitado como campo; no se filtra

  • Parámetros externos (si el usuario puede filtrarlo): No aplica (ejecución interna, sin filtros dinámicos)


5) Transformaciones y Reglas de negocio

  • Derivaciones de campos (cómo se calculan): 

Cada campo pasa por validación → si está vacío (!trim(...)) se asigna null o 0

  • habilitado se normaliza a 0 si está vacío

  • Se agrega created_date = date('Y-m-d H:i:s')

  • Se agrega status = 1 por defecto


  • Mapeos de estado: habilitado → 0/1

  • Reglas de validación (p.ej., sólo registros validados):

    • Solo registros con estructura válida (no se descartan por condición)

    • La tabla se recrea o trunca en cada ejecución

  • Reglas condicionales (si X entonces Y):

    • Si la tabla no existe → se crea

    • Si ya existe → se trunca antes de insertar


6) Estructura de salida

  • Tabla/archivo destino: report_flota

  • Particionado / sufijo: No aplica

  • Clave(s) primaria(s) o únicas: id INT AUTO_INCREMENT PRIMARY KEY

  • Columnas del reporte (nombre → tipo → descripción):

    • id → INT → Identificador autoincremental

    • placa → VARCHAR(100) → Placa del vehículo

    • codigo → VARCHAR(100) → Código del carguero o unidad

    • telefono → VARCHAR(100) → Teléfono asociado

    • tipounidad → VARCHAR(100) → Tipo de unidad de transporte

    • pesobruto → VARCHAR(100) → Peso bruto del vehículo

    • cargautil → VARCHAR(100) → Capacidad de carga útil

    • modelo → VARCHAR(100) → Modelo del vehículo

    • marca → VARCHAR(100) → Marca del vehículo

    • tarjetacircula → VARCHAR(100) → Número de tarjeta de circulación

    • tipogrupo → VARCHAR(100) → Tipo de grupo o categoría del vehículo

    • ternombre → VARCHAR(150) → Nombre del terminal o centro de operaciones

    • idterm → VARCHAR(100) → ID del terminal asociado

    • habilitado → VARCHAR(100) → Estado del vehículo (0 = inactivo, 1 = activo)

    • created_date → DATETIME → Fecha de creación del registro

    • status → TINYINT(4) → Estado del registro (1 = activo, 0 = inactivo)


  • Ordenamiento por defecto: No especificado (se asume orden por id ASC)


7) Frecuencia y operación

  • Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)

  • Ventana que recalcula (días/meses): Día actual (date("Y-m-d"))

  • Tamaño de lote / paginado (chunking): No aplica (procesa todo el set en memoria)

  • Tolerancia a fallos / reintentos:

    • Rollback automático ante excepción

    • Inserta log en emp_reportes_validation o error_reports

  • Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)


8) Calidad y controles

  • Validaciones previas/post:

    • Verificación de existencia de tabla (verifyExistTable)

    • Commit / rollback según resultado


  • Controles de duplicados:

    • No hay control de duplicados; la tabla se vacía antes de cada carga


  • Métricas de completitud (qué se monitorea):

    • Registro de validación en emp_reportes_validation con estado y fechas


9) Dependencias externas

  • APIs / servicios y endpoints: No aplica (solo conexiones internas a BD)

  • Autenticación / headers: No aplica

  • Mapeos y contratos de datos: Internos, controlados por las conexiones $this->empresarial, $this->reportes, $this->centos


10) Historial de cambios

2025-10-15 13:15 - Elian Franco Arroyo Rodas - Documentación inicial