[gnucash-de] Kontenrahmen SKR, jetzt mit Beispiel

Christoph Franzen christoph at alte-pflasterei.de
Fr Jan 26 17:08:40 EST 2024


Hallo zusammen, ich sehe das erst jetzt…

Am Fri, 1 Dec 2023 18:35:07 +0100 schrieb "jo.wetzig at web.de"
<jo.wetzig at web.de>:
> So anbei mal ein paar Links auf meinen Server mit dem SKR 97

Von mir ist der Kontenrahmen für die Wohnungswirtschaft und die
(nicht mehr ganz so) aktuelle Version des SKR 49 für gemeinnützige
Organisationen und Vereine.

Meine Vorgehensweise:
1) NICHT automatisierte Eingabe anhand der Datev-PDF-Dateien/anderer Quellen
2) Speichern als normale „leere“ Gnucash-Datei mit allen Konten OHNE Buchungen
3) Umwandlung von einer Gnucash-Datei *.gnucash/*.xac.gz in eine Vorlage

Für die Nicht-Automatisierung vom PDF zu Gnucash habe ich mich entschieden,
weil die Qualität des Ergebnisses deutlich schlechter würde.

So sind Datev-„Randbemerkungen“ gut als „Hierarchieebenen“ brauchbar
und man kann durch solche Ebenen beispielsweise die gesamten
„Umsatzsteuer-Unterbäume“ über nur wenige Eintragungen „ausblendbar“ machen.

Das bedingt aber, daß man viel von Hand vom PDF nach Gnucash kopieren muß.
Man könnte es auch „halbautomatisieren“ und danach noch anpassen.

Schritt 3) mache ich mit dem folgenden Skript, das als Eingabe „meine“ Namen nimmt,
unter dem die an den neuen Stand angepaßten leeren Kontenrahmen gespeichert sind.
Die Pfade und Beschreibungstexte stehen „hart“ im Skript,
müssen also auf neue Versionen und die lokale Verzeichnisstruktur angepaßt werden.

###########################
# /usr/local/bin/gnc2xea.sh
###########################
#!/bin/sh
LOC="/usr/local"
ENTW="$LOC/Archiv/Eigenentwicklungen/Kontenrahmen"
BAK=`date +%Y%j%H%M%S`
for D in $@
do
 KRXEA="$ENTW/$D.xea"
 if [ "$D" = "KRI" ]
 then
  KRXAC="$ENTW/$D.xac.gz"
  TITLE="Kontenrahmen für die Wohnungswirtschaft"
  SHORT="Kontenrahmen für die Immobilienwirtschaft (Stand 2012)"
  LONG="Kontenrahmen für die Wohnungswirtschaft nach GdW / Hammonia
Verlag (jetzt Haufe), Stand 2012 Hinweise zur Verwendung:
https://wiki.gnucash.org/wiki/De/Wohnungswirtschaft Ersteller:
Christoph Franzen, christoph at alte-pflasterei.de"
 elif [ "$D" = "SKR49" ]
 then
  KRXAC="$ENTW/$D.gnucash"
  TITLE="Kontenrahmen SKR49 für Vereine, Stiftungen, gGmbHs"
  SHORT="Datev-Kontenrahmen SKR49 für Vereine, Stiftungen und
gemeinnützige GmbHs"
  LONG="Ein Kontenrahmen für Vereine nach dem SKR49 der Datev

Bei Gebrauch dieses Kontenrahmens sind die allgemeinen Konten
abzuwählen. An dem Rahmen sind selbstverständlich noch Anpassungen
erforderlich, bis man den seinen Bedürfnissen entsprechenden Kontenplan
hat. Hinweise zur Verwendung: https://wiki.gnucash.org/wiki/De/SKR49

Ersteller: Michael Braun 2009, michael-developer at fami-braun.de
Formalia für GnuCash-Vorlagen: Frank H. Ellenberger 2009
Erweitert auf den Stand 2018: Christoph Franzen 2017-2018,
christoph at alte-pflasterei.de"
 else
  exit 
 fi
done
mv "$KRXEA.gz" "$KRXEA.$BAK.gz"
gunzip -c $KRXAC | xsltproc --stringparam title "$TITLE" --stringparam
short-description "$SHORT" --stringparam long-description "$LONG" "$LOC/etc/gnc2xea.xsl" - | sed -e "s/act:id type=\"guid/act:id type=\"new/g" > "$KRXEA.tmp" sed -e "s/slot xmlns=\"\"/slot/g" < "$KRXEA.tmp" > "$KRXEA"
gzip -N9 "$KRXEA"
###########################

Grundstruktur:
A) Befüllen von Variablennamen mit den Beschreibungstexten für die Anwender
   und dem einzulesenden Dateinamen, sowie Datum/Zeit von „jetzt“.
B) Die vorherige Version der Zieldatei umbenennen
   (Sicherheitskopie der alten Kontenrahmen-Vorlage behalten)
C) Entpacken der Gnucash-Quelldatei und bearbeiten mit „xsltproc“ und „sed“,
   um diese in eine Kontenrahmen-Vorlage umzuwandeln.
D) Einpacken der XML-Datei mit „gzip“.

Das war nicht zur Veröffentlichung gedacht,
ist also alles andere als „allgemeingültig“,
es sollte grundsätzlich auf jedem Linux laufen,
das „xsltproc“ installiert hat, der Rest der Programme sollte immer da sein.
Den Quelltext oben könnt Ihr als gemeinfrei ansehen, also damit machen, was Ihr wollt.

Die folgende „Umwandlungsvorschrift“ wird auch benötigt
(nicht von mir, unter „Copyleft“!):

###########################
# gnc2xea.xsl
###########################
<?xml version="1.0" encoding="utf-8"?>
<!--
 gnc2xea.xsl: an XSLT style sheet to create an account
 hierarchy template from an (uncompressed) GnuCash file.

 Copyright (C) 2011 Florian Haas <f.g.haas at gmx.net>

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation; either version 2 of
 the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, contact:

 Free Software Foundation           Voice:  +1-617-542-5942
 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652
 Boston, MA  02110-1301,  USA       gnu at gnu.org
-->
<xsl:stylesheet version="1.0" 
                xmlns="http://www.gnucash.org/XML/"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:act="http://www.gnucash.org/XML/act"
                xmlns:addr="http://www.gnucash.org/XML/addr"
                xmlns:bgt="http://www.gnucash.org/XML/bgt"
                xmlns:billterm="http://www.gnucash.org/XML/billterm"
                xmlns:book="http://www.gnucash.org/XML/book"
                xmlns:bt-days="http://www.gnucash.org/XML/bt-days"
                xmlns:bt-prox="http://www.gnucash.org/XML/bt-prox"
                xmlns:cd="http://www.gnucash.org/XML/cd"
                xmlns:cmdty="http://www.gnucash.org/XML/cmdty"
                xmlns:cust="http://www.gnucash.org/XML/cust"
                xmlns:employee="http://www.gnucash.org/XML/employee"
                xmlns:entry="http://www.gnucash.org/XML/entry"
                xmlns:fs="http://www.gnucash.org/XML/fs"
                xmlns:gnc="http://www.gnucash.org/XML/gnc"
                xmlns:gnc-act="http://www.gnucash.org/XML/gnc-act"
                xmlns:invoice="http://www.gnucash.org/XML/invoice"
                xmlns:job="http://www.gnucash.org/XML/job"
                xmlns:lot="http://www.gnucash.org/XML/lot"
                xmlns:order="http://www.gnucash.org/XML/order"
                xmlns:owner="http://www.gnucash.org/XML/owner"
                xmlns:price="http://www.gnucash.org/XML/price"
                xmlns:recurrence="http://www.gnucash.org/XML/recurrence"
                xmlns:slot="http://www.gnucash.org/XML/slot"
                xmlns:split="http://www.gnucash.org/XML/split"
                xmlns:sx="http://www.gnucash.org/XML/sx"
                xmlns:taxtable="http://www.gnucash.org/XML/taxtable"
                xmlns:trn="http://www.gnucash.org/XML/trn"
                xmlns:ts="http://www.gnucash.org/XML/ts"
                xmlns:tte="http://www.gnucash.org/XML/tte"
                xmlns:vendor="http://www.gnucash.org/XML/vendor">
  <xsl:output method="xml" encoding="utf-8" indent="yes"/>

  <xsl:param name="title">
    <xsl:message>Please set a title for your account hierarchy by passing in the "title" parameter.</xsl:message>
  </xsl:param>
  <xsl:param name="short-description">
    <xsl:message>Please set a short description for your account hierarchy by passing in the "short-description" parameter.</xsl:message>
  </xsl:param>
  
  <xsl:param name="long-description">
    <xsl:message>Please set a long description for your account hierarchy by passing in the "long-description" parameter.</xsl:message>
  </xsl:param>

  <xsl:template match="/">
    <gnc-account-example>
      <gnc-act:title>
        <xsl:value-of select="$title"/>
      </gnc-act:title>
      <gnc-act:short-description>
        <xsl:value-of select="$short-description"/>
      </gnc-act:short-description>
      <gnc-act:long-description>
        <xsl:value-of select="$long-description"/>
      </gnc-act:long-description>
      <gnc-act:exclude-from-select-all>1</gnc-act:exclude-from-select-all>
      <xsl:apply-templates/>
    </gnc-account-example>
  </xsl:template>

  <xsl:template match="gnc-v2|gnc:book">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="gnc:account">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="*"/>

</xsl:stylesheet>
###########################

Es wird eine Zieldatei geschrieben, die man zur Veröffentlichung
zusammen mit Gnucash und vermutlich Kmymoney direkt verwenden kann.

Eventuelle Fragen bitte in die Liste,
bitte vorher die Wiki-Seiten lesen,
auf die im Quelltext oben verwiesen wird!
Von dort aus gibt es im Wiki auch Querverweise.

Grüße, Christoph
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 819 bytes
Beschreibung: Digitale Signatur von OpenPGP
URL         : <http://lists.gnucash.org/pipermail/gnucash-de/attachments/20240126/be0fd915/attachment.sig>


Mehr Informationen über die Mailingliste gnucash-de