Dashboard
{{ todayStr }}
Últimos 30 días
Ingresos
{{ money(dash.last30?.income) }}
Gastos
{{ money(dash.last30?.expense) }}
Beneficio
{{ money(dash.last30?.profit) }}
Este año
Ingresos
{{ money(dash.year?.income) }}
Gastos
{{ money(dash.year?.expense) }}
Beneficio
{{ money(dash.year?.profit) }}
Evolución 12 meses
Alertas
{{ dash.unreviewed_count }} movimientos sin revisar.
{{ money(dash.debt_overdue) }} vencido pendiente de cobro.
{{ money(dash.debt_pending) }} pendiente de cobro.
Extractos importados
· {{ monthsYear }}
{{ monthsImportedCount }}/{{ monthsExpectedCount }}
{{ m.label }}
{{ m.state==='ok' ? (m.tx_count + ' movs')
: m.state==='future' ? '—'
: 'pendiente' }}
🟢 importado · 🔴 pendiente · ⚪ mes futuro
Atajo iOS · Importación rápida
Genera un token de larga duración (1 año) para usar en un Atajo de iOS
que sube el PDF con un solo tap desde el móvil.
URL del endpoint: http://192.168.50.111:8100/api/pdf/quick-import
Guarda el token en un sitio seguro. Válido 1 año.
Copias de seguridad
Exporta un archivo JSON con todos tus movimientos, categorías,
proyectos, reglas, deudores y facturas. Puedes restaurarlo después.
{{ backupStatus }}
Top proyectos
Aún no hay proyectos.
{{ p.name }}
›
Ingresos {{ money(p.income) }} · Gastos {{ money(p.expense) }}
{{ money(p.profit) }}
Movimientos
Sin movimientos. Importa un PDF para empezar.
Todas las cuentas están ocultas. Haz clic en una pill para mostrarla.
{{ t.description_clean||t.description_raw }}
{{ fmtDate(t.date) }}
{{ categoryIcon(t.category_name) }} {{ t.category_name }}
{{ t.project_name }}
sin revisar
{{ money(t.amount) }}
Análisis
Período
Categorías
Todas
Sin categoría
{{ categoryIcon(c.name) }} {{ c.name }}
Cuentas
Todas
{{ accountLabel(a.id) }}
{{ gastosMode==='income'?'Total ingresado':'Total gastado' }}
{{ money(gastosKPIs.total) }}
Media diaria
{{ money(gastosKPIs.dailyAvg) }}
Top categoría
{{ gastosKPIs.topCat || '—' }}
{{ gastosMode==='income'?'Ingresos por mes':'Gasto por mes' }}
Reparto por categoría
Por cliente / origen
👤 {{ cl.name }}
· {{ cl.count }} mov.
{{ money(cl.total) }}
Movimientos ({{ gastosFiltered.length }})
No hay gastos con estos filtros.
{{ t.description_clean||t.description_raw }}
{{ fmtDate(t.date) }}
{{ categoryIcon(t.category_name) }} {{ t.category_name }}
{{ t.project_name }}
{{ money(t.amount) }}
Proyectos
Crea un proyecto para agrupar ingresos y gastos.
{{ p.name }}
{{ p.status }}
🌐 {{ p.domain }}
· 👤 {{ p.client_name }}
Ingresos {{ money(p.pnl.income) }} ·
Gastos {{ money(p.pnl.expense) }}
{{ money(p.pnl.profit) }}
Deudores
Total pendiente
{{ money(totalDebt) }}
{{ debtorsWithDebt }} deudor(es) ·
{{ pendingInvoices.length }} factura(s) pendiente(s)
⚠ Vencido: {{ money(overdueDebt) }}
Deudores
Añade un deudor con el botón "+ Deudor".
{{ d.name }}
{{ d.invoice_count }} factura(s)
· {{ d.email }}
{{ money(d.pending_amount) }}
{{ inv.status }}
{{ fmtDate(inv.issue_date) }}
· {{ inv.notes }}
· {{ inv.number }}
{{ money(inv.amount) }} ✓
{{ money(inv.amount_pending) }}
Histórico · facturas cobradas
Aún no has cobrado ninguna factura.
{{ inv.debtor_name }} ✓
Emitida {{ fmtDate(inv.issue_date) }}
· {{ inv.notes }}
{{ money(inv.amount) }}
Importar PDF
Arrastra un extracto bancario o pulsa para seleccionar.
Analizando PDF...
📄 Arrastra aquí un PDF
o haz clic para seleccionar
Vista previa · {{ preview.bank }}
Titular: {{ preview.holder }}
Periodo: {{ fmtDate(preview.period_start) }} → {{ fmtDate(preview.period_end) }}
⚠ {{ preview.warnings.join(', ') }}
Cuentas detectadas
Selecciona qué cuenta(s) importar.
Vista previa de movimientos
({{ previewSelectedTxs.length }} a importar)
Selecciona al menos una cuenta arriba.
| Fecha |
Concepto |
Importe |
| {{ fmtDate(t.date) }} |
{{ t.description }}
👤 {{ t.counterparty }}
|
{{ money(t.amount) }}
|
... y {{ previewSelectedTxs.length-80 }} más
{{ selected.size }} seleccionados