Changelog Auslagern mit Seriennummer
[kivitendo-erp.git] / doc / dokumentation.xml
index cbe01b9..dea3f13 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.5.5: Installation, Konfiguration,
+  <title>kivitendo 3.5.6: Installation, Konfiguration,
   Entwicklung</title>
 
   <chapter id="Aktuelle-Hinweise">
         ohne große Probleme auf den derzeit aktuellen verbreiteten
         Distributionen läuft.</para>
 
-        <para>Anfang 2019 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>8.0 "Jessie"</para>
-              </listitem>
-              <listitem>
-                <para>9.0 "Stretch"</para>
+                <para>10.0 "Buster"</para>
               </listitem>
               <listitem>
-                <para>10.0 "Buster"</para>
+                <para>11.0 "Bullseye"</para>
               </listitem>
             </itemizedlist>
           </listitem>
 
           <listitem>
-            <para>16.04 "Xenial Xerus" LTS und 18.04 "Bionic Beaver" LTS
+            <para>20.04 "Focal Fossa" LTS
           </para>
           </listitem>
 
           <listitem>
-            <para>openSUSE 15.0</para>
+            <para>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</para>
           </listitem>
 
           <listitem>
             <para><literal>Archive::Zip</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>CAM::PDF</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>CGI</literal></para>
           </listitem>
             <para><literal>XML::Writer</literal></para>
           </listitem>
 
+          <listitem>
+            <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.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>,
             <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>
-          <note id="build-essential">
-          <para>Für ältere Ubuntu/Debians müßen einige Pakete per CPAN installiert werden.
-          Das geht bspw. für das benötige Paket HTML::Restrict mit:</para>
-          <programlisting>apt-get install build-essential
-cpan HTML::Restrict</programlisting>
-          </note>
         </sect3>
 
         <sect3>
@@ -465,14 +465,15 @@ cpan HTML::Restrict</programlisting>
         </sect3>
 
         <sect3>
-          <title>openSUSE</title>
+          <title>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</title>
 
-          <para>Für openSUSE stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung.</para>
-          <para>Dies setzt voraus, das eben die erforderlichen Repositories dem System bekannt gemacht worden sind.</para>
-          <para>Um zusätzliche 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. Da wahrscheinlich für die Administration eine SSH-Verbindung zum Server benutzt wird.</para>
+          <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.0/ \
+  http://download.opensuse.org/repositories/devel:languages:perl/openSUSE_Leap_15.2/ \
   "devel:languages:perl"
           </programlisting>
           <programlisting>zypper addrepo -f \
@@ -489,12 +490,14 @@ cpan HTML::Restrict</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.0 unterstützt. Die SuSE Macher haben ab Version 15.0 einen größen Umbau in der Verwaltung der Pakete vorgenommen, das heißt, der Paketumfang ist der SLES 15 als kleinsten Nenner angepasst. Dies gilt besonders der openSUE Distribution. Es gibt ja einmal die openSUSE Distri und die Professionelle SLES Version. Dadurch sind viele Pakete aus dem Repositorie enfernt worden, aber auch viele auf aktuellen Stand gehalten.</para>
+          <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>Das überprüfen wir mit YaST. Sollte openSUSE bis zur Version 15.0 zum Einsatz kommen und der Administrator bei der Installation der Distribution die KDE Oberfläche aktiviert hat, loggen wir uns am Server direkt ein, starten das Verwaltungsprogram in einer Konsole wie folgt:</para>
+          <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>Sie können mit folgendem Befehl installiert werden:</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>
 
@@ -528,7 +531,7 @@ cpan HTML::Restrict</programlisting>
   perl-Test-LongString perl-File-Find-Rule
           </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 plazieren, der Vollständigkeit halber hier für die Installation mit angegeben.
+          <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 \
@@ -543,7 +546,7 @@ cpan HTML::Restrict</programlisting>
           </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 DateTime::event::Cron DateTime::Set FCGI \
   HTML::Restrict PBKDF2::Tiny Rose::Db::Object Set::Infinite</programlisting>
@@ -1128,6 +1131,10 @@ Alias /kivitendo-erp/ /var/www/kivitendo-erp/
             <listitem>
               <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>Als Perl Backend wird das Modul <filename>FCGI.pm</filename>
@@ -1268,6 +1275,26 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
 
        <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>
@@ -1282,6 +1309,19 @@ Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</prog
         url="https://mozilla.github.io/server-side-tls/ssl-config-generator/">
         SSL-Konfigurations-Generator</ulink>.</para>
       </sect2>
+      <sect3>
+        <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>
+      </sect3>
+
     </sect1>
 
     <sect1 id="config.task-server">
@@ -7328,6 +7368,148 @@ document_path = /var/local/kivi_documents
         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>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“ → „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>