Android Gnucash und Fremdwährungs-Buchungen

Ausgangslage: In der Android-App sind eine Reihe von Buchungen erfasst, in der eine Fremdwährung involviert ist. Folgende Konten sind betroffen:

  • Aktiva:Barvermögen:Bargeld – Fremdwährung
  • Aktiva:Barvermögen:Girokonto (in EUR)
  • mehrere Konten unterhalb der “Aufwendungen:” – Hierarchie in EUR

So gibt es Transaktionen zwischen dem Girokonto und dem Bargeld-Fremdwährungskonto und dem Bargeld-Fremdwährungskonto und den Aufwandskonten.

Problem: Es gibt keine Möglichkeit die Daten auf regulärem Weg in die Desktop-Anwendung zu importieren. Schlimmer: Es gibt nicht mal eine Möglichkeit diese Buchungen zwischen zwei Desktop-Gnucash-Instanzen auszutauschen.

Genauer:

  • Das QIF-Format kennt keine Währungen. Normalerweise enthält der QIF-Export der Android-App pro Währung eine QIF-Datei in der ZIP-Datei. Das geht aber nur bei Transaktionen zwischen Konten der gleichen Währung.
  • Die Android-App kann Gnucash-XML exportieren. Die Desktop-App kann diese Dateien zwar öffnen aber nicht in eine andere Instanz importieren.
  • Die Desktop-App kann Multi-Currency-Buchungen nach CSV exportieren, aber der CSV-Importer unterstützt dieses Format nicht.

Beispiel für eine einzelne Transaktion in XML:

<gnc:transaction version="2.0.0">
 <trn:id type="guid">d8e7acf6bd70465aa40718ab966495e3</trn:id>
 <trn:currency>
 <cmdty:space>ISO4217</cmdty:space>
 <cmdty:id>EUR</cmdty:id>
 </trn:currency>
 <trn:date-posted>
 <ts:date>2017-08-16 09:05:07 +0200</ts:date>
 </trn:date-posted>
 <trn:date-entered>
 <ts:date>2017-08-16 09:06:17 +0200</ts:date>
 </trn:date-entered>
 <trn:description>Bezahlung in EUR, Rückgeld 8 EUR in Rupiah</trn:description>
 <trn:slots />
 <trn:splits>
 <trn:split>
 <split:id type="guid">a2f01032eaca4025b8db15ab6be52d96</split:id>
 <split:reconciled-state>n</split:reconciled-state>
 <split:value>800/100</split:value>
 <split:quantity>12500000/100</split:quantity>
 <split:account type="guid">fa84a44e9205ea2f0b3900bd77c6c0a9</split:account>
 </trn:split>
 <trn:split>
 <split:id type="guid">b2e4aa2b016e4288b111917ee425fb8f</split:id>
 <split:reconciled-state>n</split:reconciled-state>
 <split:value>-800/100</split:value>
 <split:quantity>-800/100</split:quantity>
 <split:account type="guid">829aec415f8ce9bc10e8ecd274d04e30</split:account>
 </trn:split>
 </trn:splits>
</gnc:transaction>