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
No hay comentarios para mostrar
No hay comentarios para mostrar