# 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-&gt;general-&gt;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