Dokumentation: Rechtschreibung/Grammatik Artikelklassifizierung u. miniDMS
[kivitendo-erp.git] / doc / dokumentation.xml
index 46aee3c..8b05300 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <book id="kivitendo-documentation" lang="de">
-  <title>kivitendo 3.4.0: Installation, Konfiguration, Entwicklung</title>
+  <title>kivitendo 3.5.0: Installation, Konfiguration, Entwicklung</title>
 
   <chapter id="Aktuelle-Hinweise">
     <title>Aktuelle Hinweise</title>
         <title>Benötigte Perl-Pakete installieren</title>
 
         <para>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
-        Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.4)
-        benötigt.</para>
+        Apache) und ein Datenbankserver (PostgreSQL) in einer aktuellen Version
+        (s.a. Liste der unterstützten Betriebssysteme) benötigt.</para>
 
         <para>Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht
         Bestandteil einer Standard-Perl-Installation sind. Um zu überprüfen,
             <para><literal>File::Copy::Recursive</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>File::MimeInfo</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>GD</literal></para>
           </listitem>
             <para><literal>Text::Iconv</literal></para>
           </listitem>
 
+           <listitem>
+            <para><literal>Text::Unidecode</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>URI</literal></para>
           </listitem>
             <para><literal>YAML</literal></para>
           </listitem>
         </itemizedlist>
+        <para>Seit Version größer v3.5.0 sind die folgenden Pakete hinzugekommen:
+        <literal>Text::Unidecode</literal></para>
 
         <para>Seit Version v3.4.0 sind die folgenden Pakete hinzugekommen:
         <literal>Algorithm::CheckDigits</literal><literal>PBKDF2::Tiny</literal></para>
           Perl-Pakete als Debian-Pakete zur Verfügung. Sie können mit
           folgendem Befehl installiert werden:</para>
 
-          <programlisting>apt-get install apache2 libarchive-zip-perl libclone-perl \
+          <programlisting>apt install  apache2 libarchive-zip-perl libclone-perl \
   libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
   libemail-address-perl  libemail-mime-perl libfcgi-perl libjson-perl \
   liblist-moreutils-perl libnet-smtp-ssl-perl libnet-sslglue-perl \
   libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl \
   libimage-info-perl libgd-gd2-perl libapache2-mod-fcgid \
   libfile-copy-recursive-perl postgresql libalgorithm-checkdigits-perl \
-  libcrypt-pbkdf2-perl git
+  libcrypt-pbkdf2-perl git libcgi-pm-perl libtext-unidecode-perl
 </programlisting>
 
           <para>Für das Paket HTML::Restrict gibt es kein Debian-Paket, dies
@@ -418,6 +428,27 @@ cpan HTML::Restrict</programlisting>
           <programlisting>cpan Rose::Db::Object</programlisting>
         </sect3>
       </sect2>
+      <sect2>
+        <title>Andere Pakete installieren</title>
+
+        <para>Seit Version v3.4.0 wird für den Bankimport optional das Paket
+        'aqbanking-tools' benötigt.</para>
+
+        <para>Debian und Ubuntu: <programlisting>apt install aqbanking-tools
+        </programlisting></para>
+
+        <para>OpenSuSE: <programlisting>zypper install aqbanking-tools</programlisting></para>
+
+        <para>Seit Version v3.4.1 wird generell zum Feststellen der
+        Seitenanzahl von PDF_Dokumenten 'pdfinfo' benötigt was im Paket
+        'poppler-utils' enthalten ist.</para>
+
+        <para>Debian und Ubuntu: <programlisting>apt install poppler-utils
+        </programlisting></para>
+
+        <para>OpenSuSE: <programlisting>zypper install poppler-tools</programlisting></para>
+      </sect2>
+
     </sect1>
 
     <sect1 id="Manuelle-Installation-des-Programmpaketes"
@@ -430,14 +461,14 @@ cpan HTML::Restrict</programlisting>
       heruntergeladen werden.</para>
 
       <para>Die kivitendo ERP Installationsdatei
-      (<filename>kivitendo-erp-3.4.0.tgz</filename>) wird im
+      (<filename>kivitendo-erp-3.4.1.tgz</filename>) wird im
       Dokumentenverzeichnis des Webservers (z.B.
       <filename>/var/www/html/</filename>,
       <filename>/srv/www/htdocs</filename> oder
       <filename>/var/www/</filename>) entpackt:</para>
 
       <programlisting>cd /var/www
-tar xvzf kivitendo-erp-3.4.0.tgz</programlisting>
+tar xvzf kivitendo-erp-3.4.1.tgz</programlisting>
 
       <para>Wechseln Sie in das entpackte Verzeichnis:</para>
 
@@ -477,16 +508,45 @@ tar xvzf kivitendo-erp-3.4.0.tgz</programlisting>
         <para>Wir empfehlen eine Installation mittels des Versionsmanagager
         git. Hierfür muss ein git-Client installiert sein. Damit ist man sehr
         viel flexibler für zukünftige Upgrades. Installations-Anleitung (bitte
-        die Pfade anpassen) bspw. wie folgt: <programlisting>cd /usr/local/src/
+        die Pfade anpassen) bspw. wie folgt: <programlisting>cd /var/www/
 git clone https://github.com/kivitendo/kivitendo-erp.git
 cd kivitendo-erp/
 git checkout `git tag -l | egrep -ve "(beta|rc)" | tail -1`</programlisting>
+        Erläuterung: Der Befehl wechselt zur letzten Stable-Version (git tag -l listet
+       alle Tags auf, das egrep schmeisst alle Einträge mit beta oder rc raus und
+       das tail gibt davon den obersten Treffer zurück).
+
         Sehr sinnvoll ist es, direkt im Anschluss einen eigenen Branch zu
         erzeugen, um bspw. seine eigenen Druckvorlagen-Anpassungen damit zu
         verwalten. Hierfür reicht ein simples <programlisting>  git checkout -b meine_eigenen_änderungen</programlisting>
         nach dem letzten Kommando (weiterführende Informationen <ulink
-        url="http://git-scm.com/book/en/v2/Getting-Started-Git-Basics">getting
-        started with git</ulink>).</para>
+        url="http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html">
+        Git Magic</ulink>).</para>
+
+<para>
+        Ein beispielhafter Workflow für Druckvorlagen-Anpassungen von 3.4.1 nach 3.5:
+        <programlisting>
+$ git clone https://github.com/kivitendo/kivitendo-erp.git
+$ cd kivitendo-erp/
+$ git checkout release-3.4.1     # das ist der aktuelle release, den wir wollen
+$ git add templates/fullhouse    # das sind unsere druckvorlagen inkl. produktbilder
+$ git commit -m "juhu tolle ändernungen"
+[meine_aenderungen 1d89e41] juhu tolle ändernungen
+ 4 files changed, 380 insertions(+)
+ create mode 100644 templates/fullhouse/img/webdav/tesla.png
+ create mode 100644 templates/fullhouse/mahnung.tex
+ create mode 100644 templates/fullhouse/zahlungserinnerung_zwei.tex
+ create mode 100644 templates/fullhouse/zahlungserinnerung_zwei_invoice.tex
+
+# 5 Jahre später ...
+
+$ git fetch
+$ git rebase --onto release-3.5.0 release-3.4.1 meine_aenderungen
+Zunächst wird der Branch zurückgespult, um Ihre Änderungen
+darauf neu anzuwenden ...
+Wende an: juhu tolle ändernungen
+$ service apache2 restart
+</programlisting></para>
       </note>
     </sect1>
 
@@ -617,7 +677,34 @@ host     = localhost
 port     = 5432
 db       = kivitendo_auth
 user     = postgres
-password =</programlisting>
+password =
+
+[system]
+default_manager = german</programlisting>
+
+               <para>Für kivitendo Installationen in der Schweiz sollte hier <varname>german</varname>
+               durch <varname>swiss</varname> ersetzt werden.</para>
+               <para>Die Einstellung <varname>default_manager = swiss</varname> bewirkt:</para>
+               <itemizedlist>
+            <listitem>
+              <para>Beim Erstellen einer neuen Datenbank in der kivitendo Administration
+              werden automatisch die Standard-Werte für die Schweiz voreingestellt:
+              Währung CHF, 5er-Rundung, Schweizer KMU-Kontenplan, Sollversteuerung,
+              Aufwandsmethode, Bilanzierung (die Werte können aber manuell angepasst werden).</para>
+                       </listitem>
+                       <listitem>
+                               <para>Einstellen der Standardkonten für Rundungserträge und -aufwendungen
+                       (unter Mandantenkonfiguration → Standardkonten veränderbar)</para>
+                       </listitem>
+                       <listitem>
+                               <para>das verwendete Zahlenformat wird auf <varname>1'000.00</varname> eingestellt
+                                (unter Programm → Benutzereinstellungen veränderbar)</para>
+                       </listitem>
+                       <listitem>
+                               <para>DATEV-Automatik und UStVA werden nicht angezeigt, Erfolgsrechnung
+                               ersetzt GUV ( unter Mandantenkonfiguration → Features veränderbar)</para>
+                       </listitem>
+               </itemizedlist>
 
         <para>Nutzt man wiederkehrende Rechnungen, kann man unter
         <varname>[periodic_invoices]</varname> den Login eines Benutzers
@@ -791,8 +878,7 @@ Alias /kivitendo-erp/ /var/www/kivitendo-erp/
 &lt;/Directory&gt;
 
 &lt;Directory /var/www/kivitendo-erp/users&gt;
- Order Deny,Allow
- Deny from All
+ Require all granted
 &lt;/Directory&gt;</programlisting>
 
         <para>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
@@ -927,7 +1013,7 @@ Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
 &lt;/Directory&gt;
 
 &lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
-Require all granted
+Require all denied
 &lt;/DirectoryMatch&gt;</programlisting>
 
           <warning>
@@ -942,6 +1028,17 @@ Require all granted
             <programlisting>
   Order Allow,Deny
   Allow from All </programlisting>
+
+            <para>und statt</para>
+
+            <programlisting>Require all denied</programlisting>
+
+            <para>muss stehen:</para>
+
+            <programlisting>
+  Order Deny,Allow
+  Deny from All </programlisting>
+
           </warning>
 
           <para>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
@@ -1001,7 +1098,9 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
         Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser
         Anleitung, hier ein Hinweis auf einen entsprechenden <ulink
         url="http://redmine.kivitendo-premium.de/boards/1/topics/142">Foreneintrag
-        (Stand Sept. 2015)</ulink></para>
+        (Stand Sept. 2015)</ulink> und einen aktuellen (Stand Mai 2017)
+        <ulink url="https://mozilla.github.io/server-side-tls/ssl-config-generator/">
+        SSL-Konfigurations-Generator</ulink>.</para>
       </sect2>
     </sect1>
 
@@ -1022,6 +1121,13 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
       Servers integriert werden muss, damit er automatisch gestartet wird.
       Dies kann kivitendo nicht für Sie erledigen.</para>
 
+      <para>Da der Taskserver als Perlscript läuft, wird Arbeitsspeicher,
+      der einmal benötigt wurde, nicht mehr an das Betriebssystem zurückgegeben,
+      solange der Taskserver läuft. Dies kann dazu führen, dass ein länger
+      laufender Taskserver mit der Zeit immer mehr Arbeitsspeicher für sich
+      beansprucht. Es ist deshalb sinnvoll, dass der Taskserver in regelmässigen
+      Abständen neu gestartet wird.</para>
+
       <sect2 id="Konfiguration-des-Task-Servers">
         <title>Verfügbare und notwendige Konfigurationsoptionen</title>
 
@@ -1085,7 +1191,7 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
         anstelle eines symbolischen Links verwendet werden können.</para>
 
         <sect3>
-          <title>SystemV-basierende Systeme (z.B. Debian, ältere OpenSUSE,
+          <title>SystemV-basierende Systeme (z.B. ältere Debian, ältere OpenSUSE,
           ältere Fedora)</title>
 
           <para>Kopieren Sie die Datei
@@ -1100,7 +1206,6 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
               <para>Debian-basierende Systeme:</para>
 
               <programlisting>update-rc.d kivitendo-task-server defaults
-# Nur bei Debian Squeeze und neuer:
 insserv kivitendo-task-server</programlisting>
             </listitem>
 
@@ -1133,24 +1238,21 @@ insserv kivitendo-task-server</programlisting>
         </sect3>
 
         <sect3>
-          <title>systemd-basierende Systeme (z.B. neure OpenSUSE, neuere
-          Fedora, neuere Ubuntu)</title>
+          <title>systemd-basierende Systeme (z.B. neure openSUSE, neuere
+          Fedora, neuere Ubuntu und neuere Debians)</title>
 
-          <para>Verlinken Sie die Datei
-          <filename>scripts/boot/systemd/kivitendo-task-server.service</filename>
-          nach <filename>/etc/systemd/system/</filename>. Passen Sie in der
-          kopierten Datei den Pfad zum Task-Server an (Zeile
-          <literal>ExecStart=....</literal> und
-          <literal>ExecStop=...</literal>). Binden Sie das Script in den
-          Boot-Prozess ein.</para>
+          <para>Kopieren Sie die Datei <filename>scripts/boot/systemd/kivitendo-task-server.service</filename> nach
+          <filename>/etc/systemd/system/</filename>. Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeilen
+          <literal>ExecStart=....</literal> und <literal>ExecStop=...</literal>).</para>
 
-          <para>Alle hierzu benötigten Befehle sehen so aus:</para>
+          <para>Machen Sie anschließend das Script systemd bekannt, und binden Sie es in den Boot-Prozess ein. Dazu führen Sie die folgenden
+          Befehl aus:</para>
 
-          <programlisting>cd /var/www/kivitendo-erp/scripts/boot/systemd
-ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
+          <programlisting>systemctl daemon-reload
+systemctl enable kivitendo-task-server.service</programlisting>
 
-          <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet
-          werden:</para>
+          <para>Wenn Sie den Task-Server jetzt sofort starten möchten, anstatt den Server neu zu starten, so können Sie das mit dem
+          folgenden Befehl tun:</para>
 
           <programlisting>systemctl start kivitendo-task-server.service</programlisting>
         </sect3>
@@ -1755,7 +1857,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       debianoiden Betriebssystemen installiert man die Pakete mit:</para>
 
       <para><programlisting>apt-get install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
-  exlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
+  texlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
 
       <para>Für Fedora benötigen Sie die folgenden Pakete:</para>
 
@@ -2132,15 +2234,34 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         und nicht nur Teile davon, da dies sonst oft zu einer odt-Datei führt,
         die vom Parser nicht korrekt gelesen werden kann.</para>
 
-        <para>Zur Zeit gibt es in kivitendo noch keine Möglichkeit,
-        odt-Vorlagen bei Mahnungen einzusetzen. Entsprechende Vorlagen sind
-        deshalb nicht vorhanden.</para>
+        <para>Mahnungen können unter folgenden Einschränkungen mit den odt-Vorlagen
+        im Vorlagensatz rev-odt erzeugt werden:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>als Druckoption steht nur 'PDF(OpenDocument/OASIS)' zur
+            Verfügung, das heisst, die Mahnungen werden als PDF-Datei ausgegeben.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>für jede Rechnung muss eine eigene Mahnung erzeugt werden
+            (auch wenn bei einzelnen KundInnen mehrere überfällige Rechnungen
+            vorhanden sind).</para>
+          </listitem>
+        </itemizedlist>
 
-        <para>Inwieweit es möglich ist, für die in Version 3.2.0 neu
-        eingeführten Pflichtenhefte odt-Vorlagen zu erstellen, sind wir am
-        abklären. Wenn dies möglich ist, werden wir in Zukunft auch eine
-        odt-Vorlage für Pflichtenhefte in diesem Vorlagensatz zur Verfügung
-        stellen.</para>
+        <para>Mehrere Mahnungen für eine Kundin / einen Kunden werden zu einer
+        PDF-Datei zusammengefasst</para>
+
+        <para>Die Vorlagen zahlungserinnerung.odt sowie mahnung.odt sind für das
+        Erstellen einer Zahlungserinnerung bzw. Mahnung selbst vorgesehen, die
+        Vorlage mahnung_invoice.odt für das Erstellen einer Rechnung über die
+        verrechneten Mahngebühren und Verzugszinsen.</para>
+
+        <para>Zur Zeit gibt es in kivitendo noch keine Möglichkeit,
+        odt-Vorlagen bei Briefen und Pflichtenheften einzusetzen.
+        Entsprechende Vorlagen sind deshalb nicht vorhanden.</para>
 
         <para>Fehlermeldungen, Anregungen und Wünsche bitte senden an:
         empfang@revamp-it.ch</para>
@@ -2237,7 +2358,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       <title>OpenDocument-Vorlagen</title>
 
       <para>kivitendo unterstützt die Verwendung von Vorlagen im
-      OpenDocument-Format, wie es OpenOffice.org ab Version 2 erzeugt.
+      OpenDocument-Format, wie es LibreOffice oder OpenOffice (ab Version 2) erzeugen.
       kivitendo kann dabei sowohl neue OpenDocument-Dokumente als auch aus
       diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
       OpenDocument-Vorlagen zu aktivieren muss in der Datei
@@ -2248,33 +2369,38 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
       <para>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
       weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
-      OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss
-      neben OpenOffice.org ab Version 2 auch der “X virtual frame buffer”
+      LibreOffice oder OpenOffice benötigt. Soll dieses Feature genutzt werden, so muss
+      neben LibreOffice oder OpenOffice auch der “X virtual frame buffer”
       (xvfb) installiert werden. Bei Debian ist er im Paket “xvfb” enthalten.
       Andere Distributionen enthalten ihn in anderen Paketen.</para>
 
       <para>Nach der Installation müssen in der Datei
-      <filename>config/kivitendo.conf</filename> zwei weitere Variablen
-      angepasst werden: <literal>openofficeorg_writer</literal> muss den
-      vollständigen Pfad zur OpenOffice.org Writer-Anwendung enthalten.
-      <literal>xvfb</literal> muss den Pfad zum “X virtual frame buffer”
-      enthalten. Beide stehen im Abschnitt
-      <literal>applications</literal>.</para>
+      <filename>config/kivitendo.conf</filename> im Abschnitt
+      <literal>applications</literal> zwei weitere Variablen
+      angepasst werden:</para>
+      <para><literal>openofficeorg_writer</literal> muss den
+      vollständigen Pfad zu LibreOffice oder OpenOffice enthalten.
+      Dabei dürfen keine Anführungszeichen eingesetzt werden.</para>
+      <para>Beispiel für Debian oder Ubuntu:</para>
+      <programlisting>openofficeorg_writer = /usr/bin/libreoffice</programlisting>
+      <para><literal>xvfb</literal> muss den Pfad zum “X virtual frame buffer”
+      enthalten.</para>
 
       <para>Zusätzlich gibt es zwei verschiedene Arten, wie kivitendo mit
-      OpenOffice kommuniziert. Die erste Variante, die benutzt wird, wenn die
-      Variable <literal>$openofficeorg_daemon</literal> gesetzt ist, startet
-      ein OpenOffice, das auch nach der Umwandlung des Dokumentes gestartet
-      bleibt. Bei weiteren Umwandlungen wird dann diese laufende Instanz
-      benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung deutlich
-      reduziert wird, weil nicht für jedes Dokument ein OpenOffice gestartet
-      werden muss. Der Nachteil ist, dass diese Methode Python und die
-      Python-UNO-Bindings benötigt, die Bestandteil von OpenOffice 2
-      sind.</para>
+      LibreOffice bzw. OpenOffice kommuniziert. Die erste Variante, die benutzt
+      wird, wenn die Variable <literal>$openofficeorg_daemon</literal> gesetzt
+      ist, startet ein LibreOffice oder OpenOffice, das auch nach der Umwandlung
+      des Dokumentes gestartet bleibt. Bei weiteren Umwandlungen wird dann diese
+      laufende Instanz benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung
+      deutlich reduziert wird, weil nicht für jedes Dokument ein LibreOffice bzw.
+      OpenOffice gestartet werden muss. Der Nachteil ist, dass diese Methode
+      Python und die Python-UNO-Bindings benötigt, die Bestandteil von LibreOffice
+      bzw. OpenOffice sind.</para>
 
       <note>
-        <para>Für die Verbindung zu OpenOffice wird normalerweise der
-        Python-Interpreter <filename>/usr/bin/python</filename> benutzt.
+        <para>Für die Verbindung zu LibreOffice bzw. OpenOffice wird
+        normalerweise der Python-Interpreter
+        <filename>/usr/bin/python</filename> benutzt.
         Sollte dies nicht der richtige sein, so kann man mit zwei
         Konfigurationsvariablen entscheiden, welcher Python-Interpreter
         genutzt wird. Mit der Option <literal>python_uno</literal> aus dem
@@ -2284,8 +2410,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
         <para>Zusätzlich ist es möglich, Pfade anzugeben, in denen Python
         neben seinen normalen Suchpfaden ebenfalls nach Modulen gesucht wird,
-        z.B. falls sich diese in einem gesonderten OpenOffice-Verzeichnis
-        befinden. Diese zweite Variable heißt
+        z.B. falls sich diese in einem gesonderten LibreOffice- bzw.
+        OpenOffice-Verzeichnis befinden. Diese zweite Variable heißt
         <literal>python_uno_path</literal> und befindet sich im Abschnitt
         <literal>environment</literal>. Sie ist standardmäßig leer. Werden
         hier mehrere Pfade angegeben, so müssen diese durch Doppelpunkte
@@ -2295,31 +2421,27 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       </note>
 
       <para>Ist <literal>$openofficeorg_daemon</literal> nicht gesetzt, so
-      wird für jedes Dokument OpenOffice neu gestartet und die Konvertierung
-      mit Hilfe eines Makros durchgeführt. Dieses Makro muss in der
-      Dokumentenvorlage enthalten sein und
+      wird für jedes Dokument LibreOffice bzw. OpenOffice neu gestartet
+      und die Konvertierung mit Hilfe eines Makros durchgeführt. Dieses
+      Makro muss in der Dokumentenvorlage enthalten sein und
       “Standard.Conversion.ConvertSelfToPDF()” heißen. Die Beispielvorlage
-      ‘<literal>templates/mastertemplates/German/invoice.odt</literal>’
+      ‘<literal>templates/print/rev-odt/invoice.odt</literal>’
       enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
       ebenfalls enthalten sein muss.</para>
 
       <para>Als letztes muss herausgefunden werden, welchen Namen
-      OpenOffice.org Writer dem Verzeichnis mit den Benutzereinstellungen
+      OpenOffice bzw. LibreOffice dem Verzeichnis mit den Benutzereinstellungen
       gibt. Unter Debian ist dies momentan
-      <literal>~/.openoffice.org2</literal>. Sollte der Name bei Ihrer
-      OpenOffice.org-Installation anders sein, so muss das Verzeichnis
-      <literal>users/.openoffice.org2</literal> entsprechend umbenannt werden.
-      Ist der Name z.B. einfach nur <literal>.openoffice</literal>, so wäre
-      folgender Befehl auszuführen:</para>
-
-      <para><literal>mv users/.openoffice.org2
-      users/.openoffice</literal></para>
+      <literal>~/.config/libreoffice</literal>. kivitendo verwendet das
+      Verzeichnis <literal>users/.openoffice.org2</literal>.
+      Eventuell muss dieses Verzeichnis umbenannt werden.</para>
 
       <para>Dieses Verzeichnis, wie auch das komplette
       <literal>users</literal>-Verzeichnis, muss vom Webserver beschreibbar
       sein. Dieses wurde bereits erledigt (siehe <xref
-      linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber erneut
-      überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</para>
+      linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber
+      erneut überprüft werden, wenn die Konvertierung nach PDF
+      fehlschlägt.</para>
 
       <sect2>
         <title>OpenDocument (odt) Druckvorlagen mit Makros</title>
@@ -2352,7 +2474,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
           <itemizedlist>
             <listitem>
-              <para>Druckeradministration -&gt; Drucker hinzufügen</para>
+              <para>Druckeradministration  Drucker hinzufügen</para>
             </listitem>
 
             <listitem>
@@ -2360,19 +2482,19 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
             </listitem>
 
             <listitem>
-              <para>Druckerbeschreibung -&gt; aussagekräftiger Text: wird in
+              <para>Druckerbeschreibung  aussagekräftiger Text: wird in
               der Auftrags- bzw. Rechnungsmaske als Auswahl angezeigt (z.B.
               mit Einzahlungsschein Bank xy)</para>
             </listitem>
 
             <listitem>
-              <para>Druckbefehl -&gt; beliebiger Text (hat für das Erzeugen
+              <para>Druckbefehl  beliebiger Text (hat für das Erzeugen
               von Aufträgen oder Rechnungen als odt-Datei keine Bedeutung,
               darf aber nicht leer sein)</para>
             </listitem>
 
             <listitem>
-              <para>Vorlagenkürzel -&gt; besr bzw. selbst gewähltes
+              <para>Vorlagenkürzel  besr bzw. selbst gewähltes
               Vorlagensuffix (muss genau der Zeichenfolge entsprechen, die
               zwischen "invoice_" bzw. "sales_order_" und ".odt"
               steht.)</para>
@@ -2394,25 +2516,25 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
           <itemizedlist>
             <listitem>
-              <para>Programm -&gt; Benutzereinstellungen -&gt;
+              <para>Programm → Benutzereinstellungen →
               Druckoptionen</para>
             </listitem>
 
             <listitem>
-              <para>Standardvorlagenformat -&gt; OpenDocument/OASIS</para>
+              <para>Standardvorlagenformat  OpenDocument/OASIS</para>
             </listitem>
 
             <listitem>
-              <para>Standardausgabekanal -&gt; Bildschirm</para>
+              <para>Standardausgabekanal  Bildschirm</para>
             </listitem>
 
             <listitem>
-              <para>Standarddrucker -&gt; gewünschte Druckerbeschreibung
+              <para>Standarddrucker  gewünschte Druckerbeschreibung
               auswählen (z.B. mit Einzahlungsschein Bank xy)</para>
             </listitem>
 
             <listitem>
-              <para>Anzahl Kopien -&gt; leer</para>
+              <para>Anzahl Kopien  leer</para>
             </listitem>
 
             <listitem>
@@ -2482,6 +2604,10 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
                     <para>DDDBETRAG: &lt;%total%&gt; Einzahlungsbetrag oder 0,
                     falls Einzahlungsschein ohne Betrag</para>
                   </listitem>
+
+                  <listitem>
+                                       <para>DDDEND: muss am Ende der Zeile vorhanden sein</para>
+                                 </listitem>
                 </itemizedlist></para>
             </listitem>
 
@@ -2529,7 +2655,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
           <itemizedlist>
             <listitem>
-              <para>Extras -&gt; Optionen -&gt; Sicherheit -&gt;
+              <para>Extras → Optionen → Sicherheit →
               Makrosicherheit</para>
             </listitem>
 
@@ -2556,6 +2682,53 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       </sect2>
     </sect1>
 
+    <sect1 id="nomenclature">
+      <title>Nomenklatur</title>
+
+      <sect2 id="booking.dates">
+        <title>Datum bei Buchungen</title>
+
+        <para>Seit der Version 3.5 werden für Buchungen in kivitendo einheitlich
+        folgende Bezeichnungen verwendet:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><option>Erfassungsdatum</option> (en: <option>Entry Date</option>,
+            code: <option>Gldate</option>)</para>
+
+            <para>bezeichnet das Datum, an dem die Buchung in kivitendo erfasst wurde.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para><option>Buchungsdatum</option> (en: <option>Booking Date</option>,
+            code: <option>Transdate</option>)</para>
+
+            <para>bezeichnet das buchhaltungstechnisch für eine Buchung relevante
+            Datum</para>
+
+            <para>Das <option>Rechnungsdatum</option> bei Verkaufs- und
+            Einkaufsrechnungen entspricht dem Buchungsdatum. Das heisst, in
+            Berichten wie dem Buchungsjournal, in denen eine Spalte
+            <option>Buchungsdatum</option> angezeigt werden kann, erscheint hier
+            im Fall von Rechnungen das Rechnungsdatum.</para>
+          </listitem>
+
+          <listitem>
+            <para>Bezieht sich ein verbuchter Beleg auf einen Zeitpunkt, der nicht mit
+            dem Buchungsdatum übereinstimmt, so kann dieses Datum momentan in kivitendo
+            nur unter Bemerkungen erfasst werden.</para>
+
+            <para>Möglicherweise wird für solche Fälle in einer späteren Version von
+            kivitendo ein dritter Datumswert für Buchungen erstellt. (Beispiel:
+            Einkaufsbeleg stammt aus einem früheren Jahr, das bereits
+            buchhaltungstechnisch abgeschlossen wurde, und muss deshalb später
+            verbucht werden.)</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+    </sect1>
+
     <sect1 id="config.eur">
       <title>Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
       EUR</title>
@@ -2640,13 +2813,30 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         der Admininstration können diese Optionen nun unabhängig voneinander
         eingestellt werden.</para>
 
+        <para>Für die Schweiz sind folgende Einstellungen üblich:
+               <itemizedlist>
+            <listitem>
+                               <para>Sollversteuerung</para>
+            </listitem>
+            <listitem>
+                               <para>Aufwandsmethode</para>
+                       </listitem>
+                       <listitem>
+                               <para>Bilanzierung</para>
+                       </listitem>
+               </itemizedlist>
+               Diese Einstellungen werden automatisch beim Erstellen einer neuen
+               Datenbank vorausgewählt, wenn in <filename>config/kivitendo.conf</filename> unter
+               <varname>[system]</varname> <literal>default_manager = swiss</literal> eingestellt ist.
+        </para>
+
         <para>Beim Upgrade bestehender Mandanten wird eur ausgelesen und die
         Variablen werden so gesetzt, daß sich an der Funktionalität nichts
         ändert.</para>
 
         <para>Die aktuelle Konfiguration wird unter Nummernkreise und
         Standardkonten unter dem neuen Punkt "Einstellungen" (read-only)
-        angezeigt. Unter <guimenu>System</guimenu> -&gt;
+        angezeigt. Unter <guimenu>System</guimenu> 
         <guisubmenu>Mandantenkonfiguration</guisubmenu> können die
         Einstellungen auch geändert werden. Dabei ist zu beachten, dass eine
         Änderung vorhandene Daten so belässt und damit evtl. die Ergebnisse
@@ -2717,8 +2907,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
         <para>Die folgenden Schritte sind notwendig, um das Konto manuell
         anzulegen und zu konfigurieren. Zuerst wird in
-        <guimenu>System</guimenu> -&gt;
-        <guisubmenu>Kontenübersicht</guisubmenu> -&gt; <guimenuitem>Konto
+        <guimenu>System</guimenu> 
+        <guisubmenu>Kontenübersicht</guisubmenu>  <guimenuitem>Konto
         erfassen</guimenuitem> das Konto angelegt.</para>
 
         <screenshot>
@@ -2732,8 +2922,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         </screenshot>
 
         <para>Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst
-        werden. Dazu unter <guimenu>System</guimenu> -&gt;
-        <guisubmenu>Steuern</guisubmenu> -&gt;
+        werden. Dazu unter <guimenu>System</guimenu> 
+        <guisubmenu>Steuern</guisubmenu> 
         <guimenuitem>Bearbeiten</guimenuitem> den Eintrag mit Steuerschlüssel
         13 auswählen und ihn wie im folgenden Screenshot angezeigt
         anpassen.</para>
@@ -2749,8 +2939,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         </screenshot>
 
         <para>Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für
-        Konto 3804 (19%) angelegt. Dazu unter <guimenu>System</guimenu> -&gt;
-        <guisubmenu>Steuern</guisubmenu> -&gt;
+        Konto 3804 (19%) angelegt. Dazu unter <guimenu>System</guimenu> 
+        <guisubmenu>Steuern</guisubmenu> 
         <guimenuitem>Erfassen</guimenuitem> auswählen und die Werte aus dem
         Screenshot übernehmen.</para>
 
@@ -2768,8 +2958,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         Steuerautomatikkonto die 3803 haben, sodass sie ab dem 1.1.2007 auch
         Steuerautomatik auf 3804 bekommen. Dies betrifft in der
         Standardkonfiguration die Konten 4315 und 4726. Als Beispiel für 4315
-        müssen Sie dazu unter <guimenu>System</guimenu> -&gt;
-        <guisubmenu>Kontenübersicht</guisubmenu> -&gt; <guimenuitem>Konten
+        müssen Sie dazu unter <guimenu>System</guimenu> 
+        <guisubmenu>Kontenübersicht</guisubmenu>  <guimenuitem>Konten
         anzeigen</guimenuitem> das Konto 4315 anklicken und die Einstellungen
         wie im Screenshot gezeigt vornehmen.</para>
 
@@ -2784,7 +2974,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         </screenshot>
 
         <para>Als Letztes sollte die Steuerliste unter
-        <guimenu>System</guimenu> -&gt; <guisubmenu>Steuern</guisubmenu> -&gt;
+        <guimenu>System</guimenu> → <guisubmenu>Steuern</guisubmenu> →
         <guimenuitem>Bearbeiten</guimenuitem> kontrolliert werden. Zum
         Vergleich der Screenshot.</para>
 
@@ -2800,7 +2990,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       </sect2>
     </sect1>
 
-    <sect1 id="bilanz">
+    <sect1 id="config.bilanz">
       <title>Verhalten des Bilanzberichts</title>
 
       <para>Bis Version 3.0 wurde "closedto" ("Bücher schließen zum") als
@@ -2850,7 +3040,93 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       den Optionen mit EB-Buchungen wird vorausgesetzt, daß diese immer am 1.
       Tag des Wirtschaftsjahres gebucht werden. Zur Sicherheit wird das
       Startdatum im Bilanzbericht jetzt zusätzlich zum Stichtag mit angezeigt.
-      Das hilft auch bei der Kontrolle für den Abgleich mit der GuV.</para>
+      Das hilft auch bei der Kontrolle für den Abgleich mit der GuV bzw.
+      Erfolgsrechnung.</para>
+    </sect1>
+
+    <sect1 id="config.erfolgsrechnung">
+         <title>Erfolgsrechnung</title>
+
+         <para>Seit der Version 3.4.1 existiert in kivitendo der Bericht <emphasis role="bold">
+         Erfolgsrechnung</emphasis>.</para>
+
+         <para>Die Erfolgsrechnung kann in der Mandantenkonfiguration unter Features
+         an- oder abgeschaltet werden. Mit der Einstellung <varname>default_manager = swiss
+         </varname> in der <filename>config/kivitendo.conf</filename> wird beim neu Erstellen
+         einer Datenbank automatisch die Anzeige der Erfolgsrechnung im Menü <guimenu>Berichte
+         </guimenu> ausgewählt und ersetzt dort die GUV.</para>
+
+         <para>Im Gegensatz zur GUV werden bei der Erfolgsrechnung sämtliche Aufwands- und
+         Erlöskonten einzeln aufgelistet (analog zur Bilanz), sortiert nach ERTRAG und AUFWAND.</para>
+
+         <para>Bei den Konteneinstellungen muss bei jedem Konto, das in der Erfolgsrechnung
+         erscheinen soll, unter <varname>Sonstige Einstellungen/Erfolgsrechnung</varname>
+         entweder <literal>01.Ertrag</literal> oder <literal>06.Aufwand</literal>  ausgewählt
+         werden.</para>
+
+         <para>Wird bei einem Erlöskonto <literal>06.Aufwand</literal> ausgewählt,
+         so wird dieses Konto als Aufwandsminderung unter AUFWAND aufgelistet.</para>
+
+         <para>Wird bei einem Aufwandskonto <literal>01.Ertrag</literal> ausgewählt,
+         so wird dieses Konto als Ertragsminderung unter ERTRAG aufgelistet.</para>
+
+         <para>Soll bei einer bereits bestehenden Buchhaltung in Zukunft zusätzlich
+         die Erfolgsrechnung als Bericht verwendet werden, so müssen die Einstellungen
+         zu allen Erlös- und Aufwandskonten unter <varname>Sonstige
+         Einstellungen/Erfolgsrechnung</varname> überprüft und allenfalls neu gesetzt werden.</para>
+    </sect1>
+
+    <sect1 id="config.rounding">
+         <title>Rundung in Verkaufsbelegen</title>
+
+         <para>In der Schweiz hat die kleinste aktuell benutzte Münze den Wert von 5 Rappen (0.05 CHF).</para>
+
+         <para>Auch wenn im elektronischen Zahlungsverkehr Beträge mit einer Genauigkeit
+         von 0.01 CHF verwendet werden können, ist es trotzdem nach wie vor üblich,
+         Rechnungen mit auf 0.05 CHF gerundeten Beträgen auszustellen.</para>
+
+         <para>In kivitendo kann seit der Version 3.4.1 die Einstellung für eine solche
+         Rundung pro Mandant / Datenbank festgelegt werden.</para>
+
+         <para>Die Einstellung wird beim Erstellen der Datenbank bei <literal>Genauigkeit</literal>
+         festgelegt. Sie kann anschliessend über das Webinterface von kivitendo nicht mehr
+         verändert werden.</para>
+
+         <para>Abhängig vom Wert für <varname>default_manager</varname> in
+         <filename>config/kivitendo.conf</filename> werden dabei folgende
+         Werte voreingestellt:</para>
+         <itemizedlist>
+        <listitem>
+          <para>0.05 (default_manager = swiss)</para>
+        </listitem>
+        <listitem>
+          <para>0.01 (default_manager = german)</para>
+        </listitem>
+      </itemizedlist>
+      <para>Der Wert wird in der Datenbank in der Tabelle <varname>defaults
+      </varname>in der Spalte <varname>precision</varname> gespeichert.</para>
+
+      <para>In allen Verkaufsangeboten, Verkaufsaufträgen, Verkaufsrechnungen
+      und Verkaufsgutschriften wird der Endbetrag inkl. MWST gerundet,
+      wenn dieser nicht der eingestellten Genauigkeit entspricht.</para>
+
+      <para>Beim Buchen einer Verkaufsrechnung wird der Rundungsbetrag
+      automatisch auf die in der Mandantenkonfiguration festgelegten
+      Standardkonten für Rundungserträge bzw. Rundungsaufwendungen gebucht.</para>
+
+      <para>(Die berechnete MWST wird durch den Rundungsbetrag nicht mehr verändert.)</para>
+
+      <para>Die in den Druckvorlagen zur Verfügung stehenden Variablen
+      <varname>quototal</varname>, <varname>ordtotal</varname> bzw.
+      <varname>invtotal</varname> enthalten den gerundeten Betrag.</para>
+
+      <para><emphasis role="bold">Achtung:</emphasis> Werden Verkaufsbelege
+      in anderen Währungen als der Standardwährung erstellt, so muss in
+      kivitendo ab Version 3.4.1 die Genauigkeit 0.01 verwendet werden.</para>
+      <para>Das heisst, Firmen in der Schweiz, die teilweise Verkaufsrechnungen
+      in Euro oder anderen Währungen erstellen wollen, müssen beim Erstellen
+      der Datenbank als Genauigkeit 0.01 wählen und können zur Zeit die
+      5er Rundung noch nicht nutzen.</para>
     </sect1>
 
     <sect1 id="config.client">
@@ -2860,7 +3136,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       linkend="Zusammenhänge">Recht</link> "Administration (Für die Verwaltung
       der aktuellen Instanz aus einem Userlogin heraus)" gemacht werden. Diese
       Einstellungen sind dann für die aktuellen Mandanten-Datenbank gültig.
-      Die Einstellungen sind unter <guimenu>System</guimenu> -&gt;
+      Die Einstellungen sind unter <guimenu>System</guimenu> 
       <guisubmenu>Mandantenkonfiguration</guisubmenu> erreichbar.</para>
 
       <para>Bitte beachten Sie die Hinweise zu den einzelnen Einstellungen.
@@ -3365,10 +3641,9 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         (siehe <xref
         linkend="dokumentenvorlagen-und-variablen.tag-style"/>).</para>
 
-        <para>Früher wurde hier nur über LaTeX gesprochen. Inzwischen
-        unterstützt kivitendo aber auch OpenDocument-Vorlagen. Sofern es nicht
-        ausdrücklich eingeschränkt wird, gilt das im Folgenden gesagte für
-        alle Vorlagenarten.</para>
+        <para>kivitendo unterstützt LaTeX-, HTML- und OpenDocument-Vorlagen.
+        Sofern es nicht ausdrücklich eingeschränkt wird, gilt das im
+        Folgenden gesagte für alle Vorlagenarten.</para>
 
         <para>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
         verfügbar als hier aufgelistet werden. Die meisten davon können
@@ -4658,6 +4933,15 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               </listitem>
             </varlistentry>
 
+            <varlistentry>
+              <term><varname>rounding</varname></term>
+
+              <listitem>
+                <para>Betrag, um den <varname>invtotal</varname> gerundet wurde
+                (kann positiv oder negativ sein)</para>
+              </listitem>
+            </varlistentry>
+
             <varlistentry>
               <term><varname>shippingpoint</varname></term>
 
@@ -5129,13 +5413,18 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         <sect3 id="dokumentenvorlagen-und-variablen.dunning-allgemein">
           <title>Allgemeine Variablen in Mahnungen</title>
 
-          <para>Die Variablen des Verkäufers stehen wie gewohnt als
-          <varname>employee_...</varname> zur Verfügung. Die Adressdaten des
-          Kunden stehen als Variablen <varname>name</varname>,
+          <para>Die Variablen des Bearbeiters, bzw. Verkäufers stehen wie gewohnt als
+          <varname>employee_...</varname> bzw. <varname>salesman_...</varname> zur Verfügung.
+          Werden mehrere Rechnungen in einer Mahnung zusammengefasst, so werden
+          die Metadaten (Bearbeiter, Abteilung, etc) der ersten angemahnten Rechnung
+          im Ausdruck genommen.</para>
+          <para>Die Adressdaten des Kunden stehen als Variablen <varname>name</varname>,
           <varname>street</varname>, <varname>zipcode</varname>,
           <varname>city</varname>, <varname>country</varname>,
           <varname>department_1</varname>, <varname>department_2</varname>,
-          und <varname>email</varname> zur Verfügung.</para>
+          und <varname>email</varname> zur Verfügung. Der Ansprechpartner <varname>cp_...</varname>
+          steht auch zu Verfügung, wird allerdings auch nur von der ersten angemahnten Rechnung (s.o.)
+          genommen.</para>
 
           <para>Weitere Variablen beinhalten:</para>
 
@@ -5993,11 +6282,18 @@ Beschreibung: &lt;%description%&gt;
     </sect1>
 
     <sect1 id="features.warehouse">
-       
+
 
       <title>Mandantenkonfiguration Lager</title>
 
-       Die Lagerverwaltung in kivitendo funktioniert standardmässig wie folgt: Wird ein Lager mit einem Lagerplatz angelegt, so gibt es die Möglichkeit hier über den Menüpunkt Lager entsprechende Warenbewegungen durchzuführen. Ferner kann jede Position eines Lieferscheins ein-, bzw. ausgelagert werden (Einkauf-, bzw. Verkauf). Es können beliebig viele Lager mit beliebig vielen Lagerplätzen abgebildet werden. Die Lagerbewegungen über einen Lieferschein erfolgt durch Anklicken jeder Einzelposition und das Auswählen dieser Position zu einem Lager mit Lagerplatz. Dieses Verfahren lässt sich schrittweise vereinfachen, je nachdem wie die Einstellungen in der Mandatenkonfiguration gesetzt werden. 
+      <para>
+       Die Lagerverwaltung in kivitendo funktioniert standardmässig wie folgt: Wird ein Lager mit einem Lagerplatz angelegt, so gibt es die
+       Möglichkeit hier über den Menüpunkt Lager entsprechende Warenbewegungen durchzuführen.  Ferner kann jede Position eines Lieferscheins
+       ein-, bzw. ausgelagert werden (Einkauf-, bzw. Verkauf). Es können beliebig viele Lager mit beliebig vielen Lagerplätzen abgebildet
+       werden. Die Lagerbewegungen über einen Lieferschein erfolgt durch Anklicken jeder Einzelposition und das Auswählen dieser Position zu
+       einem Lager mit Lagerplatz. Dieses Verfahren lässt sich schrittweise vereinfachen, je nachdem wie die Einstellungen in der
+       Mandatenkonfiguration gesetzt werden.
+      </para>
 
       <itemizedlist>
         <listitem>
@@ -6017,13 +6313,15 @@ Beschreibung: &lt;%description%&gt;
         </listitem>
       </itemizedlist>
 
-       Zusätzliche Funktionshinweise: 
+      <para>
+       Zusätzliche Funktionshinweise:
+      </para>
 
       <itemizedlist>
         <listitem>
           <para><option>Standard-Lagerplatz</option> Ist dieser konfiguriert,
           wird dies auch als Standard-Voreinstellung bei der Neuerfassung von
-          Stammdaten-&gt; Waren / Dienstleistung / Erzeugnis verwendet.</para>
+          Stammdaten → Waren / Dienstleistung / Erzeugnis verwendet.</para>
         </listitem>
 
         <listitem>
@@ -6035,7 +6333,380 @@ Beschreibung: &lt;%description%&gt;
         </listitem>
       </itemizedlist>
 
-       
+
+    </sect1>
+
+    <sect1 id="features.swiss-charts-of-accounts">
+         <title>Schweizer Kontenpläne</title>
+
+         <para>Seit der Version 3.5 stehen in kivitendo 3 Kontenpläne für
+         den Einsatz in der Schweiz zur Verfügung, einer für Firmen und
+         Organisationen, die nicht mehrwertsteuerpflichtig sind, einer
+         für Firmen, die mehrwertsteuerpflichtig sind und einer speziell
+          für Vereine.</para>
+
+         <para>Die Kontenpläne orientieren sich am in der Schweiz üblicherweise
+         verwendeten KMU-Kontenrahmen und sind mit der Revision des Schweizerischen
+         Obligationenrechts (OR) vom 1.1.2013 kompatibel, insbesondere
+         <literal>Art.957a Abs.2</literal>.</para>
+
+          <para>Beim Vereinskontenplan sind standardmässig nur die Konten 1100
+          (Debitoren CHF) und 1101 (Debitoren EUR) als Buchungskonten im Verkauf
+          sowie die Konten 2000 (Kreditoren CHF) und 2001 (Kreditoren EUR) als
+          Buchungskonten im Einkauf vorgesehen. Weitere Konten können bei Bedarf
+          in den Konto-Detaileinstellungen als Einkaufs- oder Verkaufskonten
+          konfiguriert werden.</para>
+
+         <para>Die Möglichkeit, Saldosteuersätze zu verwenden ist in der aktuellen
+         Version von kivitendo noch nicht integriert.</para>
+
+         <para>Trotzdem können auch Firmen, die per Saldosteuersatz mit der
+         Eidgenössischen Steuerverwaltung abrechnen, kivitendo bereits nutzen.
+         Dazu wird der Kontenplan mit MWST ausgewählt. Anschliessend müssen
+         alle Aufwandskonten editiert werden und dort der Steuersatz auf 0%
+         gesetzt werden.</para>
+
+         <para>So werden bei Kreditorenbuchungen keine Vorsteuern verbucht.</para>
+
+          <para>Bezugssteuern für aus dem Ausland bezogene Dienstleistungen müssen
+          manuell verbucht werden.</para>
+
+         <para>Wünsche für Anpassungen an den Schweizer Kontenplänen sowie
+         Vorschläge für weitere (z.B. branchenspezifische) Kontenpläne
+         bitte an <literal>empfang@revamp-it.ch</literal> senden.</para>
+    </sect1>
+
+    <sect1 id="features.part_classification">
+      <title>Artikelklassifizierung</title>
+
+      <sect2>
+        <title>Übersicht</title>
+
+        <para>Die Klassifizierung von Artikeln dient einer weiteren Gliederung,
+        um zum Beispiel den Einkauf vom Verkauf zu trennen, gekennzeichnet
+        durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel (z.B. "E").
+        Für jede Klassifizierung besteht eine Beschreibung und eine Abkürzung
+        die normalerweise aus einem Zeichen besteht, kann aber auf mehrere
+        Zeichen erweitert werden, falls zur Unterscheidung notwendig. Sinnvoll
+        sind jedoch nur maximal 2 Zeichen.</para>
+      </sect2>
+
+      <sect2>
+        <title>Basisklassifizierung</title>
+
+        <para>Als Basisklassifizierungen gibt es</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Einkauf</para>
+          </listitem>
+
+          <listitem>
+            <para>Verkauf</para>
+          </listitem>
+
+          <listitem>
+            <para>Handelsware</para>
+          </listitem>
+
+          <listitem>
+            <para>Produktion</para>
+          </listitem>
+
+          <listitem>
+            <para>- keine - (diese wird bei einer Aktualisierung für alle
+            existierenden Artikel verwendet und ist gültig für Verkauf und
+            Einkauf)</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Es können weitere Klassifizierungen angelegt werden. So kann es
+        z.B. für separat auszuweisende Artikel folgende Klassen geben:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Lieferung (Logistik, Transport) mit Kürzel L</para>
+          </listitem>
+
+          <listitem>
+            <para>Material (Verpackungsmaterial) mit Kürzel M</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+
+      <sect2>
+        <title>Attribute</title>
+
+        <para>Bisher haben die Klassifizierungen folgende Attribute, die auch
+        alle gleichzeitg gültig sein können</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>gültig für Verkauf - dieser Artikel kann im Verkauf genutzt
+            werden</para>
+          </listitem>
+
+          <listitem>
+            <para>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
+            werden</para>
+          </listitem>
+
+          <listitem>
+            <para>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
+            (LaTeX) eine zusätzliche Variable</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Für das Attribut "separat ausweisen" stehen in den LaTeX-Vorlagen
+        die Variable <emphasis role="bold">&lt;%non_separate_subtotal%&gt;
+        </emphasis>zur Verfügung, die alle nicht separat auszuweisenden
+        Artikelkosten saldiert, sowie pro separat auszuweisenden
+        Klassifizierungen die Variable<emphasis role="bold">&lt;
+        %separate_X_subtotal%&gt;</emphasis>, wobei X das Kürzel der
+        Klassifizierung ist.</para>
+
+        <para>Im obigen Beispiel wäre das für Lieferkosten <emphasis
+        role="bold">&lt;%separate_L_subtotal%&gt;</emphasis> und für
+        Verpackungsmaterial <emphasis role="bold">
+        &lt;%separate_M_subtotal%&gt;</emphasis>.</para>
+      </sect2>
+
+      <sect2>
+        <title>Zwei-Zeichen Abkürzung</title>
+
+        <para>Der Typ des Artikels und die Klassifizierung werden durch zwei
+        Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
+        Artikel-Typs ('P','A','S'), deutsch 'W', 'E', und 'D' für Ware
+        Erzeugnis oder Dienstleistung und ggf. weiterer Typen.</para>
+
+        <para>Der zweite Buchstabe (und ggf. auch ein dritter, falls nötig)
+        entspricht der lokalisierten Abkürzung der Klassifizierung.</para>
+
+        <para>Diese Abkürzung wird überall beim Auflisten von Artikeln zur
+        Erleichterung mit dargestellt.</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="features.file_managment">
+      <title>Dateiverwaltung (Mini-DMS)</title>
+
+      <sect2>
+        <title>Übersicht</title>
+        <para>Parallel zum alten WebDAV gibt es ein Datei-Management-System, das Dateien
+        verschiedenen Typs verwaltet. Dies können</para>
+        <orderedlist>
+          <listitem>
+            <para>aus ERP-Daten per LaTeX Template erzeugte PDF-Dokumente,</para>
+          </listitem>
+          <listitem>
+            <para>zu bestimmten ERP-Daten gehörende Anhangdateien unterschiedlichen Formats,</para>
+          </listitem>
+          <listitem>
+            <para>per Scanner eingelesene PDF-Dateien,</para>
+          </listitem>
+          <listitem>
+            <para>per E-Mail empfangene Dateianhänge unterschiedlichen Formats,</para>
+          </listitem>
+          <listitem>
+            <para>sowie speziel für Artikel hochgeladene Bilder sein.</para>
+          </listitem>
+        </orderedlist>
+        <screenshot>
+          <screeninfo>Übersicht</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata contentwidth="600" fileref="images/DMS-Overview.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+      </sect2>
+
+      <sect2>
+        <title>Struktur</title>
+
+      <para>Über eine vom Speichermedium unabhängige Zwischenschicht werden die Dateien und ihre Versionen in der Datenbank verwaltet. Darunter können verschiedene Implementierungen (Backends) gleichzeitig existieren:
+      </para>
+        <itemizedlist>
+          <listitem>
+            <para>Dateisystem</para>
+          </listitem>
+          <listitem>
+            <para>WebDAV</para>
+          </listitem>
+          <listitem>
+            <para>Schnittstelle zu externen Dokumenten-Management-Systemen</para>
+          </listitem>
+          <listitem>
+            <para>andere Datenbank</para>
+          </listitem>
+          <listitem>
+            <para>etc ...</para>
+          </listitem>
+        </itemizedlist>
+        <para>Es gibt unterschiedliche Typen von Dateien. Jedem Typ läßt sich in der
+              Mandantenkonfiguration ein bestimmtes Backend zuordnen.
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>"document": Das sind entweder generierte, eingescannte oder hochgeladene PDF-Dateien,
+                  die zu bestimmten ERP-Daten (ERP-Objekte, wie z.B. Rechnung, Lieferschein) gehören.</para>
+          </listitem>
+          <listitem>
+            <para>"attachment": zusätzlich hochgeladene Dokumente, die an bestimmte ERP-Objekte angehängt werden,
+            z.B. technische Zeichnungen, Aufmaße. Diese können auch für Artikel,
+            Lieferanten und Kunden hinterlegt sein.</para>
+          </listitem>
+          <listitem>
+            <para>"image": Bilder für Artikel. Diese können auch verkleinert in einer Vorschau (Thumbnail)
+            angezeigt werden.</para>
+          </listitem>
+        </itemizedlist>
+        <para>Zusätzlich werden in der Datenbank zu den Dateien neben der Zuordnung zu ERP-Objekten, Dateityp
+        Dateinamen und Backend, in dem die Datei gespeichert ist, auch die Quelle der Datei notiert:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para> "created": vom System erzeugte Dokumente"</para>
+          </listitem>
+          <listitem>
+            <para> "uploaded": hochgeladene Dokumente</para>
+          </listitem>
+          <listitem>
+            <para> "email": vom Mail-System empfangene Dateien</para>
+          </listitem>
+          <listitem>
+            <para> "scanner[1]": von einem oder mehreren Scannern erzeugte Dateien. Existieren mehrere Scanner,
+            so sind diese durch unterschiedliche Quellennamen zu definieren.</para>
+          </listitem>
+        </itemizedlist>
+        <para>Je nach Dateityp sind nur bestimmte Quellen zulässig. So gibt es für "attachment" und "image" nur
+        die Quelle "uploaded". Für "document" gibt es auf jeden Fall die Quelle "created".
+        Die Quellen "scanner" und "email" müssen derzeit in der Datenbank konfiguriert werden
+        (siehe <xref linkend="file_management.dbconfig"/>).</para>
+      </sect2>
+
+      <sect2>
+        <title>Anwendung</title>
+        <para>Die Daten werden bei den ERP-Objekten als extra Reiter dargestellt.
+        Eine Verkaufsrechnung z.B. hat die
+        Reiter "Dokumente" und "Dateianhänge".</para>
+        <screenshot>
+          <screeninfo>Reiter "Dateianhänge"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata scale="50" fileref="images/DMS-Anhaenge.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Bei den Dateianhängen wird immer nur die aktuelle Version einer Datei angezeigt.
+        Wird eine Datei mit gleichem Namen hochgeladen, so wird eine neue Version der Datei erstellt.
+        Vorher wird der Anwender durch einen Dialog gefragt, ob er eine neue Version anlegen will oder
+        ob er die Datei umbenennen will, falls es eine neue Datei sein soll.</para>
+        <screenshot>
+          <screeninfo>Reiter "Dateianhänge"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata width="100" contentwidth="40" fileref="images/DMS-Anhaenge-hochladen.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Es können mehrere Dateien gleichzeitig hochgeladen werden,
+        solange in Summe die maximale Größe nicht überschritten wird
+        (siehe <xref linkend="file_management.clientconfig"/>).</para>
+        <screenshot>
+          <screeninfo>Reiter "Dokumente"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  width="500" fileref="images/DMS-Dokumente.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Sind keine weiteren Quellen für Dokumente konfiguriert, so gibt es nur "erzeugte Dokumente".
+        Es werden alle Versionen der generierten Datei angezeigt. Für Verkaufsrechnungen kommen keine
+        anderen Quellen zur Geltung. Werden entsprechend der
+        <xref linkend="file_management.dbconfig"/> zusätzliche Quellen konfiguriert, so sind diese z.B. bei
+        Einkaufsrechnungen sichtbar:</para>
+        <screenshot>
+          <screeninfo>Reiter "Dokumente"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  contentwidth="600" fileref="images/DMS-Dokumente-Scanner.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Statt des Löschens wird hier die Datei zurück zur Quelle verschoben. Somit kann die Datei anschließend
+        an ein anderes ERP-Objekt angehängt werden.</para>
+        <para>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie sind bisher nur bei Bildern relevant.</para>
+      </sect2>
+
+      <sect2>
+        <title>Konfigurierung</title>
+        <sect3 id="file_management.clientconfig" xreflabel="Mandantenkonfigurierung">
+          <title>Mandantenkonfiguration</title>
+          <sect4>
+            <title>Reiter "Features"</title>
+            <para>Unter dem Reiter <emphasis role="bold">Features</emphasis> im Abschnitt Dateimanagement ist
+            neben dem "alten" WebDAV das Dateimangement generell zu- und abschaltbar, sowie die Zuordnung der
+          Dateitypen zu Backends. Die Löschbarkeit von Dateien, sowie die maximale Uploadgröße sind Backend-unabhängig</para>
+        <screenshot>
+          <screeninfo>Mandantenkonfig Reiter "Features"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  width="500" fileref="images/DMS-ClientConfig.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Die einzelnen Backends sind einzeln einschaltbar. Spezifische Backend-Konfigurierungen sind hier
+        noch ergänzbar.</para>
+        </sect4>
+          <sect4>
+            <title>Reiter "Allgemeine Dokumentenanhänge"</title>
+            <para>Unter dem Reiter <emphasis role="bold">Allgemeine Dokumentenanhänge</emphasis>
+            kann für alle ERP-Dokumente ( Angebote, Aufträge, Lieferscheine, Rechnungen im Verkauf und Einkauf )
+            allgemeingültige Anhänge hochgeladen werden.</para>
+        <screenshot>
+          <screeninfo>Mandantenkonfig Reiter "Allgemeine Dokumentenanhänge"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  width="500" fileref="images/DMS-Allgemeine-Dokumentenanhaenge.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Diese Anhänge werden beim Generieren von PDF-Dateien an die ERP-Dokumente angehängt,
+        z.B. AGBs oder aktuelle Angebote. Es werden in dem Fall die Daten kopiert, sodass an den ERP-Dokumenten immer
+        die Anhänge zum Generierungszeitpunkt eingebettet sind.
+        </para>
+        </sect4>
+        </sect3>
+        <sect3 id="file_management.dbconfig" xreflabel="Datenbank-Konfigurierung">
+          <title>Datenbank-Konfigurierung</title>
+          <para>Die zusätzlichen Quellen für "email" oder ein oder mehrere Scanner sind derzeit vom Administrator
+          direkt in der Datenbanktabelle "user_preferences" einzurichten. Die "value" ist im JSON-Format
+          mit den jeweiligen Werten des Verzeichnisses und der Beschreibung der Quelle.</para>
+          <programlisting>
+ id |  login    |  namespace   | version |   key    |          value
+----+-----------+--------------+---------+----------+---------------------------
+  1 | #default# | file_sources | 0.00000 | scanner1 |
+                             {"dir":"/var/tmp/scanner1","desc":"Scanner Einkauf"}
+  2 | #default# | file_sources | 0.00000 | scanner2 |
+                             {"dir":"/var/tmp/scanner2","desc":"Scanner Verkauf"}
+  3 | #default# | file_sources | 0.00000 | emails   |
+                             {"dir":"/var/tmp/emails","desc":"Empfangene Mails" }
+          </programlisting>
+          <para>Es ist daran gedacht, statt dem Default-Eintrag später für bestimmte Benutzer ('login') bestimmte Quellen zuzulassen.
+          Dies wird nach Bedarf implementiert.</para>
+        </sect3>
+        <sect3 id="file_management.kiviconfig" xreflabel="kivitendo-Konfigurationsdatei">
+          <title>kivitendo-Konfigurationsdatei</title>
+          <para>Dort ist im Abschnitt [paths] der relative oder absolute Pfad zum Dokumentenwurzelverzeichnis einzutragen.
+          Dieser muss für den Webserver schreib- und lesbar sein, jedoch nicht ausführbar.</para>
+          <programlisting>
+[paths]
+document_path = /var/local/kivi_documents
+          </programlisting>
+          <para>Unter diesem Wurzelverzeichnis wird pro Mandant automatisch ein Unterverzeichnis mit der ID des Mandanten angelegt.</para>
+        </sect3>
+     </sect2>
     </sect1>
   </chapter>
 
@@ -6319,8 +6990,7 @@ Beschreibung: &lt;%description%&gt;
             </listitem>
 
             <listitem>
-              <para>Enthält unter anderem Listenbegrenzung vclimit,
-              Datumsformat dateformat und Nummernformat numberformat</para>
+              <para>Enthält unter anderem Datumsformat dateformat und Nummernformat numberformat</para>
             </listitem>
 
             <listitem>
@@ -7144,7 +7814,7 @@ filenames</programlisting>
 
               <para>The last of which is very machine dependant. Remember that
               a lot of characters are forbidden by some filesystems, for
-              exmaple MS Windows doesn't like ':' in its files where Linux
+              example MS Windows doesn't like ':' in its files where Linux
               doesn't mind that. If you want the files created with your
               language pack to be portable, find all chars that could cause
               trouble.</para>
@@ -7307,6 +7977,16 @@ $self-&gt;{more_texts} = {
             <literal>perl-URI-Find</literal>; openSUSE:
             <literal>perl-URI-Find</literal>)</para>
           </listitem>
+
+          <listitem>
+            <para><literal>Sys::CPU</literal> (Debian-Panetname: <literal>libsys-cpu-perl</literal>; Fedora und openSUSE: nicht
+            vorhanden)</para>
+          </listitem>
+
+          <listitem>
+            <para><literal>Thread::Pool::Simple</literal> (Debian-Panetname: <literal>libthread-pool-simple-perl</literal>; Fedora und
+            openSUSE: nicht vorhanden)</para>
+          </listitem>
         </itemizedlist>
 
         <para>Weitere Voraussetzung ist, dass die Testsuite ihre eigene
@@ -7486,7 +8166,7 @@ Support::TestSetup::login();</programlisting>
           sein. Dieser wird für die Datenbankverbindung benötigt.</para>
 
           <para>Wir keine vollständig initialisierte Umgebung benötigt, so
-          kann die letzte Zeile <code>Support::TestSetup::login();</code>
+          kann die letzte Zeile <programlisting>Support::TestSetup::login();</programlisting>
           weggelassen werden, was die Ausführungszeit des Scripts leicht
           verringert.</para>
         </sect3>
@@ -7616,7 +8296,7 @@ map { $form-&gt;{sum} += $form-&gt;{"row_$_"} } 1..$rowcount;</programlisting>
             </listitem>
 
             <listitem>
-              <para>Ein Spezialfall ist der ternäre Oprator "?:", der am
+              <para>Ein Spezialfall ist der ternäre Operator "?:", der am
               besten in einer übersichtlichen Tabellenstruktur organisiert
               wird. Beispiel:</para>