Ir al contenido

Dashboard KPIs

Visualiza metricas clave de negocio en tarjetas y graficos.

MetricaDescripcionCalculo
Total IngresosSuma de facturas emitidasSUM(invoices.total_amount) WHERE status != ‘cancelled’
Total GastosSuma de gastos registradosSUM(expenses.amount)
Beneficio BrutoDiferencia ingresos - gastosIngresos - Gastos
Facturas PendientesFacturas sin cobrarCOUNT(invoices) WHERE status = ‘sent’
Facturas VencidasFacturas fuera de plazoCOUNT(invoices) WHERE status = ‘sent’ AND due_date < hoy

Grafico de linea: Evolucion mensual de ingresos vs gastos.

Grafico de barras: Comparativa trimestral.

Grafico circular: Distribucion de ingresos por cliente (Top 5).

  1. Accede a la pestana “KPIs” en la pagina de Informes.
  2. Las tarjetas se cargan automaticamente con datos del ano actual.
  3. Usa los filtros de periodo para ver otros rangos.
  4. Los graficos se actualizan en tiempo real.
Detalles técnicos

Componente: src/features/accounting/sub-modules/reporting/components/dashboard/KPIDashboard.tsx

Bibliotecas de graficos: recharts o chart.js

Ejemplo de query:

// Metricas globales
const { data: invoices } = await supabase
.from("invoices")
.select("total_amount, issue_date")
.eq("business_id", businessId)
.gte("issue_date", dateFrom)
.lte("issue_date", dateTo)
.neq("status", "cancelled");
const totalInvoiced = invoices?.reduce((sum, inv) => sum + inv.total_amount, 0) || 0;
const { data: expenses } = await supabase
.from("expenses")
.select("amount")
.eq("business_id", businessId)
.gte("expense_date", dateFrom)
.lte("expense_date", dateTo);
const totalExpenses = expenses?.reduce((sum, exp) => sum + exp.amount, 0) || 0;
const grossMargin = totalInvoiced - totalExpenses;