REPORTE CENTRO COSTO DHL 2
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/CentroCostosController.php
1) Nombre del reporte
-
Nombre: Reporte Centro Costo DHL 2
-
Código / Alias: report_centro_costo_dhl_2
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados: first_date, second_date
-
Tipo de rango (diario / mensual / personalizado): Mensual (se recorren los meses del año actual y del año anterior)
-
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_comppago_dhl
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
ter_id → Identificador del tercero asociado al envío.
-
ter_nombre → Nombre del tercero o cliente.
-
cop_montoTotal → Monto total del comprobante DHL.
-
cop_id → Identificador único del comprobante.
-
cop_fechaemision → Fecha de emisión del comprobante.
-
Condiciones (WHERE) aplicadas:
-
eliminado = 0
-
cop_fechaemision BETWEEN {first_date} 00:00:00 AND {second_date} 23:59:59
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica (consulta directa a tabla única).
-
Observaciones (ej. particiones, índices):
-
Se realiza una suma total (SUM(cop_montoTotal)) y conteo (COUNT(cop_id)) para obtener el monto total y cantidad de comprobantes emitidos en el rango.
-
El resultado alimenta los campos ventas y qty_envios del reporte.
3.2 Conexión / Base: CAPACITACION
-
Tabla / Recurso: tabSolicitud de Pagos
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
monto → Monto del pago realizado.
-
currency → Moneda del registro (USD o PEN).
-
proveedor → Nombre del proveedor (filtrado por “DHL EXPRESS PERÚ S.A.C.”).
-
mes_servicio_dhl → Mes del servicio facturado.
-
año_del_servicio → Año del servicio facturado.
-
concepto → Concepto del servicio (“Servicio Aéreo”).
-
fecha → Fecha del registro del pago.
-
Condiciones (WHERE) aplicadas:
-
proveedor = 'DHL EXPRESS PERÚ S.A.C.'
-
concepto = 'Servicio Aereo'
-
mes_servicio_dhl = {mes_en_español}
-
año_del_servicio = {año}
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica (consulta simple filtrada por múltiples campos).
-
Observaciones (ej. particiones, índices):
-
Se realiza una conversión de moneda: los montos en USD se multiplican por 4 para equipararse a PEN.
-
El valor total obtenido se asigna al campo servicio_dhl.
-
La consulta es ejecutada mediante el endpoint method/send-query-database usando $this->utils->erp("POST", …).
3.3 Conexión / Base: CAPACITACION
-
Tabla / Recurso: tabSalary Slip
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
gross_pay → Total bruto pagado en la planilla.
-
name → Identificador del registro de planilla.
-
department → Departamento responsable (filtrado por “Proyectos - SE”).
-
area_del_trabajador → Área asignada del trabajador (filtrado por “Aereo internacional - SE”).
-
start_date → Fecha de inicio del periodo de pago.
-
Condiciones (WHERE) aplicadas:
-
start_date = {first_date}
-
department = 'Proyectos - SE'
-
area_del_trabajador = 'Aereo internacional - SE'
-
Agrupación por departamento (GROUP BY department).
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica (consulta directa a una tabla).
-
Observaciones (ej. particiones, índices):
-
Los resultados agregan:
-
SUM(gross_pay) → monto total pagado (planilla).
-
COUNT(name) → cantidad de empleados (personas).
-
Este valor se usa para calcular los costos de personal asociados al servicio DHL.
3.4 Conexión / Base: REPORTES
-
Tabla / Recurso: report_centro_costo_dhl_2_YYYY_MM
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
periodo → Mes del reporte (en español).
-
qty_envios → Cantidad total de envíos DHL.
-
ventas → Monto total de ventas DHL.
-
ventas_90_porciento → Proyección del 90% de las ventas.
-
compras_abastecimiento → Compras totales de abastecimiento (constante 0).
-
servicio_dhl → Monto de servicio DHL cargado desde ERP.
-
planilla → Total de planilla asociado.
-
rentabilidad → Diferencia entre ingresos y egresos.
-
rentabilidad_porciento → Porcentaje de rentabilidad.
-
year → Año procesado.
-
created_date, status → Metadatos del registro.
-
Condiciones (WHERE) aplicadas:
-
Generación dinámica por mes usando {first_date} y {second_date} del rango procesado.
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica (carga por inserción de datos preprocesados).
-
Observaciones (ej. particiones, índices):
-
Se crean tablas mensuales dinámicamente (CREATE TABLE report_centro_costo_dhl_2_YYYY_MM).
-
Se aplica un índice adicional: ALTER TABLE ADD INDEX status (status);
-
Se registran logs de ejecución en emp_reportes_validation y error_reports.
4) Filtros globales del reporte
-
Inclusiones (must-have):
-
Solo registros con eliminado = 0
-
Solo proveedor "DHL EXPRESS PERÚ S.A.C."
-
Exclusiones (reglas de descarte): Registros sin monto (monto <= 0)
-
Reglas por estado / habilitado:
-
status inicial = 1 (en tabla destino)
-
Insert en emp_reportes_validation con status = 1 si proceso exitoso
-
Parámetros externos (si el usuario puede filtrarlo):
-
Fechas generadas dinámicamente por range_days()
-
No recibe input manual del usuario
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
ventas_90_porciento = ventas * 0.9
-
rentabilidad = ventas_90_porciento - servicio_dhl - planilla
-
rentabilidad_porciento = (rentabilidad / ventas_90_porciento) * 100
-
Mapeos de estado: status → 1 (activo)
-
Reglas de validación (p.ej., sólo registros validados):
-
Si obtain_amount_dhl["status"] == false, el proceso se detiene
-
Reglas condicionales (si X entonces Y): Si rentabilidad == 0 → rentabilidad_porciento = '0%'
6) Estructura de salida
-
Tabla/archivo destino: report_centro_costo_dhl_2_YYYY_MM
-
Particionado / sufijo: Mensual (_YYYY_MM)
-
Clave(s) primaria(s) o únicas: id (AUTO_INCREMENT)
-
Columnas del reporte (nombre → tipo → descripción):
-
id → INT → Identificador único del registro (PK)
-
agencia → VARCHAR(255) → Nombre de la tienda o sucursal
-
producto_servicio → ENUM → Clasificación del ítem (producto / servicio)
-
nombre_articulo → VARCHAR(225) → Descripción o nombre completo del artículo
-
stock_inicial → FLOAT → Cantidad disponible al inicio del periodo
-
unidades_recibidas → FLOAT → Total de unidades ingresadas durante el periodo
-
unidades_vendidas → FLOAT → Total de unidades vendidas o despachadas
-
merma → VARCHAR(20) → Cantidad perdida o deteriorada
-
inventario_final → FLOAT → Stock final calculado (stock_inicial + recibidas - vendidas - merma)
-
costo_de_compra → VARCHAR(20) → Costo unitario de adquisición
-
precio_venta → FLOAT → Precio unitario de venta
-
valor_inventario_final → FLOAT → Valor monetario del inventario final
-
valor_venta → FLOAT → Ingreso total generado por ventas
-
valor_compra → FLOAT → Costo total de adquisición
-
rentabilidad → FLOAT → Diferencia entre valor_venta y valor_compra
-
ano → INT → Año correspondiente al periodo
-
periodo → VARCHAR(20) → Nombre del mes o periodo (ej. “ENERO”)
-
created_date → DATETIME → Fecha y hora de creación del registro
-
status → TINYINT → Estado lógico del registro (1=activo, 0=inactivo)
-
Ordenamiento por defecto: ORDER BY year, periodo ASC
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): 24 meses
-
Tamaño de lote / paginado (chunking): 900 registros por inserción (array_chunk)
-
Tolerancia a fallos / reintentos: Transacciones con beginTransaction() y rollBack() ante error
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post:
-
Verificación de existencia de tabla (exist_table_bd)
-
Inserción de log en emp_reportes_validation
-
Controles de duplicados: Implícitos por tabla nueva mensual (_YYYY_MM)
-
Métricas de completitud (qué se monitorea):
-
Conteo de registros insertados
-
Estado de ejecución (status)
9) Dependencias externas
-
APIs / servicios y endpoints: APICAPACITACION/method/send-query-database (ERPNext)
-
Autenticación / headers: Controlados por $this->utils->erp() (maneja tokens internos)
-
Mapeos y contratos de datos: Recibe y envía datos JSON (filters, where, sql_query, tables)
10) Historial de cambios
2025-10-21 18:15 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar