Añade directivas de enlace en la barra lateral con fecha al Fava estándar y luego guarda una consulta que encuentre saldos finales negativos después de sumar todos los asientos. Los ejemplos se ejecutaron con Beancount 3.2.3, beanquery 0.2.0 y Fava 1.30.16. Utiliza la configuración local fijada.
Estas URL apuntan a un servidor Fava estándar local. El panel de control alojado de Beancount.io tiene diferentes rutas de informes y se aborda por separado más abajo.
¿Por qué Personalizar Fava?
Los accesos directos en la barra lateral preservan una vista filtrada útil. Una consulta guardada puede entonces responder a una pregunta contable específica sin tener que introducir BQL repetidamente.
Puntos problemáticos que esto resuelve:
- Seleccionar repetidamente el mes actual o anterior.
- Reabrir un informe guardado.
- Distinguir una salida de fondos de una cuenta que en realidad termina por debajo de cero.
✨ Enlaces Personalizados en la Barra Lateral
Añade estas directivas al libro mayor sidebar-demo.beancount completo en la siguiente sección. Inícialo con fava sidebar-demo.beancount y abre su informe de Diario antes de hacer clic en un acceso directo.
2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="Qué hacen:
/jump regresa a la página en el encabezado Referer del navegador y reemplaza los parámetros de consulta proporcionados. No siempre abre el informe de Diario. En el balance de situación, permanece en el balance de situación. Este comportamiento está implementado por el manejador de redirección de Fava estándar.
- Mes Actual: Establece
time=monthen el informe actual. - Mes Anterior: Establece
time=month-1en el informe actual. - Borrar Todo: Elimina
account,timeyfilter. Otros parámetros, como conversión y intervalo, permanecen.
El fixture de 2021 no tendrá transacciones en el mes actual; usa Borrar Todo antes de reproducir los resultados de su consulta. Una URL /jump requiere un referrer. Para un marcador abierto directamente, copia una URL de informe de trabajo completa en su lugar.
En la raíz del host, se probó /jump?time=month desde /sidebar-demo/journal/?time=2021&account=Assets: devolvió HTTP 302 al mismo diario con account=Assets&time=month. El informe de destino devolvió 200.
Si un administrador monta la aplicación Fava completa en /books, cada acceso directo relativo a la raíz debe incluir ese prefijo. Esta es una configuración alternativa, no otra directiva para añadir junto a Mes Actual arriba:
2021-01-01 custom "fava-sidebar-link" "Current Month" "/books/jump?time=month"Una prueba de montaje WSGI local verificó que /books/jump redirige de vuelta a /books/sidebar-demo/journal/ con el nuevo filtro. El /jump simple está fuera de ese montaje y devolvió 404. Los enlaces personalizados de Fava preservan la URL proporcionada; un / inicial significa la raíz del host, no la raíz del libro mayor.
Ámbito alojado, verificado el 2026-09-07: la fuente del panel de control de Beancount.io utiliza rutas como /ledger/OWNER/LEDGER/income-statement y /ledger/OWNER/LEDGER/query. Su barra lateral construye su propio menú de informes. La fuente inspeccionada no tiene una ruta /jump ni un consumidor fava-sidebar-link. Esta receta estándar, por lo tanto, no está establecida para ese panel de control. En el producto alojado, abre el informe deseado y marca su dirección de trabajo. La instantánea de la fuente no prueba qué revisión ejecuta un despliegue en vivo.
🔍 Consultas SQL Personalizadas
Guarda este fixture completo como sidebar-demo.beancount. Incluye deliberadamente tanto asientos positivos como negativos en cada cuenta de activo:
option "title" "Sidebar Demo"
option "operating_currency" "USD"
2021-01-01 open Assets:BCM:Positive USD
2021-01-01 open Assets:BCM:Negative USD
2021-01-01 open Equity:Opening-Balances USD
2021-12-01 * "Opening balances"
Assets:BCM:Positive 100.00 USD
Assets:BCM:Negative 20.00 USD
Equity:Opening-Balances -120.00 USD
2021-12-10 * "Outflows"
Assets:BCM:Positive -30.00 USD
Assets:BCM:Negative -50.00 USD
Equity:Opening-Balances 80.00 USD
2022-01-05 * "Refund"
Assets:BCM:Negative 10.00 USD
Equity:Opening-Balances -10.00 USD
2022-01-09 balance Assets:BCM:Positive 70.00 USD
2022-01-09 balance Assets:BCM:Negative -20.00 USDbea --file sidebar-demo.beancount check pasa. Al inicio del 9 de enero, Positiva tiene 100 - 30 = 70 USD; Negativa tiene 20 - 50 + 10 = -20 USD.
Ejecuta esta consulta en la página de Consultas de Fava estándar con los filtros globales borrados:
SELECT account, currency, SUM(number) AS ending_balance
FROM postings
WHERE account ~ ':BCM:'
AND date < 2022-01-09
GROUP BY account, currency
HAVING SUM(number) < 0
ORDER BY account, currency;| Cuenta | Moneda | Saldo final |
|---|---|---|
| Assets:BCM:Negative | USD | -20.00 |
Desglose:
WHERE selecciona los asientos a agregar. No hay un límite de fecha inferior: un saldo final necesita todo el historial anterior, incluidos los saldos iniciales del 1 de diciembre. El límite superior exclusivo incluye el 8 de enero y excluye las transacciones del 9 de enero.
GROUP BY account, currency mantiene las distintas monedas separadas. HAVING SUM(number) < 0 filtra después de sumar las cantidades positivas y negativas de cada grupo. Este es un saldo final de unidades por moneda, no un valor de mercado convertido a una sola moneda. Informa cada cuenta exacta, no cuentas principales consolidadas.
A modo de comparación, esta consulta ejecutable responde a una pregunta diferente: ¿cuánto se registró negativamente durante el período de revisión?
SELECT account, currency, SUM(number) AS negative_postings
FROM postings
WHERE account ~ ':BCM:'
AND number < 0
AND date >= 2021-12-09 AND date < 2022-01-09
GROUP BY account, currency
ORDER BY account, currency;| Cuenta | Moneda | Asientos negativos |
|---|---|---|
| Assets:BCM:Negative | USD | -50.00 |
| Assets:BCM:Positive | USD | -30.00 |
La segunda consulta omite el reembolso y los saldos iniciales. Su fila -30.00 USD no significa que Positiva esté sobregirada. Añadir un límite de fecha inferior a la primera consulta produciría en su lugar el movimiento neto durante un período, no un saldo final. Consulta la referencia BQL para obtener más sintaxis de consulta.
Casos de uso:
- Verificar cuentas de activo en busca de cantidades negativas inesperadas.
- Revisar asientos negativos por separado al investigar salidas o reversiones.
- Conciliar el saldo informado con el historial inicial y la actividad posterior antes de tratarlo como una anomalía. Un saldo negativo de pasivo o ingreso puede ser normal.
🛠 Consejo de Experto: Combina Enlaces + Consultas
Fava sí soporta enlaces a consultas. Añade esta consulta guardada y acceso directo a sidebar-demo.beancount:
2021-01-01 query "negative-balances" "SELECT account, currency, SUM(number) AS ending_balance FROM postings WHERE account ~ ':BCM:' AND date < 2022-01-09 GROUP BY account, currency HAVING SUM(number) < 0 ORDER BY account, currency"
2021-01-01 custom "fava-sidebar-link" "Negative Balances" "/sidebar-demo/query/?query_string=.run+%22negative-balances%22"La directiva de consulta también aparece en la barra lateral de consultas guardadas de Fava, sujeta a sidebar-show-queries (por defecto 5). El acceso directo explícito apunta al slug sidebar-demo del fixture y ejecuta la consulta nombrada. La página de consultas estándar lee query_string de la URL; su API de consulta devolvió la misma fila única -20.00 USD en la prueba local. Consulta el componente de Consultas versionado.
Usa el slug real de tu libro mayor en un libro diferente. Bajo el montaje /books, el acceso directo se convierte en /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22. Mantén los filtros globales borrados para un saldo final de historial completo; un filtro de fecha puede eliminar el historial inicial antes de que se ejecute la consulta guardada.
Reflexiones Finales
Usa los accesos directos mensuales para navegar por los informes y usa la consulta guardada para comprobar un saldo final reproducible. Al revisar tu presupuesto, distingue las salidas, el movimiento del período y los saldos de cierre antes de interpretar un número negativo. Para informes adicionales, consulta la documentación de extensiones de Fava y la guía de interfaz de usuario.