REPORTE ORDENES DE TRABAJO - SERVICIOS
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/CdTalleresController.php
1) Nombre del reporte
-
Nombre: Reporte de Órdenes de Trabajo – Servicios
-
Código / Alias: updateOtServicio
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados: first_day, last_day, fecha_trabajo_termino
-
Tipo de rango (diario / mensual / personalizado): Mensual (automático según el mes actual y hasta 12 meses previos)
-
Inclusión de horas (sí/no).: Si [00:00:00 – 23:59:59]
-
Zona horaria: La del servidor
3) Origen de datos (tablas/APIs)
3.1 Conexión / Base: CDTALLERES
-
Tabla / Recurso: tabList Servicios
-
Alias (si aplica): ser
-
Campos utilizados (clave → descripción):
-
name → Identificador único del servicio registrado.
-
precio → Precio del servicio (puede ser nulo, reemplazado por 0 si no existe).
-
nombre_de_servicio → Nombre del servicio realizado.
-
mecanico → Código o identificador del mecánico asignado.
-
nombre_mecanico → Nombre del mecánico que realizó el trabajo.
-
tercero → Indicador si el servicio fue realizado por un tercero (1 = sí, 0 = no).
-
parent → Llave foránea que enlaza con la tabla tabOrden de Trabajo 2.
-
Condiciones (WHERE) aplicadas:
-
Se filtran los registros de servicios cuyos trabajos terminados (fecha_trabajo_termino) se encuentren entre la fecha de inicio y la fecha de fin especificadas.
-
Adicionalmente, se excluyen los registros sin fecha de término (IS NOT NULL).
-
En otras palabras: Sólo se consideran los servicios con una fecha de término válida y dentro del rango de fechas solicitado.
-
Tipo de unión con otras fuentes (JOIN y llave): INNER JOIN implícito mediante una unión LEFT JOIN con la tabla tabOrden de Trabajo 2, utilizando la llave:
-
ser.parent = ord.name.
-
Observaciones (ej. particiones, índices):
-
Se agrupan los resultados posteriormente por nombre de mecánico o por tipo de servicio ("TERCEROS").
-
Se calculan indicadores de atraso, pendientes y montos.
-
No se especifican índices directos, pero en la creación dinámica de tablas (report_ot_servicio_YYYY_MM) se añaden índices a:
-
nombre_de_servicio
-
status
-
created_date
3.2 Conexión / Base: CDTALLERES
-
Tabla / Recurso: tabOrden de Trabajo 2
-
Alias (si aplica): ord
-
Campos utilizados (clave → descripción):
-
name → Identificador de la orden de trabajo.
-
lugar → Lugar o taller donde se ejecutó el trabajo.
-
dias_de_atraso → Número de días de atraso de la orden.
-
estado_ot → Estado actual de la orden (Abierto, Cerrado, etc.).
-
fecha_trabajo_termino → Fecha en que el trabajo fue finalizado.
-
Condiciones (WHERE) aplicadas:
-
Filtra las órdenes de trabajo que:
-
Tienen una fecha de término no nula.
-
Se encuentran entre la fecha de inicio y la fecha fin indicadas (fecha_trabajo_termino >= fecha_ini y <= fecha_fin).
-
Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN con la tabla tabList Servicios mediante la llave:
-
ord.name = ser.parent.
-
Observaciones (ej. particiones, índices):
-
La información resultante se agrupa y transforma para formar el reporte report_ot_servicio_YYYY_MM.
-
Los datos consolidados se almacenan en tablas mensuales con índices sobre nombre_de_servicio, status y created_date.
-
No se aplican filtros adicionales por estado o taller.
4) Filtros globales del reporte
-
Inclusiones (must-have): Registros con fecha de término (fecha_trabajo_termino no nula)
-
Exclusiones (reglas de descarte): Ninguna explícita, excepto exclusión implícita por ausencia de fecha
-
Reglas por estado / habilitado: Campo status = 1 (activos)
-
Parámetros externos (si el usuario puede filtrarlo): Fechas de inicio y fin (definidas por cada iteración del rango mensual)
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
universo: contador total de registros agrupados por mecánico o tercero
-
pendiente: 1 si estado_ot ≠ ‘Cerrado’
-
atraso: 1 si dias_de_atraso no está en [‘Al día’, ‘’, null]
-
monto: suma acumulada de precio
-
Mapeos de estado:
-
estado_ot = Cerrado → pendiente = 0
-
tercero = 1 → grupo TERCEROS
-
Reglas de validación (p.ej., sólo registros validados):
-
Verifica existencia de tabla antes de insertar
-
Crea índices (nombre_de_servicio, status, created_date)
-
Reglas condicionales (si X entonces Y):
-
Si la tabla no existe → se crea
-
Si ya existe → se trunca y reutiliza
-
Si ocurre error → rollback y registro en error_reports
6) Estructura de salida
-
Tabla/archivo destino: report_ot_servicio_YYYY_MM
-
Particionado / sufijo: Mensual (por año y mes)
-
Clave(s) primaria(s) o únicas: id (autoincremental)
-
Columnas del reporte (nombre → tipo → descripción):
-
id → INT → Identificador único del registro
-
nombre_de_servicio → VARCHAR(255) → Nombre del servicio o del mecánico
-
universo → VARCHAR(10) → Total de registros agrupados
-
pendiente → VARCHAR(10) → Indicador de registros pendientes
-
atraso → VARCHAR(10) → Indicador de registros con atraso
-
monto → VARCHAR(10) → Monto monetario acumulado
-
lugar → VARCHAR(100) → Taller o sede correspondiente
-
fecha → DATE → Fecha de referencia del registro
-
created_date → DATETIME → Fecha de inserción en la base de datos
-
status → TINYINT → Estado del registro (1 = activo, 0 = inactivo)
-
Ordenamiento por defecto: created_date ASC
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): Hasta 12 meses atrás
-
Tamaño de lote / paginado (chunking): 900 registros por bloque (array_chunk)
-
Tolerancia a fallos / reintentos: Rollback y registro en tabla error_reports
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post:
-
Verificación de tabla (verifyExistTable)
-
Inserción en emp_reportes_validation
-
Controles de duplicados: Truncado previo si la tabla ya existía
-
Métricas de completitud (qué se monitorea):
-
Validación de status (1 = correcto, 0 = error)
-
Log de errores en error_reports
9) Dependencias externas
-
APIs / servicios y endpoints:
-
https://recursoshumanos.shalom.com.pe/service-ordenWork2/{inicio}/{fin}
-
APICDTALLERES/method/send-query-database
-
Autenticación / headers:
-
{
-
"Accept": "application/json",
-
"Content-Type": "application/json"
-
}
-
Mapeos y contratos de datos:
-
Formato JSON → decode → inserción directa en tabla
-
Campos estandarizados entre service-ordenWork2 y service_ordenWork3
10) Historial de cambios
2025-10-21 11:37 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar