# REPORTE DESECHOS

Fuente: /var/www/html/web-services-qa/app/Http/Controllers/Cloud/ReportController.php

## 1) Nombre del reporte

- Nombre: Reporte Desechos
- Código / Alias: report\_desecho
- Responsable: Equipo de Reportes Cloud
- Propósito (1 línea):

## 2) Alcance temporal

- Campo(s) de fecha utilizados:
- ose\_fhpreferenciapartida (ordenes de servicio)
- fecha\_registro (procesos en inventario)
- created\_date (registro de inserción en tablas de reporte y validación)


- Tipo de rango (diario / mensual / personalizado): Mensual y diario (se construyen periodos por mes y se recorren días dentro del rango).
- 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: CENTOS

- Tabla / Recurso: emp\_reportes\_validation
- Alias (si aplica): No aplica
- Campos utilizados (clave → descripción):
- report → Nombre del reporte (report\_desecho)
- first\_date → Fecha de inicio del rango
- second\_date → Fecha de fin del rango
- created\_date → Fecha de creación del registro en la tabla de validación
- status → Estado de ejecución (1 = correcto, 0 = error)


- Condiciones (WHERE) aplicadas: No aplica (solo inserción directa de datos procesados)
- Tipo de unión con otras fuentes (JOIN y llave): No aplica
- Observaciones (ej. particiones, índices): Tabla usada como bitácora/validación de ejecución de reportes.

3.2 Conexión / Base: EMPRESARIAL

- Tabla / Recurso: emp\_terminal
- Alias (si aplica): No aplica
- Campos utilizados (clave → descripción):
- ter\_id → Identificador de terminal
- ter\_nombre → Nombre de la terminal


- Condiciones (WHERE) aplicadas:Excluye terminales con IDs \[210, 248, 259, 268, 269, 349, 351, 352, 353, 354, 367\].
- Tipo de unión con otras fuentes (JOIN y llave): No aplica
- Observaciones (ej. particiones, índices): Se usa para armar catálogo de terminales.

3.3 Conexión / Base: EMPRESARIAL

- Tabla / Recurso: emp\_ordenservicio
- Alias (si aplica): Ninguno (se usa sin alias)
- Campos utilizados (clave → descripción):
- ose\_id → Identificador de orden de servicio
- ose\_termdestinoentrega → Terminal destino de entrega
- ose\_termorigenatencion → Terminal origen de atención
- ose\_observacion\_cambioprecio → Tipo de orden de servicio
- ose\_estadoPago → Estado de pago
- ose\_fhpreferenciapartida → Fecha preferencial de partida
- ose\_remitecontactomail → Correo de contacto remitente (confirmado)
- ose\_remitecontactofono → Teléfono de contacto remitente
- ose\_entregadopersonadni → DNI de quien recibe entrega
- ose\_estadoentregado → Estado de entrega


- Condiciones (WHERE) aplicadas:
- ose\_estadoPago != 'AN'
- ose\_tipoanulado = ''
- ose\_estado = '1'
- eliminado = '0'
- ose\_fhpreferenciapartida entre first\_date y second\_date


- Tipo de unión con otras fuentes (JOIN y llave): No aplica
- Observaciones: Filtra OS activos, no anulados y dentro del rango de fechas.

3.4 Conexión / Base: CENTOS

- Tabla / Recurso: emp\_embarque\_desecho (alias embdes)
- Alias (si aplica): embdes
- Campos utilizados (clave → descripción):
- embdes.ose\_id → ID de orden de servicio
- embdes.fecha → Fecha de embarque de desecho


- Condiciones (WHERE) aplicadas: embdes.estado = 1
- Tipo de unión con otras fuentes (JOIN y llave): No aplica
- Observaciones: Trae embarques confirmados como desecho.

3.4 Conexión / Base: CENTOS

- Tabla / Recurso: emp\_os\_desechos\_confirmados
- Alias (si aplica): Ninguno
- Campos utilizados (clave → descripción):
- idos → Identificador de OS confirmado como desecho
- terminal → Terminal relacionada


- Condiciones (WHERE) aplicadas: status = 1
- Tipo de unión con otras fuentes (JOIN y llave): No aplica
- Observaciones: Refuerza confirmación de OS en desecho.

3.5 Conexión / Base: CENTOS / CENTOS2 OLD

- Tabla / Recurso: emp\_procesos\_historial\_app
- Alias (si aplica): Ninguno
- Campos utilizados (clave → descripción):
- idose → ID de OS
- nombre\_metodo → Método registrado (ej. registrar\_Entrega)
- fecha\_registro → Fecha de registro
- proceso → Proceso ejecutado (ej. inventario)

- Condiciones (WHERE) aplicadas:
- idose = valor de OS pendiente
- status = 1
- proceso = 'inventario'

- Tipo de unión con otras fuentes (JOIN y llave): No aplica (consulta individual por OS pendiente)
- Observaciones: Permite detectar entregas en inventario y calcular pendientes.

## 4) Filtros globales del reporte

- Inclusiones (must-have):
- Solo órdenes activas y no eliminadas
- Rango de fechas válido


- Exclusiones (reglas de descarte):
- Destino = 74
- Tipo de OS = "Retiro de mercadería"


- Reglas por estado / habilitado:
- ose\_estadoPago == "DA" → Desecho
- ose\_estadoentregado != 1 → Pendiente de entrega
- Inventario con más de 7 días sin actualización → Pendiente de actualización


- Parámetros externos (si el usuario puede filtrarlo): Fecha ($first\_date, $second\_date)

## 5) Transformaciones y Reglas de negocio

- Derivaciones de campos (cómo se calculan):
- Conteo de métricas por terminal y periodo:
- recibidos
- desecho
- pend\_entrega
- pend\_actualizacion
- proceso\_embarque\_lima
- confirma\_desecho


- Mapeos de estado:
- "DA" → Desecho
- Otros valores → Pendiente o entregado según reglas.


- Reglas de validación (p.ej., sólo registros validados): Contacto obligatorio (mail o fono) para algunos casos.
- Reglas condicionales (si X entonces Y): Diferente conexión de BD según año/mes.

## 6) Estructura de salida

- Tabla/archivo destino: report\_desecho\_YYYY\_MM
- Particionado / sufijo: Por año y mes (YYYY\_MM)
- Clave(s) primaria(s) o únicas: id (autoincremental)
- Columnas del reporte (nombre → tipo → descripción):
- periodo → VARCHAR → Fecha agrupada
- id\_agencia → VARCHAR → ID de la agencia
- agencia → VARCHAR → Nombre de la agencia
- recibidos → VARCHAR → OS recibidas
- desecho → VARCHAR → OS desechadas
- proceso\_embarque\_lima → VARCHAR → Procesos de embarque
- confirma\_desecho → VARCHAR → OS confirmadas como desechos
- pend\_entrega → VARCHAR → Pendientes de entrega
- pend\_actualizacion → VARCHAR → Pendientes de actualización (&gt;7 días)
- created\_date → DATETIME → Fecha de inserción
- status → TINYINT → Estado del registro (1 = activo, 0 = inactivo)


- Ordenamiento por defecto: No explícito; implícitamente por periodo y id\_agencia

## 7) Frecuencia y operación

- Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
- Ventana que recalcula (días/meses): Dependiendo del rango (meses o días dentro del mes)
- Tamaño de lote / paginado (chunking): 20,000 (pendientes) y 900 (inserciones)
- Tolerancia a fallos / reintentos: Control con try/catch, rollback en transacciones
- Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)

## 8) Calidad y controles

- Validaciones previas/post: Verificación de existencia de tabla (verifyExistTable)
- Controles de duplicados: Agrupamiento de órdenes por ose\_id
- Métricas de completitud (qué se monitorea): Conteo de estados por terminal y periodo

## 9) Dependencias externas

- APIs / servicios y endpoints: Ninguno explícito; todo interno a BD
- Autenticación / headers: Acceso por conexiones DB internas (empresarial, centos, reportes)
- Mapeos y contratos de datos: Tablas dinámicas creadas con estructura fija

## 10) Historial de cambios

2025-10-02 17:59 - Elian Franco Arroyo Rodas - Documentación inicial