REPORTE INFORMATION
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/ReportController.php
1) Nombre del reporte
-
Nombre: Reporte Information
-
Código / Alias: report_information
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados:
-
ose_fhpreferenciapartida (Guías emitidas)
-
ent_fecha (Entregas)
-
cop_fechaemision (Comprobantes emitidos)
-
cop_fhanulado (Comprobantes anulados)
-
ose_fechaanulado (GRT anuladas)
-
Tipo de rango (diario / mensual / personalizado): con subdivisión diaria dentro del mes. Se generan intervalos desde first_month hasta last_month del año actual, extendiéndose a diciembre del año anterior si el mes actual ≤ 2.
-
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: CAPACITACION
-
Tabla / Recurso: tabEmployee
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
name → Identificador del empleado
-
nombre_completo → Nombre completo del empleado
-
passport_number → Número de documento (usado como clave con usuario)
-
Condiciones (WHERE) aplicadas: Obtiene todos los registros de empleados, ordenados alfabéticamente por nombre.
-
Tipo de unión con otras fuentes (JOIN y llave): Relación lógica con usuarios (emp_usuario.usr_id = passport_number).
-
Observaciones (ej. particiones, índices): Fuente API externa consumida vía método dbErp() hacia APICAPACITACION/method/send-query-database.
3.2 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_usuario
-
Alias (si aplica): u
-
Campos utilizados (clave → descripción):
-
usr_id → Identificador del usuario
-
usr_terminalid → ID de la terminal asignada
-
usr_alias → Nombre o alias de usuario
-
usr_rol → Rol del usuario
-
Condiciones (WHERE) aplicadas: No aplica filtros, obtiene todos los usuarios activos.
-
Tipo de unión con otras fuentes (JOIN y llave): Llave lógica con emp_persona.per_nrodocumento = emp_usuario.usr_id.
-
Observaciones (ej. particiones, índices): No presenta filtros de estado ni eliminación, posible optimización agregando WHERE usr_estado = 1.
3.3 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_persona
-
Alias (si aplica): p
-
Campos utilizados (clave → descripción):
-
per_nrodocumento → Documento de identidad (clave)
-
per_nombrerzsoc, per_apellidopaterno, per_apellidomaterno → Concatenados como nombre completo
-
Condiciones (WHERE) aplicadas: Filtra personas cuyo documento (per_nrodocumento) exista en el conjunto de usuarios (usr_id).
-
Tipo de unión con otras fuentes (JOIN y llave): INNER JOIN lógico por documento.
-
Observaciones (ej. particiones, índices): Usado solo si no se encuentra coincidencia en la tabla de empleados.
3.4 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_terminal
-
Alias (si aplica): p
-
Campos utilizados (clave → descripción):
-
ter_id → Identificador de terminal
-
ter_nombre → Nombre de terminal
-
ter_zona → Zona asignada
-
Condiciones (WHERE) aplicadas: No aplica. Se obtiene toda la lista de terminales.
-
Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN lógico mediante usr_terminalid.
-
Observaciones (ej. particiones, índices): Usado para mostrar el nombre de la terminal asociada al usuario.
3.5 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_ordenservicio
-
Alias (si aplica): os
-
Campos utilizados (clave → descripción):
-
ose_id → Identificador de orden
-
ose_fhpreferenciapartida → Fecha preferida de partida
-
ose_montototal → Monto total de la orden
-
usercreaid → Usuario que generó la orden
-
ose_estadoPago, ose_tipoanulado, ose_estado, eliminado → Estados de control
-
Condiciones (WHERE) aplicadas:
-
Se filtran las órdenes con:
-
Estado pago distinto de AN o DA
-
ose_tipoanulado vacío
-
ose_estado = '1' y eliminado = '0'
-
Rango de fechas (ose_fhpreferenciapartida BETWEEN fecha_inicio AND fecha_fin)
-
usercreaid perteneciente al grupo de usuarios válidos.
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica (consulta directa).
-
Observaciones (ej. particiones, índices): Los resultados se agrupan por fecha y usuario.
3.6 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_entrega
-
Alias (si aplica): ent
-
Campos utilizados (clave → descripción):
-
ent_user → Usuario que registra la entrega
-
ent_fecha → Fecha de entrega
-
ent_eliminado → Indicador lógico de borrado
-
ent_osid → Clave foránea hacia emp_ordenservicio
-
Condiciones (WHERE) aplicadas:
-
ose_estadoPago NOT IN ('DA', 'AN')
-
ose_tipoanulado vacío
-
os.eliminado = '0' y os.ose_estado = '1'
-
ent.ent_eliminado = '0'
-
Rango de fechas (ent_fecha BETWEEN inicio y fin)
-
ent_user dentro de los usuarios válidos.
-
Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN emp_ordenservicio os ON ent.ent_osid = os.ose_id
-
Observaciones (ej. particiones, índices): Agrupa por fecha y usuario.
3.7 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_comppago
-
Alias (si aplica): comp
-
Campos utilizados (clave → descripción):
-
cop_id → Identificador de comprobante
-
cop_montoTotal → Monto total
-
cop_fechaemision → Fecha de emisión
-
cop_estado_pago → Estado del comprobante
-
usercreaid → Usuario que generó el comprobante
-
Condiciones (WHERE) aplicadas:
-
cop_estado_pago != 'AN'
-
cop_estado = '1'
-
eliminado = '0'
-
Rango de fechas (cop_fechaemision BETWEEN inicio y fin)
-
Usuario en lista válida.
-
Tipo de unión con otras fuentes (JOIN y llave): no aplica
-
Observaciones (ej. particiones, índices): Agrupado por fecha y usuario.
3.8 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_comppago
-
Alias (si aplica): cop
-
Campos utilizados (clave → descripción):
-
cop_id
-
cop_fhanulado
-
cop_estado_pago
-
useranula
-
cop_nota_credito
-
Condiciones (WHERE) aplicadas:
-
cop_estado_pago = 'AN'
-
cop_nota_credito IS NULL OR cop_nota_credito != '1'
-
cop_fhanulado BETWEEN inicio y fin
-
useranula dentro del grupo de usuarios válidos.
-
Tipo de unión con otras fuentes (JOIN y llave): no aplica
-
Observaciones (ej. particiones, índices): Se obtienen comprobantes anulados, agrupados por fecha y usuario.
3.8 Conexión / Base: EMPRESARIAL
-
Tabla / Recurso: emp_ordenservicio (GRT anuladas)
-
Alias (si aplica): os
-
Campos utilizados (clave → descripción):
-
ose_id
-
ose_fechaanulado
-
ose_estadoPago
-
ose_personaanulado
-
ose_remitecontactofono
-
Condiciones (WHERE) aplicadas:
-
ose_estadoPago = 'AN'
-
ose_fechaanulado dentro del rango de fechas
-
ose_personaanulado en la lista de usuarios válidos
-
ose_remitecontactofono nulo o distinto de ['WEB', 'REGISTRA', 'CLIENTES']
-
Tipo de unión con otras fuentes (JOIN y llave): no aplica
-
Observaciones (ej. particiones, índices): Filtra GRT anuladas sin remitentes especiales.
4) Filtros globales del reporte
-
Inclusiones (must-have):
-
Usuarios activos (ose_estado = '1', cop_estado = '1')
-
Registros no eliminados (eliminado = '0')
-
Exclusiones (reglas de descarte): Comprobantes o guías anuladas (estadoPago IN ('AN','DA'))
-
Reglas por estado / habilitado: Solo documentos vigentes y operativos.
-
Parámetros externos (si el usuario puede filtrarlo): Año y rango de meses se calculan automáticamente; no son ingresados manualmente.
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
Se consolida información diaria por usuario, terminal y fecha.
-
Cálculos: cantidad, monto sumados por tipo (GRT, comprobantes, entregas, anulaciones).
-
Mapeos de estado:
-
usr_id ↔ passport_number ↔ per_nrodocumento
-
Terminales por usr_terminalid
-
Reglas de validación (p.ej., sólo registros validados):
-
Evita inserción de tablas vacías.
-
Control de existencia de tabla base antes de crear o reemplazar.
-
Reglas condicionales (si X entonces Y):
-
Si el mes ≤ 2, también incluye diciembre del año anterior.
-
Si una tabla mensual no existe, se crea clonando report_information.
6) Estructura de salida
-
Tabla/archivo destino: report_information_YYYY_MM
-
Particionado / sufijo: Mensual (sufijo año_mes).
-
Clave(s) primaria(s) o únicas: (fecha, usuario)
-
Columnas del reporte (nombre → tipo → descripción):
-
fecha → DATE → Día del registro
-
terminal_id → INT(5) → Identificador del terminal
-
terminal → VARCHAR(150) → Nombre del terminal
-
usuario → VARCHAR(13) → Identificador del usuario
-
usuario_nombre → VARCHAR(80) → Nombre completo del usuario
-
usuario_rol → VARCHAR(80) → Rol asignado al usuario
-
grt_emitidas_cantidad → INT → Total de guías emitidas
-
grt_emitidas_monto → DOUBLE(12,2) → Monto total de guías emitidas
-
grt_entregadas_cantidad → INT → Total de entregas realizadas
-
grt_entregadas_monto → DOUBLE(12,2) → Monto total de entregas realizadas
-
comprobantes_emitidos_cantidad → INT → Total de comprobantes emitidos
-
comprobantes_emitidos_monto → DOUBLE(12,2) → Monto total de comprobantes emitidos
-
grt_anuladas_cantidad → INT → Total de guías anuladas
-
comprobantes_anuladas_cantidad → INT → Total de comprobantes anulados
-
created_date → DATETIME → Fecha de inserción del registro
-
status → TINYINT → Estado del registro (1 = activo / 0 = inactivo)
-
Ordenamiento por defecto: fecha ASC, usuario ASC
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): 2 meses anteriores si aplica.
-
Tamaño de lote / paginado (chunking): Inserciones por lotes de 300 registros.
-
Tolerancia a fallos / reintentos:
-
Reintentos hasta 4 veces para RENAME TABLE.
-
Fallback DELETE+INSERT si el swap falla.
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post:
-
Confirmación de existencia de tabla base.
-
Log de errores en error_reports.
-
Controles de duplicados: Reemplazo controlado (safeReplaceMonthlyTable) evita duplicados.
-
Métricas de completitud (qué se monitorea):
-
Conteo de registros insertados y estado de validación (emp_reportes_validation).
9) Dependencias externas
-
APIs / servicios y endpoints: APICAPACITACION/method/send-query-database
-
Autenticación / headers: JSON Headers (Accept, Content-Type)
-
Mapeos y contratos de datos:
-
Servicios Internos: $this->reports, $this->empresarial, $this->centos (conexiones BD internas)
-
Contratos: Formato JSON con campos valor, response, msn.
10) Historial de cambios
2025-10-15 12:46 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar