Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 51d8e086

Von Moritz Bunkus vor 3 Monaten hinzugefügt

  • ID 51d8e086008feefe793435da6fab217428650592
  • Vorgänger f8e7a285
  • Nachfolger 5a00c5be

Auth: HTML- & PDF-Dokumentate neu bauen

Unterschiede anzeigen:

doc/html/ch02s02.html
</p></li><li class="listitem"><p>
<code class="literal">Exception::Class</code>
</p></li><li class="listitem"><p>
<code class="literal">FCGI</code> (nicht Versionen 0.68 bis 0.71
inklusive; siehe <a class="xref" href="ch02s07.html#Apache-Konfiguration.FCGI.WebserverUndPlugin" title="2.7.2.3. Getestete Kombinationen aus Webservern und Plugin">Abschnitt&nbsp;2.7.2.3, „Getestete Kombinationen aus Webservern und Plugin“</a>)</p></li><li class="listitem"><p>
<code class="literal">FCGI</code>
</p></li><li class="listitem"><p>
<code class="literal">File::Copy::Recursive</code>
</p></li><li class="listitem"><p>
<code class="literal">File::Flock</code>
......
installieren.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
<code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
<code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><div class="sect3" title="2.2.2.1. Debian und Ubuntu"><div class="titlepage"><div><div><h4 class="title"><a name="d0e673"></a>2.2.2.1. Debian und Ubuntu</h4></div></div></div><p>Für Debian und Ubuntu stehen die meisten der benötigten
neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><div class="sect3" title="2.2.2.1. Debian und Ubuntu"><div class="titlepage"><div><div><h4 class="title"><a name="d0e671"></a>2.2.2.1. Debian und Ubuntu</h4></div></div></div><p>Für Debian und Ubuntu stehen die meisten der benötigten
Pakete als Debian-Pakete zur Verfügung. Sie können mit
folgendem Befehl installiert werden:</p><pre class="programlisting">apt install apache2 libarchive-zip-perl libclone-perl \
libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
......
libencode-imaputf7-perl libmail-imapclient-perl libuuid-tiny-perl
</pre><p>Sollten Pakete nicht zu Verfügung stehen, so können diese auch mittels CPAN installiert werden. Ferner muss für Ubuntu das Repository "Universe" aktiv sein (s.a. Anmerkungen).</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left"><a name="ubuntu-universe"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Die Perl Pakete für Ubuntu befinden sich im "Universe" Repository. Falls dies nicht aktiv ist, kann dies mit folgendem Aufruf aktiviert werden:
</p><pre class="programlisting">add-apt-repository universe</pre><p>
</p></td></tr></table></div></div><div class="sect3" title="2.2.2.2. Fedora"><div class="titlepage"><div><div><h4 class="title"><a name="d0e688"></a>2.2.2.2. Fedora</h4></div></div></div><p>Für Fedora stehen die meisten der benötigten Perl-Pakete als
</p></td></tr></table></div></div><div class="sect3" title="2.2.2.2. Fedora"><div class="titlepage"><div><div><h4 class="title"><a name="d0e686"></a>2.2.2.2. Fedora</h4></div></div></div><p>Für Fedora stehen die meisten der benötigten Perl-Pakete als
RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
installiert werden:</p><pre class="programlisting">dnf install httpd mod_fcgid postgresql-server postgresql-contrib\
perl-Algorithm-CheckDigits perl-Archive-Zip perl-CPAN perl-Class-XSAccessor \
......
perl-Params-Validate perl-Regexp-IPv6 perl-Rose-DB perl-Rose-DB-Object \
perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \
perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI perl-XML-Writer \
perl-YAML perl-libwww-perl</pre></div><div class="sect3" title="2.2.2.3. openSUSE Leap 15.4 und SUSE Linux Enterprise Server 15"><div class="titlepage"><div><div><h4 class="title"><a name="d0e695"></a>2.2.2.3. openSUSE Leap 15.4 und SUSE Linux Enterprise Server 15</h4></div></div></div><p>Für openSUSE Leap 15.4, sowie SLES 15 stehen alle benötigten Perl-Pakete als RPM-Pakete zur Verfügung.</p><p>Damit diese installiert werden können, muß das System die erforderlichen Repositories kennen und Zugriff über das Internet darauf haben.</p><p>Daher machen wir die Repositories dem System bekannt.</p><p>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.</p><p>Dazu geben wir folgenden Befehl ein:</p><p>Das ERP kivitendo Repository:</p><pre class="programlisting">zypper addrepo -f -p 90 \
perl-YAML perl-libwww-perl</pre></div><div class="sect3" title="2.2.2.3. openSUSE Leap 15.4 und SUSE Linux Enterprise Server 15"><div class="titlepage"><div><div><h4 class="title"><a name="d0e693"></a>2.2.2.3. openSUSE Leap 15.4 und SUSE Linux Enterprise Server 15</h4></div></div></div><p>Für openSUSE Leap 15.4, sowie SLES 15 stehen alle benötigten Perl-Pakete als RPM-Pakete zur Verfügung.</p><p>Damit diese installiert werden können, muß das System die erforderlichen Repositories kennen und Zugriff über das Internet darauf haben.</p><p>Daher machen wir die Repositories dem System bekannt.</p><p>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.</p><p>Dazu geben wir folgenden Befehl ein:</p><p>Das ERP kivitendo Repository:</p><pre class="programlisting">zypper addrepo -f -p 90 \
http://download.opensuse.org/repositories/Application:/ERP:/kivitendo/15.4/ \
"OSS-15.4-App_ERP_kivitendo"</pre><p>Das ERP kivitendo Evaluation Repository:</p><pre class="programlisting">zypper addrepo -f -p 90 \
http://download.opensuse.org/repositories/Application:/ERP:/kivitendo:/eval/15.4/ \
"OSS-15.4-App_ERP_kivitendo_eval"</pre><p>Danach geben wir noch die beiden folgenden Befehle ein:</p><pre class="programlisting">zypper clean</pre><pre class="programlisting">zypper refresh</pre><p>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.</p><pre class="programlisting">zypper --help</pre><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Offiziell wird von openSUSE nur noch Versionen ab 15.4 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 SLE 15 als Programmunterbau angepasst. Dies gilt besonders der openSUSE Distribution. Es gibt ja einmal die openSUSE Distri und die professionelle SLE (SUSE Linux Enterprise) 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. Mit der openSUSE Leap 15.4 ist es dem Benutzer ganz einfach gemacht worden zur professionellen SUSE Linux Enterprise zu wechseln, da die RPM Paketbasis identisch ist.</p></td></tr></table></div><p>Ob openSUSE Leap oder SLE, man kann 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. Diese Variante wird gerne auch als 'Server', 'minimale Server' oder auch 'minmal X' Variante bezeichnet.</p><p>Als Administrator hatte man jedoch auch immer die Möglichkeit, bei der Installation der Distribution die KDE (graphische) 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:</p><p>yast2 return.</p><p>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.</p><p>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.</p><p>Programmpakete können mit folgendem Befehl installiert werden:</p><p>zypper install Paketname</p><p>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.</p><pre class="programlisting">zypper install kivitendo-erp</pre><p>Für Entwickler installiert man noch das folgende Paket:</p><pre class="programlisting">zypper install kivitendo-erp-devel</pre></div></div><div class="sect2" title="2.2.3. Andere Pakete installieren"><div class="titlepage"><div><div><h3 class="title"><a name="d0e751"></a>2.2.3. Andere Pakete installieren</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
"OSS-15.4-App_ERP_kivitendo_eval"</pre><p>Danach geben wir noch die beiden folgenden Befehle ein:</p><pre class="programlisting">zypper clean</pre><pre class="programlisting">zypper refresh</pre><p>Sollte zypper eine Meldung ausgeben, ob der Repository 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.</p><pre class="programlisting">zypper --help</pre><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Offiziell wird von openSUSE nur noch Versionen ab 15.4 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 SLE 15 als Programmunterbau angepasst. Dies gilt besonders der openSUSE Distribution. Es gibt ja einmal die openSUSE Distri und die professionelle SLE (SUSE Linux Enterprise) Version. Dadurch sind viele Pakete aus dem ursprünglich nur für die openSUSE geltenen Repository enfernt worden, aber auch viele auf aktuellem Stand gehalten. Mit der openSUSE Leap 15.4 ist es dem Benutzer ganz einfach gemacht worden zur professionellen SUSE Linux Enterprise zu wechseln, da die RPM Paketbasis identisch ist.</p></td></tr></table></div><p>Ob openSUSE Leap oder SLE, man kann 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. Diese Variante wird gerne auch als 'Server', 'minimale Server' oder auch 'minmal X' Variante bezeichnet.</p><p>Als Administrator hatte man jedoch auch immer die Möglichkeit, bei der Installation der Distribution die KDE (graphische) 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:</p><p>yast2 return.</p><p>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.</p><p>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.</p><p>Programmpakete können mit folgendem Befehl installiert werden:</p><p>zypper install Paketname</p><p>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.</p><pre class="programlisting">zypper install kivitendo-erp</pre><p>Für Entwickler installiert man noch das folgende Paket:</p><pre class="programlisting">zypper install kivitendo-erp-devel</pre></div></div><div class="sect2" title="2.2.3. Andere Pakete installieren"><div class="titlepage"><div><div><h3 class="title"><a name="d0e749"></a>2.2.3. Andere Pakete installieren</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">poppler-utils</code> 'pdfinfo' zum Erkennen der Seitenanzahl bei der PDF-Generierung</p></li><li class="listitem"><p>
<code class="literal">Postgres Trigram-Index</code> Für datenbankoptimierte Suchanfragen. Bspw. im Paket <code class="literal">postgresql-contrib</code> enthalten</p></li></ul></div><p>Debian und Ubuntu: </p><pre class="programlisting">apt install postgresql-contrib poppler-utils</pre><p>
</p><p>Fedora: </p><pre class="programlisting">dnf install poppler-utils postgresql-contrib</pre><p>
doc/html/ch02s04.html
$ service apache2 restart # webserver starten!
</pre><p>
</p></div><div class="sect2" title="2.4.2. Installation über die Github Website"><div class="titlepage"><div><div><h3 class="title"><a name="Installation_mit_Github"></a>2.4.2. Installation über die Github Website</h3></div></div></div><p>Der aktuelle Stable-Release, bzw. beta Release wird bei github
gehostet und kann <a class="ulink" href="https://github.com/kivitendo/kivitendo-erp/releases" target="_top">hier</a>
gehostet und kann <a class="ulink" href="https://github.com/kivitendo/kivitendo-erp/tags" target="_top">hier</a>
heruntergeladen werden.</p><p>Das aktuelleste kivitendo ERP-Archiv
(<code class="filename">kivitendo-erp-*.tgz</code>) wird dann im
Dokumentenverzeichnis des Webservers (z.B.
doc/html/ch02s05.html
<code class="literal">authentication</code> (siehe Abschnitt "<a class="xref" href="ch02s10.html" title="2.10. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.10, „Benutzerauthentifizierung und Administratorpasswort“</a>"
in diesem Kapitel)</p></li><li class="listitem"><p>
<code class="literal">authentication/database</code>
</p></li><li class="listitem"><p>
<code class="literal">authentication/http_basic</code>
</p></li><li class="listitem"><p>
<code class="literal">authentication/http_headers</code>
</p></li><li class="listitem"><p>
<code class="literal">authentication/ldap</code>
</p></li><li class="listitem"><p>
doc/html/ch02s07.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.7. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s08.html" title="2.8. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.7. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.7. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.7. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.7.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1295"></a>2.7.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
<a class="xref" href="ch02s07.html#Apache-Konfiguration.FCGI" title="2.7.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
Webserverkonfigurationsdatei <code class="literal">000-default.conf</code> eingestellt
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
anderen Datei hinzu, die beim Starten des Webservers eingelesen
wird:</p><pre class="programlisting">AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
Alias /kivitendo-erp/ /var/www/kivitendo-erp/
&lt;Directory /var/www/kivitendo-erp&gt;
AddHandler cgi-script .pl
Options ExecCGI Includes FollowSymlinks
&lt;/Directory&gt;
&lt;Directory /var/www/kivitendo-erp/users&gt;
Require all granted
&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
das kivitendo-Archiv entpacket haben.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Vor den einzelnen Optionen muss bei einigen Distributionen ein
Plus ‘<code class="literal">+</code>’ gesetzt werden.</p><p>Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss
noch explizit das cgi-Modul mittels </p><pre class="programlisting">a2enmod cgi</pre><p>
aktiviert werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
geholfen, die folgende Option in die Konfiguration aufzunehmen:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.7.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.7.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.7.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.7.2.1. Was ist FastCGI?</h4></div></div></div><p>Direkt aus <a class="ulink" href="http://de.wikipedia.org/wiki/FastCGI" target="_top">Wikipedia</a>
kopiert:</p><p>
[<span class="citation"> FastCGI ist ein Standard für die Einbindung
externer Software zur Generierung dynamischer Webseiten in einem
Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
(CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
umgehen. </span>]
</p></div><div class="sect3" title="2.7.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.7.2.2. Warum FastCGI?</h4></div></div></div><p>Perl Programme (wie kivitendo eines ist) werden nicht statisch
kompiliert. Stattdessen werden die Quelldateien bei jedem Start
übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
deutlich länger dauert als früher, und dass davon 90% für das Laden
der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.7.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.7.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.4.18 (Ubuntu 16.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.29 (Ubuntu 18.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.41 (Ubuntu 20.04 LTS) und mod_fcgid</p></li></ul></div><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
verwendet.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem
strict in der Behandlung von Unicode, und verweigern bestimmte
Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrer
Installation gibt, muss zwingend Version 0.68 oder aber Version
0.72 und neuer eingesetzt werden.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie
sich die Vorgängerversion wie folgt installieren:</p><pre class="programlisting">force install M/MS/MSTROUT/FCGI-0.68.tar.gz</pre></td></tr></table></div></div><div class="sect3" title="2.7.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.7.2.4. Konfiguration des Webservers</h4></div></div></div><p>Bevor Sie versuchen, eine kivitendo Installation unter FCGI
laufen zu lassen, empfiehlt es sich die Installation ersteinmal
unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
debuggen die beim ersten aufsetzen auftreten können. Sollte die
Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
dem Installationspfad von kivitendo im Dateisystem
("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
unterschieden, unter der kivitendo im Webbrowser erreichbar ist
("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
Require all granted
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Wer einen älteren Apache als Version 2.4 im Einsatz hat,
muss entsprechend die Syntax der Directorydirektiven verändert.
Statt</p><pre class="programlisting">Require all granted</pre><p>muß man Folgendes einstellen:</p><pre class="programlisting">
Order Allow,Deny
Allow from All </pre><p>und statt</p><pre class="programlisting">Require all denied</pre><p>muss stehen:</p><pre class="programlisting">
Order Deny,Allow
Deny from All </pre></td></tr></table></div><p>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
die maximale Größe eines Requests. Diese sollte wie folgt
hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das Ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
<title>2.7. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s08.html" title="2.8. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.7. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.7. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.7. Webserver-Konfiguration</h2></div></div></div><p>In diesem Abschnitt wird die Konfiguration des Apache-Webservers
beschrieben. kivitendo wird mittels FastCGI/FCGI ausgeführt.</p><p>Es ist empfehlenswert, SSL einzusetzen, um die Daten per HTTPS
verschlüsselt zwischen Browser und Webserver über das Netzwerk zu
übertragen. Eine Möglichkeit dazu ist das Erstellen eines self-signed
SSL Zertifikates, was unter Debian/Ubuntu durch Installieren des Pakets
<code class="literal">ssl-cert</code> geschehen kann.</p><p>Der Zugriff auf den Installationspfad von kivitendo im Dateisystem
muss in der Apache Webserverkonfigurationsdatei eingestellt werden,
welche beim Starten des Webservers eingelesen wird. Wird SSL/HTTPS
eingesetzt, so ist dies die Datei <code class="literal">default-ssl.conf</code>,
für unverschlüsseltes HTTP ist es die Datei
<code class="literal">000-default.conf</code>.</p><p>Bitte konsultieren Sie die Dokumentation des Apache-Webservers und
Ihres Betriebssystems. Es kann erforderlich sein, das SSL-Modul und die
Webserverkonfigurationsdatei zu aktivieren:</p><pre class="programlisting">a2enmod ssl
a2ensite default-ssl</pre><p>Unter Fedora und openSUSE müssen weiterhin in der Firewall die
Ports 80 (HTTP) bzw. 443 (HTTPS) geöffnet werden.</p><div class="sect2" title="2.7.1. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.7.1. Konfiguration für FastCGI/FCGI</h3></div></div></div><p>Mit FastCGI wird der kivitendo-Programmcode beim Start des
Webservers einmal geladen und danach wird nur die eigentliche
Programmlogik ausgeführt.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
erfolgt durch Einfügen von <code class="function">Alias</code>-
und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
dem Installationspfad von kivitendo im Dateisystem
("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
unterschieden, unter der kivitendo im Webbrowser erreichbar ist
("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
mod_fcgid:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
FcgidMaxRequestLen 10485760
......
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche kivitendo Version parallel unter
CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
Alias /url/for/kivitendo-erp /path/to/kivitendo-erp
# Zugriff mit mod_fcgid:
AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
die normale Version erreichbar, und unter
<code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
FastCGI-Version.</p></div></div><div class="sect2" title="2.7.3. Authentifizierung mittels HTTP Basic Authentication"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1449"></a>2.7.3. Authentifizierung mittels HTTP Basic Authentication</h3></div></div></div><p>
Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt
(siehe <a class="ulink" href="https://tools.ietf.org/html/rfc7617" target="_top">RFC 7617</a>). Dazu ist es aber nötig, dass der dabei vom Client
mitgeschickte Header <code class="constant">Authorization</code> vom Webserver an Kivitendo über die Umgebungsvariable
<code class="constant">HTTP_AUTHORIZATION</code> weitergegeben wird, was standardmäßig nicht der Fall ist. Für Apache kann dies über die
folgende Konfigurationsoption aktiviert werden:
</p><pre class="programlisting">SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1</pre></div><div class="sect2" title="2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1465"></a>2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
gibt es hier kleine Performance-Einbußen.</p><p>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
die maximale Größe eines Requests. Mit folgender Zeile wird diese
Grenze hochgesetzt:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre></div><div class="sect2" title="2.7.2. Aktivierung von mod_rewrite/directory_match für git basierte Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1359"></a>2.7.2. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
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:
......
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>
</p></div><div class="sect2" title="2.7.5. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1479"></a>2.7.5. Weitergehende Konfiguration</h3></div></div></div><p>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung
</p></div><div class="sect2" title="2.7.3. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1373"></a>2.7.3. Weitergehende Konfiguration</h3></div></div></div><p>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung
von kivitendo nur über https-verschlüsselten Verbindungen, sowie
weiteren Zusatzmassnahmen, wie beispielsweise Basic Authenticate. Die
weiteren Zusatzmassnahmen, wie beispielsweise Basic Authentication. Die
Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser
Anleitung, hier ein Hinweis auf einen entsprechenden <a class="ulink" href="http://redmine.kivitendo-premium.de/boards/1/topics/142" target="_top">Foreneintrag
Anleitung, hier ein Hinweis auf einen entsprechenden <a class="ulink" href="https://www.kivitendo.de/redmine/boards/1/topics/142" target="_top">Foreneintrag
(Stand Sept. 2015)</a> und einen aktuellen (Stand Mai 2017) <a class="ulink" href="https://mozilla.github.io/server-side-tls/ssl-config-generator/" target="_top">
SSL-Konfigurations-Generator</a>.</p></div><div class="sect2" title="2.7.6. Aktivierung von Apache2 modsecurity"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1490"></a>2.7.6. Aktivierung von Apache2 modsecurity</h3></div></div></div><p>Aufgrund des OpenSource Charakters ist kivitendo nicht "out of the box" sicher.
SSL-Konfigurations-Generator</a>.</p></div><div class="sect2" title="2.7.4. Aktivierung von Apache2 modsecurity"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1384"></a>2.7.4. Aktivierung von Apache2 modsecurity</h3></div></div></div><p>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
doc/html/ch02s08.html
Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
einzubinden. Da das bei neueren Linux-Distributionen aber nicht
zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere openSUSE, ältere Fedora)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1563"></a>2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere openSUSE, ältere Fedora)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1457"></a>2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
openSUSE, ältere Fedora)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/system-v/kivitendo-task-server</code>
nach <code class="filename">/etc/init.d/kivitendo-task-server</code>. Passen
......
<code class="literal">DAEMON=....</code>). Binden Sie das Script in den
Boot-Prozess ein. Dies ist distributionsabhängig:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian-basierende Systeme:</p><pre class="programlisting">update-rc.d kivitendo-task-server defaults
insserv kivitendo-task-server</pre></li><li class="listitem"><p>Ältere openSUSE und ältere Fedora:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
werden:</p><pre class="programlisting">/etc/init.d/kivitendo-task-server start</pre></div><div class="sect3" title="2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1592"></a>2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
werden:</p><pre class="programlisting">/etc/init.d/kivitendo-task-server start</pre></div><div class="sect3" title="2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1486"></a>2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
werden:</p><pre class="programlisting">service kivitendo-task-server start</pre></div><div class="sect3" title="2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere Fedora, neuere Ubuntu und neuere Debians)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1610"></a>2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
werden:</p><pre class="programlisting">service kivitendo-task-server start</pre></div><div class="sect3" title="2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere Fedora, neuere Ubuntu und neuere Debians)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1504"></a>2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
Fedora, neuere Ubuntu und neuere Debians)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/systemd/kivitendo-task-server.service</code>
nach <code class="filename">/etc/systemd/system/</code>. Passen Sie in der
doc/html/ch02s10.html
eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen die Authentifizierungsdatenbank oder gegen einen oder
mehrere LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen verschiedene Authentifizierungsmethoden geprüft
werden. Dazu zählen die Authentifizierungsdatenbank, LDAP-Server sowie verschiedene Arten von HTTP-Header-basierten Methoden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
festgelegt. Diese muss bei der Installation und bei einem Upgrade von
......
"<code class="literal">postgres</code>")</p></dd><dt><span class="term">
<code class="literal">password</code>
</span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.10.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.10.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
die Authentifizierungsdatenbank und gegen externe LDAP- oder
Active-Directory-Server. Welche davon benutzt wird, regelt der
Parameter <code class="varname">module</code> im Abschnitt
<code class="varname">[authentication]</code>.</p><p>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.10.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.10.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt verschiedene Module für die Passwortüberprüfung. Welche benutzt wird, regelt der Parameter
<code class="varname">module</code> im Abschnitt <code class="varname">[authentication]</code>.</p><p>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
können aber auch mehrere angegeben werden. Weiterhin ist es möglich, das LDAP-Modul mehrfach zu verwenden und für jede Verwendung
eine unterschiedliche Konfiguration zu nutzen, z.B. um einen Fallback-Server anzugeben, der benutzt wird, sofern der Hauptserver
nicht erreichbar ist.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
<code class="varname">module</code> das Modul <code class="literal">DB</code> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</p><p>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
<code class="varname">module</code> den Wert <code class="literal">LDAP</code> enthalten. In diesem Fall müssen zusätzliche Informationen über den
LDAP-Server im Abschnitt <code class="literal">[authentication/ldap]</code> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
den Modulnamen angehängt (<code class="literal">LDAP:Name-der-Konfiguration</code>). Der entsprechende Abschnitt in der Konfigurationsdatei
lautet dann <code class="literal">[authentication/Name-der-Konfiguration]</code>.</p><p>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
Active-Directory-Servers. Diese Angabe ist zwingend
erforderlich.</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
<code class="literal">tls</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
<code class="literal">verify</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <em class="parameter"><code>tls</code></em> gesetzt ist, so gibt dieser
Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <code class="literal">require</code> (Zertifikat
wird überprüft und muss gültig sei; dies ist der Standard) und <code class="literal">none</code> (Zertifikat wird nicht
überpfüft).</p></dd><dt><span class="term">
<code class="literal">attribute</code>
</span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
Benutzer eingegeben hat. Für Active-Directory-Server ist dies
meist ‘<code class="literal">sAMAccountName</code>’, für andere
LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">base_dn</code>
</span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">filter</code>
</span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
<code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
der LDAP-Baum nach einem Element durchsucht, bei dem das oben
angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
<code class="literal">bind_dn</code> und
<code class="literal">bind_password</code>
</span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
durchsucht werden kann (z.B. ist dies bei
Active-Directory-Servern der Fall), so kann diese hier angegeben
werden. Für Active-Directory-Server kann als
‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
z.B. ‘<code class="literal">cn=Martin
Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
volle Name des Benutzers eingegeben werden; in diesem Beispiel
also ‘<code class="literal">Martin Mustermann</code>’.</p></dd><dt><span class="term">
<code class="literal">timeout</code>
</span></dt><dd><p>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</p></dd></dl></div></div><div class="sect2" title="2.10.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.10.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
nicht erreichbar ist.</p><p>Verfügbare Module sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">DB</code>: in Authentifizierungsdatenbank integrierte Benutzerverwaltung</p></li><li class="listitem"><p>
<code class="literal">ldap</code>: Bind mit User-Objekten gegen einen oder mehrere LDAP-Server</p></li><li class="listitem"><p>
<code class="literal">http_headers</code>: überlässt Authenfizierung vorgelagerten Proxy-Servern übernimmt Usernamen
aus mitgeschickten HTTP-Headern</p></li></ul></div><div class="sect3" title="2.10.4.1. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_DB"></a>2.10.4.1. Authentifizierungsdatenbank</h4></div></div></div><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
<code class="varname">module</code> das Modul <code class="literal">DB</code> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</p></div><div class="sect3" title="2.10.4.2. LDAP-Server"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_LDAP"></a>2.10.4.2. LDAP-Server</h4></div></div></div><p>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
<code class="varname">module</code> den Wert <code class="literal">LDAP</code> enthalten. In diesem Fall müssen zusätzliche Informationen über den
LDAP-Server im Abschnitt <code class="literal">[authentication/ldap]</code> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
den Modulnamen angehängt (<code class="literal">LDAP:Name-der-Konfiguration</code>). Der entsprechende Abschnitt in der Konfigurationsdatei
lautet dann <code class="literal">[authentication/Name-der-Konfiguration]</code>.</p><p>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
Active-Directory-Servers. Diese Angabe ist zwingend
erforderlich.</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
<code class="literal">tls</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
<code class="literal">verify</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <em class="parameter"><code>tls</code></em> gesetzt ist, so gibt dieser
Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <code class="literal">require</code> (Zertifikat
wird überprüft und muss gültig sei; dies ist der Standard) und <code class="literal">none</code> (Zertifikat wird nicht
überpfüft).</p></dd><dt><span class="term">
<code class="literal">attribute</code>
</span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
Benutzer eingegeben hat. Für Active-Directory-Server ist dies
meist ‘<code class="literal">sAMAccountName</code>’, für andere
LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">base_dn</code>
</span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">filter</code>
</span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
<code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
der LDAP-Baum nach einem Element durchsucht, bei dem das oben
angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
<code class="literal">bind_dn</code> und
<code class="literal">bind_password</code>
</span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
durchsucht werden kann (z.B. ist dies bei
Active-Directory-Servern der Fall), so kann diese hier angegeben
werden. Für Active-Directory-Server kann als
‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
z.B. ‘<code class="literal">cn=Martin
Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
volle Name des Benutzers eingegeben werden; in diesem Beispiel
also ‘<code class="literal">Martin Mustermann</code>’.</p></dd><dt><span class="term">
<code class="literal">timeout</code>
</span></dt><dd><p>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</p></dd></dl></div></div><div class="sect3" title="2.10.4.3. HTTP-Header: Username in Header"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_HTTPHeaders"></a>2.10.4.3. HTTP-Header: Username in Header</h4></div></div></div><p>
Diese Methode der Authentifizierung überlässt einem vorgelagerten Webserver oder Proxyserver die Authentifizierung. Dazu können
SSO-Systeme wie z.B. Authelia oder Authentik zum Einsatz kommen. Die vorgelagerten Server übermitteln dann den Usernamen der
authentifizierten Person in einem speziellen HTTP-Header, der an kivitendo durchgereicht wird. Damit kivitendo nicht von
beliebigen Quellen aus mit so einem Usernamen aufgerufen werden kann, verlangt kivitendo weiterhin, dass in einem weiteren
Header ein Shared Secret übertragen wird. Dieses Secret wird vom Administrator vergeben und sollte nicht weitergegeben werden.
</p><p>
Über einen weiteren Header wird wiederum gesteuert, an welchem Mandanten die Anmeldung erfolgt. Dies geschieht über die
Datenbank-ID des Mandanten.
</p><p>
Um diese Methode zu aktivieren, muss das Authentifizierungsmodul auf <code class="literal">HTTPHeaders</code> gestellt werden. Zusätzlich
muss im Abschnitt <code class="literal">authentication/http_headers</code> der Parameter <code class="literal">enabled=1</code> und im Abschnitt
<code class="literal">authentication/http_basic</code> der Parameter <code class="literal">enabled=0</code> gesetzt werden. Die folgenden Parameter
müssen anschließend im Abschnitt <code class="literal">authentication/http_headers</code> konfiguriert werden:
</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">client_id_header</code>
</span></dt><dd><p>Name des Headers, in dem das vorgelagerte System die Datenbank-ID des Mandanten überträgt.</p></dd><dt><span class="term">
<code class="literal">user_header</code>
</span></dt><dd><p>Name des Headers, in dem das vorgelagerte System den Namen des authentifizierten Users überträgt.</p></dd><dt><span class="term">
<code class="literal">secret_header</code>
</span></dt><dd><p>Name des Headers, in dem das vorgelagerte System das Shared Secret.</p></dd><dt><span class="term">
<code class="literal">secret</code>
</span></dt><dd><p>Wert des Shared Secrets selber, der vom vorgelagerten System übertragen werden muss, damit die Werte als gültig
angesehen werden.</p></dd></dl></div></div><div class="sect3" title="2.10.4.4. HTTP-Header: Basic Authorization"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_HTTPBasic"></a>2.10.4.4. HTTP-Header: Basic Authorization</h4></div></div></div><p>
Diese Methode der Authentifizierung überlässt dem Webserver (meist Apache) die Authentifizierung mittels der standardisierten
HTTP Basic Authentication (RFC 7617). Dazu muss der Webserver so konfiguriert werden, dass er für alle kivitendo-Requests vom
Webbrowser Authentifizierung verlangt. Zusätzlich muss er veranlasst werden, den angegebenen Usernamen auch an kivitendo zu
übermitteln. Dies könnte beispielhaft wie folgt aussehen:
</p><pre class="programlisting">&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
# Require authentication from local user file:
AuthType Basic
AuthName "kivitendo"
AuthUserFile /etc/apache2/htpasswd.kivitendo
Require valid-user
# Pass name of authorized user to kivitendo:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
&lt;/Directory&gt;</pre><p>
Um diese Methode zu aktivieren, muss das Authentifizierungsmodul auf <code class="literal">HTTPHeaders</code> gestellt werden. Zusätzlich
muss im Abschnitt <code class="literal">authentication/http_basic</code> der Parameter <code class="literal">enabled=1</code> und im Abschnitt
<code class="literal">authentication/http_headers</code> der Parameter <code class="literal">enabled=0</code> gesetzt werden.
</p></div></div><div class="sect2" title="2.10.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.10.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
Parameter <code class="varname">cookie_name</code> im Abschnitt
doc/html/ch02s13.html
<code class="varname">port</code>
</span></dt><dd><p>
Portnummer. Der Standardwert hängt von der verwendeten
Verschlüsselungsmethode ab. Gilt '<code class="literal">ssl = 0</code>',
Verschlüsselungsmethode ab. Gilt '<code class="literal">ssl = 1</code>',
so ist 993 die Standardportnummer. Für
'<code class="literal">ssl = 0</code>' ist 143 die Portnummer. Muss
normalerweise nicht geändert werden.
......
<code class="varname">port</code>
</span></dt><dd><p>
Portnummer. Der Standardwert hängt von der verwendeten
Verschlüsselungsmethode ab. Gilt '<code class="literal">ssl = 0</code>',
Verschlüsselungsmethode ab. Gilt '<code class="literal">ssl = 1</code>',
so ist 993 die Standardportnummer. Für
'<code class="literal">ssl = 0</code>' ist 143 die Portnummer. Muss
normalerweise nicht geändert werden.
doc/html/ch02s14.html
Da man heutzutage nur noch moderne Schriftformate Verwenden sollte, wird hier lediglich die Variante für |lualatex| aufgelistet.</p><p>Die Konfiguration läuft hierbei über das \pck{fontspec} Paket (Doku siehe \cite{fontspec}).
Dann hängt es davon ab, ob die Basisschriftart eine Serifenschriftart ist oder nicht.
In jedem Fall wird die Änderung entweder in der <code class="filename">insettings.tex</code>, sofern sie für alle
Mandant*innen gelten soll oder in der Mantant*innenspezifischen Konfigurationsdatei gsesetzt.</p><div class="sect5" title="2.14.2.10.1.1. Änderung, falls es ein Schriftpaket gibt"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2940"></a>2.14.2.10.1.1. Änderung, falls es ein Schriftpaket gibt</h6></div></div></div><p>Wenn möglich sollte die Schriftart über ein entsprechendes Konfigurationspaket gesetzt werden.
Ob ein solches existiert kann man sehr leicht über eine Suche nach dem Namen unter \url{ctan.org} herausfinden.</p></div><div class="sect5" title="2.14.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2945"></a>2.14.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen</h6></div></div></div><pre class="programlisting">
\setmainfont{|\meta{Name der Schriftart, z.B. SourceSerifPro}|} </pre></div><div class="sect5" title="2.14.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2950"></a>2.14.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen</h6></div></div></div><pre class="programlisting">
Mandant*innen gelten soll oder in der Mantant*innenspezifischen Konfigurationsdatei gsesetzt.</p><div class="sect5" title="2.14.2.10.1.1. Änderung, falls es ein Schriftpaket gibt"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2949"></a>2.14.2.10.1.1. Änderung, falls es ein Schriftpaket gibt</h6></div></div></div><p>Wenn möglich sollte die Schriftart über ein entsprechendes Konfigurationspaket gesetzt werden.
Ob ein solches existiert kann man sehr leicht über eine Suche nach dem Namen unter \url{ctan.org} herausfinden.</p></div><div class="sect5" title="2.14.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2954"></a>2.14.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen</h6></div></div></div><pre class="programlisting">
\setmainfont{|\meta{Name der Schriftart, z.B. SourceSerifPro}|} </pre></div><div class="sect5" title="2.14.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2959"></a>2.14.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen</h6></div></div></div><pre class="programlisting">
\setsansfont{|\meta{Name der Schriftart, z.B. SourceSansPro}|}
\renewcommand*{\familydefault}{\sfdefault} </pre></div></div><div class="sect4" title="2.14.2.10.2. Unterscheidungen durch String-Vergleich"><div class="titlepage"><div><div><h5 class="title"><a name="Unterscheidungen durch String-Vergleich"></a>2.14.2.10.2. Unterscheidungen durch String-Vergleich</h5></div></div></div><pre class="programlisting">
\Ifstr{\lxmedia}{printer}{Falls gedruckt werden soll} {sonst} </pre></div></div></div><div class="sect2" title="2.14.3. Der Druckvorlagensatz RB"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-RB"></a>2.14.3. Der Druckvorlagensatz RB</h3></div></div></div><p>Hierbei handelt es sich um einen vollständigen LaTeX
doc/html/ch02s15.html
erzeugen. kivitendo kann dabei sowohl neue OpenDocument-Dokumente als
auch aus diesen direkt PDF-Dateien erzeugen. Nachfolgend ist die
Verwendung mit LibreOffice beschrieben. Für die Verwendung mit
OpenOffice müssen die Einstellungen allenfalls angepasst werden.</p><div class="sect2" title="2.15.1. Grundeinstellung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3086"></a>2.15.1. Grundeinstellung</h3></div></div></div><p>Um die Unterstützung von OpenDocument-Vorlagen zu aktivieren,
OpenOffice müssen die Einstellungen allenfalls angepasst werden.</p><div class="sect2" title="2.15.1. Grundeinstellung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3095"></a>2.15.1. Grundeinstellung</h3></div></div></div><p>Um die Unterstützung von OpenDocument-Vorlagen zu aktivieren,
muss in der Datei <code class="filename">config/kivitendo.conf</code> die
Variable <code class="literal">opendocument</code>, im Abschnitt
<code class="literal">print_templates</code>, auf <code class="literal">1</code> stehen.
Dies ist die Standardeinstellung.</p></div><div class="sect2" title="2.15.2. Direkte Erzeugung von PDF-Dateien"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3103"></a>2.15.2. Direkte Erzeugung von PDF-Dateien</h3></div></div></div><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
Dies ist die Standardeinstellung.</p></div><div class="sect2" title="2.15.2. Direkte Erzeugung von PDF-Dateien"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3112"></a>2.15.2. Direkte Erzeugung von PDF-Dateien</h3></div></div></div><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
LibreOffice oder OpenOffice benötigt.</p><p>Unter Debian kann dieses installiert werden mit:</p><pre class="programlisting">apt install libreoffice</pre><p>Der Pfad zu LibreOffice kann in der Datei
<code class="filename">config/kivitendo.conf</code>, im Abschnitt
<code class="literal">applications</code>, angepasst werden. Unter Debian sollte
dies nicht notwendig sein.</p><div class="sect3" title="2.15.2.1. Variante 1)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3120"></a>2.15.2.1. Variante 1)</h4></div></div></div><p>In der Standardeinstellung wird LibreOffice für jedes Dokument
dies nicht notwendig sein.</p><div class="sect3" title="2.15.2.1. Variante 1)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3129"></a>2.15.2.1. Variante 1)</h4></div></div></div><p>In der Standardeinstellung wird LibreOffice für jedes Dokument
neu gestartet. Es ist keine weitere Konfiguration
erforderlich.</p></div><div class="sect3" title="2.15.2.2. Variante 2)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3125"></a>2.15.2.2. Variante 2)</h4></div></div></div><p>Die zweite Variante startet ein LibreOffice, das auch nach der
erforderlich.</p></div><div class="sect3" title="2.15.2.2. Variante 2)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3134"></a>2.15.2.2. Variante 2)</h4></div></div></div><p>Die zweite Variante startet ein LibreOffice, das auch nach der
Umwandlung des Dokumentes gestartet bleibt. Bei weiteren
Umwandlungen wird dann diese laufende Instanz benutzt. Der Vorteil
ist, dass die Zeit zur Umwandlung möglicherweise reduziert wird,
......
<code class="literal">python_uno_path</code> in der Konfigurationsdatei
<code class="filename">config/kivitendo.conf</code> dienen zur Anpassung der
Python uno Pfade. Unter Debian sollte keine Anpassung notwendig
sein.</p></div></div><div class="sect2" title="2.15.3. Vorbereitungen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3154"></a>2.15.3. Vorbereitungen</h3></div></div></div><div class="sect3" title="2.15.3.1. Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="opendocument-druckvorlagen-mit-makros.vorbereitungen"></a>2.15.3.1. Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
sein.</p></div></div><div class="sect2" title="2.15.3. Vorbereitungen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3163"></a>2.15.3. Vorbereitungen</h3></div></div></div><div class="sect3" title="2.15.3.1. Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="opendocument-druckvorlagen-mit-makros.vorbereitungen"></a>2.15.3.1. Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
Standardvorlage ohne Einzahlungsschein weitere Vorlagen (z.B. mit
Einzahlungsschein) auswählbar sind, muss für jedes Vorlagen-Suffix
ein Drucker eingerichtet werden:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Druckeradministration → Drucker hinzufügen</p></li><li class="listitem"><p>Mandant wählen</p></li><li class="listitem"><p>Druckerbeschreibung → aussagekräftiger Text: wird in der
......
Aufträgen oder Rechnungen als odt-Datei keine Bedeutung, darf
aber nicht leer sein)</p></li><li class="listitem"><p>Vorlagenkürzel → besr bzw. selbst gewähltes Vorlagensuffix
(muss genau der Zeichenfolge entsprechen, die zwischen
"invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.15.3.2. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3181"></a>2.15.3.2. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
"invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.15.3.2. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3190"></a>2.15.3.2. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
im Rechnungs- bzw. Auftragsformular angezeigt haben möchte, kann
dies persönlich für sich bei den Benutzereinstellungen
konfigurieren:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Programm → Benutzereinstellungen → Druckoptionen</p></li><li class="listitem"><p>Standardvorlagenformat → OpenDocument/OASIS</p></li><li class="listitem"><p>Standardausgabekanal → Bildschirm</p></li><li class="listitem"><p>Standarddrucker → gewünschte Druckerbeschreibung auswählen
(z.B. mit Einzahlungsschein Bank xy)</p></li><li class="listitem"><p>Anzahl Kopien → leer</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.15.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer odt-Rechnung (analog bei Auftrag)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3205"></a>2.15.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
(z.B. mit Einzahlungsschein Bank xy)</p></li><li class="listitem"><p>Anzahl Kopien → leer</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.15.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer odt-Rechnung (analog bei Auftrag)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3214"></a>2.15.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
odt-Rechnung (analog bei Auftrag)</h4></div></div></div><p>Im Fussbereich der Rechnungsmaske muss neben Rechnung,
OpenDocument/OASIS und Bildschirm die im Adminbereich erstellte
Druckerbeschreibung ausgewählt werden, falls diese nicht bereits bei
den Benutzereinstellungen als persönlicher Standard gewählt
wurde.</p></div></div><div class="sect2" title="2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3210"></a>2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</h3></div></div></div><p>Mit der Version 3.6.0 unterstützt Kivitendo die Erstellung von
wurde.</p></div></div><div class="sect2" title="2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3219"></a>2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</h3></div></div></div><p>Mit der Version 3.6.0 unterstützt Kivitendo die Erstellung von
Schweizer QR-Rechnungen gemäss <a class="ulink" href="https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-de.pdf" target="_top">Swiss
Payment Standards, Version 2.2</a>. Implementiert sind hierbei die
Varianten:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
......
QR-Referenz</strong></span>
</p></li><li class="listitem"><p>
<span class="bold"><strong>IBAN ohne Referenz</strong></span>
</p></li></ul></div><div class="sect3" title="2.15.4.1. Einstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3231"></a>2.15.4.1. Einstellungen</h4></div></div></div><div class="sect4" title="2.15.4.1.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3234"></a>2.15.4.1.1. Mandantenkonfiguration</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Mandantenkonfiguration →
</p></li></ul></div><div class="sect3" title="2.15.4.1. Einstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3240"></a>2.15.4.1. Einstellungen</h4></div></div></div><div class="sect4" title="2.15.4.1.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3243"></a>2.15.4.1.1. Mandantenkonfiguration</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Mandantenkonfiguration →
Features</em></span>. Im Abschnitt <span class="emphasis"><em>Einkauf und
Verkauf</em></span>, beim Punkt <span class="emphasis"><em>Verkaufsrechnungen mit
Schweizer QR-Rechnung erzeugen</em></span>, die gewünschte Variante
wählen.</p></div><div class="sect4" title="2.15.4.1.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3248"></a>2.15.4.1.2. Konfiguration der Bankkonten</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Bankkonten</em></span> muss bei
wählen.</p></div><div class="sect4" title="2.15.4.1.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3257"></a>2.15.4.1.2. Konfiguration der Bankkonten</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Bankkonten</em></span> muss bei
mindestens einem Bankkonto die Option <span class="emphasis"><em>Nutzung mit
Schweizer QR-Rechnung</em></span> auf <span class="bold"><strong>Ja</strong></span> gestellt werden.</p><p>Die IBAN muss ohne Leerzeichen angegeben werden.</p><div class="tip" title="Tipp" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tipp]" src="system/docbook-xsl/images/tip.png"></td><th align="left">Tipp</th></tr><tr><td align="left" valign="top"><p>Für die Variante <span class="bold"><strong>QR-IBAN mit
QR-Referenz</strong></span> muss dieses Konto unter IBAN eine gültige
......
unterscheidet sich von der regulären IBAN.</p><p>Zusätzlich muss eine gültige <span class="bold"><strong>Bankkonto
Identifikationsnummer</strong></span> angegeben werden
(6-stellig).</p><p>Diese werden von der jeweiligen Bank vergeben.</p></td></tr></table></div><p>Sind mehrere Konten ausgewählt wird das erste
verwendet.</p></div><div class="sect4" title="2.15.4.1.3. Rechnungen ohne Betrag"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3282"></a>2.15.4.1.3. Rechnungen ohne Betrag</h5></div></div></div><p>Für Rechnungen ohne Betrag (z.B. Spenden) kann, in der
verwendet.</p></div><div class="sect4" title="2.15.4.1.3. Rechnungen ohne Betrag"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3291"></a>2.15.4.1.3. Rechnungen ohne Betrag</h5></div></div></div><p>Für Rechnungen ohne Betrag (z.B. Spenden) kann, in der
jeweiligen Rechnung, die Checkbox <span class="emphasis"><em>QR-Rechnung ohne
Betrag</em></span> aktiviert werden. Diese Checkbox erscheint nur,
wenn QR-Rechnungen in der Mandantenkonfiguration aktiviert sind
(variante ausgewählt).</p><p>Dies wirkt sich lediglich auf den erzeugten QR-Code aus. Die
Vorlage muss separat angepasst und ausgewählt werden.</p></div></div><div class="sect3" title="2.15.4.2. Adressdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3292"></a>2.15.4.2. Adressdaten</h4></div></div></div><p>Die Adressdaten zum Zahlungsempfänger werden aus der
Vorlage muss separat angepasst und ausgewählt werden.</p></div></div><div class="sect3" title="2.15.4.2. Adressdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3301"></a>2.15.4.2. Adressdaten</h4></div></div></div><p>Die Adressdaten zum Zahlungsempfänger werden aus der
Mandantenkonfiguration entnommen. Unter <span class="emphasis"><em>System →
Mandantenkonfiguration → Verschiedenes</em></span>, Abschnitt
<span class="emphasis"><em>Firmenname und -adresse.</em></span>
......
z.B. "Schweiz" oder "CH".</p><p>Die Adressdaten können in der Vorlage mit den jeweiligen
Variablen eingetragen werden. Siehe auch: <a class="xref" href="ch03s03.html" title="3.3. Dokumentenvorlagen und verfügbare Variablen">Abschnitt&nbsp;3.3, „Dokumentenvorlagen und verfügbare Variablen“</a>
</p><p>Der erzeugte QR-Code verwendet Adress-Typ "K" (Kombinierte
Adressfelder, 2 Zeilen).</p></div><div class="sect3" title="2.15.4.3. Referenznummer"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3313"></a>2.15.4.3. Referenznummer</h4></div></div></div><p>Die Referenznummer wird in Kivitendo erzeugt und setzt sich
Adressfelder, 2 Zeilen).</p></div><div class="sect3" title="2.15.4.3. Referenznummer"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3322"></a>2.15.4.3. Referenznummer</h4></div></div></div><p>Die Referenznummer wird in Kivitendo erzeugt und setzt sich
wiefolgt zusammen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bankkonto Identifikationsnummer (6-stellig)</p></li><li class="listitem"><p>Kundennummer (6-stellig, mit führenden Nullen
aufgefüllt)</p></li><li class="listitem"><p>Rechnungsnummer (14-stellig, mit führenden Nullen
aufgefüllt)</p></li><li class="listitem"><p>Prüfziffer (1-stellig, berechnet mittels modulo 10,
rekursiv)</p></li></ul></div><p>Es sind lediglich Ziffern erlaubt. Allfällige Buchstaben und
Sonderzeichen werden entfernt und fehlende Stellen werden mit
führenden Nullen aufgefüllt.</p></div><div class="sect3" title="2.15.4.4. Vorlage"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3333"></a>2.15.4.4. Vorlage</h4></div></div></div><p>Der Vorlagensatz "rev-odt" enthält die Vorlage
führenden Nullen aufgefüllt.</p></div><div class="sect3" title="2.15.4.4. Vorlage"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3342"></a>2.15.4.4. Vorlage</h4></div></div></div><p>Der Vorlagensatz "rev-odt" enthält die Vorlage
<code class="literal">invoice_qr.odt</code>, welche für die Erstellung von
QR-Rechnungen vorgesehen ist. Damit diese verwendet werden kann muss
wie obenstehend beschrieben ein Drucker hinzugefügt werden, allerdings
......
<span class="emphasis"><em>Bild-Kontextmenü → </em></span>
<span class="emphasis"><em>Einstellungen →
Optionen → Name</em></span> einstellbar. Siehe dazu auch die
Beispielvorlage.</p><div class="sect4" title="2.15.4.4.1. Zusätzliche Variablen für Vorlage"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3363"></a>2.15.4.4.1. Zusätzliche Variablen für Vorlage</h5></div></div></div><p>Zusätzlich zu den in der Vorlage standardmässig verfügbaren
Beispielvorlage.</p><div class="sect4" title="2.15.4.4.1. Zusätzliche Variablen für Vorlage"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3372"></a>2.15.4.4.1. Zusätzliche Variablen für Vorlage</h5></div></div></div><p>Zusätzlich zu den in der Vorlage standardmässig verfügbaren
Variablen (siehe <a class="xref" href="ch03s03.html" title="3.3. Dokumentenvorlagen und verfügbare Variablen">Abschnitt&nbsp;3.3, „Dokumentenvorlagen und verfügbare Variablen“</a>),
werden die folgenden Variablen erzeugt:</p><div class="variablelist"><dl><dt><span class="term">ref_number_formatted</span></dt><dd><p>Referenznummer formatiert mit Leerzeichen, z.B.: 21 00000
00003 13947 14300 09017</p></dd><dt><span class="term">iban_formatted</span></dt><dd><p>IBAN formatiert mit Leerzeichen</p></dd><dt><span class="term">amount_formatted</span></dt><dd><p>Betrag formatiert mit Tausendertrennzeichen Leerschlag,
doc/html/ch03.html
werden sollte.</p></div><div class="sect2" title="3.1.6. Erste Rechnung für aktuellen Monat erstellen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.create-for-current-month"></a>3.1.6. Erste Rechnung für aktuellen Monat erstellen</h3></div></div></div><p>Will man im laufenden Monat eine monatlich wiederkehrende
Rechnung inkl. des laufenden Monats starten, stellt man das Startdatum
auf den Monatsanfang und wartet ein paar Minuten, bis der Task-Server
den neu konfigurieren Auftrag erkennt und daraus eine Rechnung
den neu konfigurierten Auftrag erkennt und daraus eine Rechnung
generiert hat. Alternativ setzt man das Startdatum auf den
Monatsersten des Folgemonats und erstellt die erste Rechnung direkt
manuell über den Workflow.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s24.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.24. kivitendo ERP verwenden&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.2. Bankerweiterung</td></tr></table></div></body></html>
doc/html/ch03s03.html
</span></dt><dd><p>Vorgangsbezeichnung</p></dd><dt><span class="term">
<code class="varname">transdate</code>
</span></dt><dd><p>Auftragsdatum wenn die Rechnung aus einem Auftrag
erstellt wurde</p></dd></dl></div></div><div class="sect3" title="3.3.8.2. Variablen für die schweizer QR-Rechnung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5954"></a>3.3.8.2. Variablen für die schweizer QR-Rechnung</h4></div></div></div><p>Diese Variablen können mit dem LaTeX Modul qrbill verwendet
erstellt wurde</p></dd></dl></div></div><div class="sect3" title="3.3.8.2. Variablen für die schweizer QR-Rechnung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5963"></a>3.3.8.2. Variablen für die schweizer QR-Rechnung</h4></div></div></div><p>Diese Variablen können mit dem LaTeX Modul qrbill verwendet
werden: <a class="ulink" href="https://ctan.org/pkg/qrbill?lang=de" target="_top">https://ctan.org/pkg/qrbill?lang=de</a>
</p><p>Für die Erstellung von QR-Rechnungen mit OpenDocument Vorlagen
siehe: <a class="xref" href="ch02s15.html" title="2.15. OpenDocument-Vorlagen">Abschnitt&nbsp;2.15, „OpenDocument-Vorlagen“</a>
......
<code class="varname">invdate</code>
</span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
<code class="varname">invnumber</code>
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.3.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.3.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.3.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6916"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.3.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.3.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.3.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6925"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
Rechnung. Allerdings heißen die Variablen, die mit
<code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
fangen sie mit <code class="varname">quo</code> für "quotation" an:
doc/html/ch03s07.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3.7. Artikelklassifizierung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s06.html" title="3.6. Schweizer Kontenpläne"><link rel="next" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.7. Artikelklassifizierung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.7. Artikelklassifizierung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.part_classification"></a>3.7. Artikelklassifizierung</h2></div></div></div><div class="sect2" title="3.7.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7598"></a>3.7.1. Übersicht</h3></div></div></div><p>Die Klassifizierung von Artikeln dient einer weiteren
<title>3.7. Artikelklassifizierung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s06.html" title="3.6. Schweizer Kontenpläne"><link rel="next" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.7. Artikelklassifizierung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.7. Artikelklassifizierung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.part_classification"></a>3.7. Artikelklassifizierung</h2></div></div></div><div class="sect2" title="3.7.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7607"></a>3.7.1. Übersicht</h3></div></div></div><p>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.</p></div><div class="sect2" title="3.7.2. Basisklassifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7603"></a>3.7.2. Basisklassifizierung</h3></div></div></div><p>Als Basisklassifizierungen gibt es</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Einkauf</p></li><li class="listitem"><p>Verkauf</p></li><li class="listitem"><p>Handelsware</p></li><li class="listitem"><p>Produktion</p></li><li class="listitem"><p>- keine - (diese wird bei einer Aktualisierung für alle
notwendig. Sinnvoll sind jedoch nur maximal 2 Zeichen.</p></div><div class="sect2" title="3.7.2. Basisklassifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7612"></a>3.7.2. Basisklassifizierung</h3></div></div></div><p>Als Basisklassifizierungen gibt es</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Einkauf</p></li><li class="listitem"><p>Verkauf</p></li><li class="listitem"><p>Handelsware</p></li><li class="listitem"><p>Produktion</p></li><li class="listitem"><p>- keine - (diese wird bei einer Aktualisierung für alle
existierenden Artikel verwendet und ist gültig für Verkauf und
Einkauf)</p></li></ul></div><p>Es können weitere Klassifizierungen angelegt werden. So kann es
z.B. für separat auszuweisende Artikel folgende Klassen geben:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Lieferung (Logistik, Transport) mit Kürzel L</p></li><li class="listitem"><p>Material (Verpackungsmaterial) mit Kürzel M</p></li></ul></div></div><div class="sect2" title="3.7.3. Attribute"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7633"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
z.B. für separat auszuweisende Artikel folgende Klassen geben:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Lieferung (Logistik, Transport) mit Kürzel L</p></li><li class="listitem"><p>Material (Verpackungsmaterial) mit Kürzel M</p></li></ul></div></div><div class="sect2" title="3.7.3. Attribute"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7642"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
alle gleichzeitg gültig sein können</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gültig für Verkauf - dieser Artikel kann im Verkauf genutzt
werden</p></li><li class="listitem"><p>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
werden</p></li><li class="listitem"><p>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
......
pro separat auszuweisenden Klassifizierungen die Variable<span class="bold"><strong>&lt; %separate_X_subtotal%&gt;</strong></span>, wobei X das
Kürzel der Klassifizierung ist.</p><p>Im obigen Beispiel wäre das für Lieferkosten <span class="bold"><strong>&lt;%separate_L_subtotal%&gt;</strong></span> und für
Verpackungsmaterial <span class="bold"><strong>
&lt;%separate_M_subtotal%&gt;</strong></span>.</p></div><div class="sect2" title="3.7.4. Zwei-Zeichen Abkürzung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7664"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
&lt;%separate_M_subtotal%&gt;</strong></span>.</p></div><div class="sect2" title="3.7.4. Zwei-Zeichen Abkürzung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7673"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
Artikel-Typs ('P','A','S'), deutsch 'W', 'E', und 'D' für Ware
Erzeugnis oder Dienstleistung und ggf. weiterer Typen.</p><p>Der zweite Buchstabe (und ggf. auch ein dritter, falls nötig)
doc/html/ch03s08.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3.8. Dateiverwaltung (Mini-DMS)</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s07.html" title="3.7. Artikelklassifizierung"><link rel="next" href="ch03s09.html" title="3.9. Webshop-Api"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.8. Dateiverwaltung (Mini-DMS)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.8. Dateiverwaltung (Mini-DMS)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.file_managment"></a>3.8. Dateiverwaltung (Mini-DMS)</h2></div></div></div><div class="sect2" title="3.8.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7676"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
<title>3.8. Dateiverwaltung (Mini-DMS)</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s07.html" title="3.7. Artikelklassifizierung"><link rel="next" href="ch03s09.html" title="3.9. Webshop-Api"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.8. Dateiverwaltung (Mini-DMS)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.8. Dateiverwaltung (Mini-DMS)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.file_managment"></a>3.8. Dateiverwaltung (Mini-DMS)</h2></div></div></div><div class="sect2" title="3.8.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7685"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
das Dateien verschiedenen Typs verwaltet. Dies können</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>aus ERP-Daten per LaTeX Template erzeugte
PDF-Dokumente,</p></li><li class="listitem"><p>zu bestimmten ERP-Daten gehörende Anhangdateien
unterschiedlichen Formats,</p></li><li class="listitem"><p>per Scanner eingelesene PDF-Dateien,</p></li><li class="listitem"><p>per E-Mail empfangene Dateianhänge unterschiedlichen
Formats,</p></li><li class="listitem"><p>sowie speziel für Artikel hochgeladene Bilder sein.</p></li></ol></div><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Overview.png"></div></div></div><div class="sect2" title="3.8.2. Struktur"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7703"></a>3.8.2. Struktur</h3></div></div></div><p>Über eine vom Speichermedium unabhängige Zwischenschicht werden
Formats,</p></li><li class="listitem"><p>sowie speziel für Artikel hochgeladene Bilder sein.</p></li></ol></div><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Overview.png"></div></div></div><div class="sect2" title="3.8.2. Struktur"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7712"></a>3.8.2. Struktur</h3></div></div></div><p>Ü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:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Dateisystem</p></li><li class="listitem"><p>WebDAV</p></li><li class="listitem"><p>Schnittstelle zu externen
......
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
<a class="xref" href="ch03s08.html#file_management.dbconfig" title="3.8.4.2. Datenbank-Konfigurierung">Datenbank-Konfigurierung</a>).</p></div><div class="sect2" title="3.8.3. Anwendung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7755"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
<a class="xref" href="ch03s08.html#file_management.dbconfig" title="3.8.4.2. Datenbank-Konfigurierung">Datenbank-Konfigurierung</a>).</p></div><div class="sect2" title="3.8.3. Anwendung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7764"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
dargestellt. Eine Verkaufsrechnung z.B. hat die Reiter "Dokumente" und
"Dateianhänge".</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Anhaenge.png"></div></div><p>Bei den Dateianhängen wird immer nur die aktuelle Version einer
Datei angezeigt. Wird eine Datei mit gleichem Namen hochgeladen, so
......
so sind diese z.B. bei Einkaufsrechnungen sichtbar:</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Dokumente-Scanner.png"></div></div><p>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.</p><p>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie
sind bisher nur bei Bildern relevant.</p></div><div class="sect2" title="3.8.4. Konfigurierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7798"></a>3.8.4. Konfigurierung</h3></div></div></div><div class="sect3" title="3.8.4.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="file_management.clientconfig"></a>3.8.4.1. Mandantenkonfiguration</h4></div></div></div><div class="sect4" title="3.8.4.1.1. Reiter &#34;Features&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e7804"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
sind bisher nur bei Bildern relevant.</p></div><div class="sect2" title="3.8.4. Konfigurierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7807"></a>3.8.4. Konfigurierung</h3></div></div></div><div class="sect3" title="3.8.4.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="file_management.clientconfig"></a>3.8.4.1. Mandantenkonfiguration</h4></div></div></div><div class="sect4" title="3.8.4.1.1. Reiter &#34;Features&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e7813"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
im Abschnitt Dateimanagement ist neben dem "alten" WebDAV das
Dateimangement generell zu- und abschaltbar, sowie die Zuordnung
der Dateitypen zu Backends. Die Löschbarkeit von Dateien, sowie
die maximale Uploadgröße sind Backend-unabhängig</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-ClientConfig.png"></div></div><p>Die einzelnen Backends sind einzeln einschaltbar.
Spezifische Backend-Konfigurierungen sind hier noch
ergänzbar.</p></div><div class="sect4" title="3.8.4.1.2. Reiter &#34;Allgemeine Dokumentenanhänge&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e7820"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
ergänzbar.</p></div><div class="sect4" title="3.8.4.1.2. Reiter &#34;Allgemeine Dokumentenanhänge&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e7829"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
Dokumentenanhänge</strong></span> kann für alle ERP-Dokumente (
Angebote, Aufträge, Lieferscheine, Rechnungen im Verkauf und
Einkauf ) allgemeingültige Anhänge hochgeladen werden.</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Allgemeine-Dokumentenanhaenge.png"></div></div><p>Diese Anhänge werden beim Generieren von PDF-Dateien an die
doc/html/ch03s09.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3.9. Webshop-Api</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"><link rel="next" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.9. Webshop-Api</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.9. Webshop-Api"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e7854"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
<title>3.9. Webshop-Api</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"><link rel="next" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.9. Webshop-Api</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.9. Webshop-Api"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e7863"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
Onlineshopbestellungen zu verwalten und zu bearbeiten.</p><p>Es ist Multishopfähig, d.h. Artikel können mehreren oder
unterschiedlichen Shops zugeordnet werden. Bestellungen können aus
mehreren Shops geholt werden.</p><p>Zur Zeit bietet das Modul nur einen Connector zur REST-Api von
Shopware. Weitere Connectoren können dazu programmiert und eingerichtet
werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7863"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
werden</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Webshopartikel anlegen und bearbeiten</p></li><li class="listitem"><p>Shopbestellungen holen und bearbeiten</p></li><li class="listitem"><p>Shop anlegen und bearbeiten</p></li></ul></div></div><div class="sect2" title="3.9.2. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7878"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
werden</p><div class="mediaobject"><img src="images/Shop_Listing.png"></div></div><div class="sect2" title="3.9.3. Webshopartikel"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7886"></a>3.9.3. Webshopartikel</h3></div></div></div><div class="sect3" title="3.9.3.1. Shopvariablenreiter in Artikelstammdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7889"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7872"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
werden</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Webshopartikel anlegen und bearbeiten</p></li><li class="listitem"><p>Shopbestellungen holen und bearbeiten</p></li><li class="listitem"><p>Shop anlegen und bearbeiten</p></li></ul></div></div><div class="sect2" title="3.9.2. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7887"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
werden</p><div class="mediaobject"><img src="images/Shop_Listing.png"></div></div><div class="sect2" title="3.9.3. Webshopartikel"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7895"></a>3.9.3. Webshopartikel</h3></div></div></div><div class="sect3" title="3.9.3.1. Shopvariablenreiter in Artikelstammdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7898"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
Markers <span class="bold"><strong>"Shopartikel" in den Basisdaten
</strong></span>zeigt sich der Reiter "Shopvariablen" in den
Artikelstammdaten. Hier können jetzt die Artikel mit
......
Stelle können auch beliebig viele Bilder dem Shopartikel zugeordnet
werden. Artikelbilder gelten für alle Shops.</p><div class="mediaobject"><img src="images/Shop_Artikel.png"></div><p>Die Artikelgruppen werden direkt vom Shopsystem geholt somit
ist es möglich einen Artikel auch mehreren Gruppen
zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7902"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7911"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
eine Gesamtübersicht. Von hier aus ist es möglich Artikel im Stapel
unter verschiedenen Kriterien &lt;alles&gt;&lt;nur Preis&gt;&lt;nur
Bestand&gt;&lt;Preis und Bestand&gt; an die jeweiligen Shops
hochzuladen.</p><div class="mediaobject"><img src="images/Shop_Artikel_Listing.png"></div></div></div><div class="sect2" title="3.9.4. Bestellimport"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7910"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
hochzuladen.</p><div class="mediaobject"><img src="images/Shop_Artikel_Listing.png"></div></div></div><div class="sect2" title="3.9.4. Bestellimport"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7919"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
Bestellimportsliste. Hier ist sind Möglichkeiten gegeben Neue
Bestellungen vom Shop abzuholen, geholte Bestellungen im Stapel oder
einzeln als Auftrag zu transferieren. Die Liste kann nach
......
auch der Grund für die Auftragssperre sein.</p></li><li class="listitem"><p>Die Buttons "Auftrag erstellen" und "Kunde mit
Rechnungsadresse überschreiben" zeigen sich erst, wenn ein Kunde
aus dem Listing ausgewählt ist.</p></li><li class="listitem"><p>Es ist aber möglich die Shopbestellung zu löschen.</p></li><li class="listitem"><p>Ist eine Bestellung schon übernommen, zeigen sich an dieser
Stelle, die dazugehörigen Belegverknüpfungen.</p></li></ul></div></div><div class="sect2" title="3.9.5. Mapping der Daten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7963"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
Stelle, die dazugehörigen Belegverknüpfungen.</p></li></ul></div></div><div class="sect2" title="3.9.5. Mapping der Daten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7972"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
der Datei SL/ShopConnector/&lt;SHOPCONNECTORNAME&gt;.pm
z.B.:SL/ShopConnector/Shopware.pm</p><p>In dieser Datei gibt es einen Bereich wo die Bestellpostionen,
die Bestellkopfdaten und die Artikeldaten gemapt werden. In dieser
doc/html/ch03s10.html
</p></div><div class="sect2" title="3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo"><div class="titlepage"><div><div><h3 class="title"><a name="features.zugferd.create_zugferd_bills"></a>3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</h3></div></div></div><p>Für die Erstellung von ZUGFeRD Rechnungen bedarf es in
kivitendo zwei Dinge:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Die Erstellung muss in der Mandantenkonfiguration
aktiviert sein</p></li><li class="listitem"><p>Beim mindestens einem Bankkonto muss die Option
„Nutzung von ZUGFeRD“ aktiviert sein</p></li></ol></div><div class="sect3" title="3.10.3.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8010"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
„Nutzung von ZUGFeRD“ aktiviert sein</p></li></ol></div><div class="sect3" title="3.10.3.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8019"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>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:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>ZUGFeRD-Rechnungen erzeugen</p></li><li class="listitem"><p>ZUGFeRD-Rechnungen im Testmodus erzeugen</p></li><li class="listitem"><p>Keine ZUGFeRD Rechnungen erzeugen</p></li></ul></div><p>Rechnungen die als PDF erzeugt werden, werden je nach
Einstellung nun im ZUGFeRD Format ausgegeben.</p></div><div class="sect3" title="3.10.3.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8027"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
Einstellung nun im ZUGFeRD Format ausgegeben.</p></div><div class="sect3" title="3.10.3.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8036"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
Bankkonto die Option „Nutzung mit ZUGFeRD“ auf „Ja“ gestellt
werden.</p></div></div><div class="sect2" title="3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo"><div class="titlepage"><div><div><h3 class="title"><a name="features.zugferd.read_zugferd_bills"></a>3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</h3></div></div></div><p>Es lassen sich auch Rechnungen von Kreditoren, die im
ZUGFeRD Format erstellt wurden, nach Kivitendo importieren.
doc/html/ch03s11.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3.11. Reklamationen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"><link rel="next" href="ch03s12.html" title="3.12. Dispositionsmanager/Einkaufshelfer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.11. Reklamationen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s12.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.11. Reklamationen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.reclamations"></a>3.11. Reklamationen</h2></div></div></div><p> Reklamationen dienen dazu im Verkauf die Kundenzufriedenheit zu verbessern und Fehler in der Abwicklung von Aufträgen aufzuspüren und dann zu vermeiden.</p><p>Im Einkauf helfen Reklamationen beanstandete Lieferungen zu verwalten und zu kontrollieren.</p><div class="sect2" title="3.11.1. Konfiguration des Reklamationsmodul"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8053"></a>3.11.1. Konfiguration des Reklamationsmodul</h3></div></div></div><p>Unter dem Menu "System-&gt;Reklamationsgründe" muss mindestens ein Reklamationsgrund erfasst werden.</p><div class="mediaobject"><img src="images/Reklamationsgruende_anlegen.png"></div><p>Aufgrund der Gründe können später in den Berichten Auswertungen gemacht werden.</p><div class="mediaobject"><img src="images/Reklamationsgruende_liste.png"></div></div><div class="sect2" title="3.11.2. Reklamation erfassen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8066"></a>3.11.2. Reklamation erfassen</h3></div></div></div><p>Aus den Belegen EK/VK Auftrag, EK/VK Lieferschein, EK/VK Rechnung kann unter "Workflow-&gt;Reklöamation erfassen" eine dem Workflow zugehörige Reklamation erfasst werden.
<title>3.11. Reklamationen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"><link rel="next" href="ch03s12.html" title="3.12. Dispositionsmanager/Einkaufshelfer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.11. Reklamationen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s12.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.11. Reklamationen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.reclamations"></a>3.11. Reklamationen</h2></div></div></div><p> Reklamationen dienen dazu im Verkauf die Kundenzufriedenheit zu verbessern und Fehler in der Abwicklung von Aufträgen aufzuspüren und dann zu vermeiden.</p><p>Im Einkauf helfen Reklamationen beanstandete Lieferungen zu verwalten und zu kontrollieren.</p><div class="sect2" title="3.11.1. Konfiguration des Reklamationsmodul"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8062"></a>3.11.1. Konfiguration des Reklamationsmodul</h3></div></div></div><p>Unter dem Menu "System-&gt;Reklamationsgründe" muss mindestens ein Reklamationsgrund erfasst werden.</p><div class="mediaobject"><img src="images/Reklamationsgruende_anlegen.png"></div><p>Aufgrund der Gründe können später in den Berichten Auswertungen gemacht werden.</p><div class="mediaobject"><img src="images/Reklamationsgruende_liste.png"></div></div><div class="sect2" title="3.11.2. Reklamation erfassen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8075"></a>3.11.2. Reklamation erfassen</h3></div></div></div><p>Aus den Belegen EK/VK Auftrag, EK/VK Lieferschein, EK/VK Rechnung kann unter "Workflow-&gt;Reklöamation erfassen" eine dem Workflow zugehörige Reklamation erfasst werden.
Die Reklamationsmaske ähnelt im großem die der Auftragsmaske.</p><div class="mediaobject"><img src="images/Reklamation_erfassen.png"></div><p>Es werden alle Positionen aus dem Beleg übernomen. Deswegen müssen hie die Positionen angepasst werden.
Zusätzlich muss noch ein Reklamationsgrund angegeben werden.</p><div class="mediaobject"><img src="images/Reklamation_erfassen_grund.png"></div><p>Die Reklamationsgründe sind für spätere Auswertungen notwendig</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left"><a name="reclamations.anmerkung_grund_einkauf"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Anmerkung: Da bei einem Auftrag, sowohl im EK als auch im VK, noch keine Ware versendet bzw. empfangen wurde, könnte hier ein Reklamationsgrund "Lieferver sein.</p></td></tr></table></div></div><div class="sect2" title="3.11.3. Reklamationen auswerten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8084"></a>3.11.3. Reklamationen auswerten</h3></div></div></div><p>Bisher gibt es nur eine Liste mit Reklamationen und deren Filtermöglichkeiten.</p><div class="mediaobject"><img src="images/Reklamation_erfassen_grund.png"></div><p>Einen individuellen Reklamationsbericht kann über einen "benutzerdefinierten Datenexport" erstellt werden</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s12.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.10. ZUGFeRD Rechnungen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.12. Dispositionsmanager/Einkaufshelfer</td></tr></table></div></body></html>
Zusätzlich muss noch ein Reklamationsgrund angegeben werden.</p><div class="mediaobject"><img src="images/Reklamation_erfassen_grund.png"></div><p>Die Reklamationsgründe sind für spätere Auswertungen notwendig</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left"><a name="reclamations.anmerkung_grund_einkauf"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Anmerkung: Da bei einem Auftrag, sowohl im EK als auch im VK, noch keine Ware versendet bzw. empfangen wurde, könnte hier ein Reklamationsgrund "Lieferver sein.</p></td></tr></table></div></div><div class="sect2" title="3.11.3. Reklamationen auswerten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8093"></a>3.11.3. Reklamationen auswerten</h3></div></div></div><p>Bisher gibt es nur eine Liste mit Reklamationen und deren Filtermöglichkeiten.</p><div class="mediaobject"><img src="images/Reklamation_erfassen_grund.png"></div><p>Einen individuellen Reklamationsbericht kann über einen "benutzerdefinierten Datenexport" erstellt werden</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s12.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.10. ZUGFeRD Rechnungen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.12. Dispositionsmanager/Einkaufshelfer</td></tr></table></div></body></html>
doc/html/ch03s12.html
<title>3.12. Dispositionsmanager/Einkaufshelfer</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s11.html" title="3.11. Reklamationen"><link rel="next" href="ch03s13.html" title="3.13. Zeiterfassung"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.12. Dispositionsmanager/Einkaufshelfer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s11.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s13.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.12. Dispositionsmanager/Einkaufshelfer"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.dispositionsmanager"></a>3.12. Dispositionsmanager/Einkaufshelfer</h2></div></div></div><p> Der Einkaufshelfer generiert Lieferantenaufträge anhand eines Warenkorbes. Der Warenkorb kann
einzeln oder mit dem Meldebestandsbericht gefüllt werden. Mit dem Filter „Lieferant“ im
Warenkorb werden die Artikel einem Lieferanten zugeordnet und können dann bestellt, d.h. ein
Lieferantenauftragerstellt, werden.</p><div class="sect2" title="3.12.1. So kommen die Artikel in den Einkaufswarenkorb:"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8099"></a>3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</h3></div></div></div><p>1) Sofern ein Artikel einen oder mehrere Lieferanten hat kann dieser über den Button „Einkaufen“
Lieferantenauftragerstellt, werden.</p><div class="sect2" title="3.12.1. So kommen die Artikel in den Einkaufswarenkorb:"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8108"></a>3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</h3></div></div></div><p>1) Sofern ein Artikel einen oder mehrere Lieferanten hat kann dieser über den Button „Einkaufen“
in den Einkaufswarenkorn gelegt werden. Soll der Einkauf über den Mindestlagerbestand gesteuert werden sind die Felder "Mindestlagerbestand" und "Bestellmenge" auszufüllen.</p><div class="mediaobject"><img src="images/Disp-Artikel.png"></div><p>Der Button „Einkaufen“ ist deaktiviert, wenn es keinen Lieferanten zu diesem Artikel gibt oder der
Artikel schon im Einkaufswarenkorb liegt.</p><p>2) Bericht „Meldebestand“
Über das Menu "Einkauf-&gt;Meldebestand" kann der Meldebestand abgerufen werden</p><div class="mediaobject"><img src="images/Disp-Einkauf-meldeb.png"></div><p>Die obere Tabelle zeigt die Artikel an, die den Mindestbestand unterschritten haben und können
sofern markiert über die Aktion "Einkaufen" in den Einkaufswarenkorb gelegt werden. Hierzu muss
das Feld Mindesbestand in den Artikelstammdaten einen Wert &gt; 0 haben</p><p>Die untere Tabelle zeigt die Artikel an, die den Mindestbestand unterschritten haben aber bestellt sind.</p></div><div class="sect2" title="3.12.2. Der Einkaufswarenkorb"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8118"></a>3.12.2. Der Einkaufswarenkorb</h3></div></div></div><p>Ohne Filter: der erste Lieferant ist ausgewählt. Hier kann jetzt auch ein anderer Lieferant
das Feld Mindesbestand in den Artikelstammdaten einen Wert &gt; 0 haben</p><p>Die untere Tabelle zeigt die Artikel an, die den Mindestbestand unterschritten haben aber bestellt sind.</p></div><div class="sect2" title="3.12.2. Der Einkaufswarenkorb"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8127"></a>3.12.2. Der Einkaufswarenkorb</h3></div></div></div><p>Ohne Filter: der erste Lieferant ist ausgewählt. Hier kann jetzt auch ein anderer Lieferant
ausgewählt werden.</p><div class="mediaobject"><img src="images/Disp-Einkauf-wrnkrb1.png"></div><p>Wird dann nach einem Lieferanten gefiltert und dieser ist und bleibt eindeutig, kann daraus ein
Lieferantenauftrag erstellt werden.</p><div class="mediaobject"><img src="images/Disp-Einkauf-wrnkrb.png"></div><p>Die obere Tabelle zeigt die Artikel an, die den Mindestbestand unterschritten haben, der untere Teil zeigt alle
Artikel des Lieferanten an, somit ist es möglich diese Artikel auszuwählen und gleich mitzubestellen</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s11.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s13.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.11. Reklamationen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.13. Zeiterfassung</td></tr></table></div></body></html>
doc/html/ch04.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s13.html" title="3.13. Zeiterfassung"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s13.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e8437"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8443"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s13.html" title="3.13. Zeiterfassung"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s13.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e8446"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8452"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
"main", der von überall erreichbar ist. Darüber hinaus sind bareword
globs global und die meisten speziellen Variablen sind...
speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
......
<code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
<code class="literal">local $form</code>
</span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8544"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8553"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
<span class="productname">SQL-Ledger</span>™ hat fast alles im globalen
namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder
......
dies hat, seit der Einführung, u.a. schon so manche langwierige
Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
angegeben werden, werden die nicht geprüft, und somit kann sich
schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8577"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8586"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
vorgegebenen Eigenschaften, und alles andere sollte anderweitig
umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
......
<code class="varname">$::request</code>
</p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im
Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8641"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8650"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
"<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden
sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
......
push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} }, $form-&gt;{"partnumber_$i"};
push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} }, $form-&gt;{"description_$i"};
# ...
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8725"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8734"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
zugegriffen wird</p></li><li class="listitem"><p>Wird bei jedem Request neu erstellt.</p></li><li class="listitem"><p>Enthält die Userdaten des aktuellen Logins</p></li><li class="listitem"><p>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
extern serialisiert werden, weil da auch der Datenbankzugriff
für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Datumsformat dateformat und
......
überwiegend die Daten, die sich unter <span class="guimenu">Programm</span>
-&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die
Informationen über den Benutzer die über die
Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8764"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8773"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8782"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8791"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
Funktionen</p></li></ul></div><p>
<code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
bereit, wie "<code class="function">enter_sub</code>" und
......
brauchbares Tracing gebaut ist, "<code class="function">log_time</code>", mit
der man die Wallclockzeit seit Requeststart loggen kann, sowie
"<code class="function">message</code>" und "<code class="function">dump</code>" mit
denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8819"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
denen man flott Informationen ins Log (users/kivitendo-debug.log
relativ zum kivitendo-Installationsverzeichnis) packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8828"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
<code class="varname">$::auth</code> stellt Funktionen bereit um die
Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
vom aktuellen User abhängen wird das Objekt aus
......
Dessen Einstellungen können über
<code class="literal">$::auth-&gt;client</code> abgefragt werden; Rückgabewert
ist ein Hash mit den Werten aus der Tabelle
<code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8848"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
<code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8857"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
<code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
das Programm die Konfiguration ändern kann oder sollte.</p><p>Beispielsweise ist über den Konfigurationseintrag [debug] die
Debug- und Trace-Log-Datei wie folgt konfiguriert und
verfügbar:</p><pre class="programlisting">[debug]
file_name = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
file_name = users/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
<code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8884"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8893"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="classname">SL::InstanceConfiguration</code>"</p></li><li class="listitem"><p>wird pro Request neu erstellt</p></li></ul></div><p>Funktioniert wie <code class="varname">$::lx_office_conf</code>,
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
ist hier eine Mandantendatenbank. Beispielsweise überprüft
</p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8905"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8914"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="varname">SL::Dispatcher</code>"</p></li><li class="listitem"><p>wird pro Serverprozess erstellt.</p></li><li class="listitem"><p>enthält Informationen über die technische Verbindung zum
Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
global gespeichert wird. Wird vermutlich irgendwann in einem anderen
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8923"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8932"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
<code class="varname">$::request</code> ist ein generischer Platz um
Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
at a distance benutzt werden, sondern um lokales memoizing zu
......
<code class="varname">$::request</code>
</p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf
zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8965"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8970"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e8974"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8979"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
Klassennamespace gehalten wird und über Requestgrenzen
leaked</p></li><li class="listitem"><p>liegt jetzt unter
<code class="varname">$::request-&gt;{cgi}</code>
</p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8986"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
</p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8995"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
ein paar hundert mal pro Request eine Liste der Einheiten
brauchen, und de als Parameter durch einen Riesenstack von
Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter
<code class="varname">$::request-&gt;{cache}{all_units}</code>
</p></li><li class="listitem"><p>Wird nur in
<code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e9005"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e9014"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
möglichen Rekursioenen darstellt, und da nie welche
auftreten.</p></li><li class="listitem"><p>komplette recursion protection wurde entfernt.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s13.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.13. Zeiterfassung&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;4.2. Entwicklung unter FastCGI</td></tr></table></div></body></html>
doc/html/index.html
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>kivitendo 3.9.1: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo 3.9.1: Installation, Konfiguration,
Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo 3.9.1: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo 3.9.1: Installation, Konfiguration,
Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Benötigte Perl-Pakete installieren</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e751">2.2.3. Andere Pakete installieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Installation mittels Ansible auf Ubuntu 22.04</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. Manuelle Installation des Programmpaketes</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Installation-mit-git">2.4.1. Installation mit git</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Installation_mit_Github">2.4.2. Installation über die Github Website</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#restliche-Verzeichnisse-erstellen-und-Besitzer-%C3%A4ndern">2.4.3. Restliche Verzeichnisse ändern und bearbeiten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#config.config-file.introduction">2.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#config.config-file.sections-parameters">2.5.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#config.config-file.prior-versions">2.5.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.6.1. Zeichensätze/die Verwendung von Unicode/UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#%C3%84nderungen-an-Konfigurationsdateien">2.6.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.6.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Erweiterung-f%C3%BCr-trigram">2.6.4. Erweiterung für Trigram Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Datenbankbenutzer-anlegen">2.6.5. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#d0e1295">2.7.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Apache-Konfiguration.FCGI">2.7.2. Konfiguration für FastCGI/FCGI</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1449">2.7.3. Authentifizierung mittels HTTP Basic Authentication</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1465">2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1479">2.7.5. Weitergehende Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1490">2.7.6. Aktivierung von Apache2 modsecurity</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Konfiguration-des-Task-Servers">2.8.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Konfiguration-der-Mandanten-fuer-den-Task-Servers">2.8.2. Konfiguration der Mandanten für den Task-Server</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Einbinden-in-den-Boot-Prozess">2.8.3. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Prozesskontrolle">2.8.4. Wie der Task-Server gestartet und beendet wird</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Konfiguration der Hintergrund-Jobs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Hintergrund-Job SetNumberRange">2.9.1. SetNumberRange</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Hintergrund-Job ImportRecordEmails">2.9.2. ImportRecordEmails</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Grundlagen-zur-Benutzerauthentifizierung">2.10.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Administratorpasswort">2.10.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Authentifizierungsdatenbank">2.10.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Passwort%C3%BCberpr%C3%BCfung">2.10.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Name-des-Session-Cookies">2.10.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Anlegen-der-Authentifizierungsdatenbank">2.10.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#Zusammenh%C3%A4nge">2.11.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Mandanten-Benutzer-Gruppen">2.11.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Datenbanken-anlegen">2.11.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Gruppen-anlegen">2.11.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Benutzer-anlegen">2.11.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Mandanten-anlegen">2.11.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#Druckeradministration">2.12.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#System">2.12.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. E-Mail</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#config.sending-email">2.13.1. E-Mail-Versand aus kivitendo heraus</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.sent_emails_in_imap">2.13.2. Versendete E-Mails über IMAP exportieren</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.imap_client">2.13.3. E-Mails in kivitendo importieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#Vorlagenverzeichnis-anlegen">2.14.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Aufbau des marei Vorlagensatzes">2.14.2. Der Druckvorlagensatz marei</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Vorlagen-RB">2.14.3. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Vorlagen-rev-odt">2.14.4. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#allgemeine-hinweise-zu-latex">2.14.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#d0e3086">2.15.1. Grundeinstellung</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3103">2.15.2. Direkte Erzeugung von PDF-Dateien</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3154">2.15.3. Vorbereitungen</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3210">2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s16.html#booking.dates">2.16.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s17.html">2.17. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Benötigte Perl-Pakete installieren</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e749">2.2.3. Andere Pakete installieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Installation mittels Ansible auf Ubuntu 22.04</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. Manuelle Installation des Programmpaketes</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Installation-mit-git">2.4.1. Installation mit git</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Installation_mit_Github">2.4.2. Installation über die Github Website</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#restliche-Verzeichnisse-erstellen-und-Besitzer-%C3%A4ndern">2.4.3. Restliche Verzeichnisse ändern und bearbeiten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#config.config-file.introduction">2.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#config.config-file.sections-parameters">2.5.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#config.config-file.prior-versions">2.5.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.6.1. Zeichensätze/die Verwendung von Unicode/UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#%C3%84nderungen-an-Konfigurationsdateien">2.6.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.6.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Erweiterung-f%C3%BCr-trigram">2.6.4. Erweiterung für Trigram Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Datenbankbenutzer-anlegen">2.6.5. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Apache-Konfiguration.FCGI">2.7.1. Konfiguration für FastCGI/FCGI</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1359">2.7.2. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1373">2.7.3. Weitergehende Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1384">2.7.4. Aktivierung von Apache2 modsecurity</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Konfiguration-des-Task-Servers">2.8.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Konfiguration-der-Mandanten-fuer-den-Task-Servers">2.8.2. Konfiguration der Mandanten für den Task-Server</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Einbinden-in-den-Boot-Prozess">2.8.3. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Prozesskontrolle">2.8.4. Wie der Task-Server gestartet und beendet wird</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Konfiguration der Hintergrund-Jobs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Hintergrund-Job SetNumberRange">2.9.1. SetNumberRange</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Hintergrund-Job ImportRecordEmails">2.9.2. ImportRecordEmails</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Grundlagen-zur-Benutzerauthentifizierung">2.10.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Administratorpasswort">2.10.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Authentifizierungsdatenbank">2.10.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Passwort%C3%BCberpr%C3%BCfung">2.10.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Name-des-Session-Cookies">2.10.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Anlegen-der-Authentifizierungsdatenbank">2.10.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#Zusammenh%C3%A4nge">2.11.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Mandanten-Benutzer-Gruppen">2.11.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Datenbanken-anlegen">2.11.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Gruppen-anlegen">2.11.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Benutzer-anlegen">2.11.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Mandanten-anlegen">2.11.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#Druckeradministration">2.12.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#System">2.12.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. E-Mail</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#config.sending-email">2.13.1. E-Mail-Versand aus kivitendo heraus</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.sent_emails_in_imap">2.13.2. Versendete E-Mails über IMAP exportieren</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.imap_client">2.13.3. E-Mails in kivitendo importieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#Vorlagenverzeichnis-anlegen">2.14.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Aufbau des marei Vorlagensatzes">2.14.2. Der Druckvorlagensatz marei</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Vorlagen-RB">2.14.3. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#Vorlagen-rev-odt">2.14.4. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#allgemeine-hinweise-zu-latex">2.14.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#d0e3095">2.15.1. Grundeinstellung</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3112">2.15.2. Direkte Erzeugung von PDF-Dateien</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3163">2.15.3. Vorbereitungen</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#d0e3219">2.15.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s16.html#booking.dates">2.16.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s17.html">2.17. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s17.html#config.eur.introduction">2.17.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s17.html#config.eur.parameters">2.17.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s17.html#config.eur.setting-parameters">2.17.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s17.html#config.eur.inventory-system-perpetual">2.17.4. Bemerkungen zur Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s17.html#config.eur.knonw-issues">2.17.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s18.html">2.18. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s18.html#config.skr04-update-3804.introduction">2.18.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s18.html#config.skr04-update-3804.create-chart">2.18.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s19.html">2.19. Verhalten des Bilanzberichts</a></span></dt><dt><span class="sect1"><a href="ch02s20.html">2.20. Jahresabschluss</a></span></dt><dt><span class="sect1"><a href="ch02s21.html">2.21. Erfolgsrechnung</a></span></dt><dt><span class="sect1"><a href="ch02s22.html">2.22. Rundung in Verkaufsbelegen</a></span></dt><dt><span class="sect1"><a href="ch02s23.html">2.23. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s24.html">2.24. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.variables">3.1.3. Spezielle Variablen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.4. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.5. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.6. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Bankerweiterung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#features.bank.introduction">3.2.1. Einführung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.3.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.3.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.tag-style">3.3.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.3.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.3.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.3.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
sind</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.invoice">3.3.8. Variablen in Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.dunning">3.3.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.andere-vorlagen">3.3.10. Variablen in anderen Vorlagen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.bloecke">3.3.11. Blöcke, bedingte Anweisungen und Schleifen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.markup">3.3.12. Markup-Code zur Textformatierung innerhalb von
Formularen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.anrede">3.3.13. Hinweise zur Anrede</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">3.4. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#excel-templates.summary">3.4.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.usage">3.4.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.syntax">3.4.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.limitations">3.4.4. Einschränkungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">3.5. Mandantenkonfiguration Lager</a></span></dt><dt><span class="sect1"><a href="ch03s06.html">3.6. Schweizer Kontenpläne</a></span></dt><dt><span class="sect1"><a href="ch03s07.html">3.7. Artikelklassifizierung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s07.html#d0e7598">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7603">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7633">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7664">3.7.4. Zwei-Zeichen Abkürzung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s08.html">3.8. Dateiverwaltung (Mini-DMS)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s08.html#d0e7676">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7703">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7755">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7798">3.8.4. Konfigurierung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s09.html">3.9. Webshop-Api</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s09.html#d0e7863">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7878">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7886">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7910">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7963">3.9.5. Mapping der Daten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s10.html">3.10. ZUGFeRD Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.preamble">3.10.1. Vorbedingung</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.summary">3.10.2. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.create_zugferd_bills">3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.read_zugferd_bills">3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s11.html">3.11. Reklamationen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s11.html#d0e8053">3.11.1. Konfiguration des Reklamationsmodul</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e8066">3.11.2. Reklamation erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e8084">3.11.3. Reklamationen auswerten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s12.html">3.12. Dispositionsmanager/Einkaufshelfer</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s12.html#d0e8099">3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</a></span></dt><dt><span class="sect2"><a href="ch03s12.html#d0e8118">3.12.2. Der Einkaufswarenkorb</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s13.html">3.13. Zeiterfassung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.config">3.13.1. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.add">3.13.2. Erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.report">3.13.3. Bericht</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.conversion">3.13.4. Konvertierung zu Lieferscheinen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e8443">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8544">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8577">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8965">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. Programmatische API-Aufrufe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.client_selection">4.3.2. Wahl des Mandanten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.http_basic_authentication">4.3.3. HTTP-»Basic«-Authentifizierung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.authentication_via_parameters">4.3.4. Authentifizierung mit Parametern</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.examples">4.3.5. Beispiele</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.introduction">4.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format">4.4.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format-perl-files">4.4.3. Format von in Perl geschriebenen
Formularen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.anrede">3.3.13. Hinweise zur Anrede</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">3.4. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#excel-templates.summary">3.4.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.usage">3.4.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.syntax">3.4.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.limitations">3.4.4. Einschränkungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">3.5. Mandantenkonfiguration Lager</a></span></dt><dt><span class="sect1"><a href="ch03s06.html">3.6. Schweizer Kontenpläne</a></span></dt><dt><span class="sect1"><a href="ch03s07.html">3.7. Artikelklassifizierung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s07.html#d0e7607">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7612">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7642">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7673">3.7.4. Zwei-Zeichen Abkürzung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s08.html">3.8. Dateiverwaltung (Mini-DMS)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s08.html#d0e7685">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7712">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7764">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7807">3.8.4. Konfigurierung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s09.html">3.9. Webshop-Api</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s09.html#d0e7872">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7887">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7895">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7919">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7972">3.9.5. Mapping der Daten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s10.html">3.10. ZUGFeRD Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.preamble">3.10.1. Vorbedingung</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.summary">3.10.2. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.create_zugferd_bills">3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.read_zugferd_bills">3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s11.html">3.11. Reklamationen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s11.html#d0e8062">3.11.1. Konfiguration des Reklamationsmodul</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e8075">3.11.2. Reklamation erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e8093">3.11.3. Reklamationen auswerten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s12.html">3.12. Dispositionsmanager/Einkaufshelfer</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s12.html#d0e8108">3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</a></span></dt><dt><span class="sect2"><a href="ch03s12.html#d0e8127">3.12.2. Der Einkaufswarenkorb</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s13.html">3.13. Zeiterfassung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.config">3.13.1. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.add">3.13.2. Erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.report">3.13.3. Bericht</a></span></dt><dt><span class="sect2"><a href="ch03s13.html#features.timerecording.conversion">3.13.4. Konvertierung zu Lieferscheinen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e8452">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8553">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8586">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8974">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. Programmatische API-Aufrufe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.client_selection">4.3.2. Wahl des Mandanten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.http_basic_authentication">4.3.3. HTTP-»Basic«-Authentifizierung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.authentication_via_parameters">4.3.4. Authentifizierung mit Parametern</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.examples">4.3.5. Beispiele</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.introduction">4.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format">4.4.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format-perl-files">4.4.3. Format von in Perl geschriebenen
Datenbankupgradescripten</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.dbupgrade-tool">4.4.4. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#translations-languages.introduction">4.5.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#translations-languages.character-set">4.5.2. Character set</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#translations-languages.file-structure">4.5.3. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s06.html">4.6. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.intro">4.6.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.prerequisites">4.6.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.execution">4.6.3. Existierende Tests ausführen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.meaning_of_scripts">4.6.4. Bedeutung der verschiedenen Test-Scripte</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.create_new">4.6.5. Neue Test-Scripte erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s07.html">4.7. Stil-Richtlinien</a></span></dt><dt><span class="sect1"><a href="ch04s08.html">4.8. Dokumentation erstellen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.introduction">4.8.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.required-software">4.8.2. Benötigte Software</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.build">4.8.3. PDFs und HTML-Seiten erstellen</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.repository">4.8.4. Einchecken in das Git-Repository</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>

Auch abrufbar als: Unified diff