Naar hoofdinhoud springen

Declare cashflow-rollen in uw grootboek: één regel metagegevens vervangt het gokwerk

Gepubliceerd 8 min leestijdMike ThriftMike Thrift
Declare cashflow-rollen in uw grootboek: één regel metagegevens vervangt het gokwerk

Elk kasstroomoverzicht rust op een stille beslissing die één keer per rekening wordt genomen: is deze rekening onderdeel van het geld dat u toelicht, of is het een operationele, investerings- of financieringsactiviteit? Neem die beslissing goed en het overzicht vertelt u waar uw geld daadwerkelijk naartoe ging. Neem u hem verkeerd en het overzicht is zelfverzekerd misleidend.

Tot nu toe nam het kasstroomrapport van Beancount.io die beslissing voor u met heuristieken — het hoofdtype van de rekening, plus een op de naam gebaseerde schatting van welke activa als geld tellen. Voor de meeste grootboeken was de schatting meestal goed, en de rest van de tijd stil fout. Een beleggingsrekening met een verkeerde naam belandde in de verkeerde sectie. Een geldmarktfonds dat in elke praktische zin geld is, stond bij Investeringsactiviteiten omdat de naam dat niet zei.

Vanaf vandaag kunt u de classificatie expliciet maken. Eén regel standaard beancount-metagegevens op de open-directive van de rekening:

2000-01-01 open Assets:US:Brokerage
  cash-flow-role: "investing"
 
2000-01-01 open Assets:US:Marcus:Savings
  cash-flow-role: "cash"

Eén sleutel, vier waarden — cash, operating, investing, financing — en dat is de volledige configuratie. Er is geen instellingenpagina, geen JSON-bestand, geen optiedialoog per rapport. De volgende keer dat het kasstroomrapport wordt geladen, verschijnen de stromen van de beleggingsrekening onder Investeringsactiviteiten, voegt de spaarrekening zich bij de geldvoorraad waarvan het overzicht de verandering toelicht, en blijft elke andere rekening precies zo werken als voorheen.

Het kasstroomrapport van Beancount.io voor het voorbeeldgrootboek: een maandelijkse netto kasstroomgrafiek boven gedetailleerde tabellen met operationele en investeringsactiviteiten.

Wat elke rol betekent

Een kasstroomoverzicht sorteert elke rekening in een van twee taken, en cash-flow-role beantwoordt beide met één woord:

  • "cash" — de rekening hoort bij de geldmiddelen-en-kasequivalentenvoorraad. Kasrekeningen verschijnen nooit als regels; het overzicht licht de verandering in hun gecombineerde saldo toe, en overschrijvingen tussen twee kasrekeningen vallen tegen elkaar weg, zoals geld van betaal- naar spaarrekening verplaatsen zou moeten.
  • "operating" / "investing" / "financing" — de rekening is geen geld, en de verandering over de periode verschijnt als een regel onder die activiteitensectie.

Standaard behandelt het rapport activarekeningen waarvan de namen Cash, Checking, Savings of Bank bevatten als kasequivalenten. Een rol declareren overschrijft dat in beide richtingen. cash-flow-role: "cash" trekt een rekening binnen die de naamregel mist — een geldmarktfonds, een stablecoin-portemonnee. En cash-flow-role: "investing" op Assets:US:Bank:CD doet twee dingen met één regel: het sluit het deposito uit van geld en plaatst het onder investeringen, zelfs hoewel de naam overeen zou komen met de geldregel.

We hebben bewust één sleutel gebruikt in plaats van twee. "Is deze rekening geld?" en "bij welke activiteitensectie hoort hij?" waren nooit onafhankelijke vragen — een rekening is ofwel onderdeel van de geldvoorraad ofwel hoort bij precies één activiteitensectie. Twee sleutels zouden onzinnige toestanden hebben toegestaan, zoals een kasrekening met een activiteitenrol. Eén sleutel maakt de illegale toestanden niet-representeerbaar, en de hele specificatie past in een tweet.

De By Activity-weergave van het kasstroomrapport, met operationele, investerings- en financieringskasstromen per maand gestapeld.

De classificatie die u declareert, is de classificatie die elke weergave gebruikt. De By Activity-grafiek stapelt de operationele, investerings- en financieringsstromen van elke maand; verplaats de rol van een rekening, en de stromen verplaatsen zich naar de juiste laag van de grafiek, de juiste sectie van het overzicht en de juiste regel van de export, allemaal tegelijk.

Gedeclareerd wint van afgeleid — en het rapport toont zijn werk

Classificatie wordt nu in een strikte volgorde opgelost: eerst uw metagegevens, daarna de ingebouwde heuristiek. En het rapport is eerlijk over wat het deed. Het overzicht eindigt met een paneel "Geldmiddelen en kasequivalenten in dit rapport" dat precies vermeldt welke rekeningen het als geld behandelde bij het opstellen van de cijfers, en sluit daarop aan: geld aan het begin van de periode, geld aan het einde van de periode, en de nettoverandering die de activiteitensecties toelichten.

Het einde van het kasstroomoverzicht: de reconciliatie van de nettoverandering in geldmiddelen en equivalenten, en het paneel met de rekeningen die als geld werden behandeld bij het opstellen van het rapport.

Het rapport onderscheidt ook classificaties die u declareerde van classificaties die het afleidde, en dat onderscheid loopt door naar CSV- en Markdown-exporten: een overzicht dat volledig uit gedeclareerde rollen is opgebouwd, draagt niet langer de openbaarmakingsregel "classificatie is afgeleid", omdat de classificatie op dat moment geen afleiding is — het is onderdeel van uw boeken.

Typefouten worden afgehandeld zoals een plain-text-tool dat zou moeten doen. cash-flow-role: "invsting" wordt niet stil geaccepteerd en niet stil genegeerd: de rekening valt terug op de standaardheuristiek, en het statuspaneel markeert het — "onbekende cash-flow-role-waarde, standaard gebruikt" — zodat de fout zichtbaar is waar u kijkt, niet begraven in een logboek.

Als u niets verandert, verandert er niets

Niet-geannoteerde rekeningen gebruiken dezelfde gepubliceerde standaardwaarden als voorheen: Inkomsten en Uitgaven worden toegewezen aan operationeel, niet-kas Activa aan investeringen, Schulden en Eigen vermogen aan financiering, en op naam gematchte kasequivalenten vormen de geldvoorraad. Een bestaand grootboek wordt identiek weergegeven vóór en na deze release. De meeste gebruikers zullen een handvol rekeningen annoteren — de rekeningen waar de standaardwaarde fout is — en nooit meer aan de rest denken.

Ook overdraagbaarheid blijft onaangetast. Metagegevens op open-directives zijn kern-beancount-syntax, geparseerd door elke v2/v3-tool en genegeerd door alles dat niet naar deze specifieke sleutel zoekt. bean-check slaagt, Fava haalt zijn schouders op, en uw grootboek blijft volledig bruikbaar buiten Beancount.io.

Elke weergave van uw geld is het met elke andere eens

Eén gedeelde resolver produceert de uiteindelijke rol voor elke rekening, en elke consument leest daaruit:

  • Het kasstroomrapport bouwt zijn activiteitensecties en zijn eindresultaat — nettoverandering in geldmiddelen en equivalenten — uit de opgeloste rollen.
  • CSV-, Markdown- en print-exporten dragen dezelfde cijfers, met de openbaarmaking van afgeleide classificatie alleen waar daadwerkelijk een heuristiek werd gebruikt.
  • Het overzichts-Sankeydiagram leest dezelfde declaraties, zodat een rekening die u als geld markeert niet langer als stroomknooppunt verschijnt, en uw gedeclareerde activiteitenrollen worden gehonoreerd voor niet-Inkomstenrekeningen.
  • Het rekeningstatuspaneel vermeldt een gedeclareerde rekening niet langer als "niet-geclassificeerd actief".

Het overzichts-Sankeydiagram, dat geldstroom tekent van inkomen via geld naar uitgavecategorieën, investeringen en spaargeld — gebouwd op dezelfde rekeningclassificaties als het kasstroomrapport.

Er is geen manier waarop het overzicht en het diagram het oneens kunnen zijn over wat uw geld is, omdat er maar één antwoord is waarover men het oneens kan zijn.

Waarom het grootboek, en geen instellingenpagina

Dit is het deel van de release waar we het sterkst over voelen. We hebben een instellingen-UI overwogen en afgewezen, om drie redenen:

  1. Het grootboek is de bron van waarheid. Een classificatie die elders leeft, kan het oneens zijn met de boeken die het beschrijft. Een classificatie die op de open-directive leeft, reist mee met de rekening — door hernoemingen, door repository-verplaatsingen, door elke client die het bestand leest.
  2. Plain text is diffbaar, grepbaar en beoordeelbaar. Als u uw grootboek in git bewaart — en als u Beancount.io gebruikt, doet u dat — is de classificatieregel nu iets dat u kunt grep, diff en blame, en iets dat een beoordelaar in een pull-request kan zien. Een instellingenpagina is geen van die dingen.
  3. Het werkt offline en overal. Elke editor kan een rol declareren. Elke toekomstige client die het grootboek leest, krijgt de classificatie gratis, met nul per-client-instellingen om te synchroniseren.

Om dezelfde reden zijn classificaties bewust niet datum-effectief. De metagegevens beschrijven de aard van de rekening, die zelden verandert; wanneer dat wel gebeurt, bewerkt u de open-directive, en uw git-geschiedenis legt vast wat er veranderde en wanneer. Die geschiedenis is het audittrail.

Probeer het op uw grootboek

De functie wordt nu uitgerold naar alle grootboeken. Een rol declareren vereist slechts een teksteditor:

  1. Open het bestand waar de open-directive van de rekening staat.
  2. Voeg cash-flow-role: "cash" (of "operating", "investing", "financing") toe als een ingesprongen metagegevensregel eronder.
  3. Laad het kasstroomrapport opnieuw. Uw declaratie wint onmiddellijk van de heuristiek.

Begin met de rekeningen waar de standaardschatting fout is — het deposito dat niet echt geld is, het geldmarktfonds dat dat wel is, de beleggingsrekening die u netjes onder Investeringsactiviteiten wilt hebben. Laat de rest met rust. De volledige specificatie — geaccepteerde waarden, voorrang, standaardclassificaties, en hoe ongeldige waarden worden afgehandeld — staat in de Cash-Flow Rollen-referentie.

Het kasstroomrapport is onderdeel van elk Beancount.io-grootboek, naast de winst-en-verliesrekening en de balans. Als u wilt bijpraten over wat er deze zomer nog meer is uitgebracht — slimmere importen, een actiebekwame AI-assistent en een herbouwde mobiele app — dan behandelen de 3.6-releaseopmerkingen de rest.

Uw boeken wisten al welke rekeningen investeringen zijn en welke dagelijkse uitgaven. Nu weet het kasstroomoverzicht het ook.

Dit artikel delen