/reports/payments
Cuadro de mando analítico de cobros. La pantalla envuelve los seis endpoints /api/v1/payments/reports/* en una vista calm-design y permite saltar al detalle del listado /payments (o /patients para la antigüedad) desde casi cualquier interacción.
Permisos
Controlada por payments.reports.read. Por defecto la tienen admin, dentista y recepción. Los drill-downs hacia /payments requieren además payments.record.read.
Estructura
La pantalla se lee de arriba abajo:
- Fila hero — dos tarjetas grandes.
- Cobrado neto muestra el total del periodo, la variación porcentual respecto al periodo anterior de igual longitud y una línea de tendencia (sparkline) del neto.
- Pendiente de cobro muestra el saldo pendiente de la clínica y cuatro mini-barras por bucket de antigüedad (0–30, 31–60, 61–90, 90+ días). Cada barra es clicable y lleva a
/patientsfiltrado por deuda.
- KPIs secundarios — cobrado, devuelto, saldo a favor de pacientes y tasa de devoluciones. Cobrado y devuelto son clicables; "devuelto" añade
has_refunds=trueal filtro. - Evolución del cobro — gráfico de área del neto por bucket con una línea discontinua de devoluciones encima. El selector de granularidad (día / semana / mes) está a la derecha del título. Hacer clic en un punto abre
/paymentspara ese bucket. - Por método — donut con leyenda. Clic en un sector →
/payments?method=…. - Por profesional — top 8 de tratamiento ejecutado (no cobrado), no de cobros. El clic salta al listado del periodo.
- Antigüedad — barras a ancho completo por bucket. Cada fila lleva a
/patients?has_debt=true. - Devoluciones por motivo — distribución de devoluciones por la causa registrada.
Filtros
- Periodo:
FilterDateRangecon presets rápidos (Hoy / 7d / 30d / Este mes / Trimestre / Año). Por defecto, últimos 90 días. - Granularidad: solo afecta al gráfico de tendencia.
Estados vacíos
Si el periodo seleccionado no tiene datos, las secciones secundarias se colapsan en una única tarjeta vacía. Cada sección renderiza su propio empty state cuando solo a ella le faltan datos (sin métodos, sin profesionales, sin devoluciones, sin pendiente).
Salvaguarda off-books
Este informe nunca compara cobrado contra facturado ni ejecutado contra facturado. El desglose por profesional refleja tratamiento ejecutado, no facturado. Ver payments/CLAUDE.md "Gotchas" y ADR 0010.
Pantallas relacionadas
/payments— listado de cobros, destino de la mayoría de drill-downs./patientsconhas_debt=true— destino de los drill-downs de antigüedad.