Todos los proyectos

Profesional · Finanzas · Datos · Zintra Capital · 2026

Herramientas de reporting de la cartera de facturas

Diseñé y construí tres dashboards en el navegador que convierten los exports de Excel del sistema de factoring en KPIs de cartera.

Pestaña de resumen del dashboard de KPIs de cartera, con trece indicadores y rankings de grupos deudores y clientes por importe pendiente; datos inventadosCaptura de la herramienta real con datos inventados · clic para ampliar

Contexto

Zintra Capital compra facturas sanitarias a sus clientes. La cartera viva era de 50–60 M€ con más de 10.000 facturas, y los datos salían del sistema en exports de Excel con más de 90 columnas.

Problema

Cada pregunta sobre la cartera (qué está pendiente, qué está vencido, dónde se concentra el riesgo, qué facturas están bloqueadas) obligaba a filtrar y hacer tablas dinámicas a mano. Las facturas impagadas no se podían identificar con fiabilidad.

Qué hice

  • Diseñé y construí los tres dashboards durante mis prácticas.
  • Definí la regla de cálculo de cada KPI y la documenté dentro de cada herramienta.
  • Desarrollé los filtros y las exportaciones a HTML, PDF y Excel.

Solución

Dashboard de KPIs de cartera
Pendiente frente a cobrado, porcentaje vencido, concentración por deudor y cliente, y antigüedad por tramos.
Dashboard de incidencias
Agrupa las incidencias por tipo y acción de seguimiento, con una matriz deudor × incidencia.
Panel de financiación por cliente
Compras, devoluciones, cobros e importes pendientes de financiar, por cliente y mes.

Cada herramienta es un único archivo HTML que lee el export en el navegador. Ningún dato se sube a ningún servidor.

Pruébalo: KPIs de cartera (datos inventados)

Resultado

  • La dirección pudo ver con claridad las facturas impagadas por primera vez.
  • Las tablas dinámicas manuales se sustituyeron por cargar el último export.
  • ~5.000 líneas de JavaScript, con la definición de cada KPI documentada en la herramienta.

Evidencias

Ver código: Antigüedad por tramos y antigüedad ponderada

Del dashboard de KPIs de cartera. Antigüedad por factura = fecha de remesa − fecha de factura; el KPI de cartera la pondera por el importe pendiente.

// Aging per invoice: AGING = IF(FREMESA - FDOC = 0, 1, FREMESA - FDOC)
function calcAgingDias(r){
  var frem = r._fremesa, fdoc = r.FDOC ? new Date(r.FDOC) : null;
  if(!frem || !fdoc) return null;
  var d = Math.round((frem - fdoc) / 86400000);
  return d === 0 ? 1 : d;
}

function renderAging(rows, vivas){
  var ab = {'No vencida':0,'0-30d':0,'31-60d':0,'61-90d':0,'>90d':0};
  vivas.filter(r => r._imppte > 0 && r._fv).forEach(function(r){
    var d = (TODAY - r._fv) / 86400000;          // days past estimated due date
    var k = d<=0 ? 'No vencida' : d<=30 ? '0-30d' : d<=60 ? '31-60d' : d<=90 ? '61-90d' : '>90d';
    ab[k] += r._imppte;
  });
  // Weighted aging = Σ(aging × outstanding) ÷ Σ(outstanding)
  var w  = vivas.filter(r => r._imppte > 0 && r._agingdias != null);
  var sI = w.reduce((s, r) => s + r._imppte, 0);
  var sP = w.reduce((s, r) => s + r._agingdias * r._imppte, 0);
  var ag = sI ? sP / sI : 0;
  // … render KPI cards, bracket bars and doughnut
}

Las herramientas en producción trabajan con datos reales de la empresa y no se publican. Las capturas muestran las mismas herramientas cargadas con datos inventados.

Herramientas

JavaScript · HTML · Chart.js · SheetJS · ExcelJS · jsPDF · Excel