Voeg gedateerde zijbalklink-directieven toe aan standaard Fava en sla vervolgens een query op die negatieve eindstanden vindt na het optellen van alle boekingen. De voorbeelden zijn uitgevoerd met Beancount 3.2.3, beanquery 0.2.0 en Fava 1.30.16. Gebruik de vastgezette lokale opstelling.
Deze URL's zijn gericht op een lokale standaard Fava-server. Het gehoste dashboard van Beancount.io heeft andere rapportpaden en wordt hieronder apart behandeld.
Waarom Fava Aanpassen?
Zijbalk-snelkoppelingen behouden een nuttige gefilterde weergave. Een opgeslagen query kan vervolgens een specifieke boekhoudkundige vraag beantwoorden zonder herhaaldelijk BQL in te voeren.
Pijnpunten die dit oplost:
- Herhaaldelijk de huidige of vorige maand selecteren.
- Een opgeslagen rapport opnieuw openen.
- Een uitgaande stroom onderscheiden van een rekening die daadwerkelijk onder nul eindigt.
✨ Aangepaste Zijbalklinks
Voeg deze directieven toe aan het volledige sidebar-demo.beancount-grootboek in de volgende sectie. Start het met fava sidebar-demo.beancount en open het Journaal-rapport voordat u op een snelkoppeling klikt.
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="Wat Ze Doen:
/jump keert terug naar de pagina in de Referer-header van de browser en vervangt de opgegeven queryparameters. Het opent niet altijd het Journaal-rapport. Op de balans blijft het op de balans. Dit gedrag wordt geïmplementeerd door de standaard Fava-omleidingshandler.
- Huidige Maand: Stelt
time=monthin op het huidige rapport. - Vorige Maand: Stelt
time=month-1in op het huidige rapport. - Alles Wissen: Verwijdert
account,timeenfilter. Andere parameters, zoals conversie en interval, blijven behouden.
De 2021-fixture zal geen transacties hebben in de huidige maand; gebruik Alles Wissen voordat u de queryresultaten ervan reproduceert. Een /jump-URL vereist een verwijzer. Voor een bladwijzer die direct wordt geopend, kopieert u in plaats daarvan een complete werkende rapport-URL.
Op de host-root werd /jump?time=month getest vanaf /sidebar-demo/journal/?time=2021&account=Assets: het retourneerde HTTP 302 naar hetzelfde journaal met account=Assets&time=month. Het bestemmingsrapport retourneerde 200.
Als een beheerder de volledige Fava-applicatie op /books monteert, moet elke root-relatieve snelkoppeling dat voorvoegsel bevatten. Dit is een alternatieve configuratie, geen ander directief om naast Huidige Maand hierboven toe te voegen:
2021-01-01 custom "fava-sidebar-link" "Current Month" "/books/jump?time=month"Een lokale WSGI-mounttest bevestigde dat /books/jump terugleidt naar /books/sidebar-demo/journal/ met het nieuwe filter. Gewone /jump ligt buiten die mount en retourneerde 404. Aangepaste links van Fava behouden de geleverde URL; een leidend / betekent de host-root, niet de grootboekroot.
Gehoste scope, gecontroleerd op 2026-09-07: de bron van het Beancount.io-dashboard gebruikt paden zoals /ledger/OWNER/LEDGER/income-statement en /ledger/OWNER/LEDGER/query. De zijbalk bouwt zijn eigen rapportmenu. De geïnspecteerde bron heeft geen /jump-route of fava-sidebar-link-consument. Dit standaardrecept is daarom niet vastgesteld voor dat dashboard. Op het gehoste product opent u het gewenste rapport en bladwijzert u het werkende adres. De bronsnapshot bewijst niet welke revisie een live-implementatie draait.
🔍 Aangepaste SQL-query's
Sla deze volledige fixture op als sidebar-demo.beancount. Het bevat bewust zowel positieve als negatieve boekingen op elke activarekening:
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 slaagt. Aan het begin van 9 januari heeft Positief 100 - 30 = 70 USD; Negatief heeft 20 - 50 + 10 = -20 USD.
Voer deze query uit op de Query-pagina van standaard Fava met globale filters gewist:
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;| Rekening | Valuta | Eindstand |
|---|---|---|
| Assets:BCM:Negative | USD | -20.00 |
Uitsplitsing:
WHERE selecteert de boekingen om te aggregeren. Er is geen onderste datumbovengrens: een eindstand heeft alle eerdere historie nodig, inclusief de openingssaldi van 1 december. De exclusieve bovengrens omvat 8 januari en sluit transacties van 9 januari uit.
GROUP BY account, currency houdt verschillende grondstoffen gescheiden. HAVING SUM(number) < 0 filtert na het optellen van de positieve en negatieve hoeveelheden van elke groep. Dit is een eindhoeveelheid per valuta, geen marktwaarde omgerekend naar één valuta. Het rapporteert elke exacte rekening, niet samengevoegde bovenliggende rekeningen.
Ter vergelijking: deze uitvoerbare query beantwoordt een andere vraag: hoeveel is er negatief geboekt tijdens het beoordelingsvenster?
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;| Rekening | Valuta | Negatieve boekingen |
|---|---|---|
| Assets:BCM:Negative | USD | -50.00 |
| Assets:BCM:Positive | USD | -30.00 |
De tweede query laat de terugbetaling en openingssaldi buiten beschouwing. De rij -30.00 USD betekent niet dat Positief rood staat. Het toevoegen van een onderste datumbovengrens aan de eerste query zou in plaats daarvan de netto beweging gedurende een periode opleveren, geen eindstand. Zie de BQL-referentie voor verdere querysyntaxis.
Gebruiksscenario's:
- Controleer activarekeningen op onverwachte negatieve hoeveelheden.
- Bekijk negatieve boekingen afzonderlijk bij het onderzoeken van uitgaande stromen of terugboekingen.
- Reconcileer de gerapporteerde stand met openingshistorie en daaropvolgende activiteit voordat u het als een afwijking behandelt. Een negatieve schuld- of inkomstenstand kan normaal zijn.
🛠 Pro Tip: Combineer Links + Query's
Fava ondersteunt links naar query's. Voeg deze opgeslagen query en snelkoppeling toe aan 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"Het querydirectief verschijnt ook in de opgeslagen-queryzijbalk van Fava, onderhevig aan sidebar-show-queries (standaard 5). De expliciete snelkoppeling is gericht op de sidebar-demo-slug van de fixture en voert de genoemde query uit. De standaard querypagina leest query_string uit de URL; de query-API retourneerde in de lokale test dezelfde enkele rij -20.00 USD. Zie de versiebeheerde Query-component.
Gebruik de werkelijke slug van uw grootboek in een ander boek. Onder de /books-mount wordt de snelkoppeling /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22. Houd globale filters leeg voor een volledige-historische eindstand; een datumfilter kan de openingshistorie verwijderen voordat de opgeslagen query wordt uitgevoerd.
Slotgedachten
Gebruik de maand-snelkoppelingen om door rapporten te navigeren en gebruik de opgeslagen query om een reproduceerbare eindstand te controleren. Bij het beoordelen van uw budget, onderscheid uitgaande stromen, periodebeweging en slotstanden voordat u een negatief getal interpreteert. Voor aanvullende rapporten, zie Fava's extensiedocumentatie en de UI-gids.