REPORTE AMOUNT PLATAFORMAS
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/ReportController.php
1) Nombre del reporte
-
Nombre: Reporte Amount Plataformas
-
Código / Alias: report_amount_platforms
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados:
-
ose_fhpreferenciapartida
-
cop_fechaemision
-
created_date
-
fecha_consult
-
fecha
-
Tipo de rango (diario / mensual / personalizado): Mensual, con generación por días dentro del rango (generateArrayOfDays) y posible extensión al último mes del año anterior (si el mes actual es enero o febrero).
-
Inclusión de horas (sí/no).: Si [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_ordenservicio
-
Alias (si aplica): os
-
Campos utilizados (clave → descripción):
-
ose_id → Identificador de la orden de servicio.
-
ose_termorigenatencion → Terminal de origen de la orden.
-
ose_termdestinoentrega → Terminal de destino de la orden.
-
ose_fhpreferenciapartida → Fecha de preferencia de partida.
-
ose_estado → Estado de la orden (1 = activo, otros valores indican cancelado o inactivo).
-
ose_estadoPago → Estado del pago (AN = anulado, DA = dado de baja).
-
ose_tipoanulado → Tipo de anulación, vacío si está vigente.
-
eliminado → Indicador lógico de eliminación.
-
Condiciones (WHERE) aplicadas:
-
Filtra las órdenes de servicio activas y vigentes dentro del rango de fechas ($fecha 00:00:00 hasta $fecha 23:59:59), excluyendo las anuladas o dadas de baja. Solo se consideran registros no eliminados.
-
Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN con emp_entrega (campo llave: ent.ent_osid = os.ose_id).
-
Observaciones (ej. particiones, índices): La tabla emp_ordenservicio suele tener índices por campos ose_id, ose_fhpreferenciapartida, y ose_estado para optimizar las consultas de rango y estado.
3.2 Conexión / Base: Empresarial
-
Tabla / Recurso: emp_ordenservicio
-
Alias (si aplica): os
-
Campos utilizados (clave → descripción):
-
ent_id → Identificador del registro de entrega.
-
ent_persona → Documento o ID de la persona asociada a la entrega.
-
ent_osid → Identificador de la orden de servicio vinculada.
-
ent_eliminado → Indicador de eliminación lógica.
-
Condiciones (WHERE) aplicadas:
-
Se filtran entregas no eliminadas (ent_eliminado = 0) asociadas a personas específicas (lista de DNI o IDs) dentro del rango de fechas.
-
Tipo de unión con otras fuentes (JOIN y llave): LEFT JOIN con emp_ordenservicio (llave: ent.ent_osid = os.ose_id).
-
Observaciones (ej. particiones, índices): Campos ent_id y ent_osid comúnmente indexados.
3.3 Conexión / Base: Empresarial
-
Tabla / Recurso: emp_terminal
-
Alias (si aplica): Ninguno
-
Campos utilizados (clave → descripción):
-
ter_id → Identificador de la terminal.
-
ter_nombre → Nombre descriptivo de la terminal.
-
ter_zona → Zona geográfica o grupo operativo.
-
Condiciones (WHERE) aplicadas:
-
No aplica filtrado. Se obtiene el listado completo de terminales activas registradas en la base de datos.
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica unión, solo lectura directa.
-
Observaciones (ej. particiones, índices): Posible índice sobre ter_id (PK) y ter_zona para agrupación posterior.
3.4 Conexión / Base: Empresarial
-
Tabla / Recurso: emp_detalle_comppago
-
Alias (si aplica): Ninguno
-
Campos utilizados (clave → descripción):
-
id → Identificador del detalle.
-
dcp_ose_id → Identificador de la orden de servicio relacionada.
-
dcp_cop_id → Identificador del comprobante de pago vinculado.
-
Condiciones (WHERE) aplicadas:
-
Obtiene registros de detalle que pertenecen a órdenes de servicio procesadas (whereIn(dcp_ose_id, $groups)), agrupando los comprobantes vinculados a cada orden.
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica JOIN explícito, pero se vincula lógicamente con emp_comppago mediante dcp_cop_id.
-
Observaciones (ej. particiones, índices): Índices comunes en dcp_ose_id y dcp_cop_id para relaciones y búsquedas cruzadas.
3.5 Conexión / Base: Empresarial
-
Tabla / Recurso: emp_comppago
-
Alias (si aplica): Ninguno
-
Campos utilizados (clave → descripción):
-
cop_id → Identificador del comprobante de pago.
-
cop_fechaemision → Fecha de emisión del comprobante.
-
cop_terminal → Terminal de origen.
-
cop_estado_pago → Estado del pago (nulo o diferente de “AN” indica activo).
-
cop_tipo → Tipo de comprobante (solo se consideran los de tipo “NC” → Nota de Crédito).
-
Condiciones (WHERE) aplicadas:
-
Selecciona comprobantes tipo “NC” emitidos en el rango horario del día (00:00:00 a 23:59:59) y que no estén anulados (cop_estado_pago nulo o distinto de “AN”).
-
Tipo de unión con otras fuentes (JOIN y llave): Relación lógica con emp_detalle_comppago (llave: dcp_cop_id = cop_id).
-
Observaciones (ej. particiones, índices): Índices esperados en cop_id, cop_fechaemision y cop_estado_pago por alto volumen de registros.
3.6 Conexión / Base: Empresarial
-
Tabla / Recurso: emp_os_detalle
-
Alias (si aplica): Ninguno
-
Campos utilizados (clave → descripción):
-
osd_id → Identificador del detalle.
-
osd_osid → Identificador de la orden de servicio.
-
osd_descripcion → Código de tipo de paquete (3 = sobre, 1096 = xxs, 1090 = xs, 5 = s, 1093 = m, 2 = l).
-
osd_unidad → Cantidad de unidades.
-
osd_montototal → Monto total del detalle.
-
osd_eliminado → Indicador lógico de eliminación.
-
Condiciones (WHERE) aplicadas:
-
Filtra los detalles activos (osd_eliminado = 0) y solo de los tipos válidos de paquete definidos en el array de referencia.
-
Tipo de unión con otras fuentes (JOIN y llave): Vinculación lógica con emp_ordenservicio a través de osd_osid = ose_id.
-
Observaciones (ej. particiones, índices): Campos osd_osid y osd_descripcion con índice para mejorar rendimiento en consultas por tipo.
4) Filtros globales del reporte
-
Inclusiones (must-have):
-
Órdenes activas y no anuladas.
-
Comprobantes válidos (no anulados).
-
Terminales habilitadas.
-
Exclusiones (reglas de descarte):
-
Órdenes anuladas o con estado de pago “AN” o “DA”.
-
Entregas eliminadas.
-
Reglas por estado / habilitado: Solo se consideran órdenes con ose_estado = 1.
-
Parámetros externos (si el usuario puede filtrarlo):
-
Año y mes dinámico ($year, $last_month, $first_month)
-
Fechas de inicio y fin generadas automáticamente.
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
paquete_*, sobre, efectivo, banco, billetera_electronica → acumulados por tipo y terminal.
-
type = “envia_ya” o “pro” según rcontacto.
-
Totales diarios por origen y destino.
-
Mapeos de estado:
-
ose_servpagotipo = 1 → efectivo
-
ose_servpagotipo = 2 → contra_entrega
-
cop_tipopago = QR → billetera_electronica
-
cop_tipopago = BANCO → banco
-
Reglas de validación (p.ej., sólo registros validados): no aplica
-
Reglas condicionales (si X entonces Y):
-
Ignora órdenes donde ose_remitecontactomail != 1.
-
Incluye datos del año anterior si mes actual ≤ 2.
6) Estructura de salida
-
Tabla/archivo destino: report_monto_plataformas_YYYY_MM
-
Particionado / sufijo: Mensual (YYYY_MM)
-
Clave(s) primaria(s) o únicas: id (auto-increment)
-
Columnas del reporte (nombre → tipo → descripción):
-
fecha → DATE → Día del registro
-
agencia_id → VARCHAR(100) → Identificador de la agencia
-
agencia → VARCHAR(255) → Nombre de la agencia
-
plataforma → VARCHAR(255) → Tipo de plataforma utilizada (“envia_ya”, “pro”)
-
cantidad_origen → VARCHAR(10) → Cantidad enviada desde el punto de origen
-
cantidad_destino → VARCHAR(10) → Cantidad recibida en el punto de destino
-
monto_origen → VARCHAR(10) → Monto total emitido desde origen
-
monto_destino → VARCHAR(10) → Monto total recibido en destino
-
sobre / paquete_* → VARCHAR(10) → Cantidades agrupadas según tipo de paquete (sobre, paquete, etc.)
-
efectivo → VARCHAR(10) → Total de operaciones pagadas en efectivo
-
banco → VARCHAR(10) → Total de operaciones con pago bancario
-
billetera_electronica → VARCHAR(10) → Total de pagos mediante billetera electrónica
-
contra_entrega → VARCHAR(10) → Total de operaciones con modalidad contra entrega
-
created_date → DATETIME → Fecha de creación del registro
-
status → TINYINT(1) → Estado del registro (1 = activo / 0 = inactivo)
-
Ordenamiento por defecto: fecha ASC, agencia_id ASC
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): Mensual, ejecutado automáticamente por rango de fechas.
-
Tamaño de lote / paginado (chunking): Inserciones en bloques de 900 registros (array_chunk).
-
Tolerancia a fallos / reintentos: Manejo con try/catch y rollback en errores.
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post: Verificación de existencia de tabla (verifyExistTable), creación o truncado según corresponda.
-
Controles de duplicados: Se ejecuta truncate si la tabla ya existe antes de insertar datos nuevos.
-
Métricas de completitud (qué se monitorea):
-
Creación exitosa de tabla mensual.
-
Estado en emp_reportes_validation.status (1=ok, 0=error).
9) Dependencias externas
-
APIs / servicios y endpoints: No aplica (todo interno a BD).
-
Autenticación / headers: No aplica.
-
Mapeos y contratos de datos: Uso interno de modelos $this->empresarial, $this->reportes, $this->centos.
10) Historial de cambios
2025-10-17 17:49 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar