Installationsdokumentation ergänzt
[kivitendo-erp.git] / doc / dokumentation.xml
index 488558d..5b311bc 100644 (file)
             <para><literal>Email::MIME</literal></para>
           </listitem>
 
+          <listitem>
+            <para><literal>MIME::Entity</literal></para>
+          </listitem>
+
+          <listitem>
+            <para><literal>MIME::Parser</literal></para>
+          </listitem>
+
           <listitem>
             <para><literal>FCGI</literal> (nicht Versionen 0.68 bis 0.71
             inklusive; siehe <xref
           Perl-Pakete als Debian-Pakete zur Verfügung. Sie können mit
           folgendem Befehl installiert werden:</para>
 
-          <programlisting>apt-get install apache2 libarchive-zip-perl libclone-perl \
+          <programlisting>apt install  apache2 libarchive-zip-perl libclone-perl \
   libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
   libemail-address-perl  libemail-mime-perl libfcgi-perl libjson-perl \
   liblist-moreutils-perl libnet-smtp-ssl-perl libnet-sslglue-perl \
   libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl \
   libimage-info-perl libgd-gd2-perl libapache2-mod-fcgid \
   libfile-copy-recursive-perl postgresql libalgorithm-checkdigits-perl \
-  libcrypt-pbkdf2-perl git
+  libcrypt-pbkdf2-perl git libcgi-pm-perl
 </programlisting>
 
           <para>Für das Paket HTML::Restrict gibt es kein Debian-Paket, dies
@@ -418,6 +426,25 @@ cpan HTML::Restrict</programlisting>
           <programlisting>cpan Rose::Db::Object</programlisting>
         </sect3>
       </sect2>
+      <sect2>
+        <title>Andere Pakete installieren</title>
+
+        <para>Seit Version v3.4.0 wird für den Bankimport optional das Paket
+        'aqbanking-tools' benötigt.</para>
+
+        <para>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>Ubuntu: <programlisting>apt install poppler-utils</programlisting></para>
+
+        <para>OpenSuSE: <programlisting>zypper install poppler-tools</programlisting></para>
+      </sect2>
+
     </sect1>
 
     <sect1 id="Manuelle-Installation-des-Programmpaketes"
@@ -954,7 +981,7 @@ Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
 &lt;/Directory&gt;
 
 &lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
-Require all granted
+Require all denied
 &lt;/DirectoryMatch&gt;</programlisting>
 
           <warning>
@@ -969,6 +996,17 @@ Require all granted
             <programlisting>
   Order Allow,Deny
   Allow from All </programlisting>
+
+            <para>und statt</para>
+
+            <programlisting>Require all denied</programlisting>
+
+            <para>muss stehen:</para>
+
+            <programlisting>
+  Order Deny,Allow
+  Deny from All </programlisting>
+
           </warning>
 
           <para>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
@@ -1779,7 +1817,7 @@ systemctl enable kivitendo-task-server.service</programlisting>
       debianoiden Betriebssystemen installiert man die Pakete mit:</para>
 
       <para><programlisting>apt-get install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
-  exlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
+  texlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
 
       <para>Für Fedora benötigen Sie die folgenden Pakete:</para>
 
@@ -5263,13 +5301,18 @@ systemctl enable kivitendo-task-server.service</programlisting>
         <sect3 id="dokumentenvorlagen-und-variablen.dunning-allgemein">
           <title>Allgemeine Variablen in Mahnungen</title>
 
-          <para>Die Variablen des Verkäufers stehen wie gewohnt als
-          <varname>employee_...</varname> zur Verfügung. Die Adressdaten des
-          Kunden stehen als Variablen <varname>name</varname>,
+          <para>Die Variablen des Bearbeiters, bzw. Verkäufers stehen wie gewohnt als
+          <varname>employee_...</varname> bzw. <varname>salesman_...</varname> zur Verfügung.
+          Werden mehrere Rechnungen in einer Mahnung zusammengefasst, so werden
+          die Metadaten (Bearbeiter, Abteilung, etc) der ersten angemahnten Rechnung
+          im Ausdruck genommen.</para>
+          <para>Die Adressdaten des Kunden stehen als Variablen <varname>name</varname>,
           <varname>street</varname>, <varname>zipcode</varname>,
           <varname>city</varname>, <varname>country</varname>,
           <varname>department_1</varname>, <varname>department_2</varname>,
-          und <varname>email</varname> zur Verfügung.</para>
+          und <varname>email</varname> zur Verfügung. Der Ansprechpartner <varname>cp_...</varname>
+          steht auch zu Verfügung, wird allerdings auch nur von der ersten angemahnten Rechnung (s.o.)
+          genommen.</para>
 
           <para>Weitere Variablen beinhalten:</para>
 
@@ -6209,6 +6252,327 @@ Beschreibung: &lt;%description%&gt;
          Vorschläge für weitere (z.B. branchenspezifische) Kontenpläne
          bitte an <literal>empfang@revamp-it.ch</literal> senden.</para>
     </sect1>
+
+    <sect1 id="features.part_classification">
+      <title>Artikelklassifizierung</title>
+
+      <sect2>
+        <title>Übersicht</title>
+
+        <para>Die Klassifizierung von Artikeln dient einer weiteren Gliederung
+        um zum Beispiel den Einkauf vom Verkauf zu trennen, gekennzeichnet
+        durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel (z.B. "E").
+        Für jede Klassifizierung besteht eine Beschreibung und eine Abkürzung
+        die normalerweise aus einem Zeichen besteht, kann aber auf mehrere
+        Zeichen erweitert werden, falls zur Unterscheidung notwendig, sinnvoll
+        sind jedoch nur maximal 2 Zeichen.</para>
+      </sect2>
+
+      <sect2>
+        <title>Basisklassifizierung</title>
+
+        <para>Als Basisklassifizierungen gibt es</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Einkauf</para>
+          </listitem>
+
+          <listitem>
+            <para>Verkauf</para>
+          </listitem>
+
+          <listitem>
+            <para>Handelsware</para>
+          </listitem>
+
+          <listitem>
+            <para>Produktion</para>
+          </listitem>
+
+          <listitem>
+            <para>- keine - (diese wird bei einer Aktualisierung für alle
+            existierenden Artikel genommen, gültig für Verkauf und
+            Einkauf)</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Es können weitere Klassifizierungen angelegt werden. So kann es
+        z.B. für separat auszuweisende Artikel folgened Klassen geben:</para>
+
+        <orderedlist>
+          <listitem>
+            <para>Lieferung (Logistik, Transport) mit Kürzel L</para>
+          </listitem>
+
+          <listitem>
+            <para>Material (Verpackungsmaterial) mit Kürzel M</para>
+          </listitem>
+        </orderedlist>
+      </sect2>
+
+      <sect2>
+        <title>Attribute</title>
+
+        <para>Bisher haben die Klassifizierungen folgende Attribute, die auch
+        alle gleichzeitg gültig sein können</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>gültig für Verkauf - dieser Artikel kann im Verkauf genutzt
+            werden</para>
+          </listitem>
+
+          <listitem>
+            <para>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
+            werden</para>
+          </listitem>
+
+          <listitem>
+            <para>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
+            (LaTeX) zusätzliche Variable</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Beim separat ausweisen stehen im LaTeX die Variable <emphasis
+        role="bold">&lt;%non_separate_subtotal%&gt; </emphasis>zur Verfügung,
+        die alle nicht separat auszuweisenden Artikelkosten saldiert, sowie
+        pro separat auszuweisenden Klassifizierungen die Variable<emphasis
+        role="bold"> &lt;%separate_X_subtotal%&gt;</emphasis> wobei X das
+        Kürzel der Klassifizierung ist.</para>
+
+        <para>Im obigen Beispiel wäre das für Lieferkosten <emphasis
+        role="bold">&lt;%separate_L_subtotal%&gt;</emphasis> und für
+        Verpackungsmaterial <emphasis
+        role="bold">&lt;%separate_M_subtotal%&gt; </emphasis>.</para>
+      </sect2>
+
+      <sect2>
+        <title>Zwei-Zeichen Abkürzung</title>
+
+        <para>Der Typ des Artikel und die Klassifizierung werden durch zwei
+        Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
+        Typs des Artikel ('P','A','S') , deutch 'W', 'E', und 'D' für Ware
+        Erzeugnis oder Dienstleistung, ggf. weitere Typen.</para>
+
+        <para>Der zweite (und ggf. auch ein dritter Buchstabe, falls nötig)
+        entspricht der lokalisierten Abkürzung der Klassifizierung.</para>
+
+        <para>Diese Abkürzung wird überall beim Auflisten von Artikeln zur
+        Erleichterung mit dargestellt.</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="features.file_managment">
+      <title>Dateiverwaltung (Mini-DMS)</title>
+
+      <sect2>
+        <title>Übersicht</title>
+        <para>Parallel zum alten WebDAV gibt es eine Datei-Management-Sytem, daß Dateien
+        verschiedenen Typs verwaltet. Dies können</para>
+        <orderedlist>
+          <listitem>
+            <para>aus ERP-Daten per LaTeX Template erzeugte PDF-Dokumente,</para>
+          </listitem>
+          <listitem>
+            <para>zu bestimmten ERP-Daten gehörende Anhangdateien unterschiedlichen Formats,</para>
+          </listitem>
+          <listitem>
+            <para>per Scanner eingelesene PDF-Dateien,</para>
+          </listitem>
+          <listitem>
+            <para>per Email empfangene Dateianhänge unterschiedlichen Formats,</para>
+          </listitem>
+          <listitem>
+            <para>sowie speziel an Artikel hochgeladene Bilder sein.</para>
+          </listitem>
+        </orderedlist>
+        <screenshot>
+          <screeninfo>Übersicht</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata contentwidth="600" fileref="images/DMS-Overview.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+      </sect2>
+
+      <sect2>
+        <title>Struktur</title>
+
+      <para>Über eine vom Speichermedium unabhängige Zwischenschicht werden die Dateien und ihre Versionen in der Datenbank verwaltet. Darunter können verschiedene Implementierungen (Backends) gleichzeitig existieren:
+      </para>
+        <itemizedlist>
+          <listitem>
+            <para>Dateisystem,</para>
+          </listitem>
+          <listitem>
+            <para>WebDAV,</para>
+          </listitem>
+          <listitem>
+            <para>Schnittstelle zu externem Dokumenten-Management-System,</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
+              Mandantenkonfigurierung 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, wi 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 an Artikeln,
+            Lieferanten und Kunden hinterlegt sein</para>
+          </listitem>
+          <listitem>
+            <para>"image", Bilder an Artikeln. 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, des Dateityps
+        des Dateinamens und des Backends in dem die Datei gespeichert ist auch die Quelle der Datei notiert:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para> "created" , vom System erzeugte Dokumente"</para>
+          </listitem>
+          <listitem>
+            <para> "uploaded", hochgeladene Dokumente</para>
+          </listitem>
+          <listitem>
+            <para> "email", vom Mailsystem empfangene Dateien</para>
+          </listitem>
+          <listitem>
+            <para> "scanner[1]", von einem oder mehreren Scannern erzeugte Dateien. Existieren mehrere Scanner,
+            so sind diese durch unterschiedliche Quellennamen zu definieren</para>
+          </listitem>
+        </itemizedlist>
+        <para>Je nach Dateityp sind nur bestimmte Quellen zulässig. So gibt es für "attachment" und "image" nur
+        die Quelle "uploaded". Für "document" gibt es auf jeden Fall die Quelle "created".
+        Die Quellen "scanner" und "email" müssen derzeit in der Datenbank konfiguriert werden (siehe <xref linkend="file_management.dbconfig"/>.</para>
+      </sect2>
+
+      <sect2>
+        <title>Anwendung</title>
+        <para>Die Daten werden bei den ERP-Objekten als extra Reiter dargestellt.
+        Eine Verkaufsrechnung z.B. hat die
+        Reiter "Dokumente" und "Dateianhänge.</para>
+        <screenshot>
+          <screeninfo>Reiter "Dateianhänge"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata scale="50" fileref="images/DMS-Anhaenge.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Bei den Dateianhängen wird immer nur die aktuelle Version einer Datei angezeigt.
+        Wird eine Datei mit gleichem Namen hochgeladen, so wird eine neue Version der Datei erstellt.
+        Vorher wird der Anwender durch einen Dialog ob er eine neue Version anlegen will oder
+        ob er die Datei umbenennen will, falls es eine neue Datei sein soll.</para>
+        <screenshot>
+          <screeninfo>Reiter "Dateianhänge"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata width="100" contentwidth="40" fileref="images/DMS-Anhaenge-hochladen.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Es können mehrere Dateien gleichzeitig hochgeladen werden,
+        solange in Summe die maximale Größe nicht überschritten wird.
+        (siehe <xref linkend="file_management.clientconfig"/></para>
+        <screenshot>
+          <screeninfo>Reiter "Dokumente"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  width="500" fileref="images/DMS-Dokumente.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Sind keine weiteren Quellen für Dokumente konfiguriert, so gibt es nur "erzeugte Dokumente".
+        Es werden alle Versionen der generierten Datei angezeigt. Für Verkaufsrechnungen kommen keine
+        anderen Quellen zur Geltung. Werden entsprechend
+        <xref linkend="file_management.dbconfig"/> zusätzliche Quellen konfiguriert, so sind diese z.B. bei
+        Einkaufsrechnungen sichtbar:</para>
+        <screenshot>
+          <screeninfo>Reiter "Dokumente"</screeninfo>
+          <mediaobject>
+            <imageobject>
+              <imagedata  contentwidth="600" fileref="images/DMS-Dokumente-Scanner.png"/>
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+        <para>Statt des Löschens wird hier die Datei zurück zur Quelle verschoben. Somit kann die Datei anschließend
+        an ein anderes ERP-Objekt angehängt werden.</para>
+        <para>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie sind bisher nur bei Bildern relevant.</para>
+      </sect2>
+
+      <sect2>
+        <title>Konfigurierung</title>
+        <sect3 id="file_management.clientconfig" xreflabel="Mandantenkonfigurierung">
+          <title>Mandantenkonfigurierung</title>
+          <sect4>
+            <title>Reiter "Features"</title>
+            <para>Unter dem Reiter <emphasis role="bold">Features</emphasis> im Abschnit Dateimanagement ist
+            neben dem "alten" WebDAV das Dateimangement general 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. Für das Backend Dateisystem ist das Wurzelverzeichnis für den Mandanten einzugeben.</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, sodaß an den ERP-Dokumenten immer
+        die Anhänge zum Generierungszeitpunkt eingebettet sind.
+        </para>
+        </sect4>
+        </sect3>
+        <sect3 id="file_management.dbconfig" xreflabel="Datenbank-Konfigurierung">
+          <title>Datenbank-Konfigurierung</title>
+          <para>Die zusätzlichen Quellen für email oder ein oder mehrere Scanner sind derzeit vom Administrator
+          direkt in der Datenbanktablle "user_preferences" einzurichten. Die "value" ist im JSON-Format
+          mit den jeweiligen Werten des Verzeichnisses und der Beschreibung der Quelle.</para>
+          <programlisting>
+ id |  login    |  namespace   | version |   key    |          value                         
+----+-----------+--------------+---------+----------+---------------------------
+  1 | #default# | file_sources | 0.00000 | scanner1 |
+                             {"dir":"/var/tmp/scanner1","desc":"Scanner Einkauf"}
+  2 | #default# | file_sources | 0.00000 | scanner2 |
+                             {"dir":"/var/tmp/scanner2","desc":"Scanner Verkauf"}
+  3 | #default# | file_sources | 0.00000 | emails   |
+                             {"dir":"/var/tmp/emails","desc":"Empfangene Mails" }
+          </programlisting>
+          <para>Es ist daran gedacht, statt dem default Eintrag später für bestimmte Benutzer ('login') bestimmte Quellen zuzulassen,
+          dies wird nach Bedarf implementiert.</para>
+        </sect3>
+      </sect2>
+    </sect1>
   </chapter>
 
   <chapter>
@@ -6491,8 +6855,7 @@ Beschreibung: &lt;%description%&gt;
             </listitem>
 
             <listitem>
-              <para>Enthält unter anderem Listenbegrenzung vclimit,
-              Datumsformat dateformat und Nummernformat numberformat</para>
+              <para>Enthält unter anderem Datumsformat dateformat und Nummernformat numberformat</para>
             </listitem>
 
             <listitem>
@@ -7658,7 +8021,7 @@ Support::TestSetup::login();</programlisting>
           sein. Dieser wird für die Datenbankverbindung benötigt.</para>
 
           <para>Wir keine vollständig initialisierte Umgebung benötigt, so
-          kann die letzte Zeile <code>Support::TestSetup::login();</code>
+          kann die letzte Zeile <programlisting>Support::TestSetup::login();</programlisting>
           weggelassen werden, was die Ausführungszeit des Scripts leicht
           verringert.</para>
         </sect3>