Salta al contingut principal

2 publicacions etiquetades amb "partida doble"

Veure totes les etiquetes

L'Ecosistema Beancount: Una Anàlisi Exhaustiva

· 45 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Funcionalitat Central i Filosofia de Beancount

Beancount és un sistema de comptabilitat de partida doble de codi obert que utilitza fitxers de text pla per registrar transaccions. En el seu nucli, Beancount tracta el teu llibre major com un conjunt de dades definit per una gramàtica senzilla i estricta. Cada esdeveniment financer (transaccions, obertura de comptes, preus de mercaderies, etc.) és una directiva en un fitxer de text, que Beancount analitza i converteix en una base de dades en memòria d'assentaments. Aquest disseny aplica el principi de partida doble: cada transacció ha d'equilibrar dèbits i crèdits entre comptes. El resultat és un llibre major altament transparent i auditable que pots controlar per versions, inspeccionar i consultar amb facilitat.

2025-04-15-beancount-ecosystem

Filosofia – correcció i minimalisme: El disseny de Beancount prioritza la integritat de les dades i la simplicitat. El seu creador, Martin Blais, descriu Beancount com a "pessimista" en assumir que l'usuari comet errors i, per tant, imposa comprovacions i restriccions addicionals. Per exemple, Beancount no et permetrà eliminar actius que mai no s'han afegit (evitant saldos negatius d'existències o de caixa) i pot assegurar que cada compte s'obre abans d'utilitzar-lo. Manca el concepte de Ledger de registres "virtuals" o equilibrats automàticament – una elecció intencional per forçar assentaments totalment equilibrats. Beancount, de fet, "aplica una correcció estricta" amb més comprovacions creuades de les que proporciona la partida doble bàsica. Aquest enfocament cautelós atrau els usuaris que "no confien massa en si mateixos" i volen que el programari detecti els seus errors.

Opcions mínimes, màxima consistència: En contrast amb la multitud d'opcions de línia de comandes i d'ajust de Ledger, Beancount opta pel minimalisme. Hi ha molt poques opcions globals, i cap que canviï la semàntica de les transaccions fora del fitxer del llibre major. Tota la configuració que afecta la comptabilitat (com els mètodes de base de cost de mercaderies o els supòsits de registre) es fa dins del fitxer mitjançant directives o connectors, assegurant que carregar el mateix fitxer sempre produeix els mateixos resultats independentment de com es generin els informes. Aquest disseny evita la complexitat dels nombrosos ajustos de Ledger i les interaccions subtils entre ells. La filosofia de Beancount és que una eina de comptabilitat hauria de ser un pipeline estable i determinista des del fitxer d'entrada fins als informes. Ho aconsegueix tractant el llibre major com un flux ordenat de directives que es poden processar programàticament en seqüència. Fins i tot coses que Ledger tracta com a sintaxi especial (com els saldos d'obertura o les declaracions de preus) són directives de primera classe en el model de dades de Beancount, la qual cosa fa que el sistema sigui altament extensible.

Extensibilitat mitjançant connectors i llenguatge de consulta: Beancount està implementat en Python i proporciona ganxos per injectar lògica personalitzada al pipeline de processament. Els usuaris poden escriure connectors en Python que operen sobre el flux de transaccions (per exemple, per aplicar una regla personalitzada o generar assentaments automàtics). Aquests connectors s'executen a mesura que es processa el fitxer, estenent eficaçment la funcionalitat central de Beancount sense necessitat de modificar el codi font. Beancount també inclou un potent llenguatge de consulta (inspirat en SQL) per analitzar i desglossar el llibre major. L'eina bean-query tracta el llibre major analitzat com una base de dades i et permet executar consultes analítiques – per exemple, sumar despeses per categoria o extreure totes les transaccions per a un beneficiari determinat. A Beancount 3.x, aquesta capacitat de consulta es va traslladar a un paquet beanquery autònom, però des de la perspectiva de l'usuari encara proporciona informes flexibles mitjançant consultes tipus SQL.

Text pla i control de versions: Com a eina de comptabilitat de text pla, Beancount posa èmfasi en el control de l'usuari i la longevitat de les dades. El llibre major és simplement un fitxer de text .beancount que pots editar en qualsevol editor de text. Això significa que tot el teu historial financer s'emmagatzema en un format llegible per humans, i pots posar-lo a Git o un altre VCS per fer un seguiment dels canvis al llarg del temps. Els usuaris sovint mantenen el seu fitxer Beancount sota control de versions per mantenir un registre d'auditoria de cada edició (amb missatges de commit que descriuen els canvis). Aquest enfocament s'alinea amb la filosofia de Beancount que les dades comptables, especialment les finances personals o de petites empreses, han de ser transparents i "a prova de futur" – no bloquejades en una base de dades propietària. En paraules del mateix Martin Blais, Beancount és una "obra d'amor" construïda per ser senzill, durador i gratuït per a la comunitat. Va ser desenvolupat per primera vegada al voltant de 2007 i ha evolucionat a través de reescriptures importants (de la v1 a la v2, i ara la v3 el 2024) per refinar el seu disseny tot preservant la seva filosofia central de minimalisme i correcció.

Eines, Plugins i Extensions a l'Ecosistema Beancount

L'ecosistema Beancount ha desenvolupat un ric conjunt d'eines, plugins i extensions que milloren la funcionalitat bàsica del llibre major. Aquests inclouen la importació de dades, l'edició de llibres majors, la visualització d'informes i l'addició de funcions comptables especialitzades. A continuació es presenta una visió general dels components clau i complements en el món Beancount:

Utilitats d'Importació de Dades (Importadors)

Una de les necessitats més importants per a l'ús pràctic és la importació de transaccions de bancs, targetes de crèdit i altres institucions financeres. Beancount proporciona un marc d'importació i scripts d'importació contribuïts per la comunitat per a aquest propòsit. A Beancount 2.x, el mòdul integrat beancount.ingest (amb ordres com bean-extract i bean-identify) s'utilitzava per definir connectors d'importació en Python i aplicar-los als extractes descarregats. A Beancount 3.x, això ha estat substituït per un projecte extern anomenat Beangulp. Beangulp és un marc d'importadors dedicat que va evolucionar de beancount.ingest i ara és la manera recomanada per automatitzar la importació de transaccions per a Beancount 3.0. Permet escriure scripts de Python o eines de línia d'ordres que llegeixen fitxers externs (com ara extractes CSV o PDF) i generen entrades de Beancount. Aquest nou enfocament desacobla la lògica d'importació del nucli de Beancount – per exemple, l'antiga ordre bean-extract s'ha eliminat a la v3, i en el seu lloc, els vostres propis scripts d'importació produeixen transaccions a través de la interfície CLI de Beangulp.

Existeixen desenes d'importadors predefinits per a diferents bancs i formats, contribuïts per la comunitat. Hi ha scripts d'importació per a institucions de tot el món – des d'Alipay i WeChat Pay a la Xina, fins a diversos bancs europeus (Commerzbank, ING, ABN AMRO, etc.), fins a bancs dels EUA com Chase i Amex. Molts d'aquests es recopilen en repositoris públics (sovint a GitHub) o en paquets com beancount-importers. Per exemple, el projecte Tarioch Beancount Tools (tariochbctools) proporciona importadors per a bancs suïssos i del Regne Unit i fins i tot gestiona importacions de transaccions de criptomonedes. Un altre exemple és Lazy Beancount, que empaqueta un conjunt d'importadors comuns (per a Wise, Monzo, Revolut, IBKR, etc.) i proporciona una configuració basada en Docker per a una automatització senzilla. Independentment del banc o servei financer que utilitzeu, és probable que algú hagi escrit un importador de Beancount per a ell – o podeu escriure el vostre propi utilitzant el marc de Beangulp. La flexibilitat de Python significa que els importadors poden gestionar l'anàlisi de fitxers CSV/Excel, descàrregues OFX/QIF, o fins i tot el scraping d'APIs, i després emetre transaccions en format Beancount estandarditzat.

Edició i integració amb editors

Com que els llibres de Beancount són només text, els usuaris sovint aprofiten els seus editors de text o IDEs preferits per mantenir-los. L'ecosistema ofereix connectors de suport per a editors per fer aquesta experiència més fluida. Hi ha extensions per a molts editors populars que afegeixen ressaltat de sintaxi, autocompletat de noms de comptes i comprovació d'errors en temps real:

  • Emacs Beancount-Mode: Un mode principal d'Emacs (beancount-mode) està disponible per editar fitxers .beancount, oferint funcionalitats com el ressaltat de sintaxi i la integració amb el verificador de Beancount. Fins i tot pot executar bean-check en segon pla, de manera que els errors en el llibre (com una transacció desequilibrada) es senyalitzen a mesura que edites.
  • Extensió de VS Code: Una extensió de Beancount al Marketplace de VSCode proporciona comoditats similars per als usuaris de Visual Studio Code. Admet ressaltat de sintaxi, alineació d'imports, autocompletat per a comptes/beneficiaris i fins i tot comprovacions de saldo al moment quan deses el fitxer. També es pot integrar amb Fava, permetent-te iniciar la interfície web de Fava des de dins de VSCode.
  • També existeixen connectors o modes per a Vim, Atom i altres editors. Per exemple, hi ha una gramàtica Tree-sitter per a Beancount, que impulsa el ressaltat de sintaxi en editors moderns i fins i tot va ser adoptada en el component d'editor basat en web de Fava. En resum, sigui quin sigui el teu entorn d'edició, la comunitat probablement ha proporcionat un connector per fer que l'edició de fitxers Beancount sigui còmoda i sense errors.

Per a l'entrada ràpida de transaccions fora dels editors tradicionals, també hi ha eines com Bean-add i aplicacions mòbils. Bean-add és una eina de línia d'ordres que permet afegir una nova transacció mitjançant una sol·licitud o una línia única, gestionant suggeriments de data i compte. Al mòbil, un projecte anomenat Beancount Mobile proporciona una interfície senzilla per introduir transaccions en moviment (per exemple, registrant una compra en efectiu des del teu telèfon). A més, existeix un Bot de Telegram de Beancount per capturar transaccions mitjançant missatgeria: pots enviar un missatge amb els detalls de la transacció, i el bot el formata al teu fitxer de llibre.

Interfícies Web i Eines de Visualització

(Fava) La interfície web de Fava proporciona un panell interactiu per a Beancount, amb informes com un compte de pèrdues i guanys amb visualitzacions (mostrat aquí com un treemap de despeses per categoria) juntament amb taules de comptes i saldos.

La interfície principal per a Beancount és Fava, una interfície web moderna. Fava s'executa com una aplicació web local que llegeix el vostre fitxer de Beancount i produeix una experiència interactiva rica al vostre navegador. Ofereix un conjunt complet d'informes: balanç de situació, compte de pèrdues i guanys, patrimoni net al llarg del temps, participacions de cartera, gràfics de rendiment, pressupostos i més – tot de sèrie. Els usuaris sovint citen Fava com una raó important per triar Beancount per sobre d'altres eines de comptabilitat de text pla. Amb una sola ordre (fava ledger.beancount), podeu navegar per les vostres finances amb gràfics i taules en lloc de text. Fava admet característiques com: aprofundir en els comptes, filtrar transaccions per beneficiari o etiqueta, un editor de consultes (perquè pugueu executar consultes de Beancount i veure els resultats al navegador), i fins i tot un editor web integrat per al vostre llibre major. És altament usable, fent que la comptabilitat de text pla sigui accessible per a aquells que prefereixen interfícies visuals.

Sota el capó, Fava està escrit en Python (Flask al backend) i JavaScript (Svelte al frontend). Té el seu propi cicle de llançament i es manté activament. Cal destacar que Fava ha seguit el ritme del desenvolupament de Beancount – per exemple, Fava 1.30 va afegir suport per a Beancount v3, canviant per utilitzar els nous paquets beanquery i beangulp internament. (Encara admet Beancount 2 per a llibres majors antics.) L'enfocament de Fava en la usabilitat inclou detalls agradables com l'autocompletat a l'editor web, i una interfície d'usuari elegant amb mode fosc i gràfics responsius. També hi ha un spin-off anomenat Fava-GTK, que empaqueta Fava en una aplicació d'escriptori per a usuaris de GNOME/Linux que prefereixen una sensació d'aplicació nativa.

Més enllà de Fava, existeixen altres opcions de visualització i anàlisi. Com que les dades de Beancount es poden exportar o consultar com a taules, els usuaris sovint aprofiten eines com els quaderns Jupyter o Pandas per a anàlisis personalitzades. Per exemple, un usuari descriu com extreure dades de Beancount a través de la interfície de consulta a un DataFrame de Pandas per preparar un informe personalitzat. També hi ha scripts aportats per la comunitat per a informes específics – per exemple, una eina d'anàlisi d'assignació de cartera o un gràfic de control de procés per a la despesa vs. el patrimoni net. No obstant això, per a la majoria de la gent, Fava proporciona prou potència d'informes sense necessitat d'escriure codi. Fins i tot admet extensions: podeu afegir fitxers Python que afegeixin noves pàgines d'informes o gràfics a Fava. Una extensió notable és fava-envelope per a la pressupostació per sobres dins de Fava. En general, Fava serveix com a centre de visualització central de l'ecosistema Beancount.

Utilitats i Scripts de Línia d'Ordres

Beancount ve amb diverses eines de línia d'ordres (CLI) (especialment a la branca antiga v2, algunes de les quals es van retallar a la v3). Aquestes eines operen sobre el vostre fitxer de llibreta per comprovar-lo o generar informes específics en text o HTML:

  • bean-check: un validador que comprova errors de sintaxi o errors comptables al fitxer. Executar bean-check myfile.beancount us alertarà de qualsevol desequilibri, compte que falta o altres problemes, i no mostrarà res si el fitxer no té errors.
  • bean-format: un formatejador que endreça la vostra llibreta alineant els números en columnes netes, molt semblant a executar un formatejador de codi en el codi font. Això ajuda a mantenir el fitxer net i llegible.
  • bean-query: una eina interactiva de shell o per lots per executar el llenguatge de consulta de Beancount a la vostra llibreta. La podeu utilitzar per produir informes tabulars personalitzats (p. ex., bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: un generador d'informes versàtil (a la v2) que pot generar informes predefinits (balanç, compte de pèrdues i guanys, balanç de comprovació, etc.) a la consola o a fitxers. Per exemple, bean-report file.beancount balances imprimiria els saldos dels comptes. (A la pràctica, molts d'aquests informes de text han estat substituïts per la presentació més agradable de Fava.)
  • bean-web / bean-bake: una interfície web antiga que serviria els informes a localhost o els "cuinaria" com a fitxers HTML estàtics. Aquests s'utilitzaven principalment abans que Fava es popularitzés; bean-web proporcionava una vista web bàsica dels mateixos informes que bean-report podia generar. A Beancount 3, bean-web s'ha eliminat (ja que Fava és ara el frontend web recomanat, oferint una experiència superior).
  • bean-example: una utilitat per generar un fitxer de llibreta d'exemple (útil per als nouvinguts per veure una plantilla d'entrades de Beancount).
  • bean-doctor: una eina de depuració que pot diagnosticar problemes a la vostra llibreta o entorn.

Val la pena assenyalar que, a partir de Beancount v3, moltes d'aquestes eines es van traslladar fora del projecte principal. El paquet principal de Beancount es va optimitzar, i eines com el motor de consulta i els importadors es van dividir en paquets separats (beanquery, beangulp, etc.) per a un manteniment més fàcil. Per exemple, la funcionalitat de bean-query ara la proporciona l'eina beanquery, que s'instal·la per separat. Des de la perspectiva de l'usuari, la funcionalitat segueix estant disponible; simplement s'ha modularitzat. La comunitat d'Arch Linux va notar aquest canvi en actualitzar Fava: el paquet de Fava va afegir dependències de beanquery i beangulp per donar suport a Beancount 3.x. Aquest enfocament modular també permet a altres membres de la comunitat contribuir a aquestes eines auxiliars de manera més independent del cicle de llançament de Beancount.

Connectors i Extensions de Beancount

Una de les fortaleses destacades de l'ecosistema Beancount és el sistema de connectors. Afegint una línia plugin "module.name" al vostre fitxer Beancount, podeu incorporar lògica Python personalitzada que s'executa durant el processament del llibre major. La comunitat ha creat molts connectors per estendre les capacitats de Beancount:

  • Qualitat de les dades i regles: Alguns exemples inclouen beancount-balexpr, que us permet afirmar equacions que involucren múltiples comptes (p. ex., Actiu A + Actiu B = Passiu X), i beancount-checkclosed, que insereix automàticament assercions de saldo quan tanqueu un compte per assegurar-vos que el seu saldo final sigui zero. Fins i tot hi ha un connector per assegurar que les transaccions del fitxer estiguin ordenades per data (autobean.sorted) per detectar entrades desordenades.
  • Automatització: El connector beancount-asset-transfer pot generar assentaments de transferència en espècie entre comptes (útil per moure accions entre corredors preservant la base de cost). Un altre, autobean.xcheck, contrasta el vostre llibre major de Beancount amb extractes externs per detectar discrepàncies.
  • Transaccions recurrents i pressupostos: El connector de "repetició" o interpolació d'Akuukis permet definir transaccions recurrents o repartir una despesa anual al llarg dels mesos. Per a la pressupostació, l'extensió fava-envelope (utilitzada a través de Fava) admet la metodologia de pressupost per sobres en text pla. També hi ha MiniBudget de Frank Davies, una petita eina autònoma inspirada en Beancount per ajudar amb la pressupostació per a ús personal o de petita empresa.
  • Impostos i informes: Alguns connectors ajuden amb la comptabilitat fiscal, com un que classifica automàticament els guanys de capital en a curt vs. a llarg termini. Un altre (fincen_114 de Justus Pendleton) genera un informe FBAR per als contribuents dels EUA amb comptes estrangers, il·lustrant com les dades de Beancount es poden aprofitar per a informes reguladors.
  • Repositoris de connectors de la comunitat: Hi ha conjunts de connectors curats com beancount-plugins (de Dave Stephens) que se centren en coses com els assentaments d'amortització, i beancount-plugins-zack (de Stefano Zacchiroli) que inclouen ajudants diversos com directives d'ordenació.

A més dels connectors, altres eines d'utilitat que orbiten Beancount aborden necessitats específiques. Per exemple, beancount-black és un autoformatador similar al formatador de codi Black, però per a fitxers de llibre major de Beancount. Hi ha un Bot de Beancount (Telegram/Mattermost) per afegir transaccions via xat, com s'ha esmentat, i un flux de treball d'Alfred per a macOS per afegir ràpidament transaccions al vostre fitxer. Una eina anomenada Pinto ofereix una CLI "sobrecarregada" amb entrada interactiva (com un bean-add millorat). Per a aquells que migren d'altres sistemes, existeixen convertidors (YNAB2Beancount, CSV2Beancount, GnuCash2Beancount, Ledger2Beancount) per ajudar a importar dades d'altres llocs.

En resum, l'ecosistema Beancount és bastant extens. La Taula 1 a continuació enumera algunes de les principals eines i extensions amb els seus rols:

Eina/ExtensióDescripció
Fava (interfície web)Aplicació web completa per visualitzar i editar llibres de Beancount. Proporciona informes interactius (balanç, ingressos, etc.), gràfics i capacitats de consulta. Gran impuls a la usabilitat de Beancount.
Beangulp (framework d'importació)Framework d'importació autònom per a Beancount v3, que reemplaça l'antic mòdul d'ingestió. Ajuda a convertir extractes bancaris (CSV, PDF, etc.) en assentaments de Beancount utilitzant scripts de connectors.
Beanquery (eina de consulta)Motor de consulta tipus SQL autònom per a dades de Beancount. Reemplaça bean-query a la v3, permetent consultes avançades de transaccions i saldos mitjançant una sintaxi familiar SELECT-FROM-WHERE.
Bean-check / Bean-formatEines CLI principals per validar un fitxer Beancount (comprovar errors) i autoformatejar-lo per a la consistència. Útils per mantenir un llibre major correcte i net.
Connectors d'editor (Emacs, VSCode, Vim, etc.)Connectors/modes que afegeixen suport de sintaxi Beancount i linting en editors de text. Milloren l'experiència d'editar manualment fitxers .beancount amb funcions com l'autocompletar i el ressaltat d'errors en temps real.
Importadors de la comunitatCol·leccions de scripts d'importació bancària (molts a GitHub) que cobreixen bancs als EUA, la UE, Àsia i més. Permeten als usuaris importar automàticament transaccions de les seves institucions financeres a Beancount.
Connectors (extensions de llibre major)Connectors opcionals dins del fitxer per aplicar regles o afegir funcionalitats (p. ex., compartició de despeses, assentaments recurrents, assercions de saldo personalitzades). Escrites en Python i s'executen durant el processament del fitxer per a la personalització.
Convertidors (eines de migració)Utilitats per convertir dades d'altres formats a Beancount, p. ex., de GnuCash o Ledger CLI a format Beancount. Faciliten l'adopció de Beancount sense començar de zero.

Comparació amb Ledger, hledger i Sistemes Similars

Beancount pertany a la família d'eines de comptabilitat de partida doble en text pla, entre les quals destaquen Ledger CLI (Ledger de John Wiegley) i hledger. Tot i que tots aquests sistemes comparteixen la idea central dels fitxers de llibre major en text pla i la comptabilitat de partida doble, difereixen en la sintaxi, la filosofia i la maduresa de l'ecosistema. La següent taula destaca les diferències clau entre Beancount, Ledger i hledger:

AspecteBeancount (Python)Ledger CLI (C++)hledger (Haskell)
Sintaxi i Estructura de FitxersSintaxi estricta i estructurada definida per una gramàtica formal (BNF). Les transaccions tenen línies explícites data flag "Beneficiari" "Descripció" i assentaments amb quantitats; tots els comptes han de ser explícitament oberts/definits. Sense assentaments implícits; cada transacció ha de quadrar.Sintaxi més lliure. El beneficiari/descripció es troba típicament a la mateixa línia que la data. Permet un cert quadre implícit (per exemple, una transacció d'un sol assentament pot implicar un segon assentament a un compte per defecte). Els noms de compte es poden utilitzar sense declaració prèvia. Ofereix moltes opcions de línia de comandes que poden afectar l'anàlisi (per exemple, suposicions d'any, regles de fusió de mercaderies).Segueix en gran mesura la sintaxi de Ledger amb petites diferències. hledger és una reimplementació de les característiques principals de Ledger en Haskell, de manera que el format del diari és molt similar al de Ledger (amb algunes extensions i una anàlisi més estricta per defecte). Per exemple, hledger és una mica més estricte amb les dates i la sintaxi de mercaderies que Ledger, però no tan estricte com Beancount.
FilosofiaConservador i Pedant. Posa èmfasi en la detecció d'errors de l'usuari i el manteniment de la integritat de les dades per sobre de tot. Imposa moltes comprovacions (assertions de saldo, seguiment de lots) per defecte. Configuració mínima – enfocament de "una sola manera de fer-ho" per a la consistència. Dissenyat com una biblioteca amb connectors per a l'extensibilitat (tracta les dades del llibre major com un flux a processar, permetent lògica Python personalitzada).Optimista i Flexible. Confia en l'usuari per introduir les dades correctament; menys restriccions incorporades per defecte. Altament personalitzable amb dotzenes d'opcions i banderes de comandes per ajustar el comportament. Tendeix a ser una eina monolítica amb característiques incorporades (informes, gràfics) i utilitza un llenguatge de domini específic dins del llibre major per a coses com transaccions automatitzades i transaccions periòdiques. L'extensibilitat és típicament mitjançant scripts externs o el llenguatge de consulta incorporat en lloc d'API de connectors.Pragmàtic i Consistent. Pretén acostar l'enfocament de Ledger a un públic més ampli amb un comportament previsible. hledger per defecte és més consistent (sense suposicions de quadre sense comptes explícits) i té menys errors fàcils de cometre que els modes més permissius de Ledger. Té un subconjunt de les característiques de Ledger (algunes de les opcions més exòtiques de Ledger no són compatibles), però n'afegeix algunes de pròpies (com una interfície web i importació CSV incorporada). Posa èmfasi en l'estabilitat i la correcció, però sense un sistema de connectors com el de Beancount.
Transaccions i QuadrePartida doble estricta: cada transacció ha de tenir un total de dèbits i crèdits iguals. No permet entrades desquadrades ni marcadors de posició (sense "assentaments virtuals" que s'autoquadrin). També imposa la independència de l'ordre: el llibre major es pot ordenar per data arbitràriament perquè les assertions de saldo estan limitades per data, no depenent de l'ordre del fitxer. El seguiment de costos per a les mercaderies és rigorós – quan vens actius, has d'especificar lots o Beancount imposarà FIFO/LIFO de manera que no puguis treure alguna cosa que no vas afegir.Permet més indulgència en les transaccions. Ledger permet assentaments "virtuals" (utilitzant claudàtors [ ] o parèntesis) que no requereixen un compte de quadre explícit – sovint utilitzats per gestionar pressupostos o quadre implícit de patrimoni net. És possible a Ledger introduir una transacció incompleta (ometent un costat) i deixar que Ledger inferi l'import de quadre. A més, Ledger no imposa estrictament l'eliminació d'actius lot a lot; restarà sense problemes d'un saldo agregat de mercaderies fins i tot si no es van rastrejar lots específics. Això facilita, per exemple, fer comptabilitat de cost mitjà, però significa que Ledger no t'impedirà cometre errors com vendre més accions de les que tens en un lot determinat.
Inventari i Base de CostSeguiment precís de lots. Beancount adjunta informació de cost als lots de mercaderies (per exemple, compra de 10 accions a 100 $ cadascuna), i en reduir un inventari requereix fer coincidir un lot específic o utilitzar una estratègia definida. Assegura que els guanys de capital i les bases de cost es calculen correctament per disseny. El mètode de cost mitjà no és el predeterminat tret que escriguis lògica explícitament per a això, perquè Beancount tracta cada lot de manera diferent per preservar la precisió.Inventari més abstracte. Ledger tracta les quantitats de mercaderies de manera més fluida; per defecte, tots els lots es fusionen en els informes (només mostra les quantitats totals). Proporciona opcions per informar per lot o cost mitjà si cal, però això és una preocupació d'informes. Històricament, Ledger no utilitzava la informació de costos per imposar el quadre en transaccions multimercaderies, cosa que podia portar a càlculs erronis subtils de guanys de capital. No obstant això, la flexibilitat de Ledger permet als usuaris triar FIFO, LIFO, mitjana, etc., en el moment de l'informe mitjançant banderes de línia de comandes.
Informes i Interfície d'UsuariPrincipalment a través de Fava (interfície web) i bean-query/bean-report. Fava ofereix un tauler web polit amb gràfics i diagrames, fent que Beancount sigui molt fàcil d'utilitzar per a l'anàlisi. També admet informes textuals i consultes tipus SQL mitjançant bean-query. Sense TUI oficial (interfície de text), però la integració amb editors/IDEs omple aquesta bretxa.Informes principalment basats en CLI. Ledger té moltes ordres d'informe incorporades (saldo, registre, estadístiques, etc.) que generen text al terminal. Pot produir gràfics (ASCII o mitjançant gnuplot) i fins i tot té alguns complements per a informes HTML, però no té una interfície web oficial mantinguda com a part del projecte. (Hi ha hagut intents de tercers d'interfícies web per a Ledger, però cap tan prominent com Fava per a Beancount.) Per a una interfície d'usuari, els usuaris depenen del terminal o potser de GUI com Ledger-Live (un projecte separat).Ofereix tant CLI com una interfície web senzilla. hledger hereta els informes CLI de Ledger (amb ordres similars) i, a més, proporciona hledger-web, una interfície web bàsica per veure comptes i transaccions en un navegador. hledger-web no és tan ric en funcions com Fava, però ofereix una visió general de només lectura. hledger també té hledger-ui, una interfície basada en curses de terminal per a un ús interactiu.
Extensibilitat i ConnectorsAlta extensibilitat mitjançant Python. L'API de connectors permet executar codi Python arbitrari durant el processament del llibre major, cosa que significa que els usuaris poden implementar característiques personalitzades sense modificar el nucli. L'ecosistema de connectors (per a pressupostos, etc.) ho demostra. A més, es poden escriure scripts Python per utilitzar les biblioteques de Beancount per a informes personalitzats.Extensibilitat de nivell inferior. Ledger es pot estendre escrivint els teus propis scripts que analitzen la sortida de Ledger o utilitzant el seu llenguatge de consulta intern de maneres intel·ligents. També té característiques com transaccions automatitzades (regles que generen automàticament assentaments donats els disparadors al diari) i transaccions periòdiques, que són tipus d'extensibilitat incorporada dins del fitxer del llibre major. Però no ofereix una API per injectar codi arbitrari al motor comptable – no és una biblioteca de la mateixa manera (tot i que libledger existeix per a desenvolupadors de C++).Extensibilitat moderada. hledger omet deliberadament les característiques de transaccions automatitzades/periòdiques de Ledger per mantenir les coses més senzilles, però proporciona eines com hledger-import per a la conversió d'altres formats i permet complements. Estant escrit en Haskell, s'utilitza com a biblioteca en alguns projectes, però escriure connectors personalitzats no és tan senzill com l'enfocament de Beancount. En canvi, hledger se centra a cobrir necessitats comunes (informes, web, UI) dins del seu conjunt d'eines oficial.
Comunitat i DesenvolupamentActiva però impulsada principalment per un autor (Martin Blais) i un petit grup de col·laboradors. Les versions principals són poc freqüents (la v2 va ser estable durant ~6 anys, després la v3 el 2024). La comunitat contribueix mitjançant connectors i eines (Fava va ser originalment un projecte de tercers que es va integrar). La llista de correu de Beancount i GitHub estan actius amb discussions, i la base d'usuaris ha crescut gràcies a l'atractiu de Fava per als no desenvolupadors.Llarga història (Ledger data del 2003) i ús generalitzat entre enginyers. Originalment un projecte d'una sola persona (Wiegley), va veure molts col·laboradors al llarg del temps. El desenvolupament de Ledger s'ha alentit en els últims anys; és estable però amb menys característiques noves (l'enfocament s'ha desplaçat al manteniment). La llista de correu ledger-cli és un centre per a totes les discussions de comptabilitat en text pla (incloent Beancount i hledger). Existeixen moltes eines i scripts al voltant de Ledger, però l'ecosistema no està tan unificat (cap "GUI de Ledger" única, etc., tot i que existeixen múltiples esforços independents).Comunitat creixent, amb Simon Michael liderant el desenvolupament d'hledger. hledger té versions anuals i millores constants, sovint seguint els canvis de característiques de Ledger però també forjant el seu propi camí. Gaudeix de popularitat entre els usuaris que volen el poder de Ledger amb més predictibilitat. La comunitat tendeix a superposar-se amb la de Ledger (plaintextaccounting.org cobreix tots dos). L'ecosistema d'hledger inclou complements com hledger-flow (per a l'automatització del flux de treball) i es beneficia d'estar escrit en Haskell (atraient aquells d'aquesta comunitat).

En resum, Beancount es diferencia pel seu èmfasi en la rigorositat, l'extensibilitat basada en connectors i una interfície web fàcil d'utilitzar. Ledger continua sent l'eina clàssica i altament flexible afavorida pels puristes de la línia de comandes i aquells que necessiten la màxima velocitat (el motor C++ de Ledger és molt ràpid en fitxers enormes). hledger proporciona un punt intermedi – gran part de la funcionalitat de Ledger amb una mica més d'estructura i una interfície web oficialment compatible (encara que senzilla). Tots tres comparteixen els avantatges de la comptabilitat en text pla (auditabilitat, control de versions amb Git, dades planes), però l'ecosistema de Beancount (especialment amb Fava) l'ha fet, sens dubte, més accessible per a l'usuari mitjà en els últims anys. Per contra, els usuaris de Ledger/hledger de vegades prefereixen la seva relativa simplicitat en la configuració (no es necessita Python) i l'estabilitat provada a llarg termini. En última instància, triar entre ells es redueix a la preferència personal: aquells que valoren la correcció rigorosa i un ecosistema ric sovint s'inclinen cap a Beancount, mentre que aquells que volen eines lleugeres i centrades en el terminal podrien quedar-se amb Ledger o hledger.

Escenaris d'ús per a Beancount

Beancount és prou versàtil per ser utilitzat tant per al seguiment de finances personals com (en alguns casos) per a la comptabilitat per a petites empreses. El seu enfocament central de partida doble és el mateix en ambdós escenaris, però l'escala i les pràctiques específiques poden diferir.

Finances Personals

Molts usuaris de Beancount l'utilitzen per gestionar les seves finances personals o familiars. Una configuració típica de finances personals a Beancount podria incloure comptes per a comptes corrents i d'estalvi, targetes de crèdit, inversions, préstecs, categories d'ingressos (salari, interessos, etc.) i categories de despeses (lloguer, queviures, entreteniment, etc.). Els usuaris registren les transaccions diàries manualment (introduint rebuts, factures, etc.) o important-les des d'extractes bancaris utilitzant les eines d'importació esmentades anteriorment. Els beneficis que Beancount aporta a les finances personals inclouen:

  • Consolidació i Anàlisi: Totes les teves transaccions poden residir en un únic fitxer de text (o un conjunt de fitxers) que representi anys d'historial financer. Això facilita l'anàlisi de tendències a llarg termini. Amb el llenguatge de consulta de Beancount o amb Fava, pots respondre preguntes com "Quant vaig gastar en viatges en els últims 5 anys?" o "Quina és la meva factura mitjana mensual de queviures?" en segons. Un usuari va assenyalar que després de canviar a Beancount, “l'anàlisi de dades financeres (despeses, donacions, impostos, etc.) és trivial” ja sigui a través de Fava o consultant les dades i utilitzant eines com Pandas. En essència, el teu llibre major es converteix en una base de dades financera personal que pots consultar a voluntat.
  • Pressupost i Planificació: Tot i que Beancount no imposa un sistema de pressupostos, en pots implementar un. Alguns usuaris fan pressupostos per sobres creant comptes de pressupost o utilitzant el connector fava-envelope. Altres simplement utilitzen informes periòdics per comparar les despeses amb els objectius. Com que és text pla, integrar Beancount amb eines de pressupostos externes o fulls de càlcul és senzill (exportant dades o utilitzant sortides CSV de consultes).
  • Seguiment d'Inversions i Patrimoni Net: Beancount destaca en el seguiment d'inversions gràcies a la seva robusta gestió de bases de cost i preus de mercat. Pots registrar compres/vendes d'accions, criptomonedes, etc., amb detalls de cost, i després utilitzar directives Prices per fer un seguiment del valor de mercat. Fava pot mostrar un gràfic de patrimoni net al llarg del temps i un desglossament de la cartera per classe d'actiu. Això és enormement útil per a la gestió del patrimoni personal: obtens informació similar a la que proporcionen eines comercials com Mint o Personal Capital, però totalment sota el teu control. La gestió de múltiples divises també està integrada, de manera que si tens divises estrangeres o criptomonedes, Beancount pot fer-ne un seguiment i convertir-les per a la generació d'informes.
  • Reconciliació i Precisió: Les finances personals sovint impliquen la reconciliació amb els extractes bancaris. Amb Beancount, es poden conciliar comptes regularment utilitzant assercions de saldo o la funció de documents. Per exemple, cada mes podries afegir una entrada balance Assets:Bank:Checking <data> <saldo> per confirmar que el teu llibre major coincideix amb l'extracte del banc a finals de mes. L'eina bean-check (o la visualització d'errors de Fava) t'alertarà si les coses no coincideixen. Un usuari esmenta fer una reconciliació mensual de tots els comptes, la qual cosa “ajuda a detectar qualsevol activitat inusual” – una bona pràctica d'higiene financera personal que Beancount facilita.
  • Automatització: Persones amb coneixements tecnològics han automatitzat grans parts del seu flux de treball de finances personals amb Beancount. Utilitzant importadors, tasques cron i potser una mica de Python, pots configurar el teu sistema de manera que, per exemple, cada dia les teves transaccions bancàries es recuperin (alguns utilitzen OFX o APIs) i s'afegeixin al teu fitxer Beancount, categoritzades per regles. Amb el temps, el teu llibre major s'actualitza majoritàriament de forma automàtica, i només has de revisar i ajustar segons sigui necessari. Un membre de la comunitat a Hacker News va compartir que després de 3 anys, els seus llibres de Beancount eren “95% automàtics”. Aquest nivell d'automatització és possible gràcies a l'obertura de text pla de Beancount i les seves capacitats de scripting.

Els usuaris de finances personals sovint trien Beancount en lloc de fulls de càlcul o aplicacions perquè els dóna la propietat completa de les dades (sense dependència d'un servei al núvol que podria tancar – una preocupació, ja que Mint va ser descontinuat, per exemple) i perquè la profunditat de la informació és major quan tens totes les teves dades integrades. La corba d'aprenentatge no és trivial – cal aprendre comptabilitat bàsica i la sintaxi de Beancount – però recursos com la documentació oficial i els tutorials de la comunitat ajuden els nouvinguts a començar. Un cop configurat, molts troben que aporta tranquil·litat tenir una imatge clara i fiable de les seves finances en tot moment.

Comptabilitat per a Petites Empreses

Utilitzar Beancount per a una petita empresa (o organització sense ànim de lucre, club, etc.) és menys comú que per a ús personal, però és certament possible i alguns ho han fet amb èxit. El marc de partida doble de Beancount és, de fet, el mateix sistema que sustenta la comptabilitat corporativa, només sense algunes de les característiques de nivell superior que ofereix el programari de comptabilitat dedicat (com ara mòduls de facturació o integracions de nòmines). Així és com Beancount pot encaixar en un context de petita empresa:

  • Llibre Major i Estats Financers: Una petita empresa pot tractar el fitxer de Beancount com el seu llibre major. Tindries comptes d'actiu per a comptes bancaris, comptes a cobrar, potser inventari; comptes de passiu per a targetes de crèdit, préstecs, comptes a pagar; patrimoni net per al capital del propietari; comptes d'ingressos per a vendes o serveis; i comptes de despeses per a totes les despeses del negoci. En mantenir aquest llibre, pots produir un Compte de Resultats (Pèrdues i Guanys) i un Balanç de Situació en qualsevol moment utilitzant els informes o consultes de Beancount. De fet, els informes integrats de Beancount o Fava poden generar un balanç i un P&G en segons que estan perfectament d'acord amb els principis comptables. Això pot ser suficient per a una petita operació per avaluar la rendibilitat, la posició financera i el flux de caixa (amb una mica de consulta per al flux de caixa, ja que els estats de flux de caixa directes no estan integrats, però es poden derivar).
  • Factures i Comptes a Cobrar, Comptes a Pagar: Beancount no té un sistema de facturació integrat; els usuaris normalment gestionarien la facturació externament (per exemple, crear factures a Word o una aplicació de facturació) i després registrarien els resultats a Beancount. Per exemple, quan emets una factura, registraries un assentament carregant Comptes a Cobrar i abonant Ingressos. Quan arriba el pagament, carregues Efectiu/Banc i abones Comptes a Cobrar. D'aquesta manera, pots fer un seguiment dels comptes a cobrar pendents consultant el saldo del compte de Comptes a Cobrar. El mateix s'aplica a les factures (Comptes a Pagar). Tot i que és més manual que el programari de comptabilitat especialitzat (que podria enviar recordatoris o integrar-se amb correus electrònics), és perfectament factible. Alguns usuaris han compartit plantilles o fluxos de treball sobre com gestionen les factures amb Beancount i s'asseguren de no perdre factures obertes (per exemple, utilitzant metadades o consultes personalitzades per llistar factures impagades).
  • Inventari o Cost de les Mercaderies Venudes: Per a les empreses que venen productes, Beancount pot fer un seguiment de les compres i vendes d'inventari, però requereix assentaments disciplinats. Podries utilitzar les característiques d'Inventari i comptabilitat de costos: la compra d'inventari augmenta un compte d'actiu (amb el cost associat als articles), la venda mou el cost a una despesa (CMV) i registra ingressos. Com que Beancount insisteix en la coincidència de lots, forçarà la reducció adequada de l'inventari amb el cost correcte, la qual cosa pot assegurar que els teus càlculs de benefici brut siguin precisos si es fan correctament. No obstant això, no hi ha un seguiment automatitzat de SKU ni res semblant; tot és a nivell financer (quantitat i cost).
  • Nòmines i Transaccions Complexes: Beancount pot registrar transaccions de nòmines (despesa de salaris, retencions fiscals, etc.), però el càlcul d'aquestes xifres es podria fer externament o mitjançant una altra eina, i després simplement registrar-les a Beancount. Per a una empresa molt petita (per exemple, un o dos empleats), això és manejable. Per exemple, registraries un únic assentament comptable per període de pagament que desglossaria salaris, impostos retinguts, despeses d'impostos de l'empleador, efectiu pagat, etc. Fer això manualment és similar a com es faria en els assentaments de diari de QuickBooks; requereix coneixement de quins comptes s'han d'afectar.
  • Multi-usuari i Auditoria: Un repte en un entorn empresarial és si diverses persones necessiten accedir als llibres o si un comptable necessita revisar-los. Com que Beancount és un fitxer de text, no és multi-usuari en temps real. No obstant això, allotjar el fitxer en un repositori Git pot permetre la col·laboració: cada persona pot editar i fer commit, i les diferències es poden fusionar.
  • Compliment normatiu: Per a la presentació d'impostos o el compliment normatiu, les dades de Beancount es poden utilitzar per generar els informes necessaris, però pot requerir consultes personalitzades o connectors. Vam veure un exemple d'un connector de la comunitat per a informes de compliment del govern indi, i un altre per a informes FBAR de FinCEN. Això demostra que, amb esforç, Beancount es pot adaptar per complir requisits d'informació específics. Les petites empreses en jurisdiccions amb requisits senzills (comptabilitat de caixa o meritació bàsica) poden certament mantenir els llibres a Beancount i produir estats financers per a les declaracions d'impostos. No obstant això, característiques com les taules d'amortització o l'amortització podrien requerir que escriguis els teus propis assentaments o utilitzis un connector (els connectors d'amortització de Dave Stephens ajuden a automatitzar-ho, per exemple). No hi ha una interfície gràfica d'usuari per "fer clic a amortitzar actiu" com en alguns programaris de comptabilitat; codificaries l'amortització com a transaccions (la qual cosa, d'alguna manera, la desmitifica: tot és un assentament que pots inspeccionar).

A la pràctica, molts propietaris de petites empreses amb orientació tecnològica han utilitzat Beancount (o Ledger/hledger) si prefereixen el control i la transparència a la comoditat de QuickBooks. Una discussió a Reddit va assenyalar que per a la comptabilitat estàndard de petites empreses amb un volum limitat de transaccions, Beancount funciona bé. El factor limitant sol ser el nivell de comoditat: si el propietari del negoci (o el seu comptable) se sent còmode amb una eina basada en text. Un avantatge és el cost: Beancount és gratuït, mentre que el programari de comptabilitat pot ser costós per a una petita empresa. D'altra banda, la manca de suport oficial i la naturalesa "fes-ho tu mateix" significa que és més adequat per a aquells que són alhora propietaris del negoci i tenen certa inclinació tècnica. Per a autònoms o empresaris individuals amb habilitats de programació, Beancount pot ser una opció atractiva per gestionar les finances sense dependre dels serveis de comptabilitat al núvol.

També són possibles els enfocaments híbrids: algunes petites empreses utilitzen un sistema oficial per a factures o nòmines, però importen periòdicament les dades a Beancount per a anàlisi i arxivament. D'aquesta manera, obtenen el millor dels dos mons: compliment i facilitat per a les operacions diàries, a més de la potència de Beancount per a una visió consolidada.

En resum, Beancount pot gestionar la comptabilitat de petites empreses, sempre que l'usuari estigui disposat a gestionar manualment coses que el programari comercial automatitza. Assegura un alt grau de transparència —entens profundament els teus llibres perquè els estàs escrivint— i, per a un usuari diligent, pot produir llibres impecables. Tant els usuaris personals com els empresarials es beneficien dels punts forts principals de Beancount: un motor comptable fiable, un rastre d'auditoria complet i flexibilitat per adaptar-se a escenaris únics (mitjançant scripting i connectors). Ja sigui per fer un seguiment d'un pressupost domèstic o de les finances d'una startup, Beancount ofereix un conjunt d'eines per fer-ho amb precisió i obertura.

Comunitat i Activitat de Desenvolupament

Beancount té una comunitat dedicada i una història de desenvolupament que reflecteix la seva naturalesa de codi obert, de nínxol però apassionada. A continuació, es detallen els punts clau sobre la seva comunitat, mantenidors i projectes relacionats:

  • Manteniment del Projecte: L'autor principal de Beancount és Martin Blais, qui va iniciar el projecte al voltant del 2007 i l'ha guiat a través de múltiples versions. Durant molt de temps, el desenvolupament va ser en gran part un esforç d'una sola persona (a part de les contribucions de pegats de la comunitat). La filosofia de Martin era construir una eina de comptabilitat "útil per a mi primer, així com per als altres, de la manera més senzilla i duradora". Aquesta motivació personal va mantenir el projecte com una feina feta amb amor. A partir del 2025, Martin Blais segueix sent el mantenidor principal (el seu nom apareix als commits i respon preguntes a la llista de correu/seguiment de problemes), però l'ecosistema al voltant de Beancount té molts altres contribuïdors en els seus respectius projectes.

  • GitHub i Repositoris: El codi font s'allotja a GitHub sota el repositori beancount/beancount. El projecte té llicència GPL-2.0 i ha atret un nombre modest de contribuïdors al llarg dels anys. A mitjans del 2024, la versió 3 de Beancount va ser llançada oficialment com la nova branca estable. Aquesta versió va implicar la separació d'alguns components: per exemple, el repositori beangulp (per a importadors) i el repositori beanquery (per a l'eina de consulta) formen part ara de l'organització beancount de GitHub, mantinguts de manera una mica independent. El repositori principal de Beancount se centra en el motor de comptabilitat central i l'analitzador de fitxers. A partir del 2025, el GitHub de Beancount mostra discussions actives sobre problemes i un desenvolupament continu – tot i que no és de gran volum, els problemes i les sol·licituds de pull van arribant, i s'hi fan actualitzacions ocasionals per corregir errors o millorar funcions.

  • Desenvolupament de Fava: Fava, la interfície web, va començar com un projecte separat (creat per Dominic Aumayr, qui el va registrar el 2016). Té la seva pròpia comunitat de contribuïdors i també es troba a GitHub sota beancount/fava. Els mantenidors i contribuïdors de Fava (per exemple, Jakob Schnetz, Stefan Otte i altres en els darrers anys) han estat millorant activament la interfície, amb llançaments cada pocs mesos. El xat de Gitter de Fava (enllaçat a la documentació de Fava) i el seguiment de problemes de GitHub són llocs on usuaris i desenvolupadors discuteixen noves funcions o errors. El projecte dóna la benvinguda a les contribucions, com ho demostra una nota al CHANGELOG agraint a múltiples membres de la comunitat per les seves PRs. L'estreta alineació de Fava amb el desenvolupament de Beancount (com ara l'addició ràpida de suport per a Beancount v3 i la nova sintaxi de beanquery) indica una bona col·laboració entre els dos projectes.

  • Llistes de Correu i Fòrums: Beancount té una llista de correu oficial (anteriorment a Google Groups, titulada "Beancount" o de vegades discutida a la llista general de Ledger). Aquesta llista de correu és un tresor de coneixement – els usuaris fan preguntes sobre com modelar certs escenaris, informen d'errors i comparteixen consells. Martin Blais és conegut per respondre a la llista de correu amb explicacions detallades. A més, la comunitat més àmplia de Comptabilitat de Text Pla se superposa molt. La llista de correu de Ledger CLI sovint també atén preguntes sobre Beancount, i hi ha un fòrum a plaintextaccounting.org i un subreddit r/plaintextaccounting on els temes de Beancount sorgeixen amb freqüència. Els usuaris d'aquestes plataformes discuteixen comparacions, comparteixen configuracions personals i ajuden els nouvinguts. El to general de la comunitat és molt cooperatiu – els usuaris de Beancount sovint ajuden els usuaris de Ledger i viceversa, reconeixent que totes aquestes eines tenen objectius similars.

  • Grups de Xat: A més de les llistes de correu, hi ha canals de xat com el Slack/Discord de Plaintext Accounting (organitzat per la comunitat) i el Gitter de Fava. Aquests són maneres menys formals i més en temps real d'obtenir ajuda o discutir funcions. Per exemple, algú podria entrar al Slack per preguntar si algú té un importador per a un banc específic. També hi ha un canal de Matrix/IRC (històricament #ledger o #beancount a IRC) on alguns usuaris de llarga data estan inactius. Tot i que no són tan nombrosos com les comunitats de programari convencional, aquests canals tenen gent amb coneixements que sovint poden respondre preguntes de comptabilitat obscures.

  • Contribuïdors i Membres Clau de la Comunitat: Alguns noms destaquen a la comunitat de Beancount:

    • "Redstreet" (Red S): Un contribuïdor prolífic que ha escrit molts plugins (com beancount-balexpr, sellgains, i altres) i sovint proporciona suport. També manté un conjunt de scripts d'importació i una eina anomenada bean-download per obtenir extractes.
    • Vasily M (Evernight): Autor d'alguns frameworks d'importació i plugins

Desenvolupaments Recents i Futures Característiques

A partir de 2025, l'ecosistema Beancount ha experimentat desenvolupaments significatius en els darrers dos anys, i hi ha discussions en curs sobre futures millores. A continuació, es presenten alguns desenvolupaments recents destacats i un avanç del que podria venir:

  • Llançament de Beancount 3.0 (2024): Després d'un llarg període en què Beancount 2.x va ser l'estàndard, la versió 3 es va llançar oficialment a mitjans de 2024. Aquesta va ser una fita important perquè la v3 representa una simplificació i modernització del codi base. Martin Blais havia concebut la v3 com una oportunitat per a "reorganitzar i simplificar" el sistema encara més. Tot i que originalment es pensava que seria una reescriptura important, a la pràctica l'actualització per als usuaris no va ser massa disruptiva. Els canvis principals van ser interns: un nou analitzador (parser), algunes millores de rendiment i l'extracció de components opcionals del nucli. El llançament es va dur a terme gradualment (la v3 havia estat en beta des de 2022, però al juliol de 2024 es va convertir en la versió estable recomanada). Usuaris com Siddhant Goel van informar que la migració de 2.x a 3.x va ser "majoritàriament sense incidents" amb només uns pocs canvis en el flux de treball.

  • Modularització – eines traslladades a paquets separats: Un dels grans canvis amb Beancount 3 és que moltes eines que solien residir al repositori monolític es van separar. Per exemple, bean-query ara és proporcionat pel paquet beanquery, i beancount.ingest va ser reemplaçat pel paquet beangulp. Comandes com bean-extract i bean-identify (per a importacions) van ser eliminades del nucli de Beancount. En canvi, la filosofia és utilitzar scripts autònoms per a la importació. Això significa que si actualitzeu a la v3, instal·laríeu beangulp i executaríeu scripts d'importació (cada importador és bàsicament un petit programa) en lloc de tenir un fitxer de configuració central de bean-extract. De manera similar, les consultes s'executen mitjançant beanquery, que es pot instal·lar i actualitzar independentment del nucli de Beancount. Aquest enfocament modular va ser dissenyat per facilitar el manteniment i fomentar les contribucions de la comunitat. També va reduir el nucli de Beancount, de manera que el nucli se centra purament en l'anàlisi (parsing) i la lògica comptable, mentre que la funcionalitat auxiliar pot evolucionar per separat. Des de la perspectiva de l'usuari, després d'actualitzar, cal ajustar les comandes (p. ex., utilitzar bean-query de beanquery, o utilitzar Fava que ja ho abstrau). El registre de canvis de Fava assenyala explícitament aquests canvis: Fava ara depèn de beanquery i beangulp, i gestiona els fluxos de treball d'importació de manera diferent per a Beancount 3 vs 2.

  • Millores de Rendiment: El rendiment va ser una motivació per revisar el disseny de Beancount. El pla de la v3 (tal com es descriu al document "Objectius de la V3" de Martin) incloïa l'optimització de l'analitzador (parser) i, possiblement, fer el procés de càrrega més ràpid i menys intensiu en memòria. El 2025, algunes d'aquestes millores s'han materialitzat. De manera anecdòtica, els usuaris amb llibres majors molt grans (desenes de milers de transaccions, o moltes operacions de borsa) han informat d'un millor rendiment amb l'última versió. Per exemple, un usuari que gestionava "transaccions de microinversió" i que va tenir problemes de rendiment va assenyalar aquestes preocupacions al Grup de Google – aquest tipus de retroalimentació probablement va informar la v3. El nou analitzador (parser) és més eficient i està escrit d'una manera més clara, la qual cosa podria estendre's en el futur. A més, Fava 1.29 va passar a un mecanisme de vigilància de fitxers més eficient (utilitzant la biblioteca watchfiles) per millorar la capacitat de resposta quan el llibre major canvia. De cara al futur, la comunitat podria explorar l'anàlisi incremental (només reprocessar les parts modificades del fitxer en lloc de tot) per gestionar llibres majors grans més ràpidament – això es va insinuar a la documentació com la idea de "servidor Beancount / registre incremental".

  • Millores en el Seguiment d'Inversions: Hi ha hagut un treball continu per millorar la informació sobre inversions i carteres. Per exemple, es va discutir àmpliament la gestió del cost mitjà ponderat (average cost basis) vs. FIFO. Tot i que Beancount aplica la concordança de lots, alguns usuaris prefereixen el cost mitjà per a certes jurisdiccions. Existeix una proposta i discussió sobre fer el registre del cost base més flexible (possiblement mitjançant un plugin o una opció). El 2025, no hi ha un interruptor integrat per al cost mitjà, però la base de la v3 (el redisseny del registre) facilita la implementació per part dels plugins. Es va llançar un plugin de la comunitat anomenat "Gains Minimizer" que pot suggerir quins lots vendre per minimitzar els impostos, mostrant el tipus d'eines avançades que s'estan construint al voltant de les inversions. Fava també va afegir característiques com una extensió de resum de cartera (amb càlculs de taxa de rendiment). Pel que fa a les futures característiques, es pot esperar més en aquest àmbit: possiblement suggeriments de reequilibri de cartera automatitzats o anàlisi de riscos, probablement com a eines externes que llegeixen dades de Beancount (ja que totes les dades hi són).

  • Nous Plugins i Extensions: L'ecosistema de plugins creix contínuament

Desglossant un Llibre Major de Beancount: Un Estudi de Cas per a la Comptabilitat Empresarial

· 3 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

En la publicació del blog d'avui, desglossarem un llibre major de Beancount per a empreses, cosa que us ajudarà a entendre les complexitats d'aquest sistema de comptabilitat de partida doble en text pla.

Desglossant un Llibre Major de Beancount: Un Estudi de Cas per a la Comptabilitat Empresarial

Comencem amb el codi:

2023-05-22-plantilla-negoci

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

Entenent el Codi

  1. Obertura de Comptes: El codi comença obrint una sèrie de comptes l'1 de gener de 1970. Aquests inclouen una combinació de comptes d'actiu (Assets:Bank:Mercury i Assets:Crypto), un compte de patrimoni net (Equity:Bank:Chase), comptes d'ingressos (Income:Stripe i Income:Crypto:ETH), i comptes de despeses (Expenses:COGS, Expenses:COGS:AmazonWebServices, Expenses:BusinessExpenses, i Expenses:BusinessExpenses:ChatGPT).

  2. Transaccions: Després, es procedeix a registrar una sèrie de transaccions entre el 01-03-2023 i el 18-05-2023.

    • La transacció del 14-05-2023 representa un pagament de 17.49 USD a CONTABO.COM des de Mercury Checking ••1234. Això es registra com una despesa (Expenses:COGS:Contabo) i una deducció corresponent del compte Assets:Bank:Mercury.

    • De manera similar, la transacció de l'11-05-2023 representa un pagament de 14490.33 USD a Amazon Web Services des del mateix compte bancari. Això es registra sota Expenses:COGS:AmazonWebServices.

    • La transacció del 01-03-2023 mostra ingressos de STRIPE dipositats a Mercury Checking ••1234, amb un total de 21230.75 USD. Això es registra com a ingrés (Income:Stripe) i una addició al compte bancari (Assets:Bank:Mercury).

    • L'última transacció del 18-05-2023 representa una transacció de criptomoneda que implica 19 ETH d'un client. Això es fa un seguiment sota Assets:Crypto i Income:Crypto:ETH. El {1,856.20 USD} mostra el preu de l'ETH en el moment de la transacció, mentre que el @@ 35267.8 USD especifica el valor total de la transacció de 19 ETH.

En totes les transaccions, es manté el principi de la comptabilitat de partida doble, assegurant que l'equació Actius = Passius + Patrimoni Net sempre es compleixi.

Reflexions Finals

Aquest llibre major de Beancount proporciona un sistema senzill però robust per fer un seguiment de les transaccions financeres. Com es veu en la transacció final, Beancount és prou flexible per comptabilitzar actius no tradicionals com la criptomoneda, cosa que és un testimoni de la seva utilitat en el nostre paisatge financer cada vegada més digital.

Esperem que aquesta desglossament us ajudi a entendre millor l'estructura i les capacitats de Beancount, tant si sou un comptable experimentat com un principiant que intenta fer un seguiment de les vostres finances personals. Estigueu atents a la nostra propera publicació del blog, on aprofundirem en operacions avançades de Beancount.