Pular para o conteúdo principal

Links Personalizados e Consultas SQL

Aprenda a melhorar sua experiência com Beancount implementando links personalizados na barra lateral e consultas SQL para agilizar seu rastreo e reportes financeiros.

Adicione directivas de links datados na barra lateral ao Fava padrão, depois guarde uma consulta que encontre saldos finais negativos depois de sumar todos os postings. Os exemplos foram executados com Beancount 3.2.3, beanquery 0.2.0 e Fava 1.30.16. Use a configuração local fixada.

Estas URLs apuntam a un servidor local de Fava padrão. O dashboard hospedado de Beancount.io tem diferentes rutas de reportes e é abordado separadamente abaixo.

Por que personalizar Fava?

Os accesos diretos na barra lateral preservan uma vista filtrada útil. Una consulta guardada puede luego responder a una pregunta contable específica sin entrar repetidamente BQL.

Problemas que esto resuelve:

  • Seleccionar repetidamente el mes actual o anterior.
  • Reabrir un informe guardado.
  • Distinguir una salida de una cuenta que en realidad termina por debajo de cero.

Agrega estas directivas al libro mayor completo sidebar-demo.beancount 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 suministrados. No siempre abre el informe de Diario. En el balance general, se queda en el balance general. Este comportamiento está implementado por el manejador de redirecciones estándar de Fava.

  • Mes actual: Establece time=month en el informe actual.
  • Mes anterior: Establece time=month-1 en el informe actual.
  • Limpiar todo: Elimina account, time y filter. Otros parámetros, como conversión e intervalo, permanecen.

El fixture de 2021 no tendrá transacciones en el mes de hoy; usa Limpiar todo antes de reproducir sus resultados de consulta. Una URL /jump requiere un referrer. Para un marcador abierto directamente, copia una URL completa de informe funcional en su lugar.

En la raíz del host, /jump?time=month fue probado 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 toda la aplicación Fava en /books, cada acceso directo con ruta raíz debe incluir ese prefijo. Esta es una configuración alternativa, no otra directiva para agregar 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 nuevo a /books/sidebar-demo/journal/ con el nuevo filtro. La ruta simple /jump está fuera de ese montaje y devolvió 404. Los links personalizados de Fava preservan la URL suministrada; una / inicial significa la raíz del host, no la raíz del libro mayor.

Alcance hospedado, verificado el 2026-09-07: la fuente del panel de Beancount.io usa 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. En el producto hospedado, abre el informe deseado y marca su dirección funcional. 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 postings positivos y negativos en cada cuenta de activos:

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 USD

bea --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 limpiados:

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;
CuentaMonedaSaldo final
Assets:BCM:NegativeUSD-20.00

Desglose:

WHERE selecciona los postings a agregar. No hay límite de fecha inferior: un saldo final necesita todo el historial anterior, incluidos los saldos de apertura 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 commodities distintas separadas. HAVING SUM(number) < 0 filtra después de sumar las cantidades positivas y negativas de cada grupo. Esto es un saldo final de unidades por moneda, no un valor de mercado convertido a una sola moneda. Reporta cada cuenta exacta, no cuentas padre resumidas.

Para comparar, esta consulta ejecutable responde una pregunta diferente: ¿cuánto se registró negativamente durante la ventana 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;
CuentaMonedaPostings negativos
Assets:BCM:NegativeUSD-50.00
Assets:BCM:PositiveUSD-30.00

La segunda consulta omite el reembolso y los saldos de apertura. Su fila -30.00 USD no significa que Positiva esté sobregirada. Agregar un límite de fecha inferior a la primera consulta produciría en cambio un movimiento neto durante un período, no un saldo final. Consulta la referencia BQL para más sintaxis de consulta.

Casos de uso:

  • Verificar cuentas de activos por cantidades negativas inesperadas.
  • Revisar postings negativos por separado al investigar salidas o reversiones.
  • Conciliar el saldo reportado con el historial de apertura y la actividad posterior antes de tratarlo como anomalía. Un saldo negativo de pasivo o ingreso puede ser normal.

Fava admite enlaces a consultas. Agrega 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 (predeterminado 5). El acceso directo explícito apunta al slug sidebar-demo del fixture y ejecuta la consulta nombrada. La página de consulta estándar lee query_string de la URL; su API de consulta devolvió la misma fila única de -20.00 USD en la prueba local. Consulta el componente Query versionado.

Usa el slug real de tu libro mayor en otro libro. 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 limpios para un saldo final de historial completo; un filtro de fecha puede eliminar el historial de apertura antes de que se ejecute la consulta guardada.

Pensamientos Finales

Usa los accesos directos de mes para navegar por los informes y usa la consulta guardada para verificar un saldo final reproducible. Al revisar tu presupuesto, distingue salidas, movimiento de período y 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 UI.

Fonte: https://beancount.io/pt/docs/Tips/side-bar-link