Re: Kontenrahmen SKR, jetzt mit Beispiel

Christoph Franzen <christoph-/[email protected]>
Newsgroups gmane.comp.gnome.apps.gnucash.german
Organization Franzen
Message-ID <[email protected]>
Hallo zusammen, ich sehe das erst jetzt…

Am Fri, 1 Dec 2023 18:35:07 +0100 schrieb "jo.wetzig-S0/[email protected]"
<jo.wetzig-S0/[email protected]>:
> 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-/[email protected]"
 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-1SGGS//[email protected]
Formalia für GnuCash-Vorlagen: Frank H. Ellenberger 2009
Erweitert auf den Stand 2018: Christoph Franzen 2017-2018,
christoph-/[email protected]"
 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 <[email protected]>

 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-mXXj517/[email protected]
-->
<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

_______________________________________________
gnucash-de mailing list
[email protected]
https://lists.gnucash.org/mailman/listinfo/gnucash-de
signature.asc (application/pgp-signature, 819 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJltC1xAAoJEP0O2oBXmANfMpsP/RCMNAoK1KMmXUUKitzbGZoO
2K8Kbw7fSU7+pFAtto+lJhK9ZiSBORi4jFQ0jvaWtjkwhq3jHPC3egrRBGXuwhCo
amij5U0WvNqmKAt7USEG4S3xceN/lKNfedALkMA8nswp92f79KtYHk+UtyCZcyPS
bu0CU4MlmA00VHI7/zsqsHD7ZI2+DQTehZdO5ee+L8QGdcwjnN5S5bsdRyy+144Y
NHopZvxE9Xmf+Hx+wVJfMOOIvZO4bkhc8dakbHX671S9I7xsgVGFqHxVDUQUF9Lj
LCr12JDXYPz8TyKjvTouty88lhp/LJVO07hh/hvGk3INSY+xaGFtZN+zYsk9PUBy
CfvtgHzv+DamfSGZm+K9b2MkkVtaWmX46InLMQ2m2arEUuCAjL1aW6wQL2mcsD6O
SkN3sek9mpgrf2qGI8PDlfbJVeAutYcNUh22yoyATpm3Jr/a2+3M8PCdNPW43v+4
n80LYvPPIAU/zyBl8Rrd3PdT5fveIvlT7ilyyG+8fp1QP3y6jSqugIOcIapEytwC
wvqzsiVp8pZPZX/K6zfnoVz9cXKnAqtCr4ShCReo1f0T04dooDf8HLevu/YUaPgA
BnlounOoq/KrYQgcf2NkJEh9ouRPAjwRbDIzfJchKmI7DdxU3kZTLc6R1tGUh2lB
J2sWxKey94PTfZasFGRw
=b+MK
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.