Kompletný sprievodca správou účtov v Beancount a Fava
Váš účtový rozvrh je chrbticou vášho Beancount hlavného účtovného kniha. Dobre navrhnutá hierarchia účtov robí každý výkaz prehľadnejším, každý dotaz rýchlejším a každé daňové obdobie menej bolestivým. V tomto sprievodcovi si prejdeme všetko, čo potrebujete vedieť o vytváraní, prezeraní, aktualizácii a uzatváraní účtov v Beancount a Fava -- od základov pre začiatočníkov až po pokročilé vzory.
Päť typov účtov
Beancount používa štandardný model podvojného účtovníctva s presne piatimi koreňovými typmi účtov:
| Typ | Účel | Štandardné znamienko | Výkaz |
|---|---|---|---|
| Assets | Zdroje, ktoré vlastníte (hotovosť, investície, majetok) | Kladné (má dať) | Súvaha |
| Liabilities | Dlhy, ktoré dlžíte (kreditné karty, pôžičky, hypotéky) | Záporné (dal) | Súvaha |
| Equity | Vlastný kapitál, nerozdelený zisk, počiatočné zostatky | Záporné (dal) | Súvaha |
| Income | Zdroje príjmov (plat, úroky, dividendy) | Záporné (dal) | Výkaz ziskov a strát |
| Expenses | Kategórie nákladov (jedlo, nájom, energie) | Kladné (má dať) | Výkaz ziskov a strát |
Základná účtovná rovnica vždy platí:
Assets + Expenses + Equity + Income + Liabilities = 0
Užitočná pomôcka: ak sú sumy relevantné len pre určité časové obdobie (napr. „Koľko som minul na jedlo tento mesiac?"), použite Income alebo Expenses. Ak predstavujú priebežný zostatok (napr. „Koľko mám na bežnom účte?"), použite Assets alebo Liabilities.
Konvencie pomenovania účtov
Názvy účtov v Beancount sú hierarchické identifikátory oddelené dvojbodkou. Pravidlá sú:
- Musia začínať jedným z piatich koreňových typov:
Assets,Liabilities,Equity,Income,Expenses - Každá zložka začína veľkým písmenom alebo číslicou
- Zložky môžu obsahovať písmená, čísla a pomlčky (žiadne medzery ani podčiarkovníky)
- Vyžadujú sa minimálne dve zložky (napr.
Expenses:Food, nie lenExpenses) - Dvojbodky (
:) oddeľujú úrovne hierarchie
; Platné názvy účtov
Assets:US:BofA:Checking
Liabilities:CA:RBC:CreditCard
Equity:Retained-Earnings
Income:US:Acme:Salary
Expenses:Food:Groceries
Assets:Crypto:BTC-Holdings
; Neplatné názvy účtov
assets:checking ; koreňový typ malými písmenami
Assets:my checking ; medzery nie sú povolené
Expenses ; iba jedna zložka
Odporúčaný vzor pomenovania pre súvahové účty je:
Typ : Krajina : Inštitúcia : Účet : Podúčet
Napríklad: Assets:US:Vanguard:401k:VTSAX alebo Liabilities:US:Chase:Sapphire.
Pre výdavkové a príjmové účty používajte pomenovanie podľa kategórií:
Expenses:Food:Groceries
Expenses:Housing:Utilities:Electric
Income:US:Employer:Salary
Prispôsobenie koreňových názvov
Päť koreňových typov môžete premenovať kvôli lokalizácii alebo osobným preferenciám:
option "name_assets" "Aktiva"
option "name_liabilities" "Pasiva"
option "name_equity" "Kapital"
option "name_income" "Prijmy"
option "name_expenses" "Vydavky"
Vytváranie účtov (direktíva Open)
Každý účet musí byť deklarovaný direktívou open predtým, než naň môžete účtovať transakcie. Úplná syntax je:
YYYY-MM-DD open Account [OmedzenieMenu,...] ["MetódaÚčtovania"]
Základné otvorenie
2014-05-01 open Assets:US:BofA:Checking
S obmedzeniami meny
Obmedzenie mien zabraňuje náhodnému zaúčtovaniu nesprávnej meny:
2014-05-01 open Assets:US:BofA:Checking USD
2014-05-01 open Assets:Cash USD,CAD,EUR
2012-03-01 open Assets:US:ETrade:Main:ITOT ITOT
S metódami účtovania
Pre investičné účty špecifikujte, ako sa párujú loty pri predaji:
2014-02-11 open Assets:US:ETrade:IVV IVV "FIFO"
2014-02-11 open Assets:US:Schwab:AAPL AAPL "LIFO"
2014-02-11 open Assets:US:Fidelity GOOG "STRICT"
Dostupné metódy účtovania:
| Metóda | Správanie |
|---|---|
"STRICT" | Predvolená. Vyžaduje presnú špecifikáciu lotu; pri nejednoznačnosti hlási chybu |
"FIFO" | First-In-First-Out -- najprv znižuje najstaršie loty |
"LIFO" | Last-In-First-Out -- najprv znižuje najnovšie loty |
"AVERAGE" | Zlúči všetky loty a prepočíta priemerné náklady |
"NONE" | Žiadne párovanie lotov; akákoľvek cena je akceptovaná |
S metadátami
2013-03-14 open Assets:US:BTrade:HOOLI
category: "taxable"
institution: "BTrade Corp"
account-number: "XX-1234-5678"
Strategický výber dátumov otvorenia
- Použite svoj dátum narodenia pre univerzálne účty ako
Expenses:Groceries(tým získate celoživotné súčty) - Použite dátum nástupu do zamestnania pre príjmové účty súvisiace s prácou
- Použite skutočný dátum vytvorenia účtu pre účty viazané na inštitúcie (bankové účty, kreditné karty)
Automatické otváranie pomocou pluginu
Ak chcete počas prototypovania preskočiť manuálne open direktívy:
plugin "beancount.plugins.auto_accounts"
Toto automaticky generuje open direktívy pre každý účet referencovaný v transakciách. Avšak znižuje to detekciu preklepov, preto sa to neodporúča pre produkčné použitie.
Zobrazovanie a dopytovanie účtov
Pomocou bean-query (BQL)
# Zoznam všetkých účtov so zostatkami
bean-query ledger.beancount "SELECT account, units(sum(position)) GROUP BY 1"
# Zoznam iba výdavkových účtov
bean-query ledger.beancount "SELECT account WHERE account ~ 'Expenses'"
# Výpis účtu s priebežným zostatkom
bean-query ledger.beancount \
"SELECT date, account, position, balance WHERE account ~ 'BofA:Checking'"
# Žurnálový pohľad pre konkrétny účet
bean-query ledger.beancount "JOURNAL 'Assets:US:BofA:Checking'"
Pomocou bean-report
# Predvážka (všetky účty s konečnými zostatkami)
bean-report ledger.beancount balances
# Súvaha
bean-report ledger.beancount balsheet
# Výkaz ziskov a strát
bean-report ledger.beancount income
# Žurnál pre konkrétny účet
bean-report ledger.beancount journal -a Assets:US:BofA:Checking
Pomocou Fava
Fava poskytuje bohaté vizuálne rozhranie na skúmanie účtov:
- Súvaha: interaktívny strom všetkých Assets, Liabilities a Equity
- Výkaz ziskov a strát: interaktívny strom všetkých Income a Expenses
- Stránka účtu: kliknutím na názov účtu zobrazíte karty Žurnál, Zmeny a Zostatky
- Filter: pomocou regulárnych výrazov zobrazíte len vyhovujúce účty (napr.
Assets:US)
Aktualizácia účtov (premenovanie a reorganizácia)
Beancount nemá zabudovanú direktívu premenovania, ale existuje niekoľko prístupov.
1. Nájsť a nahradiť
Jednoduché vyhľadanie a nahradenie funguje, ale buďte opatrní -- Assets:Bank by sa zhodoval aj s Assets:Bank:Cash. Používajte vzory s ohraničením slov:
sed -i 's/Assets:US:OldBank:Checking/Assets:US:NewBank:Checking/g' *.beancount
2. Plugin rename_accounts
Balík beancount_reds_plugins poskytuje výkonný plugin na premenovanie:
plugin "beancount_reds_plugins.rename_accounts.rename_accounts" "{
'Expenses:Taxes' : 'Income:Taxes',
'Assets:House:Capital-Improvements' : 'Expenses:House:Appliances',
}"
Tento plugin:
- Používa zhodu podreťazcov (
Expenses:Taxes:Federalsa automaticky zmení naIncome:Taxes:Federal) - Podporuje regulárne výrazy so spätnými odkazmi
- Automaticky generuje Open direktívy pre premenované účty
- Nemodifikuje vaše zdrojové súbory -- mení len reprezentáciu v pamäti
- Dá sa zapnúť/vypnúť zakomentovaním riadku s pluginom
3. Vzor uzatvorenia a opätovného otvorenia
Pre skutočné migrácie účtov (napr. zmena banky):
; Starý účet
2010-01-01 open Assets:US:OldBank:Checking USD
; Uzavrieť starý, otvoriť nový
2024-06-15 close Assets:US:OldBank:Checking
2024-06-15 open Assets:US:NewBank:Checking USD
; Previesť zostávajúci zostatok
2024-06-15 * "Prevod do novej banky"
Assets:US:OldBank:Checking -5000.00 USD
Assets:US:NewBank:Checking 5000.00 USD
Uzatváranie účtov
Direktíva close označí účet ako už neaktívny:
2016-11-28 close Liabilities:CreditCard:CapitalOne
Čo uzatvorenie robí
- Vyhlási chybu, ak sa po dátume uzatvorenia objavia akékoľvek zaúčtovania
- Filtruje účet z výkazov mimo jeho aktívneho obdobia
- Povie Fave, aby skryla účet zo stromových zobrazení (konfigurovateľné)
Kedy uzatvárať účty
- Keď v reálnom svete zatvoríte bankový účet alebo kreditnú kartu
- Keď zmeníte zamestnávateľa
- Keď konsolidujete alebo reorganizujete svoj účtový rozvrh
- Keď predáte nehnuteľnosť alebo uzatvoríte investičnú pozíciu
Vždy overte nulový zostatok pred uzatvorením
Beancount automaticky neoveruje nulový zostatok pri uzatvorení. Pridajte manuálne overenie:
2023-12-31 balance Assets:US:OldBank:Savings 0.00 USD
2023-12-31 close Assets:US:OldBank:Savings
Organizácia vášho účtového rozvrhu
Začnite jednoducho, postupne zdokonaľujte
Nepotrebujete dokonalý účtový rozvrh od prvého dňa. Začnite so širokými kategóriami a rozdeľujte ich podľa toho, ako rastú vaše reportovacie potreby. Autor Beancountu uvádza, že má viac ako 250 výdavkových účtov, všetky vytvorené prirodzene v priebehu času.
Bežné organizačné vzory
Vzor 1: Podľa inštitúcie (pre súvahové účty)
Assets:US:BofA:Checking
Assets:US:BofA:Savings
Assets:US:Vanguard:401k:VTSAX
Assets:US:Vanguard:401k:VBTLX
Liabilities:US:Amex:Platinum
Liabilities:US:Chase:Sapphire
Vzor 2: Podľa kategórie (pre príjmové a výdavkové účty)
Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental
Vzor 3: Podľa geografie (pre financie vo viacerých krajinách)
Assets:US:BofA:Checking
Assets:CA:RBC:Checking
Assets:UK:HSBC:Current
Income:US:Acme:Salary
Income:CA:Freelance:Consulting
Vzor 4: Podľa nehnuteľnosti alebo projektu (pre reality alebo podnikanie)
Assets:US:Loft4530:Property
Income:US:Loft4530:Rental
Expenses:Loft4530:Electricity
Expenses:Loft4530:Insurance
Expenses:Loft4530:Maintenance
Vzor 5: Zrkadlenie súvisiacich účtov (rovnaká zložka inštitúcie)
Assets:US:ETrade:Cash
Assets:US:ETrade:AAPL
Income:US:ETrade:Dividends
Income:US:ETrade:PnL
Expenses:US:ETrade:Commissions
Aká hlboká by mala byť hierarchia?
- 2-3 úrovne sú bežné pre kategórie výdavkov (
Expenses:Food:Restaurant) - 3-4 úrovne pre štruktúrované súvahové položky (
Assets:US:Vanguard:401k:VTSAX) - Vyhnite sa viac ako 5 úrovniam, pokiaľ nemáte silný dôvod pre reportovanie
- Hlboké hierarchie fungujú dobre, keď ich Fava zbalí v stromových zobrazeniach
Príklad z praxe
Tu je praktický účtový rozvrh pre osobné financie:
; ── Aktíva ──
Assets:US:BofA:Checking USD
Assets:US:BofA:Savings USD
Assets:US:Vanguard:401k:VTSAX VTSAX
Assets:US:Vanguard:Roth:VTSAX VTSAX
Assets:US:ETrade:Cash USD
Assets:US:ETrade:AAPL AAPL
Assets:Cash:Wallet USD
; ── Záväzky ──
Liabilities:US:Amex:Platinum USD
Liabilities:US:Chase:Freedom USD
Liabilities:US:BofA:Mortgage USD
; ── Príjmy ──
Income:US:Employer:Salary
Income:US:Employer:Bonus
Income:US:Employer:Match401k
Income:US:ETrade:Dividends
Income:US:BofA:Interest
; ── Výdavky ──
Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Taxi
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental
Expenses:Health:Pharmacy
Expenses:Shopping:Clothing
Expenses:Shopping:Electronics
Expenses:Entertainment:Streaming
Expenses:Entertainment:Books
Expenses:Travel:Flights
Expenses:Travel:Hotels
Expenses:Taxes:Federal
Expenses:Taxes:State
Expenses:Taxes:SocialSecurity
Expenses:Taxes:Medicare
; ── Vlastný kapitál ──
Equity:Opening-Balances
Equity:Retained-Earnings
Funkcie špecifické pre Fava
Indikátory aktuálnosti
Jedna z najlepších funkcií Fava pre správu účtov. Pridajte tieto metadáta ku ktorémukoľvek účtu:
2014-05-01 open Assets:US:BofA:Checking USD
fava-uptodate-indication: TRUE
Fava potom zobrazuje farebné bodky vedľa účtu:
- Zelená bodka: posledný záznam je úspešné overenie zostatku (účet je zosúladený)
- Červená bodka: posledný záznam je neúspešné overenie zostatku (vyžaduje pozornosť)
- Žltá bodka: posledný záznam existuje, ale nie je overením zostatku (ešte nie je zosúladený)
- Sivá bodka: žiadna aktivita v rámci obdobia spätného pohľadu
Nastavenie prahu pre sivú bodku:
2016-06-14 custom "fava-option" "uptodate-indicator-grey-lookback-days" "60"
Ovládanie stromového zobrazenia
Ovládajte, ako Fava zobrazuje účty:
; Zobraziť uzatvorené účty v strome
2016-06-14 custom "fava-option" "show-closed-accounts" "true"
; Zobraziť účty s nulovým počtom transakcií
2016-06-14 custom "fava-option" "show-accounts-with-zero-transactions" "true"
; Zobraziť účty s nulovým zostatkom
2016-06-14 custom "fava-option" "show-accounts-with-zero-balance" "true"
Vzory zbaľovania
Predvolene zbaliť hlboko vnorené účty:
; Zbaliť všetky účty s 3 a viac úrovňami
2016-06-14 custom "fava-option" "collapse-pattern" ".*:.*:.*"
; Zbaliť konkrétne podstromy
2016-06-14 custom "fava-option" "collapse-pattern" "Assets:US:Vanguard:.*"
Zahrnúť podriadené účty v žurnáli účtu
Pri prezeraní žurnálu účtu vo Fave zahrnúť zaúčtovania z podriadených účtov:
2016-06-14 custom "fava-option" "account-journal-include-children" "true"
Invertovanie znamienok pre lepšiu čitateľnosť
Štandardne sa príjmy a záväzky zobrazujú ako záporné čísla (ich prirodzené znamienko). Na zobrazenie ako kladné:
2016-06-14 custom "fava-option" "invert-income-liabilities-equity" "true"
Správa dokumentov
Fava integruje správu dokumentov s vašou hierarchiou účtov. Nastavte koreňový adresár dokumentov:
option "documents" "/path/to/documents"
Potom organizujte súbory podľa cesty účtu:
/path/to/documents/
Assets/
US/
BofA/
Checking/
2024-01-15.january-statement.pdf
2024-02-15.february-statement.pdf
Liabilities/
US/
Amex/
Platinum/
2024-03-15.march-bill.pdf
Súbory začínajúce na YYYY-MM-DD sú automaticky objavené Favou a zobrazujú sa v žurnálovom pohľade účtu.
Bežné chyby a ako sa im vyhnúť
1. Preklepy v názvoch účtov
Jediný preklep ako Expenses:Grocries vytvorí úplne nový, neúmyselný účet.
Riešenie: Nepoužívajte plugin auto_accounts v produkcii. Vyžadujte explicitné open direktívy. Beancount okamžite ohlási chybu pri akomkoľvek nedeklarovanom účte:
ERROR: Invalid reference to unknown account 'Expenses:Grocries'
2. Zabudnutie obmedzení meny
Bez obmedzení meny môžete náhodne zaúčtovať EUR na účet len pre USD.
Riešenie: Vždy špecifikujte meny v open direktívach:
2014-01-01 open Assets:US:BofA:Checking USD
3. Nepravidelné overovanie zostatkov
Bez pravidelného overovania zostatkov môžu chyby zostať neodhalené celé mesiace.
Riešenie: Pridajte mesačné overenia zostatkov pre každý aktívny účet:
2024-01-01 balance Assets:US:BofA:Checking 5,432.10 USD
2024-02-01 balance Assets:US:BofA:Checking 4,890.55 USD
2024-03-01 balance Assets:US:BofA:Checking 6,123.00 USD
4. Nekonzistentné konvencie pomenovania
Miešanie vzorov (napr. Expenses:Food vs Expenses:US:Food) robí dotazy a výkazy mätúcimi.
Riešenie: Zvoľte konvenciu a dodržiavajte ju. Používajte predpony krajín pre súvahové účty, pomenovanie podľa kategórií pre príjmy a výdavky.
5. Uzatvorenie bez overenia nulového zostatku
Direktíva close neoveruje zostatok. Mohli by ste uzatvoriť účet, na ktorom sú ešte peniaze.
Riešenie: Vždy spárujte uzatvorenie s overením zostatku:
2023-12-31 balance Assets:US:OldBank:Savings 0.00 USD
2023-12-31 close Assets:US:OldBank:Savings
Pokročilé vzory
Tipy pre viacero mien
Deklarujte vaše prevádzkové meny pre vyhradené stĺpce výkazov:
option "operating_currency" "USD"
option "operating_currency" "EUR"
Pre účty s viacerými menami uveďte všetky povolené meny:
2014-01-01 open Assets:Cash USD,CAD,EUR
Overenia zostatkov s viacerými menami sa musia robiť po jednej mene:
2024-01-01 balance Assets:Cash 562.00 USD
2024-01-01 balance Assets:Cash 210.00 CAD
2024-01-01 balance Assets:Cash 60.00 EUR
Pad a Balance pre počiatočné nastavenie
Použite direktívu pad na stanovenie počiatočných zostatkov bez manuálneho výpočtu súm:
2000-05-28 open Assets:US:BofA:Checking USD
2000-05-28 pad Assets:US:BofA:Checking Equity:Opening-Balances
2024-07-01 balance Assets:US:BofA:Checking 12,345.67 USD
Beancount automaticky syntetizuje vyrovnávaciu transakciu. Dôležitá poznámka: overenia zostatkov kontrolujú zostatok na začiatku uvedeného dátumu. Takže pad z 2. januára potrebuje overenie zostatku z 3. januára alebo neskôr.