From 6dfb3355fa8b50dfa00445ed102189a9639cd83f Mon Sep 17 00:00:00 2001 From: josedario87 Date: Thu, 30 Oct 2025 16:10:42 -0600 Subject: [PATCH] Feat: Implementar visualizaciones completas en Informe de Ingresos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agrega tres secciones principales con datos reales de Metabase: 1. Lista de Ingresos (Query ID 50) - Tabla completa con detalles de cada ingreso - Campos: ID, fecha, cliente, tipo, peso, precio, total, estado - Badges de colores para tipos y estados - Soporte para 1000 registros 2. Top 10 Clientes (Query ID 51) - Ranking por monto total pagado - Muestra: nombre, cédula, ubicación - Métricas: total pagado, número de ingresos, quintales - Diseño en cards con numeración 3. Serie Temporal Acumulada (Query ID 52) - Datos desglosados por fecha, tipo y estado - Columnas del período: ingresos, peso seco, inversión - Columnas acumuladas: qq acumulados, inversión acumulada - Tabla scrollable con sticky header Correcciones técnicas: - Usar campos correctos de las queries de Metabase - created_at en lugar de fecha - cliente_nombre en lugar de nombre_cliente - cliente_id, cliente_cedula, cliente_ubicacion - fecha_grupo, peso_seco_periodo, inversion_acumulada --- nuxt4-app/app/pages/informe-ingresos.vue | 197 +++++++++++++++++++++-- 1 file changed, 183 insertions(+), 14 deletions(-) diff --git a/nuxt4-app/app/pages/informe-ingresos.vue b/nuxt4-app/app/pages/informe-ingresos.vue index 3b85b12..3570167 100644 --- a/nuxt4-app/app/pages/informe-ingresos.vue +++ b/nuxt4-app/app/pages/informe-ingresos.vue @@ -367,35 +367,204 @@ - + -
-

Tabla detallada de ingresos próximamente

-

{{ data.listaIngresos?.length || 0 }} registros disponibles

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
IDFechaClienteTipoPeso NetoPrecioTotalEstado
{{ ingreso.id }} + {{ ingreso.created_at ? new Date(ingreso.created_at).toLocaleDateString('es-ES') : '-' }} + {{ ingreso.cliente_nombre || '-' }} + + {{ ingreso.tipo || '-' }} + + + {{ ingreso.peso_neto ? ingreso.peso_neto.toFixed(2) : '-' }} lb + + L {{ ingreso.precio ? ingreso.precio.toFixed(2) : '-' }} + + L {{ ingreso.total_a_pagar ? ingreso.total_a_pagar.toFixed(2) : '-' }} + + + {{ ingreso.estado || '-' }} + +
+
+
+ No hay ingresos disponibles con los filtros actuales
+ -
-

Ranking de clientes próximamente

-

{{ data.listaClientes?.length || 0 }} clientes disponibles

+ +
+
+
+ {{ index + 1 }} +
+
+
+ {{ cliente.cliente_nombre || 'Sin nombre' }} +
+
+ {{ cliente.cliente_cedula || 'Sin cédula' }} · {{ cliente.cliente_ubicacion || 'Sin ubicación' }} +
+
+
+
+ L {{ cliente.total_pagado ? cliente.total_pagado.toFixed(2) : '0.00' }} +
+
+ {{ cliente.num_ingresos || 0 }} ingresos · {{ cliente.total_qq_seco ? cliente.total_qq_seco.toFixed(2) : '0.00' }} qq +
+
+
+
+
+ No hay clientes disponibles con los filtros actuales
-
+ +
-
-

Gráficas de series temporales próximamente

-

{{ data.serieTemporal?.length || 0 }} puntos de datos disponibles

+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FechaTipoEstadoIngresosPeso Seco (qq)InversiónAcum. qqAcum. L
+ {{ punto.fecha_grupo ? new Date(punto.fecha_grupo).toLocaleDateString('es-ES') : '-' }} + + + {{ punto.tipo || '-' }} + + + + {{ punto.estado || '-' }} + + + {{ punto.num_ingresos_periodo || 0 }} + + {{ punto.peso_seco_periodo ? punto.peso_seco_periodo.toFixed(2) : '0.00' }} + + L {{ punto.inversion_periodo ? punto.inversion_periodo.toFixed(2) : '0.00' }} + + {{ punto.peso_seco_acumulado ? punto.peso_seco_acumulado.toFixed(2) : '0.00' }} + + L {{ punto.inversion_acumulada ? punto.inversion_acumulada.toFixed(2) : '0.00' }} +
+