REPORTE DENUNCIAS
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/ReportController.php
1) Nombre del reporte
-
Nombre: Reporte Denuncias
-
Código / Alias: report_denuncias
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados:
-
creation (campo principal del Doctype Denuncias en ERPNext)
-
Rango dinámico entre first_date y second_date
-
Tipo de rango (diario / mensual / personalizado): Mensual (últimos dos meses, incluyendo diciembre del año anterior si corresponde)
-
Inclusión de horas (sí/no).: Sí [00:00:00 – 23:59:59]
-
Zona horaria: La del servidor
3) Origen de datos (tablas/APIs)
-
Conexión / Base: Capacitacion
-
Tabla / Recurso: tabDenuncias
-
Alias (si aplica): d
-
Campos utilizados (clave → descripción):
-
name → Identificador del registro de denuncia
-
docstatus → Estado del documento (borrador, enviado, cancelado)
-
estado_denuncias → Estado general de la denuncia (Atendido, Pendiente, etc.)
-
celular → Teléfono de contacto del denunciante
-
correo → Correo del denunciante
-
motivo → Motivo de la denuncia
-
sucursal → Sucursal relacionada a la denuncia
-
archivo_denuncia as archivo → Archivo adjunto a la denuncia
-
hasta → Fecha de finalización o cierre del caso
-
detalle → Descripción del hecho denunciado
-
compromiso → Compromiso asumido tras la denuncia
-
fecha_atendido → Fecha en la que fue atendida la denuncia
-
continua_ocurriendo → Indica si el hecho continúa ocurriendo (Sí/No)
-
desde → Fecha de inicio del hecho denunciado
-
conoce_involucrados → Indica si el denunciante conoce a los involucrados
-
codigo_aleatorio → Código de seguimiento de la denuncia
-
modified → Fecha y hora de última modificación
-
owner → Usuario creador del registro
-
creation → Fecha y hora de creación
-
modified_by → Usuario que realizó la última modificación
-
Condiciones (WHERE) aplicadas:
-
"Denuncias"."creation" BETWEEN [fecha_inicio, fecha_fin]
-
"Denuncias"."docstatus" != 2
-
Tipo de unión con otras fuentes (JOIN y llave):
-
INNER JOIN con tabtabla_involucrados mediante campo relacionado interno.
-
Campos secundarios (tabla relacionada tabtabla_involucrados):
-
nombre → Nombre del involucrado
-
area → Área a la que pertenece
-
sucursal → Sucursal del involucrado
-
Observaciones (ej. particiones, índices):
-
Los resultados se particionan dinámicamente por mes (report_denuncias_YYYY_MM).
-
Se generan índices automáticos en la creación de tabla (create_table_all → $index).
-
Se manejan estructuras de respaldo (error_reports) para errores de creación.
4) Filtros globales del reporte
-
Inclusiones (must-have):
-
Solo denuncias con docstatus != 2 (no canceladas)
-
Solo registros dentro del rango mensual calculado
-
Exclusiones (reglas de descarte):
-
Denuncias sin data o con errores en el servicio remoto
-
Reglas por estado / habilitado:
-
status = 1 indica éxito; status = 0 indica fallo
-
Parámetros externos (si el usuario puede filtrarlo): Ninguno (fechas generadas automáticamente por el sistema)
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
fecha_registro = DATE(creation)
-
created_date = fecha actual del procesamiento
-
status = 1 (por defecto en datos válidos)
-
Mapeos de estado: Prefijo tabla_involucrados: reemplazado por involucrado_ en nombres de campos.
-
Reglas de validación (p.ej., sólo registros validados):
-
Si no hay datos o el API falla, se marca en emp_reportes_validation con status = 0.
-
Reglas condicionales (si X entonces Y): Si el mes actual es enero o febrero → incluir diciembre del año anterior en el cálculo.
6) Estructura de salida
-
Tabla/archivo destino: Tablas dinámicas por mes: report_denuncias_YYYY_MM
-
Particionado / sufijo: Por año y mes (YYYY_MM)
-
Clave(s) primaria(s) o únicas: name (ID de denuncia)
-
Columnas del reporte (nombre → tipo → descripción):
-
name → VARCHAR → ID de la denuncia
-
fecha_registro → DATE → Fecha de creación del registro
-
estado_denuncias → VARCHAR → Estado actual de la denuncia
-
sucursal → VARCHAR → Sucursal asociada a la denuncia
-
involucrado_nombre → VARCHAR → Nombre del involucrado
-
involucrado_area → VARCHAR → Área o departamento del involucrado
-
involucrado_sucursal → VARCHAR → Sucursal del involucrado
-
created_date → DATETIME → Fecha de generación del registro
-
status → INT → Estado de procesamiento (1 = activo / 0 = inactivo)
-
Ordenamiento por defecto: Por creation ascendente (no explícito en SQL)
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): Hasta 2 meses previos
-
Tamaño de lote / paginado (chunking): array_chunk($detail, 100)
-
Tolerancia a fallos / reintentos:
-
Control con try/catch y rollback de transacción
-
Inserta errores en error_reports
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post: Inserción en emp_reportes_validation para auditar éxito o error
-
Controles de duplicados: No explícitos (la tabla mensual se regenera si es nueva)
-
Métricas de completitud (qué se monitorea): Recuento de registros insertados y validación de éxito (status)
9) Dependencias externas
-
APIs / servicios y endpoints: POST {APICAPACITACION}method/frappe.desk.reportview.get
-
Autenticación / headers: Gestionado por $this->general->serviceErp()
-
Mapeos y contratos de datos: Formato JSON con claves fields, filters, doctype, data, keys, values
10) Historial de cambios
2025-10-15 15:05 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar