Salta al contingut principal

51 publicacions etiquetades amb "Beancount"

Veure totes les etiquetes

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.

Reintroducció del Pla Gratuït per a Nous Clients

· 2 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Ens complau anunciar que, a partir de l'1 de maig de 2023, reintroduirem el pla gratuït per a nous clients. Aquesta decisió arriba després de realitzar millores significatives a la nostra plataforma i optimitzar els nostres recursos per tal de servir millor tots els nostres clients, tant els gratuïts com els de pagament.

Presentem el Nou Pla Gratuït per a Nous Clients

El pla gratuït sempre ha estat una part essencial de la nostra visió per oferir un servei accessible i fàcil d'utilitzar per a tothom. Creiem que els canvis que hem fet durant els darrers mesos ens permetran oferir una experiència encara millor als nostres usuaris, mantenint alhora la qualitat del servei per als nostres clients del pla Pro.

2023-04-28-start-serving-free-users

Els nous clients que es registrin després de l'1 de maig de 2023 tindran accés al pla Gratuït.

El vostre suport i lleialtat han estat fonamentals per fer possible financerament aquesta reintroducció del pla gratuït. És gràcies a les vostres contribucions que hem pogut invertir en la nostra infraestructura i sistemes de suport, assegurant que puguem continuar oferint el servei d'alta qualitat que espereu, alhora que ampliem l'accés a la nostra plataforma per a nous usuaris. El vostre compromís amb la nostra visió ens ha ajudat a créixer i evolucionar, i estem realment agraïts per la vostra col·laboració continuada. Junts, estem construint una comunitat pròspera i capacitant usuaris de tots els àmbits per assolir els seus objectius.

Si teniu qualsevol pregunta o dubte, no dubteu a posar-vos en contacte amb nosaltres. Sempre estem aquí per escoltar els vostres comentaris i resoldre qualsevol problema que pugueu tenir. Gràcies pel vostre suport continuat, i esperem poder oferir-vos el millor servei possible.

Full de referència de Beancount

· 2 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Exemple de nom de compte

Assets:US:BofA:Checking

cheatsheet-en

Tipus de comptes

Assets          +
Liabilities -
Income -
Expenses +
Equity -

Mercaderies

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

Directives

Sintaxi general

YYYY-MM-DD <Directive> <Parameters...>

Obertura i tancament de comptes

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; Restriccions de divises

2015-04-23 close Assets:Checking

Declaració de mercaderies (Opcional)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

Preus

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

Notes

2013-03-20 note Assets:Checking "Vaig trucar per preguntar sobre el reemborsament"

Documents

2013-03-20 document Assets:Checking "path/to/statement.pdf"

Transaccions

2015-05-30 * "Alguna narració sobre aquesta transacció"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Companyia de Cable" "Factura de Telèfon" #tag ˆlink
id: "TW378743437" ; Metadades
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; Podeu ometre una quantitat

Assentaments

  ...    123.45 USD                             Simple
... 10 GOOG {502.12 USD} Amb cost per unitat
... 10 GOOG {{5021.20 USD}} Amb cost total
... 10 GOOG {502.12 # 9.95 USD} Amb ambdós costos
... 1000.00 USD @ 1.10 CAD Amb preu per unitat
... 10 GOOG {502.12 USD} @ 1.10 CAD Amb cost i preu
... 10 GOOG {502.12 USD, 2014-05-12} Amb data
! ... 123.45 USD ... Amb indicador

Assertions de saldo i farciment

; Afirma la quantitat només per a la divisa donada:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; Inserció automàtica de la transacció per complir la següent afirmació:
2015-06-01pad Assets:Checking Equity:Opening-Balances

Esdeveniments

2015-06-01 event "ubicació" "Nova York, EUA"
2015-06-30 event "adreça" "123 May Street"

Opcions

option "title" "El meu llibre major personal"

Altres

pushtag #trip-to-peru
...
poptag #trip-to-peru
; Els comentaris comencen amb un punt i coma

La Màgia de la Comptabilitat en Text Pla amb Beancount

· 6 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Descobreix la Màgia de la Comptabilitat en Text Pla amb Beancount

Beancount.io banner

Introducció

2023-04-18-introduction-to-beancount

Benvingut a un món on la comptabilitat ja no és una tasca intimidatòria. Avui, et presentem Beancount, una eina de comptabilitat en text pla potent, flexible i intuïtiva. Beancount t'ajuda a prendre el control de les teves finances proporcionant un enfocament transparent i senzill per gestionar els teus diners.

En aquesta guia completa, aprofundirem en els conceptes bàsics de Beancount, explicarem els seus conceptes clau i et guiarem a través de les seves característiques senzilles però potents. Al final d'aquest blog, tindràs una comprensió sòlida de Beancount i estaràs preparat per començar a utilitzar-lo per organitzar i analitzar la teva vida financera.

Què és Beancount?

Beancount és un sistema de comptabilitat en text pla de codi obert creat per Martin Blais. Inspirat en el sistema Ledger de John Wiegley, Beancount té com a objectiu proporcionar un mètode robust i fiable per gestionar les finances personals i de petites empreses utilitzant fitxers de text pla. Amb Beancount, pots fer un seguiment dels teus ingressos, despeses, inversions i molt més amb facilitat.

Per què Beancount?

La comptabilitat en text pla ofereix diversos avantatges respecte als sistemes de comptabilitat tradicionals basats en fulls de càlcul o programari:

  • Transparència: Els fitxers de Beancount són llegibles per humans, cosa que facilita la comprensió i l'auditoria de les teves dades financeres.
  • Flexibilitat: Beancount es pot personalitzar fàcilment per adaptar-se a les teves necessitats específiques, i pots utilitzar el teu editor de text preferit i el sistema de control de versions per gestionar les teves dades financeres.
  • Portabilitat: Les teves dades financeres es poden accedir des de qualsevol dispositiu, i és fàcil transferir-les entre sistemes o compartir-les amb altres.
  • A prova de futur: Els fitxers de text pla són universalment compatibles, assegurant que les teves dades financeres romandran accessibles, fins i tot a mesura que la tecnologia evolucioni.

Conceptes Clau de Beancount

Per utilitzar Beancount de manera efectiva, és crucial entendre els seus conceptes clau:

  • Transaccions: Els esdeveniments financers, com ara ingressos, despeses o transferències entre comptes, es registren com a transaccions.
  • Comptes: Les transaccions impliquen un o més comptes, com ara actius, passius, ingressos o despeses.
  • Comptabilitat de partida doble: Beancount aplica la comptabilitat de partida doble, assegurant que cada transacció tingui dèbits i crèdits equilibrats.
  • Directives: Beancount utilitza un conjunt de directives per definir transaccions, obertures de comptes i altres esdeveniments financers.

Començar amb Beancount

Per començar a utilitzar Beancount, segueix aquests senzills passos:

  • Instal·la Beancount: Instal·la Beancount al teu sistema utilitzant les instruccions d'instal·lació proporcionades per al teu sistema operatiu.
  • Crea el teu fitxer Beancount: Crea un nou fitxer de text pla amb l'extensió .beancount (per exemple, my_finances.beancount).
  • Defineix els teus comptes: Utilitza la directiva "open" per definir els comptes que utilitzaràs en les teves transaccions.
  • Registra transaccions: Utilitza la directiva "txn" per registrar les teves transaccions financeres.

O simplement registra't a https://beancount.io. Aquí tens alguns exemples de comptabilitat en text pla -

Exemple 1: Transacció Bàsica

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

En aquest exemple, obrim dos comptes, Assets:Checking i Expenses:Groceries. El 10 d'abril de 2023, registrem una transacció per comprar queviures per valor de 50 $. La transacció redueix el saldo d'Assets:Checking en 50 $ (dèbit) i augmenta el saldo d'Expenses:Groceries en 50 $ (crèdit).

Exemple 2: Transacció d'Ingressos i Despeses

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

En aquest exemple, obrim tres comptes: Assets:Checking, Income:Salary i Expenses:Rent. El 5 d'abril de 2023, registrem una transacció de pagament de salari de 2000 $. La transacció augmenta el saldo d'Assets:Checking en 2000 $ (crèdit) i disminueix el saldo d'Income:Salary en 2000 $ (dèbit). El 6 d'abril de 2023, registrem una transacció de pagament de lloguer de 1000 $. La transacció redueix el saldo d'Assets:Checking en 1000 $ (dèbit) i augmenta el saldo d'Expenses:Rent en 1000 $ (crèdit).

Exemple 3: Transferència entre Comptes

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "Bank" "Transfer from Checking to Savings"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

En aquest exemple, obrim dos comptes: Assets:Checking i Assets:Savings. El 15 d'abril de 2023, registrem una transacció per transferir 500 $ del compte corrent al compte d'estalvis. La transacció redueix el saldo d'Assets:Checking en 500 $ (dèbit) i augmenta el saldo d'Assets:Savings en 500 $ (crèdit).

Aquests exemples il·lustren els conceptes bàsics del sistema de comptabilitat de partida doble de Beancount. En registrar correctament les transaccions, els usuaris poden mantenir registres precisos de les seves activitats financeres i generar informes per obtenir informació sobre la seva situació financera.

Generació d'Informes i Anàlisi de Dades

Beancount inclou un conjunt d'eines potents per generar informes financers, incloent balanços, comptes de resultats i més. També pots utilitzar Fava, una interfície d'usuari web per a Beancount, per visualitzar i interactuar amb les teves dades financeres. https://beancount.io està construït sobre Fava amb llicència MIT.

Conclusió

Abraça el poder i la simplicitat de la comptabilitat en text pla amb Beancount. En comprendre els seus conceptes clau i seguir els passos descrits en aquesta guia, estaràs ben encaminat per gestionar les teves finances personals o de petita empresa amb facilitat i precisió. A mesura que et sentis més còmode amb Beancount, podràs explorar funcions avançades i personalitzacions per adaptar el sistema a les teves necessitats úniques.

Tant si busques fer un seguiment de les teves despeses, planificar el futur o obtenir informació sobre els teus hàbits financers, Beancount ofereix la flexibilitat i la transparència necessàries per assolir els teus objectius. Amb el seu enfocament fàcil d'utilitzar, Beancount té el potencial de revolucionar la manera com gestiones les teves finances i t'empodera per prendre el control del teu futur financer.

Ara que tens una base sòlida en Beancount, és hora d'embarcar-te en el teu viatge de comptabilitat en text pla. Digues adéu als fulls de càlcul engorrosos i al programari complicat, i dóna la benvinguda al món de Beancount. Feliç comptabilitat!

Millora la teva experiència amb Beancount amb enllaços i consultes personalitzades

· 4 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Beancount, el sistema de comptabilitat de partida doble estimat tant per desenvolupadors com per entusiastes de les finances, és potent per la seva simplicitat. Però per a aquells que volen més control i una navegació més ràpida dins de Fava, la interfície web de Beancount, els enllaços personalitzats de la barra lateral i les consultes SQL poden portar el teu flux de treball al següent nivell.

En aquesta guia, et mostrarem com:

  • Afegir enllaços d'accés ràpid a la barra lateral de Fava
  • Utilitzar consultes SQL per a un filtratge i anàlisi avançats
  • Personalitzar el teu flux de treball per a revisions mensuals o detecció d'anomalies

Per què personalitzar Fava?

Fava ja és una interfície bonica per visualitzar el teu llibre major de Beancount, però a mesura que el teu diari creix, també ho fa la necessitat de millors dreceres i consultes més intel·ligents.

Problemes que això resol:

  • Navegar repetidament per rangs de temps
  • Filtrar transaccions a través de comptes niuats
  • Detectar saldos negatius o anomalies més ràpidament

✨ Enllaços personalitzats a la barra lateral

Comencem millorant el teu flux de treball diari amb dreceres simples a la barra lateral. Aquests enllaços apareixen a la barra lateral esquerra de Fava i et poden portar directament a vistes filtrades com les transaccions d'aquest mes o els ingressos del mes passat.

Afegeix aquestes línies al teu fitxer de 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="

Què fan:

  • Mes actual: Obre la vista de transaccions filtrada al mes actual.
  • Mes anterior: Salta instantàniament al mes anterior — ideal per a revisions de final de mes.
  • Esborrar tot: Restableix els filtres, mostrant totes les entrades de nou.

Aquestes dreceres eliminen la introducció manual de temps i fan que la teva experiència amb Fava sigui més fluida i personalitzada.

🔍 Consultes SQL personalitzades

Per a una anàlisi més profunda, la interfície SQL de Fava és increïblement potent. Aquí hi ha una consulta que troba tots els saldos negatius en comptes que coincideixen amb un patró — perfecte per senyalitzar transaccions inusuals o problemàtiques.

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)

Desglossament:

  • account ~ '.*:BCM:.*': Filtra comptes que contenen :BCM: al seu nom.
  • number(units(position)) < 0: Senyalitza saldos negatius (p. ex., pressupostos excedits).
  • Els filtres de data limiten el resultat a una finestra específica d'1 mes.

Casos d'ús:

  • Detectar errors com despeses duplicades o assentaments incorrectes
  • Auditar un proveïdor o categoria específica
  • Extreure ràpidament informació útil per a la pressupostació

🛠 Consell professional: Combina enllaços + consultes

Tot i que Fava no permet enllaços directes a consultes personalitzades, pots crear un hàbit de revisió mensual mitjançant:

  • Utilitzar l'enllaç “Mes actual” per començar la teva revisió
  • Obrir la pestanya de les teves consultes guardades en un altre panell
  • Revisar ambdós simultàniament — primer filtra, després aprofundeix

Aquesta combinació t'ajuda a detectar anomalies abans que s'agreugin i a assegurar que el teu llibre major es mantingui net.

Consideracions finals

Beancount és minimalista per disseny, però petites millores com aquestes aporten grans guanys en eficiència. Tant si estàs revisant el teu pressupost, depurant saldos estranys o simplement estalviant clics, els enllaços personalitzats i les consultes SQL et donen més poder i menys fricció.

Bonus: Si utilitzes els informes personalitzats de Fava, fins i tot pots construir taulers de control complets adaptats als teus rituals de finances personals.

Preparat per prendre el control?

Comença a poc a poc: afegeix l'enllaç “Mes actual”. Després construeix les teves pròpies consultes. El teu jo futur t'ho agrairà.

Vols més consells com aquest? Subscriu-te al nostre butlletí o explora més receptes de Beancount a Beancount.io.

Previsió de Transaccions Futures a Beancount

· Un minut de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Hi ha un plugin per a Beancount per preveure transaccions recurrents futures. Com aplicar-lo a beancount.io? Posa el següent contingut al teu fitxer de llibre major.

; import the plugin
plugin "fava.plugins.forecast"

; add a monthly HOA fee
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

Captura de pantalla del plugin de previsió

2022-05-30-plugin-de-previsió

I llavors, veuràs la previsió al gràfic de Benefici Net.

Plugin de Previsió

L'etiqueta [MONTHLY] de dalt significa que es repetirà per sempre. Si tens més condicions per aplicar, prova [MONTHLY UNTIL 2022-06-01], [MONTHLY REPEAT 5 TIMES], [YEARLY REPEAT 5 TIMES], o [WEEKLY SKIP 1 TIME REPEAT 5 TIMES].

Creació i Seguiment de Factures amb Beancount

· 6 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Una plantilla de text pla, un flux de treball repetible i una sola consulta per a "Qui em deu diners encara?"


2022-02-12-crafting-tracking-invoices-with-beancount

Facturar pot semblar una feina pesada, atrapada entre la feina que heu acabat i el pagament que esteu esperant. Però un bon procés de facturació és la columna vertebral d'un flux de caixa saludable. Té una doble funció: indica clarament als vostres clients què deuen i quan, i alimenta el vostre sistema de comptabilitat amb els fets inqüestionables que necessita.

Tot i que les aplicacions SaaS dedicades poden enviar PDF elegants i automatitzats, sovint tenen quotes mensuals i bloquegen les vostres dades en un silo propietari. Un enfocament lleuger de text pla utilitzant Beancount ofereix una alternativa potent. Podeu convertir cada factura en un conjunt clar d'entrades comptables, donant-vos tots els avantatges del control de versions, metadades potents i consultes instantànies, sense necessitat de subscripció.


La Factura Mínima Viable (Camps que No Heu de Saltar Mai)

Abans de tocar el vostre llibre major, necessiteu una factura professional. El format pot ser simple, però el contingut ha de ser precís. Aquests camps, prestats de la pràctica provada de les petites empreses, no són negociables.

  • Dades del venedor: El nom de la vostra empresa i l'adreça física.
  • Dades del client: El nom del vostre client i (idealment) la seva adreça.
  • Número de factura: Un ID únic i seqüencial que no es reutilitza mai. FAC-045 segueix FAC-044.
  • Dates d'emissió i venciment: Indiqueu clarament quan es va emetre la factura i quan s'espera el pagament.
  • Línies d'articles: Una descripció clara dels serveis o productes, juntament amb la quantitat, la tarifa i el total de la línia.
  • Subtotal, impostos i total: Mostreu els càlculs perquè el client els pugui seguir fàcilment.
  • Notes opcionals: Un lloc per a un agraïment, instruccions de transferència o un número de comanda de compra proporcionat pel client.

Per començar, hem creat un conjunt de plantilles llestes per editar que inclouen tots aquests camps. Les versions de full de càlcul fins i tot precalculen els totals per a vosaltres.

Obteniu les nostres plantilles aquí: beancount.io/invoice‑templates (Disponible en formats Google Docs, Word, Sheets, Excel i PDF)


Registreu la Factura al Vostre Llibre Major

Un cop hàgiu enviat el PDF de la factura al vostre client, heu de registrar-la a Beancount. Aquest és un pas crucial que reconeix els ingressos quan es guanyen, no només quan es paguen. El procés implica dues transaccions diferents.

1. Quan emeteu la factura:

Creeu una transacció que mogui l'import total del vostre compte Ingressos a Actius:FacturesPendentsDeCobrar. Això crea un rebut digital als vostres llibres.

; 2025‑07‑21 Factura #045  Sprint de disseny web per a Acme Corp.
2025-07-21 * "Acme Corp" "FAC-045 Sprint de disseny web"
Actius:FacturesPendentsDeCobrar 3500.00 USD ; venciment:2025-08-04
Ingressos:Disseny:Web
id_factura: "FAC-045"
correu_contacte: "ap@acme.example"
enllaç: "docs/factures/2025-07-21_Acme_FAC-045.pdf"

Aquí, debiteu FacturesPendentsDeCobrar i acrediteu el vostre compte Ingressos. Fixeu-vos en les metadades riques: la data de venciment, un id_factura únic i fins i tot un enllaç: directe al PDF que heu enviat.

2. Quan el client paga:

Quan els diners arriben al vostre compte bancari, registreu una segona transacció per "tancar" el rebut. Això mou el saldo de FacturesPendentsDeCobrar al vostre compte corrent.

2025-08-01 * "Acme Corp" "Pagament FAC-045"
Actius:Banc:CompteCorrent 3500.00 USD
Actius:FacturesPendentsDeCobrar
id_factura: "FAC-045"

El saldo de FAC-045 a Actius:FacturesPendentsDeCobrar ara és zero, i els vostres llibres estan perfectament equilibrats.

Adjunteu el PDF: La clau de metadades enllaç: és especialment potent quan s'utilitza amb Fava, la interfície web de Beancount. Fava representarà un enllaç clicable directament a la vista de transaccions, de manera que el document font no està mai a més d'un clic de distància. Aquest flux de treball es va preveure ja el 2016 en una sol·licitud de funció (GitHub).


Una Consulta per Llistar Totes les Factures Pendents

Llavors, qui us deu diners encara? Amb aquest sistema, no cal que busqueu entre correus electrònics o fulls de càlcul. Només necessiteu una consulta senzilla.

Deseu el següent com a fitxer anomenat factures-pendents.sql:

SELECT
meta('id_factura') AS id,
beneficiari,
narració,
data,
number(saldo) AS pendent
WHERE
compte = "Actius:FacturesPendentsDeCobrar"
AND saldo != 0
ORDER BY
data;

Ara, executeu-lo des de la vostra línia d'ordres:

bean-query llibres.beancount factures-pendents.sql

En segons, obtindreu un informe d'envelliment net i actualitzat de totes les factures pendents, que mostra l'ID de la factura, el client, la data d'emissió i l'import degut. No es requereix cap programari addicional.


Automatitzeu la Feina Pesada

La bellesa del text pla és la capacitat d'escriure scripts. Podeu automatitzar les parts tedioses d'aquest flux de treball.

  • Plantilla + Pandoc = PDF: Mantingueu la vostra plantilla de factura en Markdown. Un petit script de Python pot omplir les variables (nom del client, línies d'articles, número de factura) i l'eina de línia d'ordres Pandoc pot convertir-la instantàniament a un PDF professional.
  • Hook Pre-commit de Git: Si emmagatzemeu el vostre llibre major a Git, un simple hook pre-commit pot executar comprovacions abans de desar la vostra feina. Pot verificar que cada nou id_factura sigui únic, que els assentaments de la transacció estiguin equilibrats a zero i que el fitxer al qual es fa referència a les metadades enllaç: existeixi realment.
  • Treball Cron: Configureu una tasca programada (un treball cron) per executar la vostra consulta factures-pendents.sql cada nit i enviar-vos el resum per correu electrònic. Començareu cada dia sabent exactament qui necessita un toc amable.

Una Advertència Realista

Beancount és una eina de comptabilitat, no un servei de facturació. No enviarà automàticament recordatoris de pagament als vostres clients ni processarà els seus pagaments amb targeta de crèdit. El flux de treball és: creeu i envieu la factura utilitzant el mètode que trieu (com les plantilles anteriors) i, a continuació, registreu les entrades comptables al vostre llibre major.

Per a la majoria de professionals independents i petites botigues, aquest pas manual és un petit preu a pagar per un sistema de comptabilitat a prova de bales, auditable i gratuït que posseïu i controleu completament (beancount.io).


Passos Següents

A punt per prendre el control de la vostra facturació? Aquí teniu com començar.

  1. Baixeu una plantilla i utilitzeu-la per crear la vostra propera factura real, assegurant-vos d'utilitzar un número de factura seqüencial.
  2. Emmagatzemeu els vostres PDF enviats en una carpeta dedicada com docs/factures/ i utilitzeu la clau de metadades enllaç: a la vostra transacció Beancount per fer-hi referència.
  3. Deseu la consulta factures-pendents.sql i feu que executar-la formi part de la vostra revisió financera setmanal.

La comptabilitat de text pla no vol dir renunciar a la pulcritud ni al control; només vol dir que la base de dades es pot cercar amb grep. Amb una plantilla senzilla i els fragments anteriors, cobrareu més ràpid i mantindreu els vostres llibres impecables.

Ajustos en Beancount: La teva posada a punt de final de mes

· 5 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

La comptabilitat no acaba quan l'última venda arriba al banc. Per obtenir una imatge real de la salut del teu negoci, has de fer una posada a punt a final de mes. A cada tancament de període, faràs ajustos—retocs al diari que col·loquen correctament els ingressos i les despeses a la finestra de temps adequada i mantenen el teu balanç honest.

En un llibre Beancount de text pla, aquests ajustos crucials són transparents, controlats per versions i fàcils d'auditar, convertint una tasca tediosa en un procés clar i repetible.

2022-01-25-adjusting-entries-in-beancount-your-month-end-tune-up


Per què importen els ajustos

Fer aquests ajustos és fonamental per a una comptabilitat sòlida. Asseguren que els teus estats financers siguin precisos i fiables.

  • Precisió del devengament: Els ajustos són el motor de la comptabilitat de devengament. Traslladen els ingressos i els costos al període en què realment es van obtenir o incórrer, independentment de quan es va produir el moviment de caixa. Això satisfà els principis bàsics de reconeixement d'ingressos i d'aparellament que formen la base de la comptabilitat moderna (AccountingCoach.com).

  • KPI fiables: Els indicadors clau de rendiment són tan bons com les dades que hi ha al darrere. Mètriques com el marge brut, l'ingrés net i les previsions de flux de caixa només diuen la veritat un cop els diferiments, els devengaments i les estimacions s'han registrat correctament (Corporate Finance Institute).

  • Auditoria neta: Els ajustos explícits de final de mes creen un registre clar del teu raonament financer. Això ajuda els auditors (i al teu jo futur) a rastrejar fàcilment què ha canviat i per què, generant confiança en els teus números (Accountingverse).


Sis categories comunes (amb fragments de Beancount)

Aquí teniu els sis tipus d'ajustos més comuns, amb exemples de com registrar-los al vostre llibre Beancount. Observeu l'ús de metadades com adj:"devengament" per facilitar la cerca i l'anàlisi d'aquests ajustos més endavant.

1. Ingressos devengats

Això és per als ingressos que has guanyat però que encara no has facturat o rebut el pagament.

2025-07-31 * "Consultoria—hores de juliol"
Actiu:Clients 12000.00 USD
Ingressos:Consultoria
; adj:"devengament" periode:"Jul-25"

2. Despesa devengada

Una despesa en què has incorregut però que encara no has pagat, com una factura de serveis que arribarà el mes vinent.

2025-07-31 * "Advocat—Retenció de juliol"
Despeses:Legals 2500.00 USD
Passiu:FacturesPendents
; adj:"devengament"

3. Ingressos diferits (no guanyats)

Això s'aplica quan un client et paga per avançat. Reconeixes una part d'aquests ingressos a mesura que es guanyen amb el temps.

2025-07-31 * "Prepagament anual SaaS (reconeix 1/12)"
Passiu:IngressosDiferits 833.33 USD
Ingressos:SaaS
; adj:"diferiment"

4. Despesa prepagada (diferida)

Quan pagues una despesa per avançat (com una pòlissa d'assegurança anual), despeses una part cada mes.

2025-07-31 * "Assegurança—1 mes de despesa de prepagament"
Despeses:Assegurança 400.00 USD
Actiu:AssegurançaPrepagada
; adj:"diferiment"

5. Amortització

Aquesta entrada assigna el cost d'un actiu a llarg termini (com un ordinador o un vehicle) durant la seva vida útil.

2025-07-31 * "Amortització de Mac Studio"
Despeses:Amortització 1250.00 USD
Actiu:Ordinadors:AmortitzacióAcumulada
; asset_id:"MAC-03" adj:"estimació"

6. Provisió per a deutes dubtosos

Una estimació dels comptes a cobrar que no esperes cobrar, que es registra com a despesa per deutes incobrables.

2025-07-31 * "Provisió per a deutes incobrables (2% de Clients)"
Despeses:DeutesIncobrables 700.00 USD
Actiu:ProvisióDeutesDubtosos
; base:"Clients" taxa:0.02 adj:"estimació"

Un flux de treball repetible

Per mantenir el tancament de final de mes eficient i sense errors, adopta un flux de treball consistent.

  • Utilitza un fitxer separat. Mantén tots els ajustos d'un període en un sol lloc, com ajustos-2025-07.bean. Al fitxer principal del llibre, utilitza una directiva include per importar-lo al final. Això garanteix que els ajustos s'apliquen just abans de generar els informes finals.

  • Estandarditza les teves metadades. Utilitza sempre claus i valors de metadades coherents, com adj:"devengament|diferiment|estimació" i periode:"Jul-25". Això facilita la consulta i la revisió de tipus específics d'ajustos.

  • Executa una comprovació prèvia. Abans de confirmar els canvis a Git, executa bean-check al fitxer d'ajustos per detectar errors tipogràfics o registres desequilibrats.

  • Realitza una comprovació de sanitat d'una línia. Aquesta consulta confirma que tots els ajustos del període es compensen, donant-te confiança que no has introduït errors.

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('periode') = 'Jul-25' GROUP BY account"

Consells ràpids per a la resolució de problemes 🤔

  • El saldo de Passiu:IngressosDiferits està pujant? Revisa els teus fites del contracte. Potser estàs reconeixent els ingressos massa lentament en comparació amb la feina que estàs lliurant.

  • El saldo de Actiu:AssegurançaPrepagada és negatiu? Probablement ho estàs despesant més ràpidament del que permet el calendari de l'actiu. Revisa el teu calendari d'amortització.

  • Els teus dies de vendes pendents (DSO) estan empitjorant després dels devengaments? Els teus ingressos devengats poden estar emmascarant problemes de cobrament subjacents. Combina aquest KPI amb un informe d'envelliment de comptes a cobrar per detectar clients que paguen tard abans que es converteixi en un problema de flux de caixa.


Reflexions finals

Els ajustos poden semblar tediosos, però el seu valor es fa evident quan compares els teus comptes de resultats "abans" i "després"—la diferència sovint és material. Amb Beancount, aquests ajustos es converteixen en petits pegats que es poden cercar, automatitzar i revisar com a codi.

Crea l'hàbit de final de mes i els teus números es mantindran tan precisos com la teva enginyeria.

Feliç equilibri!

Revolucionant la Gestió de les Finances Personals amb Beancount.io

· 4 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Tradicionalment, els usuaris de Beancount utilitzen eines de línia d'ordres o allotgen servidors amb xarxes privades, on han d'operar a través d'un ordinador o un editor de text de propòsit general al mòbil. Beancount.io redueix les molèsties oferint aplicacions mòbils de codi obert per a Android i iOS i un núvol segur, de manera que el vostre llibre major ara és a pocs tocs de la vostra empremta digital.

Beancount és un llenguatge informàtic que permet la comptabilitat de partida doble en fitxers de text. Un cop definiu les transaccions financeres al fitxer, generarà diversos informes. Martin Blais, el dissenyador d'aquest llenguatge, argumenta que la comptabilitat per línia d'ordres té molts avantatges: és ràpida, portàtil, oberta i personalitzada.

Estem totalment d'acord amb l'argument i compartim la sensació d'empoderament que aporta el llenguatge Beancount. I volíem fer més, introduir la tecnologia a més gent. Això significa que hem de millorar la usabilitat i fer-la més accessible a un públic més ampli.

2022-01-08-instant-access-to-your-beancount-cloud-ledger-anytime-anywhere

No tothom és un entusiasta de la línia d'ordres, i per això hem creat Beancount.io, el gestor de finances personals per a tothom. Així és com funciona:

Per a treballs intensius, els usuaris de Beancount encara podrien utilitzar els seus ordinadors per editar o veure el llibre major amb els seus navegadors visitant https://beancount.io o sincronitzant-se amb Dropbox. Això manté la flexibilitat de les eines de línia d'ordres, sense perdre l'accés entre dispositius de la solució basada en el núvol.

Per a operacions diàries lleugeres, com ara afegir una entrada a l'instant, els usuaris de Beancount podrien utilitzar l'aplicació mòbil per connectar-se al núvol segur.

Mike Thrift, un enginyer de backend que treballa en aquest producte, diu:

Abans em posava un recordatori cada dia per obrir el portàtil i introduir registres als meus fitxers Beancount. Ara, amb beancount.io, és molt més fàcil per a mi modificar el meu llibre major sempre que ho necessiti, fins i tot quan estic fora comprant alguna cosa a la botiga.

Zhi Li, un enginyer de programari de Facebook, ens diu:

He migrat tots els meus fitxers Beancount a beancount.io, i ara funciona perfectament per al meu ús diari. He pagat per funcions Pro com la còpia de seguretat automàtica de dades, però crec que hi ha més coses que podríeu fer per millorar el servei.

Podeu registrar-vos ara a https://beancount.io/sign-up/ o descarregar l'aplicació per a iOS o l'aplicació per a Android. Hem simplificat el registre per recollir la mínima informació possible de vosaltres per iniciar el servei. Llavors obtindreu un llibre major buit preestablert que estarà llest perquè afegiu una entrada de seguida.

Preguntes Freqüents

Beancount.io vendria les meves dades del llibre major a tercers?

  • No. Ens comprometem a mantenir les vostres dades segures i privades, i mai vendrem les vostres dades del llibre major.

Les meves dades estan segures?

  • Sí. Protegim el vostre correu electrònic i llibre major amb AES256, la vostra contrasenya amb BCrypt i les vostres sol·licituds de xarxa amb SSL.

Les meves dades del llibre major estan xifrades d'extrem a extrem?

  • No. A causa de limitacions tècniques, encara hem de desxifrar les vostres dades a la memòria quan indexem el fitxer del llibre major als servidors de producció. Per tant, restringim l'accés directe de qualsevol membre del nostre equip. Malauradament, no podem fer-ho amb Intel SGX ni amb cap compartiment de seguretat a causa dels alts costos.

És un servei fiable en el qual pugui confiar durant els propers anys?

  • Sí. Vam llançar Beancount.io el 4 de juliol de 2019, i ja fa més de dos anys que operem el servei de manera segura i fiable. Per tant, no tenim cap raó per no continuar el servei en el futur.

Puc sol·licitar noves funcions i patrocinar el projecte?

Guia de migració de QuickBooks a Beancount

· 34 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

Fase 1: Exportació de dades des de QuickBooks

Migrar cinc anys de dades comença per extreure tots els registres de QuickBooks en un format utilitzable. QuickBooks Desktop i QuickBooks Online tenen diferents opcions d'exportació:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

1.1 QuickBooks Desktop – Opcions d'exportació

IIF (Intuit Interchange Format): QuickBooks Desktop pot exportar llistes (com el pla de comptes, clients, proveïdors) a fitxers de text .IIF. A QuickBooks Desktop, aneu a File → Utilities → Export → Lists to IIF i, a continuació, seleccioneu les llistes que necessiteu (p. ex., Pla de comptes, Clients, Proveïdors). Això genera un fitxer de text que inclou noms de comptes, tipus i dades de les llistes. L'IIF és un format propietari però de text pla que és relativament fàcil d'analitzar. Utilitzeu-lo per capturar el vostre Pla de comptes i les llistes de contactes com a referència a Beancount.

Llibre major/Diari via CSV: Per a les dades de transaccions, QuickBooks Desktop no ofereix una exportació completa amb un sol clic, però podeu utilitzar informes. El mètode recomanat és exportar el General Journal (totes les transaccions) per al rang de dates desitjat. A QuickBooks Desktop, obriu Reports → Accountant & Taxes → Journal, establiu les dates des de la primera transacció fins avui i feu clic a Export → Excel. Deseu el resultat com a CSV després d'eliminar les capçaleres/peus de pàgina de l'informe i les columnes buides. Assegureu-vos que les dades numèriques estiguin netes: incloeu els cèntims (p. ex., 3.00, no 3), sense cometes addicionals i sense símbols de moneda o dobles negatius al CSV. El CSV hauria de tenir columnes com Date, Trans #, Name, Account, Memo, Debit, Credit, Balance (o una única columna Amount segons el format de l'informe).

Consell: QuickBooks Desktop 2015+ també pot exportar transaccions a través del diàleg Find. Utilitzeu Edit → Find → Advanced, establiu el rang de dates de cinc anys i després exporteu els resultats a CSV. Avís: Algunes versions limiten l'exportació a 32.768 línies. Si teniu dades molt grans, exporteu any per any (o en blocs més petits) per evitar el truncament i, posteriorment, combineu-los. Assegureu-vos que els rangs de dates no se superposin per evitar duplicats.

Altres formats (QBO/QFX/QIF): QuickBooks Desktop pot importar transaccions bancàries mitjançant fitxers .QBO (Web Connect) o .QFX/.OFX, però per exportar des de QuickBooks, aquests no són típics. Si el vostre objectiu és extreure només les transaccions bancàries, és possible que ja les tingueu en format QBO/OFX del vostre banc. No obstant això, per a una exportació completa del llibre major, utilitzeu IIF i CSV. QuickBooks Desktop no pot exportar directament a QIF (Quicken Interchange Format) sense eines de tercers. Si trobeu una manera d'obtenir QIF, tingueu en compte que algunes eines de llibres comptables (versions antigues de Ledger 2.x) podien llegir QIF, però és millor treballar amb CSV en el nostre procés.

1.2 QuickBooks Online – Opcions d'exportació

Exportació integrada a Excel/CSV: QuickBooks Online (QBO) ofereix una eina d'Export Data. Aneu a Settings ⚙ → Tools → Export Data. Al diàleg d'exportació, utilitzeu la pestanya Reports per seleccionar les dades (p. ex., General Ledger o Transaction List) i la pestanya Lists per a les llistes (pla de comptes, etc.), trieu All dates i exporteu a Excel. QuickBooks Online descarregarà un ZIP que conté diversos fitxers Excel per als informes i llistes seleccionats (per exemple, Compte de Pèrdues i Guanys, Balanç de Situació, Llibre Major, Clients, Proveïdors, Pla de Comptes, etc.). Després podeu convertir aquests fitxers Excel a CSV per processar-los.

Informe de detall de transaccions: Si l'exportació per defecte de QBO no inclou un únic fitxer de Llibre Major, podeu executar manualment un informe detallat:

  1. Aneu a Reports i cerqueu Transaction Detail by Account (o General Ledger en algunes versions de QBO).
  2. Establiu el Report period al rang complet de cinc anys.
  3. A les opcions de l'informe, establiu Group by = None (per llistar les transaccions individuals sense subtotals).
  4. Personalitzeu les columnes per incloure com a mínim: Date, Transaction Type, Number, Name (Payee/Customer), Memo/Description, Account, Debit, Credit (o una única columna Amount) i Balance. Incloeu qualsevol classe o ubicació si s'utilitza.
  5. Executeu l'informe i després feu clic a Export to Excel.

Això genera un llibre major detallat de totes les transaccions. Deseu-lo com a CSV. Cada línia representarà una partida (apunt) d'una transacció. Més endavant haureu d'agrupar les línies per transacció per a la conversió.

Pla de comptes i altres llistes: QuickBooks Online pot exportar el pla de comptes mitjançant Accounting → Chart of Accounts → Batch Actions → Export to Excel. Feu-ho per obtenir els noms i tipus de comptes. De la mateixa manera, exporteu Clients, Proveïdors, etc., si voleu traspassar els noms per a les metadades.

API de QuickBooks Online (Opcional): Per a un enfocament programàtic, Intuit ofereix una API REST per a les dades de QBO. Els usuaris avançats poden crear una aplicació de QuickBooks Online (requereix un compte de desenvolupador) i utilitzar l'API per obtenir dades en format JSON. Per exemple, podríeu consultar l'endpoint Account per al pla de comptes i els endpoints de l'informe JournalEntry o GeneralLedger per a les transaccions. Hi ha SDKs de Python com python-quickbooks que encapsulen l'API. No obstant això, l'ús de l'API implica autenticació OAuth i és excessiu per a una migració única, tret que preferiu l'automatització. Per a la majoria dels casos, l'exportació manual a CSV/Excel és més senzilla i menys propensa a errors.


Fase 2: Transformació i neteja de dades

Un cop teniu les dades de QuickBooks en CSV (i/o IIF), el següent pas és convertir-les al format de llibre comptable de text pla de Beancount. Això implica analitzar les exportacions, mapejar els comptes de QuickBooks a un pla de comptes de Beancount i formatar les transaccions en la sintaxi de Beancount.

2.1 Anàlisi d'exportacions de QuickBooks amb Python

L'ús de Python garantirà la precisió i la reproductibilitat de la transformació. Descriurem scripts per a dues tasques clau: importar el pla de comptes i convertir les transaccions.

Importació i mapeig de comptes: És crucial configurar els vostres comptes a Beancount abans d'afegir transaccions. Els comptes de QuickBooks tenen tipus (Bank, Accounts Receivable, Expense, etc.) que mapejarem a la jerarquia de Beancount (Assets, Liabilities, Income, Expenses, etc.). Per exemple, podem utilitzar un mapeig com aquest:

# Mapeig del tipus de compte de QuickBooks a la categoria arrel de Beancount
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # Comptes a cobrar com a actiu
'AP': 'Liabilities', # Comptes a pagar com a passiu
'FIXASSET': 'Assets',
'OASSET': 'Assets', # Altres actius
'OCASSET': 'Assets', # Altres actius corrents
'LTLIAB': 'Liabilities', # Passius a llarg termini
'OCLIAB': 'Liabilities', # Altres passius corrents
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # Altres ingressos
'EXEXP': 'Expenses', # Altres despeses
}

Utilitzant l'exportació IIF de QuickBooks Desktop o el CSV de la llista de comptes de QBO, recuperem el nom i el tipus de cada compte. Després:

  • Crear noms de compte de Beancount: QuickBooks de vegades utilitza dos punts (:) als noms de compte per denotar subcomptes (p. ex., "Current Assets:Checking"). Beancount utilitza la mateixa notació de dos punts per a la jerarquia. Sovint podeu reutilitzar el nom directament. Si els noms de compte de QuickBooks no comencen amb una categoria, afegiu-hi la categoria mapejada. Per exemple, un compte de QuickBooks de tipus BANK anomenat "Checking" es convertirà en Assets:Checking a Beancount. Un compte EXP (despesa) "Meals" es converteix en Expenses:Meals, etc.

  • Assegurar una nomenclatura vàlida: Elimineu o substituïu qualsevol caràcter que pugui confondre Beancount. QuickBooks permet caràcters com & o / als noms. És aconsellable eliminar o substituir caràcters especials (p. ex., substituir & per and, eliminar barres o espais). A més, assegureu-vos que tots els noms de compte siguin únics després de la transformació: QuickBooks pot haver permès el mateix nom de subcompte sota diferents pares, la qual cosa és correcte, però a Beancount el nom complet (amb els pares) ha de ser únic. Si cal, canvieu el nom o afegiu un qualificador per distingir-los.

  • Generar obertures de comptes: A Beancount, cada compte utilitzat ha de ser obert amb una directiva open. Podeu triar una data anterior a la vostra primera transacció (p. ex., si migreu dades de 2019 a 2023, utilitzeu 2018-12-31 o una data encara anterior per a totes les obertures). L'script escriurà línies com: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD per a cada compte (suposant que l'USD és la moneda principal). Utilitzeu la moneda adequada per a cada compte (vegeu les notes sobre multidivisa a continuació).

Conversió de transaccions: El principal repte és convertir l'exportació de transaccions de QuickBooks (CSV) a assentaments de Beancount. Cada transacció de QuickBooks (factura, rebut, xec, assentament de diari, etc.) pot tenir múltiples partides (línies) que s'han d'agrupar en una única transacció de Beancount.

Utilitzarem el lector de CSV de Python per iterar sobre les línies exportades i acumular les partides:

import csv
from collections import defaultdict

# Llegeix totes les línies del CSV del Diari exportat de QuickBooks
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# Agrupa les línies per transacció (suposant que 'Trans #' identifica les transaccions)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

Ara transactions és un diccionari on cada clau és un ID/número de transacció i el valor és la llista de partides per a aquesta transacció. A continuació, convertim cada grup a Beancount:

def format_date(qb_date):
# Les dates de QuickBooks poden ser com "12/31/2019"
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# Ordena les partides per ordre de línia si cal (normalment ja vénen en ordre)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# Capçalera de la transacció
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # inclou el número de referència si està disponible
output_lines.append(f" number: \"{first['Num']}\"")
# Itera sobre cada partida/apunt
for split in splits:
acct_name = split['Account'].strip()
# Mapeja el nom del compte de QuickBooks al compte de Beancount (utilitzant el mapeig anterior)
beancount_acct = account_map.get(acct_name, acct_name)
# Determina l'import amb signe:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# Algunes exportacions tenen una única columna Amount (negativa per als crèdits)
amt_str = amount
else:
# Si hi ha columnes Debit/Credit separades
amt_str = debit if debit else f"-{credit}"
# Elimina les comes dels números per seguretat
amt_str = amt_str.replace(",", "")
# Afegeix la moneda
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# Concepte/descripció de la partida
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# Final de la transacció – línia en blanc
output_lines.append("")

Aquesta lògica de l'script fa el següent:

  • Formata la data a YYYY-MM-DD per a Beancount.

  • Utilitza el beneficiari (Name) i el concepte (Memo) per a la narració de la transacció. Per exemple: 2020-05-01 * "ACME Corp" "Pagament de factura" (Si no hi ha beneficiari, podríeu utilitzar el Tipus de transacció de QuickBooks o deixar el beneficiari entre cometes buides).

  • Afegeix una metadada number si hi ha un número de referència (núm. de xec, núm. de factura, etc.).

  • Itera sobre cada línia de partida:

    • Mapeja el nom del compte de QuickBooks al compte de Beancount mitjançant un diccionari account_map (poblat a partir del pas del pla de comptes).
    • Determina l'import. Depenent de la vostra exportació, podeu tenir una única columna Amount (amb valors positius/negatius) o columnes de Dèbit i Crèdit separades. El codi anterior gestiona ambdós casos. Assegura que els crèdits es representin com a imports negatius per a Beancount (ja que a Beancount s'utilitza un únic número amb signe per apunt).
    • Afegeix la moneda (suposant USD tret que hi hagi una columna de moneda diferent).
    • Escriu la línia d'apunt de Beancount amb el compte, l'import i un comentari amb el concepte de la línia. Per exemple: Assets:Checking 500.00 USD ; Dipòsit Income:Sales -500.00 USD ; Dipòsit Això reflecteix un dipòsit de $500 (d'Ingressos a Compte Corrent).
  • Després de llistar totes les partides, una línia en blanc separa la transacció.

Gestió de multidivisa: Si les vostres dades de QuickBooks inclouen múltiples monedes, incloeu el codi de la moneda a cada apunt (com es mostra a dalt). Assegureu-vos que els comptes en monedes estrangeres s'obrin amb aquesta moneda. Per exemple, si teniu un compte bancari en EUR, generaríeu open Assets:Bank:Checking EUR i les transaccions en aquest compte utilitzaran EUR. Beancount admet llibres comptables multidivisa i farà un seguiment de les conversions implícites, però potser haureu d'afegir entrades de preus per als tipus de canvi si voleu la conversió a una moneda base als informes. També es recomana declarar la vostra moneda operativa principal a la part superior del fitxer de Beancount (p. ex., option "operating_currency" "USD").

Execució de la conversió: Deseu l'script de Python (per exemple, com a qb_to_beancount.py) i executeu-lo sobre els vostres fitxers exportats. Hauria de produir un fitxer .beancount que contingui tots els comptes i transaccions.

2.2 Gestió de casos especials i neteja de dades

Durant la transformació, tingueu en compte aquests problemes comuns i com abordar-los:

  • Incongruències en els noms de comptes: QuickBooks pot tenir noms de comptes que entren en conflicte amb els noms jeràrquics de Beancount. Per exemple, QuickBooks podria tenir dos comptes pare diferents, cadascun amb un subcompte anomenat "Insurance". A Beancount, Expenses:Insurance ha de ser únic. Resoleu-ho canviant el nom d'un (p. ex., "Insurance-Vehicle" vs "Insurance-Health") abans de l'exportació o mapegeu-los a comptes de Beancount únics al vostre script. Unes convencions de nomenclatura coherents (sense caràcters especials i ús de la jerarquia) us estalviaran mals de cap. Utilitzeu l'enfocament del fitxer de remapeig si cal: mantingueu un CSV o diccionari de nom antic → nom nou de Beancount i apliqueu-lo durant la conversió (el nostre codi d'exemple utilitza un account_map i podria carregar substitucions des d'un fitxer).

  • Dates i formats: Assegureu-vos que totes les dates estiguin formatades de manera consistent. L'script anterior normalitza M/D/Y al format ISO. A més, aneu amb compte amb els problemes d'any fiscal vs. any natural si el vostre període de cinc anys travessa un final d'any. A Beancount no li importen els límits de l'any fiscal, però potser més endavant voldreu dividir els fitxers per any per comoditat.

  • Precisió numèrica: QuickBooks gestiona la moneda amb cèntims, així que treballar en cèntims sol ser correcte. Tots els imports haurien de tenir idealment dos decimals al CSV. Si alguns imports s'han convertit en enters (sense decimals) o tenen comes/parèntesis (per als negatius), netegeu-los a l'script (elimineu comes, convertiu (100.00) a -100.00, etc.). L'exportació a CSV, si es fa correctament (segons les instruccions), ja hauria d'evitar aquests problemes de format.

  • Imports negatius i signes: Els informes de QuickBooks de vegades mostren els negatius com a -100.00 o (100.00) o fins i tot --100.00 en certes exportacions d'Excel. El pas de neteja hauria de gestionar-ho. Assegureu-vos que els dèbits i crèdits de cada transacció sumin zero. Beancount ho exigirà (si no està saldat, llançarà un error en importar).

  • Duplicats de transaccions: Si heu hagut d'exportar transaccions per lots (p. ex., any per any o compte per compte), aneu amb compte de fusionar-los sense solapaments. Comproveu que la primera transacció d'un any no sigui també l'última del lot anterior, etc. És fàcil duplicar accidentalment algunes transaccions a les fronteres. Si sospiteu de duplicats, podeu ordenar els assentaments finals de Beancount per data i buscar entrades idèntiques, o utilitzar les etiquetes de transacció úniques de Beancount per detectar-los. Una estratègia és incloure els números de transacció de QuickBooks com a metadades (p. ex., utilitzar el Trans # o el número de factura com a etiqueta txn o metadada quickbooks_id) i després assegurar-se que no hi hagi duplicats d'aquests ID.

  • Partides no saldades / Comptes pont: QuickBooks pot tenir casos estranys com una transacció amb un desequilibri que QuickBooks ajusta automàticament a un compte de "Opening Balance Equity" o "Retained Earnings". Per exemple, en configurar els saldos inicials dels comptes, QuickBooks sovint apunta les diferències a un compte de Patrimoni Net. Aquests apareixeran a les transaccions exportades. Beancount requerirà un saldat explícit. És possible que hàgiu d'introduir un compte de Patrimoni Net per als saldos inicials (comunament Equity:Opening-Balances) per reflectir QuickBooks. És una bona pràctica tenir un assentament de saldos inicials el primer dia del vostre llibre comptable que estableixi els saldos inicials de tots els comptes (vegeu la Fase 5).

  • Casos especials de multidivisa: Si utilitzeu multidivisa, l'exportació de QuickBooks pot llistar tots els imports en la moneda local o en la seva moneda nativa. Idealment, obteniu les dades en la moneda nativa de cada compte (els informes de QuickBooks Online solen fer-ho). A Beancount, cada apunt porta una moneda. Si QuickBooks va proporcionar tipus de canvi o una conversió a la moneda local, podríeu ignorar-los i confiar en les entrades de preus de Beancount. Si QuickBooks no va exportar els tipus de canvi, potser voldreu afegir manualment registres de preus (p. ex., utilitzant la directiva price de Beancount) per a dates clau per igualar la valoració. No obstant això, per a la integritat bàsica del llibre comptable, n'hi ha prou que les transaccions saldin en les seves monedes originals; els guanys/pèrdues no realitzats no necessiten ser registrats explícitament tret que vulgueu els mateixos informes.

  • Comptes a cobrar / Comptes a pagar: QuickBooks fa un seguiment dels detalls de factures i rebuts (dates de venciment, estat de pagament, etc.) que no es transferiran completament a un llibre comptable pla. Obtindreu les transaccions de Comptes a Cobrar (A/R) i Comptes a Pagar (A/P) (factures que augmenten A/R, pagaments que disminueixen A/R, etc.), però no els documents de les factures ni els saldos de clients per factura. Com a resultat, després de la migració, hauríeu de verificar que els saldos dels vostres comptes A/R i A/P a Beancount siguin iguals als saldos pendents de clients/proveïdors a QuickBooks. Si necessiteu fer un seguiment de les factures, podríeu utilitzar les metadades de Beancount (p. ex., incloure una etiqueta invoice o un enllaç). Els números de factura de QuickBooks haurien d'haver arribat a través dels camps Num o Memo; el nostre script preserva el Num com a number: "..." a les metadades de la transacció.

  • Comptes inactius o tancats: L'exportació IIF pot incloure comptes inactius (si heu triat incloure'ls). Està bé importar-los (simplement no tindran transaccions i un saldo zero si són realment inactius). Podeu marcar-los com a tancats a Beancount després de la data de l'última transacció amb una directiva close. Això manté el vostre llibre comptable ordenat. Per exemple: 2023-12-31 close Expenses:OldAccount ; tancat després de la migració Això és opcional i principalment per neteja.

Netejant i mapejant acuradament les dades com s'ha descrit, tindreu un fitxer de llibre comptable de Beancount que reflecteix estructuralment les vostres dades de QuickBooks. El següent pas és verificar que també reflecteix numèricament QuickBooks.


Fase 3: Validació i conciliació de dades

La validació és una fase crítica en una migració de dades comptables. Hem d'assegurar que el llibre comptable de Beancount coincideixi amb els llibres de QuickBooks fins a l'últim cèntim. Es poden utilitzar diverses estratègies i eines:

3.1 Conciliació del balanç de comprovació

Un informe de balanç de comprovació (o balanç de sumes i saldos) llista els saldos finals de tots els comptes (amb dèbits i crèdits o positius/negatius indicats) i hauria de sumar zero. Executar un balanç de comprovació en ambdós sistemes per a la mateixa data és la manera més ràpida de confirmar la precisió general.

  • A QuickBooks: Executeu un informe de Trial Balance per a l'últim dia de l'any final (p. ex., 31 de desembre de 2023). Aquest informe mostra el saldo de cada compte. Exporteu-lo o anoteu les xifres clau.

  • A Beancount: Utilitzeu els informes de Beancount per generar un balanç de comprovació. Un mètode fàcil és a través de la línia de comandes:

    bean-report migrated.beancount balances

    L'informe balances és un balanç de comprovació que llista tots els comptes i els seus saldos. També podeu obrir el fitxer a Fava (la interfície web de Beancount) i mirar la secció Balances o Balance Sheet. Cada saldo de compte a Beancount hauria de coincidir amb el balanç de comprovació de QuickBooks. Per exemple, si QuickBooks mostra *Comptes a cobrar = 5.000,llavorselcompteAssets:AccountsReceivabledeBeancounthauriadesumar5.000*, llavors el compte Assets:Accounts Receivable de Beancount hauria de sumar 5.000 (dèbit). Si *Ingressos per vendes = 200.000,elcompteIncome:SalesaBeancounthauriademostrar200.000*, el compte Income:Sales a Beancount hauria de mostrar 200.000 (crèdit, que podria aparèixer com a -200.000 si s'utilitza un balanç de comprovació que presenta els crèdits com a negatius).

Si hi ha discrepàncies, localitzeu-les:

  • Comproveu si falta o sobra un compte sencer (hem oblidat un compte o n'hem inclòs un que ja estava tancat abans del període de migració?).
  • Si un saldo no quadra, aprofundiu: QuickBooks pot executar un Account QuickReport o un detall de llibre major per a aquest compte, i podeu comparar-lo amb el registre de Beancount per a aquest compte (bean-report migrated.beancount register -a NomDelCompte). De vegades, les diferències provenen d'una transacció que falta o d'un duplicat.

Verifiqueu també que la suma de tots els comptes sigui zero al balanç de comprovació de Beancount (imprimeix un total que hauria de ser zero o molt proper a zero). Beancount aplica la partida doble, així que si teniu algun desequilibri diferent de zero, significa que actius menys passius i patrimoni net no sumen zero, la qual cosa indica un problema (que QuickBooks normalment tampoc permetria, però podria passar si es van perdre algunes dades).

3.2 Comparacions de saldos de comptes

Més enllà del balanç de comprovació, podeu comparar estats financers específics:

  • Balanç de situació: Executeu un Balanç de Situació de QuickBooks per a la data final i un balanç de situació de Beancount (bean-report migrated.beancount balsheet). Això és similar al balanç de comprovació però organitzat per Actius, Passius i Patrimoni Net. Els números haurien de coincidir per categories. Per a una comprovació més granular, compareu els totals dels comptes principals: tresoreria, comptes a cobrar, actius fixos, comptes a pagar, patrimoni net, etc.

  • Compte de pèrdues i guanys (Compte de resultats): Executeu un Compte de Pèrdues i Guanys per al període de cinc anys (o any per any) a QuickBooks i a Beancount (bean-report migrated.beancount income per a un compte de resultats del període complet). El resultat net de Beancount hauria de ser igual al de QuickBooks per a cada període. Si heu migrat els cinc anys, el resultat net acumulat hauria de coincidir. També podeu comparar els totals d'ingressos i despeses individuals per assegurar-vos que no s'ha omès o duplicat cap categoria.

  • Mostreig aleatori de transaccions: Trieu algunes transaccions a l'atzar (especialment de cada any i de cada compte principal) i verifiqueu que s'han migrat correctament. Per exemple, trobeu una factura de fa 3 anys a QuickBooks i després cerqueu el seu import o concepte al fitxer de Beancount (com que totes les transaccions són text, podeu obrir el fitxer .beancount en un editor de text o utilitzar eines de cerca). Comproveu que la data, els imports i els comptes coincideixin. Això ajuda a detectar problemes de format de data o comptes mal mapejats.

3.3 Comprovacions d'integritat automatitzades

Aprofiteu les eines de validació pròpies de Beancount:

  • bean-check: Executeu bean-check migrated.beancount. Això analitzarà el fitxer i informarà de qualsevol error de sintaxi o de saldat. Si l'script va ometre alguna cosa com un compte no obert o una transacció no saldada, bean-check ho marcarà. Una passada neta (sense sortida) significa que el fitxer és, com a mínim, internament consistent.

  • Assercions de saldo: Podeu afegir assercions de saldo explícites al llibre comptable per a comptes clau com a comprovació addicional. Per exemple, si sabeu el saldo del compte bancari en una data determinada, afegiu una línia: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD Aleshores, bean-check s'assegurarà que al llibre comptable, en aquesta data, el saldo sigui efectivament de $10.000. Això és opcional però pot ser útil per a comptes de gran importància. Podríeu agafar els saldos finals de QuickBooks (p. ex., al final de cada any) i afirmar-los al fitxer de Beancount. Si alguna asserció falla, Beancount informarà d'una diferència.

  • Conciliació progressiva del balanç de comprovació: Si ho preferiu, podeu fer una comprovació període per període. Per a cada any, compareu el canvi net. Per exemple, el resultat net a QuickBooks 2020 vs. Beancount 2020, etc., per assegurar-vos que cada any es va tancar correctament contra el patrimoni net (QuickBooks traspassa automàticament el resultat net a Reserves cada nou any; a Beancount simplement veureu el patrimoni net acumulat). Si veieu diferències, pot indicar un problema a les dades d'un any específic.

  • Recompte de transaccions i duplicats: Compteu el nombre de transaccions a QuickBooks vs. Beancount. QuickBooks no mostra un recompte directe fàcilment, però podeu estimar-lo comptant les línies al CSV (cada capçalera de transacció vs. les partides). A Beancount, una manera ràpida és comptar les ocurrències de txn o * " al fitxer. Haurien de ser iguals o lleugerament superiors a les de QuickBooks (si heu afegit transaccions de saldos inicials o ajustos). Una diferència significativa significa que alguna cosa podria haver estat omesa o duplicada. El nostre ús d'ID únics a les metadades pot ajudar: si sospiteu de duplicats, cerqueu al fitxer de Beancount el mateix número de xec o de factura que apareix dues vegades quan no hauria de fer-ho.

  • Estat de conciliació: Vam incloure una metadada rec: "y" o "n" basada en l'estat de conciliat de QuickBooks al nostre script (com a rec a l'exemple). Això no és una característica estàndard de Beancount (Beancount no fa un seguiment de pendent/conciliat de la mateixa manera que Ledger), però pot ser una metadada útil. Podríeu verificar que totes les transaccions que estaven conciliades a QuickBooks hi són presents. En última instància, conciliar de nou els comptes bancaris a Beancount (utilitzant els vostres extractes) podria ser la prova final que no falta res.

Fent aquestes validacions, guanyareu confiança que la migració ha preservat les dades. Preneu-vos el vostre temps en aquesta fase: és més fàcil solucionar anomalies ara que mesos després, quan es podria confiar en els llibres. Problemes comuns si la validació falla: un saldo inicial de compte que falta, una transacció datada fora del rang o una inversió de signe en un apunt. Tots són solucionables un cop identificats.


Fase 4: Consolidació al llibre comptable de Beancount

Després de netejar i validar, és hora de formalitzar les dades a l'estructura del vostre llibre comptable de Beancount. "Consolidar" aquí significa tant finalitzar els fitxers del llibre comptable com, potencialment, registrar-los en un sistema de control de versions per a l'auditoria.

4.1 Organització dels fitxers i configuració del llibre comptable

Decidiu com estructurar els fitxers del llibre comptable de Beancount. Per a cinc anys de dades, podeu mantenir-ho tot en un sol fitxer o dividir-ho per any o categoria. Una estructura comuna i clara és:

  • Fitxer principal del llibre comptable: p. ex., ledger.beancount – Aquest és el punt d'entrada que pot fer include d'altres fitxers. Podria contenir opcions globals i després incloure els fitxers anuals.
  • Fitxer de comptes: Definiu el pla de comptes i els saldos inicials. Per exemple, accounts.beancount amb totes les directives open (generades per l'script). També podríeu llistar les mercaderies (monedes) aquí.
  • Fitxers de transaccions: Un per any, p. ex., 2019.beancount, 2020.beancount, etc., contenint les transaccions d'aquell any. Això manté cada fitxer amb una mida manejable i us permet centrar-vos en un any si cal. Alternativament, podeu dividir per entitat o compte, però la divisió per temps és senzilla per a dades financeres.

Exemple de fitxer principal:

option "title" "El meu llibre comptable d'empresa"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

D'aquesta manera, totes les dades s'agreguen quan executeu informes, però manteniu l'ordre.

Beancount no requereix múltiples fitxers —podríeu tenir un sol fitxer gran— però l'estructura anterior millora la claredat i el control de versions. Segons les millors pràctiques de Beancount, és bo utilitzar capçaleres de secció clares i agrupar les entrades relacionades de manera lògica.

4.2 Establiment de saldos inicials i patrimoni net

Si la vostra migració no parteix d'un inici absolutament des de zero, haureu de gestionar els saldos inicials. Dos escenaris:

  • Llibres que comencen de zero: Si el període de cinc anys comença a la creació de l'empresa (p. ex., vau començar a utilitzar QuickBooks el gener de 2019 amb tots els comptes a zero excepte el patrimoni inicial), llavors potser no necessiteu una transacció de saldos inicials separada. Les primeres transaccions del 2019 (com el finançament inicial a un compte bancari) establiran naturalment els saldos inicials. Només assegureu-vos que qualsevol capital inicial o reserves anteriors es comptabilitzin mitjançant transaccions de patrimoni net.

  • Llibres a mig camí (historial parcial): Si vau començar amb QuickBooks abans i el 2019 és un punt intermedi, llavors a l'1 de gener de 2019 cada compte tenia un saldo que venia de l'exercici anterior. QuickBooks tindria aquests saldos com a saldos d'obertura o reserves. A Beancount, és típic crear un assentament de Saldos Inicials el dia abans de la vostra data d'inici:

    • Utilitzeu un compte de patrimoni anomenat Equity:Opening-Balances (o similar) per compensar la suma de tots els imports inicials.
    • Exemple: si el 31/12/2018, la Tresoreria era de 10.000,elsComptesaCobrarde10.000, els Comptes a Cobrar de 5.000 i els Comptes a Pagar de 3.000(creˋdit),escriurıˊeuunatransaccioˊ:20181231"SaldosInicials"Assets:Cash10000.00USDAssets:AccountsReceivable5000.00USDLiabilities:AccountsPayable3000.00USDEquity:OpeningBalances12000.00USDAixoˋdeixaOpeningBalancesamblasumanegativa(3.000 (crèdit), escriuríeu una transacció: `2018-12-31 * "Saldos Inicials"` ` Assets:Cash 10000.00 USD ` ` Assets:Accounts Receivable 5000.00 USD ` ` Liabilities:Accounts Payable -3000.00 USD ` ` Equity:Opening-Balances -12000.00 USD ` Això deixa Opening-Balances amb la suma negativa (–12k) que salda l'assentament. Ara tots els comptes d'actiu/passiu comencen el 2019 amb els saldos correctes. Això hauria de reflectir qualsevol "Reserva" o saldos arrossegats de QuickBooks.
    • Alternativament, utilitzeu les directives pad i balance de Beancount: Per a cada compte, podeu fer-li pad des de Opening-Balances i afirmar el saldo. Aquesta és una manera més automatitzada. Per exemple: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD Això diu a Beancount que insereixi qualsevol assentament necessari (a Opening-Balances) perquè Tresoreria sigui igual a 10000 USD en aquesta data. Feu això per a cada compte. El resultat és similar, però escriure una transacció explícita com en el primer mètode també és senzill.
  • Reserves (Retained Earnings): QuickBooks no exporta explícitament una transacció de "Reserves"; simplement la calcula. Després de la migració, potser noteu que Equity:Retained Earnings és zero si no el vau crear. A Beancount, les reserves són simplement els beneficis d'anys anteriors. Podeu optar per crear un compte de Reserves i transferir-hi els beneficis anteriors el primer dia de cada nou any, o simplement deixar que el patrimoni net sigui la suma de tots els ingressos/despeses (que apareix a la secció de Patrimoni Net als informes). Per transparència, alguns usuaris fan assentaments de tancament anuals. Això és opcional i principalment per a la presentació. Com que hem migrat totes les transaccions, el benefici de cada any s'acumularà naturalment si executeu un informe per any.

  • Comprovacions comparatives: Després d'establir els saldos inicials, executeu un balanç de situació a la data d'inici per assegurar-vos que tot és correcte (hauria de mostrar aquests saldos inicials contra el Patrimoni Inicial sumant zero).

4.3 Finalització i control de versions

Ara que les dades estan en format Beancount i estructurades, és aconsellable consolidar els fitxers en un repositori de control de versions (p. ex., git). Cada canvi al llibre comptable es pot seguir, i teniu un rastre d'auditoria de totes les modificacions. Aquest és un avantatge important de la comptabilitat en text pla. Per exemple, a QuickBooks els canvis poden no ser fàcilment comparables, però a Beancount podeu veure les diferències línia per línia. Com alguns usuaris assenyalen, amb Beancount obteniu transparència i la capacitat de revertir canvis si cal: cada assentament es pot vincular a un historial de canvis.

Considereu etiquetar el commit d'aquesta migració inicial com a v1.0 o similar, perquè sapigueu que representa l'estat dels llibres tal com es van importar de QuickBooks. A partir d'ara, introduireu noves transaccions directament a Beancount (o les importareu de fonts bancàries, etc.), i podeu utilitzar pràctiques normals de desenvolupament de programari (fent commits mensuals o diaris, utilitzant branques per a experiments, etc.).

Configuració de Fava o altres eines: Fava és una interfície web per a Beancount que facilita la visualització d'informes. Després de consolidar, executeu fava ledger.beancount per navegar pels estats financers i comparar-los amb els vostres informes de QuickBooks una última vegada. Podríeu detectar petites diferències més fàcilment en una interfície gràfica (per exemple, un compte que hauria de ser zero però que mostra un petit saldo indica un assentament de tancament que falta o una transacció perduda).

Convencions de nomenclatura i consistència: Ara teniu el control total, així que assegureu-vos de la consistència:

  • Tots els comptes han de tenir noms clars, començant amb noms de categoria en majúscula (Assets, Liabilities, etc.). Si algun sembla estrany (p. ex., Assets:assets:SomeAccount a causa d'una diferència de majúscules/minúscules de QuickBooks), canvieu-los el nom al fitxer de comptes i actualitzeu les transaccions (una cerca/substitució ràpida al fitxer pot fer-ho, o utilitzar bean-format de Beancount o el multicursor de l'editor).
  • Els símbols de mercaderia (codis de moneda) han de ser consistents. Per a USD, utilitzeu USD a tot arreu (no $ o US$). Per a altres, utilitzeu codis estàndard (EUR, GBP, etc.). Aquesta consistència és important per a les cerques de preus i els informes de Beancount.
  • Elimineu qualsevol compte temporal o de prova que s'hagi pogut crear (per exemple, si heu utilitzat Expenses:Miscellaneous per a comptes desconeguts a l'script com a comodí, intenteu eliminar-los mapejant correctament tots els comptes).

Tancament de QuickBooks: En aquest punt, hauríeu de tenir llibres paral·lels a Beancount que coincideixin amb QuickBooks. Alguns opten per executar ambdós sistemes en paral·lel durant un període curt per assegurar-se que no s'ha omès res. Però si la validació és sòlida, podeu "tancar" els llibres de QuickBooks:

  • Si es tracta d'un entorn corporatiu, considereu exportar tots els documents font de QuickBooks (factures, rebuts) per als registres, ja que aquests no existiran a Beancount tret que els adjunteu manualment.
  • Conserveu una còpia de seguretat de les dades de QuickBooks (tant el fitxer de l'empresa com els fitxers d'exportació).
  • A partir d'ara, mantingueu el llibre comptable de Beancount com el sistema de registre principal.

En consolidar les dades al llibre comptable de Beancount, heu completat el procés de migració. El pas final és realitzar una auditoria i demostrar la consistència dels estats financers, per satisfer-vos a vosaltres mateixos (i a qualsevol part interessada o auditor) que la migració ha estat un èxit.


Fase 5: Auditoria postmigració i exemples

Per il·lustrar l'èxit de la migració, prepareu una comparació abans i després dels estats financers i, possiblement, una diferència de transaccions. Això proporciona proves que els llibres són consistents.

5.1 Verificació dels estats financers

Produïu informes financers clau tant de QuickBooks com de Beancount per a les mateixes dates i compareu-los:

  • Balanç de situació a 31 de desembre de 2023: Compareu els totals d'Actius, Passius i Patrimoni Net línia per línia. Haurien de coincidir. Per exemple, si QuickBooks mostrava Total Actius = 150.000iTotalPassius+PatrimoniNet=150.000** i **Total Passius + Patrimoni Net = 150.000, el balanç de situació de Beancount hauria de mostrar els mateixos totals. Si heu estructurat els comptes de manera lleugerament diferent (diguem que heu fusionat alguns subcomptes), ajusteu-ho en la comparació o desglosseu fins al següent nivell per assegurar-vos que les sumes siguin iguals.

  • Compte de pèrdues i guanys 2019–2023: Assegureu-vos que el total d'Ingressos, el total de Despeses i el Benefici Net de cada any (o de tot el rang) siguin idèntics. Podrien sorgir diferències menors si QuickBooks va fer algun arrodoniment als informes, però les transaccions normalment porten els cèntims exactament, de manera que el benefici net hauria de ser exacte. Si el benefici d'algun any difereix, aprofundiu en les dades d'aquell any; sovint és un indicador d'un assentament que falta o duplicat en aquell període.

  • Diferències en el balanç de comprovació: Si és possible, creeu un full de càlcul on llisteu cada compte i el saldo de QuickBooks vs. Beancount. Com que esperem que coincideixin, aquesta hauria de ser una columna de diferències tot a zero. Això és essencialment la comprovació creuada del balanç de comprovació que vam discutir, però escriure-ho ajuda a documentar-ho.

5.2 Exemple de comparació (Abans vs. Després)

A continuació es mostra un fragment d'exemple que demostra la consistència de les dades. Diguem que el nostre balanç de comprovació de QuickBooks per al 31 de desembre de 2023 era:

CompteSaldo QuickBooks (31 des 2023)
Actius
  Assets:Bank:Checking$12.500,00 (dèbit)
  Assets:Accounts Receivable$3.200,00 (dèbit)
Passius
  Liabilities:Credit Card$-1.200,00 (crèdit)
  Liabilities:Loans Payable$-5.000,00 (crèdit)
Patrimoni Net
  Equity:Opening-Balances$-7.500,00 (crèdit)
  Equity:Retained Earnings$-2.000,00 (crèdit)
  Equity:Current Year Profit$0,00

A Beancount, després d'importar i registrar totes les transaccions fins al 2023, un bean-report balances (balanç de comprovació) mostra:

CompteSaldo Beancount (31 des 2023)
Actius
  Assets:Bank:Checking12.500,00 USD (dèbit)
  Assets:Accounts Receivable3.200,00 USD (dèbit)
Passius
  Liabilities:Credit Card-1.200,00 USD (crèdit)
  Liabilities:Loans Payable-5.000,00 USD (crèdit)
Patrimoni Net
  Equity:Opening-Balances-7.500,00 USD (crèdit)
  Equity:Retained Earnings-2.000,00 USD (crèdit)
  Equity:Profit (2019-2023)0,00 USD

(Nota: les seccions de Patrimoni Net poden estar estructurades de manera diferent; la clau és que els totals coincideixin. Aquí, "Benefici (2019-2023)" a Beancount fa el paper del benefici de l'any actual/reserves combinades, mostrant zero perquè el benefici es va tancar contra Reserves.)

Com es mostra, cada compte coincideix fins al cèntim. La suma dels dèbits és igual a la suma dels crèdits a banda i banda.

A més, si executem un Compte de Pèrdues i Guanys per al 2023:

  • QuickBooks: Ingressos 50.000,Despeses50.000, Despeses 48.000, Benefici Net $2.000.
  • Beancount: Ingressos 50.000,Despeses50.000, Despeses 48.000, Benefici Net $2.000 (que després es va tancar a Reserves o apareix sota Patrimoni Net al balanç de final d'any).

Podeu crear una diferència de transaccions si cal, però com que les dades de QuickBooks no estan en format de llibre comptable, és més efectiu confiar en els informes. Es podria ordenar tant el CSV de QuickBooks com les transaccions de Beancount per data i comparar camps clau com a comprovació final (això es pot fer a Excel o amb un script). No obstant això, donat que confiem en la nostra validació anterior, la comprovació dels estats financers sol ser suficient.

5.3 Consells d'auditoria

  • Si un auditor o una part interessada necessita tranquil·litat, presenteu els estats financers abans i després un al costat de l'altre. La transparència de Beancount pot simplificar les auditories perquè podeu rastrejar cada número d'un estat financer fins a l'assentament original ràpidament (especialment utilitzant la funcionalitat de desglossament de Fava).
  • Conserveu la còpia de seguretat de QuickBooks i els CSV exportats com a part del vostre rastre d'auditoria. Documenteu qualsevol ajust fet durant la migració (per exemple, "S'ha canviat el nom del compte X a Y per coherència" o "S'ha dividit la transacció Z en dos assentaments per claredat" si vau fer aquests canvis).
  • A partir d'ara, implementeu comprovacions regulars a Beancount. Per exemple, la conciliació mensual dels comptes bancaris i una asserció del seu saldo final ajuda a detectar qualsevol problema de dades o error en l'entrada. La migració ofereix una bona base; mantenir la disciplina en el nou sistema garantirà la precisió contínua.

Finalment, celebreu la finalització de la migració: heu transferit amb èxit cinc anys de dades comptables de QuickBooks a Beancount. Les dades es troben ara en un format de text lleuger, amb control de versions i amb integritat total de partida doble. Heu exportat les dades, les heu transformat amb scripts de Python, heu validat la integritat mitjançant balanços de comprovació i informes, i les heu consolidat en un llibre comptable de Beancount ben organitzat. Aquest procés exhaustiu assegura que el llibre comptable de Beancount sigui una rèplica precisa i fidel dels vostres llibres de QuickBooks durant el període de cinc anys, preparant-vos per a una comptabilitat simplificada en el futur.