Versionsnummer in Dokumentationen für 3.6.1 angepasst
[kivitendo-erp.git] / doc / dokumentation.xml
index 8b05300..1da2798 100644 (file)
@@ -2,7 +2,8 @@
 <!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.5.0: Installation, Konfiguration, Entwicklung</title>
+  <title>kivitendo 3.6.1: Installation, Konfiguration,
+  Entwicklung</title>
 
   <chapter id="Aktuelle-Hinweise">
     <title>Aktuelle Hinweise</title>
@@ -12,7 +13,7 @@
     <itemizedlist>
       <listitem>
         <para>im Community-Forum: <ulink
-        url="https://forum.kivitendo.de:32443">https://forum.kivitendo.de:32443</ulink></para>
+        url="https://forum.kivitendo.de">https://forum.kivitendo.de</ulink></para>
       </listitem>
 
       <listitem>
         ohne große Probleme auf den derzeit aktuellen verbreiteten
         Distributionen läuft.</para>
 
-        <para>Anfang 2016 sind das folgende Systeme, von denen bekannt ist,
-        dass kivitendo auf ihnen läuft:</para>
+        <para>Mitte 2020 (ab Version 3.5.6) empfehlen wir:</para>
 
         <itemizedlist>
           <listitem>
 
             <itemizedlist>
               <listitem>
-                <para>7.0 "Wheezy"</para>
+                <para>10.0 "Buster"</para>
               </listitem>
-
               <listitem>
-                <para>8.0 "Jessie"</para>
+                <para>11.0 "Bullseye"</para>
               </listitem>
             </itemizedlist>
           </listitem>
 
           <listitem>
-            <para>Ubuntu 12.04 LTS "Precise Pangolin", 14.04 "Trusty Tahr"
-            LTS, 15.10 "Wily Werewolf" und 16.04 "Xenial Xerus" LTS
-            Alpha</para>
+            <para>20.04 "Focal Fossa" LTS
+          </para>
           </listitem>
 
           <listitem>
-            <para>openSUSE LEAP 42.1</para>
+            <para>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</para>
           </listitem>
 
           <listitem>
-            <para>Fedora 22</para>
+            <para>Fedora 29</para>
           </listitem>
         </itemizedlist>
       </sect2>
         <title>Benötigte Perl-Pakete installieren</title>
 
         <para>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
-        Apache) und ein Datenbankserver (PostgreSQL) in einer aktuellen Version
-        (s.a. Liste der unterstützten Betriebssysteme) 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,
 
         <itemizedlist>
           <listitem>
-            <para><literal>parent</literal> (nur bei Perl vor 5.10.1)</para>
+            <para><literal>Algorithm::CheckDigits</literal></para>
           </listitem>
 
           <listitem>
           </listitem>
 
           <listitem>
-            <para><literal>Algorithm::CheckDigits</literal></para>
+            <para><literal>CAM::PDF</literal></para>
           </listitem>
 
           <listitem>
             <para><literal>Config::Std</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Daemon::Generic</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>DateTime</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>DateTime::Event::Cron</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>DateTime::Format::Strptime</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>DateTime::Set</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>DBI</literal></para>
           </listitem>
             <para><literal>DBD::Pg</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Digest::SHA</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>Email::Address</literal></para>
           </listitem>
             <para><literal>Email::MIME</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Exception::Class</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>FCGI</literal> (nicht Versionen 0.68 bis 0.71
             inklusive; siehe <xref
             <para><literal>File::Copy::Recursive</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>File::Flock</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>File::MimeInfo</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>File::Slurp</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>GD</literal></para>
           </listitem>
             <para><literal>Image::Info</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Imager</literal></para>
+          </listitem>
+
+          <listitem>
+            <para><literal>Imager::QRCode</literal></para>
+          </listitem>
+
+          <listitem>
+            <para><literal>IPC::Run</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>JSON</literal></para>
           </listitem>
             <para><literal>List::UtilsBy</literal></para>
           </listitem>
 
+          <listitem>
+            <para>LWP::Authen::Digest</para>
+          </listitem>
+
+          <listitem>
+            <para>LWP::UserAgent</para>
+          </listitem>
+
           <listitem>
             <para><literal>Net::SMTP::SSL</literal> (optional, bei
             E-Mail-Versand über SSL; siehe Abschnitt "<xref
             linkend="config.sending-email.smtp"/>")</para>
           </listitem>
 
+          <listitem>
+            <para><literal>Math::Round</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>Params::Validate</literal></para>
           </listitem>
             <para><literal>PDF::API2</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Regexp::IPv6</literal></para>
+          </listitem>
+
+          <listitem>
+            <para><literal>Rest::Client</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>Rose::Object</literal></para>
           </listitem>
             neuer</para>
           </listitem>
 
+          <listitem>
+            <para><literal>Set::Infinite</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>String::ShellQuote</literal></para>
           </listitem>
             <para><literal>Text::Iconv</literal></para>
           </listitem>
 
-           <listitem>
+          <listitem>
             <para><literal>Text::Unidecode</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>Try::Tiny</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>URI</literal></para>
           </listitem>
           </listitem>
 
           <listitem>
-            <para><literal>YAML</literal></para>
+            <para><literal>XML::LibXML</literal></para>
+          </listitem>
+
+          <listitem>
+            <para><literal>YAML::XS</literal> oder <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 größer v3.6.0 sind die folgenden Pakete hinzugekommen: <literal>IPC::Run</literal></para>
+
+        <para>Seit Version größer v3.5.8 sind die folgenden Pakete hinzugekommen: <literal>Imager</literal>, <literal>Imager::QRCode</literal>
+<literal>Rest::Client</literal><literal>Term::ReadLine::Gnu</literal></para>
+
+        <para>Seit Version größer v3.5.6 sind die folgenden Pakete hinzugekommen: <literal>Try::Tiny</literal>, <literal>Math::Round</literal></para>
+        <para>Seit Version größer v3.5.6 sind die folgenden Pakete hinzugekommen: <literal>XML::LibXML</literal>, <literal>CAM::PDF</literal></para>
+        <para>Seit Version größer v3.5.3 sind die folgenden Pakete hinzugekommen: <literal>Exception::Class</literal></para>
+
+        <para>Seit Version größer v3.5.1 sind die folgenden Pakete hinzugekommen: <literal>Set::Infinite</literal>,
+        <literal>List::UtilsBy</literal>, <literal>DateTime::Set</literal>, <literal>DateTime::Event::Cron</literal>
+        <literal>Daemon::Generic</literal>, <literal>DateTime::Event::Cron</literal>, <literal>File::Flock</literal>,
+        <literal>File::Slurp</literal></para>
+
+        <para>Seit Version größer v3.5.0 sind die folgenden Pakete
+        hinzugekommen: <literal>Text::Unidecode</literal>,
+        <literal>LWP::Authen::Digest</literal>,
+        <literal>LWP::UserAgent</literal></para>
 
         <para>Seit Version v3.4.0 sind die folgenden Pakete hinzugekommen:
-        <literal>Algorithm::CheckDigits</literal><literal>PBKDF2::Tiny</literal></para>
+        <literal>Algorithm::CheckDigits</literal>,
+        <literal>PBKDF2::Tiny</literal></para>
 
         <para>Seit Version v3.2.0 sind die folgenden Pakete hinzugekommen:
         <literal>GD</literal>, <literal>HTML::Restrict</literal>,
 
         <sect3>
           <title>Debian und Ubuntu</title>
-
           <para>Für Debian und Ubuntu stehen die meisten der benötigten
-          Perl-Pakete als Debian-Pakete zur Verfügung. Sie können mit
+          Pakete als Debian-Pakete zur Verfügung. Sie können mit
           folgendem Befehl installiert werden:</para>
 
           <programlisting>apt install  apache2 libarchive-zip-perl libclone-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 libcgi-pm-perl libtext-unidecode-perl
-</programlisting>
-
-          <para>Für das Paket HTML::Restrict gibt es kein Debian-Paket, dies
-          muß per CPAN installiert werden. Unter Ubuntu funktioniert das
-          mit:</para>
+  libcrypt-pbkdf2-perl git libcgi-pm-perl libtext-unidecode-perl libwww-perl \
+  postgresql-contrib poppler-utils libhtml-restrict-perl \
+  libdatetime-set-perl libset-infinite-perl liblist-utilsby-perl \
+  libdaemon-generic-perl libfile-flock-perl libfile-slurp-perl \
+  libfile-mimeinfo-perl libpbkdf2-tiny-perl libregexp-ipv6-perl \
+  libdatetime-event-cron-perl libexception-class-perl libcam-pdf-perl \
+  libxml-libxml-perl libtry-tiny-perl libmath-round-perl \
+  libimager-perl libimager-qrcode-perl librest-client-perl libipc-run-perl
+          </programlisting>
 
-          <programlisting>apt-get install build-essential
-cpan HTML::Restrict</programlisting>
+          <para>Sollten Pakete nicht zu Verfügung stehen, so können diese auch mittels CPAN installiert werden. Ferner muss für Ubuntu das Repository "Universe" aktiv sein (s.a. Anmerkungen).</para>
+          <note id="ubuntu-universe">
+            <para>Die Perl Pakete für Ubuntu befinden sich im "Universe" Repository. Falls dies nicht aktiv ist, kann dies mit folgendem Aufruf aktiviert werden:
+<programlisting>add-apt-repository universe</programlisting></para>
+          </note>
         </sect3>
 
         <sect3>
@@ -392,63 +487,123 @@ cpan HTML::Restrict</programlisting>
           RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
           installiert werden:</para>
 
-          <programlisting>dnf install httpd mod_fcgid perl-Archive-Zip perl-Clone perl-DBD-Pg \
-  perl-DBI perl-DateTime perl-Email-Address perl-Email-MIME perl-FCGI \
-  perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils perl-Net-SMTP-SSL perl-Net-SSLGlue \
-  perl-PDF-API2 perl-Params-Validate perl-Rose-DB perl-Rose-DB-Object \
+          <programlisting>dnf install httpd mod_fcgid postgresql-server postgresql-contrib\
+  perl-Algorithm-CheckDigits perl-Archive-Zip perl-CPAN perl-Class-XSAccessor \
+  perl-Clone perl-Config-Std perl-DBD-Pg perl-DBI perl-Daemon-Generic \
+  perl-DateTime perl-DateTime-Set perl-Email-Address perl-Email-MIME perl-FCGI \
+  perl-File-Copy-Recursive perl-File-Flock perl-File-MimeInfo perl-File-Slurp \
+  perl-GD perl-HTML-Restrict perl-JSON perl-List-MoreUtils perl-List-UtilsBy \
+  perl-Net-SMTP-SSL perl-Net-SSLGlue perl-PBKDF2-Tiny perl-PDF-API2 \
+  perl-Params-Validate perl-Regexp-IPv6 perl-Rose-DB perl-Rose-DB-Object \
   perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \
-  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
-  perl-XML-Writer perl-YAML perl-parent postgresql-server perl-CPAN \
-  perl-Algorithm-CheckDigits perl-GD perl-Class-XSAccessor perl-Text-Balanced</programlisting>
-
-          <para>Zusätzlich müssen einige Pakete aus dem CPAN installiert
-          werden. Dazu können Sie die folgenden Befehle nutzen:</para>
-
-          <programlisting>cpan Config::Std HTML::Restrict</programlisting>
+  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI perl-XML-Writer \
+  perl-YAML perl-libwww-perl</programlisting>
         </sect3>
 
         <sect3>
-          <title>openSUSE</title>
+          <title>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</title>
+
+          <para>Für openSUSE Leap 15.x stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung.</para>
+          <para>Damit diese installiert werden können, muß das System die erforderlichen Repositories kennen und Zugriff über das Internet darauf haben.</para>
+          <para>Daher machen wir die Repositories dem System bekannt.</para>
+          <para>Um die zusätzlichen Repositories für die Installation zur Verfügung zu stellen, kann man diese mit YaST oder auch in einem Terminal auf der Konsole bekannt geben. Wir beschränken uns hier mit der Eingabe auf der Konsole. In den allermeisten Fällen verwenden die Administratoren eine sichere SSH-Verbindung zum zu administrierenden Server.</para>
+          <para>Dazu geben wir folgenden Befehl ein:</para>
+          <programlisting>zypper addrepo -f \
+  http://download.opensuse.org/repositories/devel:languages:perl/openSUSE_Leap_15.2/ \
+  "devel:languages:perl"
+          </programlisting>
+          <programlisting>zypper addrepo -f \
+  https://download.opensuse.org/repositories/devel:languages:haskell:lts:13/\
+  openSUSE_Leap_15.0/ "devel:languages:haskell:lts:13"
+          </programlisting>
+          <programlisting>zypper addrepo -f \
+  https://download.opensuse.org/repositories/devel:languages:haskell:lts:13/\
+  openSUSE_Leap_15.0/ "devel:languages:haskell:lts:13"
+          </programlisting>
+          <para>Danach geben wir noch die beiden folgenden Befehle ein:</para>
+          <programlisting>zypper clean</programlisting>
+          <programlisting>zypper refresh</programlisting>
+          <para>Sollte zypper eine Meldung ausgeben, ob der Repositorie Key abgelehnt, nicht vertraut oder für immer akzeptiert werden soll, ist die Beantwortung durch drücken der "i" Taste am besten geeignet. Wer noch mehr über zypper erfahren möchte, kann sich einmal die zypper Hilfe anschauen.</para>
+          <programlisting>zypper --help</programlisting>
+          <note>
+          <para>Offiziell wird von openSUSE nur noch Versionen ab 15.2 unterstützt. Die SuSE Macher haben ab Version 15.x einen großen Umbau in der Verwaltung der Pakete vorgenommen, das heißt, der Paketumfang ist der SLES 15 als Programmunterbau angepasst. Dies gilt besonders der openSUSE Distribution. Es gibt ja einmal die openSUSE Distri und die Professionelle SLES Version. Dadurch sind viele Pakete aus dem ursprünglich nur für die openSUSE geltenen Repositorie enfernt worden, aber auch viele auf aktuellem Stand gehalten.</para>
+          </note>
+          <para>Ab openSUSE Leap 15.x kann man die Distribution auch als reine Text Version, also ohne KDE Oberfläche aufsetzen. Vorteil hierbei ist, dass weniger Balast und unnötige Pakte installiert werden.</para>
+          <para>Bei openSUSE Versionen bis 15.x, also 10.x, 11.x, 12.x, 13.x hatte der Administrator die Möglichkeit, bei der Installation der Distribution die KDE Oberfläche zu aktivieren. In dieser Konstellation hat man die Möglichkeit, eine VNC Verbindung vom administrativen Client zu verwenden. Ist das nicht eingerichtet, arbeitet der Admin dann direkt am Bildschirm des Servers. Nun loggen wir uns am Server direkt ein, starten Yast2 in einer Konsole wie folgt:</para>
+          <para>yast2 return.</para>
+          <para>Oder über die Menüführung wie folgt: Ein Klick auf das runde Icon, ganz links unten in der Menüleiste, dann die Maus verfahren auf System und YaST.</para>
+          <para>Im weiteren Verlauf der Installation, beschränken wir uns mit dem Installations Werkzeug zypper. Zypper ist ein Komandozeilen basiertes Installations Tool, welches bei openSUSE Standard ist. Zypper weist ein etwas eigenartiges Verhalten auf, dass sich in etwa wie folgt darstellt. Hat man die Repositories eingerichtet, kann man diese mit Yast als auch mit Zypper benutzen, setzt man einen Befehl wie etwa: zypper up ab, so findet zypper mehr neuere Programmversionen als Yast. Ich habe im allgemeinen noch keine Nachteile damit erlebt.</para>
+          <para>Programmpakete können mit folgendem Befehl installiert werden:</para>
+          <para>zypper install Paketname</para>
+          <para>Es wird empfohlen zusätzliche Pakete nicht direkt mit CPAN zu installieren, da man diese auch über andere Repositories beziehen kann, die bei openSUSE zur Verfügung stehen. Dadurch hat man den Vorteil, dass die Pakete mit YaST verwaltet werden, also wieder deinstalliert oder durch neuere ersetzt werden können. Zudem kann man auch noch eventuelle Bugs an openSUSE senden und diese dem Maintainer melden.</para>
+
+          <programlisting>zypper install perl-threads-shared ghc-pdfinfo apache2-mod_fcgid \
+  yast2-http-server postgresql-server postgresql-contrib perl-Algorithm-CheckDigits \
+  perl-Archive-Zip perl-CGI perl-CGI-Ajax perl-Clone \
+  perl-Config-Std perl-Class-XSAccessor perl-Daemon-Generic perl-DateTime \
+  perl-DateTime-Event-Cron perl-DateTime-Format-Strptime perl-DateTime-Set \
+  perl-DBI perl-DBD-Pg perl-Devel-REPL perl-FastCGI perl-Email-Address \
+  perl-Email-MIME perl-Email-MIME-ContentType perl-Email-MIME-Encodings \
+  perl-FCGI perl-File-Copy-Recursive perl-File-Flock perl-File-MimeInfo \
+  perl-File-Slurp perl-GD perl-HTML-Restrict perl-Image-Info \
+  perl-JSON perl-List-MoreUtils perl-List-UtilsBy perl-Log-Log4perl perl-Net-LDAP-Server \
+  perl-Net-SSLGlue perl-Net-SMTP-SSL perl-PBKDF2-Tiny perl-PDF-API2 \
+  perl-Params-Validate perl-Regexp-IPv6 perl-Rose-DB perl-Rose-Object \
+  perl-Rose-DB-Object perl-MooseX-Role-Cmd perl-Set-Crontab perl-Set-Infinite \
+  perl-Sort-Naturally perl-String-ShellQuote perl-Sys-CPU perl-Template-Toolkit \
+  perl-Text-CSV_XS perl-Test-Deep perl-Test-Output perl-Text-Iconv \
+  perl-Text-Unidecode perl-URI perl-URI-Find perl-XML-Writer \
+  perl-YAML perl-libwww-perl
+          </programlisting>
 
-          <para>Für openSUSE stehen die meisten der benötigten Perl-Pakete als
-          RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
-          installiert werden:</para>
+          <para>Für die Entwickler installiert man noch die folgenden Pakete:</para>
+
+          <programlisting>zypper install ghc-mtl-devel ghc-old-locale-devel \
+  ghc-process-extras-devel ghc-rpm-macros ghc-text-devel ghc-time-devel \
+  ghc-Cabal-devel ghc-time-locale-compat-devel perl-Log-Log4perl ghc-pdfinfo \
+  ghc-pdfinfo-devel perl-Devel-REPL perl-URI-Find perl-Class-Utils \
+  perl-Error-Pure perl-File-Object perl-Readonly perl-Test-Warnings \
+  perl-Test-NoWarnings perl-Test-Deep perl-Test-Output perl-Test-Strict \
+  perl-Test-LongString perl-File-Find-Rule
+          </programlisting>
 
-          <programlisting>zypper install apache2 apache2-mod_fcgid perl-Archive-Zip perl-Clone \
-  perl-Config-Std perl-DBD-Pg perl-DBI perl-DateTime perl-Email-Address \
-  perl-Email-MIME perl-FastCGI perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils \
-  perl-Net-SMTP-SSL perl-Net-SSLGlue perl-PDF-API2 perl-Params-Validate \
-  perl-Sort-Naturally perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \
-  perl-URI perl-XML-Writer perl-YAML perl-CPAN \
-  perl-Algorithm-CheckDigits perl-GD perl-Class-XSAccessor postgresql-server</programlisting>
+          <para>Zusätzlich müssen einige Pakete für den Umgang mit Latex installiert werden. Die Latex Module barcodes sind nützliche Helfer um auch Barcodes im Dokument zu platzieren, der Vollständigkeit halber hier für die Installation mit angegeben.
+              Dazu können Sie die folgenden Befehle nutzen:</para>
+
+          <programlisting>zypper install texlive-wallpaper texlive-colortbl \
+  texlive-scrlttr2copy texlive-eurosym \
+  texlive-geometry texlive-german texlive-graphbox texlive-hyperref \
+  texlive-xifthen texlive-luainputenc texlive-lastpage texlive-ltabptch \
+  texlive-nomentbl texlive-threeparttablex texlive-substr texlive-tabulary \
+  texlive-ulem texlive-wallpaper texlive-xcolor texlive-xstring \
+  texlive-xypic texlive-mwe texlive-mweights texlive-barcodes \
+  texlive-GS1 texlive-ean texlive-makebarcode texlive-pst-barcode \
+  texlive-upca
+          </programlisting>
 
           <para>Zusätzlich müssen einige Pakete aus dem CPAN installiert
-          werden. Dazu können Sie die folgenden Befehle nutzen:</para>
+          werden. Dazu können Sie die folgenden Befehle anwenden:</para>
 
-          <programlisting>cpan Rose::Db::Object</programlisting>
+          <programlisting>cpan DateTime::event::Cron DateTime::Set FCGI \
+  HTML::Restrict PBKDF2::Tiny Rose::Db::Object Set::Infinite</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>
+        <itemizedlist>
+          <listitem>
+            <para><literal>poppler-utils</literal> 'pdfinfo' zum Erkennen der Seitenanzahl bei der PDF-Generierung</para>
+          </listitem>
+          <listitem>
+            <para><literal>Postgres Trigram-Index</literal> Für datenbankoptimierte Suchanfragen. Bspw. im Paket <literal>postgresql-contrib</literal> enthalten</para>
+          </listitem>
+        </itemizedlist>
+        <para>Debian und Ubuntu: <programlisting>apt install postgresql-contrib poppler-utils</programlisting></para>
+        <para>Fedora: <programlisting>dnf install poppler-utils postgresql-contrib</programlisting></para>
+        <para>openSUSE: <programlisting>zypper install poppler-tools</programlisting></para>
       </sect2>
-
     </sect1>
 
     <sect1 id="Manuelle-Installation-des-Programmpaketes"
@@ -460,15 +615,15 @@ cpan HTML::Restrict</programlisting>
       url="https://github.com/kivitendo/kivitendo-erp/releases">hier</ulink>
       heruntergeladen werden.</para>
 
-      <para>Die kivitendo ERP Installationsdatei
-      (<filename>kivitendo-erp-3.4.1.tgz</filename>) wird im
+      <para>Das aktuelleste kivitendo ERP-Archiv
+      (<filename>kivitendo-erp-*.tgz</filename>) wird dann 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.1.tgz</programlisting>
+tar xvzf kivitendo-erp-*.tgz</programlisting>
 
       <para>Wechseln Sie in das entpackte Verzeichnis:</para>
 
@@ -489,7 +644,7 @@ tar xvzf kivitendo-erp-3.4.1.tgz</programlisting>
       restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer-
       und Gruppennamen sind bei verschiedenen Distributionen unterschiedlich
       (z.B. bei Debian/Ubuntu <constant>www-data</constant>, bei Fedora
-      <constant>apache</constant> oder bei OpenSUSE
+      <constant>apache</constant> oder bei openSUSE
       <constant>wwwrun</constant>).</para>
 
       <para>Der folgende Befehl ändert den Besitzer für die oben genannten
@@ -511,41 +666,45 @@ tar xvzf kivitendo-erp-3.4.1.tgz</programlisting>
         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>
+git checkout `git tag -l | egrep -ve "(alpha|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 alpha,
+        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://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>
+        <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"
+$ git checkout release-3.4.1                # das ist ein alter release aus dem wir starten ...
+$ git checkout -b meine_eigene_änderungen   # unser lokaler branch - unabhängig von allen anderen
+$ git add templates/mein_druck              # das sind unsere druckvorlagen inkl. produktbilder
+$ git commit -m "juhu tolle änderungen"
+
 [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
+ create mode 100644 templates/mein_druck/img/webdav/tesla.png
+ create mode 100644 templates/mein_druck/mahnung.tex
+ create mode 100644 templates/mein_druck/zahlungserinnerung_zwei.tex
+ create mode 100644 templates/mein_druck/zahlungserinnerung_zwei_invoice.tex
 
 # 5 Jahre später ...
+# webserver abschalten!
+
+$ git checkout master
+$ git pull                                  # oder git fetch und danach ein stable release tag auswählen (s.o.)
+$ git checkout meine_eigenen_änderungen
+$ git rebase master
 
-$ 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
+Wende an: juhu tolle änderungen
+$ service apache2 restart                   # webserver starten!
 </programlisting></para>
       </note>
     </sect1>
@@ -682,29 +841,40 @@ 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>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
@@ -713,7 +883,7 @@ default_manager = german</programlisting>
 
         <para>kivitendo bringt eine eigene Komponente zur zeitgesteuerten
         Ausführung bestimmter Aufgaben mit, den <link
-        linkend="config.task-server">Taskserver</link>. Er wird u.a. für
+        linkend="config.task-server">Task-Server</link>. Er wird u.a. für
         Features wie die <link
         linkend="features.periodic-invoices">wiederkehrenden Rechnungen</link>
         benötigt, erledigt aber auch andere erforderliche Aufgaben und muss
@@ -748,7 +918,19 @@ default_manager = german</programlisting>
       <title>Anpassung der PostgreSQL-Konfiguration</title>
 
       <para>PostgreSQL muss auf verschiedene Weisen angepasst werden.</para>
-
+      <para>Dies variert je nach eingesetzter Distribution, da distributionsabhängig unterschiedliche Strategien beim Upgrade der Postgres Version eingesetzt werden.
+            Als Hinweis einige Links zu den drei Distribution (Stand Dezember 2018):</para>
+          <itemizedlist>
+            <listitem>
+              <para><ulink url="https://fedoraproject.org/wiki/PostgreSQL">Fedora (Postgres-Installation unter Fedora)</ulink></para>
+            </listitem>
+            <listitem>
+              <para><ulink url="https://help.ubuntu.com/lts/serverguide/postgresql.html">Ubuntu (Infos für Postgres für die aktuelle LTS Version)</ulink></para>
+            </listitem>
+            <listitem>
+              <para><ulink url="https://de.opensuse.org/PostgreSQL">OpenSuSE (aktuell nur bis Version OpenSuSE 13 verifiziert)</ulink></para>
+            </listitem>
+          </itemizedlist>
       <sect2 id="Zeichensätze-die-Verwendung-von-UTF-8">
         <title>Zeichensätze/die Verwendung von Unicode/UTF-8</title>
 
@@ -829,6 +1011,35 @@ psql template1</programlisting> führen Sie die folgenden Kommandos aus:</para>
         </note>
       </sect2>
 
+      <sect2 id="Erweiterung-für-trigram">
+        <title>Erweiterung für Trigram Prozeduren</title>
+
+        <para>Ab Version 3.5.1 wird die Trigram-Index-Erweiterung benötigt.
+        Diese wird mit dem SQL-Updatescript
+        sql/Pg-upgrade2/trigram_extension.sql und Datenbank-Super-Benutzer
+        Rechten automatisch installiert. Dazu braucht der
+        DatenbankSuperbenutzer "postgres" ein Passwort.</para>
+
+        <programlisting>su - postgres
+psql
+\password postgres
+
+Eingabe Passwort
+\q</programlisting>
+
+        <para>Benutzername Postgres und Passwort können jetzt beim Anlegen
+        einer Datenbank bzw. bei Updatescripten, die SuperuserRechte
+        benötigen, eingegeben werden.</para>
+
+        <note>
+          <para><literal>pg_trgm</literal> ist je nach Distribution nicht im
+          Standard-Paket von Postgres enthalten. Ein <programlisting>select * from pg_available_extensions where name ='pg_trgm';</programlisting>
+          in template1 sollte entsprechend erfolgreich sein. Andernfalls muss
+          das Paket nachinstalliert werden, bspw. bei debian/ubuntu
+          <programlisting>apt install postgresql-contrib</programlisting></para>
+        </note>
+      </sect2>
+
       <sect2 id="Datenbankbenutzer-anlegen">
         <title>Datenbankbenutzer anlegen</title>
 
@@ -945,21 +1156,19 @@ Alias /kivitendo-erp/ /var/www/kivitendo-erp/
 
           <itemizedlist>
             <listitem>
-              <para>Apache 2.2.11 (Ubuntu) und mod_fcgid.</para>
+              <para>Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</para>
             </listitem>
-
             <listitem>
-              <para>Apache 2.2.11 / 2.2.22 (Ubuntu) und mod_fastcgi.</para>
+              <para>Apache 2.4.18 (Ubuntu 16.04 LTS) und mod_fcgid</para>
             </listitem>
-
             <listitem>
-              <para>Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</para>
+              <para>Apache 2.4.29 (Ubuntu 18.04 LTS) und mod_fcgid</para>
+            </listitem>
+             <listitem>
+              <para>Apache 2.4.41 (Ubuntu 20.04 LTS) und mod_fcgid</para>
             </listitem>
-          </itemizedlist>
 
-          <para>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
-          Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
-          mod_fastcgi nicht mehr explizit eingegangen.</para>
+          </itemizedlist>
 
           <para>Als Perl Backend wird das Modul <filename>FCGI.pm</filename>
           verwendet.</para>
@@ -1038,7 +1247,6 @@ Require all denied
             <programlisting>
   Order Deny,Allow
   Deny from All </programlisting>
-
           </warning>
 
           <para>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
@@ -1057,13 +1265,11 @@ FcgidMaxRequestLen 10485760
 &lt;Directory /path/to/kivitendo-erp&gt;
   AllowOverride All
   Options ExecCGI Includes FollowSymlinks
-  Order Allow,Deny
-  Allow from All
+  Require all granted
 &lt;/Directory&gt;
 
 &lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
-  Order Deny,Allow
-  Deny from All
+Require all denied
 &lt;/DirectoryMatch&gt;</programlisting>
 
           <para>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
@@ -1089,6 +1295,40 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
         </sect3>
       </sect2>
 
+      <sect2>
+       <title>Authentifizierung mittels HTTP Basic Authentication</title>
+
+       <para>
+        Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt
+        (siehe <ulink url="https://tools.ietf.org/html/rfc7617">RFC 7617</ulink>). Dazu ist es aber nötig, dass der dabei vom Client
+        mitgeschickte Header <constant>Authorization</constant> vom Webserver an Kivitendo über die Umgebungsvariable
+        <constant>HTTP_AUTHORIZATION</constant> weitergegeben wird, was standardmäßig nicht der Fall ist. Für Apache kann dies über die
+        folgende Konfigurationsoption aktiviert werden:
+       </para>
+
+       <programlisting>SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1</programlisting>
+      </sect2>
+      <sect2>
+       <title>Aktivierung von mod_rewrite/directory_match für git basierte Installationen</title>
+
+       <para>
+        Aufgrund von aktuellen (Mitte 2020) Sicherheitswarnungen für git basierte Webanwendungen ist die mitausgelieferte .htaccess
+        restriktiver geworden und verhindert somit das Auslesen von git basierten Daten.
+        Für debian/ubuntu muss das Modul mod_rewrite einmalig so aktiviert werden:
+        <programlisting>a2enmod rewrite</programlisting>
+        Alternativ und für Installationen ohne Apache ist folgender Artikel interessant:
+        <ulink url="https://www.cyberscan.io/blog/git-luecke">git-lücke</ulink>.
+        Anstelle des dort beschriebenen DirectoryMatch für Apache2 würden wir etwas weitergehend auch noch das Verzeichnis config miteinbeziehen
+        sowie ferner auch die Möglichkeit nicht ausschließen, dass es in Unterverzeichnissen auch noch .git Repositories geben kann.
+        Die Empfehlung für Apache 2.4 wäre damit:
+        <programlisting>
+        &lt;DirectoryMatch "/(\.git|config)/"&gt;
+          Require all denied
+        &lt;/DirectoryMatch&gt;</programlisting>
+       </para>
+      </sect2>
+
+
       <sect2>
         <title>Weitergehende Konfiguration</title>
 
@@ -1098,10 +1338,23 @@ 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> und einen aktuellen (Stand Mai 2017)
-        <ulink url="https://mozilla.github.io/server-side-tls/ssl-config-generator/">
+        (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>
+      <sect2>
+        <title>Aktivierung von Apache2 modsecurity</title>
+
+        <para>Aufgrund des OpenSource Charakters ist kivitendo nicht "out of the box" sicher.
+  Organisatorisch empfehlen wir hier die enge Zusammenarbeit mit einem kivitendo Partner der auch in der
+Lage ist weiterführende Fragen in Bezug auf Datenschutz und Datensicherheit zu beantworten.
+Unabhängig davon empfehlen wir im Webserver Bereich die Aktivierung und Konfiguration des Moduls modsecurity für den Apache2, damit
+XSS und SQL-Injections verhindert werden.</para>
+<para> Als Idee hierfür sei dieser Blog-Eintrag genannt:
+<ulink url="https://doxsec.wordpress.com/2017/06/11/using-modsecurity-web-application-firewall-to-prevent-sql-injection-and-xss-using-blocking-rules/">
+        Test Apache2 modsecurity for SQL Injection</ulink>.</para>
+      </sect2>
+
     </sect1>
 
     <sect1 id="config.task-server">
@@ -1121,12 +1374,17 @@ 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>
+      <para>Da der Task-Server als Perlscript läuft, wird Arbeitsspeicher, der
+      einmal benötigt wurde, nicht mehr an das Betriebssystem zurückgegeben,
+      solange der Task-Server läuft. Dies kann dazu führen, dass ein länger
+      laufender Task-Server mit der Zeit immer mehr Arbeitsspeicher für sich
+      beansprucht. Es ist deshalb sinnvoll, dass der Task-Server in
+      regelmässigen Abständen neu gestartet wird. Allerdings berücksichtigt der
+      Task-Server ein Memory-Limit, wenn dieses in der Konfigurationsdatei
+      angegeben ist. Bei Überschreiten dieses Limits beendet sich der
+      Task-Server. Sofern der Task-Server als systemd-Service mit dem
+      mitgelieferten Skript eingerichtet wurde, startet dieser danach
+      automatisch erneut.</para>
 
       <sect2 id="Konfiguration-des-Task-Servers">
         <title>Verfügbare und notwendige Konfigurationsoptionen</title>
@@ -1191,8 +1449,8 @@ 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. ältere Debian, ältere OpenSUSE,
-          ältere Fedora)</title>
+          <title>SystemV-basierende Systeme (z.B. ältere Debian, ältere
+          openSUSE, ältere Fedora)</title>
 
           <para>Kopieren Sie die Datei
           <filename>scripts/boot/system-v/kivitendo-task-server</filename>
@@ -1210,7 +1468,7 @@ insserv kivitendo-task-server</programlisting>
             </listitem>
 
             <listitem>
-              <para>Ältere OpenSUSE und ältere Fedora:</para>
+              <para>Ältere openSUSE und ältere Fedora:</para>
 
               <programlisting>chkconfig --add kivitendo-task-server</programlisting>
             </listitem>
@@ -1241,20 +1499,34 @@ insserv kivitendo-task-server</programlisting>
           <title>systemd-basierende Systeme (z.B. neure openSUSE, neuere
           Fedora, neuere Ubuntu und neuere Debians)</title>
 
-          <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>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>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>
+          <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>systemctl daemon-reload
 systemctl enable kivitendo-task-server.service</programlisting>
 
-          <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>
+          <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>
+
+          <para>Ein so eingerichteter Task-Server startet nach Beendigung
+          automatisch erneut. Das betrifft eine Beendigung über die Oberfläche,
+          eine Beendingung über die Prozesskontrolle und eine Beendigung bei
+          Überschreiten des Memory-Limits. Soll der Task-Server nicht erneut
+          starten, so können Sie ihn mit folgendem Befehl stoppen:</para>
+
+          <programlisting>systemctl stop kivitendo-task-server.service</programlisting>
+
         </sect3>
       </sect2>
 
@@ -1296,9 +1568,64 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
         <para>Dieselben Optionen können auch für die SystemV-basierenden
         Runlevel-Scripte benutzt werden (siehe oben).</para>
+
+        <para>Wurde der Task-Server als systemd-Service eingerichtet (s.o.),
+        so startet dieser nach Beendigung automatisch erneut.</para>
+
       </sect2>
-    </sect1>
+      <sect2 id="Tasks-konfigurieren">
+        <title>Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</title>
+
+        <para>Hintergrund-Jobs werden über System -> Hintergrund-Jobs und Task-Server -> Aktuelle Hintergrund-Jobs anzeigen -> Aktions-Knopf 'erfassen' angelegt. </para>
+        <para>Nachdem wir über das Menü dort angelangt sind, legen wir unseren exemplarischen Hintergrund-Jobs "Erhöhung der Nummernkreise" mit folgenden Werten an:</para>
+        <itemizedlist>
+          <listitem>
+            <para><literal>Aktiv:</literal> Hier ein 'Ja' auswählen</para>
+          </listitem>
+          <listitem>
+            <para><literal>Ausführungsart:</literal> 'wiederholte Ausführung' auswählen</para>
+          </listitem>
+          <listitem>
+            <para><literal>Paketname:</literal> 'SetNumberRange' auswählen</para>
+          </listitem>
+          <listitem>
+            <para><literal>Ausführungszeitplan:</literal> Hier entsprechend Werte wie in der crontab eingeben.</para><para>Syntax:</para>
+<programlisting>* * * * *
+┬ ┬ ┬ ┬ ┬
+│ │ │ │ │
+│ │ │ │ └──── Wochentag (0-7, Sonntag ist 0 oder 7)
+│ │ │ └────── Monat (1-12)
+│ │ └──────── Tag (1-31)
+│ └────────── Stunde (0-23)
+└──────────── Minute (0-59)  </programlisting>
+            <para>Die Sterne können folgende Werte haben:</para>
+            <programlisting>
+1 2 3 4 5
 
+1 = Minute (0-59)
+2 = Stunde (0-23)
+3 = Tag (0-31)
+4 = Monat (1-12)
+5 = Wochentag (0-7, Sonntag ist 0 oder 7)
+</programlisting>
+<para>Um die Ausführung auf eine Minute vor Sylvester zu setzen, müssen die folgenden Werte eingetragen werden:</para>
+<programlisting>59 23 31 12 *</programlisting>
+          </listitem>
+          <listitem>
+            <para><literal>Daten:</literal>In diesem Feld können optionale Parameter für den Hintergrund im JSON-Format gesetzt werden. Der Hintergrund-Job <literal>SetNumberRange</literal> akzeptiert zwei Variable nämlich <literal>digit_year</literal> sowieso <literal>multiplier</literal>.</para><para> <literal>digit_year</literal> kann zwei Werte haben entweder 2 oder 4, darüber wird gesteuert ob die Jahreszahl zwei oder vierstellig kodiert wird (für 2019, dann entweder 19 oder 2019). Der Standardwert ist vierstellig.</para><para> <literal>multiplier</literal> ist ein Vielfaches von 10, darüber wird die erste Nummer im Nummernkreis (die Anzahl der Stellen) wie folgt bestimmt:</para>
+<programlisting>
+multiplier     Nummernkreis 2020
+10        ->   20200
+100       ->   202000
+1000      ->   2020000
+</programlisting>
+<para>Wir gehen jetzt beispielhaft von einer letzten Rechnungsnummer von RE2019456 aus. Demnach sollte ab Januar 2020 die erste Nummer RE2020001 sein. Da der Task auch Präfixe berücksichtigt, kann dies mit folgenden JSON-kodierten Werten umgesetzt werden:</para>
+<para><literal>Daten:</literal></para><programlisting>multiplier: 100
+digits_year: 4</programlisting>
+          </listitem>
+        </itemizedlist>
+     </sect2>
+    </sect1>
     <sect1 id="Benutzerauthentifizierung-und-Administratorpasswort">
       <title>Benutzerauthentifizierung und Administratorpasswort</title>
 
@@ -1318,9 +1645,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
         Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
         abgelegt werden.</para>
 
-        <para>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter
-        entweder gegen die Authentifizierungsdatenbank oder gegen einen
-        LDAP-Server überprüft werden.</para>
+        <para>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen die Authentifizierungsdatenbank oder gegen einen oder
+        mehrere LDAP-Server überprüft werden.</para>
 
         <para>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
         kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
@@ -1403,22 +1729,28 @@ systemctl enable kivitendo-task-server.service</programlisting>
         <title>Passwortüberprüfung</title>
 
         <para>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
-        die Authentifizierungsdatenbank und gegen einen externen LDAP- oder
+        die Authentifizierungsdatenbank und gegen externe LDAP- oder
         Active-Directory-Server. Welche davon benutzt wird, regelt der
         Parameter <varname>module</varname> im Abschnitt
         <varname>[authentication]</varname>.</para>
 
-        <para>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
-        gespeichert werden, so muss der Parameter <varname>module</varname>
-        den Wert <literal>DB</literal> enthalten. In diesem Fall können sowohl
-        der Administrator als auch die Benutzer selber ihre Passwörter in
-        kivitendo ändern.</para>
+        <para>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
+        können aber auch mehrere angegeben werden. Weiterhin ist es möglich, das LDAP-Modul mehrfach zu verwenden und für jede Verwendung
+        eine unterschiedliche Konfiguration zu nutzen, z.B. um einen Fallback-Server anzugeben, der benutzt wird, sofern der Hauptserver
+        nicht erreichbar ist.</para>
+
+        <para>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
+        <varname>module</varname> das Modul <literal>DB</literal> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
+        Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</para>
 
-        <para>Soll hingegen ein externer LDAP- oder Active-Directory-Server
-        benutzt werden, so muss der Parameter <varname>module</varname> auf
-        <literal>LDAP</literal> gesetzt werden. In diesem Fall müssen
-        zusätzliche Informationen über den LDAP-Server im Abschnitt
-        <literal>[authentication/ldap]</literal> angegeben werden:</para>
+        <para>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
+        <varname>module</varname> den Wert <literal>LDAP</literal> enthalten. In diesem Fall müssen zusätzliche Informationen über den
+        LDAP-Server im Abschnitt <literal>[authentication/ldap]</literal> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
+        wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
+        den Modulnamen angehängt (<literal>LDAP:Name-der-Konfiguration</literal>). Der entsprechende Abschnitt in der Konfigurationsdatei
+        lautet dann <literal>[authentication/Name-der-Konfiguration]</literal>.</para>
+
+        <para>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</para>
 
         <variablelist>
           <varlistentry>
@@ -1449,6 +1781,17 @@ systemctl enable kivitendo-task-server.service</programlisting>
             </listitem>
           </varlistentry>
 
+          <varlistentry>
+            <term><literal>verify</literal></term>
+
+            <listitem>
+              <para>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <parameter>tls</parameter> gesetzt ist, so gibt dieser
+              Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <literal>require</literal> (Zertifikat
+              wird überprüft und muss gültig sei; dies ist der Standard) und <literal>none</literal> (Zertifikat wird nicht
+              überpfüft).</para>
+            </listitem>
+          </varlistentry>
+
           <varlistentry>
             <term><literal>attribute</literal></term>
 
@@ -1498,6 +1841,14 @@ systemctl enable kivitendo-task-server.service</programlisting>
               also ‘<literal>Martin Mustermann</literal>’.</para>
             </listitem>
           </varlistentry>
+
+          <varlistentry>
+            <term><literal>timeout</literal></term>
+
+            <listitem>
+              <para>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</para>
+            </listitem>
+          </varlistentry>
         </variablelist>
       </sect2>
 
@@ -1856,8 +2207,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
       einfachsten ist dazu eine <literal>texlive</literal> Installation. Unter
       debianoiden Betriebssystemen installiert man die Pakete mit:</para>
 
-      <para><programlisting>apt-get install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
-  texlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
+      <para><programlisting>apt install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
+  texlive-latex-extra texlive-lang-german ghostscript</programlisting></para>
 
       <para>Für Fedora benötigen Sie die folgenden Pakete:</para>
 
@@ -1871,24 +2222,23 @@ systemctl enable kivitendo-task-server.service</programlisting>
   texlive-collection-latexrecommended texlive-collection-langgerman \
   texlive-collection-langenglish</programlisting></para>
 
+      <note><para>kivitendo erwartet eine aktuelle TeX Live Umgebung, um PDF/A zu erzeugen. Aktuelle Distributionen von 2020 erfüllen diese. Überprüfbar ist dies mit dem Aufruf des installation_check.pl mit Parameter -l:</para><para><programlisting>scripts/installations_check.pl -l</programlisting></para></note>
       <para>kivitendo bringt drei alternative Vorlagensätze mit:</para>
 
       <itemizedlist>
         <listitem>
           <para>RB</para>
         </listitem>
-
         <listitem>
-          <para>f-tex</para>
+          <para>marei</para>
         </listitem>
-
         <listitem>
           <para>rev-odt</para>
         </listitem>
       </itemizedlist>
 
-      <para>Der ehemalige Druckvorlagensatz "Standard" wurde mit der Version
-      3.3 entfernt, da er nicht mehr gepflegt wurde.</para>
+      <para>Der ehemalige Druckvorlagensatz "f-tex" wurde mit der Version
+      3.5.6 entfernt, da er nicht mehr gepflegt wird.</para>
 
       <sect2 id="Vorlagenverzeichnis-anlegen"
              xreflabel="Vorlagenverzeichnis anlegen">
@@ -1912,7 +2262,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
           <listitem>
             <para><option>Vorlagen auswählen</option>: Wählen Sie hier den
             Vorlagensatz aus, der kopiert werden soll
-            (<filename>RB</filename>, <filename>f-tex</filename> oder
+            (<filename>RB</filename>, <filename>marei</filename> oder
             <filename>odt-rev</filename>.)</para>
           </listitem>
 
@@ -1970,302 +2320,62 @@ systemctl enable kivitendo-task-server.service</programlisting>
         </itemizedlist>
       </sect2>
 
-      <sect2 id="f-tex">
-        <title>f-tex</title>
-
-        <para>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur
-        Verfügung stellt.</para>
+     <sect2 id="Vorlagen-rev-odt">
+        <title>Der Druckvorlagensatz rev-odt</title>
 
-        <sect3 id="f-tex-Feature-Übersicht">
-          <title>Feature-Übersicht</title>
+        <para>Hierbei handelt es sich um einen Dokumentensatz der mit
+        odt-Vorlagen erstellt wurde. Es gibt in dem Verzeichnis eine
+        Readme-Datei, die eventuell aktueller als die Dokumentation hier ist.
+        Die odt-Vorlagen in diesem Verzeichnis "rev-odt" wurden von revamp-it,
+        Zürich erstellt und werden laufend aktualisiert. Ein paar der
+        Formulierungen in den Druckvorlagen entsprechen dem Schweizer
+        Sprachgebrauch, z.B. "Offerte" oder "allfällig".</para>
 
-          <itemizedlist>
-            <listitem>
-              <para>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage
-              für alle briefartigen Dokumente verwendet. Also Angebot,
-              Rechnung, Proformarechnung, Lieferschein, aber eben nicht für
-              Paketaufkleber etc.</para>
-            </listitem>
+        <para>Hinweis zum Einsatz des Feldes "Land" bei den Stammdaten für
+        KundInnen und LieferantInnen, sowie bei Lieferadressen: Die in diesem
+        Vorlagensatz vorhandenen Vorlagen erwarten für "Land" das
+        entsprechende Kürzel, das in Adressen vor die Postleitzahl gesetzt
+        wird. Das Feld kann auch komplett leer bleiben. Wer dies anders
+        handhaben möchte, muss die Vorlagen entsprechend anpassen.</para>
 
-            <listitem>
-              <para>Leichte Anpassung an das Firmen-Layout durch Verwendung
-              eines Hintergrund-PDFs. Dieses kann leicht mit dem eigenen
-              Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp,
-              Adobe*)</para>
-            </listitem>
+        <para>odt-Vorlagen können mit LibreOffice oder OpenOffice editiert und
+        den eigenen Bedürfnissen angepasst werden. Wichtig beim Editieren von
+        if-Blöcken ist, dass immer der gesamte Block überschrieben werden muss
+        und nicht nur Teile davon, da dies sonst oft zu einer odt-Datei führt,
+        die vom Parser nicht korrekt gelesen werden kann.</para>
 
-            <listitem>
-              <para>Hintergrund-PDF umschaltbar auf "nur erste Seite"
-              (Standard) oder "alle Seiten" (Option
-              "<option>bgPdfFirstPageOnly</option>" in Datei
-              <filename>letter.lco</filename>)</para>
-            </listitem>
+        <para>Mahnungen können unter folgenden Einschränkungen mit den
+        odt-Vorlagen im Vorlagensatz rev-odt erzeugt werden:</para>
 
-            <listitem>
-              <para>Hintergrund-PDF für Ausdruck auf bereits bedrucktem
-              Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
-              versendeten Dokumenten eingebunden (Option
-              "<option>bgPdfEmailOnly</option>" in Datei
-              <filename>letter.lco</filename>).</para>
-            </listitem>
+        <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>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch,
-              Wiederholung von Kopfzeilen, Zwischensummen etc. (danke an
-              Kai-Martin Knaak für die Vorarbeit)</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>
 
-            <listitem>
-              <para>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom
-              Land des eigenen Unternehmens abweicht (also die Rechnung das
-              Land verlässt).</para>
-            </listitem>
+        <para>Mehrere Mahnungen für eine Kundin / einen Kunden werden zu einer
+        PDF-Datei zusammengefasst</para>
 
-            <listitem>
-              <para>Multisprachfähig leicht um weitere Sprachen zu erweitern,
-              alle Übersetzungen in der Datei
-              <filename>translatinos.tex</filename>.</para>
-            </listitem>
+        <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>
 
-            <listitem>
-              <para>Auflistung von Bruttopreisen für Endverbraucher.</para>
-            </listitem>
-          </itemizedlist>
-        </sect3>
+        <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>
 
-        <sect3 id="f-tex-Installation">
-          <title>Die Installation</title>
-
-          <itemizedlist>
-            <listitem>
-              <para>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <xref
-              linkend="Vorlagenverzeichnis-anlegen"/>. Das Vorlagensystem
-              funktioniert jetzt schon, hat allerdings noch einen
-              Beispiel-Briefkopf.</para>
-            </listitem>
-
-            <listitem>
-              <para>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
-              <filename>./letter_head.pdf</filename>.</para>
-            </listitem>
-
-            <listitem>
-              <para>Editiere den Bereich "<option>settings</option>" in der
-              datei <filename>letter.lco</filename>.</para>
-            </listitem>
-          </itemizedlist>
-
-          <para>oder etwas detaillierter:</para>
-
-          <para>Es wird eine Datei <filename>sample.lco</filename> erstellt
-          und diese nach <filename>letter.lco</filename> verlinkt. Eigentlich
-          ist dies die Datei die für die firmenspezifischen Anpassungen
-          gedacht ist. Da die Einstiegshürde in LaTeX nicht ganz niedrig ist,
-          wird in dieser Datei auf ein Hintergrund-PDF verwiesen. Ich empfehle
-          über dieses PDF die persönlichen Layoutanpassungen vorzunehmen und
-          <filename>sample.lco</filename> unverändert zu lassen. Die Anpassung
-          über eine <filename>*.lco</filename>-Datei, die letztlich auf
-          <filename>letter.lco</filename> verlinkt ist ist aber auch
-          möglich.</para>
-
-          <para>Es wird eine Datei <filename>sample_head.pdf</filename> mit
-          ausgeliefert, diese wird nach <filename>letter_head.pdf</filename>
-          verlinkt. Damit gibt es schon mal eine funktionsfähige Vorlage.
-          Schau Dir nach Abschluss der Installation die Datei
-          <filename>sample_head.pdf</filename> an und erstelle ein
-          entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
-          Template Verzeichniss ablegen und statt
-          <filename>sample_head.pdf</filename> nach
-          <filename>letter_head.pdf</filename> verlinken.</para>
-
-          <para>Letzlich muss <filename>letter_head.pdf</filename> auf das
-          passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
-          enthält.</para>
-
-          <para>Es wird eine Datei <filename>mydata.tex.example</filename>
-          ausgeliefert, die nach <filename>mytdata.tex</filename> verlinkt
-          ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das
-          Land verwendet. Die Datei muss also nicht angefasst werden. Die
-          anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit
-          nicht im öffentlichen Zweig).</para>
-
-          <para>Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
-          sollten über die Hintergrund-PDF-Datei oder die
-          <filename>*.lco</filename>-Datei erfolgen.</para>
-        </sect3>
-
-        <sect3 id="f-tex-Funktionsübersicht">
-          <title>f-tex Funktionsübersicht</title>
-
-          <para>Das Konzept von kivitendo sieht vor, für jedes Dokument
-          (Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine
-          LaTeX-Vorlage vorzuhalten, dies ist sehr wartungsunfreundlich. Auch
-          das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
-          bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen
-          aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
-          briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
-          LaTeX-Vorlage verwendet, welche über Codeweichen die Besonderheiten
-          der jeweiligen Dokumente berücksichtigt:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>Tabellen mit oder ohne Preis</para>
-            </listitem>
-
-            <listitem>
-              <para>Sprache der Tabellenüberschriften etc.</para>
-            </listitem>
-
-            <listitem>
-              <para>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
-              Angebotsnummer)</para>
-            </listitem>
-
-            <listitem>
-              <para>Darstellung von Brutto oder Netto-Preisen in der
-              Auflistung (Endverbraucher versus gewerblicher Kunde)</para>
-            </listitem>
-          </itemizedlist>
-
-          <para>Nachteil:</para>
-
-          <para>LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei
-          <filename>letter.tex</filename> ist sehr komplex und verstärkt damit
-          diesen Effekt noch einmal erheblich. Wer LaTeX-Erfahrung hat, oder
-          geübt ist Scriptsparachen nachzuvollziehen kann natürlich auch
-          innerhalb der Tabellendarstellung gut persönliche Anpassungen
-          vornehmen. Aber man kann sich hier bei Veränderungen sehr schnell
-          heftig in den Fuss schiessen.</para>
-
-          <para>Wer nicht so tief in die Materie einsteigen will oder leicht
-          zu frustrieren ist, sollte sein Hintergrund-PDF auf Basis der
-          mitglieferten Datei <filename>sample_head.pdf</filename> erstellen,
-          und sich an der Form der dargestellten Tabellen, wie sie
-          ausgeliefert werden, erfreuen.</para>
-
-          <para>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine,
-          kontinuierliche Schritte gehen.</para>
-        </sect3>
-
-        <sect3 id="f-tex-Bruttopreise">
-          <title>Bruttopreise für Endverbraucher</title>
-
-          <para>Der auszuweisende Bruttopreis wird innerhalb der
-          LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen
-          "alle Preise Brutto" auszuwählen, aber:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>hierfür müssen die Preise auch in Brutto in der Datenbank
-              stehen (ja - das lässt sich über die Preisgruppen und die
-              Zuordung einer Default-Preisgruppe handhaben)</para>
-            </listitem>
-
-            <listitem>
-              <para>man darf beim Anlegen des Vorgangs nicht vergessen, dieses
-              Häkchen zu setzen. (Das ist in der Praxis, wenn man sowohl
-              Endverbraucher als auch Gewerbekunden beliefert, der eigentliche
-              Knackpunkt)</para>
-            </listitem>
-          </itemizedlist>
-
-          <para>Es gibt mit f-tex eine weitere Alternative. Die Information ob
-          Brutto oder Nettorechnung wird mit den Zahlarten verknüpft.
-          Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben
-          werden sollen, enden mit "_E" (für Endverbraucher). Falls identische
-          Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt
-          man diese einfach doppelt an (einmal mit der Namensendung "_E").
-          Gewinn:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>Die Entscheidung, ob Nettopreise ausgewiesen werden, ist
-              nicht mehr fix mit einer Preisliste verbunden.</para>
-            </listitem>
-
-            <listitem>
-              <para>Die Default-Zahlart kann im Kundendatensatz hinterlegt
-              werden, und man muss nicht mehr daran denken, "alle Preise
-              Netto" auszuwählen.</para>
-            </listitem>
-
-            <listitem>
-              <para>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen
-              werden, kann direkt beim Drucken revidiert werden, ohne dass
-              sich der Auftragswert ändert.</para>
-            </listitem>
-          </itemizedlist>
-        </sect3>
-
-        <sect3 id="f-tex-lieferadressen">
-          <title>Lieferadressen</title>
-
-          <para>In Lieferscheinen kommen <varname>shipto*</varname>-Variablen
-          im Adressfeld zum Einsatz. Wenn die
-          <varname>shipto*</varname>-Variable leer ist, wird die entsprechende
-          Adressvariable eingesetzt. Wenn also die Lieferadresse in Straße,
-          Hausnummer und Ort abweicht, müssen auch nur diese Felder in der
-          Lieferadresse ausgefüllt werden. Für den Firmenname wird der Wert
-          der Hauptadresse angezeigt.</para>
-        </sect3>
-      </sect2>
-
-      <sect2 id="Vorlagen-rev-odt">
-        <title>Der Druckvorlagensatz rev-odt</title>
-
-        <para>Hierbei handelt es sich um einen Dokumentensatz der mit
-        odt-Vorlagen erstellt wurde. Es gibt in dem Verzeichnis eine
-        Readme-Datei, die eventuell aktueller als die Dokumentation hier ist.
-        Die odt-Vorlagen in diesem Verzeichnis "rev-odt" wurden von revamp-it,
-        Zürich erstellt und werden laufend aktualisiert. Ein paar der
-        Formulierungen in den Druckvorlagen entsprechen dem Schweizer
-        Sprachgebrauch, z.B. "Offerte" oder "allfällig".</para>
-
-        <para>Hinweis zum Einsatz des Feldes "Land" bei den Stammdaten für
-        KundInnen und LieferantInnen, sowie bei Lieferadressen: Die in diesem
-        Vorlagensatz vorhandenen Vorlagen erwarten für "Land" das
-        entsprechende Kürzel, das in Adressen vor die Postleitzahl gesetzt
-        wird. Das Feld kann auch komplett leer bleiben. Wer dies anders
-        handhaben möchte, muss die Vorlagen entsprechend anpassen.</para>
-
-        <para>odt-Vorlagen können mit LibreOffice oder OpenOffice editiert und
-        den eigenen Bedürfnissen angepasst werden. Wichtig beim Editieren von
-        if-Blöcken ist, dass immer der gesamte Block überschrieben werden muss
-        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>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>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>
-      </sect2>
+        <para>Fehlermeldungen, Anregungen und Wünsche bitte senden an:
+        empfang@revamp-it.ch</para>
+      </sect2>
 
       <sect2 id="allgemeine-hinweise-zu-latex">
         <title>Allgemeine Hinweise zu LaTeX Vorlagen</title>
@@ -2358,9 +2468,9 @@ systemctl enable kivitendo-task-server.service</programlisting>
       <title>OpenDocument-Vorlagen</title>
 
       <para>kivitendo unterstützt die Verwendung von Vorlagen im
-      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-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
       <filename>config/kivitendo.conf</filename> die Variable
       <literal>opendocument</literal> im Abschnitt
@@ -2369,42 +2479,47 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
       <para>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
       weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
-      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>
+      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> 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>
+      <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
-      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>
+      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 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
-        Abschnitt <literal>applications</literal> wird der Interpreter selber
+        <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 Abschnitt
+        <literal>applications</literal> wird der Interpreter selber
         festgelegt; sie steht standardmäßig auf dem eben erwähnten Wert
         <literal>/usr/bin/python</literal>.</para>
 
@@ -2421,27 +2536,26 @@ systemctl enable kivitendo-task-server.service</programlisting>
       </note>
 
       <para>Ist <literal>$openofficeorg_daemon</literal> nicht gesetzt, so
-      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
+      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/print/rev-odt/invoice.odt</literal>’
-      enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
-      ebenfalls enthalten sein muss.</para>
+      ‘<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 bzw. LibreOffice dem Verzeichnis mit den Benutzereinstellungen
-      gibt. Unter Debian ist dies momentan
-      <literal>~/.config/libreoffice</literal>. kivitendo verwendet das
-      Verzeichnis <literal>users/.openoffice.org2</literal>.
-      Eventuell muss dieses Verzeichnis umbenannt werden.</para>
+      <para>Als letztes muss herausgefunden werden, welchen Namen OpenOffice
+      bzw. LibreOffice dem Verzeichnis mit den Benutzereinstellungen gibt.
+      Unter Debian ist dies momentan <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>
@@ -2464,7 +2578,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
           sales_order_besr.odt</para>
         </sect3>
 
-        <sect3>
+        <sect3 id="opendocument-druckvorlagen-mit-makros.vorbereitungen">
           <title>Vorbereitungen im Adminbereich</title>
 
           <para>Damit beim Erstellen von Rechnungen und Aufträgen neben der
@@ -2482,22 +2596,21 @@ systemctl enable kivitendo-task-server.service</programlisting>
             </listitem>
 
             <listitem>
-              <para>Druckerbeschreibung → aussagekräftiger Text: wird in
-              der Auftrags- bzw. Rechnungsmaske als Auswahl angezeigt (z.B.
-              mit Einzahlungsschein Bank xy)</para>
+              <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 → beliebiger Text (hat für das Erzeugen
-              von Aufträgen oder Rechnungen als odt-Datei keine Bedeutung,
-              darf aber nicht leer sein)</para>
+              <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 → besr bzw. selbst gewähltes
-              Vorlagensuffix (muss genau der Zeichenfolge entsprechen, die
-              zwischen "invoice_" bzw. "sales_order_" und ".odt"
-              steht.)</para>
+              <para>Vorlagenkürzel → besr bzw. selbst gewähltes Vorlagensuffix
+              (muss genau der Zeichenfolge entsprechen, die zwischen
+              "invoice_" bzw. "sales_order_" und ".odt" steht.)</para>
             </listitem>
 
             <listitem>
@@ -2516,8 +2629,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
           <itemizedlist>
             <listitem>
-              <para>Programm → Benutzereinstellungen →
-              Druckoptionen</para>
+              <para>Programm → Benutzereinstellungen → Druckoptionen</para>
             </listitem>
 
             <listitem>
@@ -2529,8 +2641,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
             </listitem>
 
             <listitem>
-              <para>Standarddrucker → gewünschte Druckerbeschreibung
-              auswählen (z.B. mit Einzahlungsschein Bank xy)</para>
+              <para>Standarddrucker → gewünschte Druckerbeschreibung auswählen
+              (z.B. mit Einzahlungsschein Bank xy)</para>
             </listitem>
 
             <listitem>
@@ -2606,8 +2718,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
                   </listitem>
 
                   <listitem>
-                                       <para>DDDEND: muss am Ende der Zeile vorhanden sein</para>
-                                 </listitem>
+                    <para>DDDEND: muss am Ende der Zeile vorhanden sein</para>
+                  </listitem>
                 </itemizedlist></para>
             </listitem>
 
@@ -2655,8 +2767,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
           <itemizedlist>
             <listitem>
-              <para>Extras → Optionen → Sicherheit →
-              Makrosicherheit</para>
+              <para>Extras → Optionen → Sicherheit → Makrosicherheit</para>
             </listitem>
 
             <listitem>
@@ -2668,8 +2779,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
             <listitem>
               <para>Beim Öffnen einer odt-Rechnung oder eines odt-Auftrags bei
-              der entsprechenden Nachfrage "Makros ausführen" auswählen.
-              </para>
+              der entsprechenden Nachfrage "Makros ausführen"
+              auswählen.</para>
 
               <para><emphasis role="bold">Wichtig</emphasis>: die Makros sind
               so eingestellt, dass sie beim Öffnen der Vorlagen selbst nicht
@@ -2680,6 +2791,193 @@ systemctl enable kivitendo-task-server.service</programlisting>
           </itemizedlist>
         </sect3>
       </sect2>
+
+      <sect2>
+        <title>Schweizer QR-Rechnung mit OpenDocument Vorlagen</title>
+
+        <sect3>
+          <title>Übersicht</title>
+
+          <para>Mit der Version 3.6.0 unterstützt Kivitendo die Erstellung von
+          Schweizer QR-Rechnungen gemäss <ulink
+          url="https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-de.pdf">Swiss
+          Payment Standards, Version 2.2</ulink>. Implementiert sind hierbei die
+          Varianten:</para>
+
+          <itemizedlist>
+            <listitem>
+              <para><emphasis role="bold">QR-IBAN mit
+              QR-Referenz</emphasis></para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis role="bold">IBAN ohne Referenz</emphasis></para>
+            </listitem>
+          </itemizedlist>
+
+          <para>Der Vorlagensatz "rev-odt" enthält die Vorlage
+          <literal>invoice_qr.odt</literal>, welche für die Erstellung von
+          QR-Rechnungen vorgesehen ist. Damit diese verwendet werden kann muss
+          wie obenstehend beschrieben ein Drucker hinzugefügt werden (siehe
+          <xref linkend="opendocument-druckvorlagen-mit-makros.vorbereitungen"/>
+          ). Alternativ kann die Vorlage umbenannt werden in
+          <literal>invoice.odt</literal>.</para>
+
+          <para>Die Vorlage <literal>invoice_qr.odt</literal> kann beliebig
+          angepasst werden. Zwingend muss diese jedoch das QR-Code Platzhalter
+          Bild, als eingebettetes Bild, enthalten. Da dieses beim
+          Ausdrucken/Erzeugen der Rechnung durch das neu generierte QR-Code
+          Bild ersetzt wird.</para>
+        </sect3>
+
+        <sect3>
+          <title>Einstellungen</title>
+
+          <sect4>
+            <title>Mandantenkonfiguration</title>
+
+            <para>Unter <emphasis>System → Mandantenkonfiguration →
+            Features</emphasis>. Im Abschnitt <emphasis>Einkauf und
+            Verkauf</emphasis>, beim Punkt <emphasis>Verkaufsrechnungen mit
+            Schweizer QR-Rechnung erzeugen</emphasis>, die gewünschte Variante
+            wählen.</para>
+          </sect4>
+
+          <sect4>
+            <title>Konfiguration der Bankkonten</title>
+
+            <para>Unter <emphasis>System → Bankkonten</emphasis> muss bei
+            mindestens einem Bankkonto die Option <emphasis>Nutzung mit
+            Schweizer QR-Rechnung</emphasis> auf <emphasis
+            role="bold">Ja</emphasis> gestellt werden.</para>
+
+            <tip>
+              <para>Für die Variante <emphasis role="bold">QR-IBAN mit
+              QR-Referenz</emphasis> muss dieses Konto unter IBAN eine gültige
+              <emphasis role="bold">QR-IBAN Nummer</emphasis> enthalten. Diese
+              unterscheidet sich von der regulären IBAN.</para>
+
+              <para>Zusätzlich muss eine gültige <emphasis role="bold">Bankkonto
+              Identifikationsnummer</emphasis> angegeben werden
+              (6-stellig).</para>
+
+              <para>Diese werden von der jeweiligen Bank vergeben.</para>
+            </tip>
+
+            <para>Sind mehrere Konten ausgewählt wird das erste
+            verwendet.</para>
+          </sect4>
+
+          <sect4>
+            <title>Rechnungen ohne Betrag</title>
+
+            <para>Für Rechnungen ohne Betrag (z.B. Spenden) kann, in der
+            jeweiligen Rechnung, die Checkbox <emphasis>QR-Rechnung ohne
+            Betrag</emphasis> aktiviert werden. Diese Checkbox erscheint nur,
+            wenn QR-Rechnungen in der Mandantenkonfiguration aktiviert sind
+            (variante ausgewählt).</para>
+
+            <para>Dies wirkt sich lediglich auf den erzeugten QR-Code aus. Die
+            Vorlage muss separat angepasst und ausgewählt werden.</para>
+          </sect4>
+        </sect3>
+
+        <sect3>
+          <title>Adressdaten</title>
+
+          <para>Die Adressdaten zum Zahlungsempfänger werden aus der
+          Mandantenkonfiguration entnommen. Unter <emphasis>System →
+          Mandantenkonfiguration → Verschiedenes</emphasis>, Abschnitt
+          <emphasis>Firmenname und -adresse.</emphasis></para>
+
+          <para>Die Adressdaten zum Zahlungspflichtigen stammen aus den
+          Kundendaten der jeweiligen Rechnung.</para>
+
+          <para>Die Adressen müssen inklusive Land angegeben werden. Akzeptiert
+          werden Ländername oder Ländercode, also z.B. "Schweiz" oder "CH".
+          </para>
+
+          <para>Diese können in der Vorlage mit den jeweiligen Variablen
+          eingetragen werden. Siehe auch: <xref
+          linkend="dokumentenvorlagen-und-variablen"/></para>
+
+          <para>Der erzeugte QR-Code verwendet Adress-Typ "K" (Kombinierte
+          Adressfelder, 2 Zeilen).</para>
+        </sect3>
+
+        <sect3>
+          <title>Referenznummer</title>
+
+          <para>Die Referenznummer wird in Kivitendo erzeugt und setzt sich
+          wiefolgt zusammen:</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>Bankkonto Identifikationsnummer (6-stellig)</para>
+            </listitem>
+
+            <listitem>
+              <para>Kundennummer (6-stellig, mit führenden Nullen
+              aufgefüllt)</para>
+            </listitem>
+
+            <listitem>
+              <para>Auftragsnummer (7-stellig, mit führenden Nullen
+              aufgefüllt)</para>
+            </listitem>
+
+            <listitem>
+              <para>Rechnungsnummer (7-stellig, mit führenden Nullen
+              aufgefüllt)</para>
+            </listitem>
+
+            <listitem>
+              <para>Prüfziffer (1-stellig, berechnet mittels modulo 10,
+              rekursiv)</para>
+            </listitem>
+          </itemizedlist>
+
+          <para>Es sind lediglich Ziffern erlaubt. Allfällige Prefixe mit
+          Buchstaben werden entfernt und fehlende Stellen werden mit führenden
+          Nullen aufgefüllt.</para>
+        </sect3>
+
+        <sect3>
+          <title>Zusätzliche Variablen für Vorlage</title>
+
+          <para>Zusätzlich zu den in der Vorlage standardmässig verfügbaren
+          Variablen (siehe <xref linkend="dokumentenvorlagen-und-variablen"/>),
+          werden die folgenden Variablen erzeugt:</para>
+
+          <variablelist>
+            <varlistentry>
+              <term>ref_number_formatted</term>
+
+              <listitem>
+                <para>Referenznummer formatiert mit Leerzeichen, z.B.: 21 00000
+                00003 13947 14300 09017</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>iban_formatted</term>
+
+              <listitem>
+                <para>IBAN formatiert mit Leerzeichen</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>amount_formatted</term>
+
+              <listitem>
+                <para>Betrag formatiert mit Tausendertrennzeichen Leerschlag,
+                z.B.: 1 005.55</para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </sect3>
+      </sect2>
     </sect1>
 
     <sect1 id="nomenclature">
@@ -2688,42 +2986,42 @@ systemctl enable kivitendo-task-server.service</programlisting>
       <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>
+        <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><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>
+            <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><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>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>
+            <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>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>
+            <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>
@@ -2814,21 +3112,23 @@ systemctl enable kivitendo-task-server.service</programlisting>
         eingestellt werden.</para>
 
         <para>Für die Schweiz sind folgende Einstellungen üblich:
-               <itemizedlist>
+        <itemizedlist>
             <listitem>
-                               <para>Sollversteuerung</para>
+              <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>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
@@ -2907,9 +3207,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
         <para>Die folgenden Schritte sind notwendig, um das Konto manuell
         anzulegen und zu konfigurieren. Zuerst wird in
-        <guimenu>System</guimenu> →
-        <guisubmenu>Kontenübersicht</guisubmenu> → <guimenuitem>Konto
-        erfassen</guimenuitem> das Konto angelegt.</para>
+        <guimenu>System</guimenu> → <guisubmenu>Kontenübersicht</guisubmenu> →
+        <guimenuitem>Konto erfassen</guimenuitem> das Konto angelegt.</para>
 
         <screenshot>
           <screeninfo>Konto 3804 erfassen</screeninfo>
@@ -2940,9 +3239,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
         <para>Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für
         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>
+        <guisubmenu>Steuern</guisubmenu> → <guimenuitem>Erfassen</guimenuitem>
+        auswählen und die Werte aus dem Screenshot übernehmen.</para>
 
         <screenshot>
           <screeninfo>Steuerschlüssel 13 für 3804 (19%) anlegen</screeninfo>
@@ -3045,88 +3343,102 @@ systemctl enable kivitendo-task-server.service</programlisting>
     </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>
+      <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>
+      <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>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>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>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>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>
 
-         <para>Abhängig vom Wert für <varname>default_manager</varname> in
-         <filename>config/kivitendo.conf</filename> werden dabei folgende
-         Werte voreingestellt:</para>
-         <itemizedlist>
+      <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>
+      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>
+      Standardkonten für Rundungserträge bzw. Rundungsaufwendungen
+      gebucht.</para>
 
-      <para>(Die berechnete MWST wird durch den Rundungsbetrag nicht mehr verändert.)</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>
+      <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">
@@ -3578,6 +3890,11 @@ systemctl enable kivitendo-task-server.service</programlisting>
         bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode dauert:
         <literal>Abrechnungszeitrum: &lt;%period_start_date FORMAT=%m/%Y%&gt;
         bis &lt;%period_end_date FORMAT=%m/%Y%&gt;</literal></para>
+
+        <para>Beim automatischen Versand der Rechnugen via E-Mail können neben diesen speziellen Variablen auch einige Eigenschaften der
+        Rechnung selber als Variablen im Betreff &amp; dem Text der E-Mails genutzt werden. Beispiele sind
+        <varname>&lt;%invnumber%&gt;</varname> für die Rechnungsnummber oder <varname>&lt;transaction_description%&gt;</varname> für die
+        Vorgangsbezeichnung. Diese Variablen stehen beim Erzeugen der Rechnung logischerweise noch nicht zur Verfügung.</para>
       </sect2>
 
       <sect2 id="features.periodic-invoices.reports">
@@ -3594,7 +3911,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
         <para>Die zeitliche und periodische Überprüfung, ob eine
         wiederkehrende Rechnung automatisch erstellt werden soll, geschieht
-        durch den <link linkend="config.task-server">Taskserver</link>, einen
+        durch den <link linkend="config.task-server">Task-Server</link>, einen
         externen Dienst, der automatisch beim Start des Servers gestartet
         werden sollte.</para>
       </sect2>
@@ -3604,7 +3921,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
 
         <para>Will man im laufenden Monat eine monatlich wiederkehrende
         Rechnung inkl. des laufenden Monats starten, stellt man das Startdatum
-        auf den Monatsanfang und wartet ein paar Minuten, bis der Taskserver
+        auf den Monatsanfang und wartet ein paar Minuten, bis der Task-Server
         den neu konfigurieren Auftrag erkennt und daraus eine Rechnung
         generiert hat. Alternativ setzt man das Startdatum auf den
         Monatsersten des Folgemonats und erstellt die erste Rechnung direkt
@@ -3642,8 +3959,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
         linkend="dokumentenvorlagen-und-variablen.tag-style"/>).</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>
+        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
@@ -4305,6 +4622,15 @@ systemctl enable kivitendo-task-server.service</programlisting>
               </listitem>
             </varlistentry>
 
+            <varlistentry>
+              <term><varname>natural_person</varname></term>
+
+              <listitem>
+                <para>Flag "natürliche Person"; Siehe auch
+                <xref linkend="dokumentenvorlagen-und-variablen.anrede"/></para>
+              </listitem>
+            </varlistentry>
+
             <varlistentry>
               <term><varname>payment_description</varname></term>
 
@@ -4779,6 +5105,32 @@ systemctl enable kivitendo-task-server.service</programlisting>
             </varlistentry>
           </variablelist>
         </sect3>
+
+        <sect3 id="dokumentenvorlagen-und-variablen.abweichende-rechnungsadresse">
+          <title>Informationen über abweichende Rechnungsadressen (nur Verkaufsbelege)</title>
+
+          <para>
+            Abweichende Rechnungsadressen gibt es nur in Verkaufsbelegen. Die entsprechenden Variablen sind nur dann mit Inhalt gefüllt,
+            wenn im Beleg eine abweichende Rechnungsadresse ausgewählt wurde. Ob eine Adresse überhaupt ausgewählt wurde, kann über die
+            Variable <literal>billing_address_id</literal> getestet werden, die die Datenbank-ID der abweichenden Rechnungsadresse enthält,
+            wenn eine ausgewählt ist.
+          </para>
+
+          <para>
+            Die Variablennamen starten alle mit dem Präfix <literal>billing_address_</literal> und heißen anschließend so, wie ihre Pendants
+            aus der Standard-Rechnungsadresse des Kunden. Beispiel: die Postleitzahl, die in der normalen Rechnungsadresse in
+            <literal>zipcode</literal> steht, steht für die abweichende Rechnungsadresse in <literal>billing_address_zipcode</literal>.
+          </para>
+
+          <para>
+            Die folgenden Variablen stehen so zur Verfügung: <literal>billing_address_name</literal>,
+            <literal>billing_address_department_1</literal>, <literal>billing_address_department_2</literal>,
+            <literal>billing_address_contact</literal>, <literal>billing_address_street</literal>,
+            <literal>billing_address_zipcode</literal>, <literal>billing_address_city</literal>, <literal>billing_address_country</literal>,
+            <literal>billing_address_gln</literal>, <literal>billing_address_email</literal>, <literal>billing_address_phone</literal> und
+            <literal>billing_address_fax</literal>.
+          </para>
+        </sect3>
       </sect2>
 
       <sect2 id="dokumentenvorlagen-und-variablen.invoice">
@@ -4937,8 +5289,8 @@ systemctl enable kivitendo-task-server.service</programlisting>
               <term><varname>rounding</varname></term>
 
               <listitem>
-                <para>Betrag, um den <varname>invtotal</varname> gerundet wurde
-                (kann positiv oder negativ sein)</para>
+                <para>Betrag, um den <varname>invtotal</varname> gerundet
+                wurde (kann positiv oder negativ sein)</para>
               </listitem>
             </varlistentry>
 
@@ -5085,7 +5437,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
               <term><varname>longdescription</varname></term>
 
               <listitem>
-                <para>Langtext</para>
+                <para>Langtext, vorbelegt mit dem Feld Bemerkungen der entsprechenden Ware</para>
               </listitem>
             </varlistentry>
 
@@ -5391,6 +5743,10 @@ systemctl enable kivitendo-task-server.service</programlisting>
           <para>Die benutzerdefinierten Variablen der Lieferadressen stehen
           unter einem ähnlichen Namensschema zur Verfügung. Hier lautet der
           Präfix <varname>shiptocvar_</varname>.</para>
+
+          <para>Analog stehen die benutzerdefinierten Variablen für
+          Ansprechpersonen mit dem Namenspräfix <varname>cp_cvar_</varname>
+          zur Verfügung.</para>
         </sect3>
       </sect2>
 
@@ -5413,18 +5769,21 @@ systemctl enable kivitendo-task-server.service</programlisting>
         <sect3 id="dokumentenvorlagen-und-variablen.dunning-allgemein">
           <title>Allgemeine Variablen in Mahnungen</title>
 
-          <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. Der Ansprechpartner <varname>cp_...</varname>
-          steht auch zu Verfügung, wird allerdings auch nur von der ersten angemahnten Rechnung (s.o.)
-          genommen.</para>
+          <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. 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>
 
@@ -6197,6 +6556,21 @@ Beschreibung: &lt;%description%&gt;
         <para>Der Befehl <command>&lt;bullet&gt;</command> funktioniert
         momentan auch nur in Latex-Vorlagen.</para>
       </sect2>
+
+      <sect2 id="dokumentenvorlagen-und-variablen.anrede"
+             xreflabel="Hinweise zur Anrede">
+        <title>Hinweise zur Anrede</title>
+
+        <para>Das Flag "natürliche Person"
+        (<varname>natural_person</varname>) aus den Kunden- oder
+        Lieferantenstammdaten kann in den Druckvorlagen zusammen mit
+        dem Feld "Anrede" (<varname>greeting</varname>) z.B. dafür
+        verwendet werden, die Anrede zwischen einer allgemeinen und
+        einer persönlichen Anrede zu unterscheiden.
+        <programlisting>&lt;%if natural_person%&gt;&lt;%greeting%&gt; &lt;%name%&gt;&lt;%else%&gt;Sehr geehrte Damen und Herren&lt;%end if%&gt;</programlisting>
+        </para>
+      </sect2>
+
     </sect1>
 
     <sect1 id="excel-templates">
@@ -6282,18 +6656,19 @@ Beschreibung: &lt;%description%&gt;
     </sect1>
 
     <sect1 id="features.warehouse">
-
-
       <title>Mandantenkonfiguration Lager</title>
 
-      <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>
+      <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>
@@ -6313,9 +6688,7 @@ Beschreibung: &lt;%description%&gt;
         </listitem>
       </itemizedlist>
 
-      <para>
-       Zusätzliche Funktionshinweise:
-      </para>
+      <para>Zusätzliche Funktionshinweise:</para>
 
       <itemizedlist>
         <listitem>
@@ -6332,48 +6705,47 @@ Beschreibung: &lt;%description%&gt;
           verwendet.</para>
         </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>
+      <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">
@@ -6382,13 +6754,13 @@ Beschreibung: &lt;%description%&gt;
       <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>
+        <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>
@@ -6457,13 +6829,13 @@ Beschreibung: &lt;%description%&gt;
           </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>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
@@ -6492,27 +6864,38 @@ Beschreibung: &lt;%description%&gt;
 
       <sect2>
         <title>Übersicht</title>
-        <para>Parallel zum alten WebDAV gibt es ein Datei-Management-System, das Dateien
-        verschiedenen Typs verwaltet. Dies können</para>
+
+        <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>
+            <para>aus ERP-Daten per LaTeX Template erzeugte
+            PDF-Dokumente,</para>
           </listitem>
+
           <listitem>
-            <para>zu bestimmten ERP-Daten gehörende Anhangdateien unterschiedlichen Formats,</para>
+            <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>
+            <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"/>
@@ -6524,165 +6907,233 @@ Beschreibung: &lt;%description%&gt;
       <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>
+        <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>
+            <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>
+
+        <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>
+            <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>
+            <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>
+            <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>
+
+        <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>
+            <para>"created": vom System erzeugte Dokumente"</para>
           </listitem>
+
           <listitem>
-            <para> "uploaded": hochgeladene Dokumente</para>
+            <para>"uploaded": hochgeladene Dokumente</para>
           </listitem>
+
           <listitem>
-            <para> "email": vom Mail-System empfangene Dateien</para>
+            <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>
+            <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>
+
+        <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>
+
+        <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"/>
+              <imagedata fileref="images/DMS-Anhaenge.png" scale="50"/>
             </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>
+
+        <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"/>
+              <imagedata contentwidth="40"
+                         fileref="images/DMS-Anhaenge-hochladen.png"
+                         width="100"/>
             </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>
+        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"/>
+              <imagedata fileref="images/DMS-Dokumente.png" width="500"/>
             </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>
+
+        <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"/>
+              <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>
+
+        <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">
+
+        <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>
+
+            <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 fileref="images/DMS-ClientConfig.png" width="500"/>
+                </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>
+
+            <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 fileref="images/DMS-Allgemeine-Dokumentenanhaenge.png"
+                             width="500"/>
+                </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">
+
+        <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>
+
+          <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
 ----+-----------+--------------+---------+----------+---------------------------
@@ -6693,21 +7144,382 @@ Beschreibung: &lt;%description%&gt;
   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>
+
+          <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">
+
+        <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>
+
+          <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>
+
+          <para>Unter diesem Wurzelverzeichnis wird pro Mandant automatisch
+          ein Unterverzeichnis mit der ID des Mandanten angelegt.</para>
         </sect3>
-     </sect2>
+      </sect2>
     </sect1>
+
+    <sect1>
+      <title>Webshop-Api</title>
+
+      <para>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
+      Onlineshopbestellungen zu verwalten und zu bearbeiten.</para>
+
+      <para>Es ist Multishopfähig, d.h. Artikel können mehreren oder
+      unterschiedlichen Shops zugeordnet werden. Bestellungen können aus
+      mehreren Shops geholt werden.</para>
+
+      <para>Zur Zeit bietet das Modul nur einen Connector zur REST-Api von
+      Shopware. Weitere Connectoren können dazu programmiert und eingerichtet
+      werden.</para>
+
+      <sect2>
+        <title>Rechte für die Webshopapi</title>
+
+        <para>In der Administration können folgende Rechte vergeben
+        werden</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Webshopartikel anlegen und bearbeiten</para>
+          </listitem>
+
+          <listitem>
+            <para>Shopbestellungen holen und bearbeiten</para>
+          </listitem>
+
+          <listitem>
+            <para>Shop anlegen und bearbeiten</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+
+      <sect2>
+        <title>Konfiguration</title>
+
+        <para>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
+        werden</para>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata contentdepth="500" contentwidth="700"
+                       fileref="images/Shop_Listing.png"/>
+          </imageobject>
+        </mediaobject>
+      </sect2>
+
+      <sect2>
+        <title>Webshopartikel</title>
+
+        <sect3>
+          <title>Shopvariablenreiter in Artikelstammdaten</title>
+
+          <para>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
+          Markers <emphasis role="bold">"Shopartikel" in den Basisdaten
+          </emphasis>zeigt sich der Reiter "Shopvariablen" in den
+          Artikelstammdaten. Hier können jetzt die Artikel mit
+          unterschiedlichen Beschreibung und/oder Preisen für die
+          konfigutierten Shops angelegt und bearbeitet werden. An dieser
+          Stelle können auch beliebig viele Bilder dem Shopartikel zugeordnet
+          werden. Artikelbilder gelten für alle Shops.</para>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata contentdepth="500" contentwidth="600"
+                         fileref="images/Shop_Artikel.png"/>
+            </imageobject>
+          </mediaobject>
+
+          <para>Die Artikelgruppen werden direkt vom Shopsystem geholt somit
+          ist es möglich einen Artikel auch mehreren Gruppen
+          zuzuordenen</para>
+        </sect3>
+
+        <sect3>
+          <title>Shopartikelliste</title>
+
+          <para>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
+          eine Gesamtübersicht. Von hier aus ist es möglich Artikel im Stapel
+          unter verschiedenen Kriterien &lt;alles&gt;&lt;nur Preis&gt;&lt;nur
+          Bestand&gt;&lt;Preis und Bestand&gt; an die jeweiligen Shops
+          hochzuladen.</para>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/Shop_Artikel_Listing.png"/>
+            </imageobject>
+          </mediaobject>
+        </sect3>
+      </sect2>
+
+      <sect2>
+        <title>Bestellimport</title>
+
+        <para>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
+        Bestellimportsliste. Hier ist sind Möglichkeiten gegeben Neue
+        Bestellungen vom Shop abzuholen, geholte Bestellungen im Stapel oder
+        einzeln als Auftrag zu transferieren. Die Liste kann nach
+        verschiedenen Kriterien gefiltert werden.</para>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="images/Shop_Bestell.png"/>
+          </imageobject>
+        </mediaobject>
+
+        <para>Bei Einträgen in der Liste.</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>keine Kundennummer: Es gibt ähnliche Kundendatensätze und
+            der Datensatz konnte nicht eindeutig zugewiesen werden.</para>
+          </listitem>
+
+          <listitem>
+            <para>Kundennummer und Rechnungen rot hinterlegt: Der Kunde hat
+            offene Posten und kann deswegen nicht im Stapel übernommen
+            werden.</para>
+          </listitem>
+
+          <listitem>
+            <para>Rechnungsadresse grün hinterlegt: Der Kunde konnte eindeutig
+            einem Datensatz zugeordnet werden. Die Shopbestellung kann im
+            Stapel mit dem Button "Anwenden" und wenn markiert als Auftrag
+            übernommen werden.</para>
+          </listitem>
+
+          <listitem>
+            <para>Kundennummer vorhanden, aber die Checkbox "Auftrag
+            erstellen" fehlt. Der Kunde hat vermutlich eine
+            Shopauftragssperre.</para>
+          </listitem>
+
+          <listitem>
+            <para>Lieferadresse grau hinterlegt: Optische Anzeige, dass es
+            sich um eine unterschiedliche Lieferadresse handelt.
+            Lieferadressen werden aber grundsätzlich beim Transferieren zu
+            Aufträgen mit übernommen.</para>
+          </listitem>
+
+          <listitem>
+            <para>In der Spalte Positionen/Betrag/Versandkosten zeigt sich ein
+            tooltip zu den Positionen.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Maske Auftrag erstellen</para>
+
+        <para>Viele Shopsysteme haben drei verschieden Adresstypen Kunden-,
+        Rechnungs-, und Lieferadresse, die sich auch alle unterscheiden
+        können. Diese werden im oberen Bereich angezeigt. Es ist möglich jede
+        dieser Adresse einzeln in kivitendo als Kunde zu übernehmen. Es werden
+        die Werte Formulareingabe übernommen. Es wird bei einer Änderung
+        allerdings nur diese in die kivitendo Kundenstammdaten übernommen, die
+        Shopbestellung bleibt bestehen.</para>
+
+        <para>Mit der mittleren Adresse(Rechnungsadresse) im oberen Bereich,
+        kann ich den ausgewählten kivitendodatensatz des mittleren Bereich
+        überschreiben. Das ist sinnvoll, wenn ich erkenne, das der Kunde z.B.
+        umgezogen ist.</para>
+
+        <para>Im mittleren Bereich das Adresslisting zeigt:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Rot hinterlegt: Kunde hat eine Shopauftragssperre, diese
+            muss zuerst deaktiviert werden bevor ich diesem Kunden eine
+            Shopbestellung zuordnen kann.</para>
+          </listitem>
+
+          <listitem>
+            <para>Kundenname fett und rot: Hier hat der Kunde eine Bemerkung
+            in den Stammdaten. Ein Tooltip zeigt diese Bemerkung. Das kann dan
+            auch der Grund für die Auftragssperre sein.</para>
+          </listitem>
+
+          <listitem>
+            <para>Die Buttons "Auftrag erstellen" und "Kunde mit
+            Rechnungsadresse überschreiben" zeigen sich erst, wenn ein Kunde
+            aus dem Listing ausgewählt ist.</para>
+          </listitem>
+
+          <listitem>
+            <para>Es ist aber möglich die Shopbestellung zu löschen.</para>
+          </listitem>
+
+          <listitem>
+            <para>Ist eine Bestellung schon übernommen, zeigen sich an dieser
+            Stelle, die dazugehörigen Belegverknüpfungen.</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+
+      <sect2>
+        <title>Mapping der Daten</title>
+
+        <para>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
+        der Datei SL/ShopConnector/&lt;SHOPCONNECTORNAME&gt;.pm
+        z.B.:SL/ShopConnector/Shopware.pm</para>
+
+        <para>In dieser Datei gibt es einen Bereich wo die Bestellpostionen,
+        die Bestellkopfdaten und die Artikeldaten gemapt werden. In dieser
+        Datei kann ein individelles Mapping dann gemacht werden. Zu Shopware
+        gibt es hier eine sehr gute Dokumentation: <ulink
+        url="https://developers.shopware.com/developers-guide/rest-api/">https://developers.shopware.com/developers-guide/rest-api/</ulink></para>
+      </sect2>
+    </sect1>
+       <sect1 id="features.zugferd">
+               <title>ZUGFeRD Rechnungen</title>
+               <sect2 id="features.zugferd.preamble">
+                       <title>Vorbedingung</title>
+         <para>
+          Für die Erstellung von ZUGFeRD PDFs wird TexLive2018 oder höher benötigt.
+         </para>
+        <note>
+         <para>
+          Wer kein TexLive2018 oder höher installieren kann, kann eine lokale Umgebung nur für kivitendo wie folgt erzeugen:
+         </para>
+        <programlisting>
+        1. Download des offiziellen Installers von https://www.tug.org/texlive/quickinstall.html
+
+        2. Installer ausführen, Standard-Ort für Installation belassen, evtl. ein paar Pakete abwählen, installieren lassen
+
+        3. Ein kleine Script »run_pdflatex.sh« anlegen, das den PATH auf das  Installationsverezichnis setzt und pdflatex ausführt:
+
+        ------------------------------------------------------------
+        #!/bin/bash
+
+        export PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
+        hash -r
+
+        exec pdflatex &quot;$@&quot;
+        ------------------------------------------------------------
+
+        4. In config/kivitendo.conf den Parameter »latex« auf den Pfad zu »run_pdflatex.sh« setzen
+
+        5. Webserver neu starten
+        </programlisting>
+      </note>
+    </sect2>
+               <sect2 id="features.zugferd.summary">
+                       <title>Übersicht</title>
+
+                       <para>Mit der Version 3.5.6 bietet kivitendo die Möglichkeit ZUGFeRD
+                       Rechnungen zu erstellen, sowie auch  ZUGFeRD Rechnungen direkt in
+                       kivitendo einzulesen. </para>
+
+                       <para>Bei  ZUGFeRD Rechnungen handelt es sich um eine PDF Datei in
+                       der eine XML-Datei eingebettet ist. Der Aufbau der XML-Datei ist
+                       standardisiert und ermöglicht so den Austausch zwischen
+                       den verschiedenen Softwareprodukten. Kivitendo setzt mit der
+                       Version 3.5.6 den ZUGFeRD 2.1 Standard um.</para>
+
+                       <para>Weiter Details zu ZUGFeRD sind unter diesem Link zu finden:
+                       <ulink url="https://www.ferd-net.de/standards/was-ist-zugferd/index.html">https://www.ferd-net.de/standards/was-ist-zugferd/index.html</ulink>
+      </para>
+               </sect2>
+
+               <sect2 id="features.zugferd.create_zugferd_bills">
+
+                       <title>Erstellen von ZUGFeRD Rechnungen in Kivitendo</title>
+                       <para>Für die Erstellung von ZUGFeRD Rechnungen bedarf es in
+                       kivitendo zwei Dinge:</para>
+
+                       <orderedlist>
+
+                               <listitem>
+                                       <para>Die Erstellung muss in der Mandantenkonfiguration
+                                       aktiviert sein</para>
+                               </listitem>
+
+                               <listitem>
+                                       <para>Beim mindestens einem Bankkonto muss die Option
+                                       „Nutzung von ZUGFeRD“ aktiviert sein</para>
+                               </listitem>
+
+                       </orderedlist>
+                       <sect3>
+                               <title>Mandantenkonfiguration</title>
+
+                               <para>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
+                               erfolgt unter „System“ → „Mandatenkonfiguration“ → „Features“.
+                               Im Abschnitt „Einkauf und Verkauf“ finden Sie die Einstellung
+                               „Verkaufsrechnungen mit ZUGFeRD-Daten erzeugen“.
+                               Hier besteht die Auswahl zwischen:</para>
+
+                               <itemizedlist>
+                                       <listitem>
+                                               <para>ZUGFeRD-Rechnungen erzeugen</para>
+                                       </listitem>
+
+                                       <listitem>
+                                               <para>ZUGFeRD-Rechnungen im Testmodus erzeugen</para>
+                                       </listitem>
+
+                                       <listitem>
+                                               <para>Keine ZUGFeRD Rechnungen erzeugen</para>
+                                       </listitem>
+
+                               </itemizedlist>
+
+                               <para>Rechnungen die als PDF erzeugt werden, werden je nach
+                               Einstellung nun im ZUGFeRD Format ausgegeben.</para>
+
+                       </sect3>
+
+                       <sect3>
+                               <title>Konfiguration der Bankkonten</title>
+
+                               <para>Unter „System → Bankkonten“ muss bei mindestens einem
+                               Bankkonto die Option „Nutzung mit ZUGFeRD“ auf „Ja“ gestellt
+                               werden.</para>
+                       </sect3>
+
+               </sect2>
+
+               <sect2 id="features.zugferd.read_zugferd_bills">
+
+                       <title>Einlesen von ZUGFeRD Rechnungen in Kivitendo</title>
+
+                       <para>Es lassen sich auch Rechnungen von Kreditoren, die im
+                       ZUGFeRD Format erstellt wurden, nach Kivitendo importieren.
+                       Hierfür müssen auch zwei Voraussetzungen erfüllt werden:
+                       </para>
+
+                       <orderedlist>
+
+                               <listitem>
+                                       <para>Beim Lieferanten muss die Umsatzsteuer-ID und das
+                                       Bankkonto hinterlegt sein</para>
+                               </listitem>
+
+                               <listitem>
+                                       <para>Für den Kreditoren muss eine Buchungsvorlage existieren.</para>
+                               </listitem>
+
+                       </orderedlist>
+
+                       <para>Wenn diese Voraussetzungen erfüllt sind, kann die Rechnung
+                       über „Finanzbuchhaltung“ → „Factur-X-/ZUGFeRD-Import“ über die „Durchsuchen“
+                       Schaltfläche ausgewählt werden und über die Schaltfläche „Import“
+                       eingeladen werden. Es öffnet sich daraufhin die Kreditorenbuchung.
+                       Die auslesbaren Daten aus dem eingebetteten XML der PDF Datei
+                       werden in der Kreditorenbuchung ergänzt.</para>
+
+               </sect2>
+
+       </sect1>
+
   </chapter>
 
   <chapter>
@@ -6990,7 +7802,8 @@ document_path = /var/local/kivi_documents
             </listitem>
 
             <listitem>
-              <para>Enthält unter anderem Datumsformat dateformat und Nummernformat numberformat</para>
+              <para>Enthält unter anderem Datumsformat dateformat und
+              Nummernformat numberformat</para>
             </listitem>
 
             <listitem>
@@ -7384,6 +8197,89 @@ file_name = /tmp/kivitendo-debug.log</programlisting>
       </sect2>
     </sect1>
 
+    <sect1 id="dev-programmatic-api-calls" xreflabel="Programmatische API-Aufrufe">
+      <title>Programmatische API-Aufrufe</title>
+
+      <sect2 id="dev-programmatic-api-calls.introduction" xreflabel="Einführung in programmatische API-Aufrufe">
+        <title>Einführung</title>
+
+        <para>
+         Es ist möglich, Funktionen in kivitendo programmatisch aus anderen Programmen aufzurufen. Dazu ist nötig, dass
+         Authentifizierungsinformationen in jedem Aufruf mitgegeben werden. Dafür gibt es zwei Methoden: die HTTP-»Basic«-Authentifizierung
+         oder die Übergabe als spziell benannte GET-Parameter. Neben den Authentifizierungsinformationen muss auch der zu verwendende Mandant
+         übergeben werden.
+        </para>
+      </sect2>
+
+      <sect2 id="dev-programmatic-api-calls.client_selection" xreflabel="Mandantenauswahl bei programmatischen API-Aufrufen">
+        <title>Wahl des Mandanten</title>
+
+        <para>
+         Der zu verwendende Mandant kann als Parameter <varname>{AUTH}client_id</varname> mit jedem Request mitgeschickt werden. Der Wert
+         muss dabei die Datenbank-ID des Mandanten sein. kivitendo prüft, ob der Account, der über die Authentifizierungsinformationen
+         übergeben wurde, Zugriff auf den angegebenen Mandanten hat.
+        </para>
+
+        <para>
+         Wird in einem Request kein Mandant mitgegeben, so wird derjenige Mandant genommen, wer als Standardmandant markiert wurde. Gibt es
+         keinen solchen, kommt es zu einer Fehlermeldung.
+        </para>
+      </sect2>
+
+      <sect2 id="dev-programmatic-api-calls.http_basic_authentication" xreflabel="Programmatische API-Aufrufe mit HTTP-»Basic« authentifizieren">
+        <title>HTTP-»Basic«-Authentifizierung</title>
+
+        <para>
+         Für diese Methode muss jedem Request der bekannte HTTP-Header <constant>Authorization</constant> mitgeschickt werden (siehe <ulink
+         url="https://tools.ietf.org/html/rfc7617">RFC 7617</ulink>). Unterstützt wird ausschließlich die »Basic«-Methode. Loginname und
+         Passwort werden bei dieser Methode durch einen Doppelpunkt getrennt und Base64-encodiert im genannten HTTP-Header übertragen.
+        </para>
+
+        <para>
+         Diese Informationen müssen einen vorhandenen Account benennen. kivitendo prüft genau wie bei Benutzung über den Webbrowser, ob
+         dieser Account Zugriff auf den Mandanten sowie auf die angeforderte Funktion hat.
+        </para>
+
+        <para>
+         Da die Logininformationen im Klartext im Request stehen, sollte der Zugriff auf kivitendo ausschließlich über HTTPS verschlüsselt
+         erfolgen.
+        </para>
+      </sect2>
+
+      <sect2 id="dev-programmatic-api-calls.authentication_via_parameters" xreflabel="Programmatische API-Aufrufe mit Parametern authentifizieren">
+        <title>Authentifizierung mit Parametern</title>
+
+        <para>
+         Für diese Methode müssen jedem Request zwei Parameter mitgegeben werden: <varname>{AUTH}login</varname> und
+         <varname>{AUTH}password</varname>. Diese Informationen müssen einen vorhandenen Account benennen. kivitendo prüft genau wie bei
+         Benutzung über den Webbrowser, ob dieser Account Zugriff auf den Mandanten sowie auf die angeforderte Funktion hat.
+        </para>
+
+        <para>
+         Da die Logininformationen im Klartext im Request stehen, sollte der Zugriff auf kivitendo ausschließlich über HTTPS verschlüsselt
+         erfolgen.
+        </para>
+
+        <note>
+         <para>
+          Die Verwendung dieser Methode ist veraltet. Statt dessen sollte die oben erwähnte HTTP-»Basic«-Authentifizierung verwendet werden.
+         </para>
+        </note>
+      </sect2>
+
+      <sect2 id="dev-programmatic-api-calls.examples">
+        <title>Beispiele</title>
+
+        <para>
+         Das folgende Beispiel nutzt das Kommandozeilenprogramm »curl« und ruft die Funktion auf, die eine vorhandene Telefonnummer in den
+         Ansprechpersonen sucht und dazu Informationen zurückliefert. Dabei wird die HTTP-»Basic«-Authentifizierung genutzt.
+        </para>
+
+        <programlisting>$ curl --silent --user 'jdoe:SecretPassword!' \
+  'https://…/controller.pl?action=PhoneNumber/look_up&amp;number=053147110815'</programlisting>
+      </sect2>
+    </sect1>
+
     <sect1 id="db-upgrade-files" xreflabel="Datenbank-Upgradedateien">
       <title>SQL-Upgradedateien</title>
 
@@ -7812,7 +8708,7 @@ Template/LaTeX
 Template/OpenDocument
 filenames</programlisting>
 
-              <para>The last of which is very machine dependant. Remember that
+              <para>The last of which is very machine dependent. Remember that
               a lot of characters are forbidden by some filesystems, for
               example MS Windows doesn't like ':' in its files where Linux
               doesn't mind that. If you want the files created with your
@@ -7979,12 +8875,14 @@ $self-&gt;{more_texts} = {
           </listitem>
 
           <listitem>
-            <para><literal>Sys::CPU</literal> (Debian-Panetname: <literal>libsys-cpu-perl</literal>; Fedora und openSUSE: nicht
+            <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
+            <para><literal>Thread::Pool::Simple</literal> (Debian-Panetname:
+            <literal>libthread-pool-simple-perl</literal>; Fedora und
             openSUSE: nicht vorhanden)</para>
           </listitem>
         </itemizedlist>
@@ -7995,6 +8893,15 @@ $self-&gt;{more_texts} = {
         <literal>testing/database</literal> Datenbankverbindungsparameter
         angegeben werden. Der hier angegebene Benutzer muss weiterhin das
         Recht haben, Datenbanken anzulegen und zu löschen.</para>
+
+        <para>Der so angegebene Benutzer muss nicht zwingend über
+        Super-User-Rechte verfügen. Allerdings gibt es einige
+        Datenbank-Upgrades, die genau diese Rechte benötigen. Für den Fall
+        kann man in diesem Konfigurationsabschnitt einen weiteren
+        Benutzeraccount angeben, der dann über Super-User-Rechte verfügt, und
+        mit dem die betroffenen Upgrades durchgeführt werden. In der
+        Beispiel-Konfigurationsdatei finden Sie die benötigten
+        Parameter.</para>
       </sect2>
 
       <sect2 id="devel.testsuite.execution">