Umiestnite transakcie s budúcim dátumom do samostatného scenárového ledgera, aby ste mohli projektovať hotovosť, výdavky a dlh vo svojich finančných správach. Tento návod používa bežné Beancount záznamy a pevné plánovacie obdobie. Vaše skutočné účtovníctvo zostáva oddelené od vašich predpokladov.
Kompatibilita, overená 7. septembra 2026: príklady boli testované so štandardným Beancount 3.2.3, beanquery 0.2.0 a Fava 1.30.16. Táto verzia Fava nedodáva forecast plugin. Vlastný zdroj Beancount.io obsahuje implementáciu fava.plugins.forecast; to je iné prostredie a dostupnosť zdroja neurčuje verziu nasadenú vo vašom účte. Nižšie uvedený prenosný postup nevyžaduje žiadne rozšírenie.
Krok 1: Povolenie Forecast pluginu
Pre tento postup preskočte aktiváciu pluginu. Pridanie plugin "fava.plugins.forecast" do testovanej štandardnej inštalácie spôsobí importovú chybu. Všeobecný návod na nastavenie pluginov nájdete v príručke o pluginoch; modul musí byť skutočne nainštalovaný, aby ho ledger mohol načítať.
Predpoklady: lokálne Python prostredie s nainštalovanými beancount==3.2.3, beanquery==0.2.0 a fava==1.30.16. Postupujte podľa návodu na pevne stanovené Fava nastavenie, aby ste takéto prostredie vytvorili. Uložte všetky tri nižšie uvedené súbory do rovnakého adresára a spustite príkazy tam.
Vytvorte books.beancount s týmto kompletným príkladom snímky. Jej rozhodný dátum je 31. december 2023 po otváracej transakcii. Bežný účet drží 10 000,00 USD a nesplatený istina úveru na auto je 14 400,00 USD. Vlastné imanie vyrovnáva túto zjednodušenú otváraciu snímku.
; books.beancount — realized balances as of 2023-12-31
option "operating_currency" "USD"
2023-12-31 open Assets:Checking USD
2023-12-31 open Liabilities:Auto-Loan USD
2023-12-31 open Equity:Opening-Balances USD
2023-12-31 open Income:Salary USD
2023-12-31 open Expenses:Housing:Rent USD
2023-12-31 open Expenses:Food:Groceries USD
2023-12-31 open Expenses:Health:Gym USD
2023-12-31 open Expenses:Insurance:Auto USD
2023-12-31 open Expenses:Transportation:Interest USD
2023-12-31 * "Opening snapshot"
Assets:Checking 10000.00 USD
Liabilities:Auto-Loan -14400.00 USD
Equity:Opening-Balances 4400.00 USDVytvorte scenario.beancount ako plánovací vstupný bod. Jeho dva include príkazy načítajú realizovanú snímku a predpoklady, ktoré napíšete ďalej. Beancount číta include cesty relatívne k tomuto súboru.
; scenario.beancount — planning entry point
option "title" "January 2024 planning scenario"
option "operating_currency" "USD"
include "books.beancount"
include "scenario-2024-01.beancount"Nikdy nezahŕňajte scenario.beancount alebo scenario-2024-01.beancount z books.beancount. Realizovaný vstupný bod nesmie načítať plánované transakcie, ani po uplynutí ich dátumov.
Krok 2: Vytvorenie predikovanej transakcie
Vytvorte scenario-2024-01.beancount s týmto prvým záznamom. Pripojte štyri neskoršie scenárové bloky do toho istého súboru vždy iba raz. Toto sú kontextové transakčné bloky: ich deklarácie účtov pochádzajú z books.beancount a validujete ich cez scenario.beancount.
2024-01-01 ! "Scenario: January rent" #forecast
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USDPríznak ! označuje transakciu na kontrolu; #forecast je bežná transakčná značka. Žiadna z nich nevytvára opakovania ani nevylučuje transakciu zo správ. Oddelený vstupný bod riadi zahrnutie. Použite túto značku iba na plánované záznamy, aby ste ich mohli identifikovať pri kontrole.
Pochopenie syntaxe predikcie
Každý datovaný záznam predstavuje jeden výskyt. Text narácie ako [MONTHLY] nemá v štandardnom Beancount žiadny účinok opakovania. Staršie inštrukcie UNTIL, REPEAT a SKIP patria k vlastnej konvencii pluginu, nie k jadru jazyka. Tento postup explicitne vyjadruje ich zamýšľané dátumy.
Scenár pokrýva 1. – 31. januára 2024 vrátane. Všetky plánované dátumy sú po pevnom rozhodnom dátume a pred 1. februárom. Tieto historické dátumy robia príklad reprodukovateľným; nič nezávisí od dnešného dátumu. Pri adaptácii zvoľte nový rozhodný dátum a konečný horizont pred pridaním záznamov.
Frekvencia
Napíšte jednu transakciu pre každý dátum splatnosti v rámci plánovacieho obdobia. Kompletný januárový príklad používa tieto pravidlá:
| Položka | Harmonogram | Dátumy zahrnuté v januári 2024 |
|---|---|---|
| Nájom | Mesačne, 1. deň | 1. január |
| Potraviny | Každých 7 dní, od 1. januára | 1., 8., 15., 22., 29. január |
| Mzda | Každých 14 dní, od 5. januára | 5., 19. január |
| Posilňovňa | Mesačne, 15. deň | 15. január |
| Splátka úveru | Mesačne, 25. deň | 25. január |
| Poistenie auta | Každé 3 kalendárne mesiace, od 15. januára | 15. január; ďalšia platba 15. apríla je mimo tohto horizontu |
Pre iné denné alebo ročné plány vymenujte skutočné dátumy splatnosti rovnakým spôsobom. Stanovte pravidlo pre dátumy ako 31. alebo 29. február pred predĺžením harmonogramu. Nepresúvajte ich ticho ani nepredpokladajte, že každý mesiac má rovnaký počet dní.
Podmienky (Voliteľné)
1. Nastavte koncový dátum explicitne
Predpokladajme, že členstvo v posilňovni končí 31. decembra 2024. Jeho januárový výskyt je nižšie. Januárový scenár končí 31. januára, takže neobsahuje žiadne záznamy od februára do decembra. Ak predĺžite horizont, napíšte každú neskoršiu platbu do 15. decembra a tam zastavte.
2024-01-15 ! "Scenario: gym membership" #forecast
Expenses:Health:Gym 80.00 USD
Assets:Checking -80.00 USD2. Obmedzte výskyty a oddeľte istinu úveru od úroku
Predpokladajme, že autoúver má 36 zostávajúcich splátok. Zahrňte do tohto januárového horizontu iba prvú splátku. Pre túto hypotetickú splátku predpokladajte, že jej 450,00 USD hotovostná platba pozostáva z 400,00 USD istiny a 50,00 USD úroku. Toto sú scenárové predpoklady; žiadne neskoršie splátky sa negenerujú.
2024-01-25 ! "Scenario: car loan payment 1 of 36" #forecast
Liabilities:Auto-Loan 400.00 USD
Expenses:Transportation:Interest 50.00 USD
Assets:Checking -450.00 USDPozitívny zápis na záväzku znižuje dlh z −14 400,00 USD na −14 000,00 USD. Hotovosť klesne o 450,00 USD a iba 50,00 USD je výdavok. Zápisy sa vyrovnávajú, pretože 400.00 + 50.00 - 450.00 = 0. Negatívny zápis na záväzku by dlh zvýšil.
Neopakujte rovnaké rozdelenie istiny/úroku pre všetkých 36 splátok bez podporného harmonogramu. Budúci úrok a posledná splátka sa môžu líšiť. Pri rozširovaní tohto príkladu použite splátkový kalendár veriteľa; pozri amortizácia pre rozdiel medzi vykazovaním nákladov a splácaním dlhu.
3. Zapisujte nepravidelné intervaly ako skutočné dátumy
Pre dvojtýždňovú mzdu začínajúcu 5. januára sú januárové dátumy 5. január a 19. január. Ďalší výskyt je 2. február, mimo tohto scenára. Dvojtýždenne znamená každých 14 dní, nie dvakrát za kalendárny mesiac.
2024-01-05 ! "Scenario: salary" #forecast
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USD
2024-01-19 ! "Scenario: salary" #forecast
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USDPraktický príklad: Mesačný rozpočet
Doplňte svoj mesačný rozpočet pridaním záznamov o potravinách a poistení auta nižšie do scenario-2024-01.beancount. Spolu s nájmom, posilňovňou, splátkou úveru a oboma mzdovými záznamami vyššie to vytvorí 11 plánovaných transakcií.
2024-01-01 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-08 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-15 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-22 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-29 ! "Scenario: groceries" #forecast
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-15 ! "Scenario: quarterly car insurance" #forecast
Expenses:Insurance:Auto 450.00 USD
Assets:Checking -450.00 USDValidujte oba vstupné body a potom zistite ich konečné zostatky. date < 2024-02-01 zahŕňa všetky januárové zápisy. Dotaz na knihy používa pevný rozhodný dátum date < 2024-01-01.
bea --file books.beancount check
bea --file scenario.beancount check
bea --file books.beancount query "SELECT account, sum(position) WHERE date < 2024-01-01 GROUP BY account ORDER BY account"
bea --file scenario.beancount query "SELECT account, sum(position) WHERE date < 2024-02-01 GROUP BY account ORDER BY account"Oba príkazy bea check by mali skončiť úspešne. Odsúhlaste výsledky dotazov proti týmto nezávislým výpočtom:
| Výsledok | Realizované knihy, 31. december | Januárový scenár, 31. január |
|---|---|---|
| Bežný účet | 10 000,00 USD | 10 000 + 6 000 − 2 500 − 750 − 80 − 450 − 450 = 11 770,00 USD |
| Zostatok úveru | −14 400,00 USD | −14 400 + 400 = −14 000,00 USD |
| Mzdový príjmový zápis | 0,00 USD | −6 000,00 USD |
| Celkové výdavkové zápisy | 0,00 USD | 2 500 + 750 + 80 + 450 + 50 = 3 830,00 USD |
Januárový projektovaný zisk je 2 170,00 USD: 6 000 príjmov mínus 3 830 výdavkov. Bežný účet sa zvýši o 1 770,00 USD, pretože dodatočná splátka istiny 400 znižuje dlh, nie zisk.
Otvorte scenár v štandardnej Fava:
fava scenario.beancountNastavte Fava Time filter na 2024-01. Jeho časové filtrovanie prenáša predchádzajúce zostatky aktív a záväzkov do obdobia a odstraňuje neskoršie záznamy. Skontrolujte súvahu na 11 770,00 USD hotovosti a 14 000,00 USD nesplateného dlhu. Výkaz ziskov a strát by mal ukazovať 2 170,00 USD projektovaného zisku. Otvorenie books.beancount namiesto toho poskytne realizovanú snímku.
Riešenie problémov a najlepšie postupy
- Importová chyba starého pluginu: odstráňte aktivačný riadok pri použití tohto prenosného postupu. Štandardná inštalácia Fava neposkytuje vlastné moduly Beancount.io.
- Neznámy účet alebo chýbajúci include súbor: uložte všetky tri súbory do rovnakého adresára, skopírujte otváracie záznamy a validujte
scenario.beancountnamiesto samotného scenárového fragmentu. - Predikcie chýbajú vo Fave: načítajte
scenario.beancounta nastavte Time filter na2024-01. Značka alebo narácia negeneruje záznamy. - Neočakávané zostatky: porovnajte 11 plánovaných dátumov a súm s tabuľkou. Načítanie výskytu dvakrát zdvojnásobí jeho finančný účinok, aj keď je každá transakcia vyrovnaná.
- Uchovávajte predikcie oddelene: bežné príznaky, značky a budúce dátumy nebránia záznamom ovplyvňovať nefiltrovanú správu. Použite
books.beancountpre skutočné výsledky. Keď dôjde k platbe, zaznamenajte jej skutočnú sumu tam a odstráňte zodpovedajúci predpoklad z vášho ďalšieho scenára, aby ste ho nezapočítali dvakrát. - Skontrolujte horizont: pri ukladaní scenára zachovajte datovanú snímku. Predĺženie jeho koncového dátumu znamená pridanie konkrétnych výskytov a opätovnú kontrolu rozdelenia úveru, dátumov zrušenia a zaokrúhľovania.