Saltar a contenido

Autor: Adalberto González

Fecha creacion: 2026-06-03
Estado: produccion

Servicio: ChartComputerService

Ubicación: src/app/views/logistica/guias-devoluciones/services/chart-computer.service.ts
Scope: providedIn: 'root' Puede ser utilizado en el resto de el proyecto de el front


¿Qué hace?

Este servicio se encarga de preparar la información para que pueda ser mostrada en la interfaz de usuario. A partir de los registros de devoluciones, genera tanto los datos necesarios para el gráfico principal como la estructura utilizada por la tabla resumen.


Métodos

computar(datos: DevolucionRow[]): ChartResult

Punto de entrada principal. Aplica los filtros activos via FilterService, luego calcula chart y tabla en una sola pasada.

Parámetro Tipo Descripción
datos DevolucionRow[] Registros completos en memoria, sin filtrar

Retorna: ChartResult — objeto con todas las propiedades listas para asignar al template.


Interfaz ChartResult

Propiedad Tipo Descripción
chartData DayPoint[] Barras del chart ordenadas por fecha
chartMax number Valor máximo del eje Y, redondeado a múltiplos de 300
yTicks string[] 5 etiquetas del eje Y: máximo, 75%, 50%, 25%, 0
xTicks Set<string> Labels que deben mostrarse en el eje X (domingos + hoy)
chartScrollWidth number \| null Ancho total del chart en px para el scroll horizontal
tablaResumen TablaFila[] Árbol jerárquico: mes → fecha → tienda → guía
labelMes string Texto del subtítulo: Junio 2026, Últimos 2 meses, etc.
tablaDetalle DevolucionRow[] Registros del mes activo para la tabla de detalle
totalValorDeclarado number Suma de ValorDeclarado de tablaDetalle

Flujo interno

computar(datos)
  → filterService.aplicar(datos)       → vista filtrada
  → filterService.getPrefixesMesActivo() → prefijos YYYY-MM del mes activo
  → calcular(vista, prefixes, ...)
      → recorre vista UNA SOLA VEZ:
          - acumula DayPoint en mapaChart (Map<dateKey, DayPoint>)
          - acumula TablaFila[] en porFecha (Map<fecha, Map<tienda, guías>>)
      → finalizarChart()   → chartData, chartMax, yTicks, xTicks, chartScrollWidth
      → finalizarTabla()   → tablaResumen, tablaDetalle, totalValorDeclarado
  → retorna ChartResult

Endpoints que consume

Ninguno. Este servicio no hace HTTP.


Historial de cambios

Fecha Autor Cambio
2026-06-03 Adalberto González Se creo el servicio

Observaciones