Seit vielen Jahren benutze ich Gnucash für meine Buchhaltung. Neben einem angepassten Standardkontenrahmen sind auch Stammdaten wie Kunden und Lieferanten in Gnucash gepflegt, wodurch eine zeitsparende und effiziente Zuordnung von Buchungen möglich ist.
Problemstellung
Die Speicherung von Stammdaten und der beweglichen Daten wie Buchungen und Belege erfolgt in ein und derselben Datei. Aus Performancegründen initialisiere ich diese Datei im Rahmen des Jahresabschlusses neu. Dadurch gehen normalerweise auch die Stammdaten verloren, so dass sie neu angelegt werden müssten.
Lösung
Sofern kein anderes Backend benutzt wird, handelt es sich bei der GnuCash-Datei um eine per gzip gepackte XML-Datei. Diese kann an der Kommandozeile entpackt werden:
$ cp firma_2021.gnucash firma_2022.gnucash
$ gunzip -k -S .gnucash firma_2022.gnucash
Anschließend wird sie mit einem beliebigen Text-Editor (vorzugsweise mit XML-Syntax-Highlighting) bearbeitet. Dabei werden die Elemente innerhalb der Strukturelemente der beweglichen Daten entfernt. Die Elemente der Stammdaten bleiben unberührt.
$ micro firma_2022
Zu entfernen:
- <act:lot>-Elemente unterhalb <act:lots> in allen <gnc:account>-Elementen
- Alle <gnc:transaction>-Elemente
- Alle <gnc:GncEntry>-Elemente
- Alle <gnc:GncInvoice>-Elemente
Anschließend wird die Datei wieder mit gzip gepackt:
$ rm firma_2022.gnucash
$ gzip -k -S .gnucash firma_2022
Die GnuCash-Datei des Vorjahres ist nun bereit zur Nutzung im aktuellen Jahr.