Ir al contenido principal

Denuncias(Crear demanda (1)) - [store]

🧾 Descripción

Este servicio crea un registro oficial de una denuncia interna realizada por un colaborador o usuario del sistema.
Permite registrar denuncias anónimas o identificadas, incluir detalles del hecho, denunciados, fechas, archivos adjuntos y otros campos relevantes.

La información se almacena directamente en el ERP, creando un nuevo documento del tipo:


DocType: Denuncias

Incluye reglas de validación para asegurar que los datos enviados cumplan los requisitos mínimos según la normativa interna del área de cumplimiento.


🚀 Endpoint

POST /denuncias/store


🔐 Seguridad

Requiere autenticación interna:

  • La creación se realiza vía ServiceErp(), que requiere un token válido del ERP.

  • No se permiten denuncias sin validar los campos obligatorios.


🧠 Flujo del Servicio (Resumen Real)

  1. Lee parámetros del request:

    • Identificación del denunciante

    • Datos de contacto (si aplica)

    • Motivo de denuncia

    • Fechas del hecho

    • Sucursal

    • Denunciados (en JSON)

    • Archivo adjunto

    • Otros detalles relacionados

  2. Valida que el JSON de denunciados sea correcto.

  3. Ejecuta múltiples validaciones obligatorias:

    • Si se identifica → celular y correo son obligatorios.

    • Campos motivo, sucursal, desde, hasta, detalle deben existir.

    • Si conoce involucrados → mínimo 1 y máximo 3 denunciados.

    • Cada denunciado debe tener nombre, sucursal y área.

  4. Valida y arma estructura del archivo adjunto si se envía.

  5. Genera un código aleatorio único que identificará la denuncia.

  6. Crea el documento Denuncias en el ERP:


    POST /resource/Denuncias
  7. Guarda los denunciados como tabla hija (table_16).

  8. Devuelve confirmación y el código de seguimiento.


📥 Request Body (Ejemplo)

{ "identificar": 1, "celular": "987654321", "correo": "user@example.com", "motivo": "Acoso laboral", "continua_ocurriendo": 0, "sucursal": "SUC-001", "desde": "2025-01-01", "hasta": "2025-01-15", "conoce_involucrados": 1, "denunciados": "[{\"nombre\":\"Juan Perez\",\"sucursal\":\"Lima\",\"area\":\"Operaciones\"}]", "detalle": "Descripción detallada del hecho...", "compromiso": "Ninguno", "archivo": "codigo-archivo.pdf" }

🧪 Validaciones Importantes

Campo Requerido Condición
identificar Debe ser 0 o 1
celular, correo Obligatorios si identificar = 1
motivo
sucursal
continua_ocurriendo Debe ser 0 o 1
desde / hasta Fechas del hecho
conoce_involucrados 0 o 1
denunciados Condicional 1 a 3 registros si conoce_involucrados = 1
detalle

Si el archivo existe, se formatea a: https://fileserver.shalomcontrol.com/file-view/<archivo>


📤 Response 200 – Ejemplo exitoso

{ "success": true, "message": "Se registró correctamente", "data": { "codigo": "ABC123" } }


❗ Posibles Errores

1. JSON malformado en denunciados

{ "success": false, "message": "El campo denunciados debe ser un json codificado" }

2. Campos obligatorios faltantes

{ "success": false, "message": "Debe ingresar un celular" }

3. Número incorrecto de denunciados

{ "success": false, "message": "Solo puede ingresar hasta 3 denunciados como máximo" }

4. Error al registrar en el ERP

{ "success": false, "message": "Ocurrió un error al registrar", "response": { ... } }

5. Error inesperado del servidor

{ "success": false, "message": "Ocurrió un error al registrar", "exception": "<mensaje>" }

📚 Esquema del DocType Denuncias (Campos usados)

{ "identificar": "0|1", "celular": "string|null", "correo": "string|null", "motivo": "string", "continua_ocurriendo": "0|1", "sucursal": "string", "desde": "date", "hasta": "date", "conoce_involucrados": 0, "detalle": "string", "compromiso": "string|null", "archivo": "string|null", "estado_denuncias": "PENDIENTE", "doctype": "Denuncias", "table_16": [], "codigo_aleatorio": "string" }

🗃 Lógica en Pseudocódigo

leer todos los campos del request validar denunciados (JSON) validar campos uno por uno si identificar == 1: validar celular & correo si conoce_involucrados == 1: validar entre 1 a 3 denunciados si hay archivo: generar url pública generar codigo aleatorio armar payload del ERP insert = POST /resource/Denuncias si insert falla: retornar error retornar success + codigo