Preskočiť na hlavný obsah

5 príspevkov označené s "Fava"

Zobraziť všetky značky

Ekosystém Beancount: Komplexná analýza

· Čítanie na 37 minút
Mike Thrift
Mike Thrift
Marketing Manager

Základná Funkcionalita a Filozofia Beancountu

Beancount je open-source systém podvojného účtovníctva, ktorý na zaznamenávanie transakcií používa obyčajné textové súbory. Vo svojej podstate Beancount považuje vašu účtovnú knihu za dátovú sadu definovanú jednoduchou, prísnou gramatikou. Každá finančná udalosť (transakcie, otváranie účtov, ceny komodít atď.) je direktívou v textovom súbore, ktorú Beancount parsuje do databázy záznamov v pamäti. Tento dizajn presadzuje princíp podvojného účtovníctva: každá transakcia musí vyrovnávať debety a kredity naprieč účtami. Výsledkom je vysoko transparentná a auditovateľná účtovná kniha, ktorú môžete ľahko verzovať, kontrolovať a dopytovať.

2025-04-15-beancount-ecosystem

Filozofia – správnosť a minimalizmus: Dizajn Beancountu uprednostňuje integritu dát a jednoduchosť. Jeho tvorca, Martin Blais, opisuje Beancount ako „pesimistický“ v predpoklade, že používateľ urobí chyby, a preto ukladá dodatočné kontroly a obmedzenia. Napríklad, Beancount vám nedovolí odstrániť aktíva, ktoré nikdy neboli pridané (čím zabraňuje záporným držbám akcií alebo hotovostným zostatkom), a môže vynútiť, aby bol každý účet otvorený pred použitím. Chýba mu koncept „virtuálnych“ alebo automaticky vyrovnaných účtovných položiek, ktorý má Ledger – je to zámerná voľba, aby sa vynútili plne vyrovnané záznamy. Beancount efektívne „ide na doraz“ v správnosti s viacerými krížovými kontrolami, než poskytuje základné podvojné účtovníctvo. Tento opatrný prístup oslovuje používateľov, ktorí „si príliš neveria“ a chcú, aby softvér zachytil ich chyby.

Minimálne možnosti, maximálna konzistencia: Na rozdiel od množstva prepínačov príkazového riadka a možností ladenia Ledgeru sa Beancount rozhodol pre minimalizmus. Existuje veľmi málo globálnych možností a žiadne, ktoré by menili sémantiku transakcií mimo súboru účtovnej knihy. Všetka konfigurácia, ktorá ovplyvňuje účtovníctvo (ako sú metódy nákladovej základne komodít alebo predpoklady účtovania), sa vykonáva v súbore prostredníctvom direktív alebo pluginov, čím sa zaisťuje, že načítanie rovnakého súboru vždy produkuje rovnaké výsledky bez ohľadu na to, ako sú generované správy. Tento dizajn sa vyhýba zložitosti mnohých nastavení Ledgeru a jemným interakciám medzi nimi. Filozofia Beancountu je, že účtovný nástroj by mal byť stabilným, deterministickým procesom od vstupného súboru po správy. Dosahuje to tým, že účtovnú knihu považuje za usporiadaný prúd direktív, ktoré môžu byť programovo spracované v poradí. Dokonca aj veci, ktoré Ledger považuje za špeciálnu syntax (ako sú počiatočné zostatky alebo výkazy cien), sú v dátovom modeli Beancountu prvotriednymi direktívami, čo robí systém vysoko rozšíriteľným.

Rozšíriteľnosť prostredníctvom pluginov a dopytovacieho jazyka: Beancount je implementovaný v Pythone a poskytuje body rozšírenia na vloženie vlastnej logiky do spracovateľského procesu. Používatelia môžu písať pluginy v Pythone, ktoré operujú s prúdom transakcií (napríklad na vynútenie vlastného pravidla alebo generovanie automatických záznamov). Tieto pluginy sa spúšťajú počas spracovania súboru, čím efektívne rozširujú základnú funkcionalitu Beancountu bez potreby modifikovať zdroj. Beancount tiež obsahuje výkonný dopytovací jazyk (inšpirovaný SQL) na analýzu a filtrovanie účtovnej knihy. Nástroj bean-query spracováva parsovanú účtovnú knihu ako databázu a umožňuje vám na nej spúšťať analytické dopyty – napríklad sčítanie výdavkov podľa kategórie alebo extrahovanie všetkých transakcií pre daného príjemcu. V Beancount 3.x bola táto schopnosť dopytovania presunutá do samostatného balíka beanquery, ale z pohľľadu používateľa stále poskytuje flexibilné reportovanie prostredníctvom SQL-podobných dopytov.

Čistý text a kontrola verzií: Ako účtovný nástroj s čistým textom Beancount kladie dôraz na kontrolu používateľa a dlhovekosť dát. Účtovná kniha je jednoducho textový súbor .beancount, ktorý môžete upravovať v akomkoľvek textovom editore. To znamená, že celá vaša finančná história je uložená v ľudsky čitateľnej forme a môžete ju umiestniť do Gitu alebo iného VCS na sledovanie zmien v čase. Používatelia často uchovávajú svoj súbor Beancount pod kontrolou verzií, aby si udržali auditnú stopu každej úpravy (so správami o commitoch popisujúcimi zmeny). Tento prístup je v súlade s filozofiou Beancountu, že účtovné dáta, najmä osobné alebo malopodnikové financie, by mali byť transparentné a „odolné voči budúcnosti“ – nie uzamknuté vo vlastnej databáze. Podľa slov Martina Blais Beancount je „dielo lásky“ vytvorené tak, aby bolo jednoduché, trvácne a bezplatné pre komunitu. Bol prvýkrát vyvinutý okolo roku 2007 a vyvíjal sa prostredníctvom rozsiahlych prepísaní (v1 na v2 a teraz v3 v roku 2024), aby zdokonalil svoj dizajn pri zachovaní svojej základnej filozofie minimalizmu a správnosti.

Nástroje, Pluginy a Rozšírenia v Ekosystéme Beancount

Ekosystém Beancount vyvinul bohatú sadu nástrojov, pluginov a rozšírení, ktoré rozširujú základnú funkcionalitu účtovnej knihy. Tie zahŕňajú import dát, úpravu účtovných kníh, prezeranie výkazov a pridávanie špecializovaných účtovných funkcií. Nižšie je prehľad kľúčových komponentov a doplnkov vo svete Beancount:

Nástroje na import dát (Importéry)

Jednou z najdôležitejších potrieb pre praktické použitie je import transakcií z bánk, kreditných kariet a iných finančných inštitúcií. Beancount na tento účel poskytuje importovací rámec a importovacie skripty prispievané komunitou. V Beancount 2.x sa na definovanie pluginov importéra v Pythone a ich aplikáciu na stiahnuté výpisy používal vstavaný modul beancount.ingest (s príkazmi ako bean-extract a bean-identify). V Beancount 3.x to bolo nahradené externým projektom s názvom Beangulp. Beangulp je špecializovaný rámec pre importéry, ktorý sa vyvinul z beancount.ingest a je teraz odporúčaným spôsobom automatizácie importu transakcií pre Beancount 3.0. Umožňuje písať Python skripty alebo nástroje príkazového riadka, ktoré čítajú externé súbory (ako sú CSV alebo PDF výpisy) a generujú Beancount záznamy. Tento nový prístup oddeľuje logiku importu od jadra Beancount – napríklad starý príkaz bean-extract bol vo verzii 3 odstránený a namiesto toho vaše importovacie skripty samy produkujú transakcie prostredníctvom rozhrania príkazového riadka Beangulp.

Existujú desiatky hotových importérov pre rôzne banky a formáty, ktoré prispela komunita. Existujú importovacie skripty pre inštitúcie po celom svete – od Alipay a WeChat Pay v Číne, cez rôzne európske banky (Commerzbank, ING, ABN AMRO atď.), až po americké banky ako Chase a Amex. Mnohé z nich sú zhromaždené vo verejných repozitároch (často na GitHub) alebo v balíkoch ako beancount-importers. Napríklad projekt Tarioch Beancount Tools (tariochbctools) poskytuje importéry pre švajčiarske a britské banky a dokonca spracováva aj importy kryptotransakcií. Ďalším príkladom je Lazy Beancount, ktorý balí sadu bežných importérov (pre Wise, Monzo, Revolut, IBKR atď.) a poskytuje nastavenie založené na Docker pre jednoduchú automatizáciu. Bez ohľadu na to, ktorú banku alebo finančnú službu používate, je pravdepodobné, že niekto už pre ňu napísal Beancount importér – alebo si môžete napísať vlastný pomocou rámca Beangulp. Flexibilita Pythonu znamená, že importéry dokážu spracovať parsovanie CSV/Excel súborov, OFX/QIF stiahnutých súborov, alebo dokonca získavanie dát z API, a následne generovať transakcie v štandardizovanom formáte Beancount.

Úpravy a integrácia editorov

Keďže účtovné knihy Beancount sú len text, používatelia často využívajú svoje obľúbené textové editory alebo IDE na ich správu. Ekosystém poskytuje pluginy na podporu editorov, aby bola táto skúsenosť plynulejšia. Existujú rozšírenia pre mnohé populárne editory, ktoré pridávajú zvýrazňovanie syntaxe, automatické dopĺňanie názvov účtov a kontrolu chýb v reálnom čase:

  • Emacs Beancount-Mode: K dispozícii je hlavný režim Emacs (beancount-mode) na úpravu súborov .beancount, ktorý ponúka funkcie ako farebné zvýrazňovanie syntaxe a integráciu s kontrolórom Beancount. Dokáže dokonca spúšťať bean-check na pozadí, takže chyby v účtovnej knihe (napríklad nevyvážená transakcia) sú označené už počas úprav.
  • Rozšírenie pre VS Code: Rozšírenie Beancount na VSCode Marketplace poskytuje podobné vymoženosti pre používateľov Visual Studio Code. Podporuje zvýrazňovanie syntaxe, zarovnávanie súm, automatické dopĺňanie účtov/príjemcov a dokonca aj kontroly zostatkov za chodu pri uložení súboru. Môže sa tiež integrovať s Fava, čo vám umožní spustiť webové rozhranie Fava priamo z VSCode.
  • Pluginy alebo režimy existujú aj pre Vim, Atom a iné editory. Napríklad, existuje gramatika Tree-sitter pre Beancount, ktorá poháňa zvýrazňovanie syntaxe v moderných editoroch a bola dokonca prijatá v komponentoch webového editora Fava. Skrátka, nech už je vaše editačné prostredie akékoľvek, komunita pravdepodobne poskytla plugin, aby boli úpravy súborov Beancount pohodlné a bezchybné.

Pre rýchle zadávanie transakcií mimo tradičných editorov existujú aj nástroje ako Bean-add a mobilné aplikácie. Bean-add je nástroj príkazového riadka, ktorý umožňuje pridať novú transakciu prostredníctvom výzvy alebo jednoriadkového príkazu, pričom spracováva návrhy dátumu a účtu. Na mobilných zariadeniach projekt s názvom Beancount Mobile poskytuje jednoduché rozhranie na zadávanie transakcií na cestách (napríklad zaznamenávanie hotovostného nákupu z telefónu). Okrem toho existuje Beancount Telegram Bot na zachytávanie transakcií prostredníctvom správ – môžete poslať správu s podrobnosťami o transakcii a bot ju naformátuje do vášho súboru účtovnej knihy.

Webové rozhrania a vizualizačné nástroje

(Fava) Webové rozhranie Fava poskytuje interaktívny panel pre Beancount, s prehľadmi, ako je výkaz ziskov a strát s vizualizáciami (tu zobrazené ako stromová mapa výdavkov podľa kategórií) spolu s tabuľkami účtov a zostatkov.

Vlajkovou loďou rozhraní pre Beancount je Fava, moderné webové rozhranie. Fava beží ako lokálna webová aplikácia, ktorá číta váš súbor Beancount a vytvára bohaté interaktívne prostredie vo vašom prehliadači. Ponúka kompletnú sadu prehľadov: súvaha, výkaz ziskov a strát, čistá hodnota majetku v čase, držba portfólia, grafy výkonnosti, rozpočty a ďalšie – všetko ihneď k dispozícii. Používatelia často uvádzajú Fava ako hlavný dôvod pre výber Beancountu pred inými nástrojmi pre účtovníctvo v obyčajnom texte. Jediným príkazom (fava ledger.beancount) môžete prehliadať svoje financie pomocou grafov a tabuliek namiesto textu. Fava podporuje funkcie ako: prechádzanie do detailov účtov, filtrovanie transakcií podľa príjemcu alebo značky, editor dotazov (aby ste mohli spúšťať dotazy Beancount a vidieť výsledky v prehliadači) a dokonca aj integrovaný webový editor pre vašu účtovnú knihu. Je vysoko použiteľné, čím sprístupňuje účtovníctvo v obyčajnom texte pre tých, ktorí preferujú vizuálne rozhrania.

Pod kapotou je Fava napísaná v Pythone (Flask na backende) a JavaScripte (Svelte na frontende). Má vlastný cyklus vydávania a je aktívne udržiavané. Je pozoruhodné, že Fava držala krok s vývojom Beancountu – napríklad, Fava 1.30 pridala podporu pre Beancount v3, prešla na interné používanie nových balíkov beanquery a beangulp. (Stále podporuje Beancount 2 pre staršie účtovné knihy.) Zameranie Fava na použiteľnosť zahŕňa príjemné detaily ako automatické dopĺňanie vo webovom editore a elegantné používateľské rozhranie s tmavým režimom a responzívnymi grafmi. Existuje aj odnož s názvom Fava-GTK, ktorá balí Fava do desktopovej aplikácie pre používateľov GNOME/Linuxu, ktorí preferujú pocit natívnej aplikácie.

Okrem Fava existujú aj iné možnosti vizualizácie a analýzy. Pretože dáta Beancountu môžu byť exportované alebo dotazované ako tabuľky, používatelia často využívajú nástroje ako Jupyter notebooky alebo Pandas pre vlastnú analýzu. Napríklad, jeden používateľ popisuje načítanie dát z Beancountu cez dotazovacie rozhranie do Pandas DataFrame na prípravu vlastného prehľadu. Existujú aj skripty prispievané komunitou pre špecifické prehľady – napr. nástroj na analýzu alokácie portfólia alebo graf riadenia procesov pre výdavky vs. čistá hodnota majetku. Avšak, pre väčšinu ľudí Fava poskytuje viac než dostatočný výkon pre tvorbu prehľadov bez potreby písať kód. Dokonca podporuje aj rozšírenia: môžete vložiť súbory Pythonu, ktoré pridávajú nové stránky prehľadov alebo grafy do Fava. Pozoruhodným rozšírením je fava-envelope pre obálkové rozpočtovanie v rámci Fava. Celkovo, Fava slúži ako centrálny vizualizačný uzol ekosystému Beancount.

Nástroje a skripty príkazového riadka

Beancount obsahuje rôzne CLI nástroje (najmä v staršej vetve v2, niektoré z nich boli vo v3 zredukované). Tieto nástroje pracujú s vaším účtovným súborom na jeho kontrolu alebo generovanie špecifických správ v textovej alebo HTML podobe:

  • bean-check: validátor, ktorý kontroluje syntaktické chyby alebo účtovné chyby v súbore. Spustenie bean-check myfile.beancount vás upozorní na akúkoľvek nerovnováhu, chýbajúci účet alebo iné problémy a nevypíše nič, ak súbor neobsahuje chyby.
  • bean-format: formátovač, ktorý usporiada vašu účtovnú knihu zarovnaním čísel do úhľadných stĺpcov, podobne ako spustenie formátovača kódu na zdrojovom kóde. To pomáha udržiavať súbor čistý a čitateľný.
  • bean-query: interaktívny shell alebo dávkový nástroj na spustenie dotazovacieho jazyka Beancountu na vašej účtovnej knihe. Môžete ho použiť na vytváranie vlastných tabuľkových správ (napr. bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: všestranný generátor správ (vo v2), ktorý dokáže vypísať preddefinované správy (súvaha, výkaz ziskov a strát, predvaha atď.) do konzoly alebo do súborov. Napríklad bean-report file.beancount balances by vytlačil zostatky účtov. (V praxi boli mnohé z týchto textových správ nahradené krajšou prezentáciou Favy.)
  • bean-web / bean-bake: staršie webové rozhranie, ktoré by sprístupňovalo správy na localhost alebo ich „upieklo“ ako statické HTML súbory. Tieto sa väčšinou používali predtým, ako sa Fava stala populárnou; bean-web poskytovalo základné webové zobrazenie rovnakých správ, aké dokázal generovať bean-report. V Beancount 3 bol bean-web odstránený (keďže Fava je teraz odporúčaný webový frontend, ponúkajúci vynikajúcu skúsenosť).
  • bean-example: nástroj na generovanie príkladového súboru účtovnej knihy (užitočný pre nováčikov na zobrazenie šablóny Beancount záznamov).
  • bean-doctor: nástroj na ladenie, ktorý dokáže diagnostikovať problémy vo vašej účtovnej knihe alebo prostredí.

Stojí za zmienku, že od verzie Beancount v3 boli mnohé z týchto nástrojov presunuté mimo hlavného projektu. Základný balík Beancount bol zefektívnený a nástroje ako dotazovací engine a importéry boli rozdelené do samostatných balíkov (beanquery, beangulp atď.) pre ľahšiu údržbu. Napríklad funkcionalita bean-query je teraz poskytovaná nástrojom beanquery, ktorý sa inštaluje samostatne. Z pohľadu používateľa zostáva funkcionalita dostupná; bola len modularizovaná. Komunita Arch Linuxu si túto zmenu všimla pri aktualizácii Favy: balík Fava pridal závislosti na beanquery a beangulp na podporu Beancount 3.x. Tento modulárny prístup tiež umožňuje ostatným v komunite prispievať k týmto pomocným nástrojom nezávislejšie od cyklu vydávania Beancountu.

Pluginy a rozšírenia Beancount

Výraznou silnou stránkou ekosystému Beancount je systém pluginov. Pridaním riadku plugin "module.name" do vášho súboru Beancount môžete začleniť vlastnú logiku v Pythone, ktorá sa spustí počas spracovania účtovnej knihy. Komunita vytvorila mnoho pluginov na rozšírenie možností Beancountu:

  • Kvalita dát a pravidlá: Príklady zahŕňajú beancount-balexpr, ktorý vám umožňuje tvrdiť rovnice zahŕňajúce viacero účtov (napr. Aktívum A + Aktívum B = Záväzok X), a beancount-checkclosed, ktorý automaticky vkladá potvrdenia zostatkov pri uzavretí účtu, aby sa zabezpečilo, že jeho čistá hodnota je nulová. Existuje dokonca aj plugin na zabezpečenie, aby boli transakcie v súbore zoradené podľa dátumu (autobean.sorted), čím sa zachytia položky mimo poradia.
  • Automatizácia: Plugin beancount-asset-transfer dokáže generovať položky vecných prevodov medzi účtami (užitočné pre presun akcií medzi brokermi pri zachovaní obstarávacej ceny). Ďalší, autobean.xcheck, krížovo kontroluje vašu účtovnú knihu Beancount voči externým výpisom pre zistenie nezrovnalostí.
  • Opakujúce sa transakcie a rozpočty: „Opakujúci sa“ alebo interpolačný plugin od Akuukis umožňuje definovať opakujúce sa transakcie alebo rozložiť ročné výdavky na mesiace. Pre rozpočtovanie, rozšírenie fava-envelope (používané cez Fava) podporuje metodiku obálkového rozpočtovania v čistom texte. Existuje aj MiniBudget od Franka Daviesa – malý samostatný nástroj inšpirovaný Beancountom, ktorý pomáha s rozpočtovaním pre osobné alebo malé podnikateľské použitie.
  • Dane a výkazníctvo: Niektoré pluginy pomáhajú s daňovým účtovníctvom, napríklad ten, ktorý automaticky klasifikuje kapitálové zisky na krátkodobé a dlhodobé. Ďalší (fincen_114 od Justusa Pendletona) generuje správu FBAR pre daňových poplatníkov v USA so zahraničnými účtami, čo ilustruje, ako možno dáta Beancountu využiť pre regulačné výkazníctvo.
  • Komunitné úložiská pluginov: Existujú vybrané sady pluginov, ako napríklad beancount-plugins (od Davea Stephensa) zamerané na veci ako odpisové položky, a beancount-plugins-zack (od Stefana Zacchiroliho), ktoré zahŕňajú rôzne pomocné nástroje, ako sú direktívy na triedenie.

Okrem pluginov existujú aj ďalšie pomocné nástroje súvisiace s Beancountom, ktoré riešia špecifické potreby. Napríklad, beancount-black je automatický formátovač podobný formátovaču kódu Black, ale pre súbory účtovnej knihy Beancount. Existuje Beancount Bot (Telegram/Mattermost) na pridávanie transakcií cez chat, ako už bolo spomenuté, a Alfred workflow pre macOS na rýchle pridávanie transakcií do vášho súboru. Nástroj s názvom Pinto ponúka „turbodúchadlom poháňané“ CLI s interaktívnym zadávaním (ako vylepšený bean-add). Pre tých, ktorí migrujú z iných systémov, existujú konvertory (YNAB2Beancount, CSV2Beancount, GnuCash2Beancount, Ledger2Beancount), ktoré pomáhajú preniesť dáta z iných zdrojov.

Zhrnutím, ekosystém Beancount je pomerne rozsiahly. Tabuľka 1 nižšie uvádza niektoré hlavné nástroje a rozšírenia s ich úlohami:

Nástroj/RozšíreniePopis
Fava (webové rozhranie)Plnohodnotná webová aplikácia na prezeranie a úpravu účtovných kníh Beancount. Poskytuje interaktívne správy (súvaha, výkaz ziskov a strát atď.), grafy a možnosti dopytovania. Výrazne zlepšuje použiteľnosť Beancountu.
Beangulp (importný rámec)Samostatný importný rámec pre Beancount v3, nahrádzajúci starší modul pre príjem dát. Pomáha konvertovať bankové výpisy (CSV, PDF atď.) na položky Beancountu pomocou skriptov pluginov.
Beanquery (nástroj na dopytovanie)Samostatný SQL-podobný dopytovací engine pre dáta Beancountu. Nahrádza bean-query vo verzii v3, čo umožňuje pokročilé dopytovanie transakcií a zostatkov prostredníctvom známej syntaxe SELECT-FROM-WHERE.
Bean-check / Bean-formatZákladné CLI nástroje na validáciu súboru Beancount (kontrola chýb) a jeho automatické formátovanie pre konzistentnosť. Užitočné pre udržiavanie správnej a čistej účtovnej knihy.
Pluginy editorov (Emacs, VSCode, Vim atď.)Pluginy/režimy, ktoré pridávajú podporu syntaxe Beancount a linting do textových editorov. Zlepšujú skúsenosť s manuálnou úpravou súborov .beancount s funkciami ako automatické dopĺňanie a zvýrazňovanie chýb v reálnom čase.
Komunitné importéryKolekcie skriptov na import z bánk (mnohé na GitHub) pokrývajúce banky v USA, EÚ, Ázii a ďalších. Umožňujú používateľom automaticky prijímať transakcie zo svojich finančných inštitúcií do Beancountu.
Pluginy (rozšírenia účtovnej knihy)Voliteľné pluginy v súbore na vynucovanie pravidiel alebo pridávanie funkcií (napr. zdieľanie výdavkov, opakujúce sa položky, vlastné potvrdenia zostatkov). Napísané v Pythone a spúšťané počas spracovania súboru pre prispôsobenie.
Konvertory (migračné nástroje)Nástroje na konverziu dát z iných formátov do Beancountu, napr. z GnuCash alebo Ledger CLI do formátu Beancount. Uľahčujú prijatie Beancountu bez začínania od nuly.

Porovnanie s Ledger, hledger a podobnými systémami

Beancount patrí do rodiny nástrojov pre účtovníctvo s podvojným zápisom v obyčajnom texte, medzi ktorými sú prominentné Ledger CLI (Ledger od Johna Wiegleyho) a hledger. Hoci všetky tieto systémy zdieľajú základnú myšlienku účtovných súborov v obyčajnom texte a podvojného účtovníctva, líšia sa v syntaxi, filozofii a zrelosti ekosystému. Nasledujúca tabuľka zdôrazňuje kľúčové rozdiely medzi Beancount, Ledger a hledger:

AspektBeancount (Python)Ledger CLI (C++)hledger (Haskell)
Syntax a štruktúra súboruPrísna, štruktúrovaná syntax definovaná formálnou gramatikou (BNF). Transakcie majú explicitné riadky dátum príznak "Príjemca" "Popis" a zápisy s množstvami; všetky účty musia byť explicitne otvorené/definované. Žiadne implicitné zápisy; každá transakcia musí byť vyvážená.Voľnejšia syntax. Príjemca/popis sú zvyčajne na rovnakom riadku ako dátum. Umožňuje určité implicitné vyváženie (napríklad transakcia s jedným zápisom môže implikovať druhý zápis na predvolený účet). Názvy účtov možno použiť bez predchádzajúcej deklarácie. Ponúka množstvo možností príkazového riadka, ktoré môžu ovplyvniť parsovanie (napr. predpoklady roku, pravidlá zlúčenia komodít).Vo veľkej miere sa riadi syntaxou Ledger s menšími rozdielmi. hledger je reimplementácia základných funkcií Ledger v Haskelli, takže formát žurnálu je veľmi podobný formátu Ledger (s niektorými rozšíreniami a prísnejším parsovaním v predvolenom nastavení). Napríklad hledger je o niečo prísnejší ohľadom dátumov a syntaxe komodít ako Ledger, ale nie taký prísny ako Beancount.
FilozofiaKonzervatívna a pedantná. Predovšetkým kladie dôraz na zachytávanie používateľských chýb a udržiavanie integrity dát. V predvolenom nastavení ukladá mnoho kontrol (potvrdenia zostatkov, sledovanie šarží). Minimálna konfigurácia – prístup „jeden spôsob, ako to urobiť“ pre konzistentnosť. Navrhnutý ako knižnica s pluginmi pre rozšíriteľnosť (spracováva dáta účtovnej knihy ako prúd, čo umožňuje vlastnú logiku v Pythone).Optimistická a flexibilná. Dôveruje používateľovi, že správne zadá dáta; v predvolenom nastavení menej vstavaných obmedzení. Vysoko prispôsobiteľný s desiatkami možností a príkazových prepínačov na úpravu správania. Má tendenciu byť monolitickým nástrojom s vstavanými funkciami (reporty, grafy) a používa doménovo špecifický jazyk v rámci účtovnej knihy pre veci ako automatizované transakcie a periodické transakcie. Rozšíriteľnosť je typicky prostredníctvom externých skriptov alebo vstavaného dotazovacieho jazyka, nie prostredníctvom API pluginov.Pragmatická a konzistentná. Cieľom je priniesť prístup Ledger širšiemu publiku s predvídateľným správaním. hledger v predvolenom nastavení smeruje k väčšej konzistentnosti (žiadne predpoklady vyváženia bez explicitných účtov) a má menej „nástrah“ ako najmiernejšie režimy Ledger. Má podmnožinu funkcií Ledger (niektoré z exotickejších možností Ledger nie sú podporované), ale pridáva niektoré vlastné (napríklad webové rozhranie a vstavaný import CSV). Kladie dôraz na stabilitu a správnosť, ale bez pluginového systému ako Beancount.
Transakcie a vyváženiePrísne podvojné účtovníctvo: každá transakcia musí mať rovnaký celkový súčet debetov a kreditov. Nepovoľuje nevyvážené zápisy ani zástupné symboly (žiadne „virtuálne zápisy“, ktoré sa automaticky vyvážia). Taktiež vynucuje nezávislosť na poradí: účtovná kniha môže byť ľubovoľne zoradená podľa dátumu, pretože potvrdenia zostatkov sú viazané na dátum, nie na poradie súboru. Sledovanie nákladov pre komodity je prísne – pri predaji aktív musíte špecifikovať šarže, inak Beancount vynúti FIFO/LIFO tak, aby ste nemohli odstrániť niečo, čo ste nepridali.Umožňuje väčšiu zhovievavosť pri transakciách. Ledger povoľuje „virtuálne“ zápisy (pomocou hranatých zátvoriek [ ] alebo okrúhlych zátvoriek), ktoré nevyžadujú explicitný vyrovnávací účet – často sa používajú na správu rozpočtu alebo implicitné vyrovnanie vlastného imania. V Ledger je možné zadať neúplnú transakciu (vynechať jednu stranu) a nechať Ledger odvodiť vyrovnávaciu sumu. Taktiež, Ledger prísne nevynucuje odstraňovanie aktív po šaržiach; bez problémov odpočíta z celkového zostatku komodít, aj keď konkrétne šarže neboli sledované. To uľahčuje napríklad účtovanie s priemernými nákladmi, ale znamená to, že Ledger vám nezabráni v chybách, ako je predaj viac akcií, ako máte v danej šarži.
Inventár a obstarávacia cenaPresné sledovanie šarží. Beancount pripája informácie o nákladoch k šaržiam komodít (napr. nákup 10 akcií po 100 USD za kus), a pri znižovaní inventára vyžaduje zhodu s konkrétnou šaržou alebo použitie definovanej stratégie. Zabezpečuje, že kapitálové zisky a obstarávacie ceny sú správne vypočítané už od návrhu. Metóda priemerných nákladov nie je predvolená, pokiaľ pre ňu explicitne nenapíšete logiku, pretože Beancount spracováva každú šaržu odlišne, aby zachoval presnosť.Abstraktnejší inventár. Ledger spracováva množstvá komodít plynulejšie; v predvolenom nastavení sú všetky šarže zlúčené v reportoch (zobrazuje iba celkové množstvá). Poskytuje možnosti reportovania podľa šarže alebo priemerných nákladov, ak je to potrebné, ale toto je záležitosť reportovania. Historicky, Ledger nepoužíval informácie o nákladoch na vynútenie zostatku v transakciách s viacerými komoditami, čo mohlo viesť k subtílnym nesprávnym výpočtom kapitálových ziskov. Flexibilita Ledger však umožňuje používateľom vybrať si FIFO, LIFO, priemer atď. v čase reportovania prostredníctvom prepínačov príkazového riadka.
Reportovanie a UIPredovšetkým prostredníctvom Fava (webové UI) a bean-query/bean-report. Fava ponúka prepracovaný webový panel s grafmi a diagramami, vďaka čomu je Beancount veľmi užívateľsky prívetivý pre analýzu. Podporuje tiež textové reporty a SQL-podobné dotazy prostredníctvom bean-query. Žiadne oficiálne TUI (textové UI), ale integrácia s editormi/IDE túto medzeru vypĺňa.Predovšetkým reportovanie založené na CLI. Ledger má mnoho vstavaných príkazov na reportovanie (balance, register, stats atď.), ktoré vypisujú text do terminálu. Dokáže generovať grafy (ASCII alebo prostredníctvom gnuplot) a dokonca má niektoré doplnky pre HTML reporty, ale nemá oficiálne webové rozhranie udržiavané ako súčasť projektu. (Existovali pokusy tretích strán o webové UI pre Ledger, ale žiadne nie sú také prominentné ako Fava pre Beancount.) Pre UI sa používatelia spoliehajú na terminál alebo možno GUI ako Ledger-Live (samostatný projekt).Ponúka aj CLI, aj jednoduché webové UI. hledger dedí CLI reporty Ledger (s podobnými príkazmi) a navyše poskytuje hledger-web, základné webové rozhranie na prezeranie účtov a transakcií v prehliadači. hledger-web nie je taký bohatý na funkcie ako Fava, ale poskytuje prehľad iba na čítanie. hledger má tiež hledger-ui, terminálové rozhranie založené na knižnici Curses pre interaktívne použitie.
Rozšíriteľnosť a pluginyVysoká rozšíriteľnosť prostredníctvom Pythonu. API pluginov umožňuje spúšťať ľubovoľný kód Pythonu počas spracovania účtovnej knihy, čo znamená, že používatelia môžu implementovať vlastné funkcie bez úpravy jadra. Ekosystém pluginov (pre rozpočtovanie atď.) to demonštruje. Tiež je možné písať skripty v Pythone na použitie knižníc Beancount pre vlastné reportovanie.Rozšíriteľnosť na nižšej úrovni. Ledger možno rozšíriť písaním vlastných skriptov, ktoré parsujú výstup Ledger, alebo šikovným použitím jeho interného dotazovacieho jazyka. Má tiež funkcie ako automatizované transakcie (pravidlá, ktoré automaticky generujú zápisy na základe spúšťačov v žurnáli) a periodické transakcie, čo sú druhy vstavanej rozšíriteľnosti v rámci súboru účtovnej knihy. Neponúka však API na vstrekovanie ľubovoľného kódu do účtovného jadra – nie je to knižnica rovnakým spôsobom (hoci libledger existuje pre vývojárov C++).Mierna rozšíriteľnosť. hledger zámerne vynecháva funkcie automatizovaných/periodických transakcií Ledger, aby veci zjednodušil, ale poskytuje nástroje ako hledger-import na konverziu iných formátov a umožňuje doplnky. Keďže je napísaný v Haskelli, používa sa ako knižnica v niektorých projektoch, ale písanie vlastných pluginov nie je také priamočiare ako prístup Beancount. Namiesto toho sa hledger zameriava na pokrytie bežných potrieb (reporty, web, UI) v rámci svojho oficiálneho súboru nástrojov.
Komunita a vývojAktívna, ale primárne riadená jedným autorom (Martin Blais) a malou skupinou prispievateľov. Hlavné vydania sú zriedkavé (v2 bola stabilná ~6 rokov, potom v3 v roku 2024). Komunita prispieva prostredníctvom pluginov a nástrojov (Fava bol pôvodne projekt tretej strany, ktorý sa stal neoddeliteľnou súčasťou). Mailing list Beancount a GitHub sú aktívne s diskusiami a používateľská základňa sa rozrástla vďaka príťažlivosti Fava pre ne-vývojárov.Dlhá história (Ledger pochádza z roku 2003) a široké využitie medzi inžiniermi. Pôvodne projekt jednej osoby (Wiegley), časom sa na ňom podieľalo mnoho prispievateľov. Vývoj Ledger sa v posledných rokoch spomalil; je stabilný, ale menej nových funkcií (zameranie sa presunulo na údržbu). Mailing list ledger-cli je centrom pre všetky diskusie o účtovníctve v obyčajnom texte (vrátane Beancount a hledger). Existuje mnoho nástrojov a skriptov okolo Ledger, ale ekosystém nie je taký jednotný (žiadne jediné „Ledger GUI“ atď., hoci existuje viacero nezávislých snáh).Rastúca komunita, s Simonom Michaelom vedúcim vývoj hledger. hledger má ročné vydania a stabilné vylepšenia, často sledujúce zmeny funkcií Ledger, ale tiež si razí vlastnú cestu. Teší sa popularite medzi používateľmi, ktorí chcú silu Ledger s väčšou predvídateľnosťou. Komunita sa zvyčajne prekrýva s komunitou Ledger (plaintextaccounting.org pokrýva obe). Ekosystém hledger zahŕňa doplnky ako hledger-flow (pre automatizáciu pracovného toku) a profituje z toho, že je napísaný v Haskelli (priťahuje tých z tejto komunity).

Zhrnutie: Beancount sa odlišuje dôrazom na prísnosť, rozšíriteľnosť založenú na pluginoch a užívateľsky prívetivé webové rozhranie. Ledger zostáva klasickým, vysoko flexibilným nástrojom, ktorý uprednostňujú puristi príkazového riadka a tí, ktorí potrebujú maximálnu rýchlosť (engine Ledger v C++ je veľmi rýchly na obrovských súboroch). hledger poskytuje strednú cestu – väčšinu funkcionality Ledger s o niečo väčšou štruktúrou a oficiálne podporovaným (aj keď jednoduchým) webovým UI. Všetky tri zdieľajú výhody účtovníctva v obyčajnom texte (auditovateľnosť, verzovanie pomocou Gitu, obyčajné dáta), ale ekosystém Beancount (najmä s Fava) ho v posledných rokoch pravdepodobne sprístupnil priemernému používateľovi. Na druhej strane, používatelia Ledger/hledger niekedy uprednostňujú ich relatívnu jednoduchosť nastavenia (nie je potrebný Python) a dlhodobo preukázanú stabilitu. Nakoniec, výber medzi nimi závisí od osobných preferencií: tí, ktorí si cenia prísnu správnosť a bohatý ekosystém, sa často prikláňajú k Beancount, zatiaľ čo tí, ktorí chcú minimalistické nástroje zamerané na terminál, sa môžu držať Ledger alebo hledger.

Scenáre použitia pre Beancount

Beancount je dostatočne všestranný na použitie pre sledovanie osobných financií, ako aj (v niektorých prípadoch) pre účtovníctvo malých podnikov. Jeho základný prístup podvojného účtovníctva je v oboch scenároch rovnaký, ale rozsah a špecifické postupy sa môžu líšiť.

Osobné financie

Mnoho používateľov Beancountu ho používa na správu svojich osobných alebo rodinných financií. Typické nastavenie osobných financií v Beancounte môže zahŕňať účty pre bežné a sporiace účty, kreditné karty, investície, pôžičky, kategórie príjmov (plat, úroky atď.) a kategórie výdavkov (nájomné, potraviny, zábava atď.). Používatelia zaznamenávajú každodenné transakcie buď manuálne (zadávanie príjmov, účtov atď.), alebo importovaním z bankových výpisov pomocou importovacích nástrojov, o ktorých sme hovorili predtým. Výhody, ktoré Beancount prináša osobným financiám, zahŕňajú:

  • Konsolidácia a analýza: Všetky vaše transakcie môžu byť uložené v jednom textovom súbore (alebo súbore súborov), ktorý predstavuje roky finančnej histórie. Vďaka tomu je ľahké analyzovať dlhodobé trendy. S dotazovacím jazykom Beancountu alebo s Favou môžete v priebehu sekúnd odpovedať na otázky ako „Koľko som minul na cestovanie za posledných 5 rokov?“ alebo „Aký je môj priemerný mesačný účet za potraviny?“. Jeden používateľ poznamenal, že po prechode na Beancount je „analýza finančných údajov (výdavky, dary, dane atď.) triviálna“ buď prostredníctvom Favy, alebo dotazovaním údajov a použitím nástrojov ako Pandas. V podstate sa vaša účtovná kniha stáva osobnou finančnou databázou, ktorú môžete ľubovoľne dotazovať.
  • Rozpočtovanie a plánovanie: Hoci Beancount nenúti rozpočtový systém, môžete si ho implementovať. Niektorí používatelia používajú obálkové rozpočtovanie vytvorením rozpočtových účtov alebo použitím pluginu fava-envelope. Iní jednoducho používajú pravidelné správy na porovnanie výdavkov s cieľmi. Pretože ide o čistý text, integrácia Beancountu s externými rozpočtovacími nástrojmi alebo tabuľkami je jednoduchá (export údajov alebo použitie výstupov CSV z dotazov).
  • Sledovanie investícií a čistého majetku: Beancount vyniká v sledovaní investícií vďaka robustnému spracovaniu nákladových základní a trhových cien. Môžete zaznamenávať nákupy/predaje akcií, kryptomien atď. s podrobnosťami o nákladoch a potom použiť direktívy Prices na sledovanie trhovej hodnoty. Fava môže zobraziť graf čistého majetku v čase a rozpis portfólia podľa triedy aktív. To je mimoriadne užitočné pre správu osobného majetku – získate prehľady podobné tým, ktoré poskytujú komerčné nástroje ako Mint alebo Personal Capital, ale plne pod vašou kontrolou. Spracovanie viacerých mien je tiež vstavané, takže ak držíte cudzie meny alebo kryptomeny, Beancount ich dokáže sledovať a konvertovať pre účely výkazníctva.
  • Odsúhlasenie a presnosť: Osobné financie často zahŕňajú odsúhlasenie s bankovými výpismi. S Beancountom je možné pravidelne odsúhlasovať účty pomocou tvrdení o zostatku alebo funkcie dokumentov. Napríklad, každý mesiac môžete pridať záznam balance Assets:Bank:Checking <dátum> <zostatok>, aby ste potvrdili, že vaša účtovná kniha zodpovedá bankovému výpisu na konci mesiaca. Nástroj bean-check (alebo zobrazenie chýb Favy) vás upozorní, ak sa veci nezhodujú. Jeden používateľ spomína mesačné odsúhlasenie všetkých účtov, čo „pomáha zachytiť akúkoľvek nezvyčajnú aktivitu“ – dobrá prax osobnej finančnej hygieny, ktorú Beancount uľahčuje.
  • Automatizácia: Technicky zdatní jednotlivci automatizovali veľké časti svojho pracovného postupu osobných financií s Beancountom. Pomocou importérov, cron úloh a možno aj trochy Pythonu si môžete nastaviť systém tak, aby sa napríklad každý deň načítavali vaše bankové transakcie (niektorí používajú OFX alebo API) a pripájali sa k vášmu súboru Beancount, kategorizované podľa pravidiel. Postupom času sa vaša účtovná kniha stáva väčšinou automaticky aktualizovanou a vy ju len podľa potreby kontrolujete a upravujete. Člen komunity na Hacker News zdieľal, že po 3 rokoch boli ich účtovné knihy Beancountu „na 95 % automatické“. Táto úroveň automatizácie je možná vďaka otvorenosti Beancountu v čistom texte a jeho skriptovacím schopnostiam.

Používatelia osobných financií často uprednostňujú Beancount pred tabuľkami alebo aplikáciami, pretože im poskytuje úplné vlastníctvo údajov (žiadna závislosť od cloudovej služby, ktorá by sa mohla vypnúť – obava, keď bol napríklad Mint ukončený) a pretože hĺbka prehľadu je väčšia, keď máte všetky svoje údaje integrované. Krivka učenia nie je triviálna – je potrebné naučiť sa základné účtovníctvo a syntax Beancountu – ale zdroje ako oficiálna dokumentácia a komunitné tutoriály pomáhajú nováčikom začať. Po nastavení mnohí zistia, že im prináša pokoj, keď majú vždy jasný a dôveryhodný obraz o svojich financiách.

Účtovníctvo pre malé podniky

Používanie Beancountu pre malé podniky (alebo neziskové organizácie, kluby atď.) je menej bežné ako osobné použitie, ale je to určite možné a niektorí to úspešne zvládli. Systém podvojného účtovníctva Beancountu je v skutočnosti rovnaký systém, ktorý je základom podnikového účtovníctva, len bez niektorých funkcií vyššej úrovne, ktoré poskytuje špecializovaný účtovný softvér (ako sú moduly pre fakturáciu alebo integrácie miezd). Tu je návod, ako Beancount môže zapadnúť do kontextu malého podniku:

  • Hlavná kniha a finančné výkazy: Malý podnik môže súbor Beancountu považovať za svoju hlavnú knihu. Mali by ste účty majetku (aktív) pre bankové účty, pohľadávky, možno zásoby; účty záväzkov (pasív) pre kreditné karty, pôžičky, záväzky; vlastné imanie pre kapitál vlastníka; účty výnosov pre predaj alebo služby; a účty nákladov pre všetky obchodné výdavky. Vedením tejto knihy môžete kedykoľvek vytvoriť Výkaz ziskov a strát (Výsledovku) a Súvahu pomocou správ alebo dotazov Beancountu. V skutočnosti, vstavané správy Beancountu alebo Fava dokážu vygenerovať súvahu a výsledovku v priebehu sekúnd, ktoré sú dokonale v súlade s účtovnými princípmi. To môže byť dostatočné pre malú prevádzku na posúdenie ziskovosti, finančnej pozície a peňažného toku (s trochou dotazovania pre peňažný tok, keďže priame výkazy peňažného toku nie sú vstavané, ale dajú sa odvodiť).
  • Faktúry a pohľadávky (A/R), záväzky (A/P): Beancount nemá vstavaný fakturačný systém; používatelia by zvyčajne riešili fakturáciu externe (napr. vytvárali faktúry vo Worde alebo v aplikácii na fakturáciu) a potom zaznamenávali výsledky do Beancountu. Napríklad, keď vystavíte faktúru, zaznamenali by ste zápis debetujúci účet Pohľadávky a kreditujúci účet Výnosy. Keď príde platba, debetujete účet Hotovosť/Banka a kreditujete účet Pohľadávky. Týmto spôsobom môžete sledovať neuhradené pohľadávky sledovaním zostatku účtu Pohľadávky. To isté platí pre faktúry dodávateľov (Záväzky). Hoci je to manuálnejšie ako špecializovaný účtovný softvér (ktorý môže posielať pripomienky alebo sa integrovať s e-mailmi), je to dokonale realizovateľné. Niektorí používatelia zdieľali šablóny alebo pracovné postupy, ako spravujú faktúry s Beancountom a zabezpečujú, aby nezmeškali otvorené faktúry (napríklad pomocou metadát alebo vlastných dotazov na zoznam nezaplatených faktúr).
  • Zásoby alebo Náklady na predaný tovar: Pre podniky predávajúce produkty môže Beancount sledovať nákupy a predaje zásob, ale vyžaduje si to disciplinované zápisy. Môžete použiť funkcie Inventory (Zásoby) a nákladového účtovníctva: nákup zásob zvyšuje účet majetku (s nákladmi priradenými k položkám), ich predaj presúva náklady na výdavok (Náklady na predaný tovar – COGS) a zaznamenáva výnosy. Pretože Beancount trvá na párovaní šarží, vynúti správne zníženie zásob so správnymi nákladmi, čo môže v skutočnosti zabezpečiť presnosť vašich výpočtov hrubého zisku, ak sa to urobí správne. Neexistuje však žiadne automatizované sledovanie SKU ani nič podobné – všetko je na finančnej úrovni (množstvo a náklady).
  • Mzdy a komplexné transakcie: Beancount dokáže zaznamenávať mzdové transakcie (mzdové náklady, zrážky daní atď.), ale výpočet týchto údajov sa môže vykonávať externe alebo pomocou iného nástroja a potom sa jednoducho zaúčtuje do Beancountu. Pre veľmi malý podnik (napríklad jeden alebo dvaja zamestnanci) je to zvládnuteľné. Napríklad by ste zaznamenali jeden účtovný zápis za každé výplatné obdobie, ktorý rozdelí mzdy, zrazenú daň, náklady na dane zamestnávateľa, vyplatenú hotovosť atď. Robiť to manuálne je podobné tomu, ako by sa to robilo v denníkových zápisoch QuickBooks – vyžaduje si to znalosť toho, ktoré účty ovplyvniť.
  • Viacužívateľský prístup a audit: Jednou z výziev v podnikovom prostredí je, ak viacerí ľudia potrebujú prístup k účtovným knihám alebo ak ich potrebuje skontrolovať účtovník. Keďže Beancount je textový súbor, nie je viacužívateľský v reálnom čase. Umiestnenie súboru v Git repozitári však môže umožniť spoluprácu: každá osoba môže upravovať a potvrdzovať zmeny a rozdiely sa dajú zlúčiť.
  • Súlad s reguláciami: Pre daňové priznanie alebo súlad s reguláciami sa dáta Beancountu môžu použiť na generovanie potrebných správ, ale môže to vyžadovať vlastné dotazy alebo pluginy. Videli sme príklad komunitného pluginu pre vykazovanie súladu s indickou vládou a jeden pre vykazovanie FinCEN FBAR. To ukazuje, že s úsilím sa Beancount dá prispôsobiť tak, aby spĺňal špecifické požiadavky na vykazovanie. Malé podniky v jurisdikciách s jednoduchými požiadavkami (jednoduché účtovníctvo, alebo základné podvojné účtovníctvo na akruálnej báze) môžu určite viesť účtovné knihy v Beancounte a vytvárať finančné výkazy pre daňové priznania. Avšak funkcie ako odpisové plány alebo amortizácia si môžu vyžadovať, aby ste si napísali vlastné zápisy alebo použili plugin (napríklad pluginy Davea Stephensa pre odpisy pomáhajú s automatizáciou). Neexistuje žiadne GUI na „kliknutie na odpis majetku“ ako v niektorých účtovných softvéroch; odpisy by ste zakódovali ako transakcie (čo to istým spôsobom demystifikuje – všetko je zápis, ktorý môžete skontrolovať).

V praxi mnohí technicky zameraní majitelia malých podnikov používali Beancount (alebo Ledger/hledger), ak uprednostňujú kontrolu a transparentnosť pred pohodlím QuickBooks. Diskusia na Reddite poznamenala, že pre štandardné účtovníctvo malých podnikov s obmedzeným objemom transakcií Beancount funguje dobre. Obmedzujúcim faktorom je zvyčajne úroveň komfortu – či je majiteľ podniku (alebo jeho účtovník) spokojný s nástrojom založeným na texte. Jednou výhodou sú náklady: Beancount je zadarmo, zatiaľ čo účtovný softvér môže byť pre malý podnik drahý. Na druhej strane, nedostatok oficiálnej podpory a povaha „urob si sám“ znamená, že je najvhodnejší pre tých, ktorí sú zároveň majiteľmi podniku a sú technicky zdatní. Pre freelancerov alebo živnostníkov s programovacími zručnosťami môže byť Beancount atraktívnou voľbou na správu financií bez spoliehania sa na cloudové účtovné služby.

Hybridné prístupy sú tiež možné: niektoré malé podniky používajú oficiálny systém pre faktúry alebo mzdy, ale pravidelne importujú dáta do Beancountu na analýzu a archiváciu. Týmto spôsobom získajú to najlepšie z oboch svetov – súlad s predpismi a jednoduchosť pre každodenné operácie, plus silu Beancountu pre konsolidovaný prehľad.

Zhrnutie: Beancount dokáže zvládnuť účtovníctvo malého podniku, za predpokladu, že používateľ je ochotný manuálne spravovať veci, ktoré komerčný softvér automatizuje. Zabezpečuje vysokú mieru transparentnosti – hlboko rozumiete svojim účtovným knihám, pretože ich píšete – a pre usilovného používateľa dokáže vytvoriť bezchybné účtovné knihy. Osobní aj firemní používatelia profitujú z kľúčových silných stránok Beancountu: spoľahlivého účtovného jadra, kompletnej auditnej stopy a flexibility prispôsobiť sa jedinečným scenárom (prostredníctvom skriptovania a pluginov). Či už ide o sledovanie rodinného rozpočtu alebo financií startupu, Beancount ponúka nástroje na to, aby sa to robilo s presnosťou a otvorenosťou.

Komunita a vývojová aktivita

Beancount má oddanú komunitu a vývojový príbeh, ktorý odráža jeho open-source, špecifický, no vášnivý charakter. Nižšie sú uvedené kľúčové body týkajúce sa jeho komunity, správcov a súvisiacich projektov:

  • Údržba projektu: Primárnym autorom Beancountu je Martin Blais, ktorý projekt začal okolo roku 2007 a previedol ho viacerými verziami. Vývoj bol dlho z veľkej časti úsilím jedného človeka (okrem komunitných príspevkov vo forme opráv). Martinova filozofia bola vybudovať účtovný nástroj „užitočný najprv pre mňa, ako aj pre ostatných, najjednoduchším a najtrvácnejším spôsobom“. Táto osobná motivácia udržala projekt v chode ako dielo lásky. K roku 2025 je Martin Blais stále hlavným správcom (jeho meno sa objavuje v commitoch a odpovedá na otázky v mailing liste/sledovači problémov), ale ekosystém okolo Beancountu má mnoho ďalších prispievateľov v ich príslušných projektoch.

  • GitHub a repozitáre: Zdrojový kód je hostený na GitHub-e pod repozitárom beancount/beancount. Projekt má licenciu GPL-2.0 a v priebehu rokov prilákal skromný počet prispievateľov. V polovici roka 2024 bola oficiálne vydaná Beancount Verzia 3 ako nová stabilná vetva. Toto vydanie zahŕňalo oddelenie niektorých komponentov: napríklad repozitár beangulp (pre importéry) a repozitár beanquery (pre nástroj na dotazovanie) sú teraz súčasťou GitHub organizácie beancount, spravované do istej miery nezávisle. Hlavný repozitár Beancountu sa zameriava na jadro účtovného enginu a parser súborov. K roku 2025 GitHub Beancountu vykazuje aktívne diskusie o problémoch a prebiehajúci vývoj – hoci nie vo veľkom objeme, problémy a pull requesty prichádzajú postupne a občasné aktualizácie sa vykonávajú na opravu chýb alebo vylepšenie funkcií.

  • Vývoj Favy: Fava, webové rozhranie, začala ako samostatný projekt (vytvorený Dominic Aumayrom, ktorý ho autorsky chránil v roku 2016). Má vlastnú komunitu prispievateľov a je tiež na GitHub-e pod beancount/fava. Správcovia a prispievatelia Favy (napr. Jakob Schnetz, Stefan Otte a ďalší v posledných rokoch) aktívne zlepšujú rozhranie, s vydaniami každých pár mesiacov. Gitter chat Favy (odkazovaný v dokumentácii Favy) a sledovač problémov na GitHub-e sú miesta, kde používatelia a vývojári diskutujú o nových funkciách alebo chybách. Projekt víta príspevky, o čom svedčí poznámka v CHANGELOG-u, ktorá ďakuje viacerým členom komunity za ich PR. Úzke zosúladenie Favy s vývojom Beancountu (ako je rýchle pridanie podpory pre Beancount v3 a novú syntax beanquery) naznačuje dobrú spoluprácu medzi týmito dvoma projektmi.

  • Mailing listy a fóra: Beancount má oficiálny mailing list (predtým na Google Groups, s názvom „Beancount“ alebo niekedy diskutovaný na všeobecnom Ledger liste). Tento mailing list je pokladnicou vedomostí – používatelia sa pýtajú na modelovanie určitých scenárov, nahlasujú chyby a zdieľajú tipy. Martin Blais je známy tým, že na mailing liste odpovedá podrobnými vysvetleniami. Okrem toho sa výrazne prekrýva širšia komunita Plain Text Accounting. Mailing list Ledger CLI často rieši aj otázky týkajúce sa Beancountu a existuje fórum na plaintextaccounting.org a subreddit r/plaintextaccounting, kde sa témy Beancountu často objavujú. Používatelia na týchto platformách diskutujú o porovnaniach, zdieľajú osobné nastavenia a pomáhajú nováčikom. Celkový tón komunity je veľmi kooperatívny – používatelia Beancountu často pomáhajú používateľom Ledgeru a naopak, uvedomujúc si, že všetky tieto nástroje majú podobné ciele.

  • Chatové skupiny: Okrem mailing listov existujú aj chatové kanály ako Plaintext Accounting Slack/Discord (organizované komunitou) a Fava Gitter. Sú to menej formálne, viac v reálnom čase spôsoby, ako získať pomoc alebo diskutovať o funkciách. Napríklad, niekto môže skočiť na Slack a opýtať sa, či má niekto importér pre konkrétnu banku. Existuje aj Matrix/IRC kanál (historicky #ledger alebo #beancount na IRC), kde niektorí dlhoroční používatelia nečinne sedia. Hoci nie sú tak početné ako komunity pre mainstreamový softvér, tieto kanály majú znalých ľudí, ktorí často dokážu odpovedať na nejasné účtovné otázky.

  • Prispievatelia a kľúčoví členovia komunity: Niekoľko mien vyniká v komunite Beancountu:

    • „Redstreet“ (Red S): Plodný prispievateľ, ktorý napísal mnoho pluginov (ako beancount-balexpr, sellgains a ďalšie) a často poskytuje podporu. Taktiež udržiava sadu importovacích skriptov a nástroj s názvom bean-download na získavanie výpisov.
    • Vasily M (Evernight): Autor niektorých importovacích frameworkov a pluginov ako beancount-valuation, a príspevkov do Favy týkajúcich sa investícií.
    • Stefano Zacchiroli (zack): Vývojár Debianu, ktorý vytvoril beancount-mode pre Emacs a vlastný repozitár pluginov. Taktiež obhajoval účtovníctvo v prostom texte v akademickom prostredí.
    • Simon Michael: Hoci je primárne vedúcim hledgeru, prevádzkuje plaintextaccounting.org, ktoré zahŕňa Beancount. Toto krížové opelenie pomohlo priniesť Beancount do pozornosti používateľov Ledgeru/hledgeru.
    • Frank hell (Tarioch): Prispievateľ Tarioch Beancount Tools, rozsiahlej sady importérov a nástrojov na získavanie cien, najmä pre európske inštitúcie.
    • Siddhant Goel: Člen komunity, ktorý bloguje o Beancounte (napríklad jeho sprievodca migráciou na v3) a udržiava niektoré importéry. Jeho blogové príspevky pomohli mnohým novým používateľom.

    Títo a mnohí ďalší prispievajú kódom, dokumentáciou a pomocou na fórach, čím udržiavajú ekosystém živý napriek jeho relatívne malej veľkosti.

  • Štatistiky GitHubu a forky: Repozitár Beancountu na GitHub-e nazbieral niekoľko stoviek hviezd (čo naznačuje záujem) a fork-ov. Významné forky samotného Beancountu sú zriedkavé – neexistuje známy divergentný fork, ktorý by sa snažil byť „Beancount, ale s funkciou X“. Namiesto toho, keď používatelia chceli niečo iné, buď napísali plugin, alebo použili iný nástroj (ako hledger), namiesto forkovania Beancountu. Možno by sa dalo považovať hledger za akýsi fork Ledgeru (nie Beancountu) a samotný Beancount za nezávislé prepracovanie myšlienok Ledgeru, ale v rámci repozitára Beancountu neexistujú veľké rozštiepené projekty. Komunita sa vo všeobecnosti zjednotila okolo hlavného repozitára a rozšírila ho prostredníctvom rozhrania pluginov namiesto fragmentácie kódovej základne. Je to pravdepodobne preto, že Martin Blais bol otvorený externým príspevkom (jeho dokumentácia má dokonca sekciu, ktorá uznáva externé príspevky a moduly) a architektúra pluginov urobila zbytočným udržiavanie forku pre väčšinu nových funkcií.

  • Komunitné zdroje: Existuje niekoľko vysokokvalitných zdrojov na učenie sa a používanie Beancountu, ktoré vytvorila komunita:

    • Dokumentácia Beancountu na GitHub Pages (a zdrojové Google Docs, ktoré Martin udržiava) – veľmi komplexná, vrátane teórie účtovníctva a toho, ako ju Beancount implementuje.

    • Množstvo blogových príspevkov a osobných poznámok – napr. LWN.net mal článok „Counting beans… with Beancount“ a mnohé osobné blogy (uvedené v sekcii „Blog Posts“ v Awesome Beancount) zdieľajú skúsenosti a tipy. Pomáhajú budovať vedomosti a priťahovať nových používateľov.

    • Prednášky a prezentácie: Beancount bol prezentovaný na stretnutiach a konferenciách (napríklad prednáška PyMunich 2018 o správe financií s Python/Beancount). Takéto prednášky predstavujú nástroj širšiemu publiku a často vzbudzujú záujem na fórach ako Hacker News.

  • Významné súvisiace projekty: Okrem Favy majú niektoré ďalšie projekty súvisiace s Beancountom vlastné komunity:

    • Web Plain Text Accounting – udržiavaný Simonom Michaelom, zhromažďuje informácie o všetkých takýchto nástrojoch a má fórum, kde ľudia zdieľajú použitie pre rôzne nástroje vrátane Beancountu.
    • Integrácia finančných nástrojov: Niektorí používatelia integrujú Beancount s nástrojmi business intelligence alebo databázami. Napríklad, jedno vlákno na Google Groups podrobne opisuje použitie PostgreSQL s dátami Beancountu prostredníctvom vlastných funkcií. Hoci to nie je mainstream, ukazuje to experimentálneho ducha komunity pri posúvaní možností Beancountu (napr. na spr

Nedávny vývoj a pripravované funkcie

K roku 2025 zaznamenal ekosystém Beancount v posledných rokoch významný vývoj a prebiehajú diskusie o budúcich vylepšeniach. Tu sú niektoré pozoruhodné nedávne zmeny a náhľad toho, čo môže prísť:

  • Vydanie Beancount 3.0 (2024): Po dlhom období, keď bol štandardom Beancount 2.x, bola verzia 3 oficiálne vydaná v polovici roka 2024. Bol to významný míľnik, pretože v3 predstavuje zjednodušenie a modernizáciu kódovej základne. Martin Blais si predstavoval v3 ako príležitosť „preusporiadať a ďalej zjednodušiť“ systém. Hoci sa pôvodne predpokladalo, že pôjde o rozsiahlu prepísanie, v praxi aktualizácia pre používateľov nebola príliš rušivá. Hlavné zmeny boli pod kapotou: nový parser, niektoré vylepšenia výkonu a extrakcia voliteľných komponentov z jadra. Vydanie bolo zavádzané postupne (v3 bola v beta verzii od roku 2022, ale do júla 2024 sa stala odporúčanou stabilnou verziou). Používatelia ako Siddhant Goel uviedli, že migrácia z 2.x na 3.x bola „väčšinou bezproblémová“ len s niekoľkými zmenami v pracovnom postupe.

  • Modularizácia – nástroje presunuté do samostatných balíkov: Jednou z veľkých zmien s Beancount 3 je, že mnohé nástroje, ktoré predtým sídlili v monolitickom repozitári, boli vyčlenené. Napríklad, bean-query je teraz poskytovaný balíkom beanquery a beancount.ingest bol nahradený balíkom beangulp. Príkazy ako bean-extract a bean-identify (pre importy) boli odstránené z jadra Beancount. Namiesto toho je filozofiou používať samostatné skripty pre importovanie. To znamená, že ak prejdete na v3, nainštalujete si beangulp a spustíte importné skripty (každý importér je v podstate malý program) namiesto toho, aby ste mali centrálny konfiguračný súbor bean-extract. Podobne, dotazy sa vykonávajú prostredníctvom beanquery, ktorý je možné nainštalovať a aktualizovať nezávisle od jadra Beancount. Tento modulárny prístup bol navrhnutý tak, aby uľahčil údržbu a podporil príspevky komunity. Taktiež zredukoval jadro Beancount, takže jadro sa zameriava výlučne na parsovanie a účtovnú logiku, zatiaľ čo pomocné funkcie sa môžu vyvíjať samostatne. Z pohľadu používateľa

Vylepšenie vašej skúsenosti s Beancount pomocou vlastných odkazov a dotazov

· Čítanie na 3 minúty
Mike Thrift
Mike Thrift
Marketing Manager

Beancount, systém podvojného účtovníctva obľúbený medzi vývojármi aj finančnými nadšencami, je silný vo svojej jednoduchosti. Ale pre tých, ktorí chcú väčšiu kontrolu a rýchlejšiu navigáciu v rámci Fava, webového rozhrania Beancount, môžu vlastné odkazy v bočnom paneli a SQL dotazy posunúť váš pracovný postup na vyššiu úroveň.

V tomto sprievodcovi vám ukážeme, ako:

  • Pridať odkazy pre rýchly prístup do bočného panela Fava
  • Používať SQL dotazy pre pokročilé filtrovanie a analýzu
  • Prispôsobiť si pracovný postup pre mesačné prehľady alebo detekciu anomálií

Prečo prispôsobiť Fava?

Fava je už teraz krásne rozhranie na prezeranie vašej účtovnej knihy Beancount, ale ako sa váš denník rozrastá, rastie aj potreba lepších skratiek a inteligentnejších dotazov.

Problémy, ktoré to rieši:

  • Opakované prechádzanie časovými rozsahmi
  • Filtrovanie transakcií naprieč vnorenými účtami
  • Rýchlejšie odhaľovanie záporných zostatkov alebo anomálií

✨ Vlastné odkazy v bočnom paneli

Začnime zlepšovaním vášho každodenného pracovného postupu pomocou jednoduchých skratiek v bočnom paneli. Tieto odkazy sa zobrazujú v ľavom bočnom paneli Fava a môžu vás priamo preniesť na filtrované zobrazenia, ako sú transakcie tohto mesiaca alebo príjmy z minulého mesiaca.

Pridajte tieto riadky do vášho súboru Beancount:

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:

  • Aktuálny mesiac: Otvorí zobrazenie transakcií filtrované na aktuálny mesiac.
  • Minulý mesiac: Okamžite prejde na predchádzajúci mesiac – skvelé pre mesačné uzávierky.
  • Vymazať všetko: Resetuje filtre a znova zobrazí všetky záznamy.

Tieto skratky eliminujú manuálne zadávanie času a robia vašu skúsenosť s Fava plynulejšou a personalizovanejšou.

🔍 Vlastné SQL dotazy

Pre hlbší prehľad je SQL rozhranie Fava neuveriteľne výkonné. Tu je dotaz, ktorý nájde všetky záporné zostatky na účtoch, ktoré zodpovedajú určitému vzoru – ideálne na označenie neobvyklých alebo problematických transakcií.

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

Rozbor:

  • account ~ '.*:BCM:.*': Filtruje účty obsahujúce :BCM: v ich názve.
  • number(units(position)) < 0: Označuje záporné zostatky (napr. prečerpané rozpočty).
  • Filtre dátumu zúžia výsledok na konkrétne 1-mesačné obdobie.

Prípady použitia:

  • Odhalenie chýb, ako sú duplicitné výdavky alebo nesprávne zaúčtovania
  • Audit konkrétneho dodávateľa alebo kategórie
  • Rýchle získanie použiteľných poznatkov pre rozpočtovanie

🛠 Profesionálny tip: Kombinujte odkazy + dotazy

Hoci Fava neumožňuje priame odkazy na vlastné dotazy, môžete si vytvoriť zvyk mesačného prehľadu tak, že:

  • Použijete odkaz „Aktuálny mesiac“ na začatie vášho prehľadu
  • Otvoríte kartu uložených dotazov v inom paneli
  • Prehliadate oboje súčasne – najprv filtrujte, potom sa ponorte hlbšie

Táto kombinácia vám pomôže zachytiť anomálie skôr, než sa rozvinú a zabezpečiť, aby vaša účtovná kniha zostala čistá.

Záverečné myšlienky

Beancount je zámerne minimalistický, ale malé vylepšenia, ako sú tieto, prinášajú obrovské zisky v efektivite. Či už kontrolujete svoj rozpočet, odstraňujete chyby v podivných zostatkoch, alebo jednoducho šetríte kliknutia, vlastné odkazy a SQL dotazy vám poskytnú viac sily a menej trenia.

Bonus: Ak používate vlastné prehľady Fava, môžete si dokonca vytvoriť kompletné panely prispôsobené vašim rituálom osobného financovania.

Pripravení prevziať kontrolu?

Začnite s malým krokom: pridajte odkaz „Aktuálny mesiac“. Potom si vytvorte vlastné dotazy. Vaše budúce ja vám poďakuje.

Chcete viac takýchto tipov? Prihláste sa na odber nášho newslettera alebo preskúmajte ďalšie recepty Beancount na Beancount.io.

Aktualizácia Fava na verziu 1.19: Kľúčové zmeny a vylepšenia

· Čítanie na jednu minútu
Mike Thrift
Mike Thrift
Marketing Manager

Aktualizovali sme open-source softvér Fava s licenciou MIT na verziu 1.19. Tu sú zmeny od našej poslednej aktualizácie:

  • v1.19 (2021-05-18)
    • migrácia z možností conversion a interval na možnosť default-page
    • pridanie možnosti invert-income-liabilities-equity
    • aktualizácia na CodeMirror 6
    • pridáva bulharský preklad
    • ďalšie drobné vylepšenia a opravy chýb
  • v1.18 (2021-01-16)
    • niekoľko drobných vylepšení a rôznych opráv chýb.

Cítite sa nadšene? Vyskúšajte to teraz na https://beancount.io/ledger/

2021-07-16-upgrade-fava-to-1-19

Máte otázky? Sme tu pre vás na https://t.me/beancount :)

Pochopenie amortizácie v Beancount

· Čítanie na jednu minútu
Mike Thrift
Mike Thrift
Marketing Manager

Amortizácia rozkladá platby na mnoho splátok v čase. V beancount.io môžete na to použiť plugin fava.plugins.amortize_over.

2021-01-09-amortize

Bez amortizácie, ak chcete poistiť svoje auto na 6 mesiacov s nákladmi 600 USD, musíte to zaznamenať ako jednorazový náklad k určitému dátumu.

2017-06-01 open Assets:Bank:Checking
2017-06-01 open Assets:Prepaid-Expenses
2017-06-01 open Expenses:Insurance:Auto


2017-06-01 * "Zaplatiť poistenie auta"
Assets:Bank:Checking -600.00 USD
Assets:Prepaid-Expenses

Avšak s amortizáciou môžete alokovať náklad na šesť mesiacov umiestnením plugin "fava.plugins.amortize_over" na začiatok súboru a použitím amortize_months: 6 pre transakciu.

plugin "fava.plugins.amortize_over"

2020-06-01 open Assets:Bank:Checking
2020-06-01 open Assets:Prepaid-Expenses
2020-06-01 open Expenses:Insurance:Auto

2020-06-01 * "Amortizovať poistenie auta na šesť mesiacov"
amortize_months: 6
Assets:Prepaid-Expenses -600.00 USD
Expenses:Insurance:Auto

A potom v denníku uvidíte, že transakcia je rozdelená na 6 zaúčtovaní.

2020-11-01 * Amortizovať poistenie auta na šesť mesiacov (6/6) am
2020-10-01 * Amortizovať poistenie auta na šesť mesiacov (5/6) am
2020-09-01 * Amortizovať poistenie auta na šesť mesiacov (4/6) am
2020-08-01 * Amortizovať poistenie auta na šesť mesiacov (3/6) am
2020-07-01 * Amortizovať poistenie auta na šesť mesiacov (2/6) am
2020-06-01 * Amortizovať poistenie auta na šesť mesiacov (1/6) am

Snímka obrazovky transakcie amortizácie

Vylepšenia Beancount.io: Zvýšenie výkonu a bezpečnosti

· Čítanie na jednu minútu
Mike Thrift
Mike Thrift
Marketing Manager

Udržiavanie zabezpečenej a výkonnej online služby nie je jednorazová záležitosť. Vyžaduje si to úsilie nielen na vývoj nových funkcií, ale aj na obnovu existujúcich funkcionalít.

Zastaraný softvér vystavuje našich zákazníkov riziku bezpečnostných zraniteľností. Ako toto riziko znižujeme? Na jednej strane proaktívne spolupracujeme s bezpečnostnými výskumníkmi na hľadaní a riešení neočakávaných problémov. Na druhej strane pravidelne integrujeme najnovšiu verziu softvéru od dodávateľa.

Dnes sme radi, že sa s vami môžeme podeliť o niektoré vylepšenia, ktoré sme urobili na zlepšenie Beancount.io.

2021-01-07-upgrade-fava-to-1-17

  1. Aktualizovali sme server a zrýchlili službu až o 30 %. Výrazne sa zlepšila aj dostupnosť služby.
  2. Aktualizovali sme open-source softvér Fava s licenciou MIT na verziu 1.17. Opravil rôzne chyby a pridal mnoho nových funkcií.

Cítite sa nadšene? Vyskúšajte to teraz na https://beancount.io/ledger/

Máte otázky? Budeme tu pre vás na https://t.me/beancount :)