Auslagern in VK-Rechnung: changelog-Eintrag für dieses Feature.
[kivitendo-erp.git] / doc / dokumentation.xml
index 3635f62..d11db12 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <book id="kivitendo-documentation" lang="de">
-  <title>kivitendo 3.0.0: Installation, Konfiguration, Entwicklung</title>
+  <title>kivitendo 3.2.0: Installation, Konfiguration, Entwicklung</title>
 
   <chapter id="Aktuelle-Hinweise">
     <title>Aktuelle Hinweise</title>
     <itemizedlist>
       <listitem>
         <para>im kivitendo-Forum: <ulink
-        url="https://forum.kivitendo.org/">https://forum.kivitendo.org/</ulink></para>
+        url="https://forum.kivitendo.org:32443">https://forum.kivitendo.org:32443</ulink></para>
+      </listitem>
+      <listitem>
+        <para>in der doc/UPGRADE Datei im doc-Verzeichnis der Installation</para>
+      </listitem>
+      <listitem>
+        <para>Im Schulungs- und Dienstleistungsangebot der entsprechenden kivitendo-Partner: <ulink
+        url="http://www.kivitendo.de/partner.html">http://www.kivitendo.de/partner.html</ulink></para>
       </listitem>
     </itemizedlist>
   </chapter>
@@ -53,7 +60,7 @@
       </orderedlist>
 
       <para>
-        Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls wichtig und dienen sollten vor einer ernsthaften Inbetriebnahme gelesen
+        Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls wichtig und sollten vor einer ernsthaften Inbetriebnahme gelesen
         werden.
       </para>
     </sect1>
@@ -71,7 +78,7 @@
         ohne große Probleme auf den derzeit aktuellen verbreiteten
         Distributionen läuft.</para>
 
-        <para>Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
+        <para>Anfang 2014 sind das folgende Systeme, von denen bekannt ist,
         dass kivitendo auf ihnen läuft:</para>
 
         <itemizedlist>
@@ -80,7 +87,7 @@
             <para>Debian</para>
             <itemizedlist>
                <listitem>
-                 <para>6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden)</para>
+                 <para>6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden, und <literal>Rose::DB::Object</literal> ist zu alt)</para>
                </listitem>
                <listitem>
                  <para>7.0 "Wheezy"</para>
           </listitem>
 
           <listitem>
-            <para>Ubuntu 10.04 LTS "Lucid Lynx", 12.04 LTS "Precise Pangolin" und 12.10 "Oneiric Ocelot"`</para>
+            <para>Ubuntu 12.04 LTS "Precise Pangolin", 12.10 "Quantal Quetzal", 13.04 "Precise Pangolin" und 14.04 "Trusty Tahr" LTS Alpha</para>
           </listitem>
 
           <listitem>
-            <para>openSUSE 12.1 und 12.2</para>
+            <para>openSUSE 12.2, 12.3 und 13.1</para>
           </listitem>
 
           <listitem>
           </listitem>
 
           <listitem>
-            <para>Fedora 16 und 17</para>
+            <para>Fedora 16 bis 19</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, mindestens v8.2)
+        Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.4)
         benötigt.</para>
 
         <para>Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht Bestandteil einer Standard-Perl-Installation sind. Um zu
 
           <listitem><para><literal>Rose::DB</literal></para></listitem>
 
-          <listitem><para><literal>Rose::DB::Object</literal></para></listitem>
+          <listitem><para><literal>Rose::DB::Object</literal> Version 0.788 oder neuer</para></listitem>
 
           <listitem><para><literal>Template</literal></para></listitem>
 
           <listitem><para><literal>YAML</literal></para></listitem>
         </itemizedlist>
 
+        <para>Seit Version v3.2.0 sind die folgenden Pakete hinzugekommen: <literal>GD</literal>, <literal>HTML::Restrict</literal>, <literal>Image::Info</literal></para>
+        <para>Seit v3.0.0 sind die folgenden Pakete hinzugekommen: <literal>File::Copy::Recursive</literal>.</para>
+
         <para>Seit v2.7.0 sind die folgenden Pakete hinzugekommen: <literal>Email::MIME</literal>, <literal>Net::SMTP::SSL</literal>,
         <literal>Net::SSLGlue</literal>.</para>
 
         <sect3>
           <title>Debian und Ubuntu</title>
 
-          <para>Alle benötigten Perl-Pakete stehen für Debian und Ubuntu als Debian-Pakete zur Verfügung. Sie können mit folgendem Befehl
-          installiert werden:</para>
+          <para>Für Debian und Ubuntu stehen die meisten der benötigten Perl-Pakete als Debian-Pakete zur Verfügung. Sie können mit folgendem Befehl installiert werden:</para>
 
           <programlisting>apt-get install apache2 libarchive-zip-perl libclone-perl \
   libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
   librose-db-perl librose-object-perl libsort-naturally-perl \
   libstring-shellquote-perl libtemplate-perl libtext-csv-xs-perl \
   libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl \
+  libimage-info-perl libgd-gd2-perl \
   libfile-copy-recursive-perl postgresql</programlisting>
+
+          <para>Für das Paket HTML::Restrict gibt es kein Debian-Paket, dies muß per CPAN installiert werden. Der entsprechende Befehl wird beim Aufruf von installation_check.pl angezeigt.</para>
         </sect3>
 
         <sect3>
           <title>Fedora Core</title>
 
-          <para>Für Fedora Core stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installeirt werden:</para>
+          <para>Für Fedora Core stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installiert werden:</para>
 
           <programlisting>yum install httpd perl-Archive-Zip perl-Clone perl-DBD-Pg \
   perl-DBI perl-DateTime perl-Email-Address perl-Email-MIME perl-FCGI \
@@ -261,12 +273,13 @@ cpan Rose::Db::Object</programlisting>
     <sect1 id="Manuelle-Installation-des-Programmpaketes"
            xreflabel="Manuelle Installation des Programmpaketes">
       <title>Manuelle Installation des Programmpaketes</title>
-
-      <para>Die kivitendo ERP Installationsdatei (<filename>kivitendo-erp-3.0.0.tgz</filename>) wird im Dokumentenverzeichnis des Webservers
+      <para>Der aktuelle Stable-Release, bzw. beta Release wird bei github gehostet und kann
+ <ulink url="https://github.com/kivitendo/kivitendo-erp/releases">hier</ulink> heruntergeladen werden.</para>
+      <para>Die kivitendo ERP Installationsdatei (<filename>kivitendo-erp-3.2.0.tgz</filename>) wird im Dokumentenverzeichnis des Webservers
       (z.B.  <filename>/var/www/html/</filename>, <filename>/srv/www/htdocs</filename> oder <filename>/var/www/</filename>) entpackt:</para>
 
       <programlisting>cd /var/www
-tar xvzf kivitendo-erp-3.0.0.tgz</programlisting>
+tar xvzf kivitendo-erp-3.2.0.tgz</programlisting>
 
       <para>Wechseln Sie in das entpackte Verzeichnis:</para>
 
@@ -276,6 +289,10 @@ tar xvzf kivitendo-erp-3.0.0.tgz</programlisting>
       Webserverkonfiguration benutzen, um auf das tatsächliche
       Installationsverzeichnis zu verweisen.</para>
 
+      <para>Bei einer Neuinstallation von Version 3.1.0 oder Version 3.2.0 muß das WebDAV Verzeichnis derzeit manuell angelegt werden:</para>
+
+      <programlisting>mkdir webdav</programlisting>
+
       <para>Die Verzeichnisse <filename>users</filename>, <filename>spool</filename> und <filename>webdav</filename> müssen für den Benutzer
       beschreibbar sein, unter dem der Webserver läuft. Die 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
@@ -349,15 +366,14 @@ tar xvzf kivitendo-erp-3.0.0.tgz</programlisting>
 
           <listitem><para><literal>system</literal></para></listitem>
 
-          <listitem><para><literal>features</literal> (siehe Kapitel "<xref linkend="features"/>")</para></listitem>
-
           <listitem><para><literal>paths</literal></para></listitem>
 
+          <listitem><para><literal>mail_delivery</literal> (siehe Abschnitt "<xref linkend="config.sending-email.smtp"/>)</para></listitem>
+
           <listitem><para><literal>applications</literal></para></listitem>
 
           <listitem><para><literal>environment</literal></para></listitem>
 
-          <listitem><para><literal>mail_delivery</literal> (siehe Abschnitt "<xref linkend="config.sending-email.smtp"/>)</para></listitem>
 
           <listitem><para><literal>print_templates</literal></para></listitem>
 
@@ -365,8 +381,14 @@ tar xvzf kivitendo-erp-3.0.0.tgz</programlisting>
 
           <listitem><para><literal>periodic_invoices</literal></para></listitem>
 
+          <listitem><para><literal>self_tests</literal></para></listitem>
+
           <listitem><para><literal>console</literal></para></listitem>
 
+          <listitem><para><literal>testing</literal></para></listitem>
+
+          <listitem><para><literal>testing/database</literal></para></listitem>
+
           <listitem><para><literal>debug</literal></para></listitem>
         </itemizedlist>
 
@@ -439,10 +461,10 @@ exit </programlisting>
 
         <para>Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
         Unicode-Encoding anzulegen und diesen zu verwenden. Unter Debian und
-        Ubuntu kann dies z.B. für PostgreSQL 8.2 mit dem folgenden Befehl
+        Ubuntu kann dies z.B. für PostgreSQL 9.3 mit dem folgenden Befehl
         getan werden:</para>
 
-        <programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</programlisting>
+        <programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername</programlisting>
 
         <para>Die Datenbankversionsnummer muss an die tatsächlich verwendete
         Versionsnummer angepasst werden.</para>
@@ -470,7 +492,7 @@ exit </programlisting>
         <para>In der Datei <filename>pg_hba.conf</filename>, die im gleichen
         Verzeichnis wie die <filename>postgresql.conf</filename> zu finden
         sein sollte, müssen die Berichtigungen für den Zugriff geändert
-       werden. Hier gibt es mehrere Möglichkeiten. sinnvoll ist es nur die
+       werden. Hier gibt es mehrere Möglichkeiten. Sinnvoll ist es nur die
        nögiten Verbindungen immer zuzulassen, für eine lokal laufenden
        Datenbank zum Beispiel:</para>
 
@@ -608,7 +630,7 @@ Alias /kivitendo-erp/ /var/www/kivitendo-erp/
             </listitem>
 
             <listitem>
-              <para>Apache 2.2.11 (Ubuntu) und mod_fastcgi.</para>
+              <para>Apache 2.2.11 / 2.2.22 (Ubuntu) und mod_fastcgi.</para>
             </listitem>
           </itemizedlist>
 
@@ -1168,8 +1190,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         Authentifizierungsdatenbank gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter in der Konfigurationsdatei
         <filename>config/kivitendo.conf</filename> gespeichert werden.</para>
 
-        <para>Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten: Stammdaten (Kunden, Lieferanten, Waren), Belege
-        (Angebote, Liferscheine, Rechnungen), Einstellungen. Diese werden in einer Mandantendatenbank gespeichert. Die
+        <para>Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten, Waren) und Belege
+        (Angebote, Lieferscheine, Rechnungen). Diese werden in einer Mandantendatenbank gespeichert. Die
         Verbindungsinformationen einer solchen Mandantendatenbank werden im Administrationsbereich konfiguriert, indem man einen Mandanten
         anlegt und dort die Parameter einträgt. Dabei hat jeder Mandant eine eigene Datenbank.</para>
 
@@ -1177,16 +1199,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         Mandantendatenbanken in ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit mehr als einem Mandanten, wird
         empfohlen, für die Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die nicht gleichzeitig für einen Mandanten
         verwendet wird.</para>
-
-        <para>kivitendo verwendet eine Datenbank zum Speichern all seiner
-        Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
-        mit kivitendo arbeiten zu können, muss eine Person einen
-        Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
-        Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
-        möglich und normal, dass mehreren Benutzern die selbe Datenbank
-        zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
-        können.</para>
-      </sect2>
+     </sect2>
 
       <sect2 id="Mandanten-Benutzer-Gruppen">
         <title>Mandanten, Benutzer und Gruppen</title>
@@ -1286,6 +1299,28 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         C gültig").</para>
       </sect2>
     </sect1>
+    <sect1 id="Drucker--Systemverwaltung">
+      <title>Drucker- und Systemverwaltung</title>
+      <para>Im Administrationsmenü gibt es ferner noch die beiden Menüpunkte Druckeradministration und System.</para>
+      <sect2 id="Druckeradministration">
+        <title>Druckeradministration</title>
+      <para>Unter dem Menüpunkt Druckeradministration lassen sich beliebig viele "Druckbefehle" im System verwalten. Diese Befehle werden mandantenweise
+      zugeordnet. Unter Druckerbeschreibung wird der Namen des Druckbefehls festgelegt, der dann in der Druckerauswahl des Belegs angezeigt wird.</para>
+      <para>Unter Druckbefehl definiert man den eigentlichen Druckbefehl, der direkt auf dem Webserver ausgeführt wird, bspw. 'lpr -P meinDrucker' oder ein
+      kompletter Pfad zu einem Skript (/usr/local/src/kivitendo/scripts/pdf_druck_in_verzeichnis.sh).
+      Wird ferner noch ein optionales Vorlagenkürzel verwendet, wird dieses Kürzel bei der Auswahl der Druckvorlagendatei mit einem Unterstrich ergänzt, ist
+      bspw. das Kürzel 'epson_drucker' definiert, so wird beim Ausdruck eines Angebots folgende Vorlage geparst: sales_quotation_epson_drucker.tex.</para>
+     </sect2>
+      <sect2 id="System">
+        <title>System sperren / entsperren</title>
+
+        <para>Unter dem Menüpunkt System gibt es den Eintrag 'Installation sperren/entsperren'. Setz man diese Sperre so ist der Zugang zu der gesamten kivitendo Installation gesperrt.</para>
+        <para>Falls die Sperre gesetzt ist, erscheint anstelle der Anmeldemaske die Information: 'kivitendo ist momentan zwecks Wartungsarbeiten nicht zugänglich.'.
+        </para>
+        <para>Wichtig zu erwähnen ist hierbei noch, dass sich kivitendo automatisch 'sperrt', falls es bei einem Versionsupdate zu einem Datenbankfehler kam. Somit kann hier nicht aus Versehen
+        mit einem inkonsistenten Datenbestand weitergearbeitet werden.</para>
+     </sect2>
+    </sect1>
 
     <sect1 id="config.sending-email" xreflabel="E-Mail-Versand aus kivitendo heraus">
       <title>E-Mail-Versand aus kivitendo heraus</title>
@@ -1376,7 +1411,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       <title>Drucken mit kivitendo</title>
 
       <para>Das Drucksystem von kivitendo benutzt von Haus aus LaTeX-Vorlagen.  Um drucken zu können, braucht der Server ein geeignetes
-      LaTeX System. Am einfachsten ist dazu eine <literal>texlive</literal> Installation. Unter Debianoiden Betriebssystemen installiert man
+      LaTeX System. Am einfachsten ist dazu eine <literal>texlive</literal> Installation. Unter debianoiden Betriebssystemen installiert man
       die Pakete mit:</para>
 
       <para><programlisting>aptitude install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
@@ -1393,24 +1428,30 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
 
       <sect2 id="Vorlagenverzeichnis-anlegen" xreflabel="Vorlagenverzeichnis anlegen">
         <title>Vorlagenverzeichnis anlegen</title>
-        <para>Im Administrationsbereich lässt sich bei einem Benutzer/Mandanten einer dieser Vorlagensätze als Basis für die zu
-        druckenden Dokumente auswählen. Rufen Sie dazu die <guimenu>Benutzerverwaltung</guimenu> auf.</para>
+        <para>Es lässt sich ein initialer Vorlagensatz erstellen. Die LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit:</para>
+
+        <programlisting>./scripts/installation_check.pl -lv</programlisting>
 
-        <para>Wählen Sie dort einen Benutzer aus oder legen Sie einen neuen an. In der Benutzerbearbeiten-Maske müssen Sie zwei Dinge
-        angeben:</para>
+       <para>Der Angemmeldete Benutzer muss in einer Gruppe sein, die über das
+              Recht "Konfiguration -> Mandantenverwaltung" verfügt. Siehe auch <xref linkend="Gruppen-anlegen"/>.
+        </para>
+        <para>Im Userbereich lässt sich unter:
+        "<guimenu>System</guimenu> -&gt;
+        <guisubmenu>Mandantenverwaltung</guisubmenu> -&gt; <guimenuitem>Verschiedenes</guimenuitem>" die Option
+        "Neue Druckvorlagen aus Vorlagensatz erstellen" auswählen.</para>
 
         <orderedlist>
-          <listitem><para><option>Name</option>: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
-          Bedingungen für Verzeichnisnamen frei gewählt werden.</para></listitem>
           <listitem><para><option>Vorlagen auswählen</option>: Wählen Sie hier den Vorlagensatz aus, der kopiert werden soll
           (<filename>Standard</filename>, <filename>f-tex</filename> oder <filename>RB</filename>.)</para></listitem>
+          <listitem><para><option>Neuer Name</option>: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
+          Bedingungen für Verzeichnisnamen frei gewählt werden.</para></listitem>
         </orderedlist>
 
-        <para>Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.</para>
+        <para>Nach dem Speichern wird das Vorlagenverzeichnis angelegt und ist für den aktuellen Mandanten ausgewählt.
+           Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Mandanten verwendet werden.
+           Eventuell müssen Anpassungen (Logo, Erscheinungsbild, etc) noch vorgenommen werden. Den Ordner findet man im Dateisystem unter
+           <filename>./templates/[Neuer Name]</filename></para>
 
-        <para>Die Abhängigkeiten kann man prüfen mit:</para>
-
-        <programlisting>/scripts/installation_check.pl -l</programlisting>
 
       </sect2>
       <sect2 id="Vorlagen-Standard">
@@ -1430,7 +1471,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
           <title>Feature-Übersicht</title>
           <itemizedlist>
             <listitem><para>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage für alle briefartigen Dokumente verwendet. Also
-            Angebot, Rechnung, Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber etc..</para></listitem>
+            Angebot, Rechnung, Proformarechnung, Lieferschein, aber eben nicht für Paketaufkleber etc..</para></listitem>
 
             <listitem><para>Leichte Anpassung an das Firmen-Layout durch verwendung eines Hintergrund-PDF. Dieses kann leicht mit dem
             eigenen Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp, Adobe*)</para></listitem>
@@ -1465,33 +1506,33 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
             <listitem><para>Editiere den Bereich "<option>settings</option>" in der datei <filename>letter.lco</filename>.</para></listitem>
           </itemizedlist>
 
-          <para>oder etwas Detaillierter:</para>
+          <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 Hintergrundpdf verwiesen. Ich empfehle über dieses PDF die persönlichen Layoutanpassungen
-            vorzunehmen und <filename>sample.lco</filename> unverändert zu lassen. Die die Anpassung über eine
-            <filename>*.lco</filename>-Datei die letztlich auf <filename>letter.lco</filename> verlinkt ist ist aber auch möglich.
+            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_haed.pdf</filename> an und erstelle ein entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
+            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. Bei Updates oder nach erneutem
+            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).
+            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
@@ -1503,17 +1544,17 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
           <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
+            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.
+            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
+            <listitem><para>Darstellung von Brutto oder Netto-Preisen in der Auflistung (Endverbraucher versus gewerblicher
             Kunde)</para></listitem>
            </itemizedlist>
 
@@ -1523,15 +1564,15 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
              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 häftig in den Fuss schiessen.
+             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
+           <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>
+           <para>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine, kontinuierliche Schritte gehen.</para>
 
         </sect3>
 
@@ -1546,8 +1587,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               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- wie Gewerbekunden beliefert der eigentliche Knackpunkt)</para>
+              <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>
 
@@ -1558,10 +1599,10 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
             an (einmal mit der Namensendung "_E"). Gewinn:</para>
 
           <itemizedlist>
-            <listitem><para>Die Entscheidung, ob Netopreise ausgewiesen werden, ist nicht mehr fix mit einer Preisliste Verbunden.</para></listitem>
+            <listitem><para>Die Entscheidung, ob Netopreise 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 reviediert werden,
+            <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>
@@ -1578,17 +1619,20 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
       </sect2>
 
       <sect2 id="Vorlagen-RB">
-        <title>RB</title>
+        <title>Der Druckvorlagensatz RB</title>
 
-        <para>Vollständiger Dokumentensatz mit alternativem Design</para>
+        <para>Hierbei handelt es sich um einen vollständigen Dokumentensatz mit alternativem Design.</para>
+        <para>Die konzeptionelle Idee der Vorlagen wird <ulink
+          url="http://www.kivitendo-support.de/vortraege/Lx-Office%20Anwendertreffen%20LaTeX-Druckvorlagen-Teil3-finale.pdf">hier</ulink>
+          auf Folie 5 bis 10 vorgestellt. Informationen zur Anpassung an die eigenen Firmendaten finden sich in der Datei Readme.tex im Vorlagenverzeichnis.</para>
 
       </sect2>
 
       <sect2 id="allgemeine-hinweise-zu-latex">
         <title>Allgemeine Hinweise zu LaTeX Vorlagen</title>
-        <para>In den allermeisten Installationen sollte drucken jetzt schon
-        funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
-        Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
+        <para>In den allermeisten Installationen sollte das Drucken jetzt schon
+        funktionieren. Sollte ein Fehler auftreten, wirft TeX sehr lange
+        Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeile,
         die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
         Beispiel:</para>
 
@@ -1619,7 +1663,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         <para>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</para>
         <itemizedlist>
           <listitem>
-             <para> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</para>
+             <para> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_temp_files" auf 1</para>
              <para><programlisting>keep_temp_files = 1;</programlisting></para>
           </listitem>
           <listitem>
@@ -1973,7 +2017,47 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         </screenshot>
       </sect2>
     </sect1>
-
+    <sect1 id="bilanz">
+     <title>Verhalten des Bilanzberichts</title>
+      <para>
+    Bis Version 3.0 wurde "closedto" ("Bücher schließen zum") als Grundlage für das
+    Startdatum benutzt. Schließt man die Bücher allerdings monatsweise führt dies
+    zu falschen Werten.</para>
+    <para>In der Mandantenkonfiguration kann man dieses Verhalten genau einstellen indem man:</para>
+  <itemizedlist>
+   <listitem>
+    <para>weiterhin closed_to benutzt (Default, es ändert sich nichts zu vorher)</para>
+  </listitem>
+   <listitem>
+    <para>immer den Jahresanfang nimmt (1.1. relativ zum Stichtag)</para>
+  </listitem>
+   <listitem>
+    <para>immer die letzte Eröffnungsbuchung als Startdatum nimmt</para>
+       <para>- mit Jahresanfang als Alternative wenn es keine EB-Buchungen gibt</para>
+      <para>- oder mit "alle Buchungen" als Alternative"</para>
+   </listitem>
+   <listitem>
+     <para>mit Jahresanfang als Alternative wenn es keine EB-Buchungen gibt </para>
+  </listitem>
+   <listitem>
+    <para>immer alle Buchungen seit Beginn der Datenbank nimmt</para>
+  </listitem>
+  </itemizedlist>
+   Folgende Hinweise zu den Optionen:
+    Das "Bücher schließen Datum" ist sinnvoll, wenn man nur komplette Jahre
+    schließt. Bei Wirtschaftsjahr = Kalendarjahr entspricht dies aber auch
+    Jahresanfang.
+    "Alle Buchungen" kann z.B. sinnvoll sein wenn man ohne Jahresabschluß
+    durchbucht.
+    Eröffnungsbuchung mit "alle Buchungen" als Fallback ist z.B. sinnvoll, wenn man
+    am sich Anfang des zweiten Buchungsjahres befindet, und noch keinen
+    Jahreswechsel und auch noch keine EB-Buchungen hat.
+    Bei den Optionen mit EB-Buchungen wird vorausgesetzt, daß diese immer am 1. Tag
+    des Wirtschaftsjahres gebucht werden.
+    Zur Sicherheit wird das Startdatum im Bilanzbericht jetzt zusätzlich zum
+    Stichtag mit angezeigt. Das hilft auch bei der Kontrolle für den
+    Abgleich mit der GuV.
+    </sect1>
     <sect1 id="config.client">
       <title>Einstellungen pro Mandant</title>
 
@@ -2151,6 +2235,12 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
           Abrechnungszeitraum explizit auszuweisen. Eine Variable hat dabei die Syntax <literal>&lt;%variablenname%&gt;</literal>.
         </para>
 
+        <para>
+         Sofern es sich um eine Datumsvariable handelt, kann das Ausgabeformat weiter bestimmt werden, indem an den Variablennamen
+         Formatoptionen angehängt werden. Die Syntax sieht dabei wie folgt aus: <literal>&lt;%variablenname
+         FORMAT=Formatinformation%&gt;</literal>. Die zur verfügung stehenden Formatinformationen werden unten genauer beschrieben.
+        </para>
+
         <para>
           Diese Variablen werden in den folgenden Elementen des Auftrags ersetzt:
         </para>
@@ -2216,6 +2306,172 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
             </listitem>
           </varlistentry>
         </variablelist>
+
+        <para>
+         Die invidiuellen Formatinformationen bestehen aus Paaren von Prozentzeichen und einem Buchstaben, welche beide zusammen durch den
+         dazugehörigen Wert ersetzt werden. So wird z.B. <literal>%Y</literal> durch das viertstellige Jahr ersetzt. Alle möglichen
+         Platzhalter sind:
+        </para>
+
+
+        <variablelist>
+         <varlistentry>
+          <term><varname>%a</varname></term>
+
+          <listitem>
+           <para>Der abgekürzte Wochentagsname.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%A</varname></term>
+
+          <listitem>
+           <para>Der ausgeschriebene Wochentagsname.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%b</varname></term>
+
+          <listitem>
+           <para>Der abgekürzte Monatsname.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%B</varname></term>
+
+          <listitem>
+           <para>Der ausgeschriebene Monatsname.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%C</varname></term>
+
+          <listitem>
+           <para>Das Jahrhundert (Jahr/100) als eine zweistellige Zahl.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%d</varname></term>
+
+          <listitem>
+           <para>Der Monatstag als Zahl zwischen 01 und 31.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%D</varname></term>
+
+          <listitem>
+           <para>Entspricht %m/%d/%y (amerikanisches Datumsformat).</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%e</varname></term>
+
+          <listitem>
+           <para>Wie %d (Monatstag als Zahl zwischen 1 und 31), allerdings werden führende Nullen durch Leerzeichen ersetzt.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%F</varname></term>
+
+          <listitem>
+           <para>Entspricht %Y-%m-%d (das ISO-8601-Datumsformat).</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%j</varname></term>
+
+          <listitem>
+           <para>Der Tag im Jahr als Zahl zwischen 001 und 366 inklusive.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%m</varname></term>
+
+          <listitem>
+           <para>Der Monat als Zahl zwischen 01 und 12 inklusive.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%u</varname></term>
+
+          <listitem>
+           <para>Der Wochentag als Zahl zwischen 1 und 7 inklusive, wobei die 1 dem Montag entspricht.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%U</varname></term>
+
+          <listitem>
+           <para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Sonntag im Jahr das Startdatum von Woche 01 ist.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%V</varname></term>
+
+          <listitem>
+           <para>Die ISO-8601:1988-Wochennummer als Zahl zwischen 01 und 53 inklusive, wobei Woche 01 die erste Woche, von der mindestens vier Tage im Jahr liegen; Montag ist erster Tag der Woche.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%w</varname></term>
+
+          <listitem>
+           <para>Der Wochentag als Zahl zwischen 0 und 6 inklusive, wobei die 0 dem Sonntag entspricht.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%W</varname></term>
+
+          <listitem>
+           <para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Montag im Jahr das Startdatum von Woche 01 ist.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%y</varname></term>
+
+          <listitem>
+           <para>Das Jahr als zweistellige Zahl zwischen 00 und 99 inklusive.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%Y</varname></term>
+
+          <listitem>
+           <para>Das Jahr als vierstellige Zahl.</para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+          <term><varname>%%</varname></term>
+
+          <listitem>
+           <para>Das Prozentzeichen selber.</para>
+          </listitem>
+         </varlistentry>
+        </variablelist>
+
+        <para>
+         Anwendungsbeispiel für die Ausgabe, von welchem Monat und Jahr 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>
       </sect2>
 
       <sect2 id="features.periodic-invoices.reports">
@@ -2249,8 +2505,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         manuell über den Workflow.</para>
       </sect2>
     </sect1>
-
-    <sect1 id="dokumentenvorlagen-und-variablen">
+        <sect1 id="dokumentenvorlagen-und-variablen">
       <title>Dokumentenvorlagen und verfügbare Variablen</title>
 
       <sect2 id="dokumentenvorlagen-und-variablen.einführung">
@@ -2880,6 +3135,14 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               </listitem>
             </varlistentry>
 
+            <varlistentry>
+              <term><varname>greeting</varname></term>
+
+              <listitem>
+                <para>Anrede</para>
+              </listitem>
+            </varlistentry>
+
             <varlistentry>
               <term><varname>homepage</varname></term>
 
@@ -3217,7 +3480,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         </sect3>
 
         <sect3 id="dokumentenvorlagen-und-variablen.allgemein-verkaeufer">
-          <title>Informationen über den Bearbeiter</title>
+          <title>Informationen über den Verkäufer</title>
 
           <variablelist>
             <varlistentry>
@@ -3347,6 +3610,25 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
             </varlistentry>
           </variablelist>
         </sect3>
+
+        <sect3 id="dokumentenvorlagen-und-variablen.allgemein-lieferbedingungen">
+          <title>Variablen für Lieferbedingungen</title>
+
+          <variablelist>
+            <varlistentry>
+              <term><varname>delivery_term</varname></term>
+              <listitem><para>Datenbank-Objekt der Lieferbedingung</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><varname>delivery_term.description</varname></term>
+              <listitem><para>Beschreibung der Lieferbedingung</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><varname>delivery_term.description_long</varname></term>
+              <listitem><para>Langtext bzw. übersetzter Langtext der Lieferbedingung</para></listitem>
+            </varlistentry>
+          </variablelist>
+        </sect3>
       </sect2>
 
       <sect2 id="dokumentenvorlagen-und-variablen.invoice">
@@ -3641,7 +3923,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               <term><varname>netprice</varname></term>
 
               <listitem>
-                <para>Nettopreis</para>
+                <para>Alternative zu <varname>sellprice</varname>, aber <varname>netprice</varname> entspricht dem effektiven Einzelpreis und beinhaltet Zeilenrabatt und Preisfaktor. <varname>netprice</varname> wird rückgerechnet aus Zeilensumme / Menge. Diese Variable ist nützlich, wenn man den gewährten Rabatt in der Druckvorlage nicht anzeigen möchte, aber Menge * Einzelpreis trotzdem die angezeigte Zeilensumme ergeben soll. <varname>netprice</varname> hat nichts mit Netto/Brutto im Sinne von Steuern zu tun.</para>
               </listitem>
             </varlistentry>
 
@@ -3678,6 +3960,15 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               </listitem>
             </varlistentry>
 
+            <varlistentry>
+              <term><varname>donumber_do</varname></term>
+
+              <listitem>
+                <para>Lieferscheinnummer desjenigen Lieferscheins, aus dem die Position stammt, sofern die Rechnung aus einem oder
+                mehreren Lieferscheinen erstellt wurde</para>
+              </listitem>
+            </varlistentry>
+
             <varlistentry>
               <term><varname>p_discount</varname></term>
 
@@ -4776,6 +5067,41 @@ Beschreibung: &lt;%description%&gt;
         gewechselt.</para>
       </sect2>
     </sect1>
+    <sect1 id="features.warehouse">
+    <title>Mandantenkonfiguration Lager</title>
+        Die Lagerverwaltung in kivitendo funktioniert standardmässig wie folgt:
+        Wird ein Lager mit einem Lagerplatz angelegt, so gibt es die Möglichkeit hier über den
+        Menüpunkt Lager entsprechende Warenbewegungen durchzuführen. Ferner kann
+        jede Position eines Lieferscheins ein-, bzw. ausgelagert werden (Einkauf-, bzw. Verkauf).
+        Es können beliebig viele Lager mit beliebig vielen Lagerplätzen abgebildet werden.
+        Die Lagerbewegungen über einen Lieferschein erfolgt durch Anklicken jeder Einzelposition und
+        das Auswählen dieser Position zu einem Lager mit Lagerplatz.
+        Dieses Verfahren lässt sich schrittweise vereinfachen, je nachdem wie die Einstellungen in
+        der Mandatenkonfiguration gesetzt werden.
+       <itemizedlist>
+          <listitem>
+            <para><option>Auslagern über Standardlagerplatz</option> Hier wird ein zusätzlicher Knopf (Auslagern über Standard-Lagerplatz)
+            in dem Lieferschein-Beleg hinzugefügt, der dann alle Lagerbewegungen über den Standardlagerplatz (konfigurierbar pro Ware) durchführt.
+            </para>
+          </listitem>
+          <listitem>
+            <para><option>Auslagern ohne Bestandsprüfung</option>Das obige Auslagern schlägt fehl, wenn die entsprechende Menge für
+            die Lagerbewegung nicht vorhanden ist, möchte man dies auch ignorieren und ggf. dann nachpflegen, so kann man eine Negativ-Warenmenge mit dieser Option
+            erlauben. Hierfür muss ein entsprechender Lagerplatz (Fehlbestand, o.ä.) konfiguriert sein.</para>
+          </listitem>
+       </itemizedlist>
+        Zusätzliche Funktionshinweise:
+         <itemizedlist>
+          <listitem><para><option>Standard-Lagerplatz</option>Ist dieser konfiguriert, wird dies auch als Standard-Voreinstellung bei der Neuerfassung von
+          Stammdaten-> Waren / Dienstleistung / Erzeugnis verwendet.
+          </para>
+          </listitem>
+          <listitem><para><option>Standard-Lagerplatz verwenden, falls keiner in Stammdaten definiert</option>Wird beim 'Auslagern über Standardlagerplatz'
+          keine Standardlagerplatz zu der Ware gefunden, so wird mit dieser Option einfach der Standardlagerplatz verwendet.
+          </para>
+          </listitem>
+       </itemizedlist>
+    </sect1>
   </chapter>
 
   <chapter>
@@ -5197,7 +5523,7 @@ $main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{
           verfügbar:</para>
 
           <programlisting>[debug]
-file = /tmp/kivitendo-debug.log</programlisting>
+file_name = /tmp/kivitendo-debug.log</programlisting>
 
           <para>ist der Key <varname>file</varname> im Programm als
           <varname>$::lx_office_conf-&gt;{debug}{file}</varname>
@@ -5458,29 +5784,17 @@ file = /tmp/kivitendo-debug.log</programlisting>
              xreflabel="Einführung in die Datenbank-Upgradedateien">
         <title>Einführung</title>
 
-        <para>Der alte Mechanismus für SQL-Upgradescripte, der auf einer
-        Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script für
-        diese Versionsnummer sucht, schränkt sehr ein, z.B. was die parallele
-        Entwicklung im stable- und unstable-Baum betrifft.</para>
-
-        <para>Dieser Mechanismus wurde für kivitendo 2.4.1 deutlich erweitert.
-        Es werden weiterhin alle Scripte aus sql/Pg-upgrade ausgeführt.
-        Zusätzlich gibt es aber ein zweites Verzeichnis, sql/Pg-upgrade2. In
-        diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren,
-        die neben den eigentlich auszuführenden SQL- oder Perl-Befehlen einige
-        Kontrollinformationen enthält.</para>
-
-        <para>Neu sind die Kontrollinformationen, die Abhängigkeiten und
-        Prioritäten definieren können werden, sodass Datenbankscripte zwar in
-        einer sicheren Reihenfolge ausgeführt werden (z.B. darf ein "ALTER
-        TABLE" erst ausgeführt werden, wenn die Tabelle mit "CREATE TABLE"
-        angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man
-        keine Versionsnummern mehr braucht.</para>
-
-        <para>kivitendo merkt sich dabei, welches der Upgradescripte in
-        sql/Pg-upgrade2 bereits durchgeführt wurde und führt diese nicht
-        erneut aus. Dazu dient die Tabelle "schema_info", die bei der
-        Anmeldung automatisch angelegt wird.</para>
+        <para>Datenbankupgrades werden über einzelne Upgrade-Scripte gesteuert, die sich im Verzeichnis <filename>sql/Pg-upgrade2</filename>
+        befinden. In diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren, die neben den eigentlich auszuführenden SQL- oder
+        Perl-Befehlen einige Kontrollinformationen enthält.</para>
+
+        <para>Kontrollinformationen definieren Abhängigkeiten und Prioritäten, sodass Datenbankscripte zwar in einer sicheren Reihenfolge
+        ausgeführt werden (z.B. darf ein <literal>ALTER TABLE</literal> erst ausgeführt werden, wenn die Tabelle mit <literal>CREATE
+        TABLE</literal> angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man keine Versionsnummern braucht.</para>
+
+        <para>kivitendo merkt sich dabei, welches der Upgradescripte in <filename>sql/Pg-upgrade2</filename> bereits durchgeführt wurde und
+        führt diese nicht erneut aus. Dazu dient die Tabelle "<literal>schema_info</literal>", die bei der Anmeldung automatisch angelegt
+        wird.</para>
       </sect2>
 
       <sect2 id="db-upgrade-files.format"
@@ -5622,7 +5936,7 @@ file = /tmp/kivitendo-debug.log</programlisting>
 
        <programlisting># @tag: beispiel-upgrade-file42
 # @description: Ein schönes Beispielscript
-# @depends: release_3_0_0
+# @depends: release_3_1_0
 package SL::DBUpgrade2::beispiel_upgrade_file42;
 
 use strict;
@@ -5929,11 +6243,11 @@ filenames</programlisting>
         <itemizedlist>
           <listitem><para>Alle Tests liegen im Unterverzeichnis <filename>t/</filename>.</para></listitem>
 
-          <listitem><para>Ein Script (bzw. ein Test) in <filename>f/</filename> enthält einen oder mehrere Testfälle.</para></listitem>
+          <listitem><para>Ein Script (bzw. ein Test) in <filename>t/</filename> enthält einen oder mehrere Testfälle.</para></listitem>
 
           <listitem><para>Alle Dateinamen von Tests enden auf <literal>.t</literal>. Es sind selbstständig ausführbare Perl-Scripte.</para></listitem>
 
-          <listitem><para>Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in <filename>f/</filename>, deren
+          <listitem><para>Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in <filename>t/</filename>, deren
           Dateiname auf <literal>.t</literal> endet.</para></listitem>
         </itemizedlist>
       </sect2>
@@ -5953,7 +6267,16 @@ filenames</programlisting>
           <listitem><para><literal>Test::Harness</literal> 3.0.0 oder höher. Dieses Modul ist ab Perl 5.10.1 Bestandteil der
           Perl-Distribution und kann für frühere Versionen aus dem <ulink url="http://www.cpan.org">CPAN</ulink> bezogen
           werden.</para></listitem>
+          <listitem><para><literal>LWP::Simple</literal> aus dem Paket <literal>libwww-perl</literal> (Debian-Panetname:
+          <literal>libwww-perl</literal>; Fedora Core: <literal>perl-libwww-perl</literal>; openSUSE:
+          <literal>perl-libwww-perl</literal>)</para></listitem>
+          <listitem><para><literal>URI::Find</literal> (Debian-Panetname: <literal>liburi-find-perl</literal>; Fedora Core:
+          <literal>perl-URI-Find</literal>; openSUSE: <literal>perl-URI-Find</literal>)</para></listitem>
         </itemizedlist>
+
+        <para>Weitere Voraussetzung ist, dass die Testsuite ihre eigene Datenbank anlegen kann, um Produktivdaten nicht zu gefährden. Dazu
+        müssen in der Konfigurationsdatei im Abschnit <literal>testing/database</literal> Datenbankverbindungsparameter angegeben
+        werden. Der hier angegebene Benutzer muss weiterhin das Recht haben, Datenbanken anzulegen und zu löschen.</para>
       </sect2>
 
       <sect2 id="devel.testsuite.execution">
@@ -5962,14 +6285,14 @@ filenames</programlisting>
         </title>
 
         <para>Es gibt mehrere Möglichkeiten zum Ausführen der Tests: entweder, man lässt alle Tests auf einmal ausführen, oder man führt
-        gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript <filename>t/test.sh</filename>.</para>
+        gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript <filename>t/test.pl</filename>.</para>
 
-        <para>Will man die komplette Test-Suite ausführen, so muss man einfach nur <filename>t/test.sh</filename> ohne weitere Parameter aus
+        <para>Will man die komplette Test-Suite ausführen, so muss man einfach nur <filename>t/test.pl</filename> ohne weitere Parameter aus
         dem kivitendo-Basisverzeichnis heraus ausführen.</para>
 
-        <para>Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an <filename>t/test.sh</filename>. Beispielsweise:</para>
+        <para>Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an <filename>t/test.pl</filename>. Beispielsweise:</para>
 
-        <programlisting>t/test.sh t/form/format_amount.t t/background_job/known_jobs.t</programlisting>
+        <programlisting>t/test.pl t/form/format_amount.t t/background_job/known_jobs.t</programlisting>
       </sect2>
 
 
@@ -6006,7 +6329,7 @@ filenames</programlisting>
             Ideen für neue Test-Scripte, die keine konkreten Funktionen testen
           </title>
 
-          <para> Ideen, die abgesehen von Funktions noch nicht umgesetzt wurden:</para>
+          <para> Ideen, die abgesehen von Funktionen noch nicht umgesetzt wurden:</para>
 
           <itemizedlist>
             <listitem><para>Überprüfung auf fehlende symbolische Links</para></listitem>
@@ -6031,7 +6354,7 @@ filenames</programlisting>
             <listitem><para>Namen sind englisch, komplett klein geschrieben und einzelne Wörter mit Unterstrichten getrennt (beispielsweise
             <filename>bad_function_params.t</filename>).</para></listitem>
 
-            <listitem><para>Unterverzeichnisse sollten grob nach dem Themenbereich benannt sind, mit dem sich die Scripte darin befassen
+            <listitem><para>Unterverzeichnisse sollten grob nach dem Themenbereich benannt sein, mit dem sich die Scripte darin befassen
             (beispielsweise <filename>background_jobs</filename> für Tests rund um Hintergrund-Jobs).</para></listitem>
 
             <listitem><para>Test-Scripte sollten einen überschaubaren Bereich von Funktionalität testen, der logisch zusammenhängend ist