Ir al contenido principal

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