Ir al contenido principal

REPORTE DE RECLAMOS

Fuente:  /var/www/html/qareportes/app/Http/Controllers/Cloud/ReportController.php

1) Nombre del reporte

  • Nombre: Reporte de Reclamos

  • Código / Alias: no aplica

  • Responsable:  Equipo de Reportes Cloud

  • Propósito (1 línea):


2) Alcance temporal

  • Campo(s) de fecha utilizados: 

    • rec.fecharegistro (campo principal de filtrado)

    • rec_fecha_reclamo_atendido (fecha de atención reclamo)

    • ose_fhemision, ose_fhpreferenciapartida (guía asociada)

 

  • Tipo de rango (diario / mensual / personalizado):

    • Mensual (procesa rangos dinámicos de meses según el día y hora del servidor).

  • Inclusión de horas (sí/no).: Sí [00:00:00 – 23:59:59]

  • Zona horaria: La del servidor


3) Origen de datos (tablas/APIs)

3.1 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_reclamo

  • Alias (si aplica): rec

  • Campos utilizados (clave → descripción): 

    • id_reclamo → Identificador del reclamo

    • clasificacion_reclamo → Tipo o categoría del reclamo

    • detalle_reclamo → Detalle del reclamo

    • pedido_reclamo → Pedido asociado al reclamo

    • estado_reclamo → Estado del reclamo (Pendiente, Atendido, Cerrado, etc.)

    • Empresa → Empresa a la que pertenece el reclamo

    • fecharegistro → Fecha de registro del reclamo

    • reclamo_code → Código interno del reclamo

    • rec_serie / rec_numeroguia → Serie y número de guía del reclamo

    • monto_producto → Monto asociado al producto reclamado

    • ruta_reclamo → Ruta o procedimiento asociado

    • tipo_reclamo → Tipo (por producto, servicio, otros)

    • imagen_reclamo → Imagen adjunta (si aplica)

    • Sucursal → ID o nombre de sucursal

    • user_contacta_cliente_reclamo → Usuario que atendió o contactó al cliente

    • rec_descargo → Descargo registrado

    • respuesta_reclamo_cliente → Respuesta final del cliente

  • Condiciones (WHERE) aplicadas: 

    • Filtra registros activos (estado_eliminacion = 0) y dentro del rango de fechas entre $first_date y $second_date.

  • Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN emp_cliente cli ON rec.id_cliente = cli.id_cliente

  • Observaciones (ej. particiones, índices): Tabla principal para el reporte; campo fecharegistro usado para filtrado. No se definen índices adicionales.


3.2 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_cliente

  • Alias (si aplica): cli

  • Campos utilizados (clave → descripción): 

    • id_cliente → Identificador único del cliente

    • provincia_cli → Provincia del cliente

    • distrito_cliente → Distrito del cliente

    • domicilio_cliente → Domicilio completo del cliente

    • telefono_cliente → Teléfono de contacto

    • email_cliente → Correo electrónico

    • razonSocial_cliente → Razón social

    • ruc_cliente → RUC del cliente

    • dni_cliente → Documento nacional de identidad

    • nombre_cliente, apellido_paterno, apellido_materno → Componentes del nombre del cliente

  • Condiciones (WHERE) aplicadas: Los registros se obtienen mediante JOIN con emp_reclamo.id_cliente

  • Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN emp_reclamo rec ON cli.id_cliente = rec.id_cliente

  • Observaciones (ej. particiones, índices): Usada como tabla de referencia para enriquecer datos del reclamo.


3.3 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_terminal

  • Alias (si aplica): term

  • Campos utilizados (clave → descripción): 

    • ter_id → Identificador del terminal o sucursal

    • ter_nombre → Nombre de la terminal o sucursal

  • Condiciones (WHERE) aplicadas: eliminado = 0 y ter_id = sucursal (relación con campo del reclamo).

  • Tipo de unión con otras fuentes (JOIN y llave): no aplica

  • Observaciones (ej. particiones, índices): Sirve para reemplazar el ID de sucursal por su nombre legible.


3.4 Conexión / Base: Empresarial

  • Tabla / Recurso: emp_ordenservicio

  • Alias (si aplica): No aplica

  • Campos utilizados (clave → descripción): 

    • ose_nroguiacliente → Número de guía de cliente

    • ose_fhemision → Fecha de emisión del documento

    • ose_fhpreferenciapartida → Fecha de traslado preferente

  • Condiciones (WHERE) aplicadas: Filtra por número de guía (ose_nroguiacliente = rec.guiareclamo).

  • Tipo de unión con otras fuentes (JOIN y llave): No aplica.

  • Observaciones (ej. particiones, índices): 

    • Conexión dinámica:

      • Si año = 2023 y mes ≤ 9 → EMPRESARIAL_OLD

      • Caso contrario → EMPRESARIAL


4) Filtros globales del reporte

  • Inclusiones (must-have):  Solo reclamos con estado_eliminacion = 0.

  • Exclusiones (reglas de descarte): Reclamos eliminados (estado_eliminacion = 1).

  • Reglas por estado / habilitado: No explícitas.

  • Parámetros externos (si el usuario puede filtrarlo): Rango de fechas ($first_date, $second_date) calculado automáticamente.


5) Transformaciones y Reglas de negocio

  • Derivaciones de campos (cómo se calculan): 

    • codigo_reclamo = "AC-" + id_reclamo

    • fecha_estado = rec_fecha_reclamo_atendido si existe.

    • sucursal → se transforma en texto a partir del ID o del string delimitado por “ - ”.

    • fhcontrataservicio, fhservicio extraídos de emp_ordenservicio.

  • Mapeos de estado: Campos estadoreclamo, tiporeclamo, origen_doc en mayúsculas.

  • Reglas de validación (p.ej., sólo registros validados):  Valida existencia de sucursal y guía antes de asignar fechas.

  • Reglas condicionales (si X entonces Y):

    • Si día = domingo → usa rangos fijos (3–12) según hora.

    • Si no es domingo → procesa los últimos 6 meses.

    • Si no se puede crear tabla → registra error en error_reports.


6) Estructura de salida

  • Tabla/archivo destino: report_reclamos_YYYY_MM

  • Particionado / sufijo: Mensual (_YYYY_MM según fechaReclamo).

  • Clave(s) primaria(s) o únicas: id (autoincremental).

  • Columnas del reporte (nombre → tipo → descripción):

    • id_reclamo → VARCHAR → ID original del reclamo

    • codigo_reclamo → VARCHAR → Código generado prefijado

    • fecha_reclamo → DATE → Fecha del registro original

    • guia → VARCHAR → Número o código de guía del reclamo

    • ruta → VARCHAR → Ruta asociada al reclamo o entrega

    • monto → DECIMAL → Monto del reclamo o servicio

    • ruc → VARCHAR → RUC del cliente o empresa

    • razon_social → VARCHAR → Razón social del cliente o empresa

    • dni_cliente → VARCHAR → DNI del cliente

    • nombre_cliente → VARCHAR → Nombre completo del cliente

    • estado → VARCHAR → Estado actual del reclamo

    • fecha_estado → DATE → Fecha de cambio de estado

    • tipo → VARCHAR → Tipo de reclamo o categoría

    • atendido → TINYINT → Indicador si el reclamo fue atendido (1 = sí, 0 = no)

    • user_atendido → VARCHAR → Usuario que atendió el reclamo

    • sucursal → VARCHAR → Nombre o código de la sucursal

    • medio_utilizado → VARCHAR → Medio utilizado para la atención (teléfono, correo, presencial, etc.)

    • descargo → VARCHAR → Descargo o justificación registrada

    • respuesta → VARCHAR → Respuesta final al reclamo

    • fecha_contrata → DATE → Fecha de contacto o contratación del servicio

    • hora_contrata → TIME → Hora de contacto o contratación

    • fecha_servicio → DATE → Fecha del servicio asociado

    • hora_servicio → TIME → Hora del servicio asociado

    • descripcion_bien → VARCHAR → Descripción del bien o producto involucrado

    • created_date → DATETIME → Fecha de inserción en el datawarehouse o registro del sistema

    • status → TINYINT → Estado del registro (1 = activo, 0 = inactivo)


  • Ordenamiento por defecto: No explícito en el SQL, pero el flujo indica orden cronológico por fecha_reclamo.


 

7) Frecuencia y operación

  • Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)

  • Ventana que recalcula (días/meses): Últimos 6 meses (o rangos fijos si domingo).

  • Tamaño de lote / paginado (chunking): array_chunk($detail, 900) (procesa en bloques de 900 registros).

  • Tolerancia a fallos / reintentos: Manejo de excepción con rollback y registro en emp_reportes_validation.

  • Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)


8) Calidad y controles

  • Validaciones previas/post: Verifica existencia de tabla destino antes de insertar (verifyExistTable).

  • Controles de duplicados: No hay control explícito; se asume partición mensual evita duplicados.

  • Métricas de completitud (qué se monitorea): Registro de cada ejecución en emp_reportes_validation con status = 1 o 0.


9) Dependencias externas

  • APIs / servicios y endpoints: No se consumen APIs externas.

  • Autenticación / headers: No aplica (conexión directa a BD).

  • Mapeos y contratos de datos:

    • emp_reclamo ↔ emp_cliente ↔ emp_ordenservicio ↔ emp_terminal.


10) Historial de cambios

2025-10-15 12:46 - Elian Franco Arroyo Rodas - Documentación inicial