Salta al contingut principal

Enllaços personalitzats i consultes

Aprengueu com millorar la vostra experiència de Beancount implementant enllaços a la barra lateral i consultes SQL per simplificar el seguiment financer i els informes.

Afegiu directives d'enllaç a la barra lateral amb data a les instàncies estàndard de Fava, després deseu una consulta que trobi saldo final negatiu després de sumar totes les anotacions. Els exemples es van executar amb Beancount 3.2.3, beanquery 0.2.0 i Fava 1.30.16. Utilitzeu la configuració local fixada.

Aquestes URL apunten a un servidor local de Fava. El tauler allotjat de Beancount.io té rutes d'informe diferents i s'abasta per separat a continuació.

Per què personalitzar Fava?

Les dreceres de la barra lateral conserven una vista filtrada. Una consulta desada pot respondre llavors a una pregunta comptable específica sense haver d'introduir-la repetidament.

Punts que resol això:

  • Seleccionar repetidament el mes actual o l'anterior.
  • Reobrir un informe desat.
  • Distingir una sortida de diners d'un compte que en realitat acaba per sota de zero.

✨ Enllaços personalitzats a la barra lateral

Afegiu aquestes directives al llibre major complet sidebar-demo.beancount de la secció següent. Inicieu-lo amb fava sidebar-demo.beancount i obriu el seu informe de diari abans de fer clic a una drecera.

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è fan:

  • /jump retorna a la pàgina de la capçalera Referer del navegador i substitueix els paràmetres de consulta subministrats. No obre sempre l'informe de diari. A la pàgina de balanç, es queda a la pàgina de balanç. Aquest comportament està implementat pel gestor de redirecció estàndard de Fava.

  • Mes actual: Estableix time=month a l'informe actual.

  • Mes anterior: Estableix time=month-1 a l'informe actual.

  • Neteja-ho tot: Elimina account, time i filter. Altres paràmetres, com ara conversion i interval, romanen.

L'exemple de l'any 2021 no tindrà cap transacció al mes actual; utilitzeu Neteja-ho tot abans de reproduir els resultats de la consulta. Una URL /jump requereix una capçalera Referer. Per a una adreça d'interès oberta directament, copieu una URL d'informe complet que funcioni.

A l'arrel del host, /jump?time=month es va provar des de /sidebar-demo/journal/?time=2021&account=Assets: va retornar HTTP 302 al mateix diari amb account=Assets&time=month. L'informe de destinació va retornar 200.

Si un administrador munta tota l'aplicació Fava a /books, cada drecera relativa a l'arrel ha d'incloure aquest prefix. Aquesta és una configuració alternativa, no una altra directiva per afegir juntament amb el Mes actual:

2021-01-01 custom "fava-sidebar-link" "Current Month" "/books/jump?time=month"

Una prova de muntatge WSGI local va verificar que /books/jump redirigeix de nou a /books/sidebar-demo/journal/ amb el nou filtre. /jump simple està fora d'aquest muntatge i va retornar 404. Els enllaços personalitzats de Fava conserven la URL subministrada; una barra inicial / significa l'arrel del host, no el llibre major.

Àmbit allotjat, comprovat el 2026-09-07: la font del tauler de Beancount.io utilitza rutes com /ledger/OWNER/LEDGER/income-statement i /ledger/OWNER/LEDGER/query. La seva barra lateral construeix el seu propi menú d'informes. La font inspeccionada no té cap ruta /jump ni un consumidor fava-sidebar-link. Aquesta recepta estàndard no està, doncs, establerta per a aquest tauler. Al producte allotjat, obriu l'informe desitjat i marqueu la seva adreça de treball. La instantània de la font no demostra quina revisió executa una implementació en directe.

🔍 Consultes SQL personalitzades

Deseu aquesta consulta completa com a sidebar-demo.beancount. Inclou deliberadament anotacions positives i negatives a cada compte d'actiu:

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 passa. A principis de gener, Positiu manté 100 - 30 = 70 USD; Negatiu manté 20 - 50 + 10 = -20 USD.

Executeu aquesta consulta a la pàgina de Consultes de Fava estàndard amb els filtres globals nets:

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;
CompteMonedaSaldo final
Actius:BCM:NegatiuUSD-20,00

Desglossament:

WHERE selecciona les anotacions a agregar. No hi ha límit de data inferior: un saldo final necessita tot l'historial anterior, incloent-hi els saldos inicials de l'1 de desembre. El límit superior exclusiu inclou les transaccions del 8 de gener i n'exclou les del 9.

GROUP BY account, currency manté les mercaderies diferents separades. HAVING SUM(number) < 0 filtra després de sumar les quantitats positives i negatives de cada grup. Això és un saldo final d'unitats per moneda, no un valor de mercat convertit a una moneda. Informa de cada compte exacte, no dels comptes principals agregats.

Per comparació, aquesta consulta executable respon a una pregunta diferent: quant es va moure negativament durant la finestra de revisió?

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;
CompteMonedaMoviments negatius
Actius:BCM:NegatiuUSD-50,00
Actius:BCM:PositiuUSD-30,00

La segona consulta omet els reemborsaments i els saldos inicials. La seva fila -30.00 USD no significa que Positiu estigui en descobert. Afegir un límit de data inferior a la primera consulta produiria en canvi el moviment net durant un període, no un saldo final. Vegeu la referència de BQL per a més sintaxi de consulta.

Casos d'ús:

  • Comprovar comptes d'actiu per quantitats negatives inesperades.
  • Revisar els moviments negatius per separat quan investigueu sortides o reversions.
  • Conciliar el saldo reportat amb l'historial inicial i l'activitat posterior abans de tractar una anomalia. Un saldo negatiu de passiu o ingressos pot ser normal.

🛠 Consell professional: Combineu enllaços i consultes

Fava sí que admet enllaços a consultes. Afegiu aquesta drecera i consulta desada 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 també apareix a la barra lateral de consultes desades de Fava, subjecte a sidebar-show-queries (per defecte 5). La drecera explícita apunta a l'identificador de sidebar-demo i executa la consulta anomenada. La pàgina de Consultes estàndard llegeix query_string de la URL; la seva API de consulta va retornar la mateixa fila única -20.00 USD a la prova local. Vegeu el component de Consultes amb versió.

Utilitzeu l'identificador real del vostre llibre major en un entorn diferent. Sota el muntatge /books, la drecera es converteix en /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22. Mantingueu els filtres globals nets per a un saldo final complet; un filtre de data pot eliminar l'historial inicial abans que s'executi la consulta desada.

Reflexions finals

Utilitzeu les dreceres de mes per navegar pels informes, i utilitzeu la consulta desada per comprovar un saldo final reproduïble. Quan reviseu el vostre pressupost, distingiu sortides, moviment del període i saldos de tancament abans d'interpretar un nombre negatiu. Per a més informes, vegeu la documentació d'extensions de Fava i la guia d'IU.

Font: https://beancount.io/ca/docs/Tips/side-bar-link