Preskočiť na hlavný obsah

Vlastné odkazy a dotazy

Naučte sa, ako vylepšiť svoje skúsenosti s Beancount implementáciou vlastných odkazov na bočnom paneli a SQL dotazov na zefektívnenie sledovania financií a reportovania.

Pridajte dátumované smernice na bočný panel do stock Fava, potom uložte dotaz, ktorý nájde záporné konečné zostatky po sčítaní všetkých zápisov. Príklady boli spustené s Beancount 3.2.3, beanquery 0.2.0 a Fava 1.30.16. Použite pripnuté lokálne nastavenie.

Tieto URL adresy smerujú na lokálny stock server Fava. Hostovaný dashboard na Beancount.io má odlišné cesty reportov a je rozobraný samostatne nižšie.

Prečo prispôsobiť Fava?

Odkazy na bočnom paneli zachovávajú užitočné filtrované zobrazenie. Uložený dotaz potom môže odpovedať na konkrétnu účtovnú otázku bez opakovaného zadávania BQL.

Na aké problémy to odpovedá:

  • Opakované vyberanie aktuálneho alebo predchádzajúceho mesiaca.
  • Znovuotváranie uloženého reportu.
  • Rozlíšenie odlivu z účtu, ktorý v skutočnosti končí pod nulou.

✨ Vlastné odkazy na bočnom paneli

Pridajte tieto smernice do kompletného ledgeru sidebar-demo.beancount v nasledujúcej časti. Spustite ho pomocou fava sidebar-demo.beancount a otvorte report Journal pred kliknutím na odkaz.

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="

Čo robia:

/jump sa vráti na stránku v hlavičke Referer prehliadača a nahradí poskytnuté parametre dotazu. Neotvára vždy report Journal. Na stave účtu (balance sheet) zostáva na stave účtu. Toto správanie je implementované v obsluhe presmerovania stock Fava.

  • Aktuálny mesiac: Nastaví time=month na aktuálnom reporte.
  • Predchádzajúci mesiac: Nastaví time=month-1 na aktuálnom reporte.
  • Vymazať všetko: Odstráni account, time a filter. Ostatné parametre, ako napríklad conversion, zostávajú.

Ukážková účtovná kniha z roku 2021 nebude mať žiadne transakcie v dnešnom mesiaci; použite Vymazať všetko pred reprodukovaním výsledkov dotazu. Adresa URL /jump vyžaduje referrer. Pre záložku otvorenú priamo skopírujte kompletnú funkčnú adresu URL reportu.

Na koreňovej adrese hostiteľa bol /jump?time=month testovaný z /sidebar-demo/journal/?time=2021&account=Assets: vrátil HTTP 302 na rovnaký journal s account=Assets&time=month. Cieľový report vrátil 200.

Ak správca pripojí celú aplikáciu Fava na /books, každá skratka s koreňovou relatívnou cestou musí obsahovať túto predponu. Toto je alternatívna konfigurácia, nie ďalšia smernica pridaná popri aktuálnemu mesiacu:

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

Lokálny test pripojenia cez WSGI overil, že /books/jump presmeruje späť na /books/sidebar-demo/journal/ s novým filtrom. Obyčajný /jump je mimo tohto mountu a vrátil 404. Vlastné odkazy Fava zachovávajú poskytnutú URL adresu; úvodná lomka / znamená koreň hostiteľa, nie koreň ledgeru.

Hostovaný rozsah, skontrolované 2026-09-07: zdrojový kód dashboardu Beancount.io používa cesty ako /ledger/OWNER/LEDGER/income-statement a /ledger/OWNER/LEDGER/query. Jeho bočný panel vytvára svoje vlastné menu reportov. Skúmaný zdroj nemá žiadnu cestu /jump ani konzumenta fava-sidebar-link. Tento stock recept preto nie je zriadený pre tento dashboard. Na hostovanom produkte otvorte požadovaný report a uložte si jeho funkčnú adresu do záložiek. Snímka zdrojového kódu nedokazuje, ktorá verzia beží na produkčnom nasadení.

🔍 Vlastné SQL dotazy

Uložte tento kompletný súbor ako sidebar-demo.beancount. Zámerne obsahuje kladné aj záporné zápisy na každom majetkovom účte:

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 prejde. Na začiatku 9. januára drží kladný účet 100 - 30 = 70 USD; záporný účet drží 20 - 50 + 10 = -20 USD.

Spustite tento dotaz na stránke Query v stock Fava s prázdnymi globálnymi filtrami:

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;
ÚčetMenaKonečný zostatok
Majetok:BCM:ZápornýUSD-20.00

Rozpis:

WHERE vyberá zápisy na agregáciu. Neexistuje žiadna dolná hranica dátumu: konečný zostatok potrebuje celú predchádzajúcu históriu vrátane otváracích zostatkov z 1. decembra. Horná hranica je vylučujúca: zahŕňa transakcie z 8. januára a vylučuje transakcie z 9. januára.

GROUP BY account, currency zachováva odlišné meny oddelené. HAVING SUM(number) < 0 filtruje po sčítaní kladných a záporných množstiev každej skupiny. Toto je konečný zostatok v jednotkách meny, nie trhová hodnota prepočítaná na jednu menu. Uvádza každý presný účet, nie agregované rodičovské účty.

Pre porovnanie, tento spustiteľný dotaz odpovedá na inú otázku: koľko bolo zaúčtované ako záporné počas sledovaného obdobia?

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;
ÚčetMenaZáporné zápisy
Majetok:BCM:ZápornýUSD-50.00
Majetok:BCM:KladnýUSD-30.00

Druhý dotaz vynecháva vrátenie platieb a otváracie zostatky. Jeho riadok -30.00 USD neznamená, že kladný účet je prečerpaný. Pridanie dolnej hranice dátumu do prvého dotazu by namiesto toho vytvorilo čistý pohyb počas obdobia, nie konečný zostatok. Pozrite si referenciu BQL pre ďalšiu syntax dotazov.

Prípady použitia:

  • Kontrola majetkových účtov na neočakávané záporné množstvá.
  • Preskúmanie záporných zápisov samostatne pri vyšetrovaní odlivov alebo vrátení platieb.
  • Zosúladenie vykázaného zostatku s otváracou históriou a následnou aktivitou pred interpretáciou anomálie. Záporný zostatok na záväzku alebo výnosovom účte môže byť normálny.

🛠 Profesionálny tip: Kombinujte odkazy a dotazy

Fava podporuje odkazy na dotazy. Pridajte túto uloženú skratku a dotaz do 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"

Smernica dotazu sa tiež zobrazuje na bočnom paneli uložených dotazov, podľa nastavenia sidebar-show-queries (predvolene 5). Explicitná skratka ciele na sidebar-demo slug a spúšťa pomenovaný dotaz. Stránka stock Query číta query_string z URL adresy; jej API dotazu vrátilo rovnaký jediný riadok -20.00 USD v lokálnom teste. Pozrite si verziu komponentu Query.

Použite skutočný slug vášho ledgeru v inej knihe. Pod mountom /books sa skratka stane /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22. Udržiavajte globálne filtre prázdne pre konečný zostatok za celú históriu; dátumový filter môže odstrániť otváraciu históriu pred spustením uloženého dotazu.

Záverečné myšlienky

Použite mesačné skratky na navigáciu v reportoch a uložený dotaz na kontrolu reprodukovateľného konečného zostatku. Pri kontrole rozpočtu rozlišujte odlivy, pohyb za obdobie a konečné zostatky pred interpretáciou záporného čísla. Pre ďalšie reporty pozrite dokumentáciu rozšírení Fava a príručku používateľského rozhrania.

Zdroj: https://beancount.io/sk/docs/Tips/side-bar-link